Skip to content

Commit

Permalink
added support for running container with singularity
Browse files Browse the repository at this point in the history
  • Loading branch information
juli-p committed Nov 8, 2023
1 parent 33177a2 commit 5b6f002
Show file tree
Hide file tree
Showing 5 changed files with 99 additions and 24 deletions.
30 changes: 24 additions & 6 deletions run/NeEDL.py
100644 → 100755
Original file line number Diff line number Diff line change
Expand Up @@ -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':
Expand All @@ -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
Expand Down Expand Up @@ -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)
Expand Down
Empty file modified run/bash_install.sh
100644 → 100755
Empty file.
31 changes: 25 additions & 6 deletions run/calculate_scores.py
100644 → 100755
Original file line number Diff line number Diff line change
Expand Up @@ -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':
Expand All @@ -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
Expand Down Expand Up @@ -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)
Expand Down
31 changes: 25 additions & 6 deletions run/convert_to_binary.py
100644 → 100755
Original file line number Diff line number Diff line change
Expand Up @@ -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':
Expand All @@ -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
Expand Down Expand Up @@ -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)
Expand Down
31 changes: 25 additions & 6 deletions run/epiJSON.py
100644 → 100755
Original file line number Diff line number Diff line change
Expand Up @@ -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':
Expand All @@ -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
Expand Down Expand Up @@ -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)
Expand Down

0 comments on commit 5b6f002

Please sign in to comment.