示例#1
0
                        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))
示例#2
0
    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 == ""):
示例#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)
    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: "