changeset 32:c5658160ee70 draft

planemo upload for repository https://github.com/WGS-TB/MentaLiST/tree/master/galaxy commit 30248a394608817fed641abc21dff2fbf6283eb7
author dfornika
date Fri, 26 Jan 2018 15:34:45 -0500
parents 038558f760a0
children 8d01e55c32eb
files data_managers/data_manager_conf.xml data_managers/data_manager_mentalist_download_enterobase/data_manager/mentalist_download_enterobase.py data_managers/data_manager_mentalist_download_enterobase/data_manager/mentalist_download_enterobase.xml data_managers/data_manager_mentalist_download_enterobase/tool_data_table_conf.xml.sample
diffstat 4 files changed, 132 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/data_managers/data_manager_conf.xml	Tue Dec 05 13:55:37 2017 -0500
+++ b/data_managers/data_manager_conf.xml	Fri Jan 26 15:34:45 2018 -0500
@@ -45,4 +45,19 @@
       </output>
     </data_table>
   </data_manager>
+  <data_manager tool_file="data_manager_mentalist_download_enterobase/data_manager/mentalist_download_enterobase.xml" id="mentalist_download_enterobase" version="0.1.3">
+    <data_table name="mentalist_databases">
+      <output>
+        <column name="value" />
+        <column name="name" />
+        <column name="path" output_ref="out_file">
+          <move type="directory" relativize_symlinks="True">
+            <target base="${GALAXY_DATA_MANAGER_DATA_PATH}">mentalist_databases/${value}</target>
+          </move>
+          <value_translation>${GALAXY_DATA_MANAGER_DATA_PATH}/mentalist_databases/${value}/${path}</value_translation>
+          <value_translation type="function">abspath</value_translation>
+        </column>
+      </output>
+    </data_table>
+  </data_manager>
 </data_managers>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/data_managers/data_manager_mentalist_download_enterobase/data_manager/mentalist_download_enterobase.py	Fri Jan 26 15:34:45 2018 -0500
@@ -0,0 +1,74 @@
+#!/usr/bin/env python
+
+from __future__ import print_function
+
+import argparse
+import datetime
+import errno
+import os
+import string
+import subprocess
+import sys
+
+from json import dumps, loads
+
+
+DEFAULT_DATA_TABLE_NAMES = ["mentalist_databases"]
+
+
+def mentalist_download_enterobase( data_manager_dict, kmer_size, scheme, type, params, target_directory, data_table_names=DEFAULT_DATA_TABLE_NAMES ):
+    translation_table = string.maketrans(string.punctuation, ("_" * 32))
+    base_path = scheme.lower().replace(" ", "_").translate(translation_table) + "_enterobase"
+    today = datetime.date.today().isoformat()
+    scheme_files_path = base_path + "_scheme_" + today
+    database_path = base_path + "_k" + str(kmer_size) + "_" + today
+    database_name = base_path + "_k" + str(kmer_size) + "_" + today + ".jld"
+    display_name = scheme + " k=" + str(kmer_size) + " (Enterobase) " + today
+    args = [ 'mentalist', 'download_enterobase', '-s', scheme, '-t', type, '-k', str(kmer_size), '--db', database_name, '-o', scheme_files_path]
+    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_path, dbkey='PubMLST', name=display_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( '-s', '--scheme', dest='scheme', default=None, help="Scheme: ('E'=Escherichia/Shigella, 'S'=Salmonella, 'Y'=Yersinia)")
+    parser.add_argument( '-k', '--kmer_size', dest='kmer_size', type=int, default=None, help='kmer Size' )
+    parser.add_argument( '-t', '--type', dest='type', default=None, help="Type: ('cg'=cgMLST, 'wg'=wgMLST')")
+    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 = {}
+
+    # build the index
+    mentalist_download_enterobase( data_manager_dict, args.kmer_size, args.scheme, args.type, params, target_directory, DEFAULT_DATA_TABLE_NAMES )
+
+    # save info to json file
+    open( args.params, 'wb' ).write( dumps( data_manager_dict ) )
+
+
+if __name__ == "__main__":
+    main()
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/data_managers/data_manager_mentalist_download_enterobase/data_manager/mentalist_download_enterobase.xml	Fri Jan 26 15:34:45 2018 -0500
@@ -0,0 +1,35 @@
+<?xml version="1.0"?>
+<tool id="mentalist_download_enterobase" name="MentaLiST Download from Enterobase" tool_type="manage_data" version="0.1.3">
+  <requirements>
+    <requirement type="package" version="0.1.3">mentalist</requirement>
+  </requirements>
+  <command detect_errors="exit_code">
+    <![CDATA[
+	     python '$__tool_directory__/mentalist_download_enterobase.py'
+	     '${out_file}'
+	     -k '$kmer_size'
+	     --scheme '$scheme'
+	     --type '$type'
+    ]]>
+  </command>
+  <inputs>
+    <param name="kmer_size" type="integer"
+	   label="Kmer size" help="Kmer size"
+	   value="31" min="1" max="32" />
+    <param name="scheme" type="select" multiple="false" label="Select scheme to download">
+      <option value="E">Escherichia/Shigella</option>
+      <option value="S">Salmonella</option>
+      <option value="Y">Yersinia</option>
+    </param>
+    <param name="type" type="select" multiple="false" label="Select scheme type (cgMLST or wgMLST)">
+      <option value="cg">Core Genome (cgMLST)</option>
+      <option value="wg">Whole Genome (wgMLST)</option>
+    </param>
+  </inputs>
+  <outputs>
+    <data name="out_file" format="data_manager_json" />
+  </outputs>
+  <citations>
+    <citation type="doi">10.1101/172858</citation>
+  </citations>
+</tool>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/data_managers/data_manager_mentalist_download_enterobase/tool_data_table_conf.xml.sample	Fri Jan 26 15:34:45 2018 -0500
@@ -0,0 +1,8 @@
+<?xml version="1.0"?>
+<tables>
+  <!--Locations of MentaLiST database in the required format -->
+  <table name="mentalist_databases" comment_char="#">
+    <columns>value, name, path</columns>
+      <file path="tool-data/mentalist_databases.loc" />
+  </table>
+</tables>
\ No newline at end of file