Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
def test_DATAIO_SampleLoader_Combined(self):
data_io = Data_IO(self.io_interface, input_path="", output_path="",
batch_path=self.tmp_batches, delete_batchDir=False)
sample = data_io.sample_loader("TEST.sample_3", backup=False,
load_seg=True, load_pred=True)
self.assertIsNotNone(sample.img_data)
self.assertIsNotNone(sample.seg_data)
self.assertIsNotNone(sample.pred_data)
self.assertEqual(sample.img_data.shape, sample.seg_data.shape)
self.assertEqual(sample.seg_data.shape, sample.pred_data.shape)
for i in range(0, 10):
img = np.random.rand(16, 16, 16) * 255
self.img = img.astype(int)
seg = np.random.rand(16, 16, 16) * 3
self.seg = seg.astype(int)
if i in range(8,10): sample = (self.img, None)
else : sample = (self.img, self.seg)
self.dataset3D["TEST.sample_" + str(i)] = sample
# Initialize Dictionary IO Interface
io_interface3D = Dictionary_interface(self.dataset3D, classes=3,
three_dim=True)
# Initialize temporary directory
self.tmp_dir3D = tempfile.TemporaryDirectory(prefix="tmp.miscnn.")
tmp_batches = os.path.join(self.tmp_dir3D.name, "batches")
# Initialize Data IO
self.data_io3D = Data_IO(io_interface3D, input_path="", output_path="",
batch_path=tmp_batches, delete_batchDir=False)
def test_SUBFUNCTIONS_postprocessing(self):
ds = dict()
for i in range(0, 10):
img = np.random.rand(16, 16, 16) * 255
img = img.astype(int)
seg = np.random.rand(16, 16, 16) * 3
seg = seg.astype(int)
sample = (img, seg)
ds["TEST.sample_" + str(i)] = sample
io_interface = Dictionary_interface(ds, classes=3, three_dim=True)
self.tmp_dir = tempfile.TemporaryDirectory(prefix="tmp.miscnn.")
tmp_batches = os.path.join(self.tmp_dir.name, "batches")
dataio = Data_IO(io_interface, input_path="", output_path="",
batch_path=tmp_batches, delete_batchDir=False)
sf = [Resize((9,9,9)), Normalization(), Clipping(min=-1.0, max=0.0)]
pp = Preprocessor(dataio, batch_size=1, prepare_subfunctions=False,
analysis="patchwise-grid", subfunctions=sf,
patch_shape=(4,4,4))
sample_list = dataio.get_indiceslist()
for index in sample_list:
sample = dataio.sample_loader(index)
for sf in pp.subfunctions:
sf.preprocessing(sample, training=False)
pp.cache["shape_" + str(index)] = sample.img_data.shape
sample.seg_data = np.random.rand(9, 9, 9) * 3
sample.seg_data = sample.seg_data.astype(int)
sample.seg_data = to_categorical(sample.seg_data, num_classes=3)
data_patches = pp.analysis_patchwise_grid(sample, training=True,
data_aug=False)
# Create 3D imgaging and segmentation data set
self.dataset3D = dict()
for i in range(0, 6):
img = np.random.rand(16, 16, 16) * 255
self.img = img.astype(int)
seg = np.random.rand(16, 16, 16) * 3
self.seg = seg.astype(int)
self.dataset3D["TEST.sample_" + str(i)] = (self.img, self.seg)
# Initialize Dictionary IO Interface
io_interface3D = Dictionary_interface(self.dataset3D, classes=3,
three_dim=True)
# Initialize temporary directory
self.tmp_dir3D = tempfile.TemporaryDirectory(prefix="tmp.miscnn.")
tmp_batches = os.path.join(self.tmp_dir3D.name, "batches")
# Initialize Data IO
self.data_io3D = Data_IO(io_interface3D,
input_path=os.path.join(self.tmp_dir3D.name),
output_path=os.path.join(self.tmp_dir3D.name),
batch_path=tmp_batches, delete_batchDir=False)
# Initialize Preprocessor
self.pp3D = Preprocessor(self.data_io3D, batch_size=2,
data_aug=None, analysis="fullimage")
# Initialize Neural Network
model = Neural_Network(self.pp3D)
# Get sample list
self.sample_list3D = self.data_io3D.get_indiceslist()
eval_path = os.path.join(self.tmp_dir3D.name, "evaluation")
leave_one_out(self.sample_list3D, model, epochs=3, iterations=None,
evaluation_path=eval_path, callbacks=[])
self.assertTrue(os.path.exists(eval_path))
# Cleanup stuff
# Create 2D imgaging and segmentation data set
self.dataset = dict()
for i in range(0, 6):
img = np.random.rand(16, 16) * 255
self.img = img.astype(int)
seg = np.random.rand(16, 16) * 2
self.seg = seg.astype(int)
self.dataset["TEST.sample_" + str(i)] = (self.img, self.seg)
# Initialize Dictionary IO Interface
io_interface = Dictionary_interface(self.dataset, classes=3,
three_dim=False)
# Initialize temporary directory
self.tmp_dir = tempfile.TemporaryDirectory(prefix="tmp.miscnn.")
tmp_batches = os.path.join(self.tmp_dir.name, "batches")
# Initialize Data IO
self.data_io = Data_IO(io_interface,
input_path=os.path.join(self.tmp_dir.name),
output_path=os.path.join(self.tmp_dir.name),
batch_path=tmp_batches, delete_batchDir=False)
# Initialize Preprocessor
self.pp = Preprocessor(self.data_io, batch_size=2,
data_aug=None, analysis="fullimage")
# Initialize Neural Network
self.model = Neural_Network(self.pp)
# Get sample list
self.sample_list = self.data_io.get_indiceslist()
def test_SUBFUNCTIONS_prepare(self):
ds = dict()
for i in range(0, 10):
img = np.random.rand(16, 16, 16) * 255
img = img.astype(int)
seg = np.random.rand(16, 16, 16) * 3
seg = seg.astype(int)
sample = (img, seg)
ds["TEST.sample_" + str(i)] = sample
io_interface = Dictionary_interface(ds, classes=3, three_dim=True)
self.tmp_dir = tempfile.TemporaryDirectory(prefix="tmp.miscnn.")
tmp_batches = os.path.join(self.tmp_dir.name, "batches")
dataio = Data_IO(io_interface, input_path="", output_path="",
batch_path=tmp_batches, delete_batchDir=False)
sf = [Resize((8,8,8)), Normalization(), Clipping(min=-1.0, max=0.0)]
pp = Preprocessor(dataio, batch_size=1, prepare_subfunctions=True,
analysis="fullimage", subfunctions=sf)
sample_list = dataio.get_indiceslist()
pp.run_subfunctions(sample_list, training=True)
batches = pp.run(sample_list, training=True, validation=False)
self.assertEqual(len(os.listdir(tmp_batches)), 10)
for i in range(0, 10):
file_prepared_subfunctions = os.path.join(tmp_batches,
str(pp.data_io.seed) + ".TEST.sample_" + str(i) + ".pickle")
self.assertTrue(os.path.exists(file_prepared_subfunctions))
img = batches[i][0]
seg = batches[i][1]
self.assertIsNotNone(img)
self.assertIsNotNone(seg)
# Create 2D imgaging and segmentation data set
self.dataset2D = dict()
for i in range(0, 6):
img = np.random.rand(16, 16) * 255
self.img = img.astype(int)
seg = np.random.rand(16, 16) * 3
self.seg = seg.astype(int)
self.dataset2D["TEST.sample_" + str(i)] = (self.img, self.seg)
# Initialize Dictionary IO Interface
io_interface2D = Dictionary_interface(self.dataset2D, classes=3,
three_dim=False)
# Initialize temporary directory
self.tmp_dir2D = tempfile.TemporaryDirectory(prefix="tmp.miscnn.")
tmp_batches = os.path.join(self.tmp_dir2D.name, "batches")
# Initialize Data IO
self.data_io2D = Data_IO(io_interface2D,
input_path=os.path.join(self.tmp_dir2D.name),
output_path=os.path.join(self.tmp_dir2D.name),
batch_path=tmp_batches, delete_batchDir=False)
# Initialize Preprocessor
self.pp2D = Preprocessor(self.data_io2D, batch_size=2,
data_aug=None, analysis="fullimage")
# Get sample list
self.sample_list2D = self.data_io2D.get_indiceslist()
# Create 3D imgaging and segmentation data set
self.dataset3D = dict()
for i in range(0, 6):
img = np.random.rand(16, 16, 16) * 255
self.img = img.astype(int)
seg = np.random.rand(16, 16, 16) * 3
self.seg = seg.astype(int)
self.dataset3D["TEST.sample_" + str(i)] = (self.img, self.seg)
def test_DATAIO_BATCHES_cleanup(self):
data_io = Data_IO(self.io_interface, input_path="", output_path="",
batch_path=self.tmp_batches, delete_batchDir=False)
sample = data_io.sample_loader("TEST.sample_0", backup=False,
load_seg=True, load_pred=False)
data_io.backup_batches(sample.img_data, sample.seg_data, "abc")
data_io.backup_batches(sample.img_data, sample.seg_data, "def")
data_io.backup_batches(sample.img_data, None, pointer="ghi")
self.assertEqual(len(os.listdir(self.tmp_batches)), 5)
data_io.batch_cleanup(pointer="def")
self.assertEqual(len(os.listdir(self.tmp_batches)), 3)
data_io.batch_cleanup()
self.assertEqual(len(os.listdir(self.tmp_batches)), 0)
# Create 2D imgaging and segmentation data set
self.dataset2D = dict()
for i in range(0, 10):
img = np.random.rand(16, 16) * 255
self.img = img.astype(int)
seg = np.random.rand(16, 16) * 2
self.seg = seg.astype(int)
self.dataset2D["TEST.sample_" + str(i)] = (self.img, self.seg)
# Initialize Dictionary IO Interface
io_interface2D = Dictionary_interface(self.dataset2D, classes=3,
three_dim=False)
# Initialize temporary directory
self.tmp_dir2D = tempfile.TemporaryDirectory(prefix="tmp.miscnn.")
tmp_batches = os.path.join(self.tmp_dir2D.name, "batches")
# Initialize Data IO
self.data_io2D = Data_IO(io_interface2D, input_path="", output_path="",
batch_path=tmp_batches, delete_batchDir=False)
# Create 3D imgaging and segmentation data set
self.dataset3D = dict()
for i in range(0, 10):
img = np.random.rand(16, 16, 16) * 255
self.img = img.astype(int)
seg = np.random.rand(16, 16, 16) * 3
self.seg = seg.astype(int)
if i in range(8,10): sample = (self.img, None)
else : sample = (self.img, self.seg)
self.dataset3D["TEST.sample_" + str(i)] = sample
# Initialize Dictionary IO Interface
io_interface3D = Dictionary_interface(self.dataset3D, classes=3,
three_dim=True)
# Initialize temporary directory
self.tmp_dir3D = tempfile.TemporaryDirectory(prefix="tmp.miscnn.")
##
## Based on the KITS 19 data set (Kidney Tumor Segmentation Challenge 2019)
## Data Set: https://github.com/neheller/kits19
# Import all libraries we need
from miscnn import Data_IO, Preprocessor, Neural_Network
from miscnn.data_loading.interfaces import NIFTIslicer_interface
from miscnn.processing.subfunctions import Resize
import numpy as np
# Initialize the NIfTI interface IO slicer variant
interface = NIFTIslicer_interface(pattern="case_0000[0-3]", channels=1, classes=3)
# Initialize the Data IO class
data_path = "/home/mudomini/projects/KITS_challenge2019/kits19/data.interpolated/"
data_io = Data_IO(interface, data_path, delete_batchDir=False)
# Obtain the list of samples from our data set
## A sample is defined as a single slice (2D image)
samples_list = data_io.get_indiceslist()
samples_list.sort()
# Let's test out, if the the NIfTI slicer interface works like we want
# and output the image and segmentation shape of a random slice
sample = data_io.sample_loader("case_00002:#:42", load_seg=True)
print(sample.img_data.shape, sample.seg_data.shape)
## As you hopefully noted, the index of a slice is defined
## as the volume file name and the slice number separated with a ":#:"
# Specify subfunctions for preprocessing
## Here we are using the Resize subfunctions due to many 2D models