changeset 0:3f738d5d91bf draft

planemo upload for repository https://github.com/BMCV/galaxy-image-analysis/tools/detection_viz/ commit c3f4b766f03770f094fda6bda0a5882c0ebd4581
author imgteam
date Sat, 09 Feb 2019 14:35:39 -0500
parents
children ec1ca4d62192
files detection_viz.py detection_viz.xml test-data/out.png test-data/sample.png
diffstat 4 files changed, 97 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/detection_viz.py	Sat Feb 09 14:35:39 2019 -0500
@@ -0,0 +1,59 @@
+import argparse
+import sys
+import os
+import csv
+
+import matplotlib
+matplotlib.use('Agg')
+import matplotlib.pyplot as plt
+
+import skimage.io
+
+def plot_circles(file_name, ax, color, stroke_size, radius):
+    resfile = open(file_name, 'rb')
+    rd = csv.reader(resfile, delimiter=',')
+    for row in rd:
+        circ = plt.Circle((int(row[1]), int(row[0])), lw=stroke_size, radius=radius, color=color, fill=False)
+        ax.add_patch(circ)
+    resfile.close()
+
+def detection_viz(input_file, output_file, tp=None, fn=None, fp=None, stroke_size=3, circle_radius=50):
+    img = skimage.io.imread(input_file)
+
+    fig = plt.figure(figsize=(40, 40))
+    ax = fig.add_axes([0, 0, 1, 1])
+    ax.axis('off')
+
+    plt.imshow(img)
+    if tp is not None:
+        plot_circles(tp, ax, '#00FF00', stroke_size, circle_radius)
+    if fn is not None:
+        plot_circles(fn, ax, 'red', stroke_size, circle_radius)
+    if fp is not None:
+        plot_circles(fp, ax, 'darkorange', stroke_size, circle_radius)
+
+    fig.canvas.print_png(output_file, dpi=1800)
+
+if __name__ == "__main__":
+    parser = argparse.ArgumentParser()
+    parser.add_argument('input_file', type=argparse.FileType('r'), help='original file')
+    # output file should not be of type argparse.FileType('w') sine it is created immediately in this case which leads to an error in renaming
+    parser.add_argument('out_file_str', type=str, help='string of output file name') 
+    parser.add_argument('--tp', dest='input_tp_file', type=argparse.FileType('r'), help='input TP file')
+    parser.add_argument('--fn', dest='input_fn_file', type=argparse.FileType('r'), help='input FN file')
+    parser.add_argument('--fp', dest='input_fp_file', type=argparse.FileType('r'), help='input FP file')
+    parser.add_argument('--stroke_size', dest='thickness', default=3, type=float, help='stroke thickness')
+    parser.add_argument('--circle_radius', dest='circle_radius', type=float, default=50, help='circle radius')
+    args = parser.parse_args()
+
+    tp=None
+    if args.input_tp_file:
+        tp=args.input_tp_file.name
+    fn=None
+    if args.input_fn_file:
+        fn=args.input_fn_file.name
+    fp=None
+    if args.input_fp_file:
+        fp=args.input_fp_file.name
+
+    detection_viz(args.input_file.name, args.out_file_str, tp=tp, fn=fn, fp=fp, stroke_size=args.thickness, circle_radius=args.circle_radius)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/detection_viz.xml	Sat Feb 09 14:35:39 2019 -0500
@@ -0,0 +1,38 @@
+<tool id="ip_detection_viz" name="Detection Visualization" version="0.1">
+    <description>Detection Visualization</description>
+    <requirements>
+        <requirement type="package" version="0.14.2">scikit-image</requirement>
+      <requirement type="package" version="3.0.2">matplotlib</requirement>
+    </requirements>
+    <command>
+        <![CDATA[
+        python '$__tool_directory__/detection_viz.py' '$input' '$output' 
+        --stroke_size $thickness --circle_radius $circle_radius $tp $fn $fp
+        ]]>
+    </command>
+    <inputs>
+        <param name="input" type="data" format="tiff,png,jpg,bmp" label="Binary Image File"/>
+        <param argument="--tp" type="boolean" checked="false" falsevalue="" truevalue="--tp"/>
+        <param argument="--fn" type="boolean" checked="false" falsevalue="" truevalue="--fn"/>
+        <param argument="--fp" type="boolean" checked="false" falsevalue="" truevalue="--fp"/>
+        <param name="thickness" type="float" value="3.0" label="Stroke thickness"/>
+        <param name="circle_radius" type="float" value="50.0" label="Circle radius"/>
+    </inputs>
+    <outputs>
+        <data format="png" name="output"/>
+    </outputs>
+    <tests>
+        <test>
+            <param name="input" value="sample.png"/>
+            <output name="output" value="out.png" ftype="png"/>
+        </test>
+    </tests>
+    <help>
+    **What it does**
+
+    Draws circles of different colors around detected true positives, false negatives and false positives.
+    </help>
+    <citations>
+        <citation type="doi">10.1016/j.jbiotec.2017.07.019</citation>
+    </citations>
+</tool> 
Binary file test-data/out.png has changed
Binary file test-data/sample.png has changed