annotate 0.2.0/bin/qual_confirm.py @ 0:9e8b1c747a6a draft default tip

planemo upload
author galaxytrakr
date Fri, 29 May 2026 13:32:17 +0000
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
9e8b1c747a6a planemo upload
galaxytrakr
parents:
diff changeset
1 #!/usr/bin/env python3
9e8b1c747a6a planemo upload
galaxytrakr
parents:
diff changeset
2
9e8b1c747a6a planemo upload
galaxytrakr
parents:
diff changeset
3 # Kranti Konganti
9e8b1c747a6a planemo upload
galaxytrakr
parents:
diff changeset
4
9e8b1c747a6a planemo upload
galaxytrakr
parents:
diff changeset
5 import argparse
9e8b1c747a6a planemo upload
galaxytrakr
parents:
diff changeset
6 import inspect
9e8b1c747a6a planemo upload
galaxytrakr
parents:
diff changeset
7 import logging
9e8b1c747a6a planemo upload
galaxytrakr
parents:
diff changeset
8 import os
9e8b1c747a6a planemo upload
galaxytrakr
parents:
diff changeset
9 import pprint
9e8b1c747a6a planemo upload
galaxytrakr
parents:
diff changeset
10
9e8b1c747a6a planemo upload
galaxytrakr
parents:
diff changeset
11
9e8b1c747a6a planemo upload
galaxytrakr
parents:
diff changeset
12 # Multiple inheritence for pretty printing of help text.
9e8b1c747a6a planemo upload
galaxytrakr
parents:
diff changeset
13 class MultiArgFormatClasses(argparse.RawTextHelpFormatter, argparse.ArgumentDefaultsHelpFormatter):
9e8b1c747a6a planemo upload
galaxytrakr
parents:
diff changeset
14 pass
9e8b1c747a6a planemo upload
galaxytrakr
parents:
diff changeset
15
9e8b1c747a6a planemo upload
galaxytrakr
parents:
diff changeset
16
9e8b1c747a6a planemo upload
galaxytrakr
parents:
diff changeset
17 # Main
9e8b1c747a6a planemo upload
galaxytrakr
parents:
diff changeset
18 def main() -> None:
9e8b1c747a6a planemo upload
galaxytrakr
parents:
diff changeset
19 """
9e8b1c747a6a planemo upload
galaxytrakr
parents:
diff changeset
20 This script takes as input two files containing non whitespace lines and will
9e8b1c747a6a planemo upload
galaxytrakr
parents:
diff changeset
21 output lines if it is present in both files.
9e8b1c747a6a planemo upload
galaxytrakr
parents:
diff changeset
22 """
9e8b1c747a6a planemo upload
galaxytrakr
parents:
diff changeset
23
9e8b1c747a6a planemo upload
galaxytrakr
parents:
diff changeset
24 # Set logging.
9e8b1c747a6a planemo upload
galaxytrakr
parents:
diff changeset
25 logging.basicConfig(
9e8b1c747a6a planemo upload
galaxytrakr
parents:
diff changeset
26 format="\n" + "=" * 55 + "\n%(asctime)s - %(levelname)s\n" + "=" * 55 + "\n%(message)s\n\n",
9e8b1c747a6a planemo upload
galaxytrakr
parents:
diff changeset
27 level=logging.DEBUG,
9e8b1c747a6a planemo upload
galaxytrakr
parents:
diff changeset
28 )
9e8b1c747a6a planemo upload
galaxytrakr
parents:
diff changeset
29
9e8b1c747a6a planemo upload
galaxytrakr
parents:
diff changeset
30 # Debug print.
9e8b1c747a6a planemo upload
galaxytrakr
parents:
diff changeset
31 ppp = pprint.PrettyPrinter(width=55)
9e8b1c747a6a planemo upload
galaxytrakr
parents:
diff changeset
32 prog_name = os.path.basename(inspect.stack()[0].filename)
9e8b1c747a6a planemo upload
galaxytrakr
parents:
diff changeset
33
9e8b1c747a6a planemo upload
galaxytrakr
parents:
diff changeset
34 parser = argparse.ArgumentParser(
9e8b1c747a6a planemo upload
galaxytrakr
parents:
diff changeset
35 prog=prog_name, description=main.__doc__, formatter_class=MultiArgFormatClasses
9e8b1c747a6a planemo upload
galaxytrakr
parents:
diff changeset
36 )
9e8b1c747a6a planemo upload
galaxytrakr
parents:
diff changeset
37
9e8b1c747a6a planemo upload
galaxytrakr
parents:
diff changeset
38 required = parser.add_argument_group("required arguments")
9e8b1c747a6a planemo upload
galaxytrakr
parents:
diff changeset
39
9e8b1c747a6a planemo upload
galaxytrakr
parents:
diff changeset
40 required.add_argument(
9e8b1c747a6a planemo upload
galaxytrakr
parents:
diff changeset
41 "-f1",
9e8b1c747a6a planemo upload
galaxytrakr
parents:
diff changeset
42 dest="file1",
9e8b1c747a6a planemo upload
galaxytrakr
parents:
diff changeset
43 default=False,
9e8b1c747a6a planemo upload
galaxytrakr
parents:
diff changeset
44 required=True,
9e8b1c747a6a planemo upload
galaxytrakr
parents:
diff changeset
45 help="Absolute UNIX path to file no. 1 containing\nnon white space lines.",
9e8b1c747a6a planemo upload
galaxytrakr
parents:
diff changeset
46 )
9e8b1c747a6a planemo upload
galaxytrakr
parents:
diff changeset
47 required.add_argument(
9e8b1c747a6a planemo upload
galaxytrakr
parents:
diff changeset
48 "-f2",
9e8b1c747a6a planemo upload
galaxytrakr
parents:
diff changeset
49 dest="file2",
9e8b1c747a6a planemo upload
galaxytrakr
parents:
diff changeset
50 default=False,
9e8b1c747a6a planemo upload
galaxytrakr
parents:
diff changeset
51 required=True,
9e8b1c747a6a planemo upload
galaxytrakr
parents:
diff changeset
52 help="Absolute UNIX path to file no. 2 containing\nnon white space lines.",
9e8b1c747a6a planemo upload
galaxytrakr
parents:
diff changeset
53 )
9e8b1c747a6a planemo upload
galaxytrakr
parents:
diff changeset
54 parser.add_argument(
9e8b1c747a6a planemo upload
galaxytrakr
parents:
diff changeset
55 "-out",
9e8b1c747a6a planemo upload
galaxytrakr
parents:
diff changeset
56 dest="outfile",
9e8b1c747a6a planemo upload
galaxytrakr
parents:
diff changeset
57 default="accs_passed.txt",
9e8b1c747a6a planemo upload
galaxytrakr
parents:
diff changeset
58 help="The following output file will be created in\nthe current working directory.",
9e8b1c747a6a planemo upload
galaxytrakr
parents:
diff changeset
59 )
9e8b1c747a6a planemo upload
galaxytrakr
parents:
diff changeset
60
9e8b1c747a6a planemo upload
galaxytrakr
parents:
diff changeset
61 args = parser.parse_args()
9e8b1c747a6a planemo upload
galaxytrakr
parents:
diff changeset
62 f1 = args.file1
9e8b1c747a6a planemo upload
galaxytrakr
parents:
diff changeset
63 f2 = args.file2
9e8b1c747a6a planemo upload
galaxytrakr
parents:
diff changeset
64 out = args.outfile
9e8b1c747a6a planemo upload
galaxytrakr
parents:
diff changeset
65 f1d = dict()
9e8b1c747a6a planemo upload
galaxytrakr
parents:
diff changeset
66 f2d = dict()
9e8b1c747a6a planemo upload
galaxytrakr
parents:
diff changeset
67
9e8b1c747a6a planemo upload
galaxytrakr
parents:
diff changeset
68 # Basic checks
9e8b1c747a6a planemo upload
galaxytrakr
parents:
diff changeset
69
9e8b1c747a6a planemo upload
galaxytrakr
parents:
diff changeset
70 if not (os.path.exists(f1) and os.path.exists(f2)):
9e8b1c747a6a planemo upload
galaxytrakr
parents:
diff changeset
71 logging.error(
9e8b1c747a6a planemo upload
galaxytrakr
parents:
diff changeset
72 f"File {os.path.basename(f1)} or" + f"\nFile {os.path.basename(f2)} does not exist."
9e8b1c747a6a planemo upload
galaxytrakr
parents:
diff changeset
73 )
9e8b1c747a6a planemo upload
galaxytrakr
parents:
diff changeset
74 exit(1)
9e8b1c747a6a planemo upload
galaxytrakr
parents:
diff changeset
75 elif not (os.path.getsize(f1) > 0 and os.path.getsize(f2) > 0):
9e8b1c747a6a planemo upload
galaxytrakr
parents:
diff changeset
76 logging.error(
9e8b1c747a6a planemo upload
galaxytrakr
parents:
diff changeset
77 f"File {os.path.basename(f1)} or" + f"\nFile {os.path.basename(f2)} is empty."
9e8b1c747a6a planemo upload
galaxytrakr
parents:
diff changeset
78 )
9e8b1c747a6a planemo upload
galaxytrakr
parents:
diff changeset
79 exit(1)
9e8b1c747a6a planemo upload
galaxytrakr
parents:
diff changeset
80
9e8b1c747a6a planemo upload
galaxytrakr
parents:
diff changeset
81 with open(f1, "r") as f1_fh:
9e8b1c747a6a planemo upload
galaxytrakr
parents:
diff changeset
82 for line in f1_fh:
9e8b1c747a6a planemo upload
galaxytrakr
parents:
diff changeset
83 f1d[line.strip()] = 1
9e8b1c747a6a planemo upload
galaxytrakr
parents:
diff changeset
84
9e8b1c747a6a planemo upload
galaxytrakr
parents:
diff changeset
85 with open(f2, "r") as f2_fh:
9e8b1c747a6a planemo upload
galaxytrakr
parents:
diff changeset
86 for line in f2_fh:
9e8b1c747a6a planemo upload
galaxytrakr
parents:
diff changeset
87 f2d[line.strip()] = 1
9e8b1c747a6a planemo upload
galaxytrakr
parents:
diff changeset
88
9e8b1c747a6a planemo upload
galaxytrakr
parents:
diff changeset
89 big = f1d
9e8b1c747a6a planemo upload
galaxytrakr
parents:
diff changeset
90 small = f2d
9e8b1c747a6a planemo upload
galaxytrakr
parents:
diff changeset
91
9e8b1c747a6a planemo upload
galaxytrakr
parents:
diff changeset
92 if len(f1d.keys()) < len(f2d.keys()):
9e8b1c747a6a planemo upload
galaxytrakr
parents:
diff changeset
93 big = f2d
9e8b1c747a6a planemo upload
galaxytrakr
parents:
diff changeset
94 small = f1d
9e8b1c747a6a planemo upload
galaxytrakr
parents:
diff changeset
95
9e8b1c747a6a planemo upload
galaxytrakr
parents:
diff changeset
96 with open(out, "w") as out_fh:
9e8b1c747a6a planemo upload
galaxytrakr
parents:
diff changeset
97 for line in small.keys():
9e8b1c747a6a planemo upload
galaxytrakr
parents:
diff changeset
98 if line in big.keys():
9e8b1c747a6a planemo upload
galaxytrakr
parents:
diff changeset
99 out_fh.write(line + "\n")
9e8b1c747a6a planemo upload
galaxytrakr
parents:
diff changeset
100
9e8b1c747a6a planemo upload
galaxytrakr
parents:
diff changeset
101 f1_fh.close()
9e8b1c747a6a planemo upload
galaxytrakr
parents:
diff changeset
102 f2_fh.close()
9e8b1c747a6a planemo upload
galaxytrakr
parents:
diff changeset
103 out_fh.close()
9e8b1c747a6a planemo upload
galaxytrakr
parents:
diff changeset
104
9e8b1c747a6a planemo upload
galaxytrakr
parents:
diff changeset
105
9e8b1c747a6a planemo upload
galaxytrakr
parents:
diff changeset
106 if __name__ == "__main__":
9e8b1c747a6a planemo upload
galaxytrakr
parents:
diff changeset
107 main()