Skip to content

Commit 5f83137

Browse files
Apply to transient search as well
1 parent 4e31bfa commit 5f83137

1 file changed

Lines changed: 23 additions & 6 deletions

File tree

hendrics/efsearch.py

Lines changed: 23 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -591,11 +591,8 @@ def transient_search(
591591
if allvalues == []:
592592
allvalues = [0]
593593

594-
all_results = []
595-
all_freqs = []
596-
597594
dt = (times[-1] - times[0]) / nprof
598-
595+
all_results = None
599596
for ii, i in enumerate(show_progress(allvalues)):
600597
offset = step * i
601598
fdot_offset = 0
@@ -605,8 +602,28 @@ def transient_search(
605602
nave, results = _transient_search_step(
606603
times, mean_f, mean_fdot=mean_fdot, nbin=nbin, nprof=nprof, n=n
607604
)
608-
all_results.append(results)
609-
all_freqs.append(mean_f)
605+
if all_results is None:
606+
results_shape = (len(allvalues), nave.size, results.shape[1])
607+
if np.prod(results_shape) > 1e7:
608+
log.info(
609+
"Transient search results are very large. "
610+
f"Using memmapped arrays (shape {results_shape}) to reduce memory usage.",
611+
)
612+
import tempfile
613+
tmp_results = tempfile.NamedTemporaryFile(delete=True).name
614+
tmp_f = tempfile.NamedTemporaryFile(delete=True).name
615+
all_results = np.lib.format.open_memmap(
616+
tmp_results, mode="w+", dtype=results.dtype, shape=results_shape
617+
)
618+
all_freqs = np.lib.format.open_memmap(
619+
tmp_f, mode="w+", dtype=mean_f.dtype, shape=(len(allvalues),)
620+
)
621+
else:
622+
all_results = np.empty(results_shape, dtype=results.dtype)
623+
all_freqs = np.empty((len(allvalues),), dtype=mean_f.dtype)
624+
625+
all_results[ii] = results
626+
all_freqs[ii] = mean_f
610627

611628
all_results = np.array(all_results)
612629
all_freqs = np.array(all_freqs)

0 commit comments

Comments
 (0)