コード例 #1
0
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)
コード例 #2
0
ファイル: __main__.py プロジェクト: kunesj/data3dviewer
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()
コード例 #3
0
    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)
コード例 #4
0
ファイル: datasets.py プロジェクト: mjirik/io3d
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
コード例 #5
0
 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
コード例 #6
0
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_())
コード例 #7
0
 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
コード例 #8
0
ファイル: dcmreaddata_test.py プロジェクト: mjirik/io3d
    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)
コード例 #9
0
ファイル: dcmreaddata_test.py プロジェクト: kunesj/io3d
    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)
コード例 #10
0
ファイル: datawriter_test.py プロジェクト: kunesj/io3d
    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")
コード例 #11
0
    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"])
コード例 #12
0
ファイル: datawriter_test.py プロジェクト: mjirik/io3d
    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")
コード例 #13
0
    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"])
コード例 #14
0
ファイル: dcmreaddata_test.py プロジェクト: mjirik/io3d
    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)
コード例 #15
0
ファイル: dcmreaddata_test.py プロジェクト: kunesj/io3d
    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)
コード例 #16
0
ファイル: datasets.py プロジェクト: mjirik/io3d
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
コード例 #17
0
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
コード例 #18
0
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
コード例 #19
0
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)
コード例 #20
0
ファイル: dcmreaddata_test.py プロジェクト: mjirik/io3d
 def test_idx_data(self):
     io3d.read("/home/mjirik/data/medical/orig/cvd-matrm3/microscopy_data/MM358-001-uint8.idx")
コード例 #21
0
ファイル: registration.py プロジェクト: mjirik/lisa
    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)


コード例 #22
0
ファイル: qmisc_test.py プロジェクト: mjirik/io3d
 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)
コード例 #23
0
    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)
コード例 #24
0
ファイル: imageprocessing.py プロジェクト: mjirik/cellid
def load3DData(path):
    return io3d.read(path)[0]
コード例 #25
0
ファイル: dcmreaddata_test.py プロジェクト: kunesj/io3d
 def test_idx_data(self):
     io3d.read(
         "/home/mjirik/data/medical/orig/cvd-matrm3/microscopy_data/MM358-001-uint8.idx"
     )
コード例 #26
0
ファイル: qmisc_test.py プロジェクト: kunesj/io3d
 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)
コード例 #27
0
ファイル: dcmreaddata_test.py プロジェクト: kunesj/io3d
 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)
コード例 #28
0
        '-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)
コード例 #29
0
ファイル: dcmreaddata_test.py プロジェクト: mjirik/io3d
 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)
コード例 #30
0
ファイル: vessels_segmentation.py プロジェクト: mjirik/lisa
                        '--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()