Esempio n. 1
0
def main(rabbit):
    import RabbitCommon as rc

    in_path = f'/scratch/rabbit_data/{rabbit}/rawDicoms/ExVivo*/*'
    out_path = f'/hdscratch/ucair/{rabbit}/mri/exvivo/volumes/raw/'
    files = sorted(glob.glob(in_path))

    if not os.path.exists(out_path):
        os.makedirs(out_path)

    for cnt, dcm_file in enumerate(files):
        print(f'Processing {dcm_file} ... ', end='')

        out_name = dcm_file.split('/')[-1].split(' ')[-1]
        if os.path.exists(f'{out_path}{cnt:02d}_{out_name}.nii.gz'):
            print('done')
            continue
        vol = rc.LoadDICOM(dcm_file, 'cpu')
        io.SaveITKFile(vol, f'{out_path}{cnt:02d}_{out_name}.nii.gz')
        print('done')

    # Copy over some of the 'invivo' (day3)
    out_path = f'/hdscratch/ucair/{rabbit}/mri/invivo/volumes/raw/'
    in_path = f'/scratch/rabbit_data/{rabbit}/rawVolumes/Post*/*'
    files = sorted(glob.glob(in_path))
    filt_files = [x for x in files if '3D_VIBE_0.5' in x]
    filt_files += [x for x in files if 't2' in x]
    filt_files += [x for x in files if 'Day3' in x]

    if not os.path.exists(out_path):
        os.makedirs(out_path)

    for f in filt_files:
        shutil.copy(f, f'{out_path}{f.split("/")[-1]}')

    # Copy over some of the day0
    out_path = f'/hdscratch/ucair/{rabbit}/mri/day0/volumes/raw/'
    in_path = f'/scratch/rabbit_data/{rabbit}/rawVolumes/Ablation*/*'
    files = sorted(glob.glob(in_path))
    filt_files = [x for x in files if '3D_VIBE_0.5' in x]
    filt_files += [x for x in files if 't2' in x]
    filt_files += [x for x in files if 'Day0' in x]

    if not os.path.exists(out_path):
        os.makedirs(out_path)

    for f in filt_files:
        shutil.copy(f, f'{out_path}{f.split("/")[-1]}')
Esempio n. 2
0
def save_volume(vol, opt):
    import CAMP.Core as core
    import CAMP.FileIO as io
    # Bring the volume to the CPU
    vol = vol.to('cpu')
    out_path = f'{opt.hd_root}/{opt.rabbit}/blockface/{opt.block}/volumes/raw/'

    mhd_file = f'{out_path}/surface_volume.mhd'
    mhd_dict = read_mhd_header(mhd_file)

    data_files = f'predictions/IMG_%03d_prediction.raw 0 {vol.shape[0]} 1'
    mhd_dict['ElementDataFile'] = data_files
    mhd_dict['ElementNumberOfChannels'] = 1

    out_path = f'{out_path}/predictions/'
    try:
        os.stat(out_path)
    except OSError:
        os.makedirs(out_path)

    origin = [float(x) for x in mhd_dict['Offset'].split(' ')][0:2]
    spacing = [float(x) for x in mhd_dict['ElementSpacing'].split(' ')][0:2]

    # Loop over the firs dimension
    for s in range(0, vol.shape[0]):

        v_slice = core.StructuredGrid(
            vol.shape[1:],
            tensor=vol[s, :, :].unsqueeze(0),
            spacing=spacing,
            origin=origin,
            device='cpu',
            dtype=torch.float32,
            channels=1
        )

        # Generate the name for the image
        out_name = f'{out_path}IMG_{s:03d}_prediction.mhd'
        io.SaveITKFile(v_slice, out_name)

    write_mhd_header(f'{out_path}../prediction_volume.mhd', mhd_dict)
Esempio n. 3
0
               }

    evalOpt = SimpleNamespace(**evalOpt)
    trainOpt = SimpleNamespace(**trainOpt)

    # train(trainOpt)
    block_list = sorted(glob.glob(f'{evalOpt.hd_root}{evalOpt.rabbit}/blockface/block*'))
    for block_path in block_list[1:]:
        block = block_path.split('/')[-1]
        print(f'{block} ... ')

        import CAMP.Core as core
        import CAMP.FileIO as io
        scat_vol = io.LoadITKFile(f'{block_path}/volumes/raw/scatter_volume.mhd', device='cuda')
        grad_scat = scat_vol.data[:, :-1, :, :].cpu() - scat_vol.data[:, 1:, :, :].cpu()
        grad_scat = (grad_scat - grad_scat.min()) / (grad_scat.max() - grad_scat.min())
        grad_scat = torch.cat([grad_scat[:, 0, :, :].unsqueeze(1), grad_scat], dim=1)
        grad_scat = core.StructuredGrid(
            size=scat_vol.size,
            spacing=scat_vol.spacing,
            origin=scat_vol.origin,
            tensor=grad_scat[2].unsqueeze(0),
            device='cuda',
            channels=1
        )
        io.SaveITKFile(grad_scat, f'{block_path}/volumes/raw/scatter_gradient_volume.mhd')
        evalOpt.block = block
        eval(evalOpt)
        print(f'{block} ... done')
    print('All Done')