def main(): # logger = logging.getLogger() logger.setLevel(logging.WARNING) ch = logging.StreamHandler() logger.addHandler(ch) # logger.debug('input params') # input parser parser = argparse.ArgumentParser(description='\ 3D visualization of segmentation\n\ \npython show_segmentation.py\n\ \npython show_segmentation.py -i resection.pkl -l 2 3 4 -d 4') parser.add_argument('-i', '--inputfile', default='organ.pkl', help='input file') parser.add_argument('-o', '--outputfile', default='~/lisa_data/mesh_geom.vtk', help='output file') parser.add_argument('-d', '--degrad', type=int, default=4, help='data degradation, default 4') parser.add_argument( '-r', '--resize', type=float, default=None, help='resize voxel to defined size in milimeters, default is None') parser.add_argument('-l', '--label', type=int, metavar='N', nargs='+', default=[1], help='segmentation labels, default 1') args = parser.parse_args() # data = misc.obj_from_file(args.inputfile, filetype='pickle') import io3d data = io3d.read(args.inputfile, dataplus_format=True) # args.label = np.array(eval(args.label)) # print args.label # import pdb; pdb.set_trace() ds = np.zeros(data['segmentation'].shape, np.bool) for i in range(0, len(args.label)): ds = ds | (data['segmentation'] == args.label[i]) outputfile = os.path.expanduser(args.outputfile) showSegmentation(ds, degrad=args.degrad, voxelsize_mm=data['voxelsize_mm'], vtk_file=outputfile, resize_mm=args.resize)
def main(): parser = argparse.ArgumentParser( description='data3dviewer - Viewer for 3d data (mostly from CT)') parser.add_argument('path', help='Path to directory with 3d data') parser.add_argument('-d', '--debug', action='store_true', help='Debug mode') args = parser.parse_args() logging.basicConfig(stream=sys.stdout) logger = logging.getLogger() logger.setLevel(logging.WARNING) if args.debug: logger.setLevel(logging.DEBUG) # load dicom data logger.info("Loading 3d data from: %s" % os.path.abspath(args.path)) datap = io3d.read(os.path.abspath(args.path), dataplus_format=True) data3d = datap["data3d"] logger.info("voxelsize: %s" % str(datap["voxelsize_mm"])) # temporary fix for io3d <-512;511> value range bug # this is caused by hardcoded slope 0.5 in dcmreader if np.min(data3d) >= -512: data3d = data3d * 2 # display data ed = sed3.sed3(data3d) ed.show()
def add_data_file(self, filename): import io3d datap = io3d.read(filename, dataplus_format=True) if not 'segmentation' in datap.keys(): datap['segmentation'] = datap['data3d'] self.add_data(**datap)
def get_old(dataset_label, data_id, destination_dir=None): """Get the 3D data from specified dataset with specified id. Download data if necessary. :param dataset_label: :param data_id: integer or wildcards file pattern :param destination_dir: :return: """ # TODO implement if destination_dir is None: destination_dir = op.join(dataset_path(get_root=True), "medical", "orig") destination_dir = op.expanduser(destination_dir) data_url, url, expected_hash, hash_path, relative_output_path = get_dataset_meta( dataset_label ) paths = glob.glob(os.path.join(destination_dir, hash_path)) paths.sort() import fnmatch print(paths) print(data_id) pathsf = fnmatch.filter(paths, data_id) print(pathsf) datap = io3d.read(pathsf[0], dataplus_format=True) return datap
def setUpClass(cls): datap = io3d.read( io3d.datasets.join_path(TEST_DATA_DIR, "PATIENT_DICOM"), dataplus_format=True) cls.obj = bodynavigation.BodyNavigation(datap["data3d"], datap["voxelsize_mm"]) cls.data3d = datap["data3d"] cls.shape = datap["data3d"].shape
def main(): import io3d logger = logging.getLogger() logger.setLevel(logging.DEBUG) ch = logging.StreamHandler() logger.addHandler(ch) # create file handler which logs even debug messages # fh = logging.FileHandler('log.txt') # fh.setLevel(logging.DEBUG) # formatter = logging.Formatter( # '%(asctime)s - %(name)s - %(levelname)s - %(message)s') # fh.setFormatter(formatter) # logger.addHandler(fh) # logger.debug('start') # input parser parser = argparse.ArgumentParser(description=__doc__) parser.add_argument( '-i', '--inputfile', default=None, # required=True, help='input file') parser.add_argument( '--dict', default="{'jatra':2, 'ledviny':7}", # required=True, help='input dict') parser.add_argument('-d', '--debug', action='store_true', help='Debug mode') args = parser.parse_args() if args.debug: ch.setLevel(logging.DEBUG) app = QtGui.QApplication(sys.argv) # w = QtGui.QWidget() # w = DictEdit(dictionary={'jatra':2, 'ledviny':7}) if args.inputfile is None: datap = {'segmentation': None} else: datap = io3d.read(args.inputfile, dataplus_format=True) if not 'segmentation' in datap.keys(): datap['segmentation'] = datap['data3d'] # import ipdb; ipdb.set_trace() w = ShowSegmentationWidget(show_load_button=True, **datap) # w = SelectLabelWidget(segmentation=datap["segmentation"]) w.resize(250, 150) w.move(300, 300) w.setWindowTitle('Simple') w.show() sys.exit(app.exec_())
def setUpClass(cls): datap = io3d.read(io3d.datasets.join_path(TEST_DATA_DIR, "PATIENT_DICOM"), dataplus_format=True) cls.obj = bodynavigation.BodyNavigation(datap["data3d"], datap["voxelsize_mm"]) cls.data3d = datap["data3d"] cls.shape = datap["data3d"].shape
def test_read_dataset_where_is_voxelsize_equal_zero(self): """ voxelsize_mm[0] should be grater than zero """ dcmdir = r"E:\data\medical\orig\ct_porcine_liver\P03\23-9-13_23913\Makro\VEN_ABDOMEN_5_0_B31S_0002" # dcmdir = r"E:\data\medical\orig\ct porctine liver\P01\29-8-12-a\Nejlep_rozli_nevycistene" datap = io3d.read(dcmdir) self.assertGreater(datap["voxelsize_mm"][0], 0)
def test_read_dataset_where_is_voxelsize_equal_zero(self): """ voxelsize_mm[0] should be grater than zero """ dcmdir = r"E:\data\medical\orig\ct_porcine_liver\P03\23-9-13_23913\Makro\VEN_ABDOMEN_5_0_B31S_0002" # dcmdir = r"E:\data\medical\orig\ct porctine liver\P01\29-8-12-a\Nejlep_rozli_nevycistene" datap = io3d.read(dcmdir) self.assertGreater(datap["voxelsize_mm"][0], 0)
def test_read_mhd_and_write_pklz(self): """ test data on sliver dataset :return: """ infn = op.join(op.expanduser(io3d.datasets.local_dir), "sliver07/training/liver-orig001.mhd") datap = io3d.read(infn, dataplus_format=True) datap["segmentation"] = np.zeros_like(datap["data3d"], dtype=np.uint8) io3d.write(datap, path="test_mhd.pklz")
def setUpClass(cls): # hide io3d logger logging.getLogger("io3d").setLevel(logging.WARNING) # init dataset information cls.dataset = loadDatasetsInfo()[DATASET_NAME] cls.dataset = joinDatasetPaths(cls.dataset, ROOT_PATH) # init OrganDetection object datap = io3d.read(cls.dataset["CT_DATA_PATH"], dataplus_format=True) cls.obj = OrganDetection(datap["data3d"], datap["voxelsize_mm"])
def test_read_mhd_and_write_pklz(self): """ test data on sliver dataset :return: """ # infn = op.join(op.expanduser(io3d.datasets.local_dir), "sliver07/training/liver-orig001.mhd") infn = io3d.datasets.join_path("liver-orig001.mhd") datap = io3d.read(infn, dataplus_format=True) datap["segmentation"] = np.zeros_like(datap["data3d"], dtype=np.uint8) io3d.write(datap, path="test_mhd.pklz")
def setUpClass(cls): # hide io3d logger logging.getLogger("io3d").setLevel(logging.WARNING) # init dataset information cls.dataset = loadDatasetsInfo()[DATASET_NAME] cls.dataset = joinDatasetPaths(cls.dataset, ROOT_PATH) # init OrganDetection object datap = io3d.read(cls.dataset["CT_DATA_PATH"], dataplus_format=True) cls.obj = OrganDetection(datap["data3d"], datap["voxelsize_mm"])
def test_read_and_write_dataset_to_fix_problem_with_out_of_memory(self): """ voxelsize_mm[0] should be grater than zero """ dcmdir = r"E:\data\medical\orig\ct_porcine_liver\P01\29-8-12-a\MIkroCT-nejhrubsi_rozliseni\DICOM_liver-1st-important_Macro_pixel-size53.0585um" # dcmdir = r"E:\tmp\data\medical\orig\ct_porcine_liver\P01\29-8-12-a\MIkroCT-nejhrubší rozlišení\DICOM_liver-1st-important_Macro_pixel-size53.0585um" # dcmdir = r"E:\data\medical\orig\ct porctine liver\P01\29-8-12-a\Nejlep_rozli_nevycistene" datap = io3d.read(dcmdir) io3d.write(datap, "~/tmp/nejhrubsi.mhd") self.assertGreater(datap["voxelsize_mm"][0], 0)
def test_read_and_write_dataset_to_fix_problem_with_out_of_memory(self): """ voxelsize_mm[0] should be grater than zero """ dcmdir = r"E:\data\medical\orig\ct_porcine_liver\P01\29-8-12-a\MIkroCT-nejhrubsi_rozliseni\DICOM_liver-1st-important_Macro_pixel-size53.0585um" # dcmdir = r"E:\tmp\data\medical\orig\ct_porcine_liver\P01\29-8-12-a\MIkroCT-nejhrubší rozlišení\DICOM_liver-1st-important_Macro_pixel-size53.0585um" # dcmdir = r"E:\data\medical\orig\ct porctine liver\P01\29-8-12-a\Nejlep_rozli_nevycistene" datap = io3d.read(dcmdir) io3d.write(datap, "~/tmp/nejhrubsi.mhd") self.assertGreater(datap["voxelsize_mm"][0], 0)
def get(dataset_label, series_number=None, *args, **kwargs): """ :param dataset_label: label from data_urls :param series_number: Series identification in study. :param args: :param kwargs: :return: """ # relative path in the datasets relative_path_extracted_from_data_urls = "" datapath = join_path( relative_path_extracted_from_data_urls, "medical", "data", get_root=True ) # read 3D data from datapath datap = io3d.read( datapath, series_number=series_number, dataplus_format=True, *args, **kwargs ) return datap
def loadscan2(scannum): ''' Load a scan along with its labels (from second dataset). Parameters scannum - id of the loaded scan ---- returns [[slice, label], [slice, label], ...] ''' datap = io3d.read( f'data/medical/orig/sliver07/training/liver-orig0{str(scannum).zfill(2)}.mhd' ) data3d = datap['data3d'] scan = [] i = 1 for slice in data3d: id = getsliceid2(scannum, i) scan.append([slice, id]) i += 1 return scan
def loadscan(scannum): ''' Load a scan along with its labels (from Ircad dataset). Parameters scannum - id of the loaded scan ---- returns [[slice, label], [slice, label], ...] ''' pth = io3d.datasets.join_path( 'medical/orig/3Dircadb1.{}/PATIENT_DICOM/'.format(scannum), get_root=True) datap = io3d.read(pth) data3d = datap['data3d'] scan = [] i = 1 for slice in data3d: id = getsliceid(scannum, i) scan.append([slice, id]) i += 1 return scan
def main(): logger = logging.getLogger() logger.setLevel(logging.WARNING) ch = logging.StreamHandler() logger.addHandler(ch) # logger.debug('input params') # input parser parser = argparse.ArgumentParser(description='\ 3D visualization of segmentation\n\ \npython show_segmentation.py\n\ \npython show_segmentation.py -i resection.pkl -l 2 3 4 -d 4') parser.add_argument('-i', '--inputfile', default="organ.pklz", help='input file') parser.add_argument('-o', '--outputfile', default='~/lisa_data/mesh_geom.vtk', help='output file') parser.add_argument('-d', '--degrad', type=int, default=4, help='data degradation, default 4') parser.add_argument( '-r', '--resize', type=float, default=None, help='resize voxel to defined size in milimeters, default is None') parser.add_argument( '-rvn', '--resize-voxel-number', type=float, default=None, help='resize voxel to defined number of voxels, default is None') parser.add_argument('-l', '--label', type=int, metavar='N', nargs='+', default=[1], help='segmentation labels, default 1') args = parser.parse_args() # data = misc.obj_from_file(args.inputfile, filetype='pickle') # if args.inputfile is None: # ds = None # data = { # "voxelsize_mm": [1, 1, 1] # } # else: import io3d data = io3d.read(args.inputfile, dataplus_format=True) # args.label = np.array(eval(args.label)) # print args.label if "segmentation" in data.keys() and np.sum(data["segmentation"] > 0): segmentation_key = "segmentation" else: segmentation_key = "data3d" # import pdb; pdb.set_trace() _stats(data[segmentation_key]) ds = select_labels(data[segmentation_key], args.label) # ds = ds.astype("uint8") # tonzero_voxels_number = np.sum(ds != 0) # if nonzero_voxels_number == 0: # ds = data["data3d"] > 0 outputfile = os.path.expanduser(args.outputfile) showSegmentation(ds, degrad=args.degrad, voxelsize_mm=data['voxelsize_mm'], vtk_file=outputfile, resize_mm=args.resize, resize_voxel_number=args.resize_voxel_number)
def test_idx_data(self): io3d.read("/home/mjirik/data/medical/orig/cvd-matrm3/microscopy_data/MM358-001-uint8.idx")
parser = argparse.ArgumentParser(description='Registration data from different files') parser.add_argument('-d', '--debug', action='store_true', help='run in debug mode') parser.add_argument('-i', '--inputfile', default=None, nargs="N", help='input file or directory with data') parser.add_argument('-o', '--outpufile', default=None, help='output file or directory with data') args = parser.parse_args() if args.debug: logger.setLevel(logging.DEBUG) for fn in args.inputfile: datap = io3d.read(fn) # pyed = sed3.sed3(datap['data3d'], contour=datap['segmentation'] == datap['slab']['porta']) # pyed.show() #pyed = sed3.sed3(data['segmentation']) #pyed.show() # Uvolneni pameti if args.outputfile == None: io3d.write(datap_out, args.outpufile)
def test_read_python27_pickle(self): import io3d datap = io3d.read(io3d.datasets.join_path("exp_small", "seeds", "org-liver-orig003-seeds.pklz"), dataplus_format=True) self.assertTrue("segmentation" in datap)
parser.add_argument('-d', '--debug', action='store_true', help='run in debug mode') parser.add_argument('-i', '--inputfile', default=None, nargs="N", help='input file or directory with data') parser.add_argument('-o', '--outpufile', default=None, help='output file or directory with data') args = parser.parse_args() if args.debug: logger.setLevel(logging.DEBUG) for fn in args.inputfile: datap = io3d.read(fn) # pyed = sed3.sed3(datap['data3d'], contour=datap['segmentation'] == datap['slab']['porta']) # pyed.show() #pyed = sed3.sed3(data['segmentation']) #pyed.show() # Uvolneni pameti if args.outputfile == None: io3d.write(datap_out, args.outpufile)
def load3DData(path): return io3d.read(path)[0]
def test_idx_data(self): io3d.read( "/home/mjirik/data/medical/orig/cvd-matrm3/microscopy_data/MM358-001-uint8.idx" )
def test_read_python27_pickle(self): import io3d datap = io3d.read(io3d.datasets.join_path( "exp_small", "seeds", "org-liver-orig003-seeds.pklz"), dataplus_format=True) self.assertTrue("segmentation" in datap)
def test_read_big_big_data(self): """ files in nejlepsi_rozli_nevycistene """ dcmdir = r"E:\data\medical\orig\ct_porcine_liver\P01\29-8-12-a\Nejlep_rozli_nevycistene" io3d.read(dcmdir)
'-i', '--inputfile', default='organ.pkl', help='input file') parser.add_argument( '-o', '--outputfile', default='~/lisa_data/mesh_geom.vtk', help='output file') parser.add_argument( '-d', '--degrad', type=int, default=4, help='data degradation, default 4') parser.add_argument( '-l', '--label', type=int, metavar='N', nargs='+', default=[1], help='segmentation labels, default 1') args = parser.parse_args() # data = misc.obj_from_file(args.inputfile, filetype='pickle') import io3d data = io3d.read(args.inputfile, dataplus_format=True) # args.label = np.array(eval(args.label)) # print args.label # import pdb; pdb.set_trace() ds = np.zeros(data['segmentation'].shape, np.bool) for i in range(0, len(args.label)): ds = ds | (data['segmentation'] == args.label[i]) outputfile = os.path.expanduser(args.outputfile) showSegmentation(ds, degrad=args.degrad, voxelsize_mm=data['voxelsize_mm'], vtk_file=outputfile)
def test_read_big_big_data(self): """ files in nejlepsi_rozli_nevycistene """ dcmdir = r"E:\data\medical\orig\ct_porcine_liver\P01\29-8-12-a\Nejlep_rozli_nevycistene" io3d.read(dcmdir)
'--inputfile', default=None, help='input file or directory with data') args = parser.parse_args() if args.debug: logger.setLevel(logging.DEBUG) defaultoutputfile = "vessels.pkl" if args.defaultoutputfile: args.outputfile = defaultoutputfile #else: #dcm_read_from_dir('/home/mjirik/data/medical/data_orig/46328096/') #data3d, metadata = dcmreaddata.dcm_read_from_dir() datap = io3d.read(args.inputfile) import sed3 # pyed = sed3.sed3(oseg.orig_scale_segmentation) #pyed.show() # information about crop #cri = oseg.crinfo #oseg.data3d = oseg.data3d[cri[0][0]:cri[0][1],cri[1][0]:cri[1][1],cri[2][0]:cri[2][1]] #pyed = sed3.sed3(oseg.data3d, contour = oseg.orig_scale_segmentation) print('slab', datap['slab']) #import ipdb; ipdb.set_trace() # BREAKPOINT #pyed = sed3.sed3(data['data3d'], contour = data['segmentation']) #pyed.show() #import pdb; pdb.set_trace()