changeset 2:0f74aa0cfb68 draft

planemo upload for repository https://github.com/WGS-TB/MentaLiST/tree/master/galaxy
author dfornika
date Fri, 06 Oct 2017 19:02:53 -0400
parents a0a6d3e7416d
children d23b89e71ee5
files README data_managers/data_manager_mentalist_build_db/data_manager/mentalist_build_db.py data_managers/data_manager_mentalist_build_db/data_manager/mentalist_build_db.xml data_managers/data_manager_mentalist_build_db/data_manager_conf.xml data_managers/data_manager_mentalist_build_db/tool-data/mentalist_databases.loc.sample data_managers/data_manager_mentalist_build_db/tool_data_table_conf.xml.sample data_managers/data_manager_mentalist_download_cgmlst/data_manager/make_json.py data_managers/data_manager_mentalist_download_cgmlst/data_manager/mentalist_download_cgmlst.xml data_managers/data_manager_mentalist_download_cgmlst/data_manager_conf.xml data_managers/data_manager_mentalist_download_cgmlst/tool-data/mentalist_databases.loc.sample data_managers/data_manager_mentalist_download_cgmlst/tool_data_table_conf.xml.sample data_managers/data_manager_mentalist_download_pubmlst/data_manager/mentalist_download_pubmlst.xml data_managers/data_manager_mentalist_download_pubmlst/data_manager_conf.xml data_managers/data_manager_mentalist_download_pubmlst/tool-data/mentalist_databases.loc.sample data_managers/data_manager_mentalist_download_pubmlst/tool_data_table_conf.xml.sample tools/mentalist_build.xml tools/mentalist_call.xml tools/mentalist_call/mentalist_call.xml
diffstat 15 files changed, 317 insertions(+), 105 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/README	Fri Oct 06 19:02:53 2017 -0400
@@ -0,0 +1,1 @@
+TODO: Fill in README file.
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/data_managers/data_manager_mentalist_build_db/data_manager/mentalist_build_db.py	Fri Oct 06 19:02:53 2017 -0400
@@ -0,0 +1,67 @@
+#!/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, data_table_names=DEFAULT_DATA_TABLE_NAMES ):
+    args = [ 'mentalist', 'build_db', '--db', database_name, '-k', str(kmer_size)]
+    if profile:
+        args += ['--profile', profile]
+    print(args)
+    args += ['--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=database_name, name=database_name, path=(database_name + '/' + 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' )
+    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
+    build_mentalist_database( data_manager_dict, args.database_name, args.kmer_size, args.profile, args.fasta_files, 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_build_db/data_manager/mentalist_build_db.xml	Fri Oct 06 19:02:53 2017 -0400
@@ -0,0 +1,35 @@
+<?xml version="1.0"?>
+<tool id="mentalist_build_db" name="MentaLiST Build DB" tool_type="manage_data" version="0.1.2">
+  <requirements>
+    <requirement type="package" version="0.1.2">mentalist</requirement>
+  </requirements>
+  <command detect_errors="exit_code">
+  <![CDATA[
+	   python '$__tool_directory__/mentalist_build_db.py'
+	   '${out_file}'
+	   --db '$database_name'
+	   -k '$kmer_size'
+	   #if $profile
+	     --profile '$profile'
+	   #end if
+	   --fasta_files ${" ".join(map(str, $input_fastas))}
+  ]]>
+  </command>
+  <inputs>
+    <param name="database_name" type="text"
+	   label="Database Name" help="Database Name" />
+    <param name="kmer_size" type="integer"
+	   label="Kmer size" help="Kmer size"
+	   value="31" min="1" max="32" />
+    <param name="input_fastas" type="data_collection" collection_type="list" format="fasta" multiple="true"
+	   label="Input Fasta" help="Fasta input files" />
+    <param name="profile" type="data" format="tsv" optional="true"
+	   label="Profile" help="Profile for known genotypes" />
+  </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_build_db/data_manager_conf.xml	Fri Oct 06 19:02:53 2017 -0400
@@ -0,0 +1,18 @@
+<?xml version="1.0"?>
+<data_managers>
+  <data_manager tool_file="data_manager/mentalist_build_db.xml" id="mentalist_build_db" version="0.1.2">
+    <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}/${value}</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_build_db/tool_data_table_conf.xml.sample	Fri Oct 06 19:02:53 2017 -0400
@@ -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
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/data_managers/data_manager_mentalist_download_cgmlst/data_manager/make_json.py	Fri Oct 06 19:02:53 2017 -0400
@@ -0,0 +1,27 @@
+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/cgmlst')
+    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_download_cgmlst/data_manager/mentalist_download_cgmlst.xml	Fri Oct 06 19:02:53 2017 -0400
@@ -0,0 +1,38 @@
+<?xml version="1.0"?>
+<tool id="mentalist_download_cgmlst" name="MentaLiST Download cgMLST Data" tool_type="manage_data" version="0.1.2">
+  <requirements>
+    <requirement type="package" version="0.1.2">mentalist</requirement>
+  </requirements>
+  <command detect_errors="exit_code">
+    <![CDATA[
+	     mkdir -p mentalist-database/cgmlst && cd mentalist-database/cgmlst &&
+	     mentalist
+	     download_cgmlst
+	     --db '$scheme'
+	     --scheme '$scheme'
+	     -k '$kmer_size'
+	     cd .. &&
+	     python '$__tool_directory__/make_json.py' --db '${scheme}' --out '${out_file}'
+    ]]>
+  </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="">Acinetobacter baumannii</option>
+      <option value="">Clostridioides difficile</option>
+      <option value="">Enterococcus faecium</option>
+      <option value="">Francisella tularensis</option>
+      <option value="">Legionella pneumophila</option>
+      <option value="">Listeria monocytogenes</option>
+      <option value="">Staphylococcus aureus</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_cgmlst/data_manager_conf.xml	Fri Oct 06 19:02:53 2017 -0400
@@ -0,0 +1,18 @@
+<?xml version="1.0"?>
+<data_managers>
+  <data_manager tool_file="data_manager/mentalist_download_cgmlst.xml" id="mentalist_download_cgmlst" version="0.1.2">
+    <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_database/${value}</target>
+          </move>
+          <value_translation>${GALAXY_DATA_MANAGER_DATA_PATH}/mentalist_database/${value}</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_cgmlst/tool_data_table_conf.xml.sample	Fri Oct 06 19:02:53 2017 -0400
@@ -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
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/data_managers/data_manager_mentalist_download_pubmlst/data_manager/mentalist_download_pubmlst.xml	Fri Oct 06 19:02:53 2017 -0400
@@ -0,0 +1,30 @@
+<?xml version="1.0"?>
+<tool id="mentalist_download_pubmlst" name="MentaLiST Download pubMLST" tool_type="manage_data" version="0.1.2">
+  <requirements>
+    <requirement type="package" version="0.1.2">mentalist</requirement>
+  </requirements>
+  <command detect_errors="exit_code">
+  <![CDATA[
+	   mkdir mentalist-database && cd mentalist-database &&
+	   MentaLiST.jl
+	   download_pubmlst
+	   --db '$kmer_database'
+	   --scheme '$scheme'
+	   -k '$kmer_size'
+	   cd .. &&
+	   python '$__tool_directory__/make_json.py' --db '${database_name}' --out '${out_file}'
+  ]]>
+  </command>
+  <inputs>
+    <param name="kmer_size" type="integer"
+	   label="Kmer size" help="Kmer size"
+	   value="31" min="1" max="32" />
+    <param name="scheme" type="text" label="Species name or ID of scheme" />
+  </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_pubmlst/data_manager_conf.xml	Fri Oct 06 19:02:53 2017 -0400
@@ -0,0 +1,18 @@
+<?xml version="1.0"?>
+<data_managers>
+  <data_manager tool_file="data_manager/mentalist_download_pubmlst.xml" id="mentalist_download_pubmlst" version="0.1.2">
+    <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_database/${value}</target>
+          </move>
+          <value_translation>${GALAXY_DATA_MANAGER_DATA_PATH}/mentalist_database/${value}</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_pubmlst/tool_data_table_conf.xml.sample	Fri Oct 06 19:02:53 2017 -0400
@@ -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
--- a/tools/mentalist_build.xml	Thu Sep 14 17:16:16 2017 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,33 +0,0 @@
-<?xml version="1.0"?>
-<tool id="mentalist_build" name="MentaLiST Build DB" version="0.1.2">
-  <requirements>
-    <requirement type="package" version="0.1.2">mentalist</requirement>
-  </requirements>
-  <command detect_errors="exit_code">
-  <![CDATA[
-	   MentaLiST.jl
-	   build_db
-	   --db '$kmer_database'
-	   -k '$kmer_size'
-	   #if $profile
-	   -p '$profile'
-	   #end if
-	   -f ${" ".join(map(str, $input_fastas))}
-  ]]>
-  </command>
-  <inputs>
-    <param name="kmer_size" type="integer"
-	   label="Kmer size" help="Kmer size"
-	   value="31" min="1" max="32" />
-    <param name="input_fastas" type="data_collection" collection_type="list" format="fasta" multiple="true"
-	   label="Input Fasta" help="Fasta input files" />
-    <param name="profile" type="data" format="tsv" optional="true"
-	   label="Profile" help="Profile for known genotypes" />
-  </inputs>
-  <outputs>
-    <data name="kmer_database" format="h5" />
-  </outputs>
-  <citations>
-    <citation type="doi">10.1101/172858</citation>
-  </citations>
-</tool>
--- a/tools/mentalist_call.xml	Thu Sep 14 17:16:16 2017 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,72 +0,0 @@
-<tool id="mentalist_call" name="MentaLiST MLST Analysis" version="0.1.2">
-  <requirements>
-    <requirement type="package" version="0.1.2">mentalist</requirement>
-  </requirements>
-  <command detect_errors="exit_code"><![CDATA[
-  'MentaLiST.jl'
-  call
-  -o '$output_file'
-  -s '$sample_name'
-  --db '$kmer_db'
-  #if $discard_threshold
-  -t '$discard_threshold'
-  #end if
-  #if $quick_filter
-  '$quick_filter'
-  #end if
-  #if $external_counter
-  '$external_counter'
-  #end if
-  #if $skip_length
-  -j '$skip_length'
-  #end if
-  $input_fastqs.forward $input_fastqs.reverse
-  ]]></command>
-  <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="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" />
-    <param name="quick_filter" type="boolean"
-	   label="Quick Filter" help="Quick filter; if the first, middle and last kmers of a read are not in the kmer DB, the read is discarded. Disabled by default."
-	   truevalue="-q" falsevalue="" optional="true" />
-    <param name="external_counter" type="boolean"
-	   label="External Kmer Counter" help="Use external kmc kmer counter. Disabled by default."
-	   truevalue="-e" falsevalue="" optional="true" />
-    <param name="skip_length" type="integer"
-	   label="Skip Length" help="Skip length between consecutive k-mers."
-	   value="1" min="1" max="32" />
-    <param name="input_fastqs" type="data_collection" collection_type="paired" format="fastq"
-	   label="Input FastQ" help="FastQ input files" />
-  </inputs>
-  <outputs>
-    <data name="output_file" format="tsv"/>
-  </outputs>
-  <help><![CDATA[
-  usage: MentaLiST.jl call -o O -s S --db DB [-t T] [-q] [-e] [-j J] [-h] files...
-
-  positional arguments:
-  files       FastQ input files
-
-  optional arguments:
-  -o O        Output file with MLST call
-  -s S        Sample name
-  --db DB     Kmer database
-  -t T        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 <= t <= 1 (type: Float64,
-	      default: 0.3
-  -q          Quick filter; if the first, middle and last kmers of a
-              read are not in the kmer DB, the read is discarded.
-	      Disabled by default.
-  -e          Use external kmc kmer counter. Disabled by default.
-  -j J        Skip length between consecutive k-mers. Defaults to 1.
-  -h, --help  show this help message and exit
-  ]]></help>
-  <citations>
-    <citation type="doi">10.1101/172858</citation>
-  </citations>
-</tool>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tools/mentalist_call/mentalist_call.xml	Fri Oct 06 19:02:53 2017 -0400
@@ -0,0 +1,41 @@
+<tool id="mentalist_call" name="MentaLiST MLST Analysis" version="0.1.2">
+  <requirements>
+    <requirement type="package" version="0.1.2">mentalist</requirement>
+  </requirements>
+  <command detect_errors="exit_code"><![CDATA[
+    mentalist
+    call
+    -o '$output_file'
+    -s '$sample_name'
+    --db '$kmer_db.fields.path'
+    #if $discard_threshold
+        -t '$discard_threshold'
+    #end if
+    $input_fastqs.forward $input_fastqs.reverse
+  ]]></command>
+  <inputs>
+    <param name="sample_name" type="text"
+	   label="Sample Name" help="Sample Name" />
+    <param name="kmer_db" type="select">
+      <options from_data_table="mentalist_databases">
+	<validator type="no_options" message="No MentaLiST databases are available" />
+      </options>
+    </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" />
+    <param name="skip_length" type="integer"
+	   label="Skip Length" help="Skip length between consecutive k-mers."
+	   value="1" min="1" max="32" />
+    <param name="input_fastqs" type="data_collection" collection_type="paired" format="fastq"
+	   label="Input FastQ" help="FastQ input files" />
+  </inputs>
+  <outputs>
+    <data name="output_file" format="tsv"/>
+  </outputs>
+  <help><![CDATA[
+  ]]></help>
+  <citations>
+    <citation type="doi">10.1101/172858</citation>
+  </citations>
+</tool>