name: ensembl_gtf
version: 0.0.2
output_asset_class: gtf
description: Ensembl GTF, TSS, and gene body annotation
input_files:
  ensembl_gtf:
    description: Annotation file in Gene Transfer Format (GTF) from Ensembl
input_params: {}
input_assets: {}
docker_image: null
command_templates:
  - cp {{values.files["ensembl_gtf"]}} {{values.output_folder}}/{{values.genome_digest}}.gtf.gz
  - gzip -dcf {{values.output_folder}}/{{values.genome_digest}}.gtf.gz | grep 'exon_number "1";' | sed 's/^/chr/' | awk -v OFS='\t' '{print $1, $4, $5, $20, $14, $7}' | sed 's/";//g' | sed 's/"//g' | awk '{if($6=="+"){print $1"\t"$2+20"\t"$2+120"\t"$4"\t"$5"\t"$6}else{print $1"\t"$3-120"\t"$3-20"\t"$4"\t"$5"\t"$6}}' | LC_COLLATE=C sort -k1,1 -k2,2n -k4,4 -u > {{values.output_folder}}/{{values.genome_digest}}_ensembl_TSS.bed
  - gzip -dcf {{values.output_folder}}/{{values.genome_digest}}.gtf.gz | awk '$3 == "gene"' | sed 's/^/chr/' | awk -v OFS='\t' '{print $1, $4, $5, $14, $6, $7}' | sed 's/";//g' | sed 's/"//g' | awk '$4!="Metazoa_SRP"' | awk '$4!="U3"' | awk '$4!="7SK"'  | awk '($3-$2)>200' | awk '{if($6=="+"){print $1"\t"$2+500"\t"$3"\t"$4"\t"$5"\t"$6}else{print $1"\t"$2"\t"$3-500"\t"$4"\t"$5"\t"$6}}' | awk '$3>$2' | LC_COLLATE=C sort -k4 -u > {{values.output_folder}}/{{values.genome_digest}}_ensembl_gene_body.bed
default_asset: "default"

# --- Additive non-runtime metadata (ignored by the builder) ---
tags:
- annotation
- gtf
- ensembl
- tss
outputs:
- pattern: '*.gtf.gz'
  description: Ensembl GTF annotation file (gzipped)
- pattern: '*_ensembl_TSS.bed'
  description: Ensembl TSS annotation BED file
- pattern: '*_ensembl_gene_body.bed'
  description: Ensembl gene body annotation BED file
test:
  commands:
  - test -f {output_dir}/{genome}.gtf.gz
  - test -f {output_dir}/{genome}_ensembl_TSS.bed
  - test -f {output_dir}/{genome}_ensembl_gene_body.bed
resources:
  memory: 4GB
  disk: 5GB
  time: 1h
metadata:
  author: nsheff
  created: '2026-05-20'
  license: BSD-2-Clause
