Esempio n. 1
0
    def include_file(self, path, include_dirs = []):
        """
        Includes a file into the current model.

        @param path: Path to the file to be included.
        @type path: str

        @param include_dirs: Optional alternate include search path.
        @type include_dirs: list(str)
        """
        if self.include_includes:
            if self.debug: print("------------------                   Including a file: %s"%path)
            inc_dirs = include_dirs if include_dirs else self.include_dirs

            parser = LEMSFileParser(self, inc_dirs, self.include_includes)
            if os.access(path, os.F_OK):
                if not path in self.included_files:
                    parser.parse(open(path).read()) 
                    self.included_files.append(path)
                    return
                else:
                    if self.debug: print("Already included: %s"%path)
                    return
            else:
                for inc_dir in inc_dirs:
                    new_path = (inc_dir + '/' + path)
                    if os.access(new_path, os.F_OK):
                        if not new_path in self.included_files:
                            parser.parse(open(new_path).read())
                            self.included_files.append(new_path)
                            return
                        else:
                            if self.debug: print("Already included: %s"%path)
                            return
            raise Exception('Unable to open ' + path)
Esempio n. 2
0
File: model.py Progetto: LEMS/pylems
    def import_from_file(self, filepath):
        """
        Import a model from a file.

        @param filepath: File to be imported.
        @type filepath: str
        """
        
        inc_dirs = self.include_directories[:]
        inc_dirs.append(dirname(filepath))
                        
        parser = LEMSFileParser(self, inc_dirs, self.include_includes)
        with open(filepath) as f:
            parser.parse(f.read())
Esempio n. 3
0
def get_lems_model_with_units():

    global lems_model_with_units

    if lems_model_with_units == None:
        jar_path = get_path_to_jnml_jar()
        #print_comment_v("Loading standard NeuroML2 dimension/unit definitions from %s"%jar_path)
        jar = zipfile.ZipFile(jar_path, 'r')
        dims_units = jar.read('NeuroML2CoreTypes/NeuroMLCoreDimensions.xml')
        lems_model_with_units = lems_model.Model(include_includes=False)
        parser = LEMSFileParser(lems_model_with_units)
        parser.parse(dims_units)

    return lems_model_with_units
Esempio n. 4
0
    def import_from_file(self, filepath):
        """
        Import a model from a file.

        @param filepath: File to be imported.
        @type filepath: str
        """

        inc_dirs = self.include_directories[:]
        inc_dirs.append(dirname(filepath))

        parser = LEMSFileParser(self, inc_dirs, self.include_includes)
        with open(filepath) as f:
            parser.parse(f.read())
Esempio n. 5
0
def get_lems_model_with_units():
    
    global lems_model_with_units
    
    if lems_model_with_units == None:
        jar_path = get_path_to_jnml_jar()
        print_comment_v("Loading standard NeuroML2 dimension/unit definitions from %s"%jar_path)
        jar = zipfile.ZipFile(jar_path, 'r')
        dims_units = jar.read('NeuroML2CoreTypes/NeuroMLCoreDimensions.xml')
        lems_model_with_units = lems_model.Model(include_includes=False)
        parser = LEMSFileParser(lems_model_with_units)
        parser.parse(dims_units)
        
        
    return lems_model_with_units
Esempio n. 6
0
    def include_file(self, path, include_dirs = []):
        """
        Includes a file into the current model.

        @param path: Path to the file to be included.
        @type path: str

        @param include_dirs: Optional alternate include search path.
        @type include_dirs: list(str)
        """
        if self.include_includes:
            if self.debug: print("------------------                   Including a file: %s"%path)
            inc_dirs = include_dirs if include_dirs else self.include_dirs

            parser = LEMSFileParser(self, inc_dirs, self.include_includes)
            if os.access(path, os.F_OK):
                if not path in self.included_files:
                    parser.parse(open(path).read()) 
                    self.included_files.append(path)
                    return
                else:
                    if self.debug: print("Already included: %s"%path)
                    return
            else:
                for inc_dir in inc_dirs:
                    new_path = (inc_dir + '/' + path)
                    if os.access(new_path, os.F_OK):
                        if not new_path in self.included_files:
                            parser.parse(open(new_path).read())
                            self.included_files.append(new_path)
                            return
                        else:
                            if self.debug: print("Already included: %s"%path)
                            return
            raise Exception('Unable to open ' + path)
Esempio n. 7
0
    def _get_lems_model_with_neuroml2_types(cls):

        from pyneuroml.pynml import get_path_to_jnml_jar
        from pyneuroml.pynml import read_lems_file
        from lems.parser.LEMS import LEMSFileParser
        import zipfile

        lems_model = lems.Model(include_includes=False)
        parser = LEMSFileParser(lems_model)

        jar_path = get_path_to_jnml_jar()
        # print_comment_v("Loading standard NeuroML2 dimension/unit definitions from %s"%jar_path)
        jar = zipfile.ZipFile(jar_path, "r")
        new_lems = jar.read("NeuroML2CoreTypes/NeuroMLCoreDimensions.xml")
        parser.parse(new_lems)
        new_lems = jar.read("NeuroML2CoreTypes/NeuroMLCoreCompTypes.xml")
        parser.parse(new_lems)
        new_lems = jar.read("NeuroML2CoreTypes/Cells.xml")
        parser.parse(new_lems)
        new_lems = jar.read("NeuroML2CoreTypes/Networks.xml")
        parser.parse(new_lems)
        new_lems = jar.read("NeuroML2CoreTypes/Simulation.xml")
        parser.parse(new_lems)
        new_lems = jar.read("NeuroML2CoreTypes/Synapses.xml")
        parser.parse(new_lems)
        new_lems = jar.read("NeuroML2CoreTypes/PyNN.xml")
        parser.parse(new_lems)

        return lems_model
Esempio n. 8
0
    def _load_lems_file_with_neuroml2_types(cls, lems_filename):

        from pyneuroml.pynml import get_path_to_jnml_jar
        from pyneuroml.pynml import read_lems_file
        from lems.parser.LEMS import LEMSFileParser
        import zipfile

        lems_model = lems.Model(include_includes=False)
        parser = LEMSFileParser(lems_model)

        jar_path = get_path_to_jnml_jar()
        # print_comment_v("Loading standard NeuroML2 dimension/unit definitions from %s"%jar_path)
        jar = zipfile.ZipFile(jar_path, 'r')
        new_lems = jar.read('NeuroML2CoreTypes/NeuroMLCoreDimensions.xml')
        parser.parse(new_lems)
        new_lems = jar.read('NeuroML2CoreTypes/NeuroMLCoreCompTypes.xml')
        parser.parse(new_lems)
        new_lems = jar.read('NeuroML2CoreTypes/Cells.xml')
        parser.parse(new_lems)
        new_lems = jar.read('NeuroML2CoreTypes/Networks.xml')
        parser.parse(new_lems)
        new_lems = jar.read('NeuroML2CoreTypes/Simulation.xml')
        parser.parse(new_lems)
        new_lems = jar.read('NeuroML2CoreTypes/Synapses.xml')
        parser.parse(new_lems)
        new_lems = jar.read('NeuroML2CoreTypes/PyNN.xml')
        parser.parse(new_lems)

        model = read_lems_file(lems_filename,
                               include_includes=False,
                               fail_on_missing_includes=True,
                               debug=True)

        for cid, c in model.components.items():
            lems_model.components[cid] = c
        for ctid, ct in model.component_types.items():
            lems_model.component_types[ctid] = ct

        return lems_model