def load_project(self, fname): file = File(fname) print 'Loading project file: ', file.getAbsolutePath() pm = ProjectManager() project = pm.loadProject(file) print pm.status() return project
def testAll(argv=None): if argv is None: argv = sys.argv print "Loading project from " + projFile.getCanonicalPath() projectManager = ProjectManager() project = projectManager.loadProject(projFile) assert (len(project.getProjectDescription()) > 0) assert (len(project.cellManager.getAllCells()) >= 6) #assert(project.proj3Dproperties.getDisplayOption() == Display3DProperties.DISPLAY_SOMA_SOLID_NEURITE_LINE) assert (abs(project.simulationParameters.getDt() - 0.01) <= 1e-9) assert (abs(project.simulationParameters.getTemperature() - 6.3) < 1e-6) assert (not project.neuronSettings.isVarTimeStep()) assert (project.neuronSettings.getDataSaveFormat().equals( NeuronSettings.DataSaveFormat.TEXT_NC)) assert (project.genesisSettings.isSymmetricCompartments()) assert (project.genesisSettings.isSIUnits()) defSimConfig = project.simConfigInfo.getSimConfig( "Default Simulation Configuration") assert (str(defSimConfig.getCellGroups()) == '[baskets, pyramidals]') smallNetSimConfig = project.simConfigInfo.getSimConfig("SmallNetwork") assert (smallNetSimConfig.getCellGroups().size() == 2) assert (smallNetSimConfig.getNetConns().size() == 4) assert (smallNetSimConfig.getInputs().size() == 1) assert (project.cellGroupsInfo.getCellPackingAdapter( "pyramidals_48").getMaxNumberCells() == 48) assert (project.cellGroupsInfo.getCellPackingAdapter( "baskets_12").getMaxNumberCells() == 12) print "\n**************************************" print " All tests passed!" print "**************************************\n"
def testAll(argv=None): if argv is None: argv = sys.argv print "Loading project from " + projFile.getCanonicalPath() projectManager = ProjectManager() project = projectManager.loadProject(projFile) assert (len(project.getProjectDescription()) > 0) assert (len(project.cellManager.getAllCells()) >= 7) assert (len(project.cellGroupsInfo.getAllCellGroupNames()) >= 4) assert (project.simulationParameters.getDt() - 0.0125 <= 1e-6) assert (project.neuronSettings.isVarTimeStep()) assert (project.neuronSettings.getDataSaveFormat().equals( NeuronSettings.DataSaveFormat.TEXT_NC)) assert (project.simulationParameters.getTemperature() == 34) ''' sci = project.simConfigInfo cgi = project.cellGroupsInfo assert(cgi.getCellType("Channeltestgroup") == "Channeltest_Cell") assert(cgi.getCellType("CMLtestGroup") == "CMLtest_Cell") assert(cgi.getCellType("pyr_group") == "LarkumPyr") assert(cgi.getCellType("pyrCML_group") == "LarkumPyr_NML") arrayListsIdentical(sci.getSimConfig("Default Simulation Configuration").getCellGroups(), ["Channeltestgroup", "CMLtestGroup"]) arrayListsIdentical(sci.getSimConfig("test_IClamp").getCellGroups(), ["pyr_group", "pyrCML_group"]) arrayListsIdentical(sci.getSimConfig("background activity").getCellGroups(), ["pyr_group"]) ''' print "\n**************************************" print " All tests passed!" print "**************************************\n"
def testAll(argv=None): if argv is None: argv = sys.argv print "Loading project from " + projFile.getCanonicalPath() projectManager = ProjectManager() project = projectManager.loadProject(projFile) assert (len(project.getProjectDescription()) > 0) assert (len(project.cellManager.getAllCells()) >= 1) #assert(project.proj3Dproperties.getDisplayOption() == Display3DProperties.DISPLAY_SOMA_SOLID_NEURITE_LINE) assert (abs(project.simulationParameters.getDt() - 0.02) <= 1e-9) assert (abs(project.simulationParameters.getTemperature() - 6.3) < 1e-6) assert (not project.neuronSettings.isVarTimeStep()) assert (project.neuronSettings.getDataSaveFormat().equals( NeuronSettings.DataSaveFormat.TEXT_NC)) assert (project.genesisSettings.isSIUnits()) defSimConfig = project.simConfigInfo.getSimConfig( "Default Simulation Configuration") assert (str(defSimConfig.getCellGroups()) == '[SampleCellGroup]') assert (defSimConfig.getCellGroups().size() == 1) assert (defSimConfig.getInputs().size() == 1) print "\n**************************************" print " All tests passed!" print "**************************************\n"
Vervaeke2012. """ import os import random import time from java.lang import System from java.io import File from java.util import ArrayList from ucl.physiol.neuroconstruct.project import ProjectManager from ucl.physiol.neuroconstruct.neuron import NeuronFileManager from ucl.physiol.neuroconstruct.nmodleditor.processes import ProcessManager from ucl.physiol.neuroconstruct.cell.utils import CellTopologyHelper timestamp = str(time.time()) pm = ProjectManager(None, None) project_path = '../GJGolgi_ReducedMorph.ncx' project_file = File(project_path) project = pm.loadProject(project_file) sim_config_name = 'dendritic_attenuation' sim_config = project.simConfigInfo.getSimConfig(sim_config_name) project.neuronSettings.setNoConsole() n_points = 18 detailed_distance_bounds = range(10.,190.,10.) rec_segs_reduced = [0,4,5,6] dendritic_group = 'apical_dend_2' # switch off Na channels (TTX)
from java.io import File except ImportError: print "Note: this file should be run using ..\\nC.bat -python XXX.py' or './nC.sh -python XXX.py'" print "See http://www.neuroconstruct.org/docs/python.html for more details" quit() from ucl.physiol.neuroconstruct.project import ProjectManager from ucl.physiol.neuroconstruct.cell.converters import MorphMLConverter # Load an existing neuroConstruct project projFile = File("TestPython/TestPython.neuro.xml") print "Loading project from file: " + projFile.getAbsolutePath( ) + ", exists: " + str(projFile.exists()) pm = ProjectManager() myProject = pm.loadProject(projFile) print "Loaded project: " + myProject.getProjectName() morphDir = File( "../osb/showcase/neuroConstructShowcase/Ex3_Morphology/importedMorphologies/" ) morphmlFile = File(morphDir, "SimplePurkinjeCell.morph.xml") print "Going to load morphology from: " + morphmlFile.getCanonicalPath() converter = MorphMLConverter() cell = converter.loadFromMorphologyFile(morphmlFile, "NewCell") print "Loaded cell: " + cell.getInstanceName() + " with " + str( cell.getAllSegments().size()) + " segments"
def runColumnSimulation(simConfig="TempSimConfig", simDuration=100, simDt=0.025, neuroConstructSeed=1234, simulatorSeed=1234, simulators=["NEURON"], simRefPrefix="Net_", suggestedRemoteRunTime=120, defaultSynapticDelay=0.05, mpiConf=MpiSettings.LOCAL_SERIAL, scaleCortex=0.1, scaleThalamus=0, gabaScaling=1, l4ssAmpaScaling=1, l5PyrGapScaling=1, inNrtTcrNmdaScaling=1, pyrSsNmdaScaling=1, deepBiasCurrent=-1, maxElecLenFRB=0.01, maxElecLenRS=0.01, maxElecLenIN=0.01, maxElecLenSS=0.01, somaNseg=-1, varTimestepNeuron=False, verbose=True, runInBackground=False): print "Running new column simulation..." ############################################ # Full column populations numFRB = 50 # full model: 50 numRS = 1000 # full model: 1000 numSupBask = 90 # full model: 90 numSupAxAx = 90 # full model: 90 numSupLTS = 90 # full model: 90 numL4SpinStell = 240 # full model: 240 numL5TuftIB = 800 # full model: 800 numL5TuftRS = 200 # full model: 200 numDeepBask = 100 # full model: 100 numDeepAxAx = 100 # full model: 100 numDeepLTS = 100 # full model: 100 numL6NonTuftRS = 500 # full model: 500 numTCR = 100 # full model: 100 numnRT = 100 # full model: 100 ####################################### ### Load neuroConstruct project import datetime start = datetime.datetime.now() print "Loading project %s from at %s " % (projFile.getCanonicalPath(), start.strftime("%Y-%m-%d %H:%M")) pm = ProjectManager() project = pm.loadProject(projFile) ### Set duration & timestep & simulation configuration project.simulationParameters.setDt(simDt) simConfig = project.simConfigInfo.getSimConfig(simConfig) simConfig.setSimDuration(simDuration) ### Set simulation reference index = 0 simRef = "%s%i" % (simRefPrefix, index) while File("%s/simulations/%s_N" % (project.getProjectMainDirectory().getCanonicalPath(), simRef)).exists(): simRef = "%s%i" % (simRefPrefix, index) index = index + 1 project.simulationParameters.setReference(simRef) ### Change num in each cell group numFRB = int(scaleCortex * numFRB) numRS = int(scaleCortex * numRS) numSupBask = int(scaleCortex * numSupBask) numSupAxAx = int(scaleCortex * numSupAxAx) numSupLTS = int(scaleCortex * numSupLTS) numL4SpinStell = int(scaleCortex * numL4SpinStell) numL5TuftIB = int(scaleCortex * numL5TuftIB) numL5TuftRS = int(scaleCortex * numL5TuftRS) numDeepBask = int(scaleCortex * numDeepBask) numDeepAxAx = int(scaleCortex * numDeepAxAx) numDeepLTS = int(scaleCortex * numDeepLTS) numL6NonTuftRS = int(scaleCortex * numL6NonTuftRS) numTCR = int(scaleThalamus * numTCR) numnRT = int(scaleThalamus * numnRT) project.cellGroupsInfo.getCellPackingAdapter( "CG3D_L23PyrFRB").setMaxNumberCells( numFRB) # Note only works if RandomCellPackingAdapter project.cellGroupsInfo.getCellPackingAdapter( "CG3D_L23PyrRS").setMaxNumberCells(numRS) project.cellGroupsInfo.getCellPackingAdapter( "CG3D_SupBask").setMaxNumberCells(numSupBask) project.cellGroupsInfo.getCellPackingAdapter( "CG3D_SupAxAx").setMaxNumberCells(numSupAxAx) project.cellGroupsInfo.getCellPackingAdapter( "CG3D_SupLTS").setMaxNumberCells(numSupLTS) project.cellGroupsInfo.getCellPackingAdapter( "CG3D_L4SpinStell").setMaxNumberCells(numL4SpinStell) project.cellGroupsInfo.getCellPackingAdapter( "CG3D_L5TuftIB").setMaxNumberCells(numL5TuftIB) project.cellGroupsInfo.getCellPackingAdapter( "CG3D_L5TuftRS").setMaxNumberCells(numL5TuftRS) project.cellGroupsInfo.getCellPackingAdapter( "CG3D_DeepBask").setMaxNumberCells(numDeepBask) project.cellGroupsInfo.getCellPackingAdapter( "CG3D_DeepAxAx").setMaxNumberCells(numDeepAxAx) project.cellGroupsInfo.getCellPackingAdapter( "CG3D_DeepLTS").setMaxNumberCells(numDeepLTS) project.cellGroupsInfo.getCellPackingAdapter( "CG3D_L6NonTuftRS").setMaxNumberCells(numL6NonTuftRS) project.cellGroupsInfo.getCellPackingAdapter("CG3D_TCR").setMaxNumberCells( numTCR) project.cellGroupsInfo.getCellPackingAdapter("CG3D_nRT").setMaxNumberCells( numnRT) ### Change weights in synapses/gap junctions for netConnName in simConfig.getNetConns(): if gabaScaling != 1: SimulationsInfo.addExtraSimProperty("gabaWeightScaling", str(gabaScaling)) synList = project.morphNetworkConnectionsInfo.getSynapseList( netConnName) for index in range(0, len(synList)): synName = project.morphNetworkConnectionsInfo.getSynapseList( netConnName).get(index).getSynapseType() if synName.count("GABAA") > 0: print "Changing synaptic weight for syn %s in net conn %s by factor %f" % ( synName, netConnName, gabaScaling) project.morphNetworkConnectionsInfo.getSynapseList( netConnName).get(index).setWeightsGenerator( NumberGenerator(gabaScaling)) if l4ssAmpaScaling != 1: SimulationsInfo.addExtraSimProperty("l4ssAmpaScaling", str(l4ssAmpaScaling)) synList = project.morphNetworkConnectionsInfo.getSynapseList( netConnName) for index in range(0, len(synList)): synName = project.morphNetworkConnectionsInfo.getSynapseList( netConnName).get(index).getSynapseType() if synName.count("Syn_AMPA_L4SS_L4SS") > 0: print "Changing synaptic weight for syn %s in net conn %s by factor %f" % ( synName, netConnName, l4ssAmpaScaling) project.morphNetworkConnectionsInfo.getSynapseList( netConnName).get(index).setWeightsGenerator( NumberGenerator(l4ssAmpaScaling)) if l5PyrGapScaling != 1: SimulationsInfo.addExtraSimProperty("l5PyrGapScaling", str(l5PyrGapScaling)) synList = project.morphNetworkConnectionsInfo.getSynapseList( netConnName) for index in range(0, len(synList)): synName = project.morphNetworkConnectionsInfo.getSynapseList( netConnName).get(index).getSynapseType() tgtCG = project.morphNetworkConnectionsInfo.getTargetCellGroup( netConnName) if synName.count("Syn_Elect_DeepPyr_DeepPyr" ) > 0 and tgtCG.count("CG3D_L5") > 0: print "Changing synaptic weight for syn %s in net conn %s by factor %f" % ( synName, netConnName, l5PyrGapScaling) project.morphNetworkConnectionsInfo.getSynapseList( netConnName).get(index).setWeightsGenerator( NumberGenerator(l5PyrGapScaling)) if inNrtTcrNmdaScaling != 1: SimulationsInfo.addExtraSimProperty("inNrtTcrNmdaScaling", str(inNrtTcrNmdaScaling)) synList = project.morphNetworkConnectionsInfo.getSynapseList( netConnName) for index in range(0, len(synList)): synName = project.morphNetworkConnectionsInfo.getSynapseList( netConnName).get(index).getSynapseType() if synName.count("NMDA") > 0 and ( synName.endswith("_IN") > 0 or synName.endswith("_DeepIN") > 0 or synName.endswith("_SupIN") > 0 or synName.endswith("_SupFS") > 0 or synName.endswith("_DeepFS") > 0 or synName.endswith("_SupLTS") > 0 or synName.endswith("_DeepLTS") > 0 or synName.endswith("_nRT") > 0 or synName.endswith("_TCR") > 0): print "Changing synaptic weight for syn %s in net conn %s by factor %f" % ( synName, netConnName, inNrtTcrNmdaScaling) project.morphNetworkConnectionsInfo.getSynapseList( netConnName).get(index).setWeightsGenerator( NumberGenerator(inNrtTcrNmdaScaling)) if pyrSsNmdaScaling != 1: SimulationsInfo.addExtraSimProperty("pyrSsNmdaScaling", str(pyrSsNmdaScaling)) synList = project.morphNetworkConnectionsInfo.getSynapseList( netConnName) for index in range(0, len(synList)): synName = project.morphNetworkConnectionsInfo.getSynapseList( netConnName).get(index).getSynapseType() if synName.count("NMDA") > 0 and ( synName.endswith("_SupPyr") > 0 or synName.endswith("_DeepPyr") > 0 or synName.endswith("_L4SS") > 0 or synName.endswith("_L5Pyr") > 0 or synName.endswith("_L5RS") > 0 or synName.endswith("_L5IB") > 0 or synName.endswith("_L6NT") > 0 or synName.endswith("_Pyr") > 0): print "Changing synaptic weight for syn %s in net conn %s by factor %f" % ( synName, netConnName, pyrSsNmdaScaling) project.morphNetworkConnectionsInfo.getSynapseList( netConnName).get(index).setWeightsGenerator( NumberGenerator(pyrSsNmdaScaling)) ### Change bias currents for inputName in simConfig.getInputs(): stim = project.elecInputInfo.getStim(inputName) if deepBiasCurrent >= 0: if stim.getElectricalInput().TYPE == "IClamp" and ( stim.getCellGroup() == "CG3D_L5TuftIB" or stim.getCellGroup() == "CG3D_L5TuftRS" or stim.getCellGroup() == "CG3D_L6NonTuftRS"): print "Changing offset current in %s to %f" % ( stim.getCellGroup(), deepBiasCurrent) stim.setAmp(NumberGenerator(deepBiasCurrent)) project.elecInputInfo.updateStim(stim) ### Change spatial discretisation of some cells. This will impact accuracy & simulation speed if maxElecLenFRB > 0: frbCell = project.cellManager.getCell("L23PyrFRB_varInit") info = CellTopologyHelper.recompartmentaliseCell( frbCell, maxElecLenFRB, project) print "Recompartmentalised FRB cell: " + info if somaNseg > 0: frbCell.getSegmentWithId( 0).getSection().setNumberInternalDivisions(somaNseg) if maxElecLenRS > 0: rsCell = project.cellManager.getCell("L23PyrRS") info = CellTopologyHelper.recompartmentaliseCell( rsCell, maxElecLenRS, project) print "Recompartmentalised RS cell: " + info if somaNseg > 0: rsCell.getSegmentWithId(0).getSection().setNumberInternalDivisions( somaNseg) if maxElecLenIN > 0: inCells = [ "SupBasket", "SupAxAx", "SupLTSInter", "DeepBasket", "DeepAxAx", "DeepLTSInter" ] for inCellName in inCells: inCell = project.cellManager.getCell(inCellName) info = CellTopologyHelper.recompartmentaliseCell( inCell, maxElecLenIN, project) print "Recompartmentalised " + inCellName + " cell: " + info if somaNseg > 0: inCell.getSegmentWithId( 0).getSection().setNumberInternalDivisions(somaNseg) ### Change parallel configuration mpiSettings = MpiSettings() simConfig.setMpiConf(mpiSettings.getMpiConfiguration(mpiConf)) print "Parallel configuration: " + str(simConfig.getMpiConf()) if suggestedRemoteRunTime > 0: project.neuronFileManager.setSuggestedRemoteRunTime( suggestedRemoteRunTime) project.genesisFileManager.setSuggestedRemoteRunTime( suggestedRemoteRunTime) ### Change synaptic delay associated with each net conn for netConnName in simConfig.getNetConns(): if netConnName.count("gap") == 0: print "Changing synaptic delay in %s to %f" % ( netConnName, defaultSynapticDelay) delayGen = NumberGenerator(defaultSynapticDelay) for synProps in project.morphNetworkConnectionsInfo.getSynapseList( netConnName): synProps.setDelayGenerator(delayGen) # defaultSynapticDelay will be recorded in simulation.props and listed in SimulationBrowser GUI SimulationsInfo.addExtraSimProperty("defaultSynapticDelay", str(defaultSynapticDelay)) ### Generate network structure in neuroConstruct pm.doGenerate(simConfig.getName(), neuroConstructSeed) while pm.isGenerating(): print "Waiting for the project to be generated with Simulation Configuration: " + str( simConfig) sleep(2) print "Generated %i cells in %i cell groups" % ( project.generatedCellPositions.getNumberInAllCellGroups(), project.generatedCellPositions.getNumberNonEmptyCellGroups()) print "Generated %i instances in %i network connections" % ( project.generatedNetworkConnections.getNumAllSynConns(), project.generatedNetworkConnections.getNumNonEmptyNetConns()) print "Generated %i instances in %i elect inputs" % ( project.generatedElecInputs.getNumberSingleInputs(), project.generatedElecInputs.getNonEmptyInputRefs().size()) if simulators.count("NEURON") > 0: simRefN = simRef + "_N" project.simulationParameters.setReference(simRefN) nc.generateAndRunNeuron(project, pm, simConfig, simRefN, simulatorSeed, verbose=verbose, runInBackground=runInBackground, varTimestep=varTimestepNeuron) sleep(2) # wait a while before running GENESIS... if simulators.count("GENESIS") > 0: simRefG = simRef + "_G" project.simulationParameters.setReference(simRefG) nc.generateAndRunGenesis(project, pm, simConfig, simRefG, simulatorSeed, verbose=verbose, runInBackground=runInBackground) sleep(2) # wait a while before running MOOSE... if simulators.count("MOOSE") > 0: simRefM = simRef + "_M" project.simulationParameters.setReference(simRefM) nc.generateAndRunMoose(project, pm, simConfig, simRefM, simulatorSeed, verbose=verbose, runInBackground=runInBackground) sleep(2) # wait a while before running GENESIS... print "Finished running all sims, shutting down..." stop = datetime.datetime.now() print print "Started: %s, finished: %s" % (start.strftime("%Y-%m-%d %H:%M"), stop.strftime("%Y-%m-%d %H:%M")) print
def testAll(argv=None): if argv is None: argv = sys.argv # Load an existing neuroConstruct project projFile = File("../CElegans.ncx") print "Loading project from file: " + projFile.getAbsolutePath()+", exists: "+ str(projFile.exists()) pm = ProjectManager() project = pm.loadProject(projFile) print "Loaded project: " + project.getProjectName() defSimConfig = project.simConfigInfo.getDefaultSimConfig() cellsOnlySimConfig = project.simConfigInfo.getSimConfig("CellsOnly") pharyngealSimConfig = project.simConfigInfo.getSimConfig("PharyngealNeurons") mdl08SimConfig = project.simConfigInfo.getSimConfig("MDL08Connections") expectedNumberCells = 302 ########################## print "\n----- Test 1: Check number of cells in sim config "+defSimConfig.getName()+"..." pm.doGenerate(defSimConfig.getName(), 1234) while pm.isGenerating(): print "Waiting for the project to be generated with Simulation Configuration: "+str(defSimConfig) sleep(2) numGenerated = project.generatedCellPositions.getNumberInAllCellGroups() print "Number of cells generated: " + str(numGenerated) assert numGenerated == expectedNumberCells print "Correct number of cells generated!" ########################## print "\n---- Test 2: number of cells in sim config "+cellsOnlySimConfig.getName()+"..." pm.doGenerate(cellsOnlySimConfig.getName(), 1234) while pm.isGenerating(): print "Waiting for the project to be generated with Simulation Configuration: "+str(cellsOnlySimConfig) sleep(2) numGenerated = project.generatedCellPositions.getNumberInAllCellGroups() print "Number of cells generated: " + str(numGenerated) assert numGenerated == expectedNumberCells print "Correct number of cells generated!" ########################## filename = "../../CElegansNeuronTables.xls" print "\n---- Test 3: confirm settings in project match those in "+filename+"..." from xlrd import open_workbook rb = open_workbook(filename) print "Opened Excel file: "+ filename confirmed = 0 prefix = "NCXLS_" for row in range(1,rb.sheet_by_index(0).nrows): pre = rb.sheet_by_index(0).cell(row,0).value post = rb.sheet_by_index(0).cell(row,1).value syntype = rb.sheet_by_index(0).cell(row,2).value num = int(rb.sheet_by_index(0).cell(row,3).value) synclass = rb.sheet_by_index(0).cell(row,4).value #print "------------------------------------------\nConnection %i has %i from %s to %s (type: %s, synapse: %s)" %(row, num, pre, post, syntype, synclass) netConnName = prefix+pre+"_"+post if "GapJunction" in syntype: netConnName = netConnName + "_GJ" src = project.morphNetworkConnectionsInfo.getSourceCellGroup(netConnName) tgt = project.morphNetworkConnectionsInfo.getTargetCellGroup(netConnName) synlist = project.morphNetworkConnectionsInfo.getSynapseList(netConnName) #print synlist assert synclass == synlist[0].getSynapseType() if '_GJ' in synclass and synclass != 'Generic_GJ': print "Only allowed gap junction synapse is Generic_GJ, not "+synclass assert synclass == 'Generic_GJ' if not (src == pre and tgt == post): print "------------------------------------------\nConnection %i has %i from %s to %s (type: %s, synapse: %s)" %(row, num, pre, post, syntype, synclass) print "*** Couldn't find connection: %s, src: %s, tgt: %s"%(netConnName, src, tgt) assert src == pre assert tgt == post if src == tgt: print "------------------------------------------\nConnection %i has %i from %s to %s (type: %s, synapse: %s)" %(row, num, pre, post, syntype, synclass) print "*** This connection is from: %s, src: %s, tgt: %s, synaptic connection on same cell!!"%(netConnName, src, tgt) confirmed += 1 print "Confirmed %i connections in project match spreadsheet"%confirmed havePrefix = 0 allNetConnNames = project.morphNetworkConnectionsInfo.getAllSimpleNetConnNames() for name in allNetConnNames: if name.startswith(prefix): havePrefix +=1 print "Project contains %i Network connections starting with %s"%(havePrefix, prefix) assert havePrefix == confirmed ########################## print "\n---- Test 4: number of cells in sim config "+pharyngealSimConfig.getName()+"..." pm.doGenerate(pharyngealSimConfig.getName(), 1234471) while pm.isGenerating(): print "Waiting for the project to be generated with Simulation Configuration: "+str(pharyngealSimConfig) sleep(2) numCells = project.generatedCellPositions.getNumberInAllCellGroups() numConns = project.generatedNetworkConnections.getNumAllSynConns() print "Number of cells: %i, number of connections: %i"%(numCells,numConns) expectedCells = 20 expectedNetConns = 269 assert numCells == expectedCells assert numConns == expectedNetConns print "Correct number of cells & connections generated!" ########################## print "\n---- Test 5: number of cells in sim config "+mdl08SimConfig.getName()+"..." pm.doGenerate(mdl08SimConfig.getName(), 1234471) while pm.isGenerating(): print "Waiting for the project to be generated with Simulation Configuration: "+str(mdl08SimConfig) sleep(2) numCells = project.generatedCellPositions.getNumberInAllCellGroups() numConns = project.generatedNetworkConnections.getNumAllSynConns() print "Number of cells: %i, number of connections: %i"%(numCells,numConns) expectedCells = 9 expectedNetConns = 21 assert numCells == expectedCells assert numConns == expectedNetConns print "Correct number of cells & connections generated!" ########################## print "\n---- Test 6: General neuroConstruct project settings..." assert(project.proj3Dproperties.getDisplayOption() == Display3DProperties.DISPLAY_SOMA_NEURITE_SOLID) assert(abs(project.simulationParameters.getDt()-0.025)<=1e-9) assert(not project.neuronSettings.isVarTimeStep()) assert(project.neuronSettings.getDataSaveFormat().equals(NeuronSettings.DataSaveFormat.TEXT_NC)) assert(abs(project.simulationParameters.getTemperature() - 20.0) < 1e-6) ########################## print "\n------------------------------------------All tests completed!\n" exit()
def SingleCellNML2generator(projString=" ", ConfigDict={}, ElecLenList=[], somaNseg=None, savingDir=None): projFile = File(os.getcwd(), projString) pm = ProjectManager() compSummary = {} for config in ConfigDict.keys(): project = pm.loadProject(projFile) nmlfm = NeuroMLFileManager(project) compSummary[config] = {} if " " in config: configPath = config.replace(" ", "_") else: configPath = config for maxElecLen in ElecLenList: compSummary[config][str(maxElecLen)] = {} cell = project.cellManager.getCell(ConfigDict[config]) if maxElecLen > 0: info = CellTopologyHelper.recompartmentaliseCell( cell, maxElecLen, project) print "Recompartmentalising cell %s" % ConfigDict[config] if somaNseg != None: cell.getSegmentWithId( 0).getSection().setNumberInternalDivisions(somaNseg) if savingDir != None: cellpath = r'../../NeuroML2/%s/%s/%s_%f' % ( savingDir, configPath, configPath, maxElecLen) else: cellpath = r'../../NeuroML2/%s/%s_%f' % ( configPath, configPath, maxElecLen) else: if savingDir != None: cellpath = r'../../NeuroML2/%s/%s/%s_default' % ( savingDir, configPath, configPath) else: cellpath = r'../../NeuroML2/%s/%s_default' % (configPath, configPath) summary = str(cell.getMorphSummary()) summary_string = summary.split("_") for feature in summary_string: feature_split = feature.split(":") compSummary[config][str(maxElecLen)][ feature_split[0]] = feature_split[1] # the format of summary : Segs:122_Secs:61_IntDivs:1458 print("Will be printing a cell morphology summary") print compSummary[config][str(maxElecLen)] ######### it turns out that this does not save recompartmentalized cells - all saved cells have identical spatial discretization; ##### generateNeuroML2 receives the parent projFile but not the loaded project which is modified by the CellTopologyHelper.recompartmentaliseCell() ##################### neuroConstruct block ############################################################################# neuroConstructSeed = 1234 verbose = True pm.doGenerate(config, neuroConstructSeed) while pm.isGenerating(): if verbose: print( "Waiting for the project to be generated with Simulation Configuration: " + config) time.sleep(5) simConfig = project.simConfigInfo.getSimConfig(config) seed = 1234 genDir = File(projFile.getParentFile(), "generatedNeuroML2") nmlfm.generateNeuroMLFiles( simConfig, NeuroMLConstants.NeuroMLVersion.getLatestVersion(), LemsConstants.LemsOption.LEMS_WITHOUT_EXECUTE_MODEL, OriginalCompartmentalisation(), seed, False, True, genDir, "GENESIS Physiological Units", False) ######################################################################################################################## if not os.path.exists(cellpath): print("Creating a new directory %s" % cellpath) os.makedirs(cellpath) else: print("A directory %s already exists" % cellpath) src_files = os.listdir("../generatedNeuroML2/") for file_name in src_files: full_file_name = os.path.join("../generatedNeuroML2/", file_name) if (os.path.isfile(full_file_name)): print("Moving generated NeuroML2 to files to %s" % cellpath) shutil.copy(full_file_name, cellpath) #with open("compSummary.json",'w') as fout: #json.dump(compSummary, fout) subprocess.call(["~/neuroConstruct/nC.sh -python RegenerateNml2.py -f"], shell=True) #subprocess.call(["cp compSummary.json ~/Thalamocortical/NeuroML2/"],shell=True) quit()
def testAll(argv=None): if argv is None: argv = sys.argv print "Loading project from " + projFile.getCanonicalPath() projectManager = ProjectManager() project = projectManager.loadProject(projFile) assert (len(project.getProjectDescription()) > 0) assert (len(project.cellManager.getAllCells()) >= 22) assert (len(project.cellGroupsInfo.getAllCellGroupNames()) >= 36) synSetupFile = open("netbuild/makeSyns.sh", 'r') for line in synSetupFile: line = line.strip() if len(line) > 0 and not line.startswith("#"): words = line.split() if len(words) >= 6 and words[2].startswith("Syn_"): synName = words[2] syn_dir = "../cellMechanisms/%s" % synName if os.path.isdir(syn_dir): cm = project.cellMechanismInfo.getCellMechanism(synName) print "Checked syn %s" % cm.getInstanceName() else: print("Problem finding directory: %s!! This is probably due to the synapses not having been generated \n"%syn_dir+ \ "from netbuild/makeSyns.sh (they need to be generated loacally; too many to commit to repository)") netConnList = open("netbuild/netConnList", 'r') for line in netConnList: line = line.strip() if len(line) > 0 and not line.startswith("#"): #print "\n\n---- Deciphering line: "+ line words = line.split() source = words[0] target = words[1] syns = words[2].strip("[]").split(",") netConnName = "NC3D_" + source[5:] + "_" + target[5:] assert (source == project.morphNetworkConnectionsInfo. getSourceCellGroup(netConnName)) assert (target == project.morphNetworkConnectionsInfo. getTargetCellGroup(netConnName)) print "Checked %s" % netConnName assert (project.proj3Dproperties.getDisplayOption() == Display3DProperties.DISPLAY_SOMA_SOLID_NEURITE_LINE) assert (abs(project.simulationParameters.getDt() - 0.025) <= 1e-9) assert (not project.neuronSettings.isVarTimeStep()) assert (project.neuronSettings.isForceCorrectInit()) assert (project.neuronSettings.getDataSaveFormat().equals( NeuronSettings.DataSaveFormat.TEXT_NC)) assert (not project.genesisSettings.isSymmetricCompartments()) assert (project.genesisSettings.isPhysiologicalUnits()) print "\n**************************************" print " All tests passed!" print "**************************************\n"