Spaces:
Running
Running
File size: 3,390 Bytes
97e9ddc 1b4af4d 97e9ddc b19d82f 97e9ddc 25fa374 97e9ddc c2b6b34 97e9ddc 1b4af4d 25fa374 1b4af4d |
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 104 |
import configparser
import logging
import os
import shutil
import traceback
def run_model(
input_path: str,
model_path: str,
verbose: str = "info",
task: str = "CT_Airways",
name: str = "Airways",
):
logging.basicConfig()
logging.getLogger().setLevel(logging.WARNING)
if verbose == "debug":
logging.getLogger().setLevel(logging.DEBUG)
elif verbose == "info":
logging.getLogger().setLevel(logging.INFO)
elif verbose == "error":
logging.getLogger().setLevel(logging.ERROR)
else:
raise ValueError("Unsupported verbose value provided:", verbose)
# delete patient/result folder if they exist
if os.path.exists("./patient/"):
shutil.rmtree("./patient/")
if os.path.exists("./result/"):
shutil.rmtree("./result/")
patient_directory = ""
output_path = ""
try:
# setup temporary patient directory
filename = input_path.split("/")[-1]
splits = filename.split(".")
extension = ".".join(splits[1:])
patient_directory = "./patient/"
os.makedirs(patient_directory + "T0/", exist_ok=True)
shutil.copy(
input_path,
patient_directory + "T0/" + splits[0] + "-t1gd." + extension,
)
# define output directory to save results
output_path = "./result/prediction-" + splits[0] + "/"
os.makedirs(output_path, exist_ok=True)
# Setting up the configuration file
rads_config = configparser.ConfigParser()
rads_config.add_section("Default")
rads_config.set("Default", "task", "mediastinum_diagnosis")
rads_config.set("Default", "caller", "")
rads_config.add_section("System")
rads_config.set("System", "gpu_id", "-1")
rads_config.set("System", "input_folder", patient_directory)
rads_config.set("System", "output_folder", output_path)
rads_config.set("System", "model_folder", model_path)
rads_config.set(
"System",
"pipeline_filename",
os.path.join(model_path, task, "pipeline.json"),
)
rads_config.add_section("Runtime")
rads_config.set(
"Runtime", "reconstruction_method", "thresholding"
) # thresholding, probabilities
rads_config.set("Runtime", "reconstruction_order", "resample_first")
rads_config.set("Runtime", "use_preprocessed_data", "False")
with open("rads_config.ini", "w") as f:
rads_config.write(f)
# finally, run inference
from raidionicsrads.compute import run_rads
run_rads(config_filename="rads_config.ini")
# rename and move final result
os.rename(
"./result/prediction-"
+ splits[0]
+ "/T0/"
+ splits[0]
+ "-t1gd_annotation-"
+ name
+ ".nii.gz",
"./prediction.nii.gz",
)
# Clean-up
if os.path.exists(patient_directory):
shutil.rmtree(patient_directory)
if os.path.exists(output_path):
shutil.rmtree(output_path)
except Exception:
print(traceback.format_exc())
# Clean-up
if os.path.exists(patient_directory):
shutil.rmtree(patient_directory)
if os.path.exists(output_path):
shutil.rmtree(output_path)
|