Mercurial > repos > dfornika > data_manager_build_kraken2_database
comparison data_manager/kraken2_build_standard.py @ 0:7e43f66abe9d draft
planemo upload for repository https://github.com/dfornika/galaxytools/tree/master/data_managers/data_manager_build_kraken2_database/ commit cc42cd530378bfa3df83b08b6b41aaf2f5072b49-dirty
author | dfornika |
---|---|
date | Thu, 28 Feb 2019 02:32:38 -0500 |
parents | |
children | 32d04371ed19 |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:7e43f66abe9d |
---|---|
1 #!/usr/bin/env python | |
2 | |
3 from __future__ import print_function | |
4 | |
5 import argparse | |
6 import datetime | |
7 import errno | |
8 import json | |
9 import os | |
10 import string | |
11 import subprocess | |
12 import sys | |
13 | |
14 from pprint import pprint | |
15 | |
16 DATA_TABLE_NAME = "kraken2_databases" | |
17 | |
18 def kraken2_build_standard(data_manager_dict, kraken2_args, params, target_directory, data_table_name=DATA_TABLE_NAME): | |
19 today = datetime.date.today().isoformat() | |
20 database_name = "_".join([today, "standard"]) | |
21 args = [ | |
22 'kraken2-build', | |
23 '--threads', str(kraken2_args["threads"]), | |
24 '--standard', | |
25 '--kmer-len', str(kraken2_args["kmer_len"]), | |
26 '--minimizer-len', str(kraken2_args["minimizer_len"]), | |
27 '--minimizer-spaces', str(kraken2_args["minimizer_spaces"]), | |
28 '--db', database_name | |
29 ] | |
30 pprint(args) | |
31 proc = subprocess.Popen(args=args, shell=False, cwd=target_directory) | |
32 return_code = proc.wait() | |
33 if return_code: | |
34 print("Error building database.", file=sys.stderr) | |
35 sys.exit( return_code ) | |
36 | |
37 data_table_entry = { | |
38 "value": database_name, | |
39 "name": database_name, | |
40 "path": database_name | |
41 } | |
42 | |
43 _add_data_table_entry(data_manager_dict, data_table_name, data_table_entry) | |
44 | |
45 | |
46 def _add_data_table_entry(data_manager_dict, data_table_name, data_table_entry): | |
47 data_manager_dict['data_tables'] = data_manager_dict.get( 'data_tables', {} ) | |
48 data_manager_dict['data_tables'][ data_table_name ] = data_manager_dict['data_tables'].get( data_table_name, [] ) | |
49 data_manager_dict['data_tables'][ data_table_name ].append( data_table_entry ) | |
50 return data_manager_dict | |
51 | |
52 | |
53 def main(): | |
54 parser = argparse.ArgumentParser() | |
55 parser.add_argument('params') | |
56 parser.add_argument( '-k', '--kmer-len', dest='kmer_len', type=int, default=35, help='kmer length' ) | |
57 parser.add_argument( '-m', '--minimizer-len', dest='minimizer_len', type=int, default=31, help='minimizer length' ) | |
58 parser.add_argument( '-s', '--minimizer-spaces', dest='minimizer_spaces', default=6, help='minimizer spaces' ) | |
59 parser.add_argument( '-t', '--threads', dest='threads', default=1, help='threads' ) | |
60 args = parser.parse_args() | |
61 | |
62 kraken2_args = { | |
63 "kmer_len": args.kmer_len, | |
64 "minimizer_len": args.minimizer_len, | |
65 "minimizer_spaces": args.minimizer_spaces, | |
66 "threads": args.threads, | |
67 } | |
68 | |
69 params = json.loads(open(args.params).read()) | |
70 pprint(params) | |
71 target_directory = params['output_data'][0]['extra_files_path'] | |
72 | |
73 try: | |
74 os.mkdir( target_directory ) | |
75 except OSError as exc: | |
76 if exc.errno == errno.EEXIST and os.path.isdir( target_directory ): | |
77 pass | |
78 else: | |
79 raise | |
80 | |
81 data_manager_dict = {} | |
82 | |
83 # build the index | |
84 kraken2_build_standard( | |
85 data_manager_dict, | |
86 kraken2_args, | |
87 params, | |
88 target_directory | |
89 ) | |
90 | |
91 # save info to json file | |
92 open(args.params, 'wb').write(json.dumps(data_manager_dict)) | |
93 | |
94 | |
95 if __name__ == "__main__": | |
96 main() |