Пример #1
0
	def set_current_ampl(self,current_ampl):
		"""Sets the amplitude of the injected current."""
		err = ""
		print "Current amplitude is ",current_ampl
		from ucl.physiol.neuroconstruct.utils import NumberGenerator
		sim_config_info = self.manager.project.simConfigInfo
		sim_config = sim_config_info.getSimConfig(self.sim_config_name)
		print("Sim Config name is %s" % self.sim_config_name)
		inputs = sim_config.getInputs()
		print("%s has %d inputs" % (self.sim_config_name,len(inputs)))
		if len(inputs) < 1:
			err = "This sim config has no inputs"
		else:
			one_set = False
			for inp in range(len(inputs)):
				input_ = inputs.get(inp)
				stim = self.manager.project.elecInputInfo.getStim(input_)
				if hasattr(stim,'setAmp'):
					stim.setAmp(NumberGenerator(current_ampl))
					stim.setDur(NumberGenerator(200.0)) # Change pulse length to 400 ms.  
					self.manager.project.elecInputInfo.updateStim(stim)
					print("Stim amplitude set to %f" % current_ampl)
					one_set = True
				else:
					err = "This stim has no attribute 'setAmp'"
			if one_set:
				err = ""
		print err
		return err
Пример #2
0
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
Пример #3
0
    
    # generate
    pm.doGenerate(sim_config_name, 1234)
    while pm.isGenerating():
        time.sleep(0.02)
    print('network generated for stim type ' + stim_type)

    for rate in stim_rate_range:
        sim_ref = 'io' + stim_type + timestamp + '_' + str(int(round(rate)))
        sim_refs.append(sim_ref)
        sim_path = '../simulations/' + sim_ref
        project.simulationParameters.setReference(sim_ref)
        # set stim rate
        rate_in_kHz = rate/1000.
        stim = project.elecInputInfo.getStim('relay_stim')
        stim.setRate(NumberGenerator(rate_in_kHz))
        project.elecInputInfo.updateStim(stim)
        # generate and compile neuron files
        print "Generating NEURON scripts..."
        project.neuronFileManager.setSuggestedRemoteRunTime(10)
        simulator_seed = random.getrandbits(32)
        project.neuronFileManager.generateTheNeuronFiles(sim_config, None, NeuronFileManager.RUN_HOC,simulator_seed)
        compile_process = ProcessManager(project.neuronFileManager.getMainHocFile())
        compile_success = compile_process.compileFileWithNeuron(0,0)
        # simulate
        if compile_success:
            print "Submitting simulation reference " + sim_ref
            pm.doRunNeuron(sim_config)
            time.sleep(2) # Wait for sim to be kicked off
            if not sim_config.getMpiConf().isRemotelyExecuted():
                # if running locally, never have more than one sim running
Пример #4
0
### 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))


### Change bias currents
Пример #5
0
            if not syn in cellMechNames:
                print "Synapse mechanism %s not found in project!"%syn
                exit()
                
            synProp = SynapticProperties(syn)
            synProp.setThreshold(0)
            synProp.setFixedDelay(default_syn_delay)
            synList.add(synProp)

        searchPattern = SearchPattern.getRandomSearchPattern()
        maxMinLength = MaxMinLength()

        connectivityConditions = ConnectivityConditions()
        connectivityConditions.setGenerationDirection(ConnectivityConditions.TARGET_TO_SOURCE)
        
        connectivityConditions.setNumConnsInitiatingCellGroup(NumberGenerator(numPre))

        if "axon" in postGroup:
            connectivityConditions.getPrePostAllowedLoc().setAxonsAllowedPost(1)
        if "dend" in preGroup:
            connectivityConditions.getPrePostAllowedLoc().setDendritesAllowedPre(1)

        connectivityConditions.setAllowAutapses(0)
            
        if("Elect" in syns[0]):
            connectivityConditions.setNoRecurrent(1)


        netConnInfo.addNetConn(netConnName,
                               source,
                               target,
        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)
        while pm.isGenerating():
            time.sleep(0.02)
        print('network generated')

        for amplitude in stim_amplitude_range:
            sim_ref = utils.ir_sim_ref(timestamp, gj_conn_type, amplitude,
                                       trial)
            sim_refs.append(sim_ref)
            sim_path = '../simulations/' + sim_ref
            project.simulationParameters.setReference(sim_ref)
            # set stim rate
            amplitude_in_nA = amplitude / 1000.
            for cell_type in ['Vervaeke', 'reduced']:
                stim = project.elecInputInfo.getStim('cclamp_network_' +
                                                     cell_type)
                stim.setAmp(NumberGenerator(amplitude_in_nA))
                project.elecInputInfo.updateStim(stim)
            # generate and compile neuron files
            print "Generating NEURON scripts..."
            project.neuronFileManager.setSuggestedRemoteRunTime(10)
            simulator_seed = random.getrandbits(32)
            project.neuronFileManager.generateTheNeuronFiles(
                sim_config, None, NeuronFileManager.RUN_HOC, simulator_seed)
            compile_process = ProcessManager(
                project.neuronFileManager.getMainHocFile())
            compile_success = compile_process.compileFileWithNeuron(0, 0)
            # simulate
            if compile_success:
                print "Submitting simulation reference " + sim_ref
                pm.doRunNeuron(sim_config)
                time.sleep(2)  # Wait for sim to be kicked off
def testAll(argv=None):
    if argv is None:
        argv = sys.argv

    print "Loading project from "+ projFile.getCanonicalPath()


    simManager = nc.SimulationManager(projFile,
                                      numConcurrentSims = numConcurrentSims,
                                      verbose = verbose)

    ### Change num in each cell group

    simManager.project.cellGroupsInfo.getCellPackingAdapter("ExcCells").setMaxNumberCells(numExcCells)
    simManager.project.cellGroupsInfo.getCellPackingAdapter("INCells").setMaxNumberCells(numINCells)

    ### Change weights in synapses/gap junctions

    simConfig = simManager.project.simConfigInfo.getSimConfig(simConfigName)

    for netConnName in simConfig.getNetConns():
        print "Changing synaptic delay in %s to %f"%(netConnName, defaultSynapticDelay)
        delayGen = NumberGenerator(defaultSynapticDelay)
        for synProps in simManager.project.morphNetworkConnectionsInfo.getSynapseList(netConnName):
            synProps.setDelayGenerator(delayGen)

    # defaultSynapticDelay will be recorded in simulation.props and listed in SimulationBrowser GUI
    SimulationsInfo.addExtraSimProperty("defaultSynapticDelay", str(defaultSynapticDelay))



    allSims = simManager.runMultipleSims(simConfigs =     [simConfigName],
                               simDt =                   simDt,
                               simDuration =             simDuration,
                               simulators =              simulators,
                               runInBackground =         runInBackground,
                               varTimestepNeuron =       varTimestepNeuron,
                               mpiConfigs =              mpiConfigs,
                               suggestedRemoteRunTime =  suggestedRemoteRunTime,
                               simRefGlobalPrefix =      simAllPrefix,
                               runSims =                 runSims,
                               neuroConstructSeed =      neuroConstructSeed,
                               simulatorSeed =           simulatorSeed)

    while (len(simManager.allRunningSims)>0):
        print "Waiting for the following sims to finish: "+str(simManager.allRunningSims)
        time.sleep(5) # wait a while...
        simManager.updateSimsRunning()

    for sim in allSims:
        simDir = File(projFile.getParentFile(), "/simulations/"+sim)

        try:
            simData = SimulationData(simDir)
            simData.initialise()
            simTime = simData.getSimulationProperties().getProperty("RealSimulationTime")
            print "Simulation: %s took %s seconds"%(sim, simTime)

        except:
            print "Error analysing simulation data from: %s"%simDir.getCanonicalPath()

    if mpiConfigs == [MpiSettings.LOCAL_SERIAL] or mpiConfigs == [MpiSettings.MATLEM_1PROC]:
        simManager.reloadSims(plotVoltageOnly =   True,
                          plotSims =          plotSims,
                          analyseSims =       analyseSims)
Пример #9
0
# 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()

# Get first electrical stimulation & reset it

stim = myProject.elecInputInfo.getStim(0)

print "First stimulation setting: " + str(stim)

newAmp = random() * 0.2

stim.setAmp(NumberGenerator(newAmp))

myProject.elecInputInfo.updateStim(stim)

print "Stimulation now:           " + str(myProject.elecInputInfo.getStim(0))

# Save project & exit

myProject.markProjectAsEdited()
myProject.saveProject()

System.exit(0)
Пример #10
0
        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)
Пример #11
0
            synProp = SynapticProperties(syn)
            synProp.setThreshold(0)
            synProp.setFixedDelay(default_syn_delay)
            synList.add(synProp)

        searchPattern = SearchPattern.getRandomSearchPattern()
        #searchPattern = SearchPattern.getClosestSearchPattern() # will be better, but slower!
        maxMinLength = MaxMinLength()

        connectivityConditions = ConnectivityConditions()
        connectivityConditions.setGenerationDirection(
            ConnectivityConditions.SOURCE_TO_TARGET)

        connectivityConditions.setNumConnsInitiatingCellGroup(
            NumberGenerator(numPre))

        print "Set NumConnsInitiatingCellGroup to %i" % numPre

        if "axon" in postGroup:
            connectivityConditions.getPrePostAllowedLoc().setAxonsAllowedPost(
                1)
            connectivityConditions.getPrePostAllowedLoc(
            ).setDendritesAllowedPost(0)
            connectivityConditions.getPrePostAllowedLoc().setSomaAllowedPost(0)

        print "Set connectivityConditions: " + str(connectivityConditions)

        connectivityConditions.setAllowAutapses(0)

        if ("Elect" in syns[0]):