def downloadDataSets(InputDatasets, Destination, RSE="", use_singularity=False): ### Apparently rucio does no longer work in combination with AthAnalysis. So let's ### execute it from a singulartity container Cmds = [] image_to_choose = setupBatchSubmitArgParser().get_default("SingularityImage") home_dir = setupBatchSubmitArgParser().get_default("BaseFolder") + "/TMP/.singularity/" CreateDirectory(Destination, False) if use_singularity: CreateDirectory(home_dir, False) to_clean = [] for DS in InputDatasets: if not use_singularity: Cmds += ["rucio download %s --ndownloader 32 %s --dir %s" % (DS, "" if len(RSE) == 0 else "--rse %s" % (RSE), Destination)] else: singularity_dir = home_dir + "/" + id_generator(21) to_clean += [singularity_dir] singularity_script = WriteList([ "#!/bin/bash", "export ATLAS_LOCAL_ROOT_BASE=/cvmfs/atlas.cern.ch/repo/ATLASLocalRootBase", "source ${ATLAS_LOCAL_ROOT_BASE}/user/atlasLocalSetup.sh", "lsetup rucio", "echo 'rucio download %s --ndownloader 32 %s --dir %s'" % (DS, "" if len(RSE) == 0 else "--rse %s" % (RSE), Destination), "rucio download %s --ndownloader 32 %s --dir %s" % (DS, "" if len(RSE) == 0 else "--rse %s" % (RSE), Destination), ], "%s/to_exec.sh" % (singularity_dir)) os.system("chmod 0777 " + singularity_script) Cmds += [ "singularity exec --cleanenv -H %s:/alrb -B %s:/srv %s/%s %s" % (singularity_dir, Destination, SINGULARITY_DIR, image_to_choose, singularity_script) ] ExecuteCommands(ListOfCmds=Cmds, MaxCurrent=8) for c in to_clean: os.system("rm -rf %s" % (c))
def exclusiveBatchOpt(): parser = setupBatchSubmitArgParser() parser.add_argument( '--BaseProject', help= 'choose project containing file lists to adjust the filepath to the DS list (default is \"XAMPPbase\")', default='XAMPPbase') parser.set_defaults(Merge_vmem=600) parser.add_argument('--inputDS', help='Input datasets', default=[], nargs="+") parser.add_argument( "--RSE", help='RSE storage element for files located via dcache.', default='MPPMU_LOCALGROUPDISK') parser.add_argument( '--RunTime', help='Changes the RunTime of the Jobs: default 19:59:59 ', default='19:59:59') parser.add_argument( '--EventsPerJob', help='Changes the Events per Batch job. Default: 10000 ', default=10000, type=int) parser.add_argument('--FilesPerMergeJob', help='Number of files per merge', default=8, type=int) parser.add_argument("--FinalSplit", help="How many files should be left after merge", default=1, type=int) parser.add_argument('--vmem', help='Virtual memory reserved for each analysis jobs', default=3500, type=int) parser.add_argument( '--HoldJob', default=[], nargs="+", help= 'Specfiy job names which should be finished before your job is starting. ' ) parser.add_argument( "--SpareWhatsProcessedIn", help= "If the cluster decided to die during production, you can skip the processed files in the directories", default=[], nargs="+") return parser
def getArgumentParser(): """Get arguments from command line.""" parser = setupBatchSubmitArgParser() parser.add_argument("--fileLists", help="Specify the file lists to submit", default=[], nargs="+") parser.add_argument("--fileListsFolder", help="Specify a folder containing file lists", type=str, default="") parser.add_argument("--remainingSplit", help="Specify a remaining split of the files", default=1, type=int) ### Arguments to read a list of dataset files parser.add_argument( "--RucioDSList", help="Specify a file containing a list of rucio datasets to be merged", default="") parser.add_argument( "--RucioRSE", help= "Specify the RSE on which the datasets are stored. Required if download is not activated", default="") parser.add_argument("--download", help="Download the files in advance", default=False, action='store_true') parser.add_argument("--batch_size", help="What is the final size of each file in the end", default=-1, type=int) parser.add_argument("--nFilesPerJob", help="Specify number of files per merge job", default=10, type=int) parser.add_argument("--HoldJob", help="Specify a list of jobs to hold on", default=[]) parser.set_defaults(Merge_vmem=4000) return parser
def setupScriptSubmitParser(): parser = setupBatchSubmitArgParser() parser.add_argument("--ListOfCmds", help="Text file where all commands are listed", required=True) parser.add_argument( '--HoldJob', default=[], nargs="+", help= 'Specfiy job names which should be finished before your job is starting. ' ) parser.add_argument('--RunTime', help='Changes the RunTime of the analysis Jobs', default='07:59:59') parser.add_argument('--vmem', help='Changes the virtual memory needed by each jobs', type=int, default=2000) return parser
def setupCIparser(): parser = argparse.ArgumentParser( prog='Update reference cutflows', conflict_handler='resolve', formatter_class=argparse.ArgumentDefaultsHelpFormatter) parser.add_argument("--ciDir", help="Directory where the CI files are located.", default=ResolvePath("XAMPPbase/test")) parser.add_argument("--joboptions", help="Which job options shall be run", default="XAMPPbase/runXAMPPbase.py") parser.add_argument("--regions", help="what are the regions to consider", default=[], nargs="+", required=True) parser.add_argument("--serviceAccount", help="what is the name of the service account to use", default="xampp") parser.add_argument( "--EOSpath", help="Where are all the reference samples located on EOS", default="root://eoshome.cern.ch//eos/user/x/xampp/ci/base/") parser.add_argument( "--TEMPdir", help="Where to store all of the temporary files", default="%s/CI_temp" % (setupBatchSubmitArgParser().get_default("BaseFolder"))) parser.add_argument("--athenaArgParser", help="Which athena argument parser shall be used", default=ResolvePath("XAMPPbase/python/runAthena.py")) parser.add_argument("--evtMax", help="Limit the number of events to run on", default=-1, type=int) parser.add_argument('--noSyst', help='run without systematic uncertainties', action='store_true', default=False) return parser
def getArguments(): USERNAME = os.getenv("USER") parser = setupBatchSubmitArgParser() parser.set_defaults(BaseFolder="/nfs/dust/atlas/user/{username}/MC".format( username=USERNAME)) parser.set_defaults(maxCurrentJobs=100) parser.set_defaults(noContainerShipping=False) parser.set_defaults(jobOptionsDir="./..") parser.add_argument("--modelsDir", default="", help="Path to directory containing additional models.") parser.add_argument("-r", "--runNumbers", nargs="+", default=[], type=int) parser.add_argument("-R", "--runRange", nargs=2, action="store", type=int) parser.add_argument( "--nJobs", help="Number of jobs to be submitted [default: 5]", type=int, default=5, ) parser.add_argument( "--eventsPerJob", help="Events generated per job [default: 10000]", type=int, default=10000, ) parser.add_argument( "--keepOutput", help="Keep RunDir after task", action="store_true", default=False, ) parser.add_argument("--AthGeneration", help="Event generation release version", default="21.6.61") parser.add_argument( "--noDerivationJob", help="Disable launching derivation jobs.", action="store_true", ) parser.add_argument( "--derivations", help="Format of TRUTH derivations [default: TRUTH1]", nargs="+", default=["TRUTH1"], ) parser.add_argument("--AthDerivation", help="Derivation release version", default="21.2.63.0") parser.add_argument("--nCores", help="Number of cores per node.", type=int, default=1) parser.add_argument( "--evgen_runtime", help="Event generation job time limit [default: 8 hours]", default="08:00:00", ) parser.add_argument( "--evgen_memory", help="Event generation job memory limit [default: 4 GB]", default=4000, type=int, ) parser.add_argument( "--deriv_runtime", help="Derivation job time limit [default: 8 hours]", default="08:00:00", ) parser.add_argument( "--deriv_memory", help="Derivation job memory limit [default: 2.5 GB]", default=2500, type=int, ) # Pre includes and execs for the event generation parser.add_argument("--evgen_postExec", default="", help="Reco_tf --postExec", type=str) parser.add_argument("--evgen_preExec", default="", help="Reco_tf --preExec", type=str) parser.add_argument("--evgen_postInclude", default="", help="Reco_tf --postInclude", type=str) parser.add_argument("--evgen_preInclude", default="", help="Reco_tf --preInclude", type=str) # Pre includes and execs for the derivation parser.add_argument( "--deriv_postExec", default="", help="Reco_tf --postExec in derivation", type=str, ) parser.add_argument("--deriv_preExec", default="", help="Reco_tf --preExec in derivation", type=str) parser.add_argument( "--deriv_postInclude", default="", help="Reco_tf --postInclude in derivation", type=str, ) parser.add_argument( "--deriv_preInclude", default="", help="Reco_tf --preInclude in derivation", type=str, ) return parser