changeset 5:c511745d5655 draft

planemo upload for repository https://github.com/dfornika/tools-pathogist/tree/master/tools
author dfornika
date Thu, 05 Oct 2017 19:19:44 -0400
parents 7675e3475676
children 5f2bc984f931
files data_managers/data_manager_mentalist_build_database/data_manager/make_json.py data_managers/data_manager_mentalist_build_database/data_manager/mentalist_build.py data_managers/data_manager_mentalist_build_database/data_manager/mentalist_build.xml tools/mentalist_call/mentalist_call.xml
diffstat 4 files changed, 77 insertions(+), 37 deletions(-) [+]
line wrap: on
line diff
--- a/data_managers/data_manager_mentalist_build_database/data_manager/make_json.py	Thu Oct 05 15:17:41 2017 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,27 +0,0 @@
-import argparse
-import json
-import os
-import shutil
-
-
-def main(args):
-    data_manager_entry = {}
-    data_manager_entry['value'] = args.database.lower()
-    data_manager_entry['name'] = args.database
-    data_manager_entry['path'] = '.'
-    data_manager_json = dict(data_tables=dict(mentalist_databases=data_manager_entry))
-    params = json.loads(open(args.output).read())
-    target_directory = params['output_data'][0]['extra_files_path']
-    os.mkdir(target_directory)
-    output_path = os.path.join(os.getcwd(), 'mentalist-database')
-    for filename in os.listdir(output_path):
-        shutil.move(os.path.join(output_path, filename), target_directory)
-    file(args.output, 'w').write(json.dumps(data_manager_json))
-
-
-if __name__ == '__main__':
-    parser = argparse.ArgumentParser(description='Create data manager json.')
-    parser.add_argument('--db', dest='database', action='store', help='Database name')
-    parser.add_argument('--out', dest='output', action='store', help='JSON filename')
-    args = parser.parse_args()
-    main(args)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/data_managers/data_manager_mentalist_build_database/data_manager/mentalist_build.py	Thu Oct 05 19:19:44 2017 -0400
@@ -0,0 +1,69 @@
+#!/usr/bin/env python
+from __future__ import print_function
+
+import argparse
+import os
+import subprocess
+import sys
+import errno
+from json import dumps, loads
+
+DEFAULT_DATA_TABLE_NAMES = ["mentalist_databases"]
+
+
+def build_mentalist_database( data_manager_dict, database_name, kmer_size, profile, fasta_files, params, target_directory, dbkey, data_table_names=DEFAULT_DATA_TABLE_NAMES ):
+    args = [ 'mentalist', 'build_db', '--db', database_name, '-k', kmer_size, '--profile', profile, '--fasta_files', fasta_files]
+    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 )
+    data_table_entry = dict( value=database_name, dbkey=dbkey, name=database_name, path=database_name )
+    for data_table_name in data_table_names:
+        _add_data_table_entry( data_manager_dict, data_table_name, data_table_entry )
+
+
+def _add_data_table_entry( data_manager_dict, data_table_name, data_table_entry ):
+    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 )
+    return data_manager_dict
+
+
+def main():
+    parser = argparse.ArgumentParser()
+    parser.add_argument('params')
+    parser.add_argument( '-d', '--db', dest='database_name', default=None, help='fasta_filenames' )
+    parser.add_argument( '-f', '--fasta_files', dest='fasta_files', nargs='+', default=None, help='fasta_filenames' )
+    parser.add_argument( '-k', '--kmer_size', dest='kmer_size', type=int, default=None, help='kmer_size' )
+    parser.add_argument( '-p', '--profile', dest='profile', type=int, default=None, help='kmer_size' )
+    parser.add_argument( '-y', '--dbkey', dest='dbkey', default=None, help='dbkey' )
+    args = parser.parse_args()
+
+    params = loads( open( args.params ).read() )
+    target_directory = params[ 'output_data' ][0]['extra_files_path']
+
+    try:
+        os.mkdir( target_directory )
+    except OSError as exc:
+        if exc.errno == errno.EEXIST and os.path.isdir( target_directory ):
+            pass
+        else:
+            raise
+
+    data_manager_dict = {}
+
+    dbkey = args.dbkey
+
+    if dbkey in [ None, '', '?' ]:
+        raise Exception( '"%s" is not a valid dbkey. You must specify a valid dbkey.' % ( dbkey ) )
+
+    # build the index
+    build_mentalist_database( data_manager_dict, args.database_name, args.kmer_size, args.profile, args.fasta_files, params, target_directory, dbkey, DEFAULT_DATA_TABLE_NAMES )
+
+    # save info to json file
+    open( args.params, 'wb' ).write( dumps( data_manager_dict ) )
+
+
+if __name__ == "__main__":
+    main()
--- a/data_managers/data_manager_mentalist_build_database/data_manager/mentalist_build.xml	Thu Oct 05 15:17:41 2017 -0400
+++ b/data_managers/data_manager_mentalist_build_database/data_manager/mentalist_build.xml	Thu Oct 05 19:19:44 2017 -0400
@@ -5,17 +5,14 @@
   </requirements>
   <command detect_errors="exit_code">
   <![CDATA[
-	   mkdir mentalist-databases && cd mentalist-databases &&
-	   mentalist
-	   build_db
+	   python '$__tool_directory__/mentalist_build_db.py'
+	   '${out_file}'
 	   --db '$database_name'
 	   -k '$kmer_size'
 	   #if $profile
-	   -p '$profile'
+	     --profile '$profile'
 	   #end if
-	   -f ${" ".join(map(str, $input_fastas))} &&
-	   cd .. &&
-	   python '$__tool_directory__/make_json.py' --db '${database_name}' --out '${out_file}'
+	   --fasta_files ${" ".join(map(str, $input_fastas))}
   ]]>
   </command>
   <inputs>
--- a/tools/mentalist_call/mentalist_call.xml	Thu Oct 05 15:17:41 2017 -0400
+++ b/tools/mentalist_call/mentalist_call.xml	Thu Oct 05 19:19:44 2017 -0400
@@ -3,7 +3,7 @@
     <requirement type="package" version="0.1.2">mentalist</requirement>
   </requirements>
   <command detect_errors="exit_code"><![CDATA[
-  /MentaLiST.jl'
+  mentalist
   call
   -o '$output_file'
   -s '$sample_name'
@@ -25,8 +25,9 @@
   <inputs>
     <param name="sample_name" type="text"
 	   label="Sample Name" help="Sample Name" />
-    <param name="kmer_db" type="data" format="h5"
-	   label="Kmer DB" help="Kmer database" />
+    <param name="kmer_db" type="select">
+      <options from_data_table="mentalist_databases" />
+    </param>
     <param name="discard_threshold" type="float"
 	   label="Discard Threshold" help="A read of length L is discarded if it has at less than (L - k) * t hits to the same locus in the kmer database, where k is the kmer length. 0 &lt;= t &lt;= 1"
 	   value="0.3" min="0" max="1" />