Ejemplo n.º 1
0
        else:
            self.splines = [
                InterpolatedUnivariateSpline(ti - t0, si, **kwargs)
                for ti, si in zip(t, s)
            ]

    def __len__(self):
        return len(self.splines)

    def __call__(self, t):
        return np.vstack([s(t - self.t0) for s in self.splines])


m = 'animal_id in (20505, 20322, 20457, 20210, 20892)'

keys = (fuse.Activity() * stimulus.Sync * tune.StimulusType
        & stimulus.Trial * stimulus.Condition & m
        & 'stimulus_type = "stimulus.Trippy"').fetch('KEY')

key = keys[0]

pipe = (fuse.Activity() & key).module
num_frames = (pipe.ScanInfo() & key).fetch1('nframes')
num_depths = len(
    dj.U('z') & (pipe.ScanInfo.Field().proj('z', nomatch='field') & key))

frame_times = (stimulus.Sync() & key).fetch1('frame_times',
                                             squeeze=True)  # one per depth
assert num_frames <= frame_times.size / num_depths <= num_frames + 1
frame_times = frame_times[:num_depths *
                          num_frames:num_depths]  # one per volume
Ejemplo n.º 2
0
        # reso/meso (up to SummaryImages)
        for pipe in [reso, meso]:
            pipe.ScanInfo().populate(next_scans, reserve_jobs=True, suppress_errors=True)
            pipe.Quality().populate(next_scans, reserve_jobs=True, suppress_errors=True)
            pipe.RasterCorrection().populate(next_scans, reserve_jobs=True, suppress_errors=True)
            pipe.MotionCorrection().populate(next_scans, reserve_jobs=True, suppress_errors=True)
            pipe.SummaryImages().populate(next_scans, reserve_jobs=True, suppress_errors=True)

        # Field Registration
        stack.InitialRegistration().populate(next_scans, reserve_jobs=True, suppress_errors=True)
        stack.FieldRegistration().populate(next_scans, reserve_jobs=True, suppress_errors=True)

        # fuse
        fuse.MotionCorrection().populate(next_scans, reserve_jobs=True, suppress_errors=True)
        fuse.ScanSet().populate(next_scans, reserve_jobs=True, suppress_errors=True)
        fuse.Activity().populate(next_scans, reserve_jobs=True, suppress_errors=True)
        fuse.ScanDone().populate(next_scans, reserve_jobs=True, suppress_errors=True)

        # tune (these are memory intensive)
        if POPULATE_TUNE:
            tune_scans = next_scans & (experiment.Scan() & 'scan_ts > "2017-12-00 00:00:00"')

            #stimulus.Sync needs to be run from Matlab
            tune.STA().populate(tune_scans, reserve_jobs=True, suppress_errors=True)
            tune.STAQual().populate(tune_scans, reserve_jobs=True, suppress_errors=True)
            tune.STAExtent().populate(tune_scans, reserve_jobs=True)

            tune.CaMovie().populate(tune_scans, reserve_jobs=True, suppress_errors=True)
            tune.Drift().populate(tune_scans, reserve_jobs=True, suppress_errors=True)
            tune.OriDesign().populate(tune_scans, reserve_jobs=True, suppress_errors=True)
            tune.OriMap().populate(tune_scans, reserve_jobs=True, suppress_errors=True)
Ejemplo n.º 3
0
# sessions that have both Monet and Trippy from a few recent experiments
sessions = (fuse.Activity * stimulus.Sync
            & 'animal_id in (20505, 20322, 20457, 20210, 20892)'
            & (stimulus.Trial * stimulus.Monet2) &
            (stimulus.Trial * stimulus.Trippy)).fetch('KEY')
key = sessions[2]  # pick one

cache = {}
for key in sessions:
    folder = os.path.join(os.path.abspath('..'), 'data', 'sessions',
                          dj.hash.key_hash(key)[:6])
    if os.path.isdir(folder):
        continue
    print('load frame times.')
    pipe = (fuse.Activity() & key).module
    num_frames = (pipe.ScanInfo() & key).fetch1('nframes')
    num_depths = len(
        dj.U('z') & (pipe.ScanInfo.Field().proj('z', nomatch='field') & key))
    frame_times = (stimulus.Sync() & key).fetch1('frame_times',
                                                 squeeze=True)  # one per depth
    assert num_frames <= frame_times.size / num_depths <= num_frames + 1
    frame_times = frame_times[:num_depths *
                              num_frames:num_depths]  # one per volume

    print('load and cache soma traces')
    trace_hash = dj.hash.key_hash(
        {k: v
         for k, v in key.items() if k not in {'stimulus_type'}})
    archive = os.path.join('cache', trace_hash + '-traces.npz')
    if os.path.isfile(archive):