changeset 0:4172891e00df draft default tip

planemo upload for repository https://github.com/galaxyproject/tools-iuc commit 15e330df233be8f78bebda515fc24a0c142b7dea
author iuc
date Wed, 04 Feb 2026 08:33:42 +0000
parents
children
files liftoff.xml test-data/annotation.gff3 test-data/reference.fa test-data/target.fa
diffstat 4 files changed, 163 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/liftoff.xml	Wed Feb 04 08:33:42 2026 +0000
@@ -0,0 +1,146 @@
+<tool id="liftoff" name="Liftoff" version="@TOOL_VERSION@+galaxy@VERSION_SUFFIX@" profile="@PROFILE@">
+    <description>Lift gene annotations between genome assemblies</description>
+    <macros>
+        <token name="@TOOL_VERSION@">1.6.3</token>
+        <token name="@VERSION_SUFFIX@">0</token>
+        <token name="@PROFILE@">24.2</token>
+    </macros>
+    <xrefs>
+        <xref type="bio.tools">liftoff</xref>
+    </xrefs>
+    <requirements>
+        <requirement type="package" version="@TOOL_VERSION@">liftoff</requirement>
+    </requirements>
+    <version_command>liftoff --version</version_command>
+    <command detect_errors="aggressive"><![CDATA[
+set -euo pipefail &&
+ln -s '$target_fasta' target.fa &&
+ln -s '$reference_fasta' reference.fa &&
+ln -s '$annotation' annotation.gff &&
+
+liftoff 
+    -g annotation.gff 
+    -o mapped.gff3 
+    -u unmapped_features.txt 
+    -dir liftoff_intermediate 
+    -p \${GALAXY_SLOTS:-1} 
+    -a $min_feature_coverage 
+    -s $min_identity 
+    -d $distance_factor 
+    -flank $flank_fraction 
+#if $feature_types and str($feature_types).strip()
+    -f "${feature_types}" 
+#end if
+#if str($exclude_partial).strip()
+    $exclude_partial 
+#end if
+#if str($infer_genes).strip()
+    $infer_genes 
+#end if
+#if str($infer_transcripts).strip()
+    $infer_transcripts 
+#end if
+#if $chrom_map and str($chrom_map).strip().lower() != 'none'
+    -chroms "$chrom_map" 
+#end if
+#if $unplaced_sequences and str($unplaced_sequences).strip().lower() != 'none'
+    -unplaced "$unplaced_sequences" 
+#end if
+#if str($copy_detection.find_copies) == "true"
+    -copies 
+    -sc $copy_detection.copy_min_identity 
+    -overlap $copy_detection.copy_max_overlap 
+    -mismatch $copy_detection.copy_mismatch_penalty 
+    -gap_open $copy_detection.copy_gap_open_penalty 
+    -gap_extend $copy_detection.copy_gap_extend_penalty
+#end if
+    target.fa reference.fa
+]]></command>
+    <inputs>
+        <param name="target_fasta" type="data" format="fasta" label="Target genome FASTA" help="Genome assembly to lift annotations onto."/>
+        <param name="reference_fasta" type="data" format="fasta" label="Reference genome FASTA" help="Genome assembly that already has annotations."/>
+        <param name="annotation" type="data" format="gff3,gtf" label="Annotation file (GFF3/GTF)" help="Reference annotation to lift over."/>
+
+        <section name="alignment" title="Alignment and mapping parameters" expanded="false">
+            <param argument="-a" name="min_feature_coverage" type="float" value="0.5" min="0" max="1" label="Minimum feature coverage"/>
+            <param argument="-s" name="min_identity" type="float" value="0.5" min="0" max="1" label="Minimum exon/CDS identity"/>
+            <param argument="-d" name="distance_factor" type="float" value="2.0" min="0" label="Distance scaling factor (-d)"/>
+            <param argument="-flank" name="flank_fraction" type="float" value="0.0" min="0" max="1" label="Flanking sequence fraction"/>
+            <param argument="-f" name="feature_types" type="text" optional="true" label="Feature types to lift" help="Comma-separated list (default: infer from annotation)."/>
+            <param argument="-exclude_partial" type="boolean" truevalue="-exclude_partial" falsevalue="" label="Send partial mappings to unmapped output" checked="false"/>
+        </section>
+
+        <section name="annotation_structure" title="Annotation structure helpers" expanded="false">
+            <param argument="-infer_genes" type="boolean" truevalue="-infer_genes" falsevalue="" label="Infer genes if annotation lacks gene records" checked="false"/>
+            <param argument="-infer_transcripts" type="boolean" truevalue="-infer_transcripts" falsevalue="" label="Infer transcripts if annotation lacks them" checked="false"/>
+        </section>
+
+        <section name="chromosome_mapping" title="Chromosome and copy handling" expanded="false">
+            <param argument="-chroms" name="chrom_map" type="data" format="txt" optional="true" label="Chromosome mapping file" help="Text file listing corresponding chromosome names between reference and target."/>
+            <param argument="-unplaced" name="unplaced_sequences" type="data" format="txt" optional="true" label="Unplaced sequence list" help="List of sequence names to map after chromosome mapping completes."/>
+            <conditional name="copy_detection">
+                <param argument="-copies" name="find_copies" type="select" label="Search for extra copies in target">
+                    <option value="false" selected="true">No</option>
+                    <option value="true">Yes</option>
+                </param>
+                <when value="false"/>
+                <when value="true">
+                    <param argument="-sc" name="copy_min_identity" type="float" value="1.0" min="0" max="1" label="Minimum exon identity for copies"/>
+                    <param argument="-overlap" name="copy_max_overlap" type="float" value="0.1" min="0" max="1" label="Maximum overlap fraction"/>
+                    <param argument="-mismatch" name="copy_mismatch_penalty" type="integer" value="2" min="0" label="Mismatch penalty"/>
+                    <param argument="-gap_open" name="copy_gap_open_penalty" type="integer" value="2" min="0" label="Gap open penalty"/>
+                    <param argument="-gap_extend" name="copy_gap_extend_penalty" type="integer" value="1" min="0" label="Gap extend penalty"/>
+                </when>
+            </conditional>
+        </section>
+    </inputs>
+    <outputs>
+        <data name="liftoff_gff" format="gff3" from_work_dir="mapped.gff3" label="Liftoff lifted annotations on ${on_string}"/>
+        <data name="unmapped" format="txt" from_work_dir="unmapped_features.txt" label="Liftoff unmapped features on ${on_string}"/>
+    </outputs>
+    <tests>
+        <test expect_num_outputs="2">
+            <param name="target_fasta" value="target.fa" ftype="fasta"/>
+            <param name="reference_fasta" value="reference.fa" ftype="fasta"/>
+            <param name="annotation" value="annotation.gff3" ftype="gff3"/>
+            <output name="liftoff_gff">
+                <assert_contents>
+                    <has_text text="tgt1"/>
+                    <has_text text="ID=gene1"/>
+                    <has_n_lines n="7"/>
+                </assert_contents>
+            </output>
+            <output name="unmapped">
+                <assert_contents>
+                    <has_n_lines n="0"/>
+                </assert_contents>
+            </output>
+        </test>
+    </tests>
+    <help><![CDATA[
+**Liftoff** maps gene annotations (GFF or GTF) from a reference genome to a target genome by aligning the gene sequences with **minimap2** and reconstructing transcripts/exons that maximize identity while preserving structure.
+
+-----
+
+### Inputs
+
+1. **Target genome FASTA** – assembly that should receive annotations.
+2. **Reference genome FASTA** – assembly that already has annotations.
+3. **Annotation file** – GFF3 or GTF containing the gene models to lift over.
+
+Optional sections expose core Liftoff parameters (coverage, identity, minimap2 flags) as well as helpers for inferring missing gene/transcript features, providing chromosome mapping files, and searching for additional gene copies.
+
+### Outputs
+
+- **Lifted annotations** (`gff3`) – annotation projected onto the target genome.
+- **Unmapped features** (`txt`) – records that Liftoff could not confidently place (and, optionally, partial mappings if requested).
+
+### References
+
+- Shumate & Salzberg (2021) *Bioinformatics* 37(12):1639–1643. DOI: 10.1093/bioinformatics/btaa1016
+- Liftoff source: https://github.com/agshumate/Liftoff
+    ]]></help>
+    <citations>
+        <citation type="doi">10.1093/bioinformatics/btaa1016</citation>
+    </citations>
+</tool>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/annotation.gff3	Wed Feb 04 08:33:42 2026 +0000
@@ -0,0 +1,5 @@
+##gff-version 3
+ref1	Liftoff	gene	1	150	.	+	.	ID=gene1;Name=Gene1
+ref1	Liftoff	mRNA	1	150	.	+	.	ID=transcript1;Parent=gene1
+ref1	Liftoff	exon	1	150	.	+	.	ID=exon1;Parent=transcript1
+ref1	Liftoff	CDS	1	150	.	+	0	ID=cds1;Parent=transcript1
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/reference.fa	Wed Feb 04 08:33:42 2026 +0000
@@ -0,0 +1,6 @@
+>ref1
+ATGGCCATTGTAATGGGCCGCTGAAAGGGTGCCCGATAGATGGCCATTGTAATGGGCCGCTGAAAGGGTGCCCGATAGATGGCCATTGTAATGGGCCGCTGAAAGGGTG
+CCCGATAGATGGCCATTGTAATGGGCCGCTGAAAGGGTGCCCGATAGATGGCCATTGTAATGGGCCGCTGAAAGGGTGCCCGATAGATGGCCATTGTAATG
+>ref2
+GTTGCAACGTTGTTGACGTTGACGTTGACCTTGACGTTGGTTGCAACGTTGTTGACGTTGACGTTGACCTTGACGTTGGTTGCAACGTTGTTGACGTTGACGTTGACCTT
+GACGTTGGTTGCAACGTTGTTGACGTTGACGTTGACCTTGACGTTGGTTGCAACGTTGTTGACGTTGACGTTGACCTTGACGTTGGTTGCAACGTTGTTG
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/target.fa	Wed Feb 04 08:33:42 2026 +0000
@@ -0,0 +1,6 @@
+>tgt1
+ATGGCCATTGTAATGGGCCGCTGAAAGGGTGCCCGATAGATGGCCATTGTAATGGGCCGCTGAAAGGGTGCCCGATAGATGGCCATTGTAATGGGCCGCTGAAAGGGTG
+CCCGATAGATGGCCATTGTAATGGGCCGCTGAAAGGGTGCCCGATAGATGGCCATTGTAATGGGCCGCTGAAAGGGTGCCCGATAGATGGCCATTGTAATG
+>tgt2
+TGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATG
+CATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCA