Ejemplo n.º 1
0
def test_echo(
    tmpdir,
    plugin=PLUGIN,
    list_lens=LIST_LENS,
    job_sbatch_args=JOB_SBATCH_ARGS,
    image=IMAGE,
    n_procs=N_PROCS,
):
    """no splitting, no result"""
    print("Linux container, no bind, splitting on echo")
    print("--------------------------------------------------")
    print("Singularity Task arguments:")
    print(f"image == {image}")
    print(f"tmpdir == {str(tmpdir)}")

    cmd = "echo"
    print(f"cmd == {cmd}")
    print()
    print("--------------------------------------------------")
    print("Submitter args")
    print(f"job_sbatch_args == {job_sbatch_args}")
    print(f"plugin == {plugin}")
    print(f"n_procs == {n_procs}")
    image = image

    args = dict()
    for i in list_lens:
        if i == 1:
            args = str(1)
        else:
            args = [str(i) for i in range(1, i + 1)]

        sub_tmpdir = str(tmpdir.join(f"fmriprep_echo{i}"))
        singu = SingularityTask(name=f"fp{i}",
                                executable=cmd,
                                args=args,
                                image=image,
                                cache_dir=tmpdir)
        # singu = FunctionTask(name='ft', executable=cmd, args=args, cache_dir=tmpdir)
        if isinstance(args, list):
            singu.split("args")

        print()
        print(f"Submitting job with {i} split(s)...")
        t0 = time.time()
        with Submitter(plugin=plugin,
                       sbatch_args=job_sbatch_args,
                       n_procs=n_procs) as sub:
            # with Submitter(plugin='cf') as sub:
            singu(submitter=sub)
        t1 = time.time()
        print(f"Time to submit: {t1-t0} s")
Ejemplo n.º 2
0
def submit_task(argv):

    parser = argparse.ArgumentParser()
    parser.add_argument('-c',
                        '--command',
                        metavar='command',
                        help="fmriprep command")
    parser.add_argument('-i',
                        '--image',
                        metavar='image_path',
                        help="fmriprep image path")
    parser.add_argument('-pc',
                        '--pydra_cache',
                        metavar='pydra-cache',
                        help="path to store pydra cache")
    parser.add_argument('-b', '--base', help="base path of BIDS dataset")
    parser.add_argument('-sa', '--sbatch_args', help="SBATCH args")

    args = parser.parse_args()
    print(args.command)

    singu = SingularityTask(
        name="fmriprep",
        executable=args.command,
        image=args.image,
        cache_dir=args.pydra_cache,
        audit_flags=AuditFlag.ALL,
        messengers=FileMessenger(),
        messenger_args={"message_dir": os.path.join(args.base, "messages")},
        bindings=[(args.base, "/BASE", "rw")],
    )
    with Submitter(plugin="slurm", sbatch_args=args.sbatch_args) as sb:
        singu(submitter=sb)
Ejemplo n.º 3
0
def test_singularity_fmriprep_1(plugin, tmpdir):
    """ split commands
    	fmriprep container, no binding
    """
    cmd = ["pwd", "ls", "echo", "wc", "lh", "ss", "aw", "aa", "lk"]
    image = "/om4/group/gablab/data/singularity-images/fmriprep-v1.3.0p2.sif"
    singu = SingularityTask(name="singu",
                            executable=cmd,
                            image=image,
                            cache_dir=tmpdir).split("executable")
    assert singu.state.splitter == "singu.executable"

    res = singu(plugin=plugin)
Ejemplo n.º 4
0
def test_singularity_linux_1(plugin, tmpdir):
    """ split commands
    	linux container, no binding
    """
    cmd = ["pwd", "ls", "echo", "wc", "lh", "ss", "aw", "aa", "lk"]
    image = "library://sylabsed/linux/alpine"
    singu = SingularityTask(name="singu",
                            executable=cmd,
                            image=image,
                            cache_dir=tmpdir).split("executable")
    assert singu.state.splitter == "singu.executable"

    res = singu(plugin=plugin)
Ejemplo n.º 5
0
def test_singularity_fmriprep_2(plugin, tmpdir):
    """ command with arguments in docker, checking the distribution
        splitter = image
    """
    cmd = ["pwd", "ls", "echo", "wc", "lh", "ss", "aw", "aa", "lk"]
    image = "/om4/group/gablab/data/singularity-images/fmriprep-v1.3.0p2.sif"
    singu = SingularityTask(
        name="singu",
        executable=cmd,
        image=image,
        cache_dir=tmpdir,
        bindings=[(fmriprep_inputs["base_path"], "/BASE", "rw")],
    ).split("cmd")
    assert singu.state.splitter == "singu.executable"

    res = singu(plugin=plugin)
Ejemplo n.º 6
0
def test_singularity_linux_2(plugin, tmpdir):
    """ command with arguments in docker, checking the distribution
        splitter = image
    """
    cmd = ["pwd", "ls", "echo", "wc", "lh", "ss", "aw", "aa", "lk"]
    image = "library://sylabsed/linux/alpine"
    singu = SingularityTask(
        name="singu",
        executable=cmd,
        image=image,
        cache_dir=tmpdir,
        bindings=[(fmriprep_inputs["base_path"], "/BASE", "rw")],
    ).split("cmd")
    assert singu.state.splitter == "singu.executable"

    res = singu(plugin=plugin)
Ejemplo n.º 7
0
]
CMD_LIST = list()

for s in SUBJECT:
    CMD = f"fmriprep {DATADIR} {OUTDIR} -w {WORKDIR} \
    participant --participant_label {s} --nthreads 1 \
    --output-space fsaverage6 --use-aroma --ignore-aroma-denoising-errors \
    --skip-bids-validation --mem_mb 9500 --fs-license-file {FS_LICENSE} \
    --ignore slicetiming --cifti-output".split(" ")
    CMD_LIST.append(CMD)

#####################################################################
singu = SingularityTask(
    name="fmriprep",
    executable=CMD_LIST,
    image=IMAGE,
    cache_dir=CACHEDIR,
    bindings=[(BASE, "/BASE", "rw")],
).split("executable")

sbatch_args = "-J Yale-50561-5 -t 1-00:00:00 --mem=10GB --cpus-per-task=1"

with Submitter(plugin="slurm", sbatch_args=sbatch_args) as sub:
    singu(submitter=sub)
res = singu.result()

print("Done running!")
print(f"res.output.stdout = {res.output.stdout}")
print()
print(f"res.output.return_code = {res.output.return_code}")
Ejemplo n.º 8
0
        site=wf.lzin.site,
    ))
wf.add(
    create_cmd(
        name="create_cmd",
        subject=wf.get_subject.lzout.out,
        base_path=wf.lzin.base_path,
        dataset=wf.lzin.dataset,
        site=wf.lzin.site,
        fs_license=wf.lzin.fs_license,
    ))

wf.add(
    SingularityTask(
        name="fmriprep",
        executable=wf.create_cmd.lzout.out,
        image=wf.lzin.image_path,
        bindings=[(wf_inputs['base_path'], "/BASE", "rw")],
    ))

# set fmriprep commands as workflow output for now
wf.set_output([("out", wf.fmriprep.lzout.stdout),
               ("err", wf.fmriprep.lzout.stderr)])

sbatch_args = "-J abide-50628 -t 1-00:00:00 --mem=10GB --cpus-per-task=2"
with Submitter(plugin="slurm", sbatch_args=sbatch_args) as sub:
    sub(wf)

#res= wf.result()
#print(results.output.out)
Ejemplo n.º 9
0
    --output-space fsaverage6 --use-aroma \
    --skip-bids-validation --mem_mb 7500 \
    --fs-license-file /BASE/freesurfer_license.txt \
    --fs-subjects-dir {OUTDIR}/freesurfer \
    --ignore slicetiming --cifti-output -w {SUBWORKDIR}".split()
    CMD_LIST.append(CMD)

print("Sample command:")
print(CMD_LIST[0])

#####################################################################
singu = SingularityTask(
    name="fmriprep",
    executable=CMD_LIST,
    image=IMAGE,
    cache_dir=CACHEDIR,
    bindings=[(BASE, "/BASE", "rw")],
    container_xargs=['--cleanenv'],
    #audit_flags=AuditFlag.ALL,
    #messenger=FileMessenger()
).split("executable")

print()
print("SingularityTask inputs:")
print(singu.inputs)
print()
print("SingularityTask container_args:")
print(singu.container_args)
print()

#SBATCH_ARGS = f"-J {SITE} -t 30:00:00 --mem=8GB --cpus-per-task=2 -p gablab [email protected] --mail-type=ALL,TIME_LIMIT"
#SBATCH_ARGS = f"-J {SITE} -t 36:00:00 --mem=8GB --cpus-per-task=2 -p normal [email protected] --mail-type=ALL,TIME_LIMIT"
Ejemplo n.º 10
0
        site=wf.lzin.site,
        fs_license=wf.lzin.fs_license,
        workdir=wf.lzin.workdir,
    )
)
wf.set_output([("out", wf.create_cmd.lzout.out)])

with Submitter(plugin="cf") as sub:
    sub(wf)

res = wf.result()
cmd = res.output.out

# wf2 = Workflow(name="wf2", input_spec=['executable', 'image'])
singu = SingularityTask(
    name="fmriprep",
    cache_dir=pydra_cache,
    executable=cmd,
    image="/om4/group/gablab/data/singularity-images/fmriprep-v1.3.0p2.sif",
    bindings=[(wf_inputs["base_path"], "/BASE", "rw")],
)


# set fmriprep commands as workflow output for now
# wf.set_output([("out", wf.fmriprep.lzout.stdout),
#                ("err", wf.fmriprep.lzout.stderr)])

sbatch_args = "-J {site} -t 1-04:00 --mem=10GB --cpus-per-task=1".format(**wf_inputs)
with Submitter(plugin="slurm", sbatch_args=sbatch_args) as sub:
    sub(singu)