本文整理汇总了Python中ucl.physiol.neuroconstruct.project.ProjectManager.loadProject方法的典型用法代码示例。如果您正苦于以下问题:Python ProjectManager.loadProject方法的具体用法?Python ProjectManager.loadProject怎么用?Python ProjectManager.loadProject使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ucl.physiol.neuroconstruct.project.ProjectManager
的用法示例。
在下文中一共展示了ProjectManager.loadProject方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: testAll
# 需要导入模块: from ucl.physiol.neuroconstruct.project import ProjectManager [as 别名]
# 或者: from ucl.physiol.neuroconstruct.project.ProjectManager import loadProject [as 别名]
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.005)<=1e-9)
assert(abs(project.simulationParameters.getTemperature() - 10) < 1e-6)
assert(not project.neuronSettings.isVarTimeStep())
assert(project.neuronSettings.getDataSaveFormat().equals(NeuronSettings.DataSaveFormat.TEXT_NC))
#assert(project.genesisSettings.isSymmetricCompartments())
assert(project.genesisSettings.isSIUnits())
print "\n**************************************"
print " All tests passed!"
print "**************************************\n"
示例2: load_project
# 需要导入模块: from ucl.physiol.neuroconstruct.project import ProjectManager [as 别名]
# 或者: from ucl.physiol.neuroconstruct.project.ProjectManager import loadProject [as 别名]
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
示例3: testAll
# 需要导入模块: from ucl.physiol.neuroconstruct.project import ProjectManager [as 别名]
# 或者: from ucl.physiol.neuroconstruct.project.ProjectManager import loadProject [as 别名]
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()- 6.3<=1e-6)
defSimConfig = project.simConfigInfo.getSimConfig("Default Simulation Configuration")
assert(str(defSimConfig.getCellGroups())=='[CellGroup_1]')
assert(project.cellGroupsInfo.getCellType("CellGroup_1")=='L5PC')
print "\n**************************************"
print " All tests passed!"
print "**************************************\n"
示例4: testAll
# 需要导入模块: from ucl.physiol.neuroconstruct.project import ProjectManager [as 别名]
# 或者: from ucl.physiol.neuroconstruct.project.ProjectManager import loadProject [as 别名]
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()) >= 6
assert project.proj3Dproperties.getDisplayOption() == Display3DProperties.DISPLAY_SOMA_SOLID_NEURITE_LINE
assert project.simulationParameters.getDt() - 0.025 <= 1e-6
assert not 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"
示例5: testAll
# 需要导入模块: from ucl.physiol.neuroconstruct.project import ProjectManager [as 别名]
# 或者: from ucl.physiol.neuroconstruct.project.ProjectManager import loadProject [as 别名]
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"
示例6: testAll
# 需要导入模块: from ucl.physiol.neuroconstruct.project import ProjectManager [as 别名]
# 或者: from ucl.physiol.neuroconstruct.project.ProjectManager import loadProject [as 别名]
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"
示例7: testAll
# 需要导入模块: from ucl.physiol.neuroconstruct.project import ProjectManager [as 别名]
# 或者: from ucl.physiol.neuroconstruct.project.ProjectManager import loadProject [as 别名]
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"
示例8: runColumnSimulation
# 需要导入模块: from ucl.physiol.neuroconstruct.project import ProjectManager [as 别名]
# 或者: from ucl.physiol.neuroconstruct.project.ProjectManager import loadProject [as 别名]
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)
#.........这里部分代码省略.........
示例9: make_fF_Curve
# 需要导入模块: from ucl.physiol.neuroconstruct.project import ProjectManager [as 别名]
# 或者: from ucl.physiol.neuroconstruct.project.ProjectManager import loadProject [as 别名]
def make_fF_Curve(self,
projFile,
simulator,
simConfig,
nTrains,
simDuration,
analyseStartTime, analyseStopTime,
analyseThreshold,
maxNumSimultaneousSims = 4):
# Load neuroConstruct project
print "Loading project from file: " + projFile.getAbsolutePath()+", exists: "+ str(projFile.exists())
pm = ProjectManager()
self.myProject = pm.loadProject(projFile)
self.simulator = simulator
simConfig = self.myProject.simConfigInfo.getSimConfig(simConfig)
simConfig.setSimDuration(simDuration)
pm.doGenerate(simConfig.getName(), self.neuroConstructSeed)
while pm.isGenerating():
print "Waiting for the project to be generated with Simulation Configuration: "+str(simConfig)
time.sleep(2)
numGenerated = self.myProject.generatedCellPositions.getNumberInAllCellGroups()
print "Number of cells generated: " + str(numGenerated)
simReferences = {}
if numGenerated > 0:
print "Generating scripts for simulator: %s..."%simulator
if simulator == 'NEURON':
self.myProject.neuronFileManager.setQuitAfterRun(1) # Remove this line to leave the NEURON sim windows open after finishing
self.myProject.neuronSettings.setCopySimFiles(1) # 1 copies hoc/mod files to PySim_0 etc. and will allow multiple sims to run at once
self.myProject.neuronSettings.setGraphicsMode(0) # 0 hides graphs during execution
if simulator == 'GENESIS':
self.myProject.genesisFileManager.setQuitAfterRun(1) # Remove this line to leave the NEURON sim windows open after finishing
self.myProject.genesisSettings.setCopySimFiles(1) # 1 copies hoc/mod files to PySim_0 etc. and will allow multiple sims to run at once
self.myProject.genesisSettings.setGraphicsMode(0) # 0 hides graphs during execution
currentTrain = 0
ADD_TO_START_FINITIALIZE = self.myProject.neuronSettings.getNativeBlock(NativeCodeLocation.START_FINITIALIZE)
ADD_TO_RECORD_I = self.myProject.neuronSettings.getNativeBlock(NativeCodeLocation.AFTER_SIMULATION)
while currentTrain <= nTrains:
while (len(self.simsRunning)>=maxNumSimultaneousSims):
print "Sims currently running: "+str(self.simsRunning)
print "Waiting..."
time.sleep(3) # wait a while...
self.updateSimsRunning()
simRef = "PySim_"+str(currentTrain)
print "Going to run simulation: "+simRef
######## Adjusting the amplitude of the Voltage clamp ###############
TEXT_BEFORE_CREATION = """objref vector, gTrainFile\n""" + "objectvar clamp\n"
### TEXT_BEFORE_INIT = "GranuleCell_mod_tonic[0].Soma {\n" + "clampobj = new VClamp(0.5)\n" + "clampobj.dur[0] = " + str(stimDur) + "\n" + "clampobj.amp[0] = " + str(stimAmp) + "\n" + "}\n" # This should do the trick
TEXT_START_FINITIALIZE = "\n" + "gTrainFile = new File() \n" + "vector = new Vector(100000) \n" + "access GranuleCell_mod_tonic[0].Soma \n" + "clamp = new SEClamp(0.5) \n" + "clamp.amp1 = 0 \n" + "clamp.dur1 = 1e9 \n" + """gTrainFile.ropen("E:/neuroConstruct/models/Dan_GranCell/gTrains_nS/gAMPA_""" + str(currentTrain) + """.txt") \n""" + "vector.scanf(gTrainFile) \n" + "gTrainFile.close \n" + "for i = 0, vector.size() -1 { \n" + " if (vector.x[i] <= 0) { \n" + " vector.x[i] = 1e-20 \n" + " } \n" + " } \n" + "for i = 0, vector.size() -1 { \n" + " vector.x[i] = ( 1 / vector.x[i] ) * 1000 \n" + " } \n" + "vector.play(&clamp.rs, 0.03) \n" # This
TEXT_START_FINITIALIZE = TEXT_START_FINITIALIZE + ADD_TO_START_FINITIALIZE
TEXT_TO_RECORD_I = """// currently not used \n"""
TEXT_TO_RECORD_I = TEXT_TO_RECORD_I + ADD_TO_RECORD_I
self.myProject.neuronSettings.setNativeBlock(NativeCodeLocation.BEFORE_CELL_CREATION, TEXT_BEFORE_CREATION)
self.myProject.neuronSettings.setNativeBlock(NativeCodeLocation.START_FINITIALIZE, TEXT_START_FINITIALIZE)
self.myProject.neuronSettings.setNativeBlock(NativeCodeLocation.AFTER_SIMULATION, TEXT_TO_RECORD_I)
print "Next Train: "+ str(currentTrain)
self.myProject.simulationParameters.setReference(simRef)
if simulator == "NEURON":
self.myProject.neuronFileManager.generateTheNeuronFiles(simConfig,
None,
NeuronFileManager.RUN_HOC,
self.simulatorSeed)
print "Generated NEURON files for: "+simRef
compileProcess = ProcessManager(self.myProject.neuronFileManager.getMainHocFile())
#.........这里部分代码省略.........
示例10: quit
# 需要导入模块: from ucl.physiol.neuroconstruct.project import ProjectManager [as 别名]
# 或者: from ucl.physiol.neuroconstruct.project.ProjectManager import loadProject [as 别名]
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.project import SimConfig
from math import *
from random import *
# 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()
##########################
newSimConfig = "MDL08Connections"
newSimConfigDesc = "Generates a subset of the CElegans neural system consisting of the MDL08 muscle and motor neurons which connect to it. See https://github.com/openworm/OpenWorm/issues/53"
cells = ["AS1", "AS2", "DA1", "DA2", "DB1", "DD1", "SMDDL", "SMDDR", "MDL08"]
##########################
simConfig = SimConfig(newSimConfig, newSimConfigDesc)
for cell in cells:
示例11: MultiSim
# 需要导入模块: from ucl.physiol.neuroconstruct.project import ProjectManager [as 别名]
# 或者: from ucl.physiol.neuroconstruct.project.ProjectManager import loadProject [as 别名]
class MultiSim(object):
pconf = None
logger = None
proj_path = None
pm = None
myProject = None
simConfig = None
stimulation = None
cellName = None
simulatorSeed = None
numGenerated = 0
maxNumSimultaneousSims = 1
simsRunning = []
# A value of 0 or lower deactivates timeout.
sim_timeout = 0
def __init__(self, pconf):
configDict = pconf.parse_project_data()
self.pconf = pconf
self.logger = pconf.get_logger("neurosim")
self.proj_path = self.pconf.local_path(configDict["proj_path"])
self.pm = ProjectManager()
projFile = File(self.proj_path)
self.sim_timeout = self.pconf.get_float("sim_timeout", "Simulation")
self.myProject = self.pm.loadProject(projFile)
self.simConfig = self.myProject.simConfigInfo.getSimConfig(self.pconf.get("sim_config", "Simulation"))
#-----------------------------------------------------------
def generate(self):
neuroConstructSeed = int(self.pconf.get("neuroConstructSeed", "NeuroConstruct"))
self.stimulation = self.pconf.get("stimulation", "Simulation")
self.cellName = self.pconf.get("cell", "Simulation")
self.simulatorSeed = int(self.pconf.get("simulatorSeed", "NeuroConstruct"))
self.pm.doGenerate(self.simConfig.getName(), neuroConstructSeed)
self.logger.debug("Waiting for the project to be generated...")
t = 0.0
startTime = time.time()
while self.pm.isGenerating():
self.logger.debug("Waiting...")
time.sleep(0.050)
t += 0.050
if t > 5.0:
self.logger.debug("Waiting...")
t = 0.0
if self.sim_timeout > 0 and (time.time() - startTime) > self.sim_timeout:
self.logger.error("Project data could not be created due to timeout.")
raise SimTimeoutError(self.sim_timeout, "Simulation timeout occured during project generation.")
self.numGenerated = self.myProject.generatedCellPositions.getNumberInAllCellGroups()
self.logger.debug("Number of cells generated: " + str(self.numGenerated))
if self.numGenerated > 0:
self.logger.info("Generating NEURON scripts...")
self.myProject.neuronSettings.setCopySimFiles(1) # 1 copies hoc/mod files to PySim_0 etc. and will allow multiple sims to run at once
# hier kann man entscheiden, ob Bilder angezeigt werden sollen oder nicht:
# ist ersteres auskommentiert, werden Bilder angezeigt und bei Einkommentierung des Zweiten auch automatisch wieder geschlossen
self.myProject.neuronSettings.setNoConsole()
max_sim_threads = self.pconf.get("maxSimThreads")
if max_sim_threads == "auto":
self.maxNumSimultaneousSims = available_cpu_count()
else:
self.maxNumSimultaneousSims = max(1, int(max_sim_threads))
#-----------------------------------------------------------
def run(self, prefix, dataList):
"""Runs all simulations defined by dataList for the loaded project.
Each sim will be named (prefix + i) and dataList contains a
dict with at least "densities", "channels" and "locations" keys.
"""
try:
for i in range(len(dataList)):
self.waitForSimsRunning(self.maxNumSimultaneousSims - 1)
if not self.runSim(i, prefix, dataList[i]):
sys.exit(0)
self.waitForSimsRunning(0)
self.logger.info("Finished running " + str(len(dataList)) + " simulations for project " + self.proj_path)
return
except (KeyboardInterrupt, SystemExit):
raise
except SimTimeoutError, e:
self.logger.warning("Timeout occured: " + e.msg)
sys.exit(10)
示例12: generateF_ICurve
# 需要导入模块: from ucl.physiol.neuroconstruct.project import ProjectManager [as 别名]
# 或者: from ucl.physiol.neuroconstruct.project.ProjectManager import loadProject [as 别名]
def generateF_ICurve(self,
projFile,
simulator,
simConfig,
preStimAmp, preStimDel, preStimDur,
stimAmpLow, stimAmpInc, stimAmpHigh,
stimDel, stimDur,
simDuration,
analyseStartTime, analyseStopTime,
analyseThreshold,
maxNumSimultaneousSims = 4):
# Load neuroConstruct project
print "Loading project from file: " + projFile.getAbsolutePath()+", exists: "+ str(projFile.exists())
pm = ProjectManager()
self.myProject = pm.loadProject(projFile)
self.simulator = simulator
simConfig = self.myProject.simConfigInfo.getSimConfig(simConfig)
simConfig.setSimDuration(simDuration)
pm.doGenerate(simConfig.getName(), self.neuroConstructSeed)
while pm.isGenerating():
print "Waiting for the project to be generated with Simulation Configuration: "+str(simConfig)
time.sleep(2)
numGenerated = self.myProject.generatedCellPositions.getNumberInAllCellGroups()
print "Number of cells generated: " + str(numGenerated)
simReferences = {}
if numGenerated > 0:
print "Generating scripts for simulator: %s..."%simulator
if simulator == 'NEURON':
self.myProject.neuronFileManager.setQuitAfterRun(1) # Remove this line to leave the NEURON sim windows open after finishing
self.myProject.neuronSettings.setCopySimFiles(1) # 1 copies hoc/mod files to PySim_0 etc. and will allow multiple sims to run at once
self.myProject.neuronSettings.setGraphicsMode(0) # 0 hides graphs during execution
if simulator == 'GENESIS':
self.myProject.genesisFileManager.setQuitAfterRun(1) # Remove this line to leave the NEURON sim windows open after finishing
self.myProject.genesisSettings.setCopySimFiles(1) # 1 copies hoc/mod files to PySim_0 etc. and will allow multiple sims to run at once
self.myProject.genesisSettings.setGraphicsMode(0) # 0 hides graphs during execution
stimAmp = stimAmpLow
while stimAmp <= stimAmpHigh:
while (len(self.simsRunning)>=maxNumSimultaneousSims):
print "Sims currently running: "+str(self.simsRunning)
print "Waiting..."
time.sleep(3) # wait a while...
self.updateSimsRunning()
simRef = "PySim_"+str(float(stimAmp))
print "Going to run simulation: "+simRef
######## Adjusting the amplitude of the current clamp ###############
# preStim = self.myProject.elecInputInfo.getStim(simConfig.getInputs().get(0))
preStim = self.myProject.elecInputInfo.getStim("Input_3")
preStim.setAmp(NumberGenerator(preStimAmp))
preStim.setDel(NumberGenerator(preStimDel))
preStim.setDur(NumberGenerator(preStimDur))
self.myProject.elecInputInfo.updateStim(preStim)
# stim = self.myProject.elecInputInfo.getStim(simConfig.getInputs().get(1))
stim = self.myProject.elecInputInfo.getStim("Input_4")
stim.setAmp(NumberGenerator(stimAmp))
stim.setDel(NumberGenerator(stimDel))
stim.setDur(NumberGenerator(stimDur))
self.myProject.elecInputInfo.updateStim(stim)
print "Next stim: "+ str(stim)
self.myProject.simulationParameters.setReference(simRef)
if simulator == "NEURON":
self.myProject.neuronFileManager.generateTheNeuronFiles(simConfig,
None,
NeuronFileManager.RUN_HOC,
self.simulatorSeed)
print "Generated NEURON files for: "+simRef
compileProcess = ProcessManager(self.myProject.neuronFileManager.getMainHocFile())
#.........这里部分代码省略.........
示例13: SingleCellNML2generator
# 需要导入模块: from ucl.physiol.neuroconstruct.project import ProjectManager [as 别名]
# 或者: from ucl.physiol.neuroconstruct.project.ProjectManager import loadProject [as 别名]
def SingleCellNML2generator(projString=" ",ConfigDict={},ElecLenList=[],somaNseg=None,savingDir=None,shell=None):
projFile=File(os.getcwd(),projString)
pm=ProjectManager()
for config in ConfigDict.keys():
project=pm.loadProject(projFile)
nmlfm = NeuroMLFileManager(project)
compSummary={}
compSummary[config]={}
if " " in config:
configPath=config.replace(" ","_")
else:
configPath=config
if savingDir !=None:
full_path_to_config=r'../%s/%s'%(savingDir,configPath)
else:
full_path_to_config=r'../%s'%(configPath)
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'../%s/%s/%s_%f'%(savingDir,configPath,configPath,maxElecLen)
else:
cellpath = r'../%s/%s_%f'%(configPath,configPath,maxElecLen)
else:
if savingDir !=None:
cellpath = r'../%s/%s/%s_default'%(savingDir,configPath,configPath)
else:
cellpath = r'../%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("../../neuroConstruct/generatedNeuroML2/")
for file_name in src_files:
full_file_name = os.path.join("../../neuroConstruct/generatedNeuroML2/", file_name)
if (os.path.isfile(full_file_name)):
#.........这里部分代码省略.........
示例14: generateV_ICurve
# 需要导入模块: from ucl.physiol.neuroconstruct.project import ProjectManager [as 别名]
# 或者: from ucl.physiol.neuroconstruct.project.ProjectManager import loadProject [as 别名]
def generateV_ICurve(self,
projFile,
simulator,
simConfig,
stimAmpLow, stimAmpInc, stimAmpHigh,
stimDur,
simDuration,
maxNumSimultaneousSims = 4):
# Load neuroConstruct project
print "Loading project from file: " + projFile.getAbsolutePath()+", exists: "+ str(projFile.exists())
pm = ProjectManager()
self.myProject = pm.loadProject(projFile)
self.simulator = simulator
simConfig = self.myProject.simConfigInfo.getSimConfig(simConfig)
simConfig.setSimDuration(simDuration)
pm.doGenerate(simConfig.getName(), self.neuroConstructSeed)
while pm.isGenerating():
print "Waiting for the project to be generated with Simulation Configuration: "+str(simConfig)
time.sleep(2)
numGenerated = self.myProject.generatedCellPositions.getNumberInAllCellGroups()
print "Number of cells generated: " + str(numGenerated)
simReferences = {}
if numGenerated > 0:
print "Generating scripts for simulator: %s..."%simulator
if simulator == 'NEURON':
self.myProject.neuronFileManager.setQuitAfterRun(1) # Remove this line to leave the NEURON sim windows open after finishing
self.myProject.neuronSettings.setCopySimFiles(1) # 1 copies hoc/mod files to PySim_0 etc. and will allow multiple sims to run at once
self.myProject.neuronSettings.setGraphicsMode(0) # 0 hides graphs during execution
if simulator == 'GENESIS':
self.myProject.genesisFileManager.setQuitAfterRun(1) # Remove this line to leave the NEURON sim windows open after finishing
self.myProject.genesisSettings.setCopySimFiles(1) # 1 copies hoc/mod files to PySim_0 etc. and will allow multiple sims to run at once
self.myProject.genesisSettings.setGraphicsMode(0) # 0 hides graphs during execution
stimAmp = stimAmpLow
ADD_TO_BEFORE_INIT = self.myProject.neuronSettings.getNativeBlock(NativeCodeLocation.BEFORE_INITIAL)
ADD_TO_RECORD_I = self.myProject.neuronSettings.getNativeBlock(NativeCodeLocation.AFTER_SIMULATION)
ADD_TO_START_FINITIALIZE = self.myProject.neuronSettings.getNativeBlock(NativeCodeLocation.START_FINITIALIZE)
while stimAmp <= stimAmpHigh:
while (len(self.simsRunning)>=maxNumSimultaneousSims):
print "Sims currently running: "+str(self.simsRunning)
print "Waiting..."
time.sleep(3) # wait a while...
self.updateSimsRunning()
simRef = "PySim_"+str(float(stimAmp))
print "Going to run simulation: "+simRef
######## Adjusting the amplitude of the Voltage clamp ###############
TEXT_BEFORE_CREATION = "objref clampobj" + "\n" + "objref record_current" + "\n" + "objref data_save" + "\n"
# TEXT_BEFORE_INIT = "GranuleCell_mod_tonic[0].Soma {\n" + "clampobj = new SEClamp(0.5)\n" + "clampobj.dur1 = 150.0" + "\n" + "clampobj.amp1 = -100.0" + "\n" + "clampobj.dur2 = " + str(stimDur) + "\n" + "clampobj.amp2 = " + str(stimAmp) + "\n" + "clampobj.dur3 = 150.0" + "\n" + "clampobj.amp3 = -100.0" + "\n" + "clampobj.rs = 0.00001\n " + "}\n" # This should do the trick
# TEXT_BEFORE_INIT = TEXT_BEFORE_INIT + ADD_TO_BEFORE_INIT
TEXT_START_FINITIALIZE = "GranuleCell_mod_tonic[0].Soma {\n" + "clampobj = new SEClamp(0.5)\n" + "clampobj.dur1 = 150.0" + "\n" + "clampobj.amp1 = -100.0" + "\n" + "clampobj.dur2 = " + str(stimDur) + "\n" + "clampobj.amp2 = " + str(stimAmp) + "\n" + "clampobj.dur3 = 150.0" + "\n" + "clampobj.amp3 = -40.0" + "\n" + "clampobj.rs = 0.00001\n" + "record_current = new Vector()" + "\n" + "record_current.record(&clampobj.i)" + "\n" + "}\n" #This should do the trick
TEXT_START_FINITIALIZE = TEXT_START_FINITIALIZE + ADD_TO_START_FINITIALIZE
TEXT_TO_RECORD_I = """data_save = new File() \n""" + """strdef filename \n""" + """sprint(filename, """" + self.myProject.getProjectMainDirectory().getAbsolutePath() + """/simulations/current%.3f.txt", clampobj.amp2) \n""" + """data_save.wopen(filename) \n""" + """record_current.printf(data_save) \n""" + """data_save.close() \n"""
TEXT_TO_RECORD_I = TEXT_TO_RECORD_I + ADD_TO_RECORD_I
self.myProject.neuronSettings.setNativeBlock(NativeCodeLocation.BEFORE_CELL_CREATION, TEXT_BEFORE_CREATION)
# self.myProject.neuronSettings.setNativeBlock(NativeCodeLocation.BEFORE_INITIAL, TEXT_BEFORE_INIT)
self.myProject.neuronSettings.setNativeBlock(NativeCodeLocation.START_FINITIALIZE, TEXT_START_FINITIALIZE)
self.myProject.neuronSettings.setNativeBlock(NativeCodeLocation.AFTER_SIMULATION, TEXT_TO_RECORD_I)
print "Next stim: "+ str(stimAmp)
self.myProject.simulationParameters.setReference(simRef)
if simulator == "NEURON":
self.myProject.neuronFileManager.generateTheNeuronFiles(simConfig,
None,
NeuronFileManager.RUN_HOC,
self.simulatorSeed)
#.........这里部分代码省略.........
示例15: testAll
# 需要导入模块: from ucl.physiol.neuroconstruct.project import ProjectManager [as 别名]
# 或者: from ucl.physiol.neuroconstruct.project.ProjectManager import loadProject [as 别名]
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]
cm = project.cellMechanismInfo.getCellMechanism(synName)
print "Checked syn %s"%cm.getInstanceName()
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"