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)
Esempio n. 2
0
            simRef = simRefPrefix + "_" + sim + recompSuffix

            simDir = File(projFile.getParentFile(), "/simulations/" + simRef)
            timeFile = File(simDir, "time.dat")

            if not timeFile.exists():
                print "\n-------     Error loading data from simulation in directory: %s\n" % simDir.getCanonicalPath(
                )
            else:
                if verbose:
                    print "--- Reloading data from simulation in directory: %s" % simDir.getCanonicalPath(
                    )
                time.sleep(1)  # wait a while...

                try:
                    simData = SimulationData(simDir)
                    simData.initialise()
                    times = simData.getAllTimes()

                    cellSegmentRef = simData.getAllLoadedDataStores().get(
                        0).getCellGroupName() + "_0"
                    print "Looking for voltages of " + cellSegmentRef
                    volts = simData.getVoltageAtAllTimes(cellSegmentRef)

                    if verbose:
                        print "Got " + str(
                            len(volts)
                        ) + " data points on cell seg ref: " + cellSegmentRef

                    analyseStartTime = 0
                    analyseStopTime = 2000
Esempio n. 3
0
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)

    allSims = simManager.runMultipleSims(
        simConfigs=simConfigs,
        simDt=simDt,
        simDuration=simDuration,
        simulators=simulators,
        runInBackground=runInBackground,
        varTimestepNeuron=varTimestepNeuron,
        mpiConfigs=mpiConfigs,
        suggestedRemoteRunTime=suggestedRemoteRunTime,
        simRefGlobalPrefix=simAllPrefix,
        runSims=runSims,
        maxElecLens=multipleRuns,
        saveAsHdf5=saveAsHdf5,
        saveOnlySpikes=saveOnlySpikes)

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

    times = []
    procNums = []
    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)
            times.append(float(simTime))
            paraConfig = simData.getSimulationProperties().getProperty(
                "Parallel configuration")
            print paraConfig
            numProc = int(paraConfig[max(
                paraConfig.find(" host, ") + 7,
                paraConfig.find(" hosts, ") +
                8):paraConfig.find(" processor")])
            procNums.append(numProc)

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

    print times
    print procNums
    '''
    import matplotlib.pyplot as plt
    lines = plt.loglog(times, procNums, 'r:')

    plt.ylabel('Simulation time')
    plt.xlabel('Number of processors')
    plt.show()'''

    from ucl.physiol.neuroconstruct.gui.plotter import PlotManager
    from ucl.physiol.neuroconstruct.gui.plotter import PlotCanvas

    from ucl.physiol.neuroconstruct.dataset import DataSet

    plotFrame = PlotManager.getPlotterFrame(
        "Time for simulation run on different numbers of processors", 0, 1)

    plotFrame.setViewMode(PlotCanvas.INCLUDE_ORIGIN_VIEW)

    info = "Simulation times for: " + str(procNums)

    dataSet = DataSet(info, info, "#", "s", "Number of processors",
                      "Simulation time")
    dataSet.setGraphFormat(PlotCanvas.USE_CIRCLES_FOR_PLOT)

    for i in range(len(times)):
        dataSet.addPoint(procNums[i], times[i] * procNums[i])

    plotFrame.addDataSet(dataSet)