Skip to content

Commit 27f99ad

Browse files
authored
Merge branch 'main' into neuron-selection
2 parents f6a99a0 + 8e23c8c commit 27f99ad

1 file changed

Lines changed: 27 additions & 7 deletions

File tree

experanto/interpolators.py

Lines changed: 27 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -164,16 +164,28 @@ def create(root_folder: str, cache_data: bool = False, **kwargs) -> Interpolator
164164
if modality == "sequence":
165165
if meta_data.get("phase_shift_per_signal", False):
166166
return PhaseShiftedSequenceInterpolator(
167-
root_folder, cache_data, **kwargs
167+
root_folder, cache_data=cache_data, **kwargs
168168
)
169169
else:
170-
return SequenceInterpolator(root_folder, cache_data, **kwargs)
170+
return SequenceInterpolator(
171+
root_folder, cache_data=cache_data, **kwargs
172+
)
171173
elif modality == "screen":
172-
return ScreenInterpolator(root_folder, cache_data, **kwargs)
174+
use_stimuli_names = kwargs.pop(
175+
"use_stimuli_names", meta_data.get("use_stimuli_names", False)
176+
)
177+
return ScreenInterpolator(
178+
root_folder,
179+
cache_data=cache_data,
180+
use_stimuli_names=use_stimuli_names,
181+
**kwargs,
182+
)
173183
elif modality == "time_interval":
174-
return TimeIntervalInterpolator(root_folder, cache_data, **kwargs)
184+
return TimeIntervalInterpolator(
185+
root_folder, cache_data=cache_data, **kwargs
186+
)
175187
elif modality == "spikes":
176-
return SpikeInterpolator(root_folder, cache_data, **kwargs)
188+
return SpikeInterpolator(root_folder, cache_data=cache_data, **kwargs)
177189
else:
178190
raise ValueError(
179191
f"There is no interpolator for {modality}. Please use 'sequence', 'screen', 'time_interval' as modality or provide a custom interpolator."
@@ -606,6 +618,8 @@ class ScreenInterpolator(Interpolator):
606618
native image size from metadata.
607619
normalize : bool, default=False
608620
If True, normalizes frames using stored mean/std statistics.
621+
use_stimuli_names : bool, default=False
622+
If True, uses ``stimulus_name`` from metadata to locate data files instead of trial keys.
609623
**kwargs
610624
Additional keyword arguments (ignored).
611625
@@ -725,8 +739,14 @@ def _parse_trials(self) -> None:
725739
metadatas, keys = self.read_combined_meta()
726740

727741
for key, metadata in zip(keys, metadatas, strict=True):
728-
data_file_name = self.root_folder / "data" / f"{key}.npy"
729-
# Pass the cache_trials parameter when creating trials
742+
if self.use_stimuli_names:
743+
stimulus_name = metadata.get("stimulus_name")
744+
assert (
745+
stimulus_name is not None
746+
), f"stimulus_name is required in metadata when use_stimuli_names is True, but not found for key: {key}"
747+
data_file_name = self.root_folder / "data" / f"{stimulus_name}.npy"
748+
else:
749+
data_file_name = self.root_folder / "data" / f"{key}.npy"
730750
self.trials.append(
731751
ScreenTrial.create(data_file_name, metadata, cache_data=self.cache_data)
732752
)

0 commit comments

Comments
 (0)