[ab8281]: / brats_toolkit / util / docker_functions.py

Download this file

104 lines (84 with data), 3.1 kB

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
import os
import pathlib
import platform
import shlex
import subprocess
def start_docker(
exam_import_folder=None,
exam_export_folder=None,
dicom_import_folder=None,
nifti_export_folder=None,
mode="cpu",
gpuid="0",
):
# deal with missing arguments
if dicom_import_folder is None:
dicom_import_folder = exam_import_folder
if nifti_export_folder is None:
nifti_export_folder = exam_export_folder
if exam_import_folder is None:
exam_import_folder = dicom_import_folder
if exam_export_folder is None:
exam_export_folder = nifti_export_folder
# convert to absolute path
exam_import_folder = os.path.abspath(exam_import_folder)
exam_export_folder = os.path.abspath(exam_export_folder)
dicom_import_folder = os.path.abspath(dicom_import_folder)
nifti_export_folder = os.path.abspath(nifti_export_folder)
print("exam_import_folder:", exam_import_folder)
print("dicom_import_folder:", dicom_import_folder)
print("exam_export_folder:", exam_export_folder)
print("nifti_export_folder:", nifti_export_folder)
# make sure directories exist
os.makedirs(nifti_export_folder, exist_ok=True)
os.makedirs(exam_export_folder, exist_ok=True)
# start the right docker
cwd = pathlib.Path(__file__).resolve().parent
print(f"{cwd=}")
operatingSystem = platform.system()
if operatingSystem == "Windows":
bashscript = os.path.join(
cwd, os.path.normpath("./backend_scripts/win_docker.cmd")
)
else:
if mode == "cpu":
bashscript = os.path.normpath("./backend_scripts/unix_docker.sh")
elif mode == "robex":
bashscript = os.path.normpath("./backend_scripts/unix_docker.sh")
elif mode == "gpu":
bashscript = os.path.normpath("./backend_scripts/unix_docker_gpu.sh")
elif mode == "gpu_hdbet":
bashscript = os.path.normpath("./backend_scripts/unix_docker_gpu.sh")
# generate subprocess call
command = [
bashscript,
"3",
dicom_import_folder,
nifti_export_folder,
exam_import_folder,
exam_export_folder,
gpuid,
]
print(*command)
print("starting docker!")
subprocess.run(command, cwd=cwd)
print("docker started!")
def stop_docker():
# stop it
readableCmd = "docker stop greedy_elephant"
command = shlex.split(readableCmd)
cwd = pathlib.Path(__file__).resolve().parent
print("stopping docker with command:", readableCmd)
subprocess.run(command, cwd=cwd)
# remove it
readableCmd = "docker rm greedy_elephant"
command = shlex.split(readableCmd)
cwd = pathlib.Path(__file__).resolve().parent
print("stopping docker with command:", readableCmd)
subprocess.run(command, cwd=cwd)
def update_docker():
readableCmd = "docker pull projectelephant/server"
print(readableCmd)
command = shlex.split(readableCmd)
cwd = pathlib.Path(__file__).resolve().parent
subprocess.run(command, cwd=cwd)