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