#!/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)