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)
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
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)