annotate-bulk-rnaseq-data

Annotate bulk RNA-seq featureCounts matrices with gene symbols and TE families before edgeR/limma DE.

1|Updated Nov 20, 2025
One-click install
npx skills add https://github.com/tony-zhelonkin/scio --skill annotate-bulk-rnaseq-data-tony-zhelonkin
Or copy as Structured Prompt for Agent▼
Please help me install this Agent Skill.
Skill: annotate-bulk-rnaseq-data
Source: https://github.com/tony-zhelonkin/scio/tree/main/skills/annotate-bulk-rnaseq-data
Command: npx skills add https://github.com/tony-zhelonkin/scio --skill annotate-bulk-rnaseq-data-tony-zhelonkin

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill includes references (resource) components.

What problem does it solve? Bulk RNA-seq count matrices from featureCounts carry raw Ensembl IDs or transposable-element IDs that are unusable for downstream differential expression and GSEA until they are annotated, and annotating after filtering irreversibly loses those IDs. This Skill routes the annotation step between counting and DE so gene symbols and TE Subfamily:Family:Class labels are attached correctly and edgeR DGEList objects are assembled. ## Core Features & Use Cases - Gene-symbol annotation: Map Ensembl IDs to gene symbols via Ensembl/biomaRt or org.db, aggregate duplicate stripped IDs, and build a gene DGEList with provenance tracking. - Transposable-element annotation: Parse TE IDs into Subfamily:Family:Class, build a combined gene+TE DGEList, and export family- and class-level GMT genesets for GSEA. - Use Case: You receive a featureCounts gene matrix and a TE count matrix from STAR/featureCounts preprocessing; use this Skill to annotate both, row-bind them into one combined DGEList, and hand off TE GMT files to downstream GSEA. ## Quick Start Annotate my bulk RNA-seq featureCounts count matrix with gene symbols via biomaRt and build an edgeR DGEList before filtering.

Frequently Asked Questions about annotate-bulk-rnaseq-data

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I annotate Ensembl IDs to gene symbols in a bulk RNA-seq count matrix?▼

Map Ensembl IDs to gene symbols using biomaRt or org.db annotation packages in R before any filtering. The workflow aggregates duplicate stripped Ensembl IDs, re-matches annotation to matrix row order with match(), and builds an edgeR DGEList for downstream DE.

How do I process transposable element counts for differential expression?▼

Parse TE IDs in Subfamily:Family:Class format (e.g. L1Md_A:L1:LINE) into an annotation table, then build a combined gene+TE DGEList with feature_type, family, and class columns. Family- and class-level GMT genesets can be exported for downstream GSEA.

Should I filter low-count genes before or after annotation?▼

Always annotate before filtering. Dropping low-count rows first irreversibly loses Ensembl and TE IDs, making the mapping back to gene symbols or TE families unrecoverable. This rule applies to both the gene and TE annotation paths.

Can I compare gene expression directly against TE expression in a combined matrix?▼

No. Genes and TEs sit on different measurement bases (unique-only versus multimapper-inflated counts, different strandedness and length handling), so within-sample gene-versus-TE magnitude comparisons are not interpretable. Only within-feature-type, across-sample DE is valid.

Can I use this workflow for single-cell RNA-seq data?▼

No. This workflow is designed for bulk RNA-seq featureCounts matrices only. Single-cell scRNA-seq count matrices should use a dedicated single-cell QC and annotation workflow with scanpy or Seurat instead.