diff --git a/run/NeEDL.py b/run/NeEDL.py old mode 100644 new mode 100755 index 691ce12cd..2e6630809 --- a/run/NeEDL.py +++ b/run/NeEDL.py @@ -13,6 +13,15 @@ print(arguments) +# check if singularity should be used instead of docker +use_singularity = False +for i, arg in enumerate(arguments): + if arg == '--singularity': + use_singularity = True + # remove argument from list as app cannot process it + del arguments[i] + + # define a different docker image name, needed for testing for i, arg in enumerate(arguments): if arg == '--docker-image-name': @@ -25,7 +34,7 @@ # disable pulling of docker container -docker_pull = True +docker_pull = not use_singularity for i, arg in enumerate(arguments): if arg == '--docker-no-pulling': docker_pull = False @@ -103,15 +112,24 @@ print("Error: It is not allowed to set the argument --data-directory when using NeEDL in docker mode. All necessary files within the data directory are already at the correct place in the docker container.") exit(1) -volume_string = ' '.join([f'-v "{file}:/mnt/in_{i}:rw,Z"' for i, file in enumerate(input_paths)]) +if use_singularity: + volume_string = ' '.join([f'-B "{file}:/mnt/in_{i}:rw,Z"' for i, file in enumerate(input_paths)]) + external_command = f"singularity exec {volume_string}" -external_command = f"docker run --user='{os.getuid()}':'{os.getgid()}' {volume_string}" + if output_directory is not None: + external_command += f' -B "{output_directory}:/mnt/out:rw,Z" ' -if output_directory is not None: - external_command += f' -v "{output_directory}:/mnt/out:rw,Z" ' + external_command += "docker://" -argument_string = ' '.join(map(lambda a: f'"{a}"', map(lambda b: b.replace('"', '\\"'), arguments))) +else: + volume_string = ' '.join([f'-v "{file}:/mnt/in_{i}:rw,Z"' for i, file in enumerate(input_paths)]) + external_command = f"docker run --user='{os.getuid()}':'{os.getgid()}' {volume_string}" + + if output_directory is not None: + external_command += f' -v "{output_directory}:/mnt/out:rw,Z" ' + +argument_string = ' '.join(map(lambda a: f'"{a}"', map(lambda b: b.replace('"', '\\"'), arguments))) external_command += f"{image} {command} --data-directory /NeEDL/data/ {argument_string}" print(external_command) diff --git a/run/bash_install.sh b/run/bash_install.sh old mode 100644 new mode 100755 diff --git a/run/calculate_scores.py b/run/calculate_scores.py old mode 100644 new mode 100755 index bd3991ad8..6cca00a48 --- a/run/calculate_scores.py +++ b/run/calculate_scores.py @@ -12,6 +12,16 @@ print(arguments) + +# check if singularity should be used instead of docker +use_singularity = False +for i, arg in enumerate(arguments): + if arg == '--singularity': + use_singularity = True + # remove argument from list as app cannot process it + del arguments[i] + + # define a different docker image name, needed for testing for i, arg in enumerate(arguments): if arg == '--docker-image-name': @@ -24,7 +34,7 @@ # disable pulling of docker container -docker_pull = True +docker_pull = not use_singularity for i, arg in enumerate(arguments): if arg == '--docker-no-pulling': docker_pull = False @@ -87,15 +97,24 @@ print("Error: It is not allowed to set the argument --data-directory when using NeEDL in docker mode. All necessary files within the ext directory are already at the correct place in the docker container.") exit(1) -volume_string = ' '.join([f'-v "{file}:/mnt/in_{i}:rw,Z"' for i, file in enumerate(input_paths)]) +if use_singularity: + volume_string = ' '.join([f'-B "{file}:/mnt/in_{i}:rw,Z"' for i, file in enumerate(input_paths)]) + external_command = f"singularity exec {volume_string}" -external_command = f"docker run --user='{os.getuid()}':'{os.getgid()}' {volume_string}" + if output_directory is not None: + external_command += f' -B "{output_directory}:/mnt/out:rw,Z" ' -if output_directory is not None: - external_command += f' -v "{output_directory}:/mnt/out:rw,Z" ' + external_command += "docker://" -argument_string = ' '.join(map(lambda a: f'"{a}"', map(lambda b: b.replace('"', '\\"'), arguments))) +else: + volume_string = ' '.join([f'-v "{file}:/mnt/in_{i}:rw,Z"' for i, file in enumerate(input_paths)]) + external_command = f"docker run --user='{os.getuid()}':'{os.getgid()}' {volume_string}" + + if output_directory is not None: + external_command += f' -v "{output_directory}:/mnt/out:rw,Z" ' + +argument_string = ' '.join(map(lambda a: f'"{a}"', map(lambda b: b.replace('"', '\\"'), arguments))) external_command += f"{image} {command} --data-directory /NeEDL/data/ {argument_string}" print(external_command) diff --git a/run/convert_to_binary.py b/run/convert_to_binary.py old mode 100644 new mode 100755 index 97f58d8d2..9329a4522 --- a/run/convert_to_binary.py +++ b/run/convert_to_binary.py @@ -12,6 +12,16 @@ print(arguments) + +# check if singularity should be used instead of docker +use_singularity = False +for i, arg in enumerate(arguments): + if arg == '--singularity': + use_singularity = True + # remove argument from list as app cannot process it + del arguments[i] + + # define a different docker image name, needed for testing for i, arg in enumerate(arguments): if arg == '--docker-image-name': @@ -24,7 +34,7 @@ # disable pulling of docker container -docker_pull = True +docker_pull = not use_singularity for i, arg in enumerate(arguments): if arg == '--docker-no-pulling': docker_pull = False @@ -65,15 +75,24 @@ input_paths.append(path) -volume_string = ' '.join([f'-v "{file}:/mnt/in_{i}:rw,Z"' for i, file in enumerate(input_paths)]) +if use_singularity: + volume_string = ' '.join([f'-B "{file}:/mnt/in_{i}:rw,Z"' for i, file in enumerate(input_paths)]) + external_command = f"singularity exec {volume_string}" -external_command = f"docker run --user='{os.getuid()}':'{os.getgid()}' {volume_string}" + if output_directory is not None: + external_command += f' -B "{output_directory}:/mnt/out:rw,Z" ' -if output_directory is not None: - external_command += f' -v "{output_directory}:/mnt/out:rw,Z" ' + external_command += "docker://" -argument_string = ' '.join(map(lambda a: f'"{a}"', map(lambda b: b.replace('"', '\\"'), arguments))) +else: + volume_string = ' '.join([f'-v "{file}:/mnt/in_{i}:rw,Z"' for i, file in enumerate(input_paths)]) + external_command = f"docker run --user='{os.getuid()}':'{os.getgid()}' {volume_string}" + + if output_directory is not None: + external_command += f' -v "{output_directory}:/mnt/out:rw,Z" ' + +argument_string = ' '.join(map(lambda a: f'"{a}"', map(lambda b: b.replace('"', '\\"'), arguments))) external_command += f"{image} {command} {argument_string}" print(external_command) diff --git a/run/epiJSON.py b/run/epiJSON.py old mode 100644 new mode 100755 index dc012edd5..e22d60391 --- a/run/epiJSON.py +++ b/run/epiJSON.py @@ -13,6 +13,16 @@ print(arguments) + +# check if singularity should be used instead of docker +use_singularity = False +for i, arg in enumerate(arguments): + if arg == '--singularity': + use_singularity = True + # remove argument from list as app cannot process it + del arguments[i] + + # define a different docker image name, needed for testing for i, arg in enumerate(arguments): if arg == '--docker-image-name': @@ -25,7 +35,7 @@ # disable pulling of docker container -docker_pull = True +docker_pull = not use_singularity for i, arg in enumerate(arguments): if arg == '--docker-no-pulling': docker_pull = False @@ -78,15 +88,24 @@ print("Error: It is not allowed to set the argument --data-directory when using NeEDL in docker mode. All necessary files within the data directory are already at the correct place in the docker container.") exit(1) -volume_string = ' '.join([f'-v "{file}:/mnt/in_{i}:rw,Z"' for i, file in enumerate(input_paths)]) +if use_singularity: + volume_string = ' '.join([f'-B "{file}:/mnt/in_{i}:rw"' for i, file in enumerate(input_paths)]) + external_command = f"singularity exec {volume_string}" -external_command = f"docker run --user='{os.getuid()}':'{os.getgid()}' {volume_string}" + if output_directory is not None: + external_command += f' -B "{output_directory}:/mnt/out:rw" ' -if output_directory is not None: - external_command += f' -v "{output_directory}:/mnt/out:rw,Z" ' + external_command += "docker://" -argument_string = ' '.join(map(lambda a: f'"{a}"', map(lambda b: b.replace('"', '\\"'), arguments))) +else: + volume_string = ' '.join([f'-v "{file}:/mnt/in_{i}:rw,Z"' for i, file in enumerate(input_paths)]) + external_command = f"docker run --user='{os.getuid()}':'{os.getgid()}' {volume_string}" + + if output_directory is not None: + external_command += f' -v "{output_directory}:/mnt/out:rw,Z" ' + +argument_string = ' '.join(map(lambda a: f'"{a}"', map(lambda b: b.replace('"', '\\"'), arguments))) external_command += f"{image} {command} --ext-directory /NeEDL/ext/ --data-directory /NeEDL/data/ {argument_string}" print(external_command)