Source code for ipfx.bin.generate_qc_input

import os
from ipfx.bin.run_sweep_extraction import run_sweep_extraction
from ipfx.bin.generate_se_input import generate_se_input, parse_args
import ipfx.sweep_props as sp
import allensdk.core.json_utilities as ju
import ipfx.logging_utils as lu


QC_INPUT_FEATURES = ["stimulus_units",
                   "stimulus_duration",
                   "stimulus_amplitude",
                   "sweep_number",
                   "vm_delta_mv",
                   "pre_noise_rms_mv",
                   "slow_noise_rms_mv",
                   "stimulus_scale_factor",
                   "post_noise_rms_mv",
                   "slow_vm_mv",
                   "stimulus_code",
                   "stimulus_name",
                   ]


[docs]def generate_qc_input(se_input,se_output): qc_input = {} if 'stimulus_ontology_file' in se_input: qc_input['stimulus_ontology_file'] = se_input['stimulus_ontology_file'] qc_input['qc_criteria'] = { "access_resistance_mohm_max":20.0, "access_resistance_mohm_min":1.0, "blowout_mv_max":10.0, "blowout_mv_min":-10.0, "created_at":"2015-01-29T13:51:29-08:00", "electrode_0_pa_max":200.0, "electrode_0_pa_min":-200.0, "id":324256702, "input_vs_access_resistance_max":0.15, "leak_pa_max":100.0, "leak_pa_min":-100.0, "name":"Ephys QC Criteria v1.1", "post_noise_rms_mv_max":0.07, "pre_noise_rms_mv_max":0.07, "seal_gohm_min":1.0, "slow_noise_rms_mv_max":0.5, "updated_at":"2015-01-29T13:51:29-08:00", "vm_delta_mv_max":1.0} qc_input['sweep_features'] = sp.extract_sweep_features_subset(QC_INPUT_FEATURES,se_output['sweep_features']) qc_input['cell_features'] = se_output['cell_features'] return qc_input
[docs]def main(): """ Usage: > python generate_qc_input.py --specimen_id SPECIMEN_ID --cell_dir CELL_DIR > python generate_qc_input.py --input_nwb_file input_nwb_file --cell_dir CELL_DIR """ args = parse_args() se_input = generate_se_input(**args) cell_dir = args['cell_dir'] if not os.path.exists(cell_dir): os.makedirs(cell_dir) lu.configure_logger(cell_dir) ju.write(os.path.join(cell_dir,'se_input.json'), se_input) se_output = run_sweep_extraction(se_input["input_nwb_file"], se_input.get("stimulus_ontology_file", None)) ju.write(os.path.join(cell_dir,'se_output.json'),se_output) sp.drop_tagged_sweeps(se_output["sweep_features"]) qc_input = generate_qc_input(se_input, se_output) ju.write(os.path.join(cell_dir,'qc_input.json'), qc_input)
if __name__=="__main__": main()