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()