1111
1212
1313class TrialsFPLROpto (BaseBpodTrialsExtractor ):
14- var_names = BiasedTrials .var_names + ('laser_stimulation' ,)
15- save_names = BiasedTrials .save_names + ('_ibl_trials.laserStimulation.npy' ,)
14+ var_names = BiasedTrials .var_names + ('laser_stimulation' , 'laser_intervals' , )
15+ save_names = BiasedTrials .save_names + ('_ibl_trials.laserStimulation.npy' , '_ibl_trials.laserIntervals.npy' , )
1616
1717 def _extract (self , extractor_classes = None , ** kwargs ) -> dict :
1818
@@ -23,11 +23,18 @@ def _extract(self, extractor_classes=None, **kwargs) -> dict:
2323
2424 # Extract laser stimulation dataset
2525 laser_stimulation = np .zeros_like (out ['table' ]['contrastLeft' ])
26+ laser_intervals = np .full ((out ['table' ]['contrastLeft' ].size , 2 ), np .nan )
2627 if 'FPR' in self .settings ['PYBPOD_PROTOCOL' ]:
27- laser_stimulation [ ~ np .isnan (out ['table' ]['contrastRight' ])] = 1
28+ idx = ~ np .isnan (out ['table' ]['contrastRight' ])
2829 elif 'FPL' in self .settings ['PYBPOD_PROTOCOL' ]:
29- laser_stimulation [~ np .isnan (out ['table' ]['contrastLeft' ])] = 1
30+ idx = ~ np .isnan (out ['table' ]['contrastLeft' ])
31+
32+ laser_stimulation [idx ] = 1
33+ # Laser stimulated at goCue for 200 ms
34+ laser_intervals [idx , 0 ] = out ['table' ]['goCue_times' ][idx ]
35+ laser_intervals [idx , 1 ] = out ['table' ]['goCue_times' ][idx ] + 200 / 1e3
3036
3137 out ['laser_stimulation' ] = laser_stimulation
38+ out ['laser_intervals' ] = laser_intervals
3239
3340 return {k : out [k ] for k in self .var_names } # Ensures all datasets present and ordered
0 commit comments