Skip to content
Snippets Groups Projects
lung_lif_to_png.py 1.61 KiB
Newer Older
  • Learn to ignore specific revisions
  • monj's avatar
    monj committed
    #!/usr/bin/env python3
    # -*- coding: utf-8 -*-
    """
    Transform lif files to png for easy access and visualization
    """
    
    
    import numpy as np
    from readlif.reader import LifFile
    import skimage.io
    import os
    import microscopy_analysis as ma
    
    #%%
    # folder containing lif files
    in_dir = '../../data101220/'# data_October2020/sarcoidosis/' #'../../5April2020_control/' #healthy #'../../24December19_emphysema/' #sick 
    # output folder
    out_dir = '../data_corrected_bis/sarcoidosis/' #control/ #/emphysema/
    file_names = [f for f in os.listdir(in_dir) if f.endswith('lif')]
    file_names = ma.sort_dirlist_patient(file_names)
    
    # make output directory if it does not exist
    if not os.path.exists(out_dir):
        os.mkdir(out_dir)
    
    # run through all lif files and save as png for easy access and visualization
    for file in file_names:
        lif_in = LifFile(in_dir + file)
        n_im = lif_in.num_images
        dir_name_out = (out_dir + (file.split('.')[0]).replace(' ', '_') + '/')
        if not os.path.exists(dir_name_out):
            os.mkdir(dir_name_out)
        for n in range(0,n_im):
            im_in = lif_in.get_image(n)
            r,c,n_frames = im_in.dims[:3]
            n_ch = im_in.channels
            if n_ch == 3:
                dir_name_out_im = dir_name_out + ('/frame_%02d/' % n)
                if not os.path.exists(dir_name_out_im):
                    os.mkdir(dir_name_out_im)
                im_out = np.zeros((r,c,n_ch), dtype='uint8')
                for i in range(0,n_frames):
                    for j in range(0,n_ch):
                        im_out[:,:,j] = np.array(im_in.get_frame(i,0,j)).transpose()
                    skimage.io.imsave(dir_name_out_im + '/image_%02d.png' % i, im_out)