changeset 1:20fae63ba8dc draft

planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_homer_preparse commit 16a919905f336e34e237388c1921d0f4f8a368af
author iuc
date Thu, 06 Apr 2023 16:16:17 +0000
parents 5d2e5fddec81
children 648215734fa5
files data_manager/homer_install_promoters.py data_manager/homer_install_promoters.xml data_manager_conf.xml test-data/homer_promoters.loc tool-data/homer_promoters.sample tool_data_table_conf.xml.sample tool_data_table_conf.xml.test
diffstat 7 files changed, 147 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/data_manager/homer_install_promoters.py	Thu Apr 06 16:16:17 2023 +0000
@@ -0,0 +1,45 @@
+#!/usr/bin/env python
+
+import json
+import optparse
+import shutil
+
+
+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 = optparse.OptionParser()
+    parser.add_option('-o', '--organism', dest='organism', action='store', type="string", default=None, help='organism')
+    parser.add_option('-n', '--data_table_name', dest='data_table_name', action='store', type="string", default=None, help='data_table_name')
+    parser.add_option('-d', '--DB_path', dest='DB_path', action='store', type="string", default=None, help='DB_path')
+    parser.add_option('--organism_version', dest='organism_version', action='store', type="string", default=None, help='organism_version')
+    parser.add_option('--promoter_version', dest='promoter_version', action='store', type="string", default=None, help='promoter_version')
+    (options, args) = parser.parse_args()
+
+    # Get the target directory and move the data folder there
+    filename = args[0]
+    with open(filename) as fh:
+        params = json.load(fh)
+
+    target_directory = params['output_data'][0]['extra_files_path']
+    shutil.copytree(options.DB_path + '/data/accession', target_directory + '/accession')
+    shutil.copytree(options.DB_path + '/data/promoters', target_directory + '/promoters')
+    shutil.copyfile(options.DB_path + '/config.txt', target_directory + '/config.txt')
+
+    dbkey = str(options.organism) + '_o' + str(options.organism_version) + '_p' + str(options.promoter_version)
+    data_manager_dict = {}
+    data_table_entry = dict(value=dbkey, dbkey=dbkey, organism=options.organism, path=options.DB_path, organism_version=options.organism_version, promoter_version=options.promoter_version)
+    _add_data_table_entry(data_manager_dict, options.data_table_name, data_table_entry)
+
+    # Save info to json file
+    with open(filename, 'w') as fh:
+        json.dump(data_manager_dict, fh, sort_keys=True)
+
+
+if __name__ == "__main__":
+    main()
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/data_manager/homer_install_promoters.xml	Thu Apr 06 16:16:17 2023 +0000
@@ -0,0 +1,57 @@
+<tool id="homer_install_promoters_data_manager" name="Homer install promoter DB" tool_type="manage_data" version="@TOOL_VERSION@" profile="22.01">
+    <requirements>
+        <requirement type="package" version="@TOOL_VERSION@">homer</requirement>
+        <requirement type="package" version="3.11">python</requirement>
+    </requirements>
+    <macros>
+        <token name="@TOOL_VERSION@">4.11</token>
+    </macros>
+    <command detect_errors="exit_code"><![CDATA[
+        cp -r \$(dirname \$(which findMotifs.pl))/../share/homer ./ &&
+        perl ./homer/configureHomer.pl -install ${organism}-p ${organism}-o -keepScript &&
+        
+        organism_version=\$(cat homer/config.txt | grep "accession and ontology information" | grep $organism | cut -f 2) &&
+        promoter_version=\$(cat homer/config.txt | grep promoters | grep $organism | cut -f 2) &&
+        
+        python '$__tool_directory__/homer_install_promoters.py'
+            '${out_file}'
+            --organism $organism
+            --organism_version \${organism_version}
+            --promoter_version \${promoter_version}
+            --data_table_name homer_promoters
+            --DB_path homer
+    ]]></command>
+    <inputs>
+        <param name="organism" type="select" label="Select a target organism to download" help="Promoter, GO and accession information will be downloaded and the data dir will be stored to reduce the network bandwidth during execution of the tool. Always the newest available version will be downloaded.">
+            <option value="arabidopsis">arabidopsis (Arabidopsis thaliana)</option>
+            <option value="chicken">chicken (Gallus gallus)</option>
+            <option value="fly">fly (Drosophila melanogaster)</option>
+            <option value="frog">frog (Xenopus tropicalis)</option>
+            <option value="human">human (Homo sapiens)</option>
+            <option value="mouse">mouse (Mus musculus)</option>
+            <option value="rat">rat (Rattus norvegicus)</option>
+            <option value="worm" selected="true">worm (Caenorhabditis elegans)</option>
+            <option value="yeast">yeast (Saccharomyces cerevisiae)</option>
+            <option value="zebrafish">zebrafish (Danio rerio)</option>
+        </param>
+    </inputs>
+    <outputs>
+        <data name="out_file" format="data_manager_json"/>
+    </outputs>
+    <tests>
+        <test>
+            <param name="organism" value="worm"/>
+            <output name="out_file">
+                <assert_contents>
+                    <has_text text="{&quot;data_tables&quot;: {&quot;homer_promoters&quot;: [{&quot;dbkey&quot;: &quot;worm_"/>
+                    <has_text text="&quot;organism_version&quot;: &quot;v"/>
+                    <has_text text="&quot;promoter_version&quot;: &quot;v"/>
+                    <has_text text="&quot;organism&quot;: &quot;worm&quot;"/>
+                    <has_text text="&quot;path&quot;: &quot;"/>
+                </assert_contents>                
+            </output>
+        </test>
+    </tests>
+    <help>
+    </help>
+</tool>
--- a/data_manager_conf.xml	Sun Aug 08 10:57:48 2021 +0000
+++ b/data_manager_conf.xml	Thu Apr 06 16:16:17 2023 +0000
@@ -20,4 +20,22 @@
             </output>
         </data_table>
     </data_manager>
+    <data_manager tool_file="data_manager/homer_install_promoters.xml" id="homer_install_promoters" version="4.11">
+        <data_table name="homer_promoters">
+            <output>
+                <column name="value"/>
+                <column name="dbkey"/>
+                <column name="organism"/>
+                <column name="path" output_ref="out_file" >
+                    <move type="directory" relativize_symlinks="True">
+                        <target base="${GALAXY_DATA_MANAGER_DATA_PATH}">homer_promoters/${value}</target>
+                    </move>
+                    <value_translation>${GALAXY_DATA_MANAGER_DATA_PATH}/homer_promoters/${value}</value_translation>
+                    <value_translation type="function">abspath</value_translation>
+                </column>
+                <column name="organism_version"/>
+                <column name="promoter_version"/>
+            </output>
+        </data_table>
+    </data_manager>
 </data_managers>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/homer_promoters.loc	Thu Apr 06 16:16:17 2023 +0000
@@ -0,0 +1,6 @@
+# homer_preparse.loc
+# This is a *.loc file distributed with Galaxy that enables tools
+# to use a directory of indexed data files. This one is for promoter DBs distributed by Homer.
+# The file should include an one line entry for each set and has 6 text columns seperated by TABS.
+#
+# <value>	<dbkey>	<organism>	<path>	<organism_version>	<promoter_version>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tool-data/homer_promoters.sample	Thu Apr 06 16:16:17 2023 +0000
@@ -0,0 +1,6 @@
+# homer_preparse.loc
+# This is a *.loc file distributed with Galaxy that enables tools
+# to use a directory of indexed data files. This one is for promoter DBs distributed by Homer.
+# The file should include an one line entry for each set and has 6 text columns seperated by TABS.
+#
+# <value>	<dbkey>	<organism>	<path>	<organism_version>	<promoter_version>
--- a/tool_data_table_conf.xml.sample	Sun Aug 08 10:57:48 2021 +0000
+++ b/tool_data_table_conf.xml.sample	Thu Apr 06 16:16:17 2023 +0000
@@ -1,12 +1,17 @@
 <tables>
+    <!-- Locations of preparsed genomes -->
+    <table name="homer_preparse" comment_char="#">
+        <columns>value, dbkey, mask, size, name, path, path_fasta, version</columns>
+        <file path="tool-data/homer_preparse.loc"/>
+    </table>
     <!-- Locations of all fasta files under genome directory -->
     <table name="all_fasta" comment_char="#">
         <columns>value, dbkey, name, path</columns>
-        <file path="tool-data/all_fasta.loc" />
+        <file path="tool-data/all_fasta.loc"/>
     </table>
-    <!-- Locations of preparsed genomes -->
-    <table name="homer_preparse" comment_char="#">
-        <columns>value, dbkey, mask, size, name, path, path_fasta, version</columns>
-        <file path="tool-data/homer_preparse.loc" />
+    <!-- Built-in homer promoter and ID DBs (dir of <env>/share/data, 1 per organism) -->
+    <table name="homer_promoters" comment_char="#">
+        <columns>value, dbkey, organism, path, organism_version, promoter_version</columns>
+        <file path="tool-data/homer_promoters.loc"/>
     </table>
 </tables>
--- a/tool_data_table_conf.xml.test	Sun Aug 08 10:57:48 2021 +0000
+++ b/tool_data_table_conf.xml.test	Thu Apr 06 16:16:17 2023 +0000
@@ -9,4 +9,9 @@
         <columns>value, dbkey, name, path</columns>
         <file path="${__HERE__}/test-data/all_fasta.loc" />
     </table>
+    <!-- Built-in homer promoter and ID DBs (dir of <env>/share/data, 1 per organism) -->
+    <table name="homer_promoters" comment_char="#">
+        <columns>value, dbkey, organism, path, organism_version, promoter_version</columns>
+        <file path="${__HERE__}/test-data/homer_promoters.loc"/>
+    </table>
 </tables>