Mercurial > repos > thomaswollmann > detection_viz
comparison detection_viz.py @ 0:629d9e8ca64c draft
planemo upload for repository https://github.com/BMCV/galaxy-image-analysis/tools/detection_viz/ commit a0ba841e8b3aee770a3243155bedfac0adf9a5a6
author | thomaswollmann |
---|---|
date | Wed, 12 Dec 2018 04:37:59 -0500 |
parents | |
children | ff66bae1f7f8 |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:629d9e8ca64c |
---|---|
1 import argparse | |
2 import sys | |
3 import os | |
4 import csv | |
5 | |
6 import matplotlib | |
7 matplotlib.use('Agg') | |
8 import matplotlib.pyplot as plt | |
9 | |
10 import skimage.io | |
11 | |
12 def plot_circles(file_name, ax, color, stroke_size, radius): | |
13 resfile = open(file_name, 'rb') | |
14 rd = csv.reader(resfile, delimiter=',') | |
15 for row in rd: | |
16 circ = plt.Circle((int(row[1]), int(row[0])), lw=stroke_size, radius=radius, color=color, fill=False) | |
17 ax.add_patch(circ) | |
18 resfile.close() | |
19 | |
20 def detection_viz(input_file, output_file, tp=None, fn=None, fp=None, stroke_size=3, circle_radius=50): | |
21 img = skimage.io.imread(input_file) | |
22 | |
23 fig = plt.figure(figsize=(40, 40)) | |
24 ax = fig.add_axes([0, 0, 1, 1]) | |
25 ax.axis('off') | |
26 | |
27 plt.imshow(img) | |
28 if tp is not None: | |
29 plot_circles(tp, ax, '#00FF00', stroke_size, circle_radius) | |
30 if fn is not None: | |
31 plot_circles(fn, ax, 'red', stroke_size, circle_radius) | |
32 if fp is not None: | |
33 plot_circles(fp, ax, 'darkorange', stroke_size, circle_radius) | |
34 | |
35 fig.canvas.print_png("tmp.png", dpi=1800) | |
36 os.rename("tmp.png", output_file) | |
37 | |
38 if __name__ == "__main__": | |
39 parser = argparse.ArgumentParser() | |
40 parser.add_argument('input_file', type=argparse.FileType('r'), help='original file') | |
41 # 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 | |
42 parser.add_argument('out_file_str', type=str, help='string of output file name') | |
43 parser.add_argument('--tp', dest='input_tp_file', type=argparse.FileType('r'), help='input TP file') | |
44 parser.add_argument('--fn', dest='input_fn_file', type=argparse.FileType('r'), help='input FN file') | |
45 parser.add_argument('--fp', dest='input_fp_file', type=argparse.FileType('r'), help='input FP file') | |
46 parser.add_argument('--stroke_size', dest='thickness', default=3, type=float, help='stroke thickness') | |
47 parser.add_argument('--circle_radius', dest='circle_radius', type=float, default=50, help='circle radius') | |
48 args = parser.parse_args() | |
49 | |
50 tp=None | |
51 if args.input_tp_file: | |
52 tp=args.input_tp_file.name | |
53 fn=None | |
54 if args.input_fn_file: | |
55 fn=args.input_fn_file.name | |
56 fp=None | |
57 if args.input_fp_file: | |
58 fp=args.input_fp_file.name | |
59 | |
60 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) |