comparison data_manager/bracken_build_database.py @ 0:911bb6c95bf8 draft default tip

"planemo upload for repository https://github.com/dfornika/galaxytools/tree/master/data_managers/data_manager_build_bracken_database/ commit d0b060e7d9cc9fd89926dbc07fc93c8a1471b3fe-dirty"
author dfornika
date Thu, 24 Oct 2019 17:44:45 -0400
parents
children
comparison
equal deleted inserted replaced
-1:000000000000 0:911bb6c95bf8
1 #!/usr/bin/env python
2
3 from __future__ import print_function
4
5 import argparse
6 import errno
7 import json
8 import os
9 import subprocess
10 import uuid
11
12
13 DATA_TABLE_NAME = "bracken_databases"
14
15
16 def bracken_build_database(target_directory, bracken_build_args, database_name, data_table_name=DATA_TABLE_NAME):
17
18 database_value = str(uuid.uuid4())
19
20 database_name = database_name
21
22 database_path = os.path.join(bracken_build_args['kraken_database'], 'database' + str(bracken_build_args['read_len']) + 'mers.kmer_distrib')
23
24 bracken_build_args_list = [
25 '-t', bracken_build_args['threads'],
26 '-k', bracken_build_args['kmer_len'],
27 '-l', bracken_build_args['read_len'],
28 '-d', bracken_build_args['kraken_database'],
29 ]
30
31 subprocess.check_call(['bracken-build'] + bracken_build_args_list)
32
33 data_table_entry = {
34 "data_tables": {
35 data_table_name: [
36 {
37 "value": database_value,
38 "name": database_name,
39 "path": database_path,
40 }
41 ]
42 }
43 }
44
45 return data_table_entry
46
47
48 def main():
49 parser = argparse.ArgumentParser()
50 parser.add_argument('data_manager_json')
51 parser.add_argument('--threads', dest='threads', default=1, help='threads')
52 parser.add_argument('--kmer-len', dest='kmer_len', help='K-mer length')
53 parser.add_argument('--read-len', dest='read_len', help='Read length')
54 parser.add_argument('--kraken-db', dest='kraken_database', help='Kraken Database')
55 parser.add_argument('--database-name', dest='database_name', help='Database Name')
56 args = parser.parse_args()
57
58 data_manager_input = json.loads(open(args.data_manager_json).read())
59
60 target_directory = data_manager_input['output_data'][0]['extra_files_path']
61
62 bracken_build_args = {
63 'threads': args.threads,
64 'kmer_len': args.kmer_len,
65 'read_len': args.read_len,
66 'kraken_database': args.kraken_database,
67 }
68
69 try:
70 os.mkdir(target_directory)
71 except OSError as exc:
72 if exc.errno == errno.EEXIST and os.path.isdir( target_directory ):
73 pass
74 else:
75 raise
76
77 data_manager_output = {}
78
79 data_manager_output = bracken_build_database(
80 target_directory,
81 bracken_build_args,
82 args.database_name,
83 )
84
85 with open(args.data_manager_json, 'w') as out:
86 out.write(json.dumps(data_manager_output, sort_keys=True))
87
88
89 if __name__ == "__main__":
90 main()