Agent skill

Bio Epitranscriptomics Modification Visualization

by GPTomics in GPTomics/bioSkills

Visualises RNA-modification data with transcript-feature metagene plots (Guitar GuitarPlot; MetaPlotR; deepTools computeMatrix scale-regions), peak-centred heatmaps (ComplexHeatmap; deepTools…

MITAuto-check passedMedia & Creative

Install Bio Epitranscriptomics Modification Visualization

skills CLI
$ npx skills add GPTomics/bioSkills --skill bio-epitranscriptomics-modification-visualization -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install GPTomics/bioSkills bio-epitranscriptomics-modification-visualization --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/GPTomics/bioSkills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/epitranscriptomics/modification-visualization .claude/skills/bio-epitranscriptomics-modification-visualization && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
bio-epitranscriptomics-modification-visualization
GitHub stars
1.2k
Used in
1 other repo
Token cost
~8.1k tokens
SKILL.md length
3,144 words
Files
4
Skills in repo
552
Repo updated
First seen
Licence
MIT

At a glance

Visualises RNA-modification data with transcript-feature metagene plots (Guitar GuitarPlot; MetaPlotR; deepTools computeMatrix scale-regions), peak-centred heatmaps (ComplexHeatmap; deepTools…

  • Producing the canonical metagene plot with stop-codon enrichment as a QC anchor
  • SKILL.md covers Version Compatibility, The Single Most Important…, Algorithmic Taxonomy and Decision Tree by Scenario, plus 14 more sections
  • Runs Shell and R scripts from its folder
  • Building paired IP/input genome-browser tracks at single-locus resolution

What it does

Bio Epitranscriptomics Modification Visualization is an agent skill from GPTomics/bioSkills. Visualises RNA-modification data with transcript-feature metagene plots (Guitar GuitarPlot; MetaPlotR; deepTools computeMatrix scale-regions), peak-centred heatmaps (ComplexHeatmap; deepTools plotHeatmap), IP-vs-input paired browser tracks (log2 IP/input bigWig via deepTools bamCompare; pyGenomeTracks; Gviz; IGV/UCSC track hubs), DRACH sequence-logo plots (ggseqlogo; MEME), feature-distribution stacked bars, and volcano/MA plots for differential modification. Establishes stop-codon enrichment in the metagene plot…

Its SKILL.md is about 8.1k tokens, which your agent loads only when the skill is triggered. The skill folder holds 4 other files (for example `examples/deeptools_metagene.sh` and `usage-guide.md`).

It sits in Media & Creative, covering Logo and visual identity, Bioinformatics and Data visualization. The repository describes itself as: a set of SKILLS.md for doing bioinformatics with agents like claude code. The licence is MIT.

When your agent uses it

  • Producing the canonical metagene plot with stop-codon enrichment as a QC anchor
  • Building paired IP/input genome-browser tracks at single-locus resolution
  • Plotting peak-centred heatmaps clustered by condition
  • Summarising peak distribution across transcript features

Example prompts

  • “Use the bio-epitranscriptomics-modification-visualization skill to visualise RNA-modification data with transcript-feature metagene plots (Guitar…”
  • “/bio-epitranscriptomics-modification-visualization”

Requirements

  • A Bash shell

What it can do on your machine

Read from SKILL.md and the folder at commit d91ed3d. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Ships script files (Shell and R), which the agent can run.

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Bio Epitranscriptomics Modification Visualization loads about 8.1k tokens when it runs. Until then it costs about 267 tokens; SKILL.md has 3,144 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~267
When it runs · the whole SKILL.md, loaded when a task matches
~8.1k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from GPTomics/bioSkills at commit d91ed3d, republished under its MIT licence (© GPTomics). 3,144 words, ~8,092 tokens.

Download SKILL.mdSave it as .claude/skills/bio-epitranscriptomics-modification-visualization/SKILL.md (or your agent's skills folder). This skill also uses 3 other files; get the full folder from GitHub.
name
bio-epitranscriptomics-modification-visualization
description
Visualises RNA-modification data with transcript-feature metagene plots (Guitar GuitarPlot; MetaPlotR; deepTools computeMatrix scale-regions), peak-centred heatmaps (ComplexHeatmap; deepTools plotHeatmap), IP-vs-input paired browser tracks (log2 IP/input bigWig via deepTools bamCompare; pyGenomeTracks; Gviz; IGV/UCSC track hubs), DRACH sequence-logo plots (ggseqlogo; MEME), feature-distribution stacked bars, and volcano/MA plots for differential modification. Establishes stop-codon enrichment in the metagene plot as the biological QC anchor for any MeRIP dataset (Dominissini 2012; Meyer 2012). Use when producing the canonical metagene plot with stop-codon enrichment as a QC anchor, building paired IP/input genome-browser tracks at single-locus resolution, plotting peak-centred heatmaps clustered by condition, summarising peak distribution across transcript features, generating DRACH motif logos as sanity checks, rendering volcano plots of differential m6A, or reproducing the stop-codon enrichment plot.
tool_type
mixed
primary_tool
Guitar

Version Compatibility

Reference examples tested with: Guitar 2.18+ (Bioconductor), MetaPlotR (GitHub, unversioned), deepTools 3.5+, ggcoverage 1.4+, pyGenomeTracks 3.8+, Gviz 1.46+, ComplexHeatmap 2.18+, ggseqlogo 0.2+, ggplot2 3.5+, rtracklayer 1.62+, GenomicFeatures 1.54+, BSgenome.Hsapiens.UCSC.hg38 1.4+, TxDb.Hsapiens.UCSC.hg38.knownGene 3.18+, ChIPseeker 1.38+.

Before using code patterns, verify installed versions match. If versions differ:

  • R: packageVersion('Guitar') then ?GuitarPlot to verify parameters
  • CLI: <tool> --help; deepTools <tool> --help

If R throws unused argument or argument is missing, the API moved between Bioconductor minor releases. Guitar's older API used txdb= while newer uses txTxdb=; verify with ?GuitarPlot. deepTools bamCompare --operation log2 is the modern syntax (older --ratio log2 is being phased out).

RNA Modification Visualisation

"Make the canonical m6A metagene plot for my paper" -> Render the 5'UTR / CDS / 3'UTR transcript-feature metagene with stop-codon enrichment for visual confirmation of the canonical m6A topology (THE smoke test that the antibody-IP captured real m6A), the peak-feature-distribution stacked bar ("where do my peaks land?" Figure 1), peak-centred heatmaps clustered by condition, IP-over-Input paired browser tracks at specific loci, the DRACH sequence logo as a sanity check on antibody specificity, and the volcano / MA plots for differential modification. CRITICAL: the stop-codon enrichment plot is a biological-QC anchor — a MeRIP dataset that does NOT show enrichment at and around the stop codon indicates IP failure, wrong antibody, wrong protocol, or the assay captured a different modification (e.g., m1A is centred at TSS, not stop). Build this plot FIRST as a smoke test BEFORE any downstream visualisation.

  • R: Guitar::GuitarPlot(peakBedFiles, txTxdb=...) -- canonical transcript-feature metagene (THE field-standard plot)
  • CLI: deeptools computeMatrix scale-regions ... + plotProfile -- genome-coordinate metagene
  • R: ComplexHeatmap::Heatmap() on peak-centred signal matrix -- peak-centred heatmap clustered by condition
  • CLI: pyGenomeTracks --tracks tracks.ini --region chr:start-end -- multi-track browser plot
  • R: ggcoverage::ggcoverage(data=track, mark.region=peaks) + geom_gene() -- ggplot2-based browser tracks
  • R: ggseqlogo::ggseqlogo(seqs) -- DRACH sequence logo from peak-centre 5-mers
  • R: ChIPseeker::annotatePeak() + ggplot2 stacked bar -- 5'UTR / CDS / 3'UTR feature distribution

The Single Most Important Modern Insight -- Stop-codon enrichment in the metagene plot is the biological QC anchor — a MeRIP dataset without it is suspect

Dominissini 2012 Nature 485:201 and Meyer 2012 Cell 149:1635 — concurrent papers from different labs using different protocols (MeRIP-seq and m6A-seq, respectively) — both independently showed m6A enrichment at and around the stop codon (3'UTR-proximal end of the CDS). This is the most robust biological signal in MeRIP-seq, reproduced across cell types, conditions, and decades. A metagene plot from a MeRIP library that does NOT show stop-codon enrichment indicates: (1) IP failure (antibody did not bind), (2) wrong antibody, (3) wrong protocol (e.g., the assay actually captured a different modification — m1A is centred at TSS, not stop), or (4) sample-RNA degradation. Build the Guitar metagene plot FIRST after peak calling, BEFORE any downstream visualisation, as a smoke test. The corollary: the 5'UTR / CDS / 3'UTR feature-distribution stacked bar (the "where do m6A peaks land?" Figure 1) should always be PAIRED with the metagene plot, because the stacked bar can look right (peaks land in 3'UTR / stop area) while the metagene is off (peak DENSITY not concentrated at the codon itself), or vice versa. The two plots are complementary biology-QC anchors, not redundant.

Algorithmic Taxonomy

Tool / plotMechanismInputsOutputStrengthFails when
Guitar GuitarPlot (Cui 2016 Biomed Res Int 2016:8367534)Per-peak distance computation relative to TSS / start / stop / TES; feature-scaled renderingBED + TxDbPDF + per-feature densityTHE field-standard m6A metagene; transcript-feature-awareOlder / newer API uses txdb= vs txTxdb= argument
MetaPlotR (Olarerin-George 2017 Bioinformatics 33:1563)Alternative metagene approach with different segment-rescalingBED + GTFPDFAlternative segment rescaling philosophyGitHub-only; less actively maintained
deepTools computeMatrix + plotProfile (Ramírez 2016 NAR 44:W160)Genome-coordinate signal aggregation over scaled gene regionsbigWig + BEDPDF + matrixFast; flexible region/anchor choice; well-tested ChIP-seq lineageNot transcript-feature-aware; misses 5'UTR / CDS / 3'UTR distinction
deepTools plotHeatmapSame matrix as plotProfile; rendered as heatmap with row clusteringbigWig matrixPDFStandard peak-centred heatmapSingle-condition view (use ComplexHeatmap for multi-condition clustering)
ComplexHeatmap (Gu 2016 Bioinformatics 32:2847)General-purpose heatmap with multi-dimensional clusteringnumeric matrixPDF / interactiveMulti-condition cluster + annotation; publication-qualityRequires pre-computed signal matrix
pyGenomeTracks (Lopez-Delisle 2021 Bioinformatics 37:422)Config-file (INI) driven multi-track browser plotbigWig / bed / GTF + INI configPDF / PNGReproducible browser figures via config; multi-track stackingINI config syntax error-prone for new users
ggcoverage (Song & Wang 2023 BMC Bioinformatics 24:309)ggplot2-native track plottingbigWig / BAM + GTFggplot2 objectggplot2 syntax; combinable with annotation layersNewer tool; smaller user base than Gviz
Gviz (Hahne & Ivanek 2016 Methods Mol Biol 1418:335)R/Bioconductor general genome trackbigWig / BAM / GRanges + TxDbPDF / R plotMost flexible R-native; long Bioconductor historyHeavier than ggcoverage; steeper learning curve
IGV / IGV.js (Robinson 2011 Nat Biotechnol 29:24)Interactive browser via Java / JSbigWig / BAM / bedinteractiveStandard for ad-hoc inspectionNot reproducible for figure generation
UCSC Track HubsUCSC genome browser displaybigWig + hub.txt + genomes.txtURLPublic-display standardSetup overhead for short projects
ggseqlogo (Wagih 2017 Bioinformatics 33:3645)Sequence-logo rendering in ggplot2character vector of equal-length sequencesggplot2 objectNative ggplot2; method='bits' or 'probability'Requires equal-length sequences
MEME-ChIP (Machanick & Bailey 2011 Bioinformatics 27:1696)Motif discovery + logoBED + genomeHTML + PWMComprehensive motif suite; gold standardHeavier than ggseqlogo for simple visualisation
HOMER findMotifsGenome.pl (Heinz 2010 Mol Cell 38:576)Motif discovery via cumulative hypergeometric on shuffled backgroundBED + genomeHTML + motif filesBattle-tested; RNA mode via -rnaLess flexible output formatting than MEME

Decision Tree by Scenario

ScenarioRecommendedWhy wrong choices fail
Canonical Figure 1 metagene plot for m6A paperGuitar GuitarPlot with TxDb -- transcript-feature scaleddeepTools computeMatrix is genome-coordinate only; misses 5'UTR / CDS / 3'UTR distinction
QC: does my MeRIP show stop-codon enrichment?Guitar GuitarPlot FIRST -- the canonical biological-QC anchorSkipping this and rushing to peak counting is the most common QC failure
Browser-track Figure for a specific locuspyGenomeTracks (config-file driven; reproducible) OR ggcoverage (ggplot2-native)IGV is interactive but not reproducible for figures
Multi-condition peak-centred heatmap with clusteringComplexHeatmap; row-cluster k-means; annotate by conditiondeepTools plotHeatmap is single-condition view
DRACH sequence logo from peak centresggseqlogo on resized peak ranges (width=5, fix='center')MEME-ChIP heavier than needed for visualisation only
Differential m6A volcano plotggplot2 native (see m6a-differential) -- modification-visualization should NOT duplicateDuplicating volcano recipe across skills inflates content
Genome-coordinate metagene over custom featuresdeepTools computeMatrix scale-regions; plotProfileGuitar restricted to transcript features; doesn't scale to arbitrary BED
Cross-sample paired IP/input track displaybamCompare -> log2 bigWig; pyGenomeTracks multi-trackSingle bigWig hides the IP/input pairing structure
5'UTR / CDS / 3'UTR stacked barChIPseeker annotatePeak -> ggplot2 stacked barManual annotation error-prone; ChIPseeker handles edge cases
Reproducing Dominissini 2012 / Meyer 2012 stop-codon plotGuitar GuitarPlot; the canonical recipeOther tools produce similar but not identical plots

Methodology evolves; before high-stakes figure generation, web-search "Guitar Bioconductor release notes" and "pyGenomeTracks vs ggcoverage" for current best practice.

Guitar Transcript-Feature Metagene (THE Canonical Plot)

Goal: Render the canonical m6A metagene plot showing peak density along scaled transcript features (5'UTR, CDS, 3'UTR), with the stop-codon-proximal enrichment that is the field's biological QC anchor.

Approach: Load called peaks from BED; pass to GuitarPlot with the matched TxDb; export per-feature density and the PDF.

r
library(Guitar)
library(TxDb.Hsapiens.UCSC.hg38.knownGene)
library(rtracklayer)

txdb <- TxDb.Hsapiens.UCSC.hg38.knownGene

# Older Guitar versions: argument is `txdb=`; newer: `txTxdb=`. Verify with ?GuitarPlot.
GuitarPlot(
    txTxdb           = txdb,
    stBedFiles       = list('exomepeak2_output/m6a_run1/peaks.bed'),
    miscOutFilePrefix = 'figures/m6a_metagene',
    enableCI         = FALSE,
    saveToPDFprefix  = 'figures/m6a_metagene'
)

If txTxdb= is rejected, fall back to txdb= and consult ?GuitarPlot. The expected output: stop-codon-proximal enrichment, with peak density rising toward and peaking near the stop codon in the 3'UTR. If the plot does NOT show this pattern, do not proceed to downstream visualisation — investigate IP / antibody / protocol failure in merip-preprocessing.

deepTools Genome-Coordinate Metagene

Goal: Render a genome-coordinate metagene over scaled gene regions using deepTools, useful when transcript-feature scaling is not needed or when the regions of interest are not standard genes (custom BED).

Approach: Build a signal matrix with computeMatrix scale-regions from a bigWig (typically IP-over-Input log2 from merip-preprocessing); render as profile plot + heatmap.

bash
mkdir -p figures

computeMatrix scale-regions \
    --regionsFileName refs/protein_coding.bed \
    --scoreFileName tracks/IP_rep1_over_Input_rep1.bw \
    --regionBodyLength 2000 \
    --upstream 500 \
    --downstream 500 \
    --skipZeros \
    --numberOfProcessors 8 \
    --outFileName figures/m6a_matrix.gz

plotProfile \
    --matrixFile figures/m6a_matrix.gz \
    --outFileName figures/m6a_profile.pdf \
    --plotTitle 'm6A IP over Input metagene' \
    --plotType lines

plotHeatmap \
    --matrixFile figures/m6a_matrix.gz \
    --outFileName figures/m6a_heatmap.pdf \
    --colorMap RdBu_r \
    --plotTitle 'm6A IP over Input heatmap'

scale-regions is the right mode for gene-body metagene (5'-end-to-3'-end scaled to common length); reference-point is for peak-centred plots. For peak-centred, see the next section.

Peak-Centred Heatmap

Goal: Render a peak-centred heatmap of IP-over-Input signal at +/-window around each peak, clustered by condition or by signal pattern, for cross-condition comparison.

Approach: Use deepTools computeMatrix reference-point --referencePoint center for the matrix; ComplexHeatmap for the clustered render.

bash
computeMatrix reference-point \
    --regionsFileName exomepeak2_output/m6a_run1/peaks.bed \
    --scoreFileName tracks/IP_rep1_over_Input_rep1.bw tracks/IP_rep2_over_Input_rep2.bw tracks/IP_rep3_over_Input_rep3.bw \
    --referencePoint center \
    --upstream 500 \
    --downstream 500 \
    --binSize 25 \
    --skipZeros \
    --numberOfProcessors 8 \
    --outFileName figures/peak_centred_matrix.gz \
    --outFileNameMatrix figures/peak_centred_matrix.tab

plotHeatmap \
    --matrixFile figures/peak_centred_matrix.gz \
    --outFileName figures/peak_centred_heatmap.pdf \
    --kmeans 3 \
    --colorMap viridis \
    --plotTitle 'm6A signal centred at peaks'

For multi-condition heatmap with annotations, parse the matrix into R and use ComplexHeatmap:

r
library(ComplexHeatmap)
library(circlize)

# deepTools --outFileNameMatrix has a 3-line JSON-style header before per-bin numeric columns.
raw <- read.delim('figures/peak_centred_matrix.tab', skip=3, header=FALSE)
mat <- as.matrix(raw[, -(1:6)])

col_fun <- colorRamp2(c(-2, 0, 2), c('blue', 'white', 'red'))

Heatmap(
    mat,
    name              = 'log2 IP / Input',
    col               = col_fun,
    cluster_columns   = FALSE,
    cluster_rows      = TRUE,
    row_km            = 3,
    show_row_names    = FALSE,
    show_column_names = FALSE,
    column_title      = 'Peak-centred (+/- 500 bp)'
)

IP-vs-Input Paired Browser Tracks via pyGenomeTracks

Goal: Render publication-quality genome-browser tracks at a specific locus showing paired IP / Input bigWig tracks, the IP/input log2 ratio, peak calls, and gene annotation; reproducible via INI config.

Approach: Build a tracks.ini config file listing each track type (bigwig, bed, gtf); invoke pyGenomeTracks --tracks tracks.ini --region chr:start-end.

ini
[x-axis]
where = top
fontsize = 12

[IP rep1]
file = tracks/IP_rep1.bw
title = IP rep1
color = #d62728
height = 2
min_value = 0

[Input rep1]
file = tracks/Input_rep1.bw
title = Input rep1
color = #1f77b4
height = 2
min_value = 0

[IP / Input log2]
file = tracks/IP_rep1_over_Input_rep1.bw
title = log2 IP / Input
color = #2ca02c
height = 2

[spacer]

[m6A peaks]
file = exomepeak2_output/m6a_run1/peaks.bed
title = m6A peaks (exomePeak2)
color = #ff7f0e
height = 1
labels = false

[genes]
file = refs/annotation.gtf
title = GENCODE genes
height = 2
prefered_name = gene_name
merge_transcripts = true
bash
pyGenomeTracks \
    --tracks tracks.ini \
    --region chr19:54,792,000-54,799,000 \
    --outFileName figures/browser_metti3_locus.pdf \
    --width 14 \
    --plotWidth 12

ggcoverage ggplot2-Native Browser Track

Goal: Render genome-browser tracks in ggplot2 syntax for combining with other ggplot2 layers (annotations, peak highlights, custom theming).

Approach: LoadTrackFile() parses a bigWig / bigBed / BAM input into the dataframe ggcoverage expects; chain ggcoverage() with geom_gene() for transcript annotation; mark.region requires columns start, end, and label.

r
library(ggcoverage)
library(rtracklayer)

peaks <- as.data.frame(import('exomepeak2_output/m6a_run1/peaks.bed'))

track.df <- LoadTrackFile(
    track.file = 'tracks/IP_rep1_over_Input_rep1.bw',
    format     = 'bw',
    region     = 'chr19:54792000-54799000'
)

mark.df <- data.frame(
    start = peaks$start,
    end   = peaks$end,
    label = peaks$name
)

ggcoverage(
    data        = track.df,
    color       = 'auto',
    mark.region = mark.df
) +
    geom_gene(gtf.file = 'refs/annotation.gtf') +
    ggplot2::theme_classic()

Goal: Render a sequence logo of peak-centre 5-mers as a sanity check that the called peak set is enriched for the DRACH consensus motif.

Approach: Resize peak GRanges to fixed 5-nt centred windows; extract genomic sequences; pass to ggseqlogo with method='probability'.

r
library(Biostrings)
library(BSgenome.Hsapiens.UCSC.hg38)
library(ggseqlogo)
library(rtracklayer)

peaks <- import('exomepeak2_output/m6a_run1/peaks.bed')

peak_centres <- resize(peaks, width=5, fix='center')

genome <- BSgenome.Hsapiens.UCSC.hg38
seqs <- as.character(getSeq(genome, peak_centres))

ggseqlogo(seqs, method='probability') +
    ggplot2::labs(title='Peak-centre 5-mer (DRACH consensus expected)',
                  subtitle='Sanity check on antibody specificity — NOT a per-peak filter')

The expected output: a logo showing approximately D-R-A-C-H consensus (D=A/G/U, R=A/G, A=methylated, C, H=A/C/U) with A clearly dominating position 3. If the logo does NOT show DRACH-like enrichment, the IP failed OR the wrong antibody was used.

5'UTR / CDS / 3'UTR Stacked Bar

Goal: Render the Figure 1 "where do my peaks land?" stacked bar showing the fraction of peaks in 5'UTR vs CDS vs 3'UTR vs intron, paired with the metagene to confirm canonical m6A topology.

Approach: Use ChIPseeker annotatePeak() with a matched TxDb; aggregate to per-feature counts; render as ggplot2 stacked bar.

r
library(ChIPseeker)
library(TxDb.Hsapiens.UCSC.hg38.knownGene)
library(rtracklayer)
library(ggplot2)
library(dplyr)

txdb <- TxDb.Hsapiens.UCSC.hg38.knownGene
peaks <- import('exomepeak2_output/m6a_run1/peaks.bed')

peak_anno <- annotatePeak(peaks, TxDb=txdb, level='transcript', verbose=FALSE)
anno_df <- as.data.frame(peak_anno@anno)

anno_df$feature <- gsub(' \\(.*\\)', '', anno_df$annotation)

feature_counts <- anno_df %>%
    group_by(feature) %>%
    summarise(n=n()) %>%
    mutate(fraction=n/sum(n)) %>%
    arrange(desc(fraction))

ggplot(feature_counts, aes(x='m6A peaks', y=fraction, fill=feature)) +
    geom_col(width=0.5) +
    scale_y_continuous(labels=scales::percent_format()) +
    labs(x=NULL, y='Fraction of peaks', title='m6A peak distribution across transcript features') +
    theme_minimal()

Per-Method Failure Modes

Metagene without stop-codon enrichment

Trigger: Guitar GuitarPlot of called peaks does NOT show enrichment at and around the stop codon.

Mechanism: Canonical m6A topology (Dominissini 2012 / Meyer 2012) shows stop-codon-proximal enrichment. Absence indicates (1) IP failure, (2) wrong antibody, (3) wrong protocol, (4) sample-RNA degradation, OR (5) the assay captured a different modification (m1A is TSS-centred; m5C distribution differs).

Symptom: Metagene is flat OR peaks at TSS (m1A signature) OR peaks in introns (unusual).

Fix: Do NOT proceed to downstream analysis. Diagnose at the merip-preprocessing layer: plotFingerprint, per-transcript IP/input distribution, antibody-lot QC. Re-do the IP if necessary. The metagene plot is the biological QC anchor; without it, all downstream interpretation is suspect.

DRACH logo not enriched

Trigger: ggseqlogo of peak-centre 5-mers shows no consensus, OR shows a non-DRACH-like motif.

Mechanism: Antibody specificity failure OR wrong protocol. Anti-m6A antibodies have ~70% DRACH-context enrichment on real m6A peaks; a failed IP captures random sequences with no consensus.

Fix: Re-inspect IP enrichment in merip-preprocessing. If IP is clean but DRACH logo is absent, the assay may have captured a different modification — investigate before claiming m6A.

Guitar txdb= vs txTxdb= argument confusion

Trigger: GuitarPlot(stBedFiles=..., txdb=txdb) rejected with "unused argument" error.

Mechanism: Guitar changed the argument name between Bioconductor releases — txdb= (older) vs txTxdb= (newer).

Fix: Try alternative; consult ?GuitarPlot for installed version. Pin Guitar version in reproducible analyses.

deepTools genome-coordinate metagene used where transcript-feature is needed

Trigger: computeMatrix scale-regions over a BED of genes used to show "5'UTR / CDS / 3'UTR enrichment".

Mechanism: deepTools scales by genomic length, NOT by transcript-feature length. A gene with long 5'UTR and short CDS will scale 5'UTR more than CDS; the metagene loses 5'UTR / CDS / 3'UTR semantics.

Fix: Use Guitar (transcript-feature-aware) for 5'UTR / CDS / 3'UTR semantics. Use deepTools for genome-coordinate metagene over arbitrary BED.

Show full SKILL.md (1,277 more words)Show less
IGV-only browser figure in published paper

Trigger: Figure 4 of paper shows an IGV screenshot of one locus; not reproducible from code.

Mechanism: IGV is interactive; the figure cannot be re-generated from a config file. Reviewers cannot reproduce the figure if track files change.

Fix: Use pyGenomeTracks (INI config) or ggcoverage (ggplot2 script) for figures intended for publication. IGV is for ad-hoc inspection only.

bamCompare --ratio log2 deprecation

Trigger: Older deepTools syntax --ratio log2 used; newer requires --operation log2.

Fix: Switch to --operation log2. Both currently work but --ratio is being phased out.

ggseqlogo "sequences must be equal length"

Trigger: Mixed-length peak sequences passed to ggseqlogo.

Mechanism: ggseqlogo requires equal-length input strings.

Fix: Resize peak ranges to fixed width before extraction: resize(peaks, width=5, fix='center').

pyGenomeTracks INI typo

Trigger: Track section header missing brackets, OR file = instead of file= (whitespace inconsistency).

Fix: Use the documented INI syntax precisely; bracketed section headers; consistent whitespace around =. Validate with pyGenomeTracks --tracks tracks.ini --region 'chr:start-end' --outFileName out.pdf and iterate on errors.

Reconciliation: When Plots Disagree

PatternLikely causeAction
Metagene shows stop-codon enrichment but stacked bar has many 5'UTR peaks5'UTR peaks are present but density is concentrated at stop codonBoth plots are correct; report together
Guitar metagene and deepTools metagene look very differentGuitar transcript-feature-scaled vs deepTools genome-scaledBoth correct; Guitar for 5'UTR / CDS / 3'UTR semantics; deepTools for genome coordinates
Peak-centred heatmap shows two clusters; condition annotation crosses cluster boundaryBiological signal not condition-aligned; OR clustering driven by per-peak coverage varianceInspect per-cluster fold-change; consider removing low-coverage peaks before re-clustering
pyGenomeTracks shows IP track higher than Input but bamCompare bigWig shows log2 near zeroTrack signal magnitudes are CPM-normalised; absolute counts and log2 ratios are different summariesReport log2 ratio as the primary; per-track CPM as supplement
DRACH logo enriched but stacked bar shows mostly intronic peaksIntronic m6A (Louloupi 2018 nascent transcripts)Genuine biology; report intronic vs exonic separately; consider library prep (poly-A vs ribo-depleted)
Volcano plot symmetric but most differential peaks in 3'UTRDifferential is feature-restrictedCross-check with per-feature differential testing; biological interpretation

Quantitative Thresholds

QuantityThresholdSource / rationale
Guitar metagene -- expected patternStop-codon-proximal enrichment, 3'UTR > CDS > 5'UTR densityDominissini 2012 Nature 485:201; Meyer 2012 Cell 149:1635
deepTools metagene scaled-region length2000 bp body + 500 bp flanksConvention; covers typical mammalian gene span
Peak-centred heatmap window+/-500 bp around peak centreStandard convention; covers MeRIP fragment width
Peak-centred heatmap k-means clusters3-5 typicalCluster count informed by condition count + signal heterogeneity
ggseqlogo expected DRACH patternA dominant at position 3 (the methylated A); C dominant at position 4DRACH consensus
pyGenomeTracks figure width10-14 inchesStandard publication width
Browser-track region width5-50 kbLocus-context dependent
5'UTR / CDS / 3'UTR / intron+other expected distribution~10% / ~30% / ~50% / ~10% for canonical m6APer published m6A atlases
DRACH logo "method" parameter'probability' for visual; 'bits' for information-theoreticggseqlogo convention
Per-feature stacked bar minimum peaks>=100Below this, fractions are noisy
Cross-replicate metagene divergenceShould be near-identical within conditionIf replicates' metagenes diverge, failed-IP suspect in merip-preprocessing

Common Errors

Error / symptomCauseSolution
Guitar txTxdb rejectedOlder version uses txdbSwitch argument name; consult ?GuitarPlot
Guitar PDF blankBED file empty OR chromosome mismatch with TxDbVerify peak BED has peaks; reconcile chromosome naming
deepTools computeMatrix errors with "no regions"BED file empty OR file path wrongVerify BED is non-empty and path correct
pyGenomeTracks INI parse errorBracket / whitespace inconsistencyMatch documented INI syntax exactly
ggcoverage region not displayedRegion beyond bigWig coverage; OR chromosome naming mismatchVerify bigWig contains region; reconcile chr1 vs 1
ggseqlogo throws "equal length" errorMixed-length sequencesresize(peaks, width=5, fix='center') before extracting
ComplexHeatmap clustering hangsVery large peak set (>100k)Subset to top N peaks; or use deepTools plotHeatmap k-means
bamCompare --ratio log2 deprecation warningNewer syntaxSwitch to --operation log2
IGV screenshot not reproducibleInteractive toolSwitch to pyGenomeTracks / ggcoverage
ggseqlogo logo blankEmpty seqs input OR all sequences are gaps / NsVerify peak BED resolves to valid genomic sequences via getSeq()
Stacked bar shows >100%Peak annotation overlap counted multiple timesUse annotatePeak with explicit hierarchy
ComplexHeatmap colour scale wrongcolorRamp2 breaks at outliersSet scale based on robust quantiles (quantile(x, 0.05), 0, quantile(x, 0.95))

Anticipated Reviewer Pushback

PushbackResponse
"Does the MeRIP show the canonical stop-codon enrichment?"Yes — Guitar metagene plot shows expected stop-codon-proximal enrichment; cited Dominissini 2012 / Meyer 2012
"Why Guitar and not deepTools?"Guitar is transcript-feature-scaled (5'UTR / CDS / 3'UTR semantics); deepTools is genome-coordinate; both reported when needed
"Is the DRACH motif enriched?"ggseqlogo of peak-centre 5-mers; OR HOMER findMotifsGenome.pl E-value reported
"Is the browser figure reproducible?"Yes — pyGenomeTracks INI config OR ggcoverage R script; not IGV screenshot
"How were peaks annotated to features?"ChIPseeker annotatePeak with matched TxDb; hierarchy explicit
"Why these specific clusters in the heatmap?"k-means with k=3 chosen via elbow / silhouette; clusters reflect signal heterogeneity
"Does the metagene differ between conditions?"Per-condition metagenes plotted alongside; differences quantified at the feature level
"Why is the colour scheme red-blue?"Standard convention for log2 ratios (red = up, blue = down); colour-blind-safe palette via viridis available
"Was a cross-check with published m6A-Atlas peaks done?"Common-core overlap reported; cited m6A-Atlas v2
"Are the browser track signal magnitudes comparable across samples?"bigWig CPM-normalised in merip-preprocessing; documented

References

  • Dominissini D, Moshitch-Moshkovitz S, Schwartz S et al (2012) Topology of the human and mouse m6A RNA methylomes revealed by m6A-seq. Nature 485(7397):201-206. doi:10.1038/nature11112
  • Meyer KD, Saletore Y, Zumbo P, Elemento O, Mason CE, Jaffrey SR (2012) Comprehensive analysis of mRNA methylation reveals enrichment in 3' UTRs and near stop codons. Cell 149(7):1635-1646. doi:10.1016/j.cell.2012.05.003
  • Cui X, Wei Z, Zhang L et al (2016) Guitar: an R/Bioconductor package for gene annotation guided transcriptomic analysis of RNA-related genomic features. Biomed Res Int 2016:8367534. doi:10.1155/2016/8367534
  • Olarerin-George AO, Jaffrey SR (2017) MetaPlotR: a Perl/R pipeline for plotting metagenes of nucleotide modifications and other transcriptomic sites. Bioinformatics 33(10):1563-1564. doi:10.1093/bioinformatics/btx002
  • Ramírez F, Ryan DP, Grüning B et al (2016) deepTools2: a next generation web server for deep-sequencing data analysis. Nucleic Acids Res 44(W1):W160-W165. doi:10.1093/nar/gkw257
  • Gu Z, Eils R, Schlesner M (2016) Complex heatmaps reveal patterns and correlations in multidimensional genomic data. Bioinformatics 32(18):2847-2849. doi:10.1093/bioinformatics/btw313
  • Lopez-Delisle L, Rabbani L, Wolff J et al (2021) pyGenomeTracks: reproducible plots for multivariate genomic datasets. Bioinformatics 37(3):422-423. doi:10.1093/bioinformatics/btaa692
  • Song Y, Wang J (2023) ggcoverage: an R package to visualize and annotate genome coverage for various NGS data. BMC Bioinformatics 24(1):309. doi:10.1186/s12859-023-05438-2
  • Robinson JT, Thorvaldsdóttir H, Winckler W et al (2011) Integrative genomics viewer. Nat Biotechnol 29(1):24-26. doi:10.1038/nbt.1754
  • Wagih O (2017) ggseqlogo: a versatile R package for drawing sequence logos. Bioinformatics 33(22):3645-3647. doi:10.1093/bioinformatics/btx469
  • Yu G, Wang LG, He QY (2015) ChIPseeker: an R/Bioconductor package for ChIP peak annotation, comparison and visualization. Bioinformatics 31(14):2382-2383. doi:10.1093/bioinformatics/btv145
  • Hahne F, Ivanek R (2016) Visualizing Genomic Data Using Gviz and Bioconductor. Methods Mol Biol 1418:335-351. doi:10.1007/978-1-4939-3578-9_16
  • Heinz S, Benner C, Spann N et al (2010) Simple combinations of lineage-determining transcription factors prime cis-regulatory elements required for macrophage and B cell identities. Mol Cell 38(4):576-589. doi:10.1016/j.molcel.2010.05.004
  • Machanick P, Bailey TL (2011) MEME-ChIP: motif analysis of large DNA datasets. Bioinformatics 27(12):1696-1697. doi:10.1093/bioinformatics/btr189
  • merip-preprocessing - Generates the bigWig tracks (bamCompare log2 IP/input) used here
  • m6a-peak-calling - Generates the peak BED used for metagene + stacked bar + heatmap
  • m6a-differential - Differential results visualised via volcano + MA (those plots live in m6a-differential, not duplicated here)
  • m6anet-analysis - Per-site DRS modification calls; visualisation analogous via metagene
  • data-visualization/ggplot2-fundamentals - General ggplot2 grammar
  • data-visualization/multipanel-figures - Combining metagene + heatmap + volcano into figures
  • data-visualization/heatmaps-clustering - General heatmap clustering patterns
  • data-visualization/volcano-and-ma-plots - General volcano / MA recipes (modification-specific volcano lives in m6a-differential)
  • data-visualization/genome-tracks - General genome-track rendering (this skill adds the IP/input pairing specifics)
  • data-visualization/sequence-logos - General sequence-logo plotting (this skill adds DRACH-specific context)
  • chip-seq/chipseq-visualization - Closest sibling for browser-track + peak-centred heatmap patterns
  • pathway-analysis/enrichment-visualization - For visualising downstream pathway results

© GPTomics, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 3 other files in epitranscriptomics/modification-visualization of GPTomics/bioSkills.

  • SKILL.md
  • examples/deeptools_metagene.sh
  • examples/guitar_metagene.R
  • usage-guide.md

Open the folder on GitHubat commit d91ed3d

Used in 1 other repository

We found 1 copy of this SKILL.md (exact, near-identical or edited) in other folders, from 1 other GitHub owner. This page covers the copy in GPTomics/bioSkills, which our catalogue first saw on October 7, 2026.

Compare with similar skills

Bio Epitranscriptomics Modification Visualization next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Bio Epitranscriptomics Modification Visualization compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Bio Epitranscriptomics Modification Visualization this skillGPTomics/bioSkills1.2k1 repos~8.1kAutomated safety check: PassMIT
Scanpy Single-Cell Analysisdavila7/claude-code-templates32k16 repos~2.8kAutomated safety check: PassMIT
deepTools NGS Toolkitdavila7/claude-code-templates32k13 repos~4.5kAutomated safety check: PassMIT
FBA Flux Analyzeraiming-lab/AutoResearchClaw15k—~2.3kAutomated safety check: PassMIT
Ukb Ppp Region FetchClawBio/ClawBio1.2k—~4.6kAutomated safety check: PassMIT
Bio Hi C Analysis Hic VisualizationFreedomIntelligence/OpenClaw-Medical-Skills3.1k1 repos~2.2kAutomated safety check: PassNone

Similar skills

  • Scanpy Single-Cell Analysis

    davila7/claude-code-templates

    Walks through single-cell RNA-seq analysis with Scanpy: loading .h5ad and 10X data, QC, normalization, PCA and UMAP, Leiden clustering, marker genes and cell type annotation.

    32k GitHub starsUsed in 16 repos~2.8k tokens
    Research & ScienceAuto-check passed
  • deepTools NGS Toolkit

    davila7/claude-code-templates

    Guides use of deepTools on sequencing data: BAM to bigWig conversion, QC, sample correlation, and heatmaps or profiles around TSS and peaks for ChIP-seq, RNA-seq and ATAC-seq.

    32k GitHub starsUsed in 13 repos~4.5k tokens
    Research & ScienceAuto-check passed
  • FBA Flux Analyzer

    aiming-lab/AutoResearchClaw

    Turns raw flux balance analysis output and a COBRApy model into gene essentiality maps, phenotypic phase planes, flux sampling results, pathway summaries and secretion predictions.

    15k GitHub stars~2.3k tokensUpdated 1 mo ago
    Research & ScienceAuto-check passed
  • Ukb Ppp Region Fetch

    ClawBio/ClawBio

    Fetch a regional slice of plasma pQTL summary statistics from the UK Biobank Pharma Proteomics Project (UKB-PPP; Sun 2023 Nature) for a specific (protein, ancestry) measurement.

    1.2k GitHub stars~4.6k tokensUpdated today
    Research & ScienceAuto-check passed
  • Bio Hi C Analysis Hic Visualization

    FreedomIntelligence/OpenClaw-Medical-Skills

    Visualize Hi-C contact matrices, TADs, loops, and genomic features using matplotlib, cooltools, and HiCExplorer.

    3.1k GitHub starsUsed in 1 repo~2.2k tokens
    Research & ScienceAuto-check passed
  • Circos Plot Generator

    aipoch/medical-research-skills

    Generate Circos configuration files for circular genomics data visualization.

    2k GitHub stars~9.1k tokensUpdated 21 days ago
    Research & ScienceAuto-check passed

More from GPTomics/bioSkills

All 552 skills in this repo
  • Bio Alignment Io

    GPTomics/bioSkills

    Read, write, and convert multiple sequence alignment files using Biopython Bio.AlignIO.

    1.2k GitHub starsUsed in 3 repos~4.9k tokens
    Auto-check passed
  • bioSkills Installer

    GPTomics/bioSkills

    Installs the bioSkills collection of 425 bioinformatics skills in one step, or only chosen categories, so sequencing, RNA-seq, single-cell and variant tasks get specialized help.

    1.2k GitHub starsUsed in 1 repo~789 tokens
    Auto-check passed
  • Bio Write Sequences

    GPTomics/bioSkills

    Write biological sequences to files (FASTA, FASTQ, GenBank, EMBL) using Biopython Bio.SeqIO.

    1.2k GitHub starsUsed in 3 repos~2.1k tokens
    Auto-check passed
  • Amplicon Primer Clipping

    GPTomics/bioSkills

    Soft- or hard-clips PCR primer footprints from aligned amplicon BAMs so primer bases stop masquerading as confirmed reference sequence.

    1.2k GitHub starsUsed in 2 repos~2.2k tokens
    Auto-check passed
  • Bio Alignment Indexing

    GPTomics/bioSkills

    Create and use BAI/CSI indices for BAM/CRAM files using samtools and pysam.

    1.2k GitHub starsUsed in 2 repos~2.4k tokens
    Auto-check passed
  • Bio Alignment Sorting

    GPTomics/bioSkills

    Sort alignment files by coordinate or read name using samtools and pysam.

    1.2k GitHub starsUsed in 2 repos~2.6k tokens
    Auto-check passed

Questions about Bio Epitranscriptomics Modification Visualization

What does Bio Epitranscriptomics Modification Visualization do?

Visualises RNA-modification data with transcript-feature metagene plots (Guitar GuitarPlot; MetaPlotR; deepTools computeMatrix scale-regions), peak-centred heatmaps (ComplexHeatmap; deepTools…. Bio Epitranscriptomics Modification Visualization is an agent skill from GPTomics/bioSkills. Visualises RNA-modification data with transcript-feature metagene plots (Guitar GuitarPlot; MetaPlotR; deepTools computeMatrix scale-regions), peak-centred heatmaps (ComplexHeatmap; deepTools plotHeatmap), IP-vs-input paired browser tracks (log2 IP/input bigWig via deepTools bamCompare; pyGenomeTracks; Gviz; IGV/UCSC track hubs), DRACH sequence-logo plots (ggseqlogo; MEME), feature-distribution stacked bars, and volcano/MA plots for differential modification.

When should I use Bio Epitranscriptomics Modification Visualization?

Bio Epitranscriptomics Modification Visualization fits situations like: producing the canonical metagene plot with stop-codon enrichment as a QC anchor; building paired IP/input genome-browser tracks at single-locus resolution; plotting peak-centred heatmaps clustered by condition; summarising peak distribution across transcript features.

How do I install Bio Epitranscriptomics Modification Visualization in Claude Code?

Run `npx skills add GPTomics/bioSkills --skill bio-epitranscriptomics-modification-visualization -a claude-code`. Or copy the skill folder (epitranscriptomics/modification-visualization in GPTomics/bioSkills) into .claude/skills/bio-epitranscriptomics-modification-visualization in your project. Claude Code loads it when a task matches its description.

How do I install Bio Epitranscriptomics Modification Visualization in Codex?

Run `npx skills add GPTomics/bioSkills --skill bio-epitranscriptomics-modification-visualization -a codex`. Or copy the skill folder (epitranscriptomics/modification-visualization in GPTomics/bioSkills) into .agents/skills/bio-epitranscriptomics-modification-visualization in your project. Codex loads it when a task matches its description.

Can I use Bio Epitranscriptomics Modification Visualization in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add GPTomics/bioSkills --skill bio-epitranscriptomics-modification-visualization -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/bio-epitranscriptomics-modification-visualization, .gemini/skills/bio-epitranscriptomics-modification-visualization, .github/skills/bio-epitranscriptomics-modification-visualization and .opencode/skills/bio-epitranscriptomics-modification-visualization in your project.

What does Bio Epitranscriptomics Modification Visualization need to run?

Going by SKILL.md and its folder, Bio Epitranscriptomics Modification Visualization needs a shell and R for the scripts in its folder. Our summary lists: A Bash shell.

Does Bio Epitranscriptomics Modification Visualization access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Bio Epitranscriptomics Modification Visualization safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Bio Epitranscriptomics Modification Visualization use?

Bio Epitranscriptomics Modification Visualization is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Bio Epitranscriptomics Modification Visualization use?

About 8.1k tokens (SKILL.md is roughly 32k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Bio Epitranscriptomics Modification Visualization?

Skills that share tags, products or a category with Bio Epitranscriptomics Modification Visualization: Scanpy Single-Cell Analysis (davila7/claude-code-templates, 32k stars), deepTools NGS Toolkit (davila7/claude-code-templates, 32k stars), FBA Flux Analyzer (aiming-lab/AutoResearchClaw, 15k stars) and Ukb Ppp Region Fetch (ClawBio/ClawBio, 1.2k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Bio Epitranscriptomics Modification Visualization?

GPTomics (a GitHub organization) maintains it in GPTomics/bioSkills, which has 1,215 GitHub stars. The repository holds 552 skills in this directory. The repository was last updated on August 15, 2026.

Source: GPTomics/bioSkills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.