@@ -133,10 +133,13 @@ int main(int argc, const char *argv[]) {
133133 }
134134
135135 // Perform the actual run
136+
137+
136138 auto *ultra = new Ultra (settings);
137139 ultra->AnalyzeFile ();
138140 ultra->OutputRepeats (true );
139-
141+ unsigned long long true_coverage = ultra->Coverage ();
142+ unsigned long long shuff_coverage = 0 ;
140143 // Check to see if we are making a masked file
141144 if (settings->produce_mask ) {
142145 FILE *f = fopen (settings->mask_file .c_str (), " w" );
@@ -146,6 +149,21 @@ int main(int argc, const char *argv[]) {
146149 }
147150
148151 delete ultra;
152+ if (settings->estimate_fdr ) {
153+ settings->suppress_out = true ;
154+ settings->hide_settings = true ;
155+ settings->produce_mask = true ;
156+ settings->no_split = true ;
157+ settings->max_split = 0 ;
158+ settings->json = false ;
159+ ultra = new Ultra (settings);
160+ ultra->shuffleSequence = true ;
161+ ultra->AnalyzeFile ();
162+ ultra->OutputRepeats (true );
163+ shuff_coverage = ultra->Coverage ();
164+ float fdr = (float )shuff_coverage / (float )true_coverage;
165+ printf (" Estimated false discovery rate: %g = (%llu / %llu)\n " , fdr, shuff_coverage, true_coverage);
166+ }
149167
150168 return 0 ;
151169}
0 commit comments