diff --git a/MaBoSS/src/MaBoSS_BB/definitions.py b/MaBoSS/src/MaBoSS_BB/definitions.py index ca9569f..b447c9e 100644 --- a/MaBoSS/src/MaBoSS_BB/definitions.py +++ b/MaBoSS/src/MaBoSS_BB/definitions.py @@ -4,10 +4,19 @@ # Do not change this line BB_SOURCE_PATH=os.path.dirname(os.path.abspath(__file__)) +CONTAINER_ENGINE = os.environ["CONTAINER_ENGINE"] # Update the following lines: # - Assets folder within the Building Block ASSETS_PATH = os.path.join(BB_SOURCE_PATH, "assets") # - Container definition for MaBoSS Building Block CONTAINER_NAME = "maboss.sif" -MABOSS_CONTAINER = os.path.join(CONTAINER_PATH, CONTAINER_NAME) +if CONTAINER_ENGINE == "SINGULARITY": + MABOSS_CONTAINER = os.path.join(CONTAINER_PATH, CONTAINER_NAME) + CONTAINER_OPTIONS = "[unassigned]" +elif CONTAINER_ENGINE == "UDOCKER": + MABOSS_CONTAINER = CONTAINER_NAME.split(".")[0] + home_directory = os.environ["HOME"] + CONTAINER_OPTIONS = "-v " + home_directory + ":" + home_directory + " --rm" +else: + raise Exception("UNSUPPORTED CONTAINER ENGINE: %s (must be SINGULARITY or UDOCKER)" % CONTAINER_ENGINE) diff --git a/MaBoSS/src/MaBoSS_BB/main.py b/MaBoSS/src/MaBoSS_BB/main.py index 47787e6..050fbcd 100755 --- a/MaBoSS/src/MaBoSS_BB/main.py +++ b/MaBoSS/src/MaBoSS_BB/main.py @@ -10,7 +10,9 @@ from permedcoe import TMPDIR # Import single container and assets definitions +from MaBoSS_BB.definitions import CONTAINER_ENGINE from MaBoSS_BB.definitions import MABOSS_CONTAINER +from MaBoSS_BB.definitions import CONTAINER_OPTIONS from MaBoSS_BB.definitions import ASSETS_PATH from MaBoSS_BB.definitions import COMPUTING_UNITS @@ -20,7 +22,7 @@ @constraint(computing_units=COMPUTING_UNITS) -@container(engine="SINGULARITY", image=MABOSS_CONTAINER) +@container(engine=CONTAINER_ENGINE, image=MABOSS_CONTAINER, options=CONTAINER_OPTIONS) @binary(binary=MABOSS_BINARY) @task(data_folder=DIRECTORY_IN, ko_file=FILE_OUT) def MaBoSS_analysis( @@ -38,7 +40,7 @@ def MaBoSS_analysis( @constraint(computing_units=COMPUTING_UNITS) -@container(engine="SINGULARITY", image=MABOSS_CONTAINER) +@container(engine=CONTAINER_ENGINE, image=MABOSS_CONTAINER, options=CONTAINER_OPTIONS) @binary(binary=MABOSS_SENSITIVIY_ANALYSIS_BINARY) @task( model_folder=DIRECTORY_IN, diff --git a/PhysiBoSS/src/PhysiBoSS_BB/definitions.py b/PhysiBoSS/src/PhysiBoSS_BB/definitions.py index 0f4ec0f..f56bb50 100644 --- a/PhysiBoSS/src/PhysiBoSS_BB/definitions.py +++ b/PhysiBoSS/src/PhysiBoSS_BB/definitions.py @@ -4,10 +4,19 @@ # Do not change this line BB_SOURCE_PATH=os.path.dirname(os.path.abspath(__file__)) +CONTAINER_ENGINE = os.environ["CONTAINER_ENGINE"] # Update the following lines: # - Assets folder within the Building Block ASSETS_PATH = os.path.join(BB_SOURCE_PATH, "assets") # - Container definition for Meta Analysis Building Block CONTAINER_NAME = "physicell_covid19.sif" -CONTAINER = os.path.join(CONTAINER_PATH, CONTAINER_NAME) +if CONTAINER_ENGINE == "SINGULARITY": + CONTAINER = os.path.join(CONTAINER_PATH, CONTAINER_NAME) + CONTAINER_OPTIONS = "[unassigned]" +elif CONTAINER_ENGINE == "UDOCKER": + CONTAINER = CONTAINER_NAME.split(".")[0] + home_directory = os.environ["HOME"] + CONTAINER_OPTIONS = "-v " + home_directory + ":" + home_directory + " --rm" +else: + raise Exception("UNSUPPORTED CONTAINER ENGINE: %s (must be SINGULARITY or UDOCKER)" % CONTAINER_ENGINE) diff --git a/PhysiBoSS/src/PhysiBoSS_BB/main.py b/PhysiBoSS/src/PhysiBoSS_BB/main.py index c7ae394..faf9f97 100755 --- a/PhysiBoSS/src/PhysiBoSS_BB/main.py +++ b/PhysiBoSS/src/PhysiBoSS_BB/main.py @@ -11,8 +11,10 @@ from permedcoe import TMPDIR # Import single container and assets definitions -from PhysiBoSS_BB.definitions import CONTAINER from PhysiBoSS_BB.definitions import ASSETS_PATH +from PhysiBoSS_BB.definitions import CONTAINER_ENGINE +from PhysiBoSS_BB.definitions import CONTAINER +from PhysiBoSS_BB.definitions import CONTAINER_OPTIONS from PhysiBoSS_BB.definitions import COMPUTING_UNITS # Globals# Globals @@ -21,7 +23,7 @@ PHYSIBOSS_ANALYSE_REPLICATES_BINARY = os.path.join(ASSETS_PATH, "PhysiBoSS_analyse_replicates.sh") @constraint(computing_units=COMPUTING_UNITS) -@container(engine="SINGULARITY", image=CONTAINER) +@container(engine=CONTAINER_ENGINE, image=CONTAINER, options=CONTAINER_OPTIONS) @binary(binary=PHYSIBOSS_MODEL_BINARY) @task( model_dir=DIRECTORY_IN, @@ -86,7 +88,7 @@ def physiboss_analyse_replicates( @constraint(computing_units=COMPUTING_UNITS) -@container(engine="SINGULARITY", image=CONTAINER) +@container(engine=CONTAINER_ENGINE, image=CONTAINER, options=CONTAINER_OPTIONS) @binary(binary=PHYSIBOSS_BINARY) @task( bnd_file=FILE_IN, diff --git a/meta_analysis/src/meta_analysis_BB/definitions.py b/meta_analysis/src/meta_analysis_BB/definitions.py index 3b17301..8792cbc 100644 --- a/meta_analysis/src/meta_analysis_BB/definitions.py +++ b/meta_analysis/src/meta_analysis_BB/definitions.py @@ -4,10 +4,20 @@ # Do not change this line BB_SOURCE_PATH=os.path.dirname(os.path.abspath(__file__)) +CONTAINER_ENGINE = os.environ["CONTAINER_ENGINE"] # Update the following lines: # - Assets folder within the Building Block ASSETS_PATH = os.path.join(BB_SOURCE_PATH, "assets") # - Container definition for Meta Analysis Building Block CONTAINER_NAME = "meta_analysis.sif" -CONTAINER = os.path.join(CONTAINER_PATH, CONTAINER_NAME) +if CONTAINER_ENGINE == "SINGULARITY": + CONTAINER = os.path.join(CONTAINER_PATH, CONTAINER_NAME) + CONTAINER_OPTIONS = "[unassigned]" +elif CONTAINER_ENGINE == "UDOCKER": + CONTAINER = CONTAINER_NAME.split(".")[0] + home_directory = os.environ["HOME"] + CONTAINER_OPTIONS = "-v " + home_directory + ":" + home_directory + " --rm" +else: + raise Exception("UNSUPPORTED CONTAINER ENGINE: %s (must be SINGULARITY or UDOCKER)" % CONTAINER_ENGINE) + diff --git a/meta_analysis/src/meta_analysis_BB/main.py b/meta_analysis/src/meta_analysis_BB/main.py index 28ef10f..be5152f 100644 --- a/meta_analysis/src/meta_analysis_BB/main.py +++ b/meta_analysis/src/meta_analysis_BB/main.py @@ -10,8 +10,10 @@ from permedcoe import TMPDIR # Import single container and assets definitions -from meta_analysis_BB.definitions import CONTAINER from meta_analysis_BB.definitions import ASSETS_PATH +from meta_analysis_BB.definitions import CONTAINER_ENGINE +from meta_analysis_BB.definitions import CONTAINER +from meta_analysis_BB.definitions import CONTAINER_OPTIONS from meta_analysis_BB.definitions import COMPUTING_UNITS # Globals @@ -19,7 +21,7 @@ # @constraint(computing_units=COMPUTING_UNITS) -@container(engine="SINGULARITY", image=CONTAINER) +@container(engine=CONTAINER_ENGINE, image=CONTAINER, options=CONTAINER_OPTIONS) @binary(binary=META_ANALYSIS_BINARY) @task(meta_file=FILE_IN, out_dir=DIRECTORY_IN, diff --git a/personalize_patient/src/personalize_patient_BB/definitions.py b/personalize_patient/src/personalize_patient_BB/definitions.py index 824a31f..0adb0eb 100644 --- a/personalize_patient/src/personalize_patient_BB/definitions.py +++ b/personalize_patient/src/personalize_patient_BB/definitions.py @@ -4,10 +4,19 @@ # Do not change this line BB_SOURCE_PATH=os.path.dirname(os.path.abspath(__file__)) +CONTAINER_ENGINE = os.environ["CONTAINER_ENGINE"] # Update the following lines: # - Assets folder within the Building Block ASSETS_PATH = os.path.join(BB_SOURCE_PATH, "assets") # - Container definition for Personalize Patient Building Block CONTAINER_NAME = "physicell_covid19.sif" -CONTAINER = os.path.join(CONTAINER_PATH, CONTAINER_NAME) +if CONTAINER_ENGINE == "SINGULARITY": + CONTAINER = os.path.join(CONTAINER_PATH, CONTAINER_NAME) + CONTAINER_OPTIONS = "[unassigned]" +elif CONTAINER_ENGINE == "UDOCKER": + CONTAINER = CONTAINER_NAME.split(".")[0] + home_directory = os.environ["HOME"] + CONTAINER_OPTIONS = "-v " + home_directory + ":" + home_directory + " --rm" +else: + raise Exception("UNSUPPORTED CONTAINER ENGINE: %s (must be SINGULARITY or UDOCKER)" % CONTAINER_ENGINE) diff --git a/personalize_patient/src/personalize_patient_BB/main.py b/personalize_patient/src/personalize_patient_BB/main.py index 5f56c0f..19dba92 100644 --- a/personalize_patient/src/personalize_patient_BB/main.py +++ b/personalize_patient/src/personalize_patient_BB/main.py @@ -10,8 +10,10 @@ from permedcoe import TMPDIR # Import single container and assets definitions -from personalize_patient_BB.definitions import CONTAINER from personalize_patient_BB.definitions import ASSETS_PATH +from personalize_patient_BB.definitions import CONTAINER_ENGINE +from personalize_patient_BB.definitions import CONTAINER +from personalize_patient_BB.definitions import CONTAINER_OPTIONS from personalize_patient_BB.definitions import COMPUTING_UNITS # Globals @@ -20,7 +22,7 @@ # @constraint(computing_units=COMPUTING_UNITS) -@container(engine="SINGULARITY", image=CONTAINER) +@container(engine=CONTAINER_ENGINE, image=CONTAINER, options=CONTAINER_OPTIONS) @binary(binary=PERSONALIZE_PATIENT_BINARY) @task(norm_data=FILE_IN, cells=FILE_IN, model_output_dir=DIRECTORY_OUT, personalized_result=FILE_OUT, ko=FILE_IN) def personalize_patient(tmpdir=TMPDIR, @@ -56,7 +58,7 @@ def personalize_patient(tmpdir=TMPDIR, pass -@container(engine="SINGULARITY", image=CONTAINER) +@container(engine=CONTAINER_ENGINE, image=CONTAINER, options=CONTAINER_OPTIONS) @binary(binary=PERSONALIZE_CELLLINE_BINARY) @task(expression_data=FILE_IN, cnv_data=FILE_IN, mutation_data=FILE_IN, model_bnd=FILE_IN, model_cfg=FILE_IN, model_output_dir=DIRECTORY_OUT) def personalize_patient_cellline(tmpdir=TMPDIR, diff --git a/single_cell_processing/src/single_cell_processing_BB/definitions.py b/single_cell_processing/src/single_cell_processing_BB/definitions.py index b4fe606..9dc6a7b 100644 --- a/single_cell_processing/src/single_cell_processing_BB/definitions.py +++ b/single_cell_processing/src/single_cell_processing_BB/definitions.py @@ -4,10 +4,19 @@ # Do not change this line BB_SOURCE_PATH=os.path.dirname(os.path.abspath(__file__)) +CONTAINER_ENGINE = os.environ["CONTAINER_ENGINE"] # Update the following lines: # - Assets folder within the Building Block ASSETS_PATH = os.path.join(BB_SOURCE_PATH, "assets") # - Container definition for Meta Analysis Building Block CONTAINER_NAME = "single_cell.sif" -CONTAINER = os.path.join(CONTAINER_PATH, CONTAINER_NAME) +if CONTAINER_ENGINE == "SINGULARITY": + CONTAINER = os.path.join(CONTAINER_PATH, CONTAINER_NAME) + CONTAINER_OPTIONS = "[unassigned]" +elif CONTAINER_ENGINE == "UDOCKER": + CONTAINER = CONTAINER_NAME.split(".")[0] + home_directory = os.environ["HOME"] + CONTAINER_OPTIONS = "-v " + home_directory + ":" + home_directory + " --rm" +else: + raise Exception("UNSUPPORTED CONTAINER ENGINE: %s (must be SINGULARITY or UDOCKER)" % CONTAINER_ENGINE) diff --git a/single_cell_processing/src/single_cell_processing_BB/main.py b/single_cell_processing/src/single_cell_processing_BB/main.py index 77bf9a8..9d7d68e 100755 --- a/single_cell_processing/src/single_cell_processing_BB/main.py +++ b/single_cell_processing/src/single_cell_processing_BB/main.py @@ -10,8 +10,10 @@ from permedcoe import TMPDIR # Import single container and assets definitions -from single_cell_processing_BB.definitions import CONTAINER from single_cell_processing_BB.definitions import ASSETS_PATH +from single_cell_processing_BB.definitions import CONTAINER_ENGINE +from single_cell_processing_BB.definitions import CONTAINER +from single_cell_processing_BB.definitions import CONTAINER_OPTIONS from single_cell_processing_BB.definitions import COMPUTING_UNITS # Globals @@ -19,7 +21,7 @@ @constraint(computing_units=COMPUTING_UNITS) -@container(engine="SINGULARITY", image=CONTAINER) +@container(engine=CONTAINER_ENGINE, image=CONTAINER, options=CONTAINER_OPTIONS) @binary(binary=SINGLE_CELL_PROCESSING_BINARY) @task( p_file=FILE_IN,