Mercurial > repos > dfornika > mentalist
comparison data_managers/data_manager_mentalist_build_db/data_manager/mentalist_build_db.py @ 0:1d9e3950ce61 draft
planemo upload for repository https://github.com/WGS-TB/MentaLiST/tree/master/galaxy commit 77d12d12820477cdb046be90175f5d2dab52e620
author | dfornika |
---|---|
date | Wed, 20 Dec 2017 17:36:03 -0500 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:1d9e3950ce61 |
---|---|
1 #!/usr/bin/env python | |
2 from __future__ import print_function | |
3 | |
4 import argparse | |
5 import os | |
6 import subprocess | |
7 import sys | |
8 import errno | |
9 from json import dumps, loads | |
10 | |
11 DEFAULT_DATA_TABLE_NAMES = ["mentalist_databases"] | |
12 | |
13 | |
14 def mentalist_build_db( data_manager_dict, database_name, kmer_size, profile, fasta_files, params, target_directory, data_table_names=DEFAULT_DATA_TABLE_NAMES ): | |
15 args = [ 'mentalist', 'build_db', '--db', database_name, '-k', str(kmer_size)] | |
16 if profile: | |
17 args += ['--profile', profile] | |
18 print(args) | |
19 args += ['--fasta_files'] + fasta_files | |
20 proc = subprocess.Popen( args=args, shell=False, cwd=target_directory ) | |
21 return_code = proc.wait() | |
22 if return_code: | |
23 print("Error building database.", file=sys.stderr) | |
24 sys.exit( return_code ) | |
25 data_table_entry = dict( value=database_name, dbkey=database_name, name=database_name, path=database_name ) | |
26 for data_table_name in data_table_names: | |
27 _add_data_table_entry( data_manager_dict, data_table_name, data_table_entry ) | |
28 | |
29 | |
30 def _add_data_table_entry( data_manager_dict, data_table_name, data_table_entry ): | |
31 data_manager_dict['data_tables'] = data_manager_dict.get( 'data_tables', {} ) | |
32 data_manager_dict['data_tables'][ data_table_name ] = data_manager_dict['data_tables'].get( data_table_name, [] ) | |
33 data_manager_dict['data_tables'][ data_table_name ].append( data_table_entry ) | |
34 return data_manager_dict | |
35 | |
36 | |
37 def main(): | |
38 parser = argparse.ArgumentParser() | |
39 parser.add_argument('params') | |
40 parser.add_argument( '-d', '--db', dest='database_name', default=None, help='Database Name' ) | |
41 parser.add_argument( '-f', '--fasta_files', dest='fasta_files', nargs='+', default=None, help='FASTA Filenames' ) | |
42 parser.add_argument( '-k', '--kmer_size', dest='kmer_size', type=int, default=None, help='kmer Size' ) | |
43 parser.add_argument( '-p', '--profile', dest='profile', type=int, default=None, help='Profile' ) | |
44 args = parser.parse_args() | |
45 | |
46 params = loads( open( args.params ).read() ) | |
47 target_directory = params[ 'output_data' ][0]['extra_files_path'] | |
48 | |
49 try: | |
50 os.mkdir( target_directory ) | |
51 except OSError as exc: | |
52 if exc.errno == errno.EEXIST and os.path.isdir( target_directory ): | |
53 pass | |
54 else: | |
55 raise | |
56 | |
57 data_manager_dict = {} | |
58 | |
59 # build the index | |
60 mentalist_build_db( data_manager_dict, args.database_name, args.kmer_size, args.profile, args.fasta_files, params, target_directory, DEFAULT_DATA_TABLE_NAMES ) | |
61 | |
62 # save info to json file | |
63 open( args.params, 'wb' ).write( dumps( data_manager_dict ) ) | |
64 | |
65 | |
66 if __name__ == "__main__": | |
67 main() |