Mercurial > repos > iuc > data_manager_omamer
changeset 0:e1502e4f8725 draft
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_omamer commit 8ff9ada22d22cb94ddfff51bcdd3ab7d30104f1a
author | iuc |
---|---|
date | Wed, 21 Feb 2024 19:26:53 +0000 |
parents | |
children | 57db282ca204 |
files | data_manager/macros.xml data_manager/omamer.py data_manager/omamer.xml data_manager/test.json data_manager_conf.xml test-data/omamer.loc tool-data/omamer.loc.sample tool_data_table_conf.xml.sample tool_data_table_conf.xml.test |
diffstat | 9 files changed, 195 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/data_manager/macros.xml Wed Feb 21 19:26:53 2024 +0000 @@ -0,0 +1,8 @@ +<macros> + <xml name="requirements"> + <requirements> + <requirement type="package" version="3.11">python</requirement> + <requirement type="package" version="2.27.1">requests</requirement> + </requirements> + </xml> +</macros> \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/data_manager/omamer.py Wed Feb 21 19:26:53 2024 +0000 @@ -0,0 +1,82 @@ +#!/usr/bin/env python + +import argparse +import json +import os +import sys +from pathlib import Path + +import requests + +# URL for downloading OMAmer datasets +OMAMER_DATASETS_URL = "https://omabrowser.org/All/{dataset}" + +# List of OMAmer data sets with versions +OMAMER_DATASETS = { + "Primates": "Primates-v2.0.0.h5", + "Viridiplantae": "Viridiplantae-v2.0.0.h5", + "Metazoa": "Metazoa-v2.0.0.h5", + "LUCA": "LUCA-v0.2.5.h5", +} + + +DEFAULT_OUTPUT_DIR = "database_omamer" + + +def download_file(url, dest): + try: + with requests.get(url, stream=True) as r: + r.raise_for_status() + with open(dest, 'wb') as f: + for chunk in r.iter_content(chunk_size=8192): + f.write(chunk) + print(f"Downloaded: {url} to {dest}") + except requests.exceptions.RequestException as e: + print(f"Error downloading {url}: {e}") + sys.exit(1) + + +def main(args): + # Set output directory to default + output_dir = DEFAULT_OUTPUT_DIR + + # Create output directory if none exists + if not os.path.exists(output_dir): + os.makedirs(output_dir) + + # Check if the selected dataset exists + if args.name not in OMAMER_DATASETS: + print(f"Error: Selected dataset '{args.name}' not found.") + sys.exit(1) + + # Download the selected OMAmer dataset + dataset = OMAMER_DATASETS[args.name] + url = OMAMER_DATASETS_URL.format(dataset=dataset) + base_name = os.path.splitext(dataset)[0] + destination_path = os.path.join(output_dir, base_name) + download_file(url, destination_path) + + data_manager_entry = { + "value": os.path.splitext(os.path.basename(base_name))[0], + "name": os.path.splitext(os.path.basename(base_name))[0], + "version": "2.0.2", + "path": str(Path(output_dir)), + } + + # Creates a JSON dictionary representing the Data Manager configuration + data_manager_json = {"data_tables": {"omamer_data": [data_manager_entry]}} + + # Writes this JSON dictionary to the specified output file + with open(args.json, "w") as fh: + json.dump(data_manager_json, fh, indent=2, sort_keys=True) + + +if __name__ == "__main__": + # Set up argparse to specify expected command line arguments + parser = argparse.ArgumentParser(description='Download data for OMAmer') + parser.add_argument('--name', default='Primates', choices=OMAMER_DATASETS.keys(), help='Select dataset to download') + parser.add_argument('--json', help='Path to JSON file') + + args = parser.parse_args() + + main(args)
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/data_manager/omamer.xml Wed Feb 21 19:26:53 2024 +0000 @@ -0,0 +1,46 @@ +<tool id="data_manager_omamer" name="OMAmer data manager" version="2.0.2" tool_type="manage_data" profile="20.01"> + <macros> + <import>macros.xml</import> + </macros> + <version_command></version_command> + <command detect_errors="exit_code"><![CDATA[ + python '$__tool_directory__/omamer.py' + --name '$name' + --json '$output_file' + ]]></command> + <inputs> + <param name="output_dir" type="text" label="Output Directory" value=""/> + <param name="name" type="select" label="Database"> + <option value="Primates">Primates</option> + <option value="Viridiplantae">Viridiplantae</option> + <option value="Metazoa">Metazoa</option> + <option value="LUCA">LUCA</option> + </param> + </inputs> + + <outputs> + <data name="output_file" format="data_manager_json" label="OMAmer data manager: JSON"/> + </outputs> + + <tests> + <test> + <param name="output_dir" value="test_galaxy"/> + <param name="name" value="Primates"/> + <output name="output_file"> + <assert_contents> + <has_text text="Primates-v2.0"/> + <has_text text="database_omamer"/> + </assert_contents> + </output> + </test> + </tests> + + <help><![CDATA[ + This data manager retrieves data from various pre-built databases. + + .. _omamer: https://github.com/DessimozLab/omamer + ]]></help> + <citations> + <citation type="doi">10.1093/bioinformatics/btab219</citation> + </citations> +</tool> \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/data_manager/test.json Wed Feb 21 19:26:53 2024 +0000 @@ -0,0 +1,12 @@ +{ + "data_tables": { + "omamer_data": [ + { + "name": "Primates-v2.0", + "path": "database_omamer", + "value": "Primates-v2.0", + "version": "2.0.2" + } + ] + } +} \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/data_manager_conf.xml Wed Feb 21 19:26:53 2024 +0000 @@ -0,0 +1,19 @@ +<?xml version="1.0"?> +<data_managers> + <data_manager tool_file="data_manager/omamer.xml" id="data_manager_omamer"> + <data_table name="omamer"> + <output> + <column name="value" /> + <column name="name" /> + <column name="version"/> + <column name="path" output_ref="out_file"> + <move type="directory" relativize_symlinks="True"> + <target base="${GALAXY_DATA_MANAGER_DATA_PATH}">omamer/${value}</target> + </move> + <value_translation>${GALAXY_DATA_MANAGER_DATA_PATH}/omamer/${value}</value_translation> + <value_translation type="function">abspath</value_translation> + </column> + </output> + </data_table> + </data_manager> +</data_managers> \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test-data/omamer.loc Wed Feb 21 19:26:53 2024 +0000 @@ -0,0 +1,8 @@ +# this is a tab separated file describing the location of OMAmer databases used for the +# OMAmer annotation tool +# +# the columns are: +# value name version path +# +# for example +# Primates-v2.0.0 Primates 2.0.2 /tmp/database/omamer/database_omamer/Primates-v2.0.0 \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tool-data/omamer.loc.sample Wed Feb 21 19:26:53 2024 +0000 @@ -0,0 +1,8 @@ +# this is a tab separated file describing the location of OMAmer databases used for the +# OMAmer annotation tool +# +# the columns are: +# value name version path +# +# for example +# Primates-v2.0.0 Primates 2.0.2 /tmp/database/omamer/database_omamer/Primates-v2.0.0 \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tool_data_table_conf.xml.sample Wed Feb 21 19:26:53 2024 +0000 @@ -0,0 +1,6 @@ +<tables> + <table name="omamer" comment_char="#"> + <columns>value, name, version, path</columns> + <file path="tool-data/omamer.loc"/> + </table> +</tables>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tool_data_table_conf.xml.test Wed Feb 21 19:26:53 2024 +0000 @@ -0,0 +1,6 @@ +<tables> + <table name="omamer" comment_char="#"> + <columns>value, name, version, path</columns> + <file path="${__HERE__}/test-data/omamer.loc"/> + </table> +</tables> \ No newline at end of file