Repository 'color_deconvolution'
hg clone https://toolshed.g2.bx.psu.edu/repos/imgteam/color_deconvolution

Changeset 2:612aa1478fe1 (2023-11-13)
Previous changeset 1:0976b373a321 (2019-07-22)
Commit message:
planemo upload for repository https://github.com/BMCV/galaxy-image-analysis/tree/master/tools/color-deconvolution/ commit 2286a6c9da88596349ed9d967c51541409c0a7bf
modified:
color-deconvolution.xml
color_deconvolution.py
b
diff -r 0976b373a321 -r 612aa1478fe1 color-deconvolution.xml
--- a/color-deconvolution.xml Mon Jul 22 05:02:00 2019 -0400
+++ b/color-deconvolution.xml Mon Nov 13 22:10:42 2023 +0000
b
@@ -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>
b
diff -r 0976b373a321 -r 612aa1478fe1 color_deconvolution.py
--- a/color_deconvolution.py Mon Jul 22 05:02:00 2019 -0400
+++ b/color_deconvolution.py Mon Nov 13 22:10:42 2023 +0000
[
b"@@ -1,87 +1,79 @@\n import argparse\n import sys\n import warnings\n+\n import numpy as np\n-import skimage.io\n import skimage.color\n+import skimage.io\n import skimage.util\n-from sklearn.decomposition import PCA, NMF, FastICA, FactorAnalysis\n+from sklearn.decomposition import FactorAnalysis, FastICA, NMF, PCA\n \n convOptions = {\n-           'hed2rgb' : lambda img_raw: skimage.color.hed2rgb(img_raw),\n-           'hsv2rgb' : lambda img_raw: skimage.color.hsv2rgb(img_raw),\n-           'lab2lch' : lambda img_raw: skimage.color.lab2lch(img_raw),\n-           'lab2rgb' : lambda img_raw: skimage.color.lab2rgb(img_raw),\n-           'lab2xyz' : lambda img_raw: skimage.color.lab2xyz(img_raw),\n-           'lch2lab' : lambda img_raw: skimage.color.lch2lab(img_raw),\n-           'luv2rgb' : lambda img_raw: skimage.color.luv2rgb(img_raw),\n-           'luv2xyz' : lambda img_raw: skimage.color.luv2xyz(img_raw),\n-           'rgb2hed' : lambda img_raw: skimage.color.rgb2hed(img_raw),\n-           'rgb2hsv' : lambda img_raw: skimage.color.rgb2hsv(img_raw),\n-           'rgb2lab' : lambda img_raw: skimage.color.rgb2lab(img_raw),\n-           'rgb2luv' : lambda img_raw: skimage.color.rgb2luv(img_raw),\n-           'rgb2rgbcie' : lambda img_raw: skimage.color.rgb2rgbcie(img_raw),\n-           'rgb2xyz' : lambda img_raw: skimage.color.rgb2xyz(img_raw),\n-           #'rgb2ycbcr' : lambda img_raw: skimage.color.rgb2ycbcr(img_raw),\n-           #'rgb2yiq' : lambda img_raw: skimage.color.rgb2yiq(img_raw),\n-           #'rgb2ypbpr' : lambda img_raw: skimage.color.rgb2ypbpr(img_raw),\n-           #'rgb2yuv' : lambda img_raw: skimage.color.rgb2yuv(img_raw),\n-           #'rgba2rgb' : lambda img_raw: skimage.color.rgba2rgb(img_raw),\n-           'rgbcie2rgb' : lambda img_raw: skimage.color.rgbcie2rgb(img_raw),\n-           'xyz2lab' : lambda img_raw: skimage.color.xyz2lab(img_raw),\n-           'xyz2luv' : lambda img_raw: skimage.color.xyz2luv(img_raw),\n-           'xyz2rgb' : lambda img_raw: skimage.color.xyz2rgb(img_raw),\n-           #'ycbcr2rgb' : lambda img_raw: skimage.color.ycbcr2rgb(img_raw),\n-           #'yiq2rgb' : lambda img_raw: skimage.color.yiq2rgb(img_raw),\n-           #'ypbpr2rgb' : lambda img_raw: skimage.color.ypbpr2rgb(img_raw),\n-           #'yuv2rgb' : lambda img_raw: skimage.color.yuv2rgb(img_raw),    \n-    \n-           'rgb_from_hed' : lambda img_raw: skimage.color.combine_stains(img_raw, skimage.color.rgb_from_hed),\n-           'rgb_from_hdx' : lambda img_raw: skimage.color.combine_stains(img_raw, skimage.color.rgb_from_hdx),\n-           'rgb_from_fgx' : lambda img_raw: skimage.color.combine_stains(img_raw, skimage.color.rgb_from_fgx),\n-           'rgb_from_bex' : lambda img_raw: skimage.color.combine_stains(img_raw, skimage.color.rgb_from_bex),\n-           'rgb_from_rbd' : lambda img_raw: skimage.color.combine_stains(img_raw, skimage.color.rgb_from_rbd),\n-           'rgb_from_gdx' : lambda img_raw: skimage.color.combine_stains(img_raw, skimage.color.rgb_from_gdx),\n-           'rgb_from_hax' : lambda img_raw: skimage.color.combine_stains(img_raw, skimage.color.rgb_from_hax),\n-           'rgb_from_bro' : lambda img_raw: skimage.color.combine_stains(img_raw, skimage.color.rgb_from_bro),\n-           'rgb_from_bpx' : lambda img_raw: skimage.color.combine_stains(img_raw, skimage.color.rgb_from_bpx),\n-           'rgb_from_ahx' : lambda img_raw: skimage.color.combine_stains(img_raw, skimage.color.rgb_from_ahx),\n-           'rgb_from_hpx' : lambda img_raw: skimage.color.combine_stains(img_raw, skimage.color.rgb_from_hpx),\n-    \n-           'hed_from_rgb' : lambda img_raw: skimage.color.separate_stains(img_raw, skimage.color.hed_from_rgb),\n-           'hdx_from_rgb' : lambda img_raw: skimage.color.separate_stains(img_raw, skimage.color.hdx_from_rgb),\n-           'fgx_from_rgb' : lambda img_raw: skimage.color.separate_stains(img_raw, skimage.color.fgx_from_rgb),\n-           'bex_from_rgb' : lambda img_raw: skimage.color.separate_stains(img_raw, skimage.color.bex_fro"..b'g_raw: skimage.color.combine_stains(img_raw, skimage.color.rgb_from_hdx),\n+    \'rgb_from_fgx\': lambda img_raw: skimage.color.combine_stains(img_raw, skimage.color.rgb_from_fgx),\n+    \'rgb_from_bex\': lambda img_raw: skimage.color.combine_stains(img_raw, skimage.color.rgb_from_bex),\n+    \'rgb_from_rbd\': lambda img_raw: skimage.color.combine_stains(img_raw, skimage.color.rgb_from_rbd),\n+    \'rgb_from_gdx\': lambda img_raw: skimage.color.combine_stains(img_raw, skimage.color.rgb_from_gdx),\n+    \'rgb_from_hax\': lambda img_raw: skimage.color.combine_stains(img_raw, skimage.color.rgb_from_hax),\n+    \'rgb_from_bro\': lambda img_raw: skimage.color.combine_stains(img_raw, skimage.color.rgb_from_bro),\n+    \'rgb_from_bpx\': lambda img_raw: skimage.color.combine_stains(img_raw, skimage.color.rgb_from_bpx),\n+    \'rgb_from_ahx\': lambda img_raw: skimage.color.combine_stains(img_raw, skimage.color.rgb_from_ahx),\n+    \'rgb_from_hpx\': lambda img_raw: skimage.color.combine_stains(img_raw, skimage.color.rgb_from_hpx),\n+\n+    \'hed_from_rgb\': lambda img_raw: skimage.color.separate_stains(img_raw, skimage.color.hed_from_rgb),\n+    \'hdx_from_rgb\': lambda img_raw: skimage.color.separate_stains(img_raw, skimage.color.hdx_from_rgb),\n+    \'fgx_from_rgb\': lambda img_raw: skimage.color.separate_stains(img_raw, skimage.color.fgx_from_rgb),\n+    \'bex_from_rgb\': lambda img_raw: skimage.color.separate_stains(img_raw, skimage.color.bex_from_rgb),\n+    \'rbd_from_rgb\': lambda img_raw: skimage.color.separate_stains(img_raw, skimage.color.rbd_from_rgb),\n+    \'gdx_from_rgb\': lambda img_raw: skimage.color.separate_stains(img_raw, skimage.color.gdx_from_rgb),\n+    \'hax_from_rgb\': lambda img_raw: skimage.color.separate_stains(img_raw, skimage.color.hax_from_rgb),\n+    \'bro_from_rgb\': lambda img_raw: skimage.color.separate_stains(img_raw, skimage.color.bro_from_rgb),\n+    \'bpx_from_rgb\': lambda img_raw: skimage.color.separate_stains(img_raw, skimage.color.bpx_from_rgb),\n+    \'ahx_from_rgb\': lambda img_raw: skimage.color.separate_stains(img_raw, skimage.color.ahx_from_rgb),\n+    \'hpx_from_rgb\': lambda img_raw: skimage.color.separate_stains(img_raw, skimage.color.hpx_from_rgb),\n+\n+    \'pca\': lambda img_raw: np.reshape(PCA(n_components=3).fit_transform(np.reshape(img_raw, [-1, img_raw.shape[2]])),\n+                                      [img_raw.shape[0], img_raw.shape[1], -1]),\n+    \'nmf\': lambda img_raw: np.reshape(NMF(n_components=3, init=\'nndsvda\').fit_transform(np.reshape(img_raw, [-1, img_raw.shape[2]])),\n+                                      [img_raw.shape[0], img_raw.shape[1], -1]),\n+    \'ica\': lambda img_raw: np.reshape(FastICA(n_components=3).fit_transform(np.reshape(img_raw, [-1, img_raw.shape[2]])),\n+                                      [img_raw.shape[0], img_raw.shape[1], -1]),\n+    \'fa\': lambda img_raw: np.reshape(FactorAnalysis(n_components=3).fit_transform(np.reshape(img_raw, [-1, img_raw.shape[2]])),\n+                                     [img_raw.shape[0], img_raw.shape[1], -1])\n }\n \n parser = argparse.ArgumentParser()\n parser.add_argument(\'input_file\', type=argparse.FileType(\'r\'), default=sys.stdin, help=\'input file\')\n parser.add_argument(\'out_file\', type=argparse.FileType(\'w\'), default=sys.stdin, help=\'out file (TIFF)\')\n parser.add_argument(\'conv_type\', choices=convOptions.keys(), help=\'conversion type\')\n-args = parser.parse_args() \n+args = parser.parse_args()\n \n-img_in = skimage.io.imread(args.input_file.name)[:,:,0:3]\n+img_in = skimage.io.imread(args.input_file.name)[:, :, 0:3]\n res = convOptions[args.conv_type](img_in)\n-res[res<-1]=-1\n-res[res>1]=1\n+res[res < -1] = -1\n+res[res > +1] = +1\n \n with warnings.catch_warnings():\n-\twarnings.simplefilter("ignore")\n-\tres = skimage.util.img_as_uint(res) #Attention: precision loss\n-\tskimage.io.imsave(args.out_file.name, res, plugin=\'tifffile\')\n+    warnings.simplefilter(\'ignore\')\n+    res = skimage.util.img_as_uint(res)  # Attention: precision loss\n+    skimage.io.imsave(args.out_file.name, res, plugin=\'tifffile\')\n'