def lsna_check_hvas(data_set, data_file):
    avail_stims = si.stimuli_in_session(data_set.get_session_type())    
    targeted_structure = data_set.get_metadata()['targeted_structure']

    stim = None

    if targeted_structure == "VISp":
        if si.LOCALLY_SPARSE_NOISE_4DEG in avail_stims:
            stim = si.LOCALLY_SPARSE_NOISE_4DEG
        elif si.LOCALLY_SPARSE_NOISE in avail_stims:
            stim = si.LOCALLY_SPARSE_NOISE
    else:
        if si.LOCALLY_SPARSE_NOISE_8DEG in avail_stims:
            stim = si.LOCALLY_SPARSE_NOISE_8DEG
        elif si.LOCALLY_SPARSE_NOISE in avail_stims:
            stim = si.LOCALLY_SPARSE_NOISE

    if stim is None:
        raise MissingStimulusException("Could not find appropriate LSN stimulus for session %s", 
                                       data_set.get_session_type())
    else:
        logging.debug("in structure %s, using %s stimulus for plots", targeted_structure, stim)
            
    
    return LocallySparseNoise.from_analysis_file(data_set, data_file, stim)
    def filter_ophys_experiments(self, experiments,
                                 ids=None,
                                 experiment_container_ids=None,
                                 targeted_structures=None,
                                 imaging_depths=None,
                                 transgenic_lines=None,
                                 stimuli=None,
                                 session_types=None):

        # re-using the code from above
        experiments = self.filter_experiment_containers(experiments,
                                                        ids=ids,
                                                        targeted_structures=targeted_structures,
                                                        imaging_depths=imaging_depths,
                                                        transgenic_lines=transgenic_lines)

        if experiment_container_ids is not None:
            experiments = [e for e in experiments if e[
                'experiment_container_id'] in experiment_container_ids]

        if session_types is not None:
            experiments = [e for e in experiments if e[
                'stimulus_name'] in session_types]

        if stimuli is not None:
            experiments = [e for e in experiments
                           if len(set(stimuli) & set(stimulus_info.stimuli_in_session(e['stimulus_name']))) > 0]

        return experiments
    def get_ophys_experiment_stimuli(self, experiment_id):
        """ For a single experiment, return the list of stimuli present in that experiment. """
        exps = self.get_ophys_experiments(ids=[experiment_id])

        if len(exps) == 0:
            return None

        return stim_info.stimuli_in_session(exps[0]['session_type'])
    def get_ophys_experiment_stimuli(self, experiment_id):
        """ For a single experiment, return the list of stimuli present in that experiment. """
        exps = self.get_ophys_experiments(ids=[experiment_id])

        if len(exps) == 0:
            return None

        return stim_info.stimuli_in_session(exps[0]['session_type'])
    def filter_ophys_experiments(self,
                                 experiments,
                                 ids=None,
                                 experiment_container_ids=None,
                                 targeted_structures=None,
                                 imaging_depths=None,
                                 cre_lines=None,
                                 reporter_lines=None,
                                 transgenic_lines=None,
                                 stimuli=None,
                                 session_types=None,
                                 include_failed=False,
                                 require_eye_tracking=False,
                                 simple=False):

        experiments = self.filter_experiments_and_containers(
            experiments,
            ids=ids,
            targeted_structures=targeted_structures,
            imaging_depths=imaging_depths,
            cre_lines=cre_lines,
            reporter_lines=reporter_lines,
            transgenic_lines=transgenic_lines)

        if require_eye_tracking:
            experiments = [
                e for e in experiments
                if e.get('fail_eye_tracking', None) is False
            ]
        if not include_failed:
            experiments = [
                e for e in experiments
                if not e.get('experiment_container', {}).get('failed', False)
            ]

        if experiment_container_ids is not None:
            experiments = [
                e for e in experiments
                if e['experiment_container_id'] in experiment_container_ids
            ]

        if session_types is not None:
            experiments = [
                e for e in experiments if e['stimulus_name'] in session_types
            ]

        if stimuli is not None:
            experiments = [
                e for e in experiments if len(
                    set(stimuli)
                    & set(stimulus_info.stimuli_in_session(e['stimulus_name']))
                ) > 0
            ]

        if simple:
            experiments = self.simplify_ophys_experiments(experiments)

        return experiments
    def filter_ophys_experiments(self, experiments,
                                 ids=None,
                                 experiment_container_ids=None,
                                 targeted_structures=None,
                                 imaging_depths=None,
                                 cre_lines=None,
                                 reporter_lines=None,
                                 transgenic_lines=None,
                                 stimuli=None,
                                 session_types=None,
                                 include_failed=False,
                                 require_eye_tracking=False,
                                 simple=False):

        experiments = self.filter_experiments_and_containers(experiments,
                                                             ids=ids,
                                                             targeted_structures=targeted_structures,
                                                             imaging_depths=imaging_depths,
                                                             cre_lines=cre_lines,
                                                             reporter_lines=reporter_lines,
                                                             transgenic_lines=transgenic_lines)

        if require_eye_tracking:
            experiments = [e for e in experiments
                           if e.get('fail_eye_tracking', None) is False]
        if not include_failed:
            experiments = [e for e in experiments 
                           if not e.get('experiment_container',{}).get('failed', False)]

        if experiment_container_ids is not None:
            experiments = [e for e in experiments if e[
                'experiment_container_id'] in experiment_container_ids]

        if session_types is not None:
            experiments = [e for e in experiments if e[
                'stimulus_name'] in session_types]

        if stimuli is not None:
            experiments = [e for e in experiments
                           if len(set(stimuli) & set(stimulus_info.stimuli_in_session(e['stimulus_name']))) > 0]

        if simple:
            experiments = self.simplify_ophys_experiments(experiments)

        return experiments
Exemple #7
0
def _add_stim_epochs(trace,ax,data_set):

    stim_colors_dict = {'locally_sparse_noise':'green','drifting_gratings':'yellow','natural_movie_one':'magenta','natural_movie_two':'magenta','natural_movie_three':'red','natural_scenes':'orange','spontaneous':'grey','static_gratings':'blue'}

    from allensdk.brain_observatory.stimulus_info import stimuli_in_session

    stim_types = stimuli_in_session(data_set.get_metadata()['session_type'])


    for stim in stim_types:
        #print(stim)
        stim_table = data_set.get_stimulus_table(stim)
        window_list = _get_epoch_windows(stim_table)
        for w in window_list:
            #ax.fill_betweenx(np.arange(trace.shape[0]),w[0],w[1],facecolor=stim_colors_dict[stim],alpha=0.2)
            #ax.axvspan(w[0],w[1],np.min(trace),np.max(trace),facecolor=stim_colors_dict[stim],alpha=0.2)
            ax.axvspan(w[0],w[1],facecolor=stim_colors_dict[stim],alpha=0.2)
            ax.set_ylim([np.min(trace),np.max(trace)])
def build_correlation_plots(data_set, analysis_file, configs, output_dir):
    sig_corrs = []
    noise_corrs = []

    avail_stims = si.stimuli_in_session(data_set.get_session_type())
    ans = []
    labels = []
    colors = []
    if si.DRIFTING_GRATINGS in avail_stims:
        dg = DriftingGratings.from_analysis_file(data_set, analysis_file)

        if hasattr(dg, 'representational_similarity'):
            ans.append(dg)
            labels.append(si.DRIFTING_GRATINGS_SHORT)
            colors.append(si.DRIFTING_GRATINGS_COLOR)
            setups = [ ( [configs['large']], True ), ( [configs['small']], False )]
            for cfgs, show_labels in setups:
                for fn in build_plots("drifting_gratings_representational_similarity", 1.0, cfgs, output_dir):
                    oplots.plot_representational_similarity(dg.representational_similarity,
                                                            dims=[dg.orivals, dg.tfvals[1:]],
                                                            dim_labels=["dir", "tf"],
                                                            dim_order=[1,0],
                                                            colors=['r','b'],
                                                            labels=show_labels)

    if si.STATIC_GRATINGS in avail_stims:
        sg = StaticGratings.from_analysis_file(data_set, analysis_file)
        if hasattr(sg, 'representational_similarity'):
            ans.append(sg)
            labels.append(si.STATIC_GRATINGS_SHORT)
            colors.append(si.STATIC_GRATINGS_COLOR)
            setups = [ ( [configs['large']], True ), ( [configs['small']], False )]
            for cfgs, show_labels in setups:
                for fn in build_plots("static_gratings_representational_similarity", 1.0, cfgs, output_dir):
                    oplots.plot_representational_similarity(sg.representational_similarity,
                                                            dims=[sg.orivals, sg.sfvals[1:], sg.phasevals],
                                                            dim_labels=["ori", "sf", "ph"],
                                                            dim_order=[1,0,2],
                                                            colors=['r','g','b'], 
                                                            labels=show_labels)

    if si.NATURAL_SCENES in avail_stims:
        ns = NaturalScenes.from_analysis_file(data_set, analysis_file)
        if hasattr(ns, 'representational_similarity'):
            ans.append(ns)
            labels.append(si.NATURAL_SCENES_SHORT)
            colors.append(si.NATURAL_SCENES_COLOR)
            setups = [ ( [configs['large']], True ), ( [configs['small']], False )]
            for cfgs, show_labels in setups:
                for fn in build_plots("natural_scenes_representational_similarity", 1.0, cfgs, output_dir):
                    oplots.plot_representational_similarity(ns.representational_similarity, labels=show_labels)

    if len(ans):
        for an in ans:
            sig_corrs.append(an.signal_correlation)
            extra_dims = range(2,len(an.noise_correlation.shape))
            noise_corrs.append(an.noise_correlation.mean(axis=tuple(extra_dims)))

        for fn in build_plots("correlation", 1.0, [configs['large'], configs['svg']], output_dir):
            oplots.population_correlation_scatter(sig_corrs, noise_corrs, labels, colors, scale=16.0)
            oplots.finalize_with_axes()

        for fn in build_plots("correlation", 1.0, [configs['small']], output_dir):
            oplots.population_correlation_scatter(sig_corrs, noise_corrs, labels, colors, scale=4.0)
            oplots.finalize_no_labels()

        csids = ans[0].data_set.get_cell_specimen_ids()
        for fn, csid, i in build_cell_plots(csids, "signal_correlation", 1.0, [configs['large']], output_dir):
            row = ans[0].row_from_cell_id(csid, i)
            oplots.plot_cell_correlation([ np.delete(sig_corr[row],i) for sig_corr in sig_corrs ], 
                                         labels, colors)
            oplots.finalize_with_axes()

        for fn, csid, i in build_cell_plots(csids, "signal_correlation", 1.0, [configs['small']], output_dir):
            row = ans[0].row_from_cell_id(csid, i)
            oplots.plot_cell_correlation([ np.delete(sig_corr[row],i) for sig_corr in sig_corrs ], 
                                         labels, colors)
            oplots.finalize_no_labels()