예제 #1
0
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))
예제 #2
0
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
예제 #3
0
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
예제 #4
0
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
예제 #5
0
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
예제 #6
0
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