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)
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())
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
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
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
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