Mercurial > repos > iuc > heinz
annotate visualization.py @ 3:2b80a2596064 draft default tip
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/heinz commit 8007f71281553ddfa45e6f8e1172952d956bb000"
author | iuc |
---|---|
date | Thu, 11 Jun 2020 07:18:17 -0400 |
parents | e41ec5af7472 |
children |
rev | line source |
---|---|
0
e41ec5af7472
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/heinz commit b0b2c64a46bdd9beebdfb7fc5312f75346483763
iuc
parents:
diff
changeset
|
1 #!/usr/bin/env python |
e41ec5af7472
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/heinz commit b0b2c64a46bdd9beebdfb7fc5312f75346483763
iuc
parents:
diff
changeset
|
2 """Visualise the output of Heinz. |
e41ec5af7472
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/heinz commit b0b2c64a46bdd9beebdfb7fc5312f75346483763
iuc
parents:
diff
changeset
|
3 |
e41ec5af7472
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/heinz commit b0b2c64a46bdd9beebdfb7fc5312f75346483763
iuc
parents:
diff
changeset
|
4 This script is used to visualize the output of Heinz, which is in the form of |
e41ec5af7472
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/heinz commit b0b2c64a46bdd9beebdfb7fc5312f75346483763
iuc
parents:
diff
changeset
|
5 DOT language: |
e41ec5af7472
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/heinz commit b0b2c64a46bdd9beebdfb7fc5312f75346483763
iuc
parents:
diff
changeset
|
6 1. Clear the output of Heinz, extract the DOT source code. |
e41ec5af7472
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/heinz commit b0b2c64a46bdd9beebdfb7fc5312f75346483763
iuc
parents:
diff
changeset
|
7 2. Visualize the DOT source code and save it into file. |
e41ec5af7472
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/heinz commit b0b2c64a46bdd9beebdfb7fc5312f75346483763
iuc
parents:
diff
changeset
|
8 |
e41ec5af7472
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/heinz commit b0b2c64a46bdd9beebdfb7fc5312f75346483763
iuc
parents:
diff
changeset
|
9 The function of this script is rather simple, for more advanced visualization, |
e41ec5af7472
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/heinz commit b0b2c64a46bdd9beebdfb7fc5312f75346483763
iuc
parents:
diff
changeset
|
10 please adopt other solutions mentioned in the paper |
e41ec5af7472
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/heinz commit b0b2c64a46bdd9beebdfb7fc5312f75346483763
iuc
parents:
diff
changeset
|
11 doi: 10.1093/bioinformatics/btv526 |
e41ec5af7472
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/heinz commit b0b2c64a46bdd9beebdfb7fc5312f75346483763
iuc
parents:
diff
changeset
|
12 |
e41ec5af7472
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/heinz commit b0b2c64a46bdd9beebdfb7fc5312f75346483763
iuc
parents:
diff
changeset
|
13 This tool is only designed for visualizing the output of Heinz tool. |
e41ec5af7472
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/heinz commit b0b2c64a46bdd9beebdfb7fc5312f75346483763
iuc
parents:
diff
changeset
|
14 """ |
e41ec5af7472
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/heinz commit b0b2c64a46bdd9beebdfb7fc5312f75346483763
iuc
parents:
diff
changeset
|
15 |
e41ec5af7472
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/heinz commit b0b2c64a46bdd9beebdfb7fc5312f75346483763
iuc
parents:
diff
changeset
|
16 # Author: Cico Zhang |
e41ec5af7472
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/heinz commit b0b2c64a46bdd9beebdfb7fc5312f75346483763
iuc
parents:
diff
changeset
|
17 # Date: 2 Aug 2017 |
e41ec5af7472
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/heinz commit b0b2c64a46bdd9beebdfb7fc5312f75346483763
iuc
parents:
diff
changeset
|
18 # Version: 0.2 |
e41ec5af7472
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/heinz commit b0b2c64a46bdd9beebdfb7fc5312f75346483763
iuc
parents:
diff
changeset
|
19 |
e41ec5af7472
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/heinz commit b0b2c64a46bdd9beebdfb7fc5312f75346483763
iuc
parents:
diff
changeset
|
20 import argparse |
e41ec5af7472
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/heinz commit b0b2c64a46bdd9beebdfb7fc5312f75346483763
iuc
parents:
diff
changeset
|
21 import sys |
e41ec5af7472
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/heinz commit b0b2c64a46bdd9beebdfb7fc5312f75346483763
iuc
parents:
diff
changeset
|
22 |
e41ec5af7472
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/heinz commit b0b2c64a46bdd9beebdfb7fc5312f75346483763
iuc
parents:
diff
changeset
|
23 from graphviz import Source |
e41ec5af7472
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/heinz commit b0b2c64a46bdd9beebdfb7fc5312f75346483763
iuc
parents:
diff
changeset
|
24 |
e41ec5af7472
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/heinz commit b0b2c64a46bdd9beebdfb7fc5312f75346483763
iuc
parents:
diff
changeset
|
25 |
e41ec5af7472
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/heinz commit b0b2c64a46bdd9beebdfb7fc5312f75346483763
iuc
parents:
diff
changeset
|
26 def get_args(): |
e41ec5af7472
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/heinz commit b0b2c64a46bdd9beebdfb7fc5312f75346483763
iuc
parents:
diff
changeset
|
27 """Collect the inputs.""" |
e41ec5af7472
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/heinz commit b0b2c64a46bdd9beebdfb7fc5312f75346483763
iuc
parents:
diff
changeset
|
28 parser = argparse.ArgumentParser( |
e41ec5af7472
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/heinz commit b0b2c64a46bdd9beebdfb7fc5312f75346483763
iuc
parents:
diff
changeset
|
29 description='Visualise the output of Heinz') |
e41ec5af7472
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/heinz commit b0b2c64a46bdd9beebdfb7fc5312f75346483763
iuc
parents:
diff
changeset
|
30 parser.add_argument('-i', '--input', required=True, dest='heinz', |
e41ec5af7472
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/heinz commit b0b2c64a46bdd9beebdfb7fc5312f75346483763
iuc
parents:
diff
changeset
|
31 metavar='Heinz_output.txt', type=str, |
e41ec5af7472
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/heinz commit b0b2c64a46bdd9beebdfb7fc5312f75346483763
iuc
parents:
diff
changeset
|
32 help='Output file of Heinz as the input') |
e41ec5af7472
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/heinz commit b0b2c64a46bdd9beebdfb7fc5312f75346483763
iuc
parents:
diff
changeset
|
33 parser.add_argument('-o', '--output', required=True, dest='output', |
e41ec5af7472
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/heinz commit b0b2c64a46bdd9beebdfb7fc5312f75346483763
iuc
parents:
diff
changeset
|
34 metavar='graph.pdf', type=str, |
e41ec5af7472
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/heinz commit b0b2c64a46bdd9beebdfb7fc5312f75346483763
iuc
parents:
diff
changeset
|
35 help='The output file that saves the visualisation') |
e41ec5af7472
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/heinz commit b0b2c64a46bdd9beebdfb7fc5312f75346483763
iuc
parents:
diff
changeset
|
36 args = parser.parse_args() |
e41ec5af7472
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/heinz commit b0b2c64a46bdd9beebdfb7fc5312f75346483763
iuc
parents:
diff
changeset
|
37 |
e41ec5af7472
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/heinz commit b0b2c64a46bdd9beebdfb7fc5312f75346483763
iuc
parents:
diff
changeset
|
38 if args.heinz is None: |
e41ec5af7472
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/heinz commit b0b2c64a46bdd9beebdfb7fc5312f75346483763
iuc
parents:
diff
changeset
|
39 sys.exit('Input file must be designated.') |
e41ec5af7472
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/heinz commit b0b2c64a46bdd9beebdfb7fc5312f75346483763
iuc
parents:
diff
changeset
|
40 |
e41ec5af7472
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/heinz commit b0b2c64a46bdd9beebdfb7fc5312f75346483763
iuc
parents:
diff
changeset
|
41 return args |
e41ec5af7472
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/heinz commit b0b2c64a46bdd9beebdfb7fc5312f75346483763
iuc
parents:
diff
changeset
|
42 |
e41ec5af7472
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/heinz commit b0b2c64a46bdd9beebdfb7fc5312f75346483763
iuc
parents:
diff
changeset
|
43 |
e41ec5af7472
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/heinz commit b0b2c64a46bdd9beebdfb7fc5312f75346483763
iuc
parents:
diff
changeset
|
44 def main(): |
e41ec5af7472
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/heinz commit b0b2c64a46bdd9beebdfb7fc5312f75346483763
iuc
parents:
diff
changeset
|
45 """Main function.""" |
e41ec5af7472
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/heinz commit b0b2c64a46bdd9beebdfb7fc5312f75346483763
iuc
parents:
diff
changeset
|
46 args = get_args() |
e41ec5af7472
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/heinz commit b0b2c64a46bdd9beebdfb7fc5312f75346483763
iuc
parents:
diff
changeset
|
47 # Read the whole output file |
e41ec5af7472
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/heinz commit b0b2c64a46bdd9beebdfb7fc5312f75346483763
iuc
parents:
diff
changeset
|
48 with open(args.heinz) as r: |
e41ec5af7472
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/heinz commit b0b2c64a46bdd9beebdfb7fc5312f75346483763
iuc
parents:
diff
changeset
|
49 graph_dot = r.readlines() |
e41ec5af7472
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/heinz commit b0b2c64a46bdd9beebdfb7fc5312f75346483763
iuc
parents:
diff
changeset
|
50 |
e41ec5af7472
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/heinz commit b0b2c64a46bdd9beebdfb7fc5312f75346483763
iuc
parents:
diff
changeset
|
51 # Remove the redundant lines |
e41ec5af7472
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/heinz commit b0b2c64a46bdd9beebdfb7fc5312f75346483763
iuc
parents:
diff
changeset
|
52 while not graph_dot[0].startswith('graph G {'): |
e41ec5af7472
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/heinz commit b0b2c64a46bdd9beebdfb7fc5312f75346483763
iuc
parents:
diff
changeset
|
53 graph_dot.pop(0) |
e41ec5af7472
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/heinz commit b0b2c64a46bdd9beebdfb7fc5312f75346483763
iuc
parents:
diff
changeset
|
54 |
e41ec5af7472
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/heinz commit b0b2c64a46bdd9beebdfb7fc5312f75346483763
iuc
parents:
diff
changeset
|
55 src = Source(''.join(graph_dot)) |
e41ec5af7472
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/heinz commit b0b2c64a46bdd9beebdfb7fc5312f75346483763
iuc
parents:
diff
changeset
|
56 data_pdf = src.pipe('pdf') |
e41ec5af7472
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/heinz commit b0b2c64a46bdd9beebdfb7fc5312f75346483763
iuc
parents:
diff
changeset
|
57 # Redirect the output (very important) |
e41ec5af7472
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/heinz commit b0b2c64a46bdd9beebdfb7fc5312f75346483763
iuc
parents:
diff
changeset
|
58 with open(args.output, 'wb') as w: |
e41ec5af7472
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/heinz commit b0b2c64a46bdd9beebdfb7fc5312f75346483763
iuc
parents:
diff
changeset
|
59 w.write(data_pdf) |
e41ec5af7472
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/heinz commit b0b2c64a46bdd9beebdfb7fc5312f75346483763
iuc
parents:
diff
changeset
|
60 print('The visualization is saved as PDF!') |
e41ec5af7472
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/heinz commit b0b2c64a46bdd9beebdfb7fc5312f75346483763
iuc
parents:
diff
changeset
|
61 sys.exit(0) |
e41ec5af7472
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/heinz commit b0b2c64a46bdd9beebdfb7fc5312f75346483763
iuc
parents:
diff
changeset
|
62 |
e41ec5af7472
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/heinz commit b0b2c64a46bdd9beebdfb7fc5312f75346483763
iuc
parents:
diff
changeset
|
63 |
e41ec5af7472
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/heinz commit b0b2c64a46bdd9beebdfb7fc5312f75346483763
iuc
parents:
diff
changeset
|
64 if __name__ == "__main__": |
e41ec5af7472
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/heinz commit b0b2c64a46bdd9beebdfb7fc5312f75346483763
iuc
parents:
diff
changeset
|
65 main() |