Source code for allensdk.internal.model.biophysical.run_simulate_lims

import logging
import os
import sys
import traceback
import logging.config as lc
import shutil
from pkg_resources import resource_filename #@UnresolvedImport
from allensdk.model.biophysical.run_simulate import RunSimulate


[docs]class RunSimulateLims(RunSimulate): _log = logging.getLogger('allensdk.internal.model.biophysical.run_simulate_lims') def __init__(self, input_json, output_json): super(RunSimulateLims, self).__init__(input_json, output_json)
[docs] def generate_manifest_rma(self, neuronal_model_run_id, manifest_path, api_url=None): ''' Note ---- Other necessary files are also written. ''' import json from allensdk.internal.api.queries.biophysical_module_api import BiophysicalModuleApi from allensdk.internal.api.queries.biophysical_module_reader import BiophysicalModuleReader bma = BiophysicalModuleApi(api_url) data = bma.get_neuronal_model_runs(neuronal_model_run_id) lr = BiophysicalModuleReader() lr.read_lims_message(data, 'lims_message.json') with open('lims_message.json', 'w') as f: f.write(json.dumps(data[0], sort_keys=True, indent=2)) lr.to_manifest(manifest_path)
[docs] def generate_manifest_lims(self, lims_data_path, manifest_path): ''' Note ---- Other necessary files are also written. ''' from allensdk.internal.api.queries.biophysical_module_reader import BiophysicalModuleReader self.lims_json = lims_data_path lr = BiophysicalModuleReader() lr.read_lims_file(self.lims_json) lr.to_manifest(manifest_path)
[docs] def copy_local(self): import allensdk.model.biophysical.run_simulate self.load_manifest() modfile_dir = self.manifest.get_path('MODFILE_DIR') if not os.path.exists(modfile_dir): os.mkdir(modfile_dir) workdir = self.manifest.get_path('WORKDIR') if not os.path.exists(workdir): os.mkdir(workdir) modfiles = [self.manifest.get_path(key) for key,info in self.manifest.path_info.items() if 'format' in info and info['format'] == 'MODFILE'] for from_file in modfiles: RunSimulate._log.debug("copying %s to %s" % (from_file, modfile_dir)) shutil.copy(from_file, modfile_dir) shutil.copy(self.manifest.get_path('fit_parameters'), workdir) shutil.copyfile(self.manifest.get_path('stimulus_path'), self.manifest.get_path('output_path')) shutil.copy(resource_filename(allensdk.model.biophysical.run_simulate.__name__, 'cell.hoc'), os.curdir)
[docs]def main(command, lims_strategy_json, lims_response_json): ''' Entry point for module. :param command: select behavior, nrnivmodl or simulate :type command: string :param lims_strategy_json: path to json file output from lims. :type lims_strategy_json: string :param lims_response_json: path to json file returned to lims. :type lims_response_json: string ''' rs = RunSimulateLims(lims_strategy_json, lims_response_json) RunSimulateLims._log.debug("command: %s" % (command)) RunSimulateLims._log.debug("lims strategy json: %s" % (lims_strategy_json)) RunSimulateLims._log.debug("lims upload json: %s" % (lims_response_json)) log_config = resource_filename('allensdk.model.biophysical.run_simulate', 'logging.conf') lc.fileConfig(log_config) os.environ['LOG_CFG'] = log_config if 'nrnivmodl' == command: rs.nrnivmodl() elif 'copy_local' == command: rs.copy_local() elif 'generate_manifest_rma' == command: rs.generate_manifest_rma(input_json, output_json) elif 'generate_manifest_lims' == command: rs.generate_manifest_lims(input_json, output_json) elif 'generate_manifest_lims' == command: rs.generate_manifest_lims(input_json, output_json) else: rs.simulate()
if __name__ == '__main__': command, input_json, output_json = sys.argv[-3:] try: main(command, input_json, output_json) RunSimulateLims._log.debug("success") except Exception as e: RunSimulate._log.error(traceback.format_exc()) exit(1)