volts, times, analyseThreshold, analyseStartTime, analyseStopTime) #print "Spike times in %s for sim %s: %s"%(cellSegmentRef, simRef, str(spikeTimes)) if totNumSpikes < 0: totNumSpikes = len(spikeTimes) for spikeIndex in range(max(totNumSpikes - numSpikes, 0), totNumSpikes): spikeTimeTrace = "Times_" + sim + "_" + simConfigName + "_" + str( spikeIndex) if not allSpikeTimeDataSets.has_key(spikeTimeTrace): ds = DataSet(spikeTimeTrace, spikeTimeTrace, "", "ms", "Number of compartments", "Spike time") allSpikeTimeDataSets[spikeTimeTrace] = ds spikeTrace = allSpikeTimeDataSets[spikeTimeTrace] print "Adding point to " + spikeTimeTrace #pointNum = spikeTrace.addPoint(1/maxElecLen, spikeTimes[-1]) ##pointNum = spikeTrace.addPoint(1/maxElecLen, spikeTimes[spikeIndex]) morphProp = simData.getSimulationProperties( ).getProperty("Morph summary nRT") comps = morphProp.split(":")[-1] pointNum = spikeTrace.addPoint(float(comps), spikeTimes[spikeIndex]) #spikeTrace.setCommentOnPoint(pointNum, "Point for electrotonic len: "+str(maxElecLen))
try: simData = SimulationData(simDir) simData.initialise() print("Data loaded: ") print(simData.getAllLoadedDataStores()) times = simData.getAllTimes() # simConfig was just grabbed for use here, it was CGspinstell_0 cellSegmentRef = simConfig.getCellGroups().get(0) + "_0" volts = simData.getVoltageAtAllTimes(cellSegmentRef) traceInfo = "Voltage at: %s in simulation: %s" % (cellSegmentRef, sim) dataSetV = DataSet(traceInfo, traceInfo, "ms", "mV", "Time", "Membrane potential") for i in range(len(times)): dataSetV.addPoint(times[i], volts[i]) if plotAllTraces: plotFrameAlltraces.addDataSet(dataSetV) # needs adjusting for a comprehensive maxx maxy minx miny plotFrameAlltraces.setMaxMinScaleValues(dataSetV.getMaxX()[0], dataSetV.getMinX()[0], dataSetV.getMaxY()[1], dataSetV.getMinY()[1]) if (curveType == "F-I"): print "F-I analisys..." # initialize the dataSet for the graph if (dataSet == ""):
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)
print "Finished running " + str( numSimulationsToRun ) + " simulations for project " + projFile.getAbsolutePath() print "These can be loaded and replayed in the previous simulation browser in the GUI" print ######## Generating a current versus firing rate plot ####### plotFrameFI = PlotManager.getPlotterFrame( "F-I curve from project: " + str(myProject.getProjectFile()), 1, 1) plotFrameFI.setViewMode(PlotCanvas.INCLUDE_ORIGIN_VIEW) info = "F-I curve for Simulation Configuration: " + str(simConfig) dataSet = DataSet(info, info, "nA", "Hz", "Current injected", "Firing frequency") dataSet.setGraphFormat(PlotCanvas.USE_CIRCLES_FOR_PLOT) simList = simReferences.keys() simList.sort() for sim in simList: simDir = File(projFile.getParentFile(), "/simulations/" + sim) print print "--- Reloading data from simulation in directory: %s" % simDir.getCanonicalPath( ) try: simData = SimulationData(simDir) simData.initialise() print "Data loaded: "