Skip to content

Commit 128186d

Browse files
committed
updates in the metadata
1 parent c6cb5a2 commit 128186d

File tree

4 files changed

+57
-36
lines changed

4 files changed

+57
-36
lines changed

NNGui.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,8 @@
2828
from skimage import exposure, transform
2929
from tensorflow import keras
3030

31-
from NNfeeder import prepareNNImages
32-
from NNio import (dataOrderMetadata, loadTifFolder, loadTifStack,
31+
from eda_original.SmartMicro.NNfeeder import prepareNNImages
32+
from eda_original.SmartMicro.NNio import (dataOrderMetadata, loadTifFolder, loadTifStack,
3333
loadTifStackElapsed)
3434
from QtImageViewerMerge import QtImageViewerMerge
3535
from SatsGUI import SatsGUI

NNfeeder.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
from eda_original.SmartMicro.ImageTiles import getTilePositionsV2
1313

1414

15-
def prepareNNImages(bact_img, ftsz_img, model, bacteria=False):
15+
def prepareNNImages(bact_img, ftsz_img, model, bacteria=False, out_max=1):
1616
"""Preprocess raw iSIM images before running them throught the neural network.
1717
1818
Args:
@@ -51,7 +51,7 @@ def prepareNNImages(bact_img, ftsz_img, model, bacteria=False):
5151
positions = getTilePositionsV2(ftsz_img, nnImageSize)
5252
contrastMax = 255
5353
else:
54-
contrastMax = 1
54+
contrastMax = out_max
5555

5656
# Contrast
5757
ftsz_img = exposure.rescale_intensity(

NNio.py

+49-21
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,6 @@
99
import glob
1010
import json
1111
import os
12-
import pdb
13-
import pickle
1412
import re
1513
import shutil
1614
import threading
@@ -25,13 +23,12 @@
2523
import numpy as np
2624
import tifffile
2725
import xmltodict
26+
from eda_original.SmartMicro import ImageTiles, NNfeeder
2827
from matplotlib.widgets import RectangleSelector
2928
from skimage import io
3029
from toolbox.image_processing import deconvolve
3130
from tqdm import tqdm
3231

33-
from . import ImageTiles, NNfeeder
34-
3532

3633
def loadiSIMmetadata(folder):
3734
""" Load the information written by matlab about the generated DAQ signals for all in folder
@@ -236,7 +233,7 @@ def saveTifStack(target_file, stack1, stack2):
236233

237234

238235
def loadTifFolder(folder, resizeParam=1, order=0, progress=None,
239-
cropSquare=True, outputs=None, decon_id:str = 'None') -> np.ndarray:
236+
cropSquare=True, outputs=None, decon_id: str = 'None') -> np.ndarray:
240237
"""Function to load SATS data from a folder with the individual tif files written by
241238
microManager. Inbetween there might be neural network images that are also loaded into
242239
an array. Mainly used with NN_GUI_v2.py
@@ -261,7 +258,7 @@ def loadDecon(filePath, stackDecon, frame):
261258
if decon_id == 'None':
262259
deconPath = filePath[:-8] + 'decon.tiff'
263260
else:
264-
deconPath = sorted(glob.glob(os.path.join(os.path.dirname(filePath),decon_id)))
261+
deconPath = sorted(glob.glob(os.path.join(os.path.dirname(filePath), decon_id)))
265262
deconPath = deconPath[frame]
266263

267264
try:
@@ -387,6 +384,7 @@ def cropToSquare(stack):
387384
def loadTifStack(stack, order=None, outputElapsed=False, cropSquare=True, img_range=None):
388385
""" Load a tif stack and deinterleave depending on the order (0 or 1). Also get the
389386
elapsed time on the images and give them back as list."""
387+
print(stack)
390388
imageMitoOrig = io.imread(stack, key=img_range)
391389

392390
print(imageMitoOrig.shape)
@@ -612,35 +610,51 @@ def calculateNNforFolder(folder, model=None):
612610
tifffile.imwrite(nn_file, nnImage.astype(np.uint8))
613611

614612

615-
def deconvoleStack(file: str, mode: str = 'cpu'):
613+
def deconvoleStack(file: str, mode: str = 'cpu', cuda_params=None, name="", channel="network"):
616614
""" Deconvolve the struct part of a stack of foci/struct data using the deconvolve function
617615
in the toolbox."""
618-
_, stack_struct = loadTifStack(file)
616+
if channel == "network":
617+
_, stack_struct = loadTifStack(file)
618+
elif channel == "peaks":
619+
stack_struct, _ = loadTifStack(file)
619620
stackDecon = np.zeros(stack_struct.shape, dtype=np.uint16)
620621
if mode == 'cuda':
621622
from toolbox.image_processing import cuda_decon
622-
cuda_params = cuda_decon.CudaParams()
623+
if cuda_params is None:
624+
cuda_params = cuda_decon.CudaParams(background=1, sigma=3.04/2.355, after_gaussian=2)
625+
print("DECONVOLE STACK")
626+
print('sigma: ', cuda_params.kernel['sigma'], '\nbackground: ', cuda_params.background)
623627

624628
for frame in tqdm(range(stack_struct.shape[0])):
625629
if mode == 'cpu':
626630
stackDecon[frame, :, :] = deconvolve.full_richardson_lucy(stack_struct[frame, :, :])
627631
else:
628632
stackDecon[frame, :, :] = cuda_decon.richardson_lucy(stack_struct[frame, :, :],
629633
params=cuda_params)
634+
if cuda_params.after_gaussian:
635+
stackDecon[frame, :, :] = cv2.GaussianBlur(stackDecon[frame, :, :], (0, 0),
636+
cuda_params.after_gaussian)
630637

631-
out_file = file[:-8] + '_decon.tiff'
638+
out_file = file[:-8] + '_decon' + name + '.tiff'
639+
print(f"{file} -> {out_file}")
632640
tifffile.imwrite(out_file, stackDecon)
633641

634642

635-
def deconvolveFolder(folder, n_threads=10, mode='cpu', cuda_params=None, subfolder=None):
643+
def deconvolveFolder(folder, n_threads=10, mode='cpu', cuda_params=None, subfolder=None,
644+
channel='network'):
636645
""" Wrapper function for deconvolveOneFolder to allow for parallel computation """
637646

638647
if isinstance(folder, list) and mode == 'cpu':
639648
with Pool(n_threads) as p:
640-
p.map(deconvolveOneFolder, folder, subfolder)
649+
p.map(deconvolveOneFolder, folder, subfolder, channel)
641650
elif isinstance(folder, list):
642651
for single_folder in folder:
643-
deconvolveOneFolder(single_folder, mode, cuda_params, subfolder)
652+
try:
653+
deconvolveOneFolder(single_folder, mode, cuda_params, subfolder, channel)
654+
except TypeError:
655+
files, _ = get_files(single_folder)
656+
print(files['stack'][0])
657+
deconvoleStack(files['stack'][0], mode, cuda_params, subfolder[1:-2], channel)
644658
else:
645659
deconvolveOneFolder(folder, mode, cuda_params, subfolder)
646660

@@ -652,11 +666,12 @@ def deconvolveOneFolder(folder, mode='cpu', cuda_params=None, subfolder=None, ch
652666
from toolbox.image_processing import cuda_decon
653667

654668
if cuda_params is None and mode == 'cuda':
655-
print('Using default coda_params')
656-
cuda_params = cuda_decon.CudaParams(background=1.05, sigma=3.9/2.335) # 0.92 mito 1 for caulo highlight
669+
print('Using default cuda_params')
670+
# bg 0.92 mito 1 for caulo highlight 1.05 otherwise
671+
cuda_params = cuda_decon.CudaParams(background=1, sigma=3.04/2.355, after_gaussian=2)
672+
# 3.04 = sqrt(2)*120/56
657673
print('sigma: ', cuda_params.kernel['sigma'], '\nbackground: ', cuda_params.background)
658674

659-
print(folder)
660675
files, _ = get_files(folder)
661676
files = files[channel]
662677
for idx, file in enumerate(tqdm(files)):
@@ -872,6 +887,7 @@ def transfer_nn_to_folder(folder):
872887
shutil.copyfile(file, os.path.join(folder, 'nn', str(idx) + '_neural.tif'))
873888
os.remove(file)
874889

890+
875891
def transfer_decon_to_folder(folder):
876892
files = sorted(glob.glob(folder + '/**/*decon*'))
877893
print(files)
@@ -883,15 +899,27 @@ def transfer_decon_to_folder(folder):
883899

884900
def main():
885901
""" Main method calculating a nn stack for a set of old Mito/drp stacks """
886-
from Analysis import data_locations
887-
902+
from eda_original.Analysis import data_locations
888903
# folder = 'W:/Watchdog/microM_test/cell_IntSmart_30pc_488_50pc_561_band_4'
889904
# calculateNNforFolder(folder)
890905
# transfer_nn_to_folder(folder)
891906
# ats_folders = data_locations.caulo_folders['fast']
892-
893-
ats_folders = data_locations.mito_folders['ats']
894-
deconvolveFolder(ats_folders, mode='cuda', subfolder=None)
907+
from toolbox.image_processing import cuda_decon
908+
cuda_params = cuda_decon.CudaParams(background=0.8, sigma=3.9/2.355, after_gaussian=1.5)
909+
dataset = data_locations.mito_folders
910+
911+
ats_folders = [sorted(dataset['ats'])[1]]
912+
# ats_folders.append('C:/Users/stepp/Documents/02_Raw/Caulobacter_iSIM/210506_01')
913+
deconvolveFolder(ats_folders, mode='cuda', cuda_params=cuda_params, subfolder='decon_pr',
914+
channel='network')
915+
916+
# slow_folders = dataset['slow']
917+
# deconvolveFolder(slow_folders, mode='cuda', cuda_params=cuda_params, subfolder='decon_corr3',
918+
# channel='network')
919+
920+
# fast_files = [dataset['fast'][2]]
921+
# deconvolveFolder(fast_files, mode='cuda', cuda_params=cuda_params, subfolder='decon_net',
922+
# channel='network')
895923

896924
# slow_folders = data_locations.mito_folders['fast']
897925
# for folder in slow_folders:

SmartMicro.code-workspace

+4-11
Original file line numberDiff line numberDiff line change
@@ -12,21 +12,14 @@
1212
{
1313
"path": "W:\\Watchdog\\Model"
1414
},
15-
{
16-
"path": "..\\Tinker"
17-
},
18-
{
19-
"path": "..\\..\\02_Raw\\SmartMito"
20-
},
2115
{
2216
"path": "W:\\Watchdog"
2317
},
2418
{
25-
"path": "..\\..\\02_Raw"
26-
},
27-
{
28-
"path": "..\\toolbox"
19+
"path": "..\\..\\toolbox"
2920
}
3021
],
31-
"settings": {}
22+
"settings": {
23+
"python.terminal.activateEnvironment": true
24+
}
3225
}

0 commit comments

Comments
 (0)