22#vim: syntax=java
33
44include "species.bds"
5- include "report .bds"
5+ include "module_template .bds"
66
77
88help == IDR settings
@@ -19,26 +19,20 @@ void init_idr() {
1919
2020 idr_suffix = get_conf_val_bool( idr_suffix, ["idr_suffix"] )
2121
22- print_idr()
23- }
24-
25- void print_idr() {
26-
2722 print( "\n\n== IDR settings\n")
2823 print( "Append IDR threshold to IDR out_dir\t: $idr_suffix\n" )
2924}
3025
3126void chk_idr() {
32- if ( !path_exists( blacklist ) ) print("\nWarning: Blacklist bed (-blacklist) for final IDR QC is missing! (file: $blacklist)\n\n")
27+ if ( !path_exists( blacklist ) ) print("\nWarning: Blacklist bed (-blacklist) for final IDR QC"+\
28+ " is missing! (file: $blacklist)\n\n")
3329}
3430
35-
3631// 12-col.bed.gz (10 col for narrowPeak + local IDR, global IDR) will be generated for browser tracks
3732// A temporary 13th column bed should be generated due to bedtools intersect compatibility issue
3833// use function _get_idr_peak_trk( idr_peak ) to find 12-col.bed.gz for browser tracks
3934// rank: 'signal.value' for SPP peaks, 'p.value' for MACS2 peaks
4035string[] idr2( string peak1, string peak2, string pooled, string idr_thresh, string rank, string o_dir, string group ) {
41-
4236 if ( idr_suffix ) o_dir = mkdir( o_dir + "_$idr_thresh" )
4337
4438 prefix := "$o_dir/" + (title=="" ? "" : (title+"_") ) + group
@@ -111,12 +105,11 @@ string[] idr2( string peak1, string peak2, string pooled, string idr_thresh, str
111105// idr_pr: IDR peaks for pseudo replicates (key:"rep") e.g. "1" for pseudo replicates of replicate 1
112106string[] idr_final_qc( string{} idr_tr, string{} idr_pr, string idr_ppr, \
113107 string idr_o_dir, string qc_o_dir, string group ) {
114-
115108 //// get # of lines in each IDR peak files
116109
117110 // pseudo replicates
118111 int[] N
119- for ( string peak : idr_pr ) N.add( get_no_lines ( peak ) )
112+ for ( string peak : idr_pr ) N.add( get_num_lines ( peak ) )
120113
121114 // true replicates
122115 Nt := 0
@@ -125,7 +118,7 @@ string[] idr_final_qc( string{} idr_tr, string{} idr_pr, string idr_ppr, \
125118 for ( string key : idr_tr.keys() ) { // key = rep id 1, rep id 2
126119
127120 peak := idr_tr{ key }
128- nlines := ( peak != "" ) ? get_no_lines ( peak ) : 0
121+ nlines := ( peak != "" ) ? get_num_lines ( peak ) : 0
129122
130123 if ( nlines >= Nt ) {
131124 Nt = nlines
@@ -135,7 +128,7 @@ string[] idr_final_qc( string{} idr_tr, string{} idr_pr, string idr_ppr, \
135128 }
136129
137130 // pooled pseudo replicates
138- Np := ( idr_ppr != "" ) ? get_no_lines ( idr_ppr ) : 0
131+ Np := ( idr_ppr != "" ) ? get_num_lines ( idr_ppr ) : 0
139132
140133 //// find optimal set and conservative set
141134 string optimal_set, conservative_set
@@ -180,11 +173,11 @@ string[] idr_final_qc( string{} idr_tr, string{} idr_pr, string idr_ppr, \
180173
181174 //// compute IDR scores
182175
183- real max_Np_Nt = max ( Np, Nt )
184- real min_Np_Nt = min ( Np, Nt )
176+ real max_Np_Nt = _max ( Np, Nt )
177+ real min_Np_Nt = _min ( Np, Nt )
185178
186- real max_N = N.size() > 0 ? max ( N ) : 0
187- real min_N = N.size() > 0 ? min ( N ) : 0
179+ real max_N = N.size() > 0 ? _max ( N ) : 0
180+ real min_N = N.size() > 0 ? _min ( N ) : 0
188181
189182 rescue_ratio := max_Np_Nt / min_Np_Nt
190183 self_consistency_ratio := max_N / min_N
@@ -227,14 +220,32 @@ string[] idr_final_qc( string{} idr_tr, string{} idr_pr, string idr_ppr, \
227220}
228221
229222string _get_group_from_key( string key ) { //parse "i,j" to "repi-repj"
230-
231223 tmp := key.split(",")
232224 i := tmp[0]
233225 j := tmp[1]
234226 return "rep$i-rep$j"
235227}
236228
237229string _get_idr_peak_trk( string idr_peak ) {
238-
239230 return rm_ext( idr_peak, ["narrowPeak","regionPeak"] ) + ".12-col.bed.gz"
240231}
232+
233+ int _max( int a, int b ) {
234+ return max( a, b )
235+ }
236+
237+ int _min( int a, int b ) {
238+ return min( a, b )
239+ }
240+
241+ int _max( int[] arr ) {
242+ tmp := arr[0]
243+ for( int i=1; i<arr.size();i++ ) tmp = _max( tmp, arr[i] )
244+ return tmp
245+ }
246+
247+ int _min( int[] arr ) {
248+ tmp := arr[0]
249+ for( int i=1; i<arr.size();i++ ) tmp = _min( tmp, arr[i] )
250+ return tmp
251+ }
0 commit comments