コード例 #1
0
    def test_segmentation(self):
        """Test automatic segmentation
           Expected: NotImplementedError
        """
        scan = self.SCAN_TYPE(dicom_path=self.dicom_dirpath)
        tissue = FemoralCartilage()
        tissue.find_weights(SEGMENTATION_WEIGHTS_FOLDER)
        dims = scan.get_dimensions()
        input_shape = (dims[0], dims[1], 1)
        model = get_model(SEGMENTATION_MODEL,
                          input_shape=input_shape,
                          weights_path=tissue.weights_filepath)

        # automatic segmentation currently not implemented
        with self.assertRaises(NotImplementedError):
            scan.segment(model, tissue)
コード例 #2
0
    def test_t1_rho_map(self):
        scan = self.SCAN_TYPE(dicom_path=self.dicom_dirpath)
        scan.interregister(target_path=QDESS_ECHO1_PATH,
                           target_mask_path=TARGET_MASK_PATH)

        # run analysis with femoral cartilage, without mask
        tissue = FemoralCartilage()
        map1 = scan.generate_t1_rho_map(tissue, TARGET_MASK_PATH)
        assert map1 is not None, "map should not be None"

        # add mask to femoral cartilage and run
        nr = NiftiReader()
        tissue.set_mask(nr.load(TARGET_MASK_PATH))
        map2 = scan.generate_t1_rho_map(tissue)
        assert map2 is not None, "map should not be None"

        # map1 and map2 should be identical
        assert (map1.volumetric_map.is_identical(map2.volumetric_map))
コード例 #3
0
    def test_quant_val_fitting(self):
        """Test quantitative fitting (T1-rho, T2)"""
        scan = self.SCAN_TYPE(dicom_path=self.dicom_dirpath)

        actions = [scan.generate_t1_rho_map, scan.generate_t2_map]
        for action in actions:
            tissue = FemoralCartilage()
            map1 = action(tissue, MANUAL_SEGMENTATION_MASK_PATH)
            assert map1 is not None, "%s: map1 should not be None" % str(
                action)

            nr = NiftiReader()
            tissue.set_mask(nr.load(MANUAL_SEGMENTATION_MASK_PATH))
            map2 = action(tissue)
            assert map2 is not None, "%s: map2 should not be None" % str(
                action)

            # map1 and map2 should be identical
            assert map1.volumetric_map.is_identical(
                map2.volumetric_map
            ), "%s: map1 and map2 should be identical" % str(action)
コード例 #4
0
 def get_vargin(self):
     vargin = dict()
     vargin[pipeline.TISSUES_KEY] = [FemoralCartilage()]
     vargin[pipeline.DICOM_KEY] = DESS_003_DICOM_PATH
     vargin[pipeline.SAVE_KEY] = DESS_003_DICOM_PATH
     vargin[pipeline.LOAD_KEY] = None
     vargin[pipeline.EXT_KEY] = 'dcm'
     vargin[pipeline.SEGMENTATION_MODEL_KEY] = 'unet2d'
     vargin[pipeline.SEGMENTATION_WEIGHTS_DIR_KEY] = './weights'
     vargin[pipeline.ACTION_KEY] = 'segment'
     vargin[pipeline.SEGMENTATION_BATCH_SIZE_KEY] = 32
     vargin[pipeline.T2_KEY] = False
     return vargin
コード例 #5
0
    def get_vargin(self):
        vargin = dict()
        vargin[pipeline.TISSUES_KEY] = [FemoralCartilage()]
        vargin[pipeline.DICOM_KEY] = CUBEQUANT_DICOM_PATH
        vargin[pipeline.SAVE_KEY] = SAVE_PATH
        vargin[pipeline.EXT_KEY] = 'dcm'
        vargin[pipeline.T1_RHO_Key] = False
        vargin[pipeline.INTERREGISTERED_FILES_DIR_KEY] = None
        vargin[pipeline.ACTION_KEY] = None
        vargin[pipeline.TARGET_SCAN_KEY] = None
        vargin[pipeline.TARGET_MASK_KEY] = None
        vargin[pipeline.LOAD_KEY] = None

        return vargin
コード例 #6
0
    def test_loading_data(self):
        vargin = self.get_vargin()
        vargin[pipeline.T2_KEY] = True

        scan = pipeline.handle_dess(vargin)
        mask = scan.tissues[0].mask
        t2_map = scan.t2map

        pipeline.save_info(vargin[pipeline.SAVE_KEY], scan)

        fc = FemoralCartilage()
        fc.load_data(vargin[pipeline.SAVE_KEY])

        mask2 = fc.__mask__

        assert ((mask == mask2).all())
コード例 #7
0
    def test_femoral_cartilage(self):

        if not os.path.isdir(SAVE_PATH):
            self.segment_dess()

        vargin = {
            'dicom': None,
            'save': 'dicoms/healthy07/data',
            'load': 'dicoms/healthy07/data',
            'ext': 'dcm',
            'gpu': None,
            'scan': 'tissues',
            'fc': True,
            't2': 'dicoms/healthy07/data/dess_data/t2.h5',
            't1_rho': None,
            't2_star': None,
            'tissues': [FemoralCartilage()]
        }

        tissues = pipeline.handle_tissues(vargin)

        for tissue in tissues:
            tissue.save_data(vargin[pipeline.SAVE_KEY])
コード例 #8
0
mask_filepath_left = repo_folder + 'data/005/LEFT/fc/fc.nii.gz'

t2_filepath_right = repo_folder + 'data/005/RIGHT/dess_data/t2.nii.gz'
mask_filepath_right = repo_folder + 'data/005/RIGHT/fc/fc.nii.gz'

sub_id = 7
scan_id = 1

#weights_dir = '/home/marco.b215/msk_pipeline_data/weights'

## inizializzare mappa t2 e femoral cartilage

t2_par = QuantitativeValues(2)

dess_l = Dess(dicom_path_l)
fc_l = FemoralCartilage()
fc_l.pid = sub_id
fc_l.scan = scan_id

dess_r = Dess(dicom_path_r)
fc_r = FemoralCartilage()
fc_r.pid = sub_id
fc_r.scan = scan_id
fc_r.medial_to_lateral = True

dess_l.t2map = load_nifti(t2_filepath_left)
dess_r.t2map = load_nifti(t2_filepath_right)

fc_l.__mask__ = load_nifti(mask_filepath_left)
fc_r.__mask__ = load_nifti(mask_filepath_right)
コード例 #9
0
import argparse
import os
import time

import defaults
import file_constants as fc
from models.get_model import SUPPORTED_MODELS
from models.get_model import get_model
from msk import knee
from scan_sequences.cones import Cones
from scan_sequences.cube_quant import CubeQuant
from scan_sequences.dess import Dess
from tissues.femoral_cartilage import FemoralCartilage
from utils.quant_vals import QuantitativeValues as QV

SUPPORTED_TISSUES = [FemoralCartilage()]
SUPPORTED_QUANTITATIVE_VALUES = [QV.T2, QV.T1_RHO, QV.T2_STAR]

DEBUG_KEY = 'debug'

DICOM_KEY = 'dicom'
MASK_KEY = 'mask'
SAVE_KEY = 'save'
LOAD_KEY = 'load'
EXT_KEY = 'ext'
GPU_KEY = 'gpu'

SCAN_KEY = 'scan'
DESS_SCAN_KEY = 'dess'
CUBEQUANT_SCAN_KEYS = ['cubequant', 'cq']
CONES_KEY = 'cones'