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")
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)
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)
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)
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)
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)
] 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}")
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)
--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"
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)