Mercurial > repos > imgteam > color_deconvolution
comparison color_deconvolution.py @ 0:8aa6e767f737 draft
planemo upload for repository https://github.com/BMCV/galaxy-image-analysis/tools/color-deconvolution/ commit c3f4b766f03770f094fda6bda0a5882c0ebd4581
author | imgteam |
---|---|
date | Sat, 09 Feb 2019 14:32:37 -0500 |
parents | |
children | 0976b373a321 |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:8aa6e767f737 |
---|---|
1 import argparse | |
2 import sys | |
3 import warnings | |
4 import numpy as np | |
5 import skimage.io | |
6 import skimage.color | |
7 import skimage.util | |
8 from sklearn.decomposition import PCA, NMF, FastICA, FactorAnalysis | |
9 | |
10 convOptions = { | |
11 'hed2rgb' : lambda img_raw: skimage.color.hed2rgb(img_raw), | |
12 'hsv2rgb' : lambda img_raw: skimage.color.hsv2rgb(img_raw), | |
13 'lab2lch' : lambda img_raw: skimage.color.lab2lch(img_raw), | |
14 'lab2rgb' : lambda img_raw: skimage.color.lab2rgb(img_raw), | |
15 'lab2xyz' : lambda img_raw: skimage.color.lab2xyz(img_raw), | |
16 'lch2lab' : lambda img_raw: skimage.color.lch2lab(img_raw), | |
17 'luv2rgb' : lambda img_raw: skimage.color.luv2rgb(img_raw), | |
18 'luv2xyz' : lambda img_raw: skimage.color.luv2xyz(img_raw), | |
19 'rgb2hed' : lambda img_raw: skimage.color.rgb2hed(img_raw), | |
20 'rgb2hsv' : lambda img_raw: skimage.color.rgb2hsv(img_raw), | |
21 'rgb2lab' : lambda img_raw: skimage.color.rgb2lab(img_raw), | |
22 'rgb2luv' : lambda img_raw: skimage.color.rgb2luv(img_raw), | |
23 'rgb2rgbcie' : lambda img_raw: skimage.color.rgb2rgbcie(img_raw), | |
24 'rgb2xyz' : lambda img_raw: skimage.color.rgb2xyz(img_raw), | |
25 #'rgb2ycbcr' : lambda img_raw: skimage.color.rgb2ycbcr(img_raw), | |
26 #'rgb2yiq' : lambda img_raw: skimage.color.rgb2yiq(img_raw), | |
27 #'rgb2ypbpr' : lambda img_raw: skimage.color.rgb2ypbpr(img_raw), | |
28 #'rgb2yuv' : lambda img_raw: skimage.color.rgb2yuv(img_raw), | |
29 #'rgba2rgb' : lambda img_raw: skimage.color.rgba2rgb(img_raw), | |
30 'rgbcie2rgb' : lambda img_raw: skimage.color.rgbcie2rgb(img_raw), | |
31 'xyz2lab' : lambda img_raw: skimage.color.xyz2lab(img_raw), | |
32 'xyz2luv' : lambda img_raw: skimage.color.xyz2luv(img_raw), | |
33 'xyz2rgb' : lambda img_raw: skimage.color.xyz2rgb(img_raw), | |
34 #'ycbcr2rgb' : lambda img_raw: skimage.color.ycbcr2rgb(img_raw), | |
35 #'yiq2rgb' : lambda img_raw: skimage.color.yiq2rgb(img_raw), | |
36 #'ypbpr2rgb' : lambda img_raw: skimage.color.ypbpr2rgb(img_raw), | |
37 #'yuv2rgb' : lambda img_raw: skimage.color.yuv2rgb(img_raw), | |
38 | |
39 'rgb_from_hed' : lambda img_raw: skimage.color.combine_stains(img_raw, skimage.color.rgb_from_hed), | |
40 'rgb_from_hdx' : lambda img_raw: skimage.color.combine_stains(img_raw, skimage.color.rgb_from_hdx), | |
41 'rgb_from_fgx' : lambda img_raw: skimage.color.combine_stains(img_raw, skimage.color.rgb_from_fgx), | |
42 'rgb_from_bex' : lambda img_raw: skimage.color.combine_stains(img_raw, skimage.color.rgb_from_bex), | |
43 'rgb_from_rbd' : lambda img_raw: skimage.color.combine_stains(img_raw, skimage.color.rgb_from_rbd), | |
44 'rgb_from_gdx' : lambda img_raw: skimage.color.combine_stains(img_raw, skimage.color.rgb_from_gdx), | |
45 'rgb_from_hax' : lambda img_raw: skimage.color.combine_stains(img_raw, skimage.color.rgb_from_hax), | |
46 'rgb_from_bro' : lambda img_raw: skimage.color.combine_stains(img_raw, skimage.color.rgb_from_bro), | |
47 'rgb_from_bpx' : lambda img_raw: skimage.color.combine_stains(img_raw, skimage.color.rgb_from_bpx), | |
48 'rgb_from_ahx' : lambda img_raw: skimage.color.combine_stains(img_raw, skimage.color.rgb_from_ahx), | |
49 'rgb_from_hpx' : lambda img_raw: skimage.color.combine_stains(img_raw, skimage.color.rgb_from_hpx), | |
50 | |
51 'hed_from_rgb' : lambda img_raw: skimage.color.separate_stains(img_raw, skimage.color.hed_from_rgb), | |
52 'hdx_from_rgb' : lambda img_raw: skimage.color.separate_stains(img_raw, skimage.color.hdx_from_rgb), | |
53 'fgx_from_rgb' : lambda img_raw: skimage.color.separate_stains(img_raw, skimage.color.fgx_from_rgb), | |
54 'bex_from_rgb' : lambda img_raw: skimage.color.separate_stains(img_raw, skimage.color.bex_from_rgb), | |
55 'rbd_from_rgb' : lambda img_raw: skimage.color.separate_stains(img_raw, skimage.color.rbd_from_rgb), | |
56 'gdx_from_rgb' : lambda img_raw: skimage.color.separate_stains(img_raw, skimage.color.gdx_from_rgb), | |
57 'hax_from_rgb' : lambda img_raw: skimage.color.separate_stains(img_raw, skimage.color.hax_from_rgb), | |
58 'bro_from_rgb' : lambda img_raw: skimage.color.separate_stains(img_raw, skimage.color.bro_from_rgb), | |
59 'bpx_from_rgb' : lambda img_raw: skimage.color.separate_stains(img_raw, skimage.color.bpx_from_rgb), | |
60 'ahx_from_rgb' : lambda img_raw: skimage.color.separate_stains(img_raw, skimage.color.ahx_from_rgb), | |
61 'hpx_from_rgb' : lambda img_raw: skimage.color.separate_stains(img_raw, skimage.color.hpx_from_rgb), | |
62 | |
63 'pca' : lambda img_raw: np.reshape(PCA(n_components=3).fit_transform(np.reshape(img_raw, [-1, img_raw.shape[2]])), | |
64 [img_raw.shape[0],img_raw.shape[1],-1]), | |
65 'nmf' : lambda img_raw: np.reshape(NMF(n_components=3, init='nndsvda').fit_transform(np.reshape(img_raw, [-1, img_raw.shape[2]])), | |
66 [img_raw.shape[0],img_raw.shape[1],-1]), | |
67 'ica' : lambda img_raw: np.reshape(FastICA(n_components=3).fit_transform(np.reshape(img_raw, [-1, img_raw.shape[2]])), | |
68 [img_raw.shape[0],img_raw.shape[1],-1]), | |
69 'fa' : lambda img_raw: np.reshape(FactorAnalysis(n_components=3).fit_transform(np.reshape(img_raw, [-1, img_raw.shape[2]])), | |
70 [img_raw.shape[0],img_raw.shape[1],-1]) | |
71 } | |
72 | |
73 parser = argparse.ArgumentParser() | |
74 parser.add_argument('input_file', type=argparse.FileType('r'), default=sys.stdin, help='input file') | |
75 parser.add_argument('out_file', type=argparse.FileType('w'), default=sys.stdin, help='out file (TIFF)') | |
76 parser.add_argument('conv_type', choices=convOptions.keys(), help='conversion type') | |
77 args = parser.parse_args() | |
78 | |
79 img_in = skimage.io.imread(args.input_file.name)[:,:,0:3] | |
80 res = convOptions[args.conv_type](img_in) | |
81 res[res<-1]=-1 | |
82 res[res>1]=1 | |
83 | |
84 with warnings.catch_warnings(): | |
85 warnings.simplefilter("ignore") | |
86 res = skimage.util.img_as_uint(res) #Attention: precision loss | |
87 skimage.io.imsave(args.out_file.name, res, plugin='tifffile') |