Esempio n. 1
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))
                        spikeTrace.setCommentOnPoint(pointNum, morphProp)

                        if plotSims:
                            simConfigName = simData.getSimulationProperties(
                            ).getProperty("Sim Config")

                            if simConfigName.find('(') >= 0:
                                simConfigName = simConfigName[0:simConfigName.
                                                              find('(')]
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("lg1").setMaxNumberCells(numCells1)
    simManager.project.cellGroupsInfo.getCellPackingAdapter("lg2").setMaxNumberCells(numCells2)


    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,
                               runMode =                 runMode)

    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])
        dataSet.addPoint(procNums[i],times[i])

    plotFrame.addDataSet(dataSet)
                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))
                    spikeTrace.setCommentOnPoint(pointNum, morphProp)
    
                    if plotSims:
                        simConfigName = simData.getSimulationProperties().getProperty("Sim Config")
    
                        if simConfigName.find('(')>=0:
                            simConfigName = simConfigName[0:simConfigName.find('(')]
    
                        for dataStore in simData.getAllLoadedDataStores():
    
Esempio n. 4
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)

    ### Change num in each cell group

    densityGrC = 1.90e6
    densityMF = 6.6e5
    densityGoC = 4607

    totDens = densityGrC + densityMF + densityGoC

    numMF = int(targetNum * densityMF/totDens)
    numGoC = int(targetNum * densityGoC/totDens)
    numGrC = targetNum - numMF - numGoC

    vol = targetNum/(totDens*1e-9)
    height = 150
    side = math.sqrt(vol/height)

    
    info = "Number in %fx%fx%i box (vol: %f mm^3): GrC: %i, MF: %i, GoC: %i, Total: %i"%(side, side, height, vol*1e-9,numGrC, numMF,numGoC, (numGrC +numMF +numGoC))
    print info

    SimulationsInfo.addExtraSimProperty("summary", info)

    region3D = simManager.project.regionsInfo.getRegionObject("TestGranCellVolume")
    region3D.setParameter(region3D.WIDTH_PARAM, side)
    region3D.setParameter(region3D.HEIGHT_PARAM, height)
    region3D.setParameter(region3D.DEPTH_PARAM, side)

    simManager.project.cellGroupsInfo.getCellPackingAdapter("TestScalingGrC").setMaxNumberCells(numGrC)
    simManager.project.cellGroupsInfo.getCellPackingAdapter("TestScalingGoC").setMaxNumberCells(numGoC)
    simManager.project.cellGroupsInfo.getCellPackingAdapter("TestScalingMF").setMaxNumberCells(numMF)
    ######simManager.project.cellGroupsInfo.getCellPackingAdapter("lg2").setMaxNumberCells(numCells2)


    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,
                               runMode =                 runMode)

    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])
        #dataSet.addPoint(procNums[i],times[i])

    plotFrame.addDataSet(dataSet)
Esempio n. 5
0
def reloadSims(waitForSimsToFinish):


    print "Trying to reload sims: "+str(allFinishedSims)

    plottedSims = []

    for simRef in allFinishedSims:

        simDir = File(projFile.getParentFile(), "/simulations/"+simRef)
        timeFile = File(simDir, "time.dat")
        timeFile2 = File(simDir,"time.txt") # for PSICS...


        if timeFile.exists() or timeFile2.exists():
            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()

                if analyseSims:
                    '''
                    volts = simData.getVoltageAtAllTimes(cellSegmentRef)

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

                    analyseStartTime = 0
                    analyseStopTime = simConfig.getSimDuration()
                    analyseThreshold = -20 # mV

                    spikeTimes = SpikeAnalyser.getSpikeTimes(volts, times, analyseThreshold, analyseStartTime, analyseStopTime)

                    print "Spike times in %s for sim %s: %s"%(cellSegmentRef, simRef, str(spikeTimes))
                    '''

                if plotSims:

                    simConfigName = simData.getSimulationProperties().getProperty("Sim Config")

                    if simConfigName.find('(')>=0:
                        simConfigName = simConfigName[0:simConfigName.find('(')]

                    for dataStore in simData.getAllLoadedDataStores():

                        ds = simData.getDataSet(dataStore.getCellSegRef(), dataStore.getVariable(), False)

                        if not plotVoltageOnly or dataStore.getVariable() == SimPlot.VOLTAGE:

                            plotFrame = PlotManager.getPlotterFrame("Behaviour of "+dataStore.getVariable() \
                                +" on: %s for sim config: %s"%(str(simulators), simConfigName))

                            plotFrame.addDataSet(ds)


                    plottedSims.append(simRef)


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

    for simRef in plottedSims:
        allFinishedSims.remove(simRef)


    if waitForSimsToFinish and len(allRunningSims)>0:

        if verbose: print "Waiting for sims: %s to finish..."%str(allRunningSims)

        time.sleep(2) # wait a while...
        updateSimsRunning()
        reloadSims(True)
Esempio n. 6
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)

    ### Change num in each cell group

    densityGrC = 1.90e6
    densityMF = 6.6e5
    densityGoC = 4607

    totDens = densityGrC + densityMF + densityGoC


    for conf in confs.keys():

        numb = conf
        mpiConfigs = [confs[conf]]

        perProc = 5000
        targetNum = perProc*numb

        simAllPrefix =          "NZ_%i_%i_"%(perProc, numb)   # Adds a prefix to simulation reference

        print "Simulation pref: "+simAllPrefix


        numMF = int(targetNum * densityMF/totDens)
        numGoC = int(targetNum * densityGoC/totDens)
        numGrC = targetNum - numMF - numGoC

        vol = targetNum/(totDens*1e-9)
        height = 150
        side = math.sqrt(vol/height)


        info = "Number in %fx%fx%i box (vol: %f mm^3): GrC: %i, MF: %i, GoC: %i, Total: %i"%(side, side, height, vol*1e-9,numGrC, numMF,numGoC, (numGrC +numMF +numGoC))
        print info

        SimulationsInfo.addExtraSimProperty("summary", info)

        region3D = simManager.project.regionsInfo.getRegionObject("TestGranCellVolume")
        region3D.setParameter(region3D.WIDTH_PARAM, side)
        region3D.setParameter(region3D.HEIGHT_PARAM, height)
        region3D.setParameter(region3D.DEPTH_PARAM, side)

        simManager.project.cellGroupsInfo.getCellPackingAdapter("TestScalingGrC").setMaxNumberCells(numGrC)
        simManager.project.cellGroupsInfo.getCellPackingAdapter("TestScalingGoC").setMaxNumberCells(numGoC)
        simManager.project.cellGroupsInfo.getCellPackingAdapter("TestScalingMF").setMaxNumberCells(numMF)
        ######simManager.project.cellGroupsInfo.getCellPackingAdapter("lg2").setMaxNumberCells(numCells2)


        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,
                                   runMode =                 runMode)

        if wait:
            while (len(simManager.allRunningSims)>0):
                print "Waiting for the following sims to finish: "+str(simManager.allRunningSims)
                time.sleep(30) # 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()
                
                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

                    dtUsed = simData.getSimulationProperties().getProperty("dt")

                    pointNum = spikeTrace.addPoint(float(dtUsed), spikeTimes[spikeIndex])

    
                    if plotSims:
                        simConfigName = simData.getSimulationProperties().getProperty("Sim Config")
    
                        if simConfigName.find('(')>=0:
                            simConfigName = simConfigName[0:simConfigName.find('(')]
    
                        for dataStore in simData.getAllLoadedDataStores():
    
                            ds = simData.getDataSet(dataStore.getCellSegRef(), dataStore.getVariable(), False)
                            
    
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. 9
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)