def to_manifest(self, manifest_path=None):
        b = ManifestBuilder()
        b.add_path('BASEDIR', os.path.realpath(os.curdir))

        b.add_path('WORKDIR', os.path.realpath(os.curdir))

        b.add_path('MORPHOLOGY', self.morphology_path(), typename='file')
        b.add_path('CODE_DIR', 'templates')
        b.add_path('MODFILE_DIR', 'modfiles')

        for modfile in self.mod_file_entries():
            b.add_path('MOD_FILE_%s' %
                       (os.path.splitext(modfile['filename'])[0]),
                       os.path.join(modfile['storage_directory'],
                                    modfile['filename']),
                       typename='file',
                       format='MODFILE')

        b.add_path('neuronal_model_run_data', self.lims_path, typename='file')

        b.add_path('stimulus_path',
                   self.stimulus_path(),
                   typename='file',
                   format='NWB')

        b.add_path('manifest',
                   os.path.join(os.path.realpath(os.curdir), manifest_path),
                   typename='file')

        neuronal_model_run_id = self.lims_data['id']

        nwb_file_name, extension = \
            os.path.splitext(os.path.basename(self.stimulus_path()))
        b.add_path('output_path',
                   '%d_virtual_experiment%s' %
                   (neuronal_model_run_id, extension),
                   typename='file',
                   parent_key='WORKDIR',
                   format='NWB')

        b.add_path('fit_parameters', self.fit_parameters_path())

        b.add_section(
            'biophys', {
                "biophys": [{
                    "model_file": [manifest_path,
                                   self.fit_parameters_path()],
                    "model_type":
                    self.model_type()
                }]
            })

        b.add_section(
            'stimulus_conf', {
                "runs": [{
                    "neuronal_model_run_id": neuronal_model_run_id,
                    "sweeps": self.sweep_numbers(),
                    "sweeps_by_type": self.sweep_numbers_by_type()
                }]
            })

        b.add_section(
            'hoc_conf',
            {"neuron": [{
                "hoc": ["stdgui.hoc", "import3d.hoc", "cell.hoc"]
            }]})

        m = Manifest(config=b.path_info)

        if manifest_path != None:
            b.write_json_file(manifest_path, overwrite=True)

        return m
예제 #2
0
    def build_manifest(self, manifest_path=None):
        b = ManifestBuilder()

        b.add_path('BASEDIR', os.path.realpath(os.curdir))

        b.add_path('WORKDIR', self.output_directory())

        b.add_path('MORPHOLOGY', self.morphology_path(), typename='file')

        b.add_path('MODFILE_DIR', 'modfiles')

        for modfile in self.mod_file_entries():
            b.add_path('MOD_FILE_%s' %
                       (os.path.splitext(modfile['filename'])[0]),
                       os.path.join(modfile['storage_directory'],
                                    modfile['filename']),
                       typename='file',
                       format='MODFILE')

        b.add_path('stimulus_path',
                   self.stimulus_path(),
                   typename='file',
                   format='NWB')

        b.add_path('manifest',
                   os.path.join(os.path.realpath(os.curdir), manifest_path),
                   typename='file')

        b.add_path('output',
                   os.path.basename(self.stimulus_path()),
                   typename='file',
                   parent_key='WORKDIR',
                   format='NWB')

        b.add_path('neuronal_model_data', self.lims_path, typename='file')

        b.add_path('upfile',
                   'upbase.dat',
                   typename='file',
                   parent_key='WORKDIR')
        b.add_path('downfile',
                   'downbase.dat',
                   typename='file',
                   parent_key='WORKDIR')
        b.add_path('passive_fit_data',
                   'passive_fit_data.json',
                   typename='file',
                   parent_key='WORKDIR')
        b.add_path('stage_1_jobs',
                   'stage_1_jobs.json',
                   typename='file',
                   parent_key='WORKDIR')
        b.add_path('fit_1_file',
                   'fit_1_data.json',
                   typename='file',
                   parent_key='WORKDIR')
        b.add_path('fit_2_file',
                   'fit_2_data.json',
                   typename='file',
                   parent_key='WORKDIR')
        b.add_path('fit_3_file',
                   'fit_3_data.json',
                   typename='file',
                   parent_key='WORKDIR')
        b.add_path('fit_type_path',
                   typename='file',
                   spec='%s',
                   parent_key='WORKDIR')
        b.add_path('target_path',
                   typename='file',
                   spec='target.json',
                   parent_key='WORKDIR')
        b.add_path('fit_config_json',
                   typename='file',
                   spec='%s/config.json',
                   parent_key='WORKDIR')
        b.add_path('final_hof_fit',
                   typename='file',
                   spec='%s/s%d/final_hof_fit.txt',
                   parent_key='WORKDIR')
        b.add_path('final_hof',
                   typename='file',
                   spec='%s/s%d/final_hof.txt',
                   parent_key='WORKDIR')
        b.add_path('output_fit_file', typename='file', spec='fit_%s_%s.json')

        b.add_section('biophys',
                      {"biophys": [{
                          "model_file": [manifest_path]
                      }]})

        b.add_section(
            'stimulus_conf', {
                "runs": [{
                    "sweeps": self.sweep_numbers(),
                    "specimen_id": self.lims_data['specimen_id']
                }]
            })

        b.add_section(
            'hoc_conf',
            {"neuron": [{
                "hoc": ["stdgui.hoc", "import3d.hoc", "cell.hoc"]
            }]})

        return b