Mercurial > repos > dfornika > data_manager_build_bracken_database
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>