예제 #1
0
파일: cache.py 프로젝트: jcfr/AllenSDK
    def load_manifest(self, file_name, version=None):
        '''Read a keyed collection of path specifications.

        Parameters
        ----------
        file_name : string
            path to the manifest file

        Returns
        -------
        Manifest
        '''
        if file_name is not None:
            if not os.path.exists(file_name):

                # make the directory if it doesn't exist already
                dirname = os.path.dirname(file_name)
                if dirname:
                    Manifest.safe_mkdir(dirname)

                self.build_manifest(file_name)

            try:
                self.manifest = Manifest(
                    ju.read(file_name)['manifest'], 
                    os.path.dirname(file_name), 
                    version=version)
            except ManifestVersionError as e:
                raise ManifestVersionError(("Your manifest file (%s) is out of date" +
                                            " (version '%s' vs '%s').  Please remove this file" +
                                            " and it will be regenerated for you the next"
                                            " time you instantiate this class.") % (file_name, e.found_version, e.version),
                                           e.version, e.found_version)
        else:
            self.manifest = None
예제 #2
0
    def load_manifest(self, file_name):
        '''Read a keyed collection of path specifications.

        Parameters
        ----------
        file_name : string
            path to the manifest file

        Returns
        -------
        Manifest
        '''
        if file_name is not None:
            if not os.path.exists(file_name):

                # make the directory if it doesn't exist already
                dirname = os.path.dirname(file_name)
                if dirname:
                    Manifest.safe_mkdir(dirname)

                self.build_manifest(file_name)

            self.manifest = Manifest(
                ju.read(file_name)['manifest'], os.path.dirname(file_name))
        else:
            self.manifest = None
예제 #3
0
def main():
    parser = argparse.ArgumentParser()
    parser.add_argument('cells_csv', help='CSV containing cell metadata')
    parser.add_argument('connections_h5',
                        help='HDF5 file containing cell connectivity')
    parser.add_argument('network_vtk_file', help='.vtk output file')
    parser.add_argument('--manifest')
    parser.add_argument('--morphology_vtk_file')

    args = parser.parse_args()

    # read in the cell CSV
    with open(args.cells_csv, 'r') as f:
        r = csv.DictReader(f)
        cells = list(r)

    # read in the connections from the H5 file
    h5u = Hdf5Util()
    connections = h5u.read(args.connections_h5)

    # write out the results
    write_network_vtk(args.network_vtk_file, cells, connections)

    if args.manifest:
        config = ju.read(args.manifest)
        manifest = Manifest(config['manifest'],
                            relative_base_dir=os.path.dirname(args.manifest))
        write_morphology_vtk(args.morphology_vtk_file, cells, manifest)
예제 #4
0
    def load_manifest(self, file_name, version=None):
        '''Read a keyed collection of path specifications.

        Parameters
        ----------
        file_name : string
            path to the manifest file

        Returns
        -------
        Manifest
        '''
        if file_name is not None:
            if not os.path.exists(file_name):

                # make the directory if it doesn't exist already
                dirname = os.path.dirname(file_name)
                if dirname:
                    Manifest.safe_mkdir(dirname)

                self.build_manifest(file_name)

            try:
                self.manifest = Manifest(
                    ju.read(file_name)['manifest'],
                    os.path.dirname(file_name),
                    version=version)
            except ManifestVersionError as e:
                if e.outdated is True:
                    intro = "is out of date"
                elif e.outdated is False:
                    intro = "was made with a newer version of the AllenSDK"
                elif e.outdated is None:
                    intro = "version did not match the expected version"

                ref_url = "https://github.com/alleninstitute/allensdk/wiki"
                raise ManifestVersionError(("Your manifest file (%s) %s" +
                                            " (its version is '%s', but" +
                                            " version '%s' is expected). " +
                                            " Please remove this file" +
                                            " and it will be regenerated for" +
                                            " you the next time you" +
                                            " instantiate this class." +
                                            " WARNING: There may be new data" +
                                            " files available that replace" +
                                            " the ones you already have" +
                                            " downloaded. Read the notes" +
                                            " for this release for more" +
                                            " details on what has changed" +
                                            " (%s).") %
                                           (file_name, intro,
                                            e.found_version, e.version,
                                            ref_url),
                                           e.version, e.found_version)

            self.manifest_path = file_name

        else:
            self.manifest = None
예제 #5
0
    def to_manifest(self, manifest_path=None):
        b = self.build_manifest(manifest_path)

        m = Manifest(config=b.path_info)

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

        return m
예제 #6
0
    def load_manifest(self, file_name, version=None):
        '''Read a keyed collection of path specifications.

        Parameters
        ----------
        file_name : string
            path to the manifest file

        Returns
        -------
        Manifest
        '''
        if file_name is not None:
            if not os.path.exists(file_name):

                # make the directory if it doesn't exist already
                dirname = os.path.dirname(file_name)
                if dirname:
                    Manifest.safe_mkdir(dirname)

                self.build_manifest(file_name)

            try:
                self.manifest = Manifest(ju.read(file_name)['manifest'],
                                         os.path.dirname(file_name),
                                         version=version)
            except ManifestVersionError as e:
                if e.outdated is True:
                    intro = "is out of date"
                elif e.outdated is False:
                    intro = "was made with a newer version of the AllenSDK"
                elif e.outdated is None:
                    intro = "version did not match the expected version"

                raise ManifestVersionError((
                    "Your manifest file (%s) %s" +
                    " (its version is '%s', but version '%s' is expected).  Please remove this file"
                    + " and it will be regenerated for you the next"
                    " time you instantiate this class.") %
                                           (file_name, intro, e.found_version,
                                            e.version), e.version,
                                           e.found_version)

            self.manifest_path = file_name

        else:
            self.manifest = None
예제 #7
0
 def __init__(self):
     self.data = {}
     self.reserved_data = []
     self.manifest = Manifest()
    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
예제 #9
0
 def get_manifest(self):
     return Manifest(self.path_info)