Skip to content

Commit fc2a699

Browse files
Don't plot if data are too large
1 parent 4d2b22c commit fc2a699

1 file changed

Lines changed: 36 additions & 11 deletions

File tree

hendrics/efsearch.py

Lines changed: 36 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)