annotate UnMicst.py @ 0:6bec4fef6b2e draft

"planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
author perssond
date Fri, 12 Mar 2021 00:17:29 +0000
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
1 import numpy as np
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
2 from scipy import misc
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
3 import tensorflow.compat.v1 as tf
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
4 import shutil
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
5 import scipy.io as sio
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
6 import os, fnmatch, glob
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
7 import skimage.exposure as sk
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
8 import skimage.io
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
9 import argparse
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
10 import czifile
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
11 from nd2reader import ND2Reader
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
12 import tifffile
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
13 import sys
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
14 tf.disable_v2_behavior()
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
15 #sys.path.insert(0, 'C:\\Users\\Public\\Documents\\ImageScience')
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
16
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
17 from toolbox.imtools import *
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
18 from toolbox.ftools import *
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
19 from toolbox.PartitionOfImage import PI2D
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
20 from toolbox import GPUselect
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
21
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
22 def concat3(lst):
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
23 return tf.concat(lst, 3)
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
24
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
25
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
26 class UNet2D:
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
27 hp = None # hyper-parameters
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
28 nn = None # network
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
29 tfTraining = None # if training or not (to handle batch norm)
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
30 tfData = None # data placeholder
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
31 Session = None
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
32 DatasetMean = 0
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
33 DatasetStDev = 0
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
34
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
35 def setupWithHP(hp):
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
36 UNet2D.setup(hp['imSize'],
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
37 hp['nChannels'],
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
38 hp['nClasses'],
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
39 hp['nOut0'],
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
40 hp['featMapsFact'],
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
41 hp['downSampFact'],
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
42 hp['ks'],
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
43 hp['nExtraConvs'],
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
44 hp['stdDev0'],
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
45 hp['nLayers'],
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
46 hp['batchSize'])
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
47
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
48 def setup(imSize, nChannels, nClasses, nOut0, featMapsFact, downSampFact, kernelSize, nExtraConvs, stdDev0,
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
49 nDownSampLayers, batchSize):
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
50 UNet2D.hp = {'imSize': imSize,
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
51 'nClasses': nClasses,
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
52 'nChannels': nChannels,
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
53 'nExtraConvs': nExtraConvs,
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
54 'nLayers': nDownSampLayers,
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
55 'featMapsFact': featMapsFact,
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
56 'downSampFact': downSampFact,
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
57 'ks': kernelSize,
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
58 'nOut0': nOut0,
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
59 'stdDev0': stdDev0,
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
60 'batchSize': batchSize}
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
61
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
62 nOutX = [UNet2D.hp['nChannels'], UNet2D.hp['nOut0']]
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
63 dsfX = []
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
64 for i in range(UNet2D.hp['nLayers']):
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
65 nOutX.append(nOutX[-1] * UNet2D.hp['featMapsFact'])
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
66 dsfX.append(UNet2D.hp['downSampFact'])
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
67
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
68 # --------------------------------------------------
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
69 # downsampling layer
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
70 # --------------------------------------------------
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
71
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
72 with tf.name_scope('placeholders'):
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
73 UNet2D.tfTraining = tf.placeholder(tf.bool, name='training')
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
74 UNet2D.tfData = tf.placeholder("float", shape=[None, UNet2D.hp['imSize'], UNet2D.hp['imSize'],
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
75 UNet2D.hp['nChannels']], name='data')
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
76
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
77 def down_samp_layer(data, index):
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
78 with tf.name_scope('ld%d' % index):
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
79 ldXWeights1 = tf.Variable(
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
80 tf.truncated_normal([UNet2D.hp['ks'], UNet2D.hp['ks'], nOutX[index], nOutX[index + 1]],
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
81 stddev=stdDev0), name='kernel1')
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
82 ldXWeightsExtra = []
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
83 for i in range(nExtraConvs):
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
84 ldXWeightsExtra.append(tf.Variable(
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
85 tf.truncated_normal([UNet2D.hp['ks'], UNet2D.hp['ks'], nOutX[index + 1], nOutX[index + 1]],
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
86 stddev=stdDev0), name='kernelExtra%d' % i))
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
87
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
88 c00 = tf.nn.conv2d(data, ldXWeights1, strides=[1, 1, 1, 1], padding='SAME')
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
89 for i in range(nExtraConvs):
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
90 c00 = tf.nn.conv2d(tf.nn.relu(c00), ldXWeightsExtra[i], strides=[1, 1, 1, 1], padding='SAME')
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
91
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
92 ldXWeightsShortcut = tf.Variable(
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
93 tf.truncated_normal([1, 1, nOutX[index], nOutX[index + 1]], stddev=stdDev0), name='shortcutWeights')
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
94 shortcut = tf.nn.conv2d(data, ldXWeightsShortcut, strides=[1, 1, 1, 1], padding='SAME')
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
95
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
96 bn = tf.layers.batch_normalization(tf.nn.relu(c00 + shortcut), training=UNet2D.tfTraining)
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
97
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
98 return tf.nn.max_pool(bn, ksize=[1, dsfX[index], dsfX[index], 1],
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
99 strides=[1, dsfX[index], dsfX[index], 1], padding='SAME', name='maxpool')
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
100
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
101 # --------------------------------------------------
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
102 # bottom layer
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
103 # --------------------------------------------------
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
104
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
105 with tf.name_scope('lb'):
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
106 lbWeights1 = tf.Variable(tf.truncated_normal(
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
107 [UNet2D.hp['ks'], UNet2D.hp['ks'], nOutX[UNet2D.hp['nLayers']], nOutX[UNet2D.hp['nLayers'] + 1]],
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
108 stddev=stdDev0), name='kernel1')
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
109
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
110 def lb(hidden):
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
111 return tf.nn.relu(tf.nn.conv2d(hidden, lbWeights1, strides=[1, 1, 1, 1], padding='SAME'), name='conv')
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
112
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
113 # --------------------------------------------------
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
114 # downsampling
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
115 # --------------------------------------------------
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
116
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
117 with tf.name_scope('downsampling'):
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
118 dsX = []
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
119 dsX.append(UNet2D.tfData)
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
120
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
121 for i in range(UNet2D.hp['nLayers']):
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
122 dsX.append(down_samp_layer(dsX[i], i))
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
123
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
124 b = lb(dsX[UNet2D.hp['nLayers']])
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
125
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
126 # --------------------------------------------------
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
127 # upsampling layer
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
128 # --------------------------------------------------
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
129
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
130 def up_samp_layer(data, index):
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
131 with tf.name_scope('lu%d' % index):
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
132 luXWeights1 = tf.Variable(
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
133 tf.truncated_normal([UNet2D.hp['ks'], UNet2D.hp['ks'], nOutX[index + 1], nOutX[index + 2]],
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
134 stddev=stdDev0), name='kernel1')
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
135 luXWeights2 = tf.Variable(tf.truncated_normal(
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
136 [UNet2D.hp['ks'], UNet2D.hp['ks'], nOutX[index] + nOutX[index + 1], nOutX[index + 1]],
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
137 stddev=stdDev0), name='kernel2')
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
138 luXWeightsExtra = []
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
139 for i in range(nExtraConvs):
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
140 luXWeightsExtra.append(tf.Variable(
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
141 tf.truncated_normal([UNet2D.hp['ks'], UNet2D.hp['ks'], nOutX[index + 1], nOutX[index + 1]],
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
142 stddev=stdDev0), name='kernel2Extra%d' % i))
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
143
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
144 outSize = UNet2D.hp['imSize']
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
145 for i in range(index):
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
146 outSize /= dsfX[i]
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
147 outSize = int(outSize)
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
148
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
149 outputShape = [UNet2D.hp['batchSize'], outSize, outSize, nOutX[index + 1]]
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
150 us = tf.nn.relu(
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
151 tf.nn.conv2d_transpose(data, luXWeights1, outputShape, strides=[1, dsfX[index], dsfX[index], 1],
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
152 padding='SAME'), name='conv1')
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
153 cc = concat3([dsX[index], us])
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
154 cv = tf.nn.relu(tf.nn.conv2d(cc, luXWeights2, strides=[1, 1, 1, 1], padding='SAME'), name='conv2')
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
155 for i in range(nExtraConvs):
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
156 cv = tf.nn.relu(tf.nn.conv2d(cv, luXWeightsExtra[i], strides=[1, 1, 1, 1], padding='SAME'),
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
157 name='conv2Extra%d' % i)
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
158 return cv
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
159
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
160 # --------------------------------------------------
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
161 # final (top) layer
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
162 # --------------------------------------------------
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
163
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
164 with tf.name_scope('lt'):
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
165 ltWeights1 = tf.Variable(tf.truncated_normal([1, 1, nOutX[1], nClasses], stddev=stdDev0), name='kernel')
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
166
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
167 def lt(hidden):
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
168 return tf.nn.conv2d(hidden, ltWeights1, strides=[1, 1, 1, 1], padding='SAME', name='conv')
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
169
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
170 # --------------------------------------------------
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
171 # upsampling
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
172 # --------------------------------------------------
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
173
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
174 with tf.name_scope('upsampling'):
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
175 usX = []
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
176 usX.append(b)
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
177
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
178 for i in range(UNet2D.hp['nLayers']):
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
179 usX.append(up_samp_layer(usX[i], UNet2D.hp['nLayers'] - 1 - i))
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
180
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
181 t = lt(usX[UNet2D.hp['nLayers']])
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
182
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
183 sm = tf.nn.softmax(t, -1)
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
184 UNet2D.nn = sm
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
185
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
186 def train(imPath, logPath, modelPath, pmPath, nTrain, nValid, nTest, restoreVariables, nSteps, gpuIndex,
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
187 testPMIndex):
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
188 os.environ['CUDA_VISIBLE_DEVICES'] = '%d' % gpuIndex
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
189
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
190 outLogPath = logPath
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
191 trainWriterPath = pathjoin(logPath, 'Train')
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
192 validWriterPath = pathjoin(logPath, 'Valid')
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
193 outModelPath = pathjoin(modelPath, 'model.ckpt')
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
194 outPMPath = pmPath
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
195
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
196 batchSize = UNet2D.hp['batchSize']
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
197 imSize = UNet2D.hp['imSize']
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
198 nChannels = UNet2D.hp['nChannels']
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
199 nClasses = UNet2D.hp['nClasses']
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
200
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
201 # --------------------------------------------------
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
202 # data
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
203 # --------------------------------------------------
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
204
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
205 Train = np.zeros((nTrain, imSize, imSize, nChannels))
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
206 Valid = np.zeros((nValid, imSize, imSize, nChannels))
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
207 Test = np.zeros((nTest, imSize, imSize, nChannels))
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
208 LTrain = np.zeros((nTrain, imSize, imSize, nClasses))
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
209 LValid = np.zeros((nValid, imSize, imSize, nClasses))
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
210 LTest = np.zeros((nTest, imSize, imSize, nClasses))
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
211
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
212 print('loading data, computing mean / st dev')
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
213 if not os.path.exists(modelPath):
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
214 os.makedirs(modelPath)
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
215 if restoreVariables:
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
216 datasetMean = loadData(pathjoin(modelPath, 'datasetMean.data'))
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
217 datasetStDev = loadData(pathjoin(modelPath, 'datasetStDev.data'))
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
218 else:
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
219 datasetMean = 0
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
220 datasetStDev = 0
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
221 for iSample in range(nTrain + nValid + nTest):
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
222 I = im2double(tifread('%s/I%05d_Img.tif' % (imPath, iSample)))
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
223 datasetMean += np.mean(I)
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
224 datasetStDev += np.std(I)
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
225 datasetMean /= (nTrain + nValid + nTest)
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
226 datasetStDev /= (nTrain + nValid + nTest)
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
227 saveData(datasetMean, pathjoin(modelPath, 'datasetMean.data'))
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
228 saveData(datasetStDev, pathjoin(modelPath, 'datasetStDev.data'))
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
229
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
230 perm = np.arange(nTrain + nValid + nTest)
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
231 np.random.shuffle(perm)
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
232
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
233 for iSample in range(0, nTrain):
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
234 path = '%s/I%05d_Img.tif' % (imPath, perm[iSample])
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
235 im = im2double(tifread(path))
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
236 Train[iSample, :, :, 0] = (im - datasetMean) / datasetStDev
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
237 path = '%s/I%05d_Ant.tif' % (imPath, perm[iSample])
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
238 im = tifread(path)
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
239 for i in range(nClasses):
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
240 LTrain[iSample, :, :, i] = (im == i + 1)
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
241
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
242 for iSample in range(0, nValid):
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
243 path = '%s/I%05d_Img.tif' % (imPath, perm[nTrain + iSample])
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
244 im = im2double(tifread(path))
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
245 Valid[iSample, :, :, 0] = (im - datasetMean) / datasetStDev
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
246 path = '%s/I%05d_Ant.tif' % (imPath, perm[nTrain + iSample])
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
247 im = tifread(path)
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
248 for i in range(nClasses):
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
249 LValid[iSample, :, :, i] = (im == i + 1)
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
250
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
251 for iSample in range(0, nTest):
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
252 path = '%s/I%05d_Img.tif' % (imPath, perm[nTrain + nValid + iSample])
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
253 im = im2double(tifread(path))
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
254 Test[iSample, :, :, 0] = (im - datasetMean) / datasetStDev
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
255 path = '%s/I%05d_Ant.tif' % (imPath, perm[nTrain + nValid + iSample])
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
256 im = tifread(path)
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
257 for i in range(nClasses):
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
258 LTest[iSample, :, :, i] = (im == i + 1)
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
259
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
260 # --------------------------------------------------
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
261 # optimization
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
262 # --------------------------------------------------
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
263
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
264 tfLabels = tf.placeholder("float", shape=[None, imSize, imSize, nClasses], name='labels')
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
265
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
266 globalStep = tf.Variable(0, trainable=False)
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
267 learningRate0 = 0.01
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
268 decaySteps = 1000
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
269 decayRate = 0.95
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
270 learningRate = tf.train.exponential_decay(learningRate0, globalStep, decaySteps, decayRate, staircase=True)
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
271
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
272 with tf.name_scope('optim'):
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
273 loss = tf.reduce_mean(-tf.reduce_sum(tf.multiply(tfLabels, tf.log(UNet2D.nn)), 3))
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
274 updateOps = tf.get_collection(tf.GraphKeys.UPDATE_OPS)
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
275 # optimizer = tf.train.MomentumOptimizer(1e-3,0.9)
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
276 optimizer = tf.train.MomentumOptimizer(learningRate, 0.9)
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
277 # optimizer = tf.train.GradientDescentOptimizer(learningRate)
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
278 with tf.control_dependencies(updateOps):
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
279 optOp = optimizer.minimize(loss, global_step=globalStep)
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
280
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
281 with tf.name_scope('eval'):
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
282 error = []
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
283 for iClass in range(nClasses):
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
284 labels0 = tf.reshape(tf.to_int32(tf.slice(tfLabels, [0, 0, 0, iClass], [-1, -1, -1, 1])),
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
285 [batchSize, imSize, imSize])
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
286 predict0 = tf.reshape(tf.to_int32(tf.equal(tf.argmax(UNet2D.nn, 3), iClass)),
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
287 [batchSize, imSize, imSize])
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
288 correct = tf.multiply(labels0, predict0)
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
289 nCorrect0 = tf.reduce_sum(correct)
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
290 nLabels0 = tf.reduce_sum(labels0)
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
291 error.append(1 - tf.to_float(nCorrect0) / tf.to_float(nLabels0))
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
292 errors = tf.tuple(error)
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
293
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
294 # --------------------------------------------------
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
295 # inspection
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
296 # --------------------------------------------------
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
297
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
298 with tf.name_scope('scalars'):
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
299 tf.summary.scalar('avg_cross_entropy', loss)
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
300 for iClass in range(nClasses):
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
301 tf.summary.scalar('avg_pixel_error_%d' % iClass, error[iClass])
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
302 tf.summary.scalar('learning_rate', learningRate)
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
303 with tf.name_scope('images'):
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
304 split0 = tf.slice(UNet2D.nn, [0, 0, 0, 0], [-1, -1, -1, 1])
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
305 split1 = tf.slice(UNet2D.nn, [0, 0, 0, 1], [-1, -1, -1, 1])
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
306 if nClasses > 2:
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
307 split2 = tf.slice(UNet2D.nn, [0, 0, 0, 2], [-1, -1, -1, 1])
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
308 tf.summary.image('pm0', split0)
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
309 tf.summary.image('pm1', split1)
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
310 if nClasses > 2:
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
311 tf.summary.image('pm2', split2)
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
312 merged = tf.summary.merge_all()
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
313
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
314 # --------------------------------------------------
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
315 # session
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
316 # --------------------------------------------------
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
317
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
318 saver = tf.train.Saver()
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
319 sess = tf.Session(config=tf.ConfigProto(
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
320 allow_soft_placement=True)) # config parameter needed to save variables when using GPU
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
321
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
322 if os.path.exists(outLogPath):
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
323 shutil.rmtree(outLogPath)
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
324 trainWriter = tf.summary.FileWriter(trainWriterPath, sess.graph)
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
325 validWriter = tf.summary.FileWriter(validWriterPath, sess.graph)
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
326
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
327 if restoreVariables:
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
328 saver.restore(sess, outModelPath)
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
329 print("Model restored.")
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
330 else:
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
331 sess.run(tf.global_variables_initializer())
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
332
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
333 # --------------------------------------------------
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
334 # train
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
335 # --------------------------------------------------
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
336
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
337 batchData = np.zeros((batchSize, imSize, imSize, nChannels))
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
338 batchLabels = np.zeros((batchSize, imSize, imSize, nClasses))
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
339 for i in range(nSteps):
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
340 # train
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
341
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
342 perm = np.arange(nTrain)
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
343 np.random.shuffle(perm)
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
344
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
345 for j in range(batchSize):
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
346 batchData[j, :, :, :] = Train[perm[j], :, :, :]
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
347 batchLabels[j, :, :, :] = LTrain[perm[j], :, :, :]
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
348
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
349 summary, _ = sess.run([merged, optOp],
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
350 feed_dict={UNet2D.tfData: batchData, tfLabels: batchLabels, UNet2D.tfTraining: 1})
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
351 trainWriter.add_summary(summary, i)
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
352
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
353 # validation
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
354
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
355 perm = np.arange(nValid)
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
356 np.random.shuffle(perm)
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
357
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
358 for j in range(batchSize):
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
359 batchData[j, :, :, :] = Valid[perm[j], :, :, :]
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
360 batchLabels[j, :, :, :] = LValid[perm[j], :, :, :]
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
361
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
362 summary, es = sess.run([merged, errors],
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
363 feed_dict={UNet2D.tfData: batchData, tfLabels: batchLabels, UNet2D.tfTraining: 0})
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
364 validWriter.add_summary(summary, i)
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
365
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
366 e = np.mean(es)
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
367 print('step %05d, e: %f' % (i, e))
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
368
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
369 if i == 0:
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
370 if restoreVariables:
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
371 lowestError = e
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
372 else:
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
373 lowestError = np.inf
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
374
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
375 if np.mod(i, 100) == 0 and e < lowestError:
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
376 lowestError = e
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
377 print("Model saved in file: %s" % saver.save(sess, outModelPath))
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
378
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
379 # --------------------------------------------------
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
380 # test
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
381 # --------------------------------------------------
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
382
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
383 if not os.path.exists(outPMPath):
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
384 os.makedirs(outPMPath)
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
385
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
386 for i in range(nTest):
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
387 j = np.mod(i, batchSize)
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
388
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
389 batchData[j, :, :, :] = Test[i, :, :, :]
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
390 batchLabels[j, :, :, :] = LTest[i, :, :, :]
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
391
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
392 if j == batchSize - 1 or i == nTest - 1:
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
393
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
394 output = sess.run(UNet2D.nn,
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
395 feed_dict={UNet2D.tfData: batchData, tfLabels: batchLabels, UNet2D.tfTraining: 0})
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
396
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
397 for k in range(j + 1):
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
398 pm = output[k, :, :, testPMIndex]
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
399 gt = batchLabels[k, :, :, testPMIndex]
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
400 im = np.sqrt(normalize(batchData[k, :, :, 0]))
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
401 imwrite(np.uint8(255 * np.concatenate((im, np.concatenate((pm, gt), axis=1)), axis=1)),
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
402 '%s/I%05d.png' % (outPMPath, i - j + k + 1))
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
403
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
404 # --------------------------------------------------
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
405 # save hyper-parameters, clean-up
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
406 # --------------------------------------------------
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
407
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
408 saveData(UNet2D.hp, pathjoin(modelPath, 'hp.data'))
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
409
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
410 trainWriter.close()
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
411 validWriter.close()
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
412 sess.close()
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
413
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
414 def deploy(imPath, nImages, modelPath, pmPath, gpuIndex, pmIndex):
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
415 os.environ['CUDA_VISIBLE_DEVICES'] = '%d' % gpuIndex
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
416
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
417 variablesPath = pathjoin(modelPath, 'model.ckpt')
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
418 outPMPath = pmPath
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
419
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
420 hp = loadData(pathjoin(modelPath, 'hp.data'))
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
421 UNet2D.setupWithHP(hp)
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
422
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
423 batchSize = UNet2D.hp['batchSize']
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
424 imSize = UNet2D.hp['imSize']
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
425 nChannels = UNet2D.hp['nChannels']
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
426 nClasses = UNet2D.hp['nClasses']
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
427
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
428 # --------------------------------------------------
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
429 # data
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
430 # --------------------------------------------------
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
431
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
432 Data = np.zeros((nImages, imSize, imSize, nChannels))
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
433
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
434 datasetMean = loadData(pathjoin(modelPath, 'datasetMean.data'))
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
435 datasetStDev = loadData(pathjoin(modelPath, 'datasetStDev.data'))
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
436
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
437 for iSample in range(0, nImages):
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
438 path = '%s/I%05d_Img.tif' % (imPath, iSample)
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
439 im = im2double(tifread(path))
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
440 Data[iSample, :, :, 0] = (im - datasetMean) / datasetStDev
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
441
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
442 # --------------------------------------------------
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
443 # session
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
444 # --------------------------------------------------
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
445
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
446 saver = tf.train.Saver()
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
447 sess = tf.Session(config=tf.ConfigProto(
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
448 allow_soft_placement=True)) # config parameter needed to save variables when using GPU
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
449
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
450 saver.restore(sess, variablesPath)
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
451 print("Model restored.")
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
452
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
453 # --------------------------------------------------
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
454 # deploy
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
455 # --------------------------------------------------
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
456
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
457 batchData = np.zeros((batchSize, imSize, imSize, nChannels))
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
458
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
459 if not os.path.exists(outPMPath):
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
460 os.makedirs(outPMPath)
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
461
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
462 for i in range(nImages):
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
463 print(i, nImages)
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
464
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
465 j = np.mod(i, batchSize)
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
466
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
467 batchData[j, :, :, :] = Data[i, :, :, :]
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
468
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
469 if j == batchSize - 1 or i == nImages - 1:
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
470
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
471 output = sess.run(UNet2D.nn, feed_dict={UNet2D.tfData: batchData, UNet2D.tfTraining: 0})
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
472
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
473 for k in range(j + 1):
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
474 pm = output[k, :, :, pmIndex]
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
475 im = np.sqrt(normalize(batchData[k, :, :, 0]))
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
476 # imwrite(np.uint8(255*np.concatenate((im,pm),axis=1)),'%s/I%05d.png' % (outPMPath,i-j+k+1))
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
477 imwrite(np.uint8(255 * im), '%s/I%05d_Im.png' % (outPMPath, i - j + k + 1))
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
478 imwrite(np.uint8(255 * pm), '%s/I%05d_PM.png' % (outPMPath, i - j + k + 1))
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
479
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
480 # --------------------------------------------------
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
481 # clean-up
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
482 # --------------------------------------------------
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
483
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
484 sess.close()
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
485
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
486 def singleImageInferenceSetup(modelPath, gpuIndex,mean,std):
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
487 variablesPath = pathjoin(modelPath, 'model.ckpt')
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
488
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
489 hp = loadData(pathjoin(modelPath, 'hp.data'))
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
490 UNet2D.setupWithHP(hp)
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
491 if mean ==-1:
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
492 UNet2D.DatasetMean = loadData(pathjoin(modelPath, 'datasetMean.data'))
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
493 else:
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
494 UNet2D.DatasetMean = mean
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
495
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
496 if std == -1:
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
497 UNet2D.DatasetStDev = loadData(pathjoin(modelPath, 'datasetStDev.data'))
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
498 else:
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
499 UNet2D.DatasetStDev = std
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
500 print(UNet2D.DatasetMean)
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
501 print(UNet2D.DatasetStDev)
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
502
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
503 # --------------------------------------------------
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
504 # session
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
505 # --------------------------------------------------
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
506
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
507 saver = tf.train.Saver()
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
508 UNet2D.Session = tf.Session(config=tf.ConfigProto())
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
509 # allow_soft_placement=True)) # config parameter needed to save variables when using GPU
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
510
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
511 saver.restore(UNet2D.Session, variablesPath)
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
512 print("Model restored.")
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
513
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
514 def singleImageInferenceCleanup():
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
515 UNet2D.Session.close()
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
516
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
517 def singleImageInference(image, mode, pmIndex):
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
518 print('Inference...')
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
519
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
520 batchSize = UNet2D.hp['batchSize']
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
521 imSize = UNet2D.hp['imSize']
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
522 nChannels = UNet2D.hp['nChannels']
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
523
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
524 PI2D.setup(image, imSize, int(imSize / 8), mode)
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
525 PI2D.createOutput(nChannels)
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
526
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
527 batchData = np.zeros((batchSize, imSize, imSize, nChannels))
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
528 for i in range(PI2D.NumPatches):
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
529 j = np.mod(i, batchSize)
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
530 batchData[j, :, :, 0] = (PI2D.getPatch(i) - UNet2D.DatasetMean) / UNet2D.DatasetStDev
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
531 if j == batchSize - 1 or i == PI2D.NumPatches - 1:
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
532 output = UNet2D.Session.run(UNet2D.nn, feed_dict={UNet2D.tfData: batchData, UNet2D.tfTraining: 0})
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
533 for k in range(j + 1):
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
534 pm = output[k, :, :, pmIndex]
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
535 PI2D.patchOutput(i - j + k, pm)
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
536 # PI2D.patchOutput(i-j+k,normalize(imgradmag(PI2D.getPatch(i-j+k),1)))
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
537
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
538 return PI2D.getValidOutput()
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
539
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
540
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
541 if __name__ == '__main__':
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
542 parser = argparse.ArgumentParser()
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
543 parser.add_argument("imagePath", help="path to the .tif file")
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
544 parser.add_argument("--model", help="type of model. For example, nuclei vs cytoplasm",default = 'nucleiDAPI')
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
545 parser.add_argument("--outputPath", help="output path of probability map")
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
546 parser.add_argument("--channel", help="channel to perform inference on", type=int, default=0)
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
547 parser.add_argument("--classOrder", help="background, contours, foreground", type = int, nargs = '+', default=-1)
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
548 parser.add_argument("--mean", help="mean intensity of input image. Use -1 to use model", type=float, default=-1)
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
549 parser.add_argument("--std", help="mean standard deviation of input image. Use -1 to use model", type=float, default=-1)
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
550 parser.add_argument("--scalingFactor", help="factor by which to increase/decrease image size by", type=float,
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
551 default=1)
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
552 parser.add_argument("--stackOutput", help="save probability maps as separate files", action='store_true')
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
553 parser.add_argument("--GPU", help="explicitly select GPU", type=int, default = -1)
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
554 parser.add_argument("--outlier",
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
555 help="map percentile intensity to max when rescaling intensity values. Max intensity as default",
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
556 type=float, default=-1)
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
557 args = parser.parse_args()
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
558
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
559 logPath = ''
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
560 scriptPath = os.path.dirname(os.path.realpath(__file__))
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
561 modelPath = os.path.join(scriptPath, 'models', args.model)
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
562 # modelPath = os.path.join(scriptPath, 'models/cytoplasmINcell')
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
563 # modelPath = os.path.join(scriptPath, 'cytoplasmZeissNikon')
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
564 pmPath = ''
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
565
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
566 if os.system('nvidia-smi') == 0:
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
567 if args.GPU == -1:
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
568 print("automatically choosing GPU")
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
569 GPU = GPUselect.pick_gpu_lowest_memory()
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
570 else:
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
571 GPU = args.GPU
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
572 print('Using GPU ' + str(GPU))
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
573
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
574 else:
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
575 if sys.platform == 'win32': # only 1 gpu on windows
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
576 if args.GPU==-1:
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
577 GPU = 0
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
578 else:
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
579 GPU = args.GPU
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
580 print('Using GPU ' + str(GPU))
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
581 else:
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
582 GPU=0
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
583 print('Using CPU')
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
584 os.environ['CUDA_VISIBLE_DEVICES'] = '%d' % GPU
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
585 UNet2D.singleImageInferenceSetup(modelPath, GPU,args.mean,args.std)
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
586 nClass = UNet2D.hp['nClasses']
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
587 imagePath = args.imagePath
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
588 dapiChannel = args.channel
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
589 dsFactor = args.scalingFactor
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
590 parentFolder = os.path.dirname(os.path.dirname(imagePath))
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
591 fileName = os.path.basename(imagePath)
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
592 fileNamePrefix = fileName.split(os.extsep, 1)
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
593 print(fileName)
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
594 fileType = fileNamePrefix[1]
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
595
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
596 if fileType=='ome.tif' or fileType == 'btf' :
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
597 I = skio.imread(imagePath, img_num=dapiChannel,plugin='tifffile')
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
598 elif fileType == 'tif' :
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
599 I = tifffile.imread(imagePath, key=dapiChannel)
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
600 elif fileType == 'czi':
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
601 with czifile.CziFile(imagePath) as czi:
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
602 image = czi.asarray()
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
603 I = image[0, 0, dapiChannel, 0, 0, :, :, 0]
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
604 elif fileType == 'nd2':
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
605 with ND2Reader(imagePath) as fullStack:
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
606 I = fullStack[dapiChannel]
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
607
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
608 if args.classOrder == -1:
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
609 args.classOrder = range(nClass)
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
610
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
611 rawI = I
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
612 print(type(I))
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
613 hsize = int((float(I.shape[0]) * float(dsFactor)))
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
614 vsize = int((float(I.shape[1]) * float(dsFactor)))
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
615 I = resize(I, (hsize, vsize))
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
616 if args.outlier == -1:
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
617 maxLimit = np.max(I)
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
618 else:
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
619 maxLimit = np.percentile(I, args.outlier)
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
620 I = im2double(sk.rescale_intensity(I, in_range=(np.min(I), maxLimit), out_range=(0, 0.983)))
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
621 rawI = im2double(rawI) / np.max(im2double(rawI))
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
622 if not args.outputPath:
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
623 args.outputPath = parentFolder + '//probability_maps'
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
624
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
625 if not os.path.exists(args.outputPath):
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
626 os.makedirs(args.outputPath)
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
627
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
628 append_kwargs = {
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
629 'bigtiff': True,
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
630 'metadata': None,
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
631 'append': True,
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
632 }
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
633 save_kwargs = {
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
634 'bigtiff': True,
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
635 'metadata': None,
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
636 'append': False,
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
637 }
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
638 if args.stackOutput:
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
639 slice=0
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
640 for iClass in args.classOrder[::-1]:
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
641 PM = np.uint8(255*UNet2D.singleImageInference(I, 'accumulate', iClass)) # backwards in order to align with ilastik...
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
642 PM = resize(PM, (rawI.shape[0], rawI.shape[1]))
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
643 if slice==0:
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
644 skimage.io.imsave(args.outputPath + '//' + fileNamePrefix[0] + '_Probabilities_' + str(dapiChannel) + '.tif', np.uint8(255 * PM),**save_kwargs)
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
645 else:
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
646 skimage.io.imsave(args.outputPath + '//' + fileNamePrefix[0] + '_Probabilities_' + str(dapiChannel) + '.tif',np.uint8(255 * PM),**append_kwargs)
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
647 if slice==1:
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
648 save_kwargs['append'] = False
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
649 skimage.io.imsave(args.outputPath + '//' + fileNamePrefix[0] + '_Preview_' + str(dapiChannel) + '.tif', np.uint8(255 * PM), **save_kwargs)
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
650 skimage.io.imsave(args.outputPath + '//' + fileNamePrefix[0] + '_Preview_' + str(dapiChannel) + '.tif', np.uint8(255 * rawI), **append_kwargs)
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
651 slice = slice + 1
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
652
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
653 else:
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
654 contours = np.uint8(255*UNet2D.singleImageInference(I, 'accumulate', args.classOrder[1]))
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
655 hsize = int((float(I.shape[0]) * float(1 / dsFactor)))
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
656 vsize = int((float(I.shape[1]) * float(1 / dsFactor)))
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
657 contours = resize(contours, (rawI.shape[0], rawI.shape[1]))
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
658 skimage.io.imsave(args.outputPath + '//' + fileNamePrefix[0] + '_ContoursPM_' + str(dapiChannel) + '.tif',np.uint8(255 * contours),**save_kwargs)
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
659 skimage.io.imsave(args.outputPath + '//' + fileNamePrefix[0] + '_ContoursPM_' + str(dapiChannel) + '.tif',np.uint8(255 * rawI), **append_kwargs)
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
660 del contours
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
661 nuclei = np.uint8(255*UNet2D.singleImageInference(I, 'accumulate', args.classOrder[2]))
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
662 nuclei = resize(nuclei, (rawI.shape[0], rawI.shape[1]))
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
663 skimage.io.imsave(args.outputPath + '//' + fileNamePrefix[0] + '_NucleiPM_' + str(dapiChannel) + '.tif',np.uint8(255 * nuclei), **save_kwargs)
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
664 del nuclei
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
665 UNet2D.singleImageInferenceCleanup()
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
666
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
667 #aligned output files to reflect ilastik
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
668 #outputting all classes as single file
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
669 #handles multiple formats including tif, ome.tif, nd2, czi
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
670 #selectable models (human nuclei, mouse nuclei, cytoplasm)
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
671
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
672 #added legacy function to save output files
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
673 #append save function to reduce memory footprint
6bec4fef6b2e "planemo upload for repository https://github.com/ohsu-comp-bio/unmicst commit 73e4cae15f2d7cdc86719e77470eb00af4b6ebb7-dirty"
perssond
parents:
diff changeset
674 #added --classOrder parameter to specify which class is background, contours, and nuclei respectively