changeset 0:a391d55f928a draft

planemo upload for repository https://github.com/dfornika/galaxytools/tree/master/data_managers/data_manager_build_bracken_database/ commit 423cf96266f6ac433052ff72edb1397502313010-dirty
author dfornika
date Fri, 26 Jul 2019 16:00:08 -0400
parents
children 5a1116c3e2c8
files data_manager/bracken_build_database.py data_manager/bracken_build_database.xml data_manager_conf.xml tool-data/bracken_databases.loc.sample tool_data_table_conf.xml.sample
diffstat 4 files changed, 177 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/data_manager/bracken_build_database.py	Fri Jul 26 16:00:08 2019 -0400
@@ -0,0 +1,112 @@
+#!/usr/bin/env python
+
+from __future__ import print_function
+
+import argparse
+import datetime
+import errno
+import json
+import os
+import shutil
+import string
+import subprocess
+import sys
+import uuid
+
+
+DATA_TABLE_NAME = "bracken_databases"
+
+
+def bracken_build_database(target_directory, bracken_args, database_name, data_table_name=DATA_TABLE_NAME):
+
+    now = datetime.datetime.utcnow().strftime("%Y-%m-%dT%H%M%SZ")
+
+    database_value = str(uuid.uuid4())
+
+    database_name = database_name
+
+    database_path = database_value
+
+    try:
+        os.mkdir( os.path.join(target_directory, database_path) )
+    except OSError as exc:
+        if exc.errno == errno.EEXIST and os.path.isdir( os.path.join(target_directory, database_path) ):
+            pass
+        else:
+            raise
+
+    
+          
+    bracken_build_args_list = [
+        '-t', bracken_build_args['threads'],
+        '-k', bracken_build_args['kmer_len'],
+        '-l', bracken_build_args['read_len'],
+        '-d', bracken_build_args['kraken_database'],
+    ]
+
+    subprocess.check_call(['bracken-build'] + bracken_build_args_list,
+                          cwd=os.path.join(target_directory, database_path))
+    
+    bagit_args_list = [
+        database_path,
+    ]
+
+    subprocess.call(['bagit.py'] + bagit_args_list, cwd=target_directory)
+    
+    data_table_entry = {
+        "data_tables": {
+            data_table_name: [
+                {
+                    "value": database_value,
+                    "name": database_name,
+                    "path": os.path.join(database_path, 'data'),
+                }
+            ]
+        }
+    }
+
+    return data_table_entry
+
+
+def main():
+    parser = argparse.ArgumentParser()
+    parser.add_argument('data_manager_json')
+    parser.add_argument('--threads', dest='threads', default=1, help='threads' )
+    parser.add_argument('--kmer-len', dest='kmer_len', help='K-mer length' )
+    parser.add_argument('--read-len', dest='read_len', help='Read length' )
+    parser.add_argument('--kraken-db', dest='kraken_database', help='Kraken Database' )
+    parser.add_argument('--database-name', dest='database_name', help='Database Name')
+    args = parser.parse_args()
+
+    data_manager_input = json.loads(open(args.data_manager_json).read())
+
+    target_directory = data_manager_input['output_data'][0]['extra_files_path']
+
+    bracken_build_args = {
+        'threads': args.threads,
+        'kmer_len': args.kmer_size,
+        'read_len': args.kmer_size,
+        'kraken_database': args.kraken_database,
+    }
+
+    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_output = {}
+
+    data_manager_output = bracken_build_database(
+        target_directory,
+        bracken_build_args,
+        args.database_name,
+    )
+
+    open(args.data_manager_json, 'wb').write(json.dumps(data_manager_output))
+
+
+if __name__ == "__main__":
+    main()
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/data_manager/bracken_build_database.xml	Fri Jul 26 16:00:08 2019 -0400
@@ -0,0 +1,39 @@
+<?xml version="1.0"?>
+<tool id="bracken_build_database" name="Bracken Database Builder" tool_type="manage_data" version="2.2+galaxy0">
+    <description>bracken database builder</description>
+    <requirements>
+        <requirement type="package" version="2.2">bracken</requirement>
+        <requirement type="package" version="2.0.8_beta">kraken2</requirement>
+        <requirement type="package" version="1.7.0">bagit</requirement>
+    </requirements>
+    <version_command>bracken --version</version_command>
+    <command detect_errors="exit_code">
+    <![CDATA[
+        python '$__tool_directory__/bracken_build_database.py'
+          '${out_file}'
+          --kraken-db ${kraken_db}
+          --threads \${GALAXY_SLOTS:-1}
+          --kmer-len ${kmer_len}
+          --read-len ${read_len}
+          --database-name '${database_name}'
+    ]]>
+    </command>
+    <inputs>
+        <param name="kraken2_database" type="select">
+            <options from_data_table="kraken2_databases">
+                <validator type="no_options" message="No Kraken2 databases are available" />
+            </options>
+        </param>
+        <param name="kmer_len" type="integer" min="8" max="256" value="35" label="K-mer length" />
+	<param name="read_len" type="integer" min="8" max="1000" value="100" label="Read length" />
+        <param name="database_name" type="text" label="Database Name" />
+    </inputs>
+    <outputs>
+        <data name="out_file" format="data_manager_json" />
+    </outputs>
+    <help>
+    </help>
+    <citations>
+        <citation type="doi">10.7717/peerj-cs.104</citation>
+    </citations>
+</tool>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/data_manager_conf.xml	Fri Jul 26 16:00:08 2019 -0400
@@ -0,0 +1,18 @@
+<data_managers>
+    <data_manager tool_file="data_manager/mash_build_sketch.xml" id="mash_build_sketch" version="2.1+galaxy0">
+        <data_table name="mash_sketches">
+            <output>
+                <column name="value"/>
+                <column name="name"/>
+                <column name="path" output_ref="out_file">
+                    <move type="file">
+                        <source>#import os#${os.path.dirname($path)}</source>
+                        <target base="${GALAXY_DATA_MANAGER_DATA_PATH}">mash_sketches/#import os#${os.path.dirname($path)}</target>
+                   </move>
+                      <value_translation>${GALAXY_DATA_MANAGER_DATA_PATH}/mash_sketches/${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/tool_data_table_conf.xml.sample	Fri Jul 26 16:00:08 2019 -0400
@@ -0,0 +1,8 @@
+<?xml version="1.0"?>
+<tables>
+    <!-- Locations of Mash sketches in the required format -->
+    <table name="bracken_databases" comment_char="#">
+        <columns>value, name, path</columns>
+        <file path="tool-data/bracken_databases.loc" />
+    </table>
+</tables>