annotate assembly_stats_txt.py @ 0:ad2b274663f8 draft

planemo upload for repository https://github.com/phac-nml/galaxy_tools commit 3f9ae719338c7c8db81d645b8ee09727e2d9ce23
author nml
date Tue, 07 Nov 2017 12:28:31 -0500
parents
children 7556309ffbaf
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
ad2b274663f8 planemo upload for repository https://github.com/phac-nml/galaxy_tools commit 3f9ae719338c7c8db81d645b8ee09727e2d9ce23
nml
parents:
diff changeset
1 #!/usr/bin/env python
ad2b274663f8 planemo upload for repository https://github.com/phac-nml/galaxy_tools commit 3f9ae719338c7c8db81d645b8ee09727e2d9ce23
nml
parents:
diff changeset
2 # -*- coding: utf-8 -*-
ad2b274663f8 planemo upload for repository https://github.com/phac-nml/galaxy_tools commit 3f9ae719338c7c8db81d645b8ee09727e2d9ce23
nml
parents:
diff changeset
3
ad2b274663f8 planemo upload for repository https://github.com/phac-nml/galaxy_tools commit 3f9ae719338c7c8db81d645b8ee09727e2d9ce23
nml
parents:
diff changeset
4 # Version 1.01 - bugs kindly corrected by Jan van Haarst
ad2b274663f8 planemo upload for repository https://github.com/phac-nml/galaxy_tools commit 3f9ae719338c7c8db81d645b8ee09727e2d9ce23
nml
parents:
diff changeset
5 # Modified by Matthew Gopez October 13th, 2017
ad2b274663f8 planemo upload for repository https://github.com/phac-nml/galaxy_tools commit 3f9ae719338c7c8db81d645b8ee09727e2d9ce23
nml
parents:
diff changeset
6
ad2b274663f8 planemo upload for repository https://github.com/phac-nml/galaxy_tools commit 3f9ae719338c7c8db81d645b8ee09727e2d9ce23
nml
parents:
diff changeset
7 import logging
ad2b274663f8 planemo upload for repository https://github.com/phac-nml/galaxy_tools commit 3f9ae719338c7c8db81d645b8ee09727e2d9ce23
nml
parents:
diff changeset
8 import os
ad2b274663f8 planemo upload for repository https://github.com/phac-nml/galaxy_tools commit 3f9ae719338c7c8db81d645b8ee09727e2d9ce23
nml
parents:
diff changeset
9 import subprocess
ad2b274663f8 planemo upload for repository https://github.com/phac-nml/galaxy_tools commit 3f9ae719338c7c8db81d645b8ee09727e2d9ce23
nml
parents:
diff changeset
10 import sys
ad2b274663f8 planemo upload for repository https://github.com/phac-nml/galaxy_tools commit 3f9ae719338c7c8db81d645b8ee09727e2d9ce23
nml
parents:
diff changeset
11
ad2b274663f8 planemo upload for repository https://github.com/phac-nml/galaxy_tools commit 3f9ae719338c7c8db81d645b8ee09727e2d9ce23
nml
parents:
diff changeset
12
ad2b274663f8 planemo upload for repository https://github.com/phac-nml/galaxy_tools commit 3f9ae719338c7c8db81d645b8ee09727e2d9ce23
nml
parents:
diff changeset
13 log = logging.getLogger(__name__)
ad2b274663f8 planemo upload for repository https://github.com/phac-nml/galaxy_tools commit 3f9ae719338c7c8db81d645b8ee09727e2d9ce23
nml
parents:
diff changeset
14
ad2b274663f8 planemo upload for repository https://github.com/phac-nml/galaxy_tools commit 3f9ae719338c7c8db81d645b8ee09727e2d9ce23
nml
parents:
diff changeset
15 assert sys.version_info[:2] >= (2, 4)
ad2b274663f8 planemo upload for repository https://github.com/phac-nml/galaxy_tools commit 3f9ae719338c7c8db81d645b8ee09727e2d9ce23
nml
parents:
diff changeset
16
ad2b274663f8 planemo upload for repository https://github.com/phac-nml/galaxy_tools commit 3f9ae719338c7c8db81d645b8ee09727e2d9ce23
nml
parents:
diff changeset
17
ad2b274663f8 planemo upload for repository https://github.com/phac-nml/galaxy_tools commit 3f9ae719338c7c8db81d645b8ee09727e2d9ce23
nml
parents:
diff changeset
18 def stop_err(msg):
ad2b274663f8 planemo upload for repository https://github.com/phac-nml/galaxy_tools commit 3f9ae719338c7c8db81d645b8ee09727e2d9ce23
nml
parents:
diff changeset
19 sys.stderr.write('%s\n' % msg)
ad2b274663f8 planemo upload for repository https://github.com/phac-nml/galaxy_tools commit 3f9ae719338c7c8db81d645b8ee09727e2d9ce23
nml
parents:
diff changeset
20 sys.exit()
ad2b274663f8 planemo upload for repository https://github.com/phac-nml/galaxy_tools commit 3f9ae719338c7c8db81d645b8ee09727e2d9ce23
nml
parents:
diff changeset
21
ad2b274663f8 planemo upload for repository https://github.com/phac-nml/galaxy_tools commit 3f9ae719338c7c8db81d645b8ee09727e2d9ce23
nml
parents:
diff changeset
22
ad2b274663f8 planemo upload for repository https://github.com/phac-nml/galaxy_tools commit 3f9ae719338c7c8db81d645b8ee09727e2d9ce23
nml
parents:
diff changeset
23 def __main__():
ad2b274663f8 planemo upload for repository https://github.com/phac-nml/galaxy_tools commit 3f9ae719338c7c8db81d645b8ee09727e2d9ce23
nml
parents:
diff changeset
24
ad2b274663f8 planemo upload for repository https://github.com/phac-nml/galaxy_tools commit 3f9ae719338c7c8db81d645b8ee09727e2d9ce23
nml
parents:
diff changeset
25 # Parse Command Line
ad2b274663f8 planemo upload for repository https://github.com/phac-nml/galaxy_tools commit 3f9ae719338c7c8db81d645b8ee09727e2d9ce23
nml
parents:
diff changeset
26
ad2b274663f8 planemo upload for repository https://github.com/phac-nml/galaxy_tools commit 3f9ae719338c7c8db81d645b8ee09727e2d9ce23
nml
parents:
diff changeset
27 working_dir = sys.argv[2]
ad2b274663f8 planemo upload for repository https://github.com/phac-nml/galaxy_tools commit 3f9ae719338c7c8db81d645b8ee09727e2d9ce23
nml
parents:
diff changeset
28 type = sys.argv[3]
ad2b274663f8 planemo upload for repository https://github.com/phac-nml/galaxy_tools commit 3f9ae719338c7c8db81d645b8ee09727e2d9ce23
nml
parents:
diff changeset
29 bucket = sys.argv[4]
ad2b274663f8 planemo upload for repository https://github.com/phac-nml/galaxy_tools commit 3f9ae719338c7c8db81d645b8ee09727e2d9ce23
nml
parents:
diff changeset
30 input = sys.argv[5]
ad2b274663f8 planemo upload for repository https://github.com/phac-nml/galaxy_tools commit 3f9ae719338c7c8db81d645b8ee09727e2d9ce23
nml
parents:
diff changeset
31 stats = sys.argv[6]
ad2b274663f8 planemo upload for repository https://github.com/phac-nml/galaxy_tools commit 3f9ae719338c7c8db81d645b8ee09727e2d9ce23
nml
parents:
diff changeset
32 sortedcontigs = sys.argv[7]
ad2b274663f8 planemo upload for repository https://github.com/phac-nml/galaxy_tools commit 3f9ae719338c7c8db81d645b8ee09727e2d9ce23
nml
parents:
diff changeset
33 histogrampng = sys.argv[8]
ad2b274663f8 planemo upload for repository https://github.com/phac-nml/galaxy_tools commit 3f9ae719338c7c8db81d645b8ee09727e2d9ce23
nml
parents:
diff changeset
34 summedcontigspng = sys.argv[9]
ad2b274663f8 planemo upload for repository https://github.com/phac-nml/galaxy_tools commit 3f9ae719338c7c8db81d645b8ee09727e2d9ce23
nml
parents:
diff changeset
35 histogramdata = sys.argv[10]
ad2b274663f8 planemo upload for repository https://github.com/phac-nml/galaxy_tools commit 3f9ae719338c7c8db81d645b8ee09727e2d9ce23
nml
parents:
diff changeset
36 summedcontigdata = sys.argv[11]
ad2b274663f8 planemo upload for repository https://github.com/phac-nml/galaxy_tools commit 3f9ae719338c7c8db81d645b8ee09727e2d9ce23
nml
parents:
diff changeset
37 try: # for test - needs this done
ad2b274663f8 planemo upload for repository https://github.com/phac-nml/galaxy_tools commit 3f9ae719338c7c8db81d645b8ee09727e2d9ce23
nml
parents:
diff changeset
38 os.makedirs(working_dir)
ad2b274663f8 planemo upload for repository https://github.com/phac-nml/galaxy_tools commit 3f9ae719338c7c8db81d645b8ee09727e2d9ce23
nml
parents:
diff changeset
39 except Exception, e:
ad2b274663f8 planemo upload for repository https://github.com/phac-nml/galaxy_tools commit 3f9ae719338c7c8db81d645b8ee09727e2d9ce23
nml
parents:
diff changeset
40 stop_err('Error running assembly_stats_txt.py ' + str(e))
ad2b274663f8 planemo upload for repository https://github.com/phac-nml/galaxy_tools commit 3f9ae719338c7c8db81d645b8ee09727e2d9ce23
nml
parents:
diff changeset
41
ad2b274663f8 planemo upload for repository https://github.com/phac-nml/galaxy_tools commit 3f9ae719338c7c8db81d645b8ee09727e2d9ce23
nml
parents:
diff changeset
42 cmdline = '%s/fasta_summary.pl -i %s -t %s %s -o %s > /dev/null' \
ad2b274663f8 planemo upload for repository https://github.com/phac-nml/galaxy_tools commit 3f9ae719338c7c8db81d645b8ee09727e2d9ce23
nml
parents:
diff changeset
43 % (os.path.dirname(sys.argv[0]), input, type, bucket,
ad2b274663f8 planemo upload for repository https://github.com/phac-nml/galaxy_tools commit 3f9ae719338c7c8db81d645b8ee09727e2d9ce23
nml
parents:
diff changeset
44 working_dir)
ad2b274663f8 planemo upload for repository https://github.com/phac-nml/galaxy_tools commit 3f9ae719338c7c8db81d645b8ee09727e2d9ce23
nml
parents:
diff changeset
45 try:
ad2b274663f8 planemo upload for repository https://github.com/phac-nml/galaxy_tools commit 3f9ae719338c7c8db81d645b8ee09727e2d9ce23
nml
parents:
diff changeset
46 proc = subprocess.Popen(args=cmdline, shell=True,
ad2b274663f8 planemo upload for repository https://github.com/phac-nml/galaxy_tools commit 3f9ae719338c7c8db81d645b8ee09727e2d9ce23
nml
parents:
diff changeset
47 stderr=subprocess.PIPE)
ad2b274663f8 planemo upload for repository https://github.com/phac-nml/galaxy_tools commit 3f9ae719338c7c8db81d645b8ee09727e2d9ce23
nml
parents:
diff changeset
48 returncode = proc.wait()
ad2b274663f8 planemo upload for repository https://github.com/phac-nml/galaxy_tools commit 3f9ae719338c7c8db81d645b8ee09727e2d9ce23
nml
parents:
diff changeset
49
ad2b274663f8 planemo upload for repository https://github.com/phac-nml/galaxy_tools commit 3f9ae719338c7c8db81d645b8ee09727e2d9ce23
nml
parents:
diff changeset
50 # get stderr, allowing for case where it's very large
ad2b274663f8 planemo upload for repository https://github.com/phac-nml/galaxy_tools commit 3f9ae719338c7c8db81d645b8ee09727e2d9ce23
nml
parents:
diff changeset
51
ad2b274663f8 planemo upload for repository https://github.com/phac-nml/galaxy_tools commit 3f9ae719338c7c8db81d645b8ee09727e2d9ce23
nml
parents:
diff changeset
52 stderr = ''
ad2b274663f8 planemo upload for repository https://github.com/phac-nml/galaxy_tools commit 3f9ae719338c7c8db81d645b8ee09727e2d9ce23
nml
parents:
diff changeset
53 buffsize = 1048576
ad2b274663f8 planemo upload for repository https://github.com/phac-nml/galaxy_tools commit 3f9ae719338c7c8db81d645b8ee09727e2d9ce23
nml
parents:
diff changeset
54 try:
ad2b274663f8 planemo upload for repository https://github.com/phac-nml/galaxy_tools commit 3f9ae719338c7c8db81d645b8ee09727e2d9ce23
nml
parents:
diff changeset
55 while True:
ad2b274663f8 planemo upload for repository https://github.com/phac-nml/galaxy_tools commit 3f9ae719338c7c8db81d645b8ee09727e2d9ce23
nml
parents:
diff changeset
56 stderr += proc.stderr.read(buffsize)
ad2b274663f8 planemo upload for repository https://github.com/phac-nml/galaxy_tools commit 3f9ae719338c7c8db81d645b8ee09727e2d9ce23
nml
parents:
diff changeset
57 if not stderr or len(stderr) % buffsize != 0:
ad2b274663f8 planemo upload for repository https://github.com/phac-nml/galaxy_tools commit 3f9ae719338c7c8db81d645b8ee09727e2d9ce23
nml
parents:
diff changeset
58 break
ad2b274663f8 planemo upload for repository https://github.com/phac-nml/galaxy_tools commit 3f9ae719338c7c8db81d645b8ee09727e2d9ce23
nml
parents:
diff changeset
59 except OverflowError:
ad2b274663f8 planemo upload for repository https://github.com/phac-nml/galaxy_tools commit 3f9ae719338c7c8db81d645b8ee09727e2d9ce23
nml
parents:
diff changeset
60 pass
ad2b274663f8 planemo upload for repository https://github.com/phac-nml/galaxy_tools commit 3f9ae719338c7c8db81d645b8ee09727e2d9ce23
nml
parents:
diff changeset
61 if returncode != 0:
ad2b274663f8 planemo upload for repository https://github.com/phac-nml/galaxy_tools commit 3f9ae719338c7c8db81d645b8ee09727e2d9ce23
nml
parents:
diff changeset
62 raise Exception
ad2b274663f8 planemo upload for repository https://github.com/phac-nml/galaxy_tools commit 3f9ae719338c7c8db81d645b8ee09727e2d9ce23
nml
parents:
diff changeset
63 except Exception, e:
ad2b274663f8 planemo upload for repository https://github.com/phac-nml/galaxy_tools commit 3f9ae719338c7c8db81d645b8ee09727e2d9ce23
nml
parents:
diff changeset
64 stop_err('Error running assembly_stats.py ' + str(e))
ad2b274663f8 planemo upload for repository https://github.com/phac-nml/galaxy_tools commit 3f9ae719338c7c8db81d645b8ee09727e2d9ce23
nml
parents:
diff changeset
65
ad2b274663f8 planemo upload for repository https://github.com/phac-nml/galaxy_tools commit 3f9ae719338c7c8db81d645b8ee09727e2d9ce23
nml
parents:
diff changeset
66 stats_path = os.path.join(working_dir, 'stats.txt')
ad2b274663f8 planemo upload for repository https://github.com/phac-nml/galaxy_tools commit 3f9ae719338c7c8db81d645b8ee09727e2d9ce23
nml
parents:
diff changeset
67 sorted_contigs_path = os.path.join(working_dir, 'sorted_contigs.fa')
ad2b274663f8 planemo upload for repository https://github.com/phac-nml/galaxy_tools commit 3f9ae719338c7c8db81d645b8ee09727e2d9ce23
nml
parents:
diff changeset
68 histogram_png_path = os.path.join(working_dir,
ad2b274663f8 planemo upload for repository https://github.com/phac-nml/galaxy_tools commit 3f9ae719338c7c8db81d645b8ee09727e2d9ce23
nml
parents:
diff changeset
69 'histogram_bins.dat.png')
ad2b274663f8 planemo upload for repository https://github.com/phac-nml/galaxy_tools commit 3f9ae719338c7c8db81d645b8ee09727e2d9ce23
nml
parents:
diff changeset
70 summed_contigs_path = os.path.join(working_dir,
ad2b274663f8 planemo upload for repository https://github.com/phac-nml/galaxy_tools commit 3f9ae719338c7c8db81d645b8ee09727e2d9ce23
nml
parents:
diff changeset
71 'summed_contig_lengths.dat.png')
ad2b274663f8 planemo upload for repository https://github.com/phac-nml/galaxy_tools commit 3f9ae719338c7c8db81d645b8ee09727e2d9ce23
nml
parents:
diff changeset
72 histogram_data_path = os.path.join(working_dir, 'histogram_bins.dat')
ad2b274663f8 planemo upload for repository https://github.com/phac-nml/galaxy_tools commit 3f9ae719338c7c8db81d645b8ee09727e2d9ce23
nml
parents:
diff changeset
73 summed_contigs_data_path = os.path.join(working_dir,
ad2b274663f8 planemo upload for repository https://github.com/phac-nml/galaxy_tools commit 3f9ae719338c7c8db81d645b8ee09727e2d9ce23
nml
parents:
diff changeset
74 'summed_contig_lengths.dat')
ad2b274663f8 planemo upload for repository https://github.com/phac-nml/galaxy_tools commit 3f9ae719338c7c8db81d645b8ee09727e2d9ce23
nml
parents:
diff changeset
75
ad2b274663f8 planemo upload for repository https://github.com/phac-nml/galaxy_tools commit 3f9ae719338c7c8db81d645b8ee09727e2d9ce23
nml
parents:
diff changeset
76 out = open(stats, 'w')
ad2b274663f8 planemo upload for repository https://github.com/phac-nml/galaxy_tools commit 3f9ae719338c7c8db81d645b8ee09727e2d9ce23
nml
parents:
diff changeset
77 for line in open(stats_path):
ad2b274663f8 planemo upload for repository https://github.com/phac-nml/galaxy_tools commit 3f9ae719338c7c8db81d645b8ee09727e2d9ce23
nml
parents:
diff changeset
78 out.write('%s' % line)
ad2b274663f8 planemo upload for repository https://github.com/phac-nml/galaxy_tools commit 3f9ae719338c7c8db81d645b8ee09727e2d9ce23
nml
parents:
diff changeset
79 out.close()
ad2b274663f8 planemo upload for repository https://github.com/phac-nml/galaxy_tools commit 3f9ae719338c7c8db81d645b8ee09727e2d9ce23
nml
parents:
diff changeset
80
ad2b274663f8 planemo upload for repository https://github.com/phac-nml/galaxy_tools commit 3f9ae719338c7c8db81d645b8ee09727e2d9ce23
nml
parents:
diff changeset
81 out = open(sortedcontigs, 'w')
ad2b274663f8 planemo upload for repository https://github.com/phac-nml/galaxy_tools commit 3f9ae719338c7c8db81d645b8ee09727e2d9ce23
nml
parents:
diff changeset
82 for line in open(sorted_contigs_path):
ad2b274663f8 planemo upload for repository https://github.com/phac-nml/galaxy_tools commit 3f9ae719338c7c8db81d645b8ee09727e2d9ce23
nml
parents:
diff changeset
83 out.write('%s' % line)
ad2b274663f8 planemo upload for repository https://github.com/phac-nml/galaxy_tools commit 3f9ae719338c7c8db81d645b8ee09727e2d9ce23
nml
parents:
diff changeset
84 out.close()
ad2b274663f8 planemo upload for repository https://github.com/phac-nml/galaxy_tools commit 3f9ae719338c7c8db81d645b8ee09727e2d9ce23
nml
parents:
diff changeset
85
ad2b274663f8 planemo upload for repository https://github.com/phac-nml/galaxy_tools commit 3f9ae719338c7c8db81d645b8ee09727e2d9ce23
nml
parents:
diff changeset
86 out = open(histogrampng, 'w')
ad2b274663f8 planemo upload for repository https://github.com/phac-nml/galaxy_tools commit 3f9ae719338c7c8db81d645b8ee09727e2d9ce23
nml
parents:
diff changeset
87 for line in open(histogram_png_path):
ad2b274663f8 planemo upload for repository https://github.com/phac-nml/galaxy_tools commit 3f9ae719338c7c8db81d645b8ee09727e2d9ce23
nml
parents:
diff changeset
88 out.write('%s' % line)
ad2b274663f8 planemo upload for repository https://github.com/phac-nml/galaxy_tools commit 3f9ae719338c7c8db81d645b8ee09727e2d9ce23
nml
parents:
diff changeset
89 out.close()
ad2b274663f8 planemo upload for repository https://github.com/phac-nml/galaxy_tools commit 3f9ae719338c7c8db81d645b8ee09727e2d9ce23
nml
parents:
diff changeset
90
ad2b274663f8 planemo upload for repository https://github.com/phac-nml/galaxy_tools commit 3f9ae719338c7c8db81d645b8ee09727e2d9ce23
nml
parents:
diff changeset
91 out = open(summedcontigspng, 'w')
ad2b274663f8 planemo upload for repository https://github.com/phac-nml/galaxy_tools commit 3f9ae719338c7c8db81d645b8ee09727e2d9ce23
nml
parents:
diff changeset
92 for line in open(summed_contigs_path):
ad2b274663f8 planemo upload for repository https://github.com/phac-nml/galaxy_tools commit 3f9ae719338c7c8db81d645b8ee09727e2d9ce23
nml
parents:
diff changeset
93 out.write('%s' % line)
ad2b274663f8 planemo upload for repository https://github.com/phac-nml/galaxy_tools commit 3f9ae719338c7c8db81d645b8ee09727e2d9ce23
nml
parents:
diff changeset
94 out.close()
ad2b274663f8 planemo upload for repository https://github.com/phac-nml/galaxy_tools commit 3f9ae719338c7c8db81d645b8ee09727e2d9ce23
nml
parents:
diff changeset
95
ad2b274663f8 planemo upload for repository https://github.com/phac-nml/galaxy_tools commit 3f9ae719338c7c8db81d645b8ee09727e2d9ce23
nml
parents:
diff changeset
96 out = open(histogramdata, 'w')
ad2b274663f8 planemo upload for repository https://github.com/phac-nml/galaxy_tools commit 3f9ae719338c7c8db81d645b8ee09727e2d9ce23
nml
parents:
diff changeset
97 for line in open(histogram_data_path):
ad2b274663f8 planemo upload for repository https://github.com/phac-nml/galaxy_tools commit 3f9ae719338c7c8db81d645b8ee09727e2d9ce23
nml
parents:
diff changeset
98 out.write('%s' % line)
ad2b274663f8 planemo upload for repository https://github.com/phac-nml/galaxy_tools commit 3f9ae719338c7c8db81d645b8ee09727e2d9ce23
nml
parents:
diff changeset
99 out.close()
ad2b274663f8 planemo upload for repository https://github.com/phac-nml/galaxy_tools commit 3f9ae719338c7c8db81d645b8ee09727e2d9ce23
nml
parents:
diff changeset
100
ad2b274663f8 planemo upload for repository https://github.com/phac-nml/galaxy_tools commit 3f9ae719338c7c8db81d645b8ee09727e2d9ce23
nml
parents:
diff changeset
101 out = open(summedcontigdata, 'w')
ad2b274663f8 planemo upload for repository https://github.com/phac-nml/galaxy_tools commit 3f9ae719338c7c8db81d645b8ee09727e2d9ce23
nml
parents:
diff changeset
102 for line in open(summed_contigs_data_path):
ad2b274663f8 planemo upload for repository https://github.com/phac-nml/galaxy_tools commit 3f9ae719338c7c8db81d645b8ee09727e2d9ce23
nml
parents:
diff changeset
103 out.write('%s' % line)
ad2b274663f8 planemo upload for repository https://github.com/phac-nml/galaxy_tools commit 3f9ae719338c7c8db81d645b8ee09727e2d9ce23
nml
parents:
diff changeset
104 out.close()
ad2b274663f8 planemo upload for repository https://github.com/phac-nml/galaxy_tools commit 3f9ae719338c7c8db81d645b8ee09727e2d9ce23
nml
parents:
diff changeset
105
ad2b274663f8 planemo upload for repository https://github.com/phac-nml/galaxy_tools commit 3f9ae719338c7c8db81d645b8ee09727e2d9ce23
nml
parents:
diff changeset
106
ad2b274663f8 planemo upload for repository https://github.com/phac-nml/galaxy_tools commit 3f9ae719338c7c8db81d645b8ee09727e2d9ce23
nml
parents:
diff changeset
107 if __name__ == '__main__':
ad2b274663f8 planemo upload for repository https://github.com/phac-nml/galaxy_tools commit 3f9ae719338c7c8db81d645b8ee09727e2d9ce23
nml
parents:
diff changeset
108 __main__()