Source code for ipfx.bin.run_sweep_extraction

import logging

import allensdk.core.json_utilities as json_utilities
import argschema as ags

from ipfx._schemas import SweepExtractionParameters
from ipfx.dataset.create import create_ephys_data_set
from ipfx.logging_utils import log_pretty_header
from ipfx.bin.make_stimulus_ontology import make_stimulus_ontology_from_lims
from ipfx.stimulus import StimulusOntology
from ipfx.qc_feature_extractor import cell_qc_features, sweep_qc_features

# manual keys are values that can be passed in through input.json.
# these values are used if the particular value cannot be computed.
# a better name might be 'DEFAULT_VALUE_KEYS'
MANUAL_KEYS = (
    'manual_seal_gohm',
    'manual_initial_access_resistance_mohm',
    'manual_initial_input_mohm'
)


[docs]def run_sweep_extraction( input_nwb_file, stimulus_ontology_file, input_manual_values=None ): """ Parameters ---------- input_nwb_file stimulus_ontology_file input_manual_values Returns ------- """ log_pretty_header("Extract QC features", level=1) if input_manual_values is None: input_manual_values = {} manual_values = {} for mk in MANUAL_KEYS: if mk in input_manual_values: manual_values[mk] = input_manual_values[mk] if stimulus_ontology_file: make_stimulus_ontology_from_lims(stimulus_ontology_file) else: stimulus_ontology_file = \ StimulusOntology.DEFAULT_STIMULUS_ONTOLOGY_FILE logging.info( f"Ontology is not provided, using default " f"{StimulusOntology.DEFAULT_STIMULUS_ONTOLOGY_FILE}" ) ont = StimulusOntology(json_utilities.read(stimulus_ontology_file)) ds = create_ephys_data_set( nwb_file=input_nwb_file, ontology=ont ) cell_features, cell_tags = cell_qc_features(ds, manual_values) for tag in cell_tags: logging.warning(tag) sweep_features = sweep_qc_features(ds) return { "cell_features": cell_features, "cell_tags": cell_tags, "sweep_features": sweep_features, }
[docs]def main(): """ Usage: python run_sweep_extraction.py --input_json INPUT_JSON --output_json OUTPUT_JSON """ module = ags.ArgSchemaParser(schema_type=SweepExtractionParameters) output = run_sweep_extraction( module.args["input_nwb_file"], module.args.get("stimulus_ontology_file", None) ) json_utilities.write(module.args["output_json"], output)
if __name__ == "__main__": main()