Page MenuHomePhabricator

Code review for siemens handover
Closed, ResolvedPublic

Description

The siemes repository needs to be checked before it is handed to SIEMENS. The structure and usability should be prioritized.

Details

Deadline
Mar 30 2022, 2:00 AM

Event Timeline

Ideally, the package versions should be specified in the requirements.txt files.

  • References to publications from Kausch et. al. should be added to the README.md
  • package versions for deep_drr and c_arm pose should both be names following semvers, e.g. 0.0.1
  • deep_drr setup defines wrong paths to binary scripts, it should be:
setup(name='deep_drr',
      packages=['deep_drr'],
      entry_points={
          'console_scripts': [
              'deepdrr_volume_segmentation = deep_drr.tools.run_volume_segmentation:main',
              'deepdrr_projection = deep_drr.tools.run_deep_drr_projection:main'
          ]
      }
      )
  • The commands in the REAMDE.md need more clarification for each of the options, e.g. specific patient names.
deepdrr_volume_segmentation --volumeDir VOLUMEDIR --saveDir SAVEDIR --patientList PATIENTLIST (separated by comma)
  • Screw models should be copied to the Mitk distribution
  • This part of the code does not work as a bash script. Running each command individually works though. The bash script should be located in the folder Screws and the full path to MitkBinaryMask.sh should be defined.
for d in */ ; do
   echo "$d"
   ./MitkBinaryMask.sh -i Elements/Data/Spine/TrainData/Screws/${d%/}
done
  • In Ubuntu 20.04 libtiff installtion might be broken and the following error might appear.
ValueError: Failed to find TIFF header file (may be need to run: sudo apt-get install libtiff4-dev)

The solution is to copy the header file /usr/include/x86_64-linux-gnu/tiff.h to the virtual environment include directory <path-to-venv>/include/

  • There are too many hard coded paths in the config files of deep drr: deep_drr/deep_drr/tools/deep_drr_config.py. Some of the paths also seem to be wrong and should be corrected
  • Running the commands breaks with the error FileNotFoundError: [Errno 2] No such file or directory: '.../Elements/Data/Spine/DRR/patients_LV4_tmp.txt'
from deep_drr.tools import deep_drr_config
from deep_drr.tools import run_deep_drr_projection
cf = deep_drr_config.get_cf_drr_spine(standard="AP", projection_type="drr", base_dir="/media/...")
run_deep_drr_projection.main(cf)
  • nnunet requires some paths to be defined, and they are currently not defined, e.g. RESULTS_PATH
  • Running carmpose_verse_CT --inputDir INPUTDIR --outputDIR OUTPUTDIR breaks with the following error
Please cite the following paper when using nnUNet:

Isensee, F., Jaeger, P.F., Kohl, S.A.A. et al. "nnU-Net: a self-configuring method for deep learning-based biomedical image segmentation." Nat Methods (2020). https://doi.org/10.1038/s41592-020-01008-z


If you have questions or suggestions, feel free to open an issue at https://github.com/MIC-DKFZ/nnUNet

nnUNet_raw_data_base is not defined and nnU-Net can only be used on data for which preprocessed files are already present on your system. nnU-Net cannot be used for experiment planning and preprocessing like this. If this is not intended, please read documentation/setting_up_paths.md for information on how to set this up properly.
nnUNet_preprocessed is not defined and nnU-Net can not be used for preprocessing or training. If this is not intended, please read documentation/setting_up_paths.md for information on how to set this up.
RESULTS_FOLDER is not defined and nnU-Net cannot be used for training or inference. If this is not intended behavior, please read documentation/setting_up_paths.md for information on how to set this up.
Traceback (most recent call last):
  File "/home/menjivar/anaconda3/envs/siemens/bin/carmpose_verse_CT", line 33, in <module>
    sys.exit(load_entry_point('carm-pose', 'console_scripts', 'carmpose_verse_CT')())
  File "/home/menjivar/anaconda3/envs/siemens/bin/carmpose_verse_CT", line 25, in importlib_load_entry_point
    return next(matches).load()
  File "/home/menjivar/anaconda3/envs/siemens/lib/python3.8/importlib/metadata.py", line 77, in load
    module = import_module(match.group('module'))
  File "/home/menjivar/anaconda3/envs/siemens/lib/python3.8/importlib/__init__.py", line 127, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1014, in _gcd_import
  File "<frozen importlib._bootstrap>", line 991, in _find_and_load
  File "<frozen importlib._bootstrap>", line 975, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 671, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 843, in exec_module
  File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
  File "/home/menjivar/DKFZ/siemens/carm_pose/carm_pose/networks/run_verse_CT.py", line 1, in <module>
    from nnunet.inference.predict import predict_cases
  File "/home/menjivar/anaconda3/envs/siemens/lib/python3.8/site-packages/nnunet/inference/predict.py", line 30, in <module>
    from nnunet.training.model_restore import load_model_and_checkpoint_files
  File "/home/menjivar/anaconda3/envs/siemens/lib/python3.8/site-packages/nnunet/training/model_restore.py", line 20, in <module>
    from nnunet.training.network_training.nnUNetTrainer import nnUNetTrainer
  File "/home/menjivar/anaconda3/envs/siemens/lib/python3.8/site-packages/nnunet/training/network_training/nnUNetTrainer.py", line 41, in <module>
    from nnunet.training.network_training.network_trainer import NetworkTrainer
  File "/home/menjivar/anaconda3/envs/siemens/lib/python3.8/site-packages/nnunet/training/network_training/network_trainer.py", line 22, in <module>
    from sklearn.model_selection import KFold
  File "/home/menjivar/anaconda3/envs/siemens/lib/python3.8/site-packages/sklearn/__init__.py", line 64, in <module>
    from .base import clone
  File "/home/menjivar/anaconda3/envs/siemens/lib/python3.8/site-packages/sklearn/base.py", line 13, in <module>
    from .utils.fixes import signature
  File "/home/menjivar/anaconda3/envs/siemens/lib/python3.8/site-packages/sklearn/utils/__init__.py", line 14, in <module>
    from . import _joblib
  File "/home/menjivar/anaconda3/envs/siemens/lib/python3.8/site-packages/sklearn/utils/_joblib.py", line 22, in <module>
    from ..externals import joblib
  File "/home/menjivar/anaconda3/envs/siemens/lib/python3.8/site-packages/sklearn/externals/joblib/__init__.py", line 119, in <module>
    from .parallel import Parallel
  File "/home/menjivar/anaconda3/envs/siemens/lib/python3.8/site-packages/sklearn/externals/joblib/parallel.py", line 28, in <module>
    from ._parallel_backends import (FallbackToBackend, MultiprocessingBackend,
  File "/home/menjivar/anaconda3/envs/siemens/lib/python3.8/site-packages/sklearn/externals/joblib/_parallel_backends.py", line 22, in <module>
    from .executor import get_memmapping_executor
  File "/home/menjivar/anaconda3/envs/siemens/lib/python3.8/site-packages/sklearn/externals/joblib/executor.py", line 14, in <module>
    from .externals.loky.reusable_executor import get_reusable_executor
  File "/home/menjivar/anaconda3/envs/siemens/lib/python3.8/site-packages/sklearn/externals/joblib/externals/loky/__init__.py", line 12, in <module>
    from .backend.reduction import set_loky_pickler
  File "/home/menjivar/anaconda3/envs/siemens/lib/python3.8/site-packages/sklearn/externals/joblib/externals/loky/backend/reduction.py", line 125, in <module>
    from sklearn.externals.joblib.externals import cloudpickle  # noqa: F401
  File "/home/menjivar/anaconda3/envs/siemens/lib/python3.8/site-packages/sklearn/externals/joblib/externals/cloudpickle/__init__.py", line 3, in <module>
    from .cloudpickle import *
  File "/home/menjivar/anaconda3/envs/siemens/lib/python3.8/site-packages/sklearn/externals/joblib/externals/cloudpickle/cloudpickle.py", line 167, in <module>
    _cell_set_template_code = _make_cell_set_template_code()
  File "/home/menjivar/anaconda3/envs/siemens/lib/python3.8/site-packages/sklearn/externals/joblib/externals/cloudpickle/cloudpickle.py", line 148, in _make_cell_set_template_code
    return types.CodeType(
TypeError: an integer is required (got type bytes)