diff data_manager/hisat2_index_builder.xml @ 0:f7c16185b8e1 draft

planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_hisat2_index_builder commit 36a598c1014c3fa9696c4bdbf13d98a9e1e528c9
author nate
date Fri, 25 Apr 2025 21:06:04 +0000
parents
children b3d94db291c1
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/data_manager/hisat2_index_builder.xml	Fri Apr 25 21:06:04 2025 +0000
@@ -0,0 +1,148 @@
+<tool id="hisat2_index_builder_data_manager" name="HISAT2 index" tool_type="manage_data" version="@WRAPPER_VERSION@+galaxy@VERSION_SUFFIX@" profile="23.0">
+    <description>builder</description>
+    <macros>
+        <token name="@WRAPPER_VERSION@">2.2.1</token>
+        <token name="@VERSION_SUFFIX@">0</token>
+    </macros>
+    <requirements>
+        <requirement type="package" version="@WRAPPER_VERSION@">hisat2</requirement>
+    </requirements>
+    <command detect_errors="exit_code"><![CDATA[
+        #set $value = $sequence_id or $all_fasta_source.fields.dbkey
+        #set $fasta_file_name = str($all_fasta_source.fields.path).split('/')[-1]
+        #if $advanced.adv_param_select == 'yes' and $advanced.gtf_input:
+            ln -s '${advanced.gtf_input}' gtf_file.gtf &&
+            hisat2_extract_splice_sites.py gtf_file.gtf > splice_sites.txt &&
+            hisat2_extract_exons.py gtf_file.gtf > exon.txt &&
+        #end if
+        #if $advanced.adv_param_select == 'yes' and $advanced.snps:
+            ln -s '${advanced.snps}' snps.tabular &&
+            #if $advanced.snps.is_of_type('vcf')
+                hisat2_extract_snps_haplotypes_VCF.py '${all_fasta_source.fields.path}' snps.tabular extracted &&
+            #else
+                hisat2_extract_snps_haplotypes_UCSC.py '${all_fasta_source.fields.path}' snps.tabular extracted &&
+            #end if
+        #end if
+
+        mkdir -p '${out_file.extra_files_path}' &&
+        ln -s '${all_fasta_source.fields.path}' '${out_file.extra_files_path}/${fasta_file_name}' &&
+        working=`pwd` &&
+        cd '${out_file.extra_files_path}' &&
+
+        hisat2-build -p \${GALAXY_SLOTS:-1}
+            #if $advanced.adv_param_select == 'yes':
+                --noauto
+                #if $advanced.snps:
+                    --snp "\${working}/extracted.snp"
+                    --haplotype "\${working}/extracted.haplotype"
+                #end if
+                #if $advanced.gtf_input:
+                    --ss "\${working}/splice_sites.txt"
+                    --exon "\${working}/exon.txt"
+                #end if
+                --bmax $advanced.bmax
+                --bmaxdivn $advanced.bmaxdivn
+                --dcv $advanced.dcv
+                --offrate $advanced.offrate
+            #end if
+            '${fasta_file_name}' '${value}' &&
+
+        cp '$dmjson' '$out_file'
+        ]]>
+    </command>
+    <configfiles>
+        <configfile name="dmjson"><![CDATA[#slurp
+#set $fasta_file_name = str($all_fasta_source.fields.path).split('/')[-1]
+#set $value = $sequence_id or $all_fasta_source.fields.dbkey
+#set $name = $sequence_name or $all_fasta_source.fields.name
+{
+  "data_tables":{
+    "hisat2_indexes":[
+      {
+        "value": "${value}",
+        "dbkey": "${all_fasta_source.fields.dbkey}",
+        "name": "${name}",
+        "path": "${fasta_file_name}"
+      }
+    ]
+  }
+}
+]]></configfile>
+    </configfiles>
+    <inputs>
+        <param label="Source FASTA Sequence" name="all_fasta_source" type="select">
+            <options from_data_table="all_fasta" />
+        </param>
+        <conditional name="advanced" label="Advanced parameters">
+            <param name="adv_param_select" type="select" label="Advanced parameters">
+                <option value="no">Use defaults</option>
+                <option value="yes">Fine-tune indexing parameters</option>
+            </param>
+            <when value="no" />
+            <when value="yes">
+                <param argument="--bmax" type="integer" value="4" label="Maximum number of suffixes allowed in a block" />
+                <param argument="--bmaxdivn" type="integer" value="4" label="Maximum number of suffixes allowed in a block, expressed as a fraction of the length of the reference" />
+                <param argument="--dcv" type="integer" min="2" max="4096" value="1024" label="Period for the difference-cover sample" help="A larger period yields less memory overhead, but may make suffix sorting slower, especially if repeats are present. Must be a power of 2 no greater than 4096" />
+                <param argument="--offrate" type="integer" value="4" label="Mark rows in the Burrows-Wheeler transform" help="To map alignments back to positions on the reference sequences, it's necessary to annotate (&quot;mark&quot;) some or all of the Burrows-Wheeler rows with their corresponding location on the genome. This parameter governs how many rows get marked: the indexer will mark every 2^&lt;int&gt; rows. Marking more rows makes reference-position lookups faster, but requires more memory to hold the annotations at runtime. The default is 4 (every 16th row is marked; for human genome, annotations occupy about 680 megabytes)" />
+                <param name="snps" type="data" format="tabular,vcf" optional="true" label="Provide a list of SNPs in the UCSC dbSNP or VCF format" help="If you include SNPs or splice sites and exons, building an index on the human genome will consume up to 200GB RAM as index building involves a graph construction" />
+                <param name="gtf_input" type="data" format="gtf" optional="true" label="Provide a GTF file for HISAT2 to extract splice sites from" help="If you include SNPs or splice sites and exons, building an index on the human genome will consume up to 200GB RAM as index building involves a graph construction" />
+            </when>
+        </conditional>
+        <param name="sequence_name" type="text" value="" label="Name of sequence" />
+        <param name="sequence_id" type="text" value="" label="ID for sequence" />
+    </inputs>
+    <outputs>
+        <data name="out_file" format="data_manager_json" />
+    </outputs>
+    <tests>
+        <test>
+            <param name="all_fasta_source" value="phiX174"/>
+            <output name="out_file" file="hisat2_data_manager.1.json"/>
+        </test>
+        <test>
+            <param name="all_fasta_source" value="phiX174"/>
+            <param name="sequence_name" value="Galeocerdo cuvier"/>
+            <param name="sequence_id" value="tigHai1"/>
+            <param name="adv_param_select" value="yes"/>
+            <param name="bmax" value="3"/>
+            <param name="bmaxdivn" value="3"/>
+            <param name="dcv" value="4"/>
+            <param name="offrate" value="5"/>
+            <output name="out_file" file="hisat2_data_manager.2.json"/>
+        </test>
+    </tests>
+    <help>
+<![CDATA[
+.. class:: infomark
+
+**Notice:** If you leave name, description, or id blank, it will be generated automatically. 
+
+What is HISAT2?
+---------------
+
+`HISAT <http://ccb.jhu.edu/software/hisat>`__ is a fast and sensitive alignment
+program for mapping next-generation sequencing reads (both DNA and RNA) against
+the general human population (as well as against a single reference genome).
+Based on an extension of BWT for graphs (`BWT <http://dl.acm.org/citation.cfm?id=2674828>`__)
+we designed and implemented a graph FM index (GFM), an original approach and
+its first implementation to the best of our knowledge. In addition to using one
+global GFM index that represents the general population, HISAT2 uses a large set
+of small GFM indexes that collectively cover the whole genome (each index
+representing a genomic region of 56 Kbp, with 55,000 indexes needed to cover
+the human population). These small indexes (called local indexes), combined
+with several alignment strategies, enable rapid and accurate alignment of
+sequencing reads. This new indexing scheme is called a Hierarchical Graph
+FM index (HGFM).  In addition to spliced alignment, HISAT handles reads
+involving indels and supports a paired-end alignment mode. Multiple processors
+can be used simultaneously to achieve greater alignment speed. HISAT outputs
+alignments in `SAM <http://samtools.sourceforge.net/SAM1.pdf>`__ format, enabling
+interoperation with a large number of other tools (e.g. `SAMtools <http://samtools.sourceforge.net>`__,
+`GATK <http://www.broadinstitute.org/gsa/wiki/index.php/The_Genome_Analysis_Toolkit>`__)
+that use SAM. HISAT is distributed under the `GPLv3 license <http://www.gnu.org/licenses/gpl-3.0.html>`__,
+and it runs on the command line under Linux, Mac OS X and Windows.
+]]>
+    </help>
+    <citations>
+        <citation type="doi">10.1038/nmeth.3317</citation>
+    </citations>
+</tool>