def __nml2_doc(cls,file_name,optimized=False): import sys import logging logging.basicConfig(level=logging.INFO, format="%(name)-19s %(levelname)-5s - %(message)s") from neuroml.hdf5.NeuroMLHdf5Parser import NeuroMLHdf5Parser if optimized: currParser = NeuroMLHdf5Parser(None,optimized=True) currParser.parse(file_name) return currParser.get_nml_doc() else: from neuroml.hdf5.NetworkBuilder import NetworkBuilder nmlHandler = NetworkBuilder() currParser = NeuroMLHdf5Parser(nmlHandler) currParser.parse(file_name) nml2_doc = nmlHandler.get_nml_doc() if currParser.nml_doc_extra_elements: add_all_to_document(currParser.nml_doc_extra_elements,nml2_doc) return nml2_doc
def __nml2_doc(cls,file_name): import sys import logging logging.basicConfig(level=logging.INFO, format="%(name)-19s %(levelname)-5s - %(message)s") from neuroml.hdf5.NetworkBuilder import NetworkBuilder from neuroml.hdf5.NeuroMLHdf5Parser import NeuroMLHdf5Parser try: nmlHandler = NetworkBuilder() currParser = NeuroMLHdf5Parser(nmlHandler) currParser.parse(file_name) nml2_doc = nmlHandler.get_nml_doc() except Exception: print("Not a valid NeuroML 2 doc: %s" % str(sys.exc_info())) return None return nml2_doc
def __nml2_doc(cls, file_name): import sys import logging logging.basicConfig(level=logging.INFO, format="%(name)-19s %(levelname)-5s - %(message)s") from neuroml.hdf5.NetworkBuilder import NetworkBuilder from neuroml.hdf5.NeuroMLHdf5Parser import NeuroMLHdf5Parser try: nmlHandler = NetworkBuilder() currParser = NeuroMLHdf5Parser(nmlHandler) currParser.parse(file_name) nml2_doc = nmlHandler.get_nml_doc() except Exception: print("Not a valid NeuroML 2 doc: %s" % str(sys.exc_info())) return None return nml2_doc
def test_parse(self): base_dir = os.path.dirname(__file__) #base_dir = '.' logging.basicConfig(level=logging.INFO, format="%(name)-19s %(levelname)-5s - %(message)s") for f in ['simplenet.nml','testh5.nml','pyr_4_sym.cell.nml','MediumNet.net.nml','complete.nml']: file_name = base_dir+'/../examples/test_files/'+f nml_doc0 = loaders.read_neuroml2_file(file_name, include_includes=True, verbose=True) summary0 = nml_doc0.summary(show_includes=False,show_non_network=False) print('\n'+summary0) from neuroml.hdf5.DefaultNetworkHandler import DefaultNetworkHandler nmlHandler = DefaultNetworkHandler() currParser = NeuroMLXMLParser(nmlHandler) currParser.parse(file_name) print('-------------------------------\n\n') nmlHandler = NetworkBuilder() currParser = NeuroMLXMLParser(nmlHandler) currParser.parse(file_name) nml_doc = nmlHandler.get_nml_doc() summary = nml_doc.summary(show_includes=False,show_non_network=False) print(summary) compare(summary,summary0) nml_file = base_dir+'/../examples/tmp/EXP_'+f import neuroml.writers as writers writers.NeuroMLWriter.write(nml_doc, nml_file) print("Written network file to: "+nml_file)
def generate_neuroml2_from_network(nl_model, nml_file_name=None, print_summary=True, seed=1234, format='xml', base_dir=None, copy_included_elements=False, target_dir=None, validate=False): """ Generate and save NeuroML2 file (in either XML or HDF5 format) from the NeuroMLlite description """ print_v("Generating NeuroML2 for %s%s..." % (nl_model.id, ' (base dir: %s; target dir: %s)' % (base_dir, target_dir) if base_dir or target_dir else '')) import neuroml from neuroml.hdf5.NetworkBuilder import NetworkBuilder neuroml_handler = NetworkBuilder() generate_network(nl_model, neuroml_handler, seed=seed, base_dir=base_dir) nml_doc = neuroml_handler.get_nml_doc() for i in nl_model.input_sources: if nml_doc.get_by_id(i.id) == None: if i.neuroml2_source_file: incl = neuroml.IncludeType( _locate_file(i.neuroml2_source_file, base_dir)) if not incl in nml_doc.includes: nml_doc.includes.append(incl) if i.neuroml2_input: input_params = i.parameters if i.parameters else {} # TODO make more generic... if i.neuroml2_input.lower() == 'pulsegenerator': input = neuroml.PulseGenerator(id=i.id) nml_doc.pulse_generators.append(input) elif i.neuroml2_input.lower() == 'pulsegeneratordl': input = neuroml.PulseGeneratorDL(id=i.id) nml_doc.pulse_generator_dls.append(input) elif i.neuroml2_input.lower() == 'poissonfiringsynapse': input = neuroml.PoissonFiringSynapse(id=i.id) nml_doc.poisson_firing_synapses.append(input) for p in input_params: exec('input.%s = "%s"' % (p, evaluate(input_params[p], nl_model.parameters))) for c in nl_model.cells: if c.neuroml2_source_file: incl = neuroml.IncludeType( _locate_file(c.neuroml2_source_file, base_dir)) found_cell = False for cell in nml_doc.cells: if cell.id == c.id: nml_doc.cells.remove( cell ) # Better to use imported cell file; will have channels, etc. nml_doc.includes.append(incl) found_cell = True if not found_cell: for p in nl_model.populations: if p.component == c.id: pass if not incl in nml_doc.includes: nml_doc.includes.append(incl) ''' Needed??? if c.lems_source_file: incl = neuroml.IncludeType(_locate_file(c.lems_source_file, base_dir)) if not incl in nml_doc.includes: nml_doc.includes.append(incl)''' if c.neuroml2_cell: cell_params = c.parameters if c.parameters else {} # TODO make more generic... if c.neuroml2_cell.lower() == 'spikegenerator': cell = neuroml.SpikeGenerator(id=c.id) nml_doc.spike_generators.append(cell) elif c.neuroml2_cell.lower() == 'spikegeneratorpoisson': cell = neuroml.SpikeGeneratorPoisson(id=c.id) nml_doc.spike_generator_poissons.append(cell) elif c.neuroml2_cell.lower() == 'spikegeneratorrefpoisson': cell = neuroml.SpikeGeneratorRefPoisson(id=c.id) nml_doc.spike_generator_ref_poissons.append(cell) else: raise Exception( 'The neuroml2_cell: %s is not yet supported...' % c.neuroml2_cell) for p in cell_params: exec('cell.%s = "%s"' % (p, evaluate(cell_params[p], nl_model.parameters))) for s in nl_model.synapses: if nml_doc.get_by_id(s.id) == None: if s.neuroml2_source_file: incl = neuroml.IncludeType( _locate_file(s.neuroml2_source_file, base_dir)) if not incl in nml_doc.includes: nml_doc.includes.append(incl) # Look for and add the PyNN based elements to the NeuroMLDocument _extract_pynn_components_to_neuroml(nl_model, nml_doc) if print_summary: # Print info print_v(nml_doc.summary()) # Save to file if target_dir == None: target_dir = base_dir if format == 'xml': if not nml_file_name: nml_file_name = _locate_file('%s.net.nml' % nml_doc.id, target_dir) from neuroml.writers import NeuroMLWriter NeuroMLWriter.write(nml_doc, nml_file_name) if format == 'hdf5': if not nml_file_name: nml_file_name = _locate_file('%s.net.nml.h5' % nml_doc.id, target_dir) from neuroml.writers import NeuroMLHdf5Writer NeuroMLHdf5Writer.write(nml_doc, nml_file_name) print_v("Written NeuroML to %s" % nml_file_name) if validate and format == 'xml': from pyneuroml import pynml success = pynml.validate_neuroml2(nml_file_name, verbose_validate=False) if success: print_v('Generated file is valid NeuroML2!') else: print_v('Generated file is NOT valid NeuroML2!') return nml_file_name, nml_doc
net.populations[1].random_layout.append( RandomLayout(id='test2', x=1000, y=1000, z=1000)) print net.to_json() ### Use a handler which just prints info on positions, etc. def_handler = DefaultNetworkHandler() generate_network(net, def_handler) ### Use a handler which builds a NeuroML 2 representation from neuroml.hdf5.NetworkBuilder import NetworkBuilder neuroml_handler = NetworkBuilder() generate_network(net, neuroml_handler) nml_doc = neuroml_handler.get_nml_doc() # Print info print(nml_doc.summary()) # Save to file file_name = '%s.net.nml' % nml_doc.id from neuroml.writers import NeuroMLWriter NeuroMLWriter.write(nml_doc, file_name) print("Written NeuroML to %s" % file_name)
percentage_cells_per_pop = 1 bbp = BBPConnectomeReader( filename=filename, percentage_cells_per_pop=percentage_cells_per_pop, DEFAULT_CELL_ID='hhcell') from neuromllite.DefaultNetworkHandler import DefaultNetworkHandler def_handler = DefaultNetworkHandler() bbp.parse(def_handler) from neuroml.hdf5.NetworkBuilder import NetworkBuilder neuroml_handler = NetworkBuilder() bbp = BBPConnectomeReader( filename=filename, percentage_cells_per_pop=percentage_cells_per_pop, DEFAULT_CELL_ID='hhcell') bbp.parse(neuroml_handler) nml_file_name = 'BBP.net.nml' from neuroml.writers import NeuroMLWriter NeuroMLWriter.write(neuroml_handler.get_nml_doc(), nml_file_name) ''' from neuromllite.NeuronHandler import NeuronHandler
from neuroml.hdf5.DefaultNetworkHandler import DefaultNetworkHandler nmlHandler = DefaultNetworkHandler() currParser = NeuroMLHdf5Parser( nmlHandler ) # The HDF5 handler knows of the structure of NetworkML and calls appropriate functions in NetworkHandler currParser.parse(file_name) print('-------------------------------\n\n') from neuroml.hdf5.NetworkBuilder import NetworkBuilder nmlHandler = NetworkBuilder() currParser = NeuroMLHdf5Parser(nmlHandler) currParser.parse(file_name) nml_doc = currParser.get_nml_doc() summary0 = nml_doc.summary() print(summary0) exit() print('-------------------------------\n\n') currParser = NeuroMLHdf5Parser(None, optimized=True) currParser.parse(file_name)
] test_files = [ "../../neuroConstruct/osb/showcase/PsyNeuLinkShowcase/NeuroML2/FN.bids-mdf.json" ] for filename in test_files: pnl_parser = PsyNeuLinkReader(filename=filename, DEFAULT_CELL_ID="hhcell") from neuromllite.DefaultNetworkHandler import DefaultNetworkHandler def_handler = DefaultNetworkHandler() pnl_parser.parse(def_handler) from neuroml.hdf5.NetworkBuilder import NetworkBuilder neuroml_handler = NetworkBuilder() pnl_parser = PsyNeuLinkReader(filename=filename, DEFAULT_CELL_ID="hhcell") pnl_parser.parse(neuroml_handler) from neuroml.writers import NeuroMLWriter nml_file_name = "%s.net.nml" % neuroml_handler.get_nml_doc().id NeuroMLWriter.write(neuroml_handler.get_nml_doc(), nml_file_name) print("Written NeuroML file to: %s" % nml_file_name)