Example #1
0
cfg = cfgUtils.getModuleConfig(com1DFAOrig)

startTime = time.time()

# Clean input directory(ies) of old work and output files
initProj.cleanSingleAvaDir(avalancheDir, keep=logName)

# Run Standalone DFA
reportDictList = com1DFAOrig.com1DFAOrigMain(cfg, avalancheDir)

# Print time needed
endTime = time.time()
log.info(('Took %s seconds to calculate.' % (endTime - startTime)))

# append parameters from logFile
for reportD in reportDictList:
    simName = reportD['simName']['name']
    parameterDict, reportD = fU.extractParameterInfo(avalancheDir, simName, reportD)


# Generate plots for all peakFiles
plotDict = oP.plotAllPeakFields(avalancheDir, cfg, cfgMain['FLAGS'], modName)

# Set directory for report
reportDir = os.path.join(avalancheDir, 'Outputs', 'com1DFAOrigOrig', 'reports')
# write report
gR.writeReport(reportDir, reportDictList, cfgMain['FLAGS'], plotDict)

# write configuration to file
cfgUtils.writeCfgFile(avalancheDir, com1DFAOrig, cfg)
Example #2
0
avalancheDir = cfgMain['MAIN']['avalancheDir']

# Start logging
log = logUtils.initiateLogger(avalancheDir, logName)
log.info('MAIN SCRIPT')
log.info('Current avalanche: %s', avalancheDir)

# Load all input Parameters from config file
# get the configuration of an already imported module
# write config to log file
cfg = cfgUtils.getModuleConfig(ana3AIMEC)

iP.cleanModuleFiles(avalancheDir, ana3AIMEC)

# write configuration to file
cfgUtils.writeCfgFile(avalancheDir, ana3AIMEC, cfg)

cfgSetup = cfg['AIMECSETUP']
anaMod = cfgSetup['anaMod']

# set parameter for standard aimec analysis with mass analysis
cfgSetup['resType'] = 'ppr'
cfgSetup['thresholdValue'] = '1'
cfgSetup['diffLim'] = '5'
cfgSetup['contourLevels'] = '1|3|5|10'
cfg['FLAGS']['flagMass'] = 'True'

# Setup input from com1DFA
pathDict = dfa2Aimec.mainDfa2Aimec(avalancheDir, anaMod)

# TODO: define referenceFile
Example #3
0
def runCom1DFA(avaDir='', cfgFile='', relThField='', variationDict=''):
    """ run com1DFA module """

    # +++++++++SETUP CONFIGURATION++++++++++++++++++++++++
    # log file name; leave empty to use default runLog.log
    logName = 'runCom1DFA'

    # Load avalanche directory from general configuration file
    cfgMain = cfgUtils.getGeneralConfig()
    if avaDir != '':
        avalancheDir = avaDir
    else:
        avalancheDir = cfgMain['MAIN']['avalancheDir']
    # set module name, reqiured as long we are in dev phase
    # - because need to create e.g. Output folder for com1DFA to distinguish from
    # current com1DFA
    modName = 'com1DFA'

    # Clean input directory(ies) of old work and output files
    # initProj.cleanSingleAvaDir(avalancheDir, keep=logName, deleteOutput=False)
    initProj.cleanModuleFiles(avalancheDir, com1DFA, modName)

    # Start logging
    log = logUtils.initiateLogger(avalancheDir, logName)
    log.info('MAIN SCRIPT')
    log.info('Current avalanche: %s', avalancheDir)

    # Create output and work directories
    # - because need to create e.g. Output folder for com1DFA to distinguish from
    workDir, outDir = inDirs.initialiseRunDirs(avalancheDir, modName)

    # generate list of simulations from desired configuration
    if variationDict == '':
        # Load full configuration
        modCfg, modInfo = cfgUtils.getModuleConfig(com1DFA,
                                                   fileOverride=cfgFile,
                                                   modInfo=True)
        variationDict = dP.getVariationDict(avalancheDir, modCfg, modInfo)
    else:
        # check if variationDict items exist and are provided in correct format
        # Load standard/ default configuration
        modCfg = cfgUtils.getDefaultModuleConfig(com1DFA)
        variationDict = dP.validateVarDict(variationDict, modCfg)
        log.info('Variations are performed for:')
        for key in variationDict:
            log.info('%s: %s' % (key, variationDict[key]))

    # add avalanche directory info to cfg
    modCfg['GENERAL']['avalancheDir'] = avalancheDir

    # fetch input data - dem, release-, entrainment- and resistance areas
    inputSimFiles = gI.getInputDataCom1DFAPy(avalancheDir, modCfg['FLAGS'])

    # write full configuration file to file
    cfgUtils.writeCfgFile(avalancheDir,
                          com1DFA,
                          modCfg,
                          fileName='sourceConfiguration')

    # create a list of simulations
    # if need to reproduce exactely the hash - need to be strings with exactely the same number of digits!!
    simDict = com1DFA.prepareVarSimDict(modCfg, inputSimFiles, variationDict)

    log.info('The following simulations will be performed')
    for key in simDict:
        log.info('Simulation: %s' % key)

    reportDictList = []
    # loop over all simulations
    for cuSim in simDict:

        # load configuration dictionary for cuSim
        cfg = simDict[cuSim]['cfgSim']

        # save configuration settings for each simulation
        simHash = simDict[cuSim]['simHash']
        cfgUtils.writeCfgFile(avalancheDir, com1DFA, cfg, fileName=cuSim)

        # log simulation name
        log.info('Run simulation: %s' % cuSim)

        # set release area scenario
        inputSimFiles['releaseScenario'] = simDict[cuSim]['relFile']

        # +++++++++++++++++++++++++++++++++
        # ------------------------
        particlesList, fieldsList, Tsave, dem, reportDict, cfgFinal = com1DFA.com1DFAMain(
            cfg, avalancheDir, cuSim, inputSimFiles, outDir, relThField)

        # +++++++++EXPORT RESULTS AND PLOTS++++++++++++++++++++++++
        # Generate plots for all peakFiles
        plotDict = oP.plotAllPeakFields(avalancheDir, cfg, cfgMain['FLAGS'],
                                        modName)

        reportDictList.append(reportDict)

        # export for visulation
        if cfg['VISUALISATION'].getboolean('writePartToCSV'):
            outDir = os.path.join(avalancheDir, 'Outputs', modName)
            com1DFA.savePartToCsv(cfg['VISUALISATION']['particleProperties'],
                                  particlesList, outDir)

        # create hash to check if config didnt change
        simHashFinal = cfgUtils.cfgHash(cfgFinal)
        if simHashFinal != simHash:
            log.warning(
                'simulation configuration has been changed since start')
            cfgUtils.writeCfgFile(avalancheDir,
                                  com1DFA,
                                  cfg,
                                  fileName='%s_butModified' % simHash)

    # Set directory for report
    reportDir = os.path.join(avalancheDir, 'Outputs', 'com1DFA', 'reports')
    # write report
    gR.writeReport(reportDir, reportDictList, cfgMain['FLAGS'], plotDict)

    # read all simulation configuration files and return dataFrame and write to csv
    standardCfg = cfgUtils.getDefaultModuleConfig(com1DFA)
    simDF = cfgUtils.createConfigurationInfo(avalancheDir,
                                             standardCfg,
                                             writeCSV=True)

    return particlesList, fieldsList, Tsave, dem, plotDict, reportDictList
Example #4
0
else:
    log.error('Distribution type not known')

#++++++++++++++ Print result to log and save results in outFile
for m in range(len(sampleVect)):
    log.info('%.5f' % (sampleVect[m]))
outFile = os.path.join(workingDir, 'sampleFromDist%s.txt' % cfgGen['distType'])
with open(outFile, 'w') as pfile:
    for item in sampleVect:
        pfile.write('%.5f_' % item)
    pfile.close()

# ++++++++++++++++ Make plots of sample distribution
flagShow = cfgMain['FLAGS'].getboolean('showPlot')
# # Plot the results
iPlot.plotDist(workingDir, CDF, a, b, c, cfgGen, flagShow)
iPlot.plotSample(workingDir, sampleVect, cfgGen, flagShow)

# +++++++++++++++ Check if retrieved sample actually fits the desired distriution .....
# retrieve approximation of sample PDF using numpy histogram and cumsum
CDFEmp, xSample = cF.getEmpiricalCDF(sampleVect, CDF, cfgGen)
iPlot.plotEmpCDF(workingDir, CDF, CDFEmp, xSample, cfgGen, 'Hist', flagShow)
# retrieve approximation of sample using the ECDF function
ECDF, xSample = cF.getEmpiricalCDFNEW(sampleVect)
iPlot.plotEmpCDF(workingDir, CDF, ECDF, xSample, cfgGen, 'ECDF', flagShow)
# plot sample histogram and PDF of desired distribution
iPlot.plotEmpPDF(workingDir, PDF, sampleVect, cfgGen, flagShow)

# write configuration to file
cfgUtils.writeCfgFile(avalancheDir, cF, cfg, suffix=cfgGen['distType'])
                        'Simulation Parameters'][
                            'Release Area Scenario'] == rel:
                    reportDcom1DFA = dict
                    log.info('Comparison simulation: %s' %
                             dict['simName']['name'])
                    break
                else:
                    log.error(
                        'No matching simulation found based on releaseScenario: %s and simType: %s'
                        % (rel, simType))

            simNameComp = reportDcom1DFA['simName']['name']
            compDir = pathlib.Path(avaDir, 'Outputs', 'com1DFA', 'peakFiles')

            # write configuration to file
            cfgUtils.writeCfgFile(avaDir, ana3AIMEC, cfgAimec)
            if 'ent' in simType:
                cfgAimec['FLAGS']['flagMass'] = 'True'
            else:
                cfgAimec['FLAGS']['flagMass'] = 'False'
            cfgAimec['AIMECSETUP']['comModules'] = 'com1DFAOrig|com1DFA'

            # Setup input from com1DFA and com1DFAPy
            pathDict = []
            pathDict = dfa2Aimec.dfaBench2Aimec(avaDir, cfgAimec, simNameRef,
                                                simNameComp)
            pathDict['numSim'] = len(pathDict['ppr'])
            log.info('reference file comes from: %s' % pathDict['compType'][1])

            # Extract input file locations
            pathDict = aimecTools.readAIMECinputs(