diff data_manager/kraken2_build_standard.py @ 5:1f6fe9dc5490 draft

planemo upload for repository https://github.com/dfornika/galaxytools/tree/master/data_managers/data_manager_build_kraken2_database/ commit 47bcc8467200adee842a5574b67bc6ef46c0be71-dirty
author dfornika
date Mon, 04 Mar 2019 18:59:44 -0500
parents 32d04371ed19
children ae6180bdb1e9
line wrap: on
line diff
--- a/data_manager/kraken2_build_standard.py	Fri Mar 01 14:01:57 2019 -0500
+++ b/data_manager/kraken2_build_standard.py	Mon Mar 04 18:59:44 2019 -0500
@@ -11,15 +11,26 @@
 import subprocess
 import sys
 
-from pprint import pprint
 
 DATA_TABLE_NAME = "kraken2_databases"
 
-def kraken2_build_standard(data_manager_dict, kraken2_args, params, target_directory, data_table_name=DATA_TABLE_NAME):
+def run(args, cwd):
+    proc = subprocess.Popen(args=args, shell=False, cwd=cwd)
+    return_code = proc.wait()
+    if return_code:
+        print("Error building database.", file=sys.stderr)
+        sys.exit( return_code )
+
+def kraken2_build_standard(data_manager_dict, kraken2_args, target_directory, data_table_name=DATA_TABLE_NAME):
     today = datetime.date.today().isoformat()
-    database_name = "_".join([today, "standard"])
+    database_name = "_".join([
+        today,
+        "standard",
+        "kmer-len=" + str(kraken2_args["kmer_len"]),
+        "minimizer-len=" + str(kraken2_args["minimizer_len"]),
+        "minimizer-spaces=" + str(kraken2_args["minimizer_spaces"]),
+    ])
     args = [
-        'kraken2-build',
         '--threads', str(kraken2_args["threads"]),
         '--standard',
         '--kmer-len', str(kraken2_args["kmer_len"]),
@@ -27,41 +38,37 @@
         '--minimizer-spaces', str(kraken2_args["minimizer_spaces"]),
         '--db', database_name
     ]
-    proc = subprocess.Popen(args=args, shell=False, cwd=target_directory)
-    return_code = proc.wait()
-    if return_code:
-        print("Error building database.", file=sys.stderr)
-        sys.exit( return_code )
+
+    run(['kraken2-build'] + args, target_directory)
+
     args = [
         'kraken2-build',
         '--threads', str(kraken2_args["threads"]),
         '--clean',
         '--db', database_name
     ]
-    proc = subprocess.Popen(args=args, shell=False, cwd=target_directory)
-    return_code = proc.wait()
-    if return_code:
-        print("Error building database.", file=sys.stderr)
-        sys.exit( return_code )
+
+    run(['kraken2-build'] + args, target_directory)
+
     data_table_entry = {
         "value": database_name,
         "name": database_name,
         "path": database_name
     }
     
-    _add_data_table_entry(data_manager_dict, data_table_name, data_table_entry)
+    _add_data_table_entry(data_manager_dict, data_table_entry)
 
 
-def _add_data_table_entry(data_manager_dict, data_table_name, data_table_entry):
+def _add_data_table_entry(data_manager_dict, data_table_entry, data_table_name=DATA_TABLE_NAME):
     data_manager_dict['data_tables'] = data_manager_dict.get( 'data_tables', {} )
-    data_manager_dict['data_tables'][ data_table_name ] = data_manager_dict['data_tables'].get( data_table_name, [] )
-    data_manager_dict['data_tables'][ data_table_name ].append( data_table_entry )
+    data_manager_dict['data_tables'][data_table_name] = data_manager_dict['data_tables'].get( data_table_name, [] )
+    data_manager_dict['data_tables'][data_table_name].append( data_table_entry )
     return data_manager_dict
 
 
 def main():
     parser = argparse.ArgumentParser()
-    parser.add_argument('params')
+    parser.add_argument('data_manager_json')
     parser.add_argument( '-k', '--kmer-len', dest='kmer_len', type=int, default=35, help='kmer length' )
     parser.add_argument( '-m', '--minimizer-len', dest='minimizer_len', type=int, default=31, help='minimizer length' )
     parser.add_argument( '-s', '--minimizer-spaces', dest='minimizer_spaces', default=6, help='minimizer spaces' )
@@ -75,9 +82,9 @@
         "threads": args.threads,
     }
     
-    params = json.loads(open(args.params).read())
-    pprint(params)
-    target_directory = params['output_data'][0]['extra_files_path']
+    data_manager_input = json.loads(open(args.data_manager_json).read())
+
+    target_directory = data_manager_input['output_data'][0]['extra_files_path']
 
     try:
         os.mkdir( target_directory )
@@ -87,18 +94,13 @@
         else:
             raise
 
-    data_manager_dict = {}
-
-    # build the index
     kraken2_build_standard(
-        data_manager_dict,
+        data_manager_input,
         kraken2_args,
-        params,
-        target_directory
+        target_directory,
     )
 
-    # save info to json file
-    open(args.params, 'wb').write(json.dumps(data_manager_dict))
+    open(args.data_manager_json, 'wb').write(json.dumps(data_manager_input))
 
 
 if __name__ == "__main__":