Mercurial > repos > imgteam > color_deconvolution
changeset 2:612aa1478fe1 draft
planemo upload for repository https://github.com/BMCV/galaxy-image-analysis/tree/master/tools/color-deconvolution/ commit 2286a6c9da88596349ed9d967c51541409c0a7bf
author | imgteam |
---|---|
date | Mon, 13 Nov 2023 22:10:42 +0000 |
parents | 0976b373a321 |
children | be70a57d7174 |
files | color-deconvolution.xml color_deconvolution.py |
diffstat | 2 files changed, 69 insertions(+), 71 deletions(-) [+] |
line wrap: on
line diff
--- a/color-deconvolution.xml Mon Jul 22 05:02:00 2019 -0400 +++ b/color-deconvolution.xml Mon Nov 13 22:10:42 2023 +0000 @@ -1,5 +1,11 @@ -<tool id="ip_color_deconvolution" name="Color Deconvolution" version="0.8"> - <description>Color deconvolution</description> +<tool id="ip_color_deconvolution" name="Perform color decomposition" version="0.8-2"> + <description></description> + <edam_operations> + <edam_operation>operation_3443</edam_operation> + </edam_operations> + <xrefs> + <xref type="bio.tools">galaxy_image_analysis</xref> + </xrefs> <requirements> <requirement type="package" version="0.14.2">scikit-image</requirement> <requirement type="package" version="4.0.0">pillow</requirement>
--- a/color_deconvolution.py Mon Jul 22 05:02:00 2019 -0400 +++ b/color_deconvolution.py Mon Nov 13 22:10:42 2023 +0000 @@ -1,87 +1,79 @@ import argparse import sys import warnings + import numpy as np -import skimage.io import skimage.color +import skimage.io import skimage.util -from sklearn.decomposition import PCA, NMF, FastICA, FactorAnalysis +from sklearn.decomposition import FactorAnalysis, FastICA, NMF, PCA convOptions = { - 'hed2rgb' : lambda img_raw: skimage.color.hed2rgb(img_raw), - 'hsv2rgb' : lambda img_raw: skimage.color.hsv2rgb(img_raw), - 'lab2lch' : lambda img_raw: skimage.color.lab2lch(img_raw), - 'lab2rgb' : lambda img_raw: skimage.color.lab2rgb(img_raw), - 'lab2xyz' : lambda img_raw: skimage.color.lab2xyz(img_raw), - 'lch2lab' : lambda img_raw: skimage.color.lch2lab(img_raw), - 'luv2rgb' : lambda img_raw: skimage.color.luv2rgb(img_raw), - 'luv2xyz' : lambda img_raw: skimage.color.luv2xyz(img_raw), - 'rgb2hed' : lambda img_raw: skimage.color.rgb2hed(img_raw), - 'rgb2hsv' : lambda img_raw: skimage.color.rgb2hsv(img_raw), - 'rgb2lab' : lambda img_raw: skimage.color.rgb2lab(img_raw), - 'rgb2luv' : lambda img_raw: skimage.color.rgb2luv(img_raw), - 'rgb2rgbcie' : lambda img_raw: skimage.color.rgb2rgbcie(img_raw), - 'rgb2xyz' : lambda img_raw: skimage.color.rgb2xyz(img_raw), - #'rgb2ycbcr' : lambda img_raw: skimage.color.rgb2ycbcr(img_raw), - #'rgb2yiq' : lambda img_raw: skimage.color.rgb2yiq(img_raw), - #'rgb2ypbpr' : lambda img_raw: skimage.color.rgb2ypbpr(img_raw), - #'rgb2yuv' : lambda img_raw: skimage.color.rgb2yuv(img_raw), - #'rgba2rgb' : lambda img_raw: skimage.color.rgba2rgb(img_raw), - 'rgbcie2rgb' : lambda img_raw: skimage.color.rgbcie2rgb(img_raw), - 'xyz2lab' : lambda img_raw: skimage.color.xyz2lab(img_raw), - 'xyz2luv' : lambda img_raw: skimage.color.xyz2luv(img_raw), - 'xyz2rgb' : lambda img_raw: skimage.color.xyz2rgb(img_raw), - #'ycbcr2rgb' : lambda img_raw: skimage.color.ycbcr2rgb(img_raw), - #'yiq2rgb' : lambda img_raw: skimage.color.yiq2rgb(img_raw), - #'ypbpr2rgb' : lambda img_raw: skimage.color.ypbpr2rgb(img_raw), - #'yuv2rgb' : lambda img_raw: skimage.color.yuv2rgb(img_raw), - - 'rgb_from_hed' : lambda img_raw: skimage.color.combine_stains(img_raw, skimage.color.rgb_from_hed), - 'rgb_from_hdx' : lambda img_raw: skimage.color.combine_stains(img_raw, skimage.color.rgb_from_hdx), - 'rgb_from_fgx' : lambda img_raw: skimage.color.combine_stains(img_raw, skimage.color.rgb_from_fgx), - 'rgb_from_bex' : lambda img_raw: skimage.color.combine_stains(img_raw, skimage.color.rgb_from_bex), - 'rgb_from_rbd' : lambda img_raw: skimage.color.combine_stains(img_raw, skimage.color.rgb_from_rbd), - 'rgb_from_gdx' : lambda img_raw: skimage.color.combine_stains(img_raw, skimage.color.rgb_from_gdx), - 'rgb_from_hax' : lambda img_raw: skimage.color.combine_stains(img_raw, skimage.color.rgb_from_hax), - 'rgb_from_bro' : lambda img_raw: skimage.color.combine_stains(img_raw, skimage.color.rgb_from_bro), - 'rgb_from_bpx' : lambda img_raw: skimage.color.combine_stains(img_raw, skimage.color.rgb_from_bpx), - 'rgb_from_ahx' : lambda img_raw: skimage.color.combine_stains(img_raw, skimage.color.rgb_from_ahx), - 'rgb_from_hpx' : lambda img_raw: skimage.color.combine_stains(img_raw, skimage.color.rgb_from_hpx), - - 'hed_from_rgb' : lambda img_raw: skimage.color.separate_stains(img_raw, skimage.color.hed_from_rgb), - 'hdx_from_rgb' : lambda img_raw: skimage.color.separate_stains(img_raw, skimage.color.hdx_from_rgb), - 'fgx_from_rgb' : lambda img_raw: skimage.color.separate_stains(img_raw, skimage.color.fgx_from_rgb), - 'bex_from_rgb' : lambda img_raw: skimage.color.separate_stains(img_raw, skimage.color.bex_from_rgb), - 'rbd_from_rgb' : lambda img_raw: skimage.color.separate_stains(img_raw, skimage.color.rbd_from_rgb), - 'gdx_from_rgb' : lambda img_raw: skimage.color.separate_stains(img_raw, skimage.color.gdx_from_rgb), - 'hax_from_rgb' : lambda img_raw: skimage.color.separate_stains(img_raw, skimage.color.hax_from_rgb), - 'bro_from_rgb' : lambda img_raw: skimage.color.separate_stains(img_raw, skimage.color.bro_from_rgb), - 'bpx_from_rgb' : lambda img_raw: skimage.color.separate_stains(img_raw, skimage.color.bpx_from_rgb), - 'ahx_from_rgb' : lambda img_raw: skimage.color.separate_stains(img_raw, skimage.color.ahx_from_rgb), - 'hpx_from_rgb' : lambda img_raw: skimage.color.separate_stains(img_raw, skimage.color.hpx_from_rgb), - - 'pca' : lambda img_raw: np.reshape(PCA(n_components=3).fit_transform(np.reshape(img_raw, [-1, img_raw.shape[2]])), - [img_raw.shape[0],img_raw.shape[1],-1]), - 'nmf' : lambda img_raw: np.reshape(NMF(n_components=3, init='nndsvda').fit_transform(np.reshape(img_raw, [-1, img_raw.shape[2]])), - [img_raw.shape[0],img_raw.shape[1],-1]), - 'ica' : lambda img_raw: np.reshape(FastICA(n_components=3).fit_transform(np.reshape(img_raw, [-1, img_raw.shape[2]])), - [img_raw.shape[0],img_raw.shape[1],-1]), - 'fa' : lambda img_raw: np.reshape(FactorAnalysis(n_components=3).fit_transform(np.reshape(img_raw, [-1, img_raw.shape[2]])), - [img_raw.shape[0],img_raw.shape[1],-1]) + 'hed2rgb': lambda img_raw: skimage.color.hed2rgb(img_raw), + 'hsv2rgb': lambda img_raw: skimage.color.hsv2rgb(img_raw), + 'lab2lch': lambda img_raw: skimage.color.lab2lch(img_raw), + 'lab2rgb': lambda img_raw: skimage.color.lab2rgb(img_raw), + 'lab2xyz': lambda img_raw: skimage.color.lab2xyz(img_raw), + 'lch2lab': lambda img_raw: skimage.color.lch2lab(img_raw), + 'luv2rgb': lambda img_raw: skimage.color.luv2rgb(img_raw), + 'luv2xyz': lambda img_raw: skimage.color.luv2xyz(img_raw), + 'rgb2hed': lambda img_raw: skimage.color.rgb2hed(img_raw), + 'rgb2hsv': lambda img_raw: skimage.color.rgb2hsv(img_raw), + 'rgb2lab': lambda img_raw: skimage.color.rgb2lab(img_raw), + 'rgb2luv': lambda img_raw: skimage.color.rgb2luv(img_raw), + 'rgb2rgbcie': lambda img_raw: skimage.color.rgb2rgbcie(img_raw), + 'rgb2xyz': lambda img_raw: skimage.color.rgb2xyz(img_raw), + 'rgbcie2rgb': lambda img_raw: skimage.color.rgbcie2rgb(img_raw), + 'xyz2lab': lambda img_raw: skimage.color.xyz2lab(img_raw), + 'xyz2luv': lambda img_raw: skimage.color.xyz2luv(img_raw), + 'xyz2rgb': lambda img_raw: skimage.color.xyz2rgb(img_raw), + + 'rgb_from_hed': lambda img_raw: skimage.color.combine_stains(img_raw, skimage.color.rgb_from_hed), + 'rgb_from_hdx': lambda img_raw: skimage.color.combine_stains(img_raw, skimage.color.rgb_from_hdx), + 'rgb_from_fgx': lambda img_raw: skimage.color.combine_stains(img_raw, skimage.color.rgb_from_fgx), + 'rgb_from_bex': lambda img_raw: skimage.color.combine_stains(img_raw, skimage.color.rgb_from_bex), + 'rgb_from_rbd': lambda img_raw: skimage.color.combine_stains(img_raw, skimage.color.rgb_from_rbd), + 'rgb_from_gdx': lambda img_raw: skimage.color.combine_stains(img_raw, skimage.color.rgb_from_gdx), + 'rgb_from_hax': lambda img_raw: skimage.color.combine_stains(img_raw, skimage.color.rgb_from_hax), + 'rgb_from_bro': lambda img_raw: skimage.color.combine_stains(img_raw, skimage.color.rgb_from_bro), + 'rgb_from_bpx': lambda img_raw: skimage.color.combine_stains(img_raw, skimage.color.rgb_from_bpx), + 'rgb_from_ahx': lambda img_raw: skimage.color.combine_stains(img_raw, skimage.color.rgb_from_ahx), + 'rgb_from_hpx': lambda img_raw: skimage.color.combine_stains(img_raw, skimage.color.rgb_from_hpx), + + 'hed_from_rgb': lambda img_raw: skimage.color.separate_stains(img_raw, skimage.color.hed_from_rgb), + 'hdx_from_rgb': lambda img_raw: skimage.color.separate_stains(img_raw, skimage.color.hdx_from_rgb), + 'fgx_from_rgb': lambda img_raw: skimage.color.separate_stains(img_raw, skimage.color.fgx_from_rgb), + 'bex_from_rgb': lambda img_raw: skimage.color.separate_stains(img_raw, skimage.color.bex_from_rgb), + 'rbd_from_rgb': lambda img_raw: skimage.color.separate_stains(img_raw, skimage.color.rbd_from_rgb), + 'gdx_from_rgb': lambda img_raw: skimage.color.separate_stains(img_raw, skimage.color.gdx_from_rgb), + 'hax_from_rgb': lambda img_raw: skimage.color.separate_stains(img_raw, skimage.color.hax_from_rgb), + 'bro_from_rgb': lambda img_raw: skimage.color.separate_stains(img_raw, skimage.color.bro_from_rgb), + 'bpx_from_rgb': lambda img_raw: skimage.color.separate_stains(img_raw, skimage.color.bpx_from_rgb), + 'ahx_from_rgb': lambda img_raw: skimage.color.separate_stains(img_raw, skimage.color.ahx_from_rgb), + 'hpx_from_rgb': lambda img_raw: skimage.color.separate_stains(img_raw, skimage.color.hpx_from_rgb), + + 'pca': lambda img_raw: np.reshape(PCA(n_components=3).fit_transform(np.reshape(img_raw, [-1, img_raw.shape[2]])), + [img_raw.shape[0], img_raw.shape[1], -1]), + 'nmf': lambda img_raw: np.reshape(NMF(n_components=3, init='nndsvda').fit_transform(np.reshape(img_raw, [-1, img_raw.shape[2]])), + [img_raw.shape[0], img_raw.shape[1], -1]), + 'ica': lambda img_raw: np.reshape(FastICA(n_components=3).fit_transform(np.reshape(img_raw, [-1, img_raw.shape[2]])), + [img_raw.shape[0], img_raw.shape[1], -1]), + 'fa': lambda img_raw: np.reshape(FactorAnalysis(n_components=3).fit_transform(np.reshape(img_raw, [-1, img_raw.shape[2]])), + [img_raw.shape[0], img_raw.shape[1], -1]) } parser = argparse.ArgumentParser() parser.add_argument('input_file', type=argparse.FileType('r'), default=sys.stdin, help='input file') parser.add_argument('out_file', type=argparse.FileType('w'), default=sys.stdin, help='out file (TIFF)') parser.add_argument('conv_type', choices=convOptions.keys(), help='conversion type') -args = parser.parse_args() +args = parser.parse_args() -img_in = skimage.io.imread(args.input_file.name)[:,:,0:3] +img_in = skimage.io.imread(args.input_file.name)[:, :, 0:3] res = convOptions[args.conv_type](img_in) -res[res<-1]=-1 -res[res>1]=1 +res[res < -1] = -1 +res[res > +1] = +1 with warnings.catch_warnings(): - warnings.simplefilter("ignore") - res = skimage.util.img_as_uint(res) #Attention: precision loss - skimage.io.imsave(args.out_file.name, res, plugin='tifffile') + warnings.simplefilter('ignore') + res = skimage.util.img_as_uint(res) # Attention: precision loss + skimage.io.imsave(args.out_file.name, res, plugin='tifffile')