@@ -677,7 +677,12 @@ def plot_transient_search(results, gif_name=None):
677677 all_images = []
678678 import tqdm
679679
680- log .info ("Generating plots for transient search..." )
680+ plot_results = results .stats .size < 1e7
681+ if not plot_results :
682+ log .info ("Transient search results are too large to plot. Skipping plots." )
683+ else :
684+ log .info ("Generating plots for transient search..." )
685+
681686 for i , (ima , nave ) in tqdm .tqdm (
682687 enumerate (zip (results .stats , results .nave )), total = len (results .nave )
683688 ):
@@ -704,6 +709,33 @@ def plot_transient_search(results, gif_name=None):
704709 ntrial = ntrial_sum ,
705710 n_summed_spectra = nprof / nave ,
706711 )
712+
713+ mean_line = np .mean (ima , axis = 0 ) / sum_detl * 3
714+ maxidx = np .argmax (mean_line )
715+ maxline = mean_line [maxidx ]
716+
717+ for il , line in enumerate (ima ):
718+ line = line / detl * 3
719+
720+ maxidx = np .argmax (mean_line )
721+ if line [maxidx ] > maxline :
722+ best_f = f [maxidx ]
723+ maxline = line [maxidx ]
724+
725+ max_stats_rows .append (
726+ {"step" : i + 1 , "nave" : nave , "best_f" : best_f , "max_stat" : maxline }
727+ )
728+
729+ if 3.5 < maxline < 5 : # pragma: no cover
730+ print (
731+ f"{ gif_name } : Possible candidate at step { i } : { best_f } Hz (~{ maxline :.1f} sigma)"
732+ )
733+ elif maxline >= 5 : # pragma: no cover
734+ print (f"{ gif_name } : Candidate at step { i } : { best_f } Hz (~{ maxline :.1f} sigma)" )
735+
736+ if not plot_results :
737+ continue
738+
707739 fig = plt .figure (figsize = (10 , 10 ), dpi = 100 )
708740 plt .clf ()
709741 gs = plt .GridSpec (2 , 2 , height_ratios = (1 , 3 ))
@@ -736,12 +768,6 @@ def plot_transient_search(results, gif_name=None):
736768 best_f = f [maxidx ]
737769 maxline = line [maxidx ]
738770
739- if 3.5 < maxline < 5 and i_f == 0 : # pragma: no cover
740- print (
741- f"{ gif_name } : Possible candidate at step { i } : { best_f } Hz (~{ maxline :.1f} sigma)"
742- )
743- elif maxline >= 5 and i_f == 0 : # pragma: no cover
744- print (f"{ gif_name } : Candidate at step { i } : { best_f } Hz (~{ maxline :.1f} sigma)" )
745771 axf .plot (f , mean_line , lw = 1 , c = "k" , zorder = 10 , label = "mean" , ls = "-" )
746772
747773 axima .set_xlabel ("Frequency" )
@@ -752,9 +778,6 @@ def plot_transient_search(results, gif_name=None):
752778 xmin = max (best_f - df , results .f0 )
753779 xmax = min (best_f + df , results .f1 )
754780 if i_f == 0 :
755- max_stats_rows .append (
756- {"step" : i + 1 , "nave" : nave , "best_f" : best_f , "max_stat" : maxline }
757- )
758781 axf .set_xlim ([results .f0 , results .f1 ])
759782 axf .axvline (xmin , ls = "--" , c = "b" , lw = 2 )
760783 axf .axvline (xmax , ls = "--" , c = "b" , lw = 2 )
@@ -770,9 +793,11 @@ def plot_transient_search(results, gif_name=None):
770793
771794 if hasattr (results .stats , "filename" ):
772795 os .remove (results .stats .filename )
796+
773797 vstack (max_stats_rows ).write (result_name , overwrite = True )
774798
775- imageio .v3 .imwrite (gif_name , all_images , duration = 1000.0 )
799+ if plot_results :
800+ imageio .v3 .imwrite (gif_name , all_images , duration = 1000.0 )
776801
777802 return all_images
778803
0 commit comments