Diff of /src/preprocess_mask.py [000000] .. [e918fa]

Switch to side-by-side view

--- a
+++ b/src/preprocess_mask.py
@@ -0,0 +1,102 @@
+#!/usr/bin/env python
+import os
+from os import path
+import sys
+import numpy as np
+import nibabel as nib
+import argparse
+import pathlib
+
+def process_trainingdata(mask_arr):
+    count = 0
+    for b0_mask in mask_arr:
+        img = nib.load(b0_mask)
+        imgU8_sagittal = img.get_fdata().astype(np.uint8) # sagittal view
+        imgU8_sagittal[ imgU8_sagittal < 0 ] = 0        
+        imgU8_sagittal[ imgU8_sagittal > 1 ] = 1        
+        imgU8_coronal = np.swapaxes(imgU8_sagittal,0,1) # coronal view
+        imgU8_axial = np.swapaxes(imgU8_sagittal,0,2)   # Axial view
+
+        # dwi mask volume data is written to the binary file
+        imgU8_sagittal.tofile(sagittal_f_handle)
+        imgU8_coronal.tofile(coronal_f_handle)
+        imgU8_axial.tofile(axial_f_handle)
+
+        print('Case ' + str(count) + ' done')
+        count = count + 1
+
+    # Closing the binary file
+    sagittal_f_handle.close()
+    axial_f_handle.close()
+    coronal_f_handle.close()
+
+# parser module for input arguments
+SUFFIX_TXT = "txt"
+parser = argparse.ArgumentParser()
+parser.add_argument('-i', action='store', dest='mask', type=str,
+                        help="txt file containing list of /path/to/mask, one path in each line")
+args = parser.parse_args()
+
+try:
+    args = parser.parse_args()
+    if len(sys.argv) == 1:
+        parser.print_help()
+        parser.error('too few arguments')
+        sys.exit(0)
+
+except SystemExit:
+    sys.exit(0)
+
+if args.mask:
+    f = pathlib.Path(args.mask)
+    if f.exists():
+        print ("File exist")
+        filename = args.mask
+    else:
+        print ("File not found")
+        sys.exit(1)
+
+    # Input caselist.txt
+    if filename.endswith(SUFFIX_TXT):
+        with open(filename) as f:
+            mask_arr = f.read().splitlines()
+
+
+storage = path.dirname(mask_arr[0])
+
+# dwi cases mask will be written to the below binary files
+sagittal_bin_file = storage + '/sagittal-binary-mask'
+coronal_bin_file = storage + '/coronal-binary-mask'
+axial_bin_file = storage + '/axial-binary-mask'
+
+# The above binary files will be converted to 3D numpy array
+sagittal_trainingdata = storage + '/sagittal-traindata-mask.npy'
+coronal_trainingdata = storage + '/coronal-traindata-mask.npy'
+axial_trainingdata = storage + '/axial-traindata-mask.npy'
+
+# Open the binary file for writing
+sagittal_f_handle = open(sagittal_bin_file, 'wb')
+coronal_f_handle = open(coronal_bin_file, 'wb')
+axial_f_handle = open(axial_bin_file, 'wb')
+
+process_trainingdata(mask_arr)
+
+x_dim=len(mask_arr)*256
+y_dim=256
+z_dim=256
+
+# Open the binary file and convert it to 3D numpy array
+merge_sagittal = np.memmap(sagittal_bin_file, dtype=np.uint8, mode='r+', shape=(x_dim, y_dim, z_dim))
+print("Saving sagittal training data mask to disk")
+np.save(sagittal_trainingdata, merge_sagittal)
+os.unlink(sagittal_bin_file)
+
+merge_coronal = np.memmap(coronal_bin_file, dtype=np.uint8, mode='r+', shape=(x_dim, y_dim, z_dim))
+print("Saving coronal training data mask to disk")
+np.save(coronal_trainingdata, merge_coronal)
+os.unlink(coronal_bin_file)
+
+merge_axial = np.memmap(axial_bin_file, dtype=np.uint8, mode='r+', shape=(x_dim, y_dim, z_dim))
+print("Saving axial training data mask to disk")
+np.save(axial_trainingdata, merge_axial)
+os.unlink(axial_bin_file)
\ No newline at end of file