1 /* Time-stamp: <2020-11-20 16:37:31 Tao Liu>
3 This code is free software; you can redistribute it and/or modify it
4 under the terms of the BSD License (see the file LICENSE included
5 with the distribution).
8 #define max(x, y) ((x)>(y)?(x):(y))
9 #define min(x, y) ((x)>(y)?(y):(x))
10 #define compare(x, y) ((x)>(y)?1:0)
12 /* Equivalent to bedGraph data structure */
18 /* for comparison between two PosVal arrays */
25 struct PosVal
* single_end_pileup ( int * plus_tags
, long l_plus_tags
, int * minus_tags
, long l_minus_tags
, int five_shift
, int three_shift
, int leftmost_coord
, int rightmost_coord
, float scale_factor
, float baseline_value
, long * final_length
);
27 struct PosVal
* quick_pileup ( int * start_poss
, int * end_poss
, long length_poss
, float scale_factor
, float baseline_value
, long * final_length
);
29 int cmpfunc_simple ( const void * a
, const void * b
);
31 int * fix_coordinates ( int * poss
, long l
, int leftmost_coord
, int rightmost_coord
);
33 struct PosVal
* max_over_two_pv_array ( struct PosVal
* pva1
, long l_pva1
, struct PosVal
* pva2
, long l_pva2
, long * final_length
);
35 struct PosVal
* apply_func_two_pv_array ( float (*func
)(float, float), struct PosVal
* pva1
, long l_pva1
, struct PosVal
* pva2
, long l_pva2
, long * final_length
);
37 struct PosValVal
* align_two_pv_array ( struct PosVal
* pva1
, long l_pva1
, struct PosVal
* pva2
, long l_pva2
, long * final_length
);
39 void write_pv_array_to_bedGraph ( struct PosVal
* pv_array
, long l_pv_array
, char * chromosome
, char * bdgfile
, short append
);
41 long quick_pileup_simple ( int * ret_poss
, float * ret_values
, int * start_poss
, int * end_poss
, long length_poss
, float scale_factor
, float baseline_value
);