Exemplo n.º 1
0
def test_channel_names(setup_test_data, setup_mm2gamma_ome_tiffs):

    fold = setup_test_data
    _, _, rand_folder = setup_mm2gamma_ome_tiffs
    mmr = WaveorderReader(rand_folder, extract_data=False)

    assert (isinstance(mmr.reader, MicromanagerOmeTiffReader))

    mmr.channel_names = 100
    assert (mmr.channel_names == mmr.reader.channel_names)
Exemplo n.º 2
0
def test_z_step_size(setup_test_data, setup_mm2gamma_ome_tiffs):

    fold = setup_test_data
    _, _, rand_folder = setup_mm2gamma_ome_tiffs
    mmr = WaveorderReader(rand_folder, extract_data=False)

    assert (isinstance(mmr.reader, MicromanagerOmeTiffReader))

    mmr.z_step_size = 1.75
    assert (mmr.z_step_size == mmr.reader.z_step_size)
Exemplo n.º 3
0
def test_ometiff_zarr_mm2gamma(setup_test_data, setup_mm2gamma_ome_tiffs):

    fold = setup_test_data
    _, _, rand_folder = setup_mm2gamma_ome_tiffs
    mmr = WaveorderReader(rand_folder, extract_data=True)
    assert (isinstance(mmr.reader, MicromanagerOmeTiffReader))

    for i in range(mmr.get_num_positions()):
        z = mmr.get_zarr(i)
        assert (z.shape == mmr.shape)
        assert (isinstance(z, zarr.core.Array))
Exemplo n.º 4
0
def test_sequence_zarr_mm1422(setup_test_data, setup_mm1422_singlepage_tiffs):

    fold = setup_test_data
    _, _, rand_folder = setup_mm1422_singlepage_tiffs
    mmr = WaveorderReader(rand_folder, extract_data=True)

    assert (isinstance(mmr.reader, MicromanagerSequenceReader))

    for i in range(mmr.get_num_positions()):
        z = mmr.get_zarr(i)
        assert (z.shape == mmr.shape)
        assert (isinstance(z, zarr.core.Array))
Exemplo n.º 5
0
def test_stage_positions(setup_test_data, setup_mm2gamma_ome_tiffs):

    fold = setup_test_data
    _, _, rand_folder = setup_mm2gamma_ome_tiffs
    mmr = WaveorderReader(rand_folder, extract_data=False)

    assert (isinstance(mmr.reader, MicromanagerOmeTiffReader))

    mmr.stage_positions = ['pos one']
    assert (mmr.stage_positions == mmr.reader.stage_positions)

    with pytest.raises(AssertionError):
        mmr.stage_positions = 1
Exemplo n.º 6
0
def test_mm_meta(setup_test_data, setup_mm2gamma_ome_tiffs):

    fold = setup_test_data
    _, _, rand_folder = setup_mm2gamma_ome_tiffs
    mmr = WaveorderReader(rand_folder, extract_data=False)

    assert (isinstance(mmr.reader, MicromanagerOmeTiffReader))

    mmr.mm_meta = {'newkey': 'newval'}
    assert (mmr.mm_meta == mmr.reader.mm_meta)

    with pytest.raises(AssertionError):
        mmr.mm_meta = 1
Exemplo n.º 7
0
def test_constructor_mm2gamma(setup_test_data, setup_mm2gamma_zarr):
    """
    test that constructor parses metadata properly
        no data extraction in this test
    """

    fold = setup_test_data
    src = setup_mm2gamma_zarr

    reader = WaveorderReader(src)
    assert (isinstance(reader.reader, ZarrReader))

    mmr = ZarrReader(src)

    assert (mmr.mm_meta is not None)
    assert (mmr.z_step_size is not None)
    assert (mmr.width is not 0)
    assert (mmr.height is not 0)
    assert (mmr.frames is not 0)
    assert (mmr.slices is not 0)
    assert (mmr.channels is not 0)
    assert (mmr.rows is not None)
    assert (mmr.columns is not None)
    assert (mmr.wells is not None)
    assert (mmr.hcs_meta is not None)

    # Check HCS metadata copy
    meta = mmr.hcs_meta
    assert ('plate' in meta.keys())
    assert ('well' in meta.keys())
    assert (len(meta['well']) == mmr.get_num_positions())
    assert ('images' in meta['well'][0])
    assert (len(meta['well'][0]['images']) != 0)
    assert ('path' in meta['well'][0]['images'][0])
    assert (meta['well'][0]['images'][0]['path'] == 'Pos_000')
Exemplo n.º 8
0
def test_datatype(setup_test_data, setup_mm2gamma_ome_tiffs):

    fold = setup_test_data
    # choose a specific folder
    _, one_folder, _ = setup_mm2gamma_ome_tiffs
    with pytest.raises(NotImplementedError):
        mmr = WaveorderReader(one_folder,
                              data_type='unsupportedformat',
                              extract_data=False)
Exemplo n.º 9
0
def test_sequence_constructor_mm2gamma(setup_test_data,
                                       setup_mm2gamma_singlepage_tiffs):

    fold = setup_test_data
    _, one_folder, _ = setup_mm2gamma_singlepage_tiffs
    mmr = WaveorderReader(one_folder, extract_data=False)

    assert (isinstance(mmr.reader, MicromanagerSequenceReader))

    assert (mmr.mm_meta is not None)
    assert (mmr.z_step_size is not None)
    assert (mmr.width is not 0)
    assert (mmr.height is not 0)
    assert (mmr.frames is not 0)
    assert (mmr.slices is not 0)
    assert (mmr.channels is not 0)
Exemplo n.º 10
0
def test_ometiff_constructor_mm1422(setup_test_data, setup_mm1422_ome_tiffs):

    fold = setup_test_data
    # choose a specific folder
    _, one_folder, _ = setup_mm1422_ome_tiffs
    mmr = WaveorderReader(one_folder, extract_data=False)

    assert (isinstance(mmr.reader, MicromanagerOmeTiffReader))

    assert (mmr.mm_meta is not None)
    assert (mmr.stage_positions is not None)
    assert (mmr.z_step_size is not None)
    assert (mmr.width is not 0)
    assert (mmr.height is not 0)
    assert (mmr.frames is not 0)
    assert (mmr.slices is not 0)
    assert (mmr.channels is not 0)
    assert (mmr.channel_names is not None)
bg_option = 'global'  # background correction method for Polscope recon (does not affect phase)

data_path = '/gpfs/CompMicro/projects/waveorderData/data_processing/20200902_cardiomyocyte_100x_14_147_oil_LCD/Low_MOI_FOV1/'
output_path = '/gpfs/CompMicro/projects/waveorderData/data_processing/20200902_cardiomyocyte_100x_14_147_oil_LCD/Low_MOI_FOV1/Full_FOV_process_test_new_pipeline_script'  # output image path

use_gpu = True
gpu_id = 0

reg_inc = np.array([2.5, 2.5, 40, 40, 80, 80, 40
                    ]) * 1  # regularization for 3D orientation recon
reg_ret_pr = 1e-1  # principle retardance regularization

# ### Calibration and data loading
# Load data and bg
uPTI_file_name = data_path + 'Cardiomyocytes_infected_2_raw.zarr'
reader = WaveorderReader(uPTI_file_name, 'zarr')
I_meas_full = np.transpose(reader.get_array(0), (0, 1, 3, 4, 2))
I_bg_full = np.squeeze(np.transpose(reader.get_array(1), (0, 1, 3, 4, 2)))

# Load calibration
uPTI_file = zarr.open(uPTI_file_name, mode='a')
I_cali_mean = np.array(uPTI_file.I_cali_mean)

# source polarization, instrument matrix calibration
E_in, A_matrix, I_cali_mean = wo.instrument_matrix_and_source_calibration(
    I_cali_mean, handedness='RCP')
plt.show()

# ### Creating processing list for sub-FOV

N_full = 1024
        itr=60,
        step_size=0.3,
        fast_gpu_mode=True)

    uPTI_array = np.transpose(
        np.concatenate((f_tensor, mat_map), axis=0)[np.newaxis, ...],
        (0, 1, 4, 2, 3))  # dimension (T, C, Z, Y, X)
    writer.write(uPTI_array, p=ll)
    print('Finish process at (y, x) = (%d, %d), elapsed time: %.2f' %
          (ns[ll], ms[ll], time.time() - t0))

### Image stitching
# save stitched results

uPTI_file_name = 'uPTI_subFOVs.zarr'
reader = WaveorderReader(os.path.join(output_path, uPTI_file_name), 'zarr')
uPTI_file = zarr.open(os.path.join(output_path, uPTI_file_name), mode='a')
coord_list = (np.array(uPTI_file.row_list), np.array(uPTI_file.column_list))
overlap = (int(np.array(uPTI_file.overlap)), int(np.array(uPTI_file.overlap)))
file_loading_func = lambda x: np.transpose(reader.get_array(x),
                                           (3, 4, 0, 1, 2))
img_normalized, ref_stitch = wo.image_stitching(coord_list,
                                                overlap,
                                                file_loading_func,
                                                gen_ref_map=True,
                                                ref_stitch=None)

writer = WaveorderWriter(output_path, hcs=False, hcs_meta=None, verbose=True)
writer.create_zarr_root('uPTI_stitched.zarr')
chan_names = [
    'f_tensor0r', 'f_tensor0i', 'f_tensor1c', 'f_tensor1s', 'f_tensor2c',
N_defocus = 96  # number of defocus images
N_channel = 4  # number of Polscope channels
N_pattern = 9  # number of illumination patterns
z_step = 0.25  # z_step of the stack
z_defocus = (np.r_[:N_defocus] - 0) * z_step  # z positions of the stack
ps = 3.45 * 2 / mag  # effective pixel size at the sample plane (cam pix/mag in um)
cali = False  # correction for S1/S2 Polscope reconstruction (does not affect phase)
bg_option = 'global'  # background correction method for Polscope recon (does not affect phase)
use_gpu = True  # option to use gpu or not (required cupy)
gpu_id = 0  # id of gpu to use

# ### Load sample images, background images, and calibration data
# Load data and bg

uPTI_file_name = '/gpfs/CompMicro/projects/waveorderData/data_processing/20200223_LCD_63x_147_oil_test/Kazansky_2/Anisotropic_target_small_raw.zarr'
reader = WaveorderReader(uPTI_file_name, 'zarr')
I_meas = np.transpose(reader.get_array(0), (0, 1, 3, 4, 2))
I_bg = np.squeeze(np.transpose(reader.get_array(1), (0, 1, 3, 4, 2)))

# Crop the data so that it fits in the GPU memory
I_meas = I_meas[:, :, 50:250, 50:250, :]
I_bg = I_bg[:, :, 50:250, 50:250]

# Load calibration

uPTI_file = zarr.open(uPTI_file_name, mode='a')
I_cali_mean = np.array(uPTI_file.I_cali_mean)

# source polarization, instrument matrix calibration
E_in, A_matrix, I_cali_mean = wo.instrument_matrix_and_source_calibration(
    I_cali_mean, handedness='RCP')