Agent skill

Bio Clip Seq Clip Peak Calling

by GPTomics in GPTomics/bioSkills

Call protein-RNA binding sites from CLIP-seq BAM with CLIPper, PureCLIP, Skipper, Piranha, omniCLIP, CTK, CLAM, or Paraclu.

MITAuto-check passedResearch & Science

Install Bio Clip Seq Clip Peak Calling

skills CLI
$ npx skills add GPTomics/bioSkills --skill bio-clip-seq-clip-peak-calling -a claude-code

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

GitHub CLI
$ gh skill install GPTomics/bioSkills bio-clip-seq-clip-peak-calling --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/clip-seq/clip-peak-calling .claude/skills/bio-clip-seq-clip-peak-calling && 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-clip-seq-clip-peak-calling
GitHub stars
1.2k
Used in
2 other repos
Token cost
~6.9k tokens
SKILL.md length
3,068 words
Files
3
Skills in repo
559
Repo updated
First seen
Licence
MIT

At a glance

Call protein-RNA binding sites from CLIP-seq BAM with CLIPper, PureCLIP, Skipper, Piranha, omniCLIP, CTK, CLAM, or Paraclu.

  • Choosing between coverage-based
  • SKILL.md covers Version Compatibility, Algorithmic Taxonomy, Critical Choice:… and ENCODE eCLIP Stringency…, plus 10 more sections
  • Runs Shell scripts from its folder; calls python and pip
  • Beta-binomial window-based

What it does

Bio Clip Seq Clip Peak Calling is an agent skill from GPTomics/bioSkills. Call protein-RNA binding sites from CLIP-seq BAM with CLIPper, PureCLIP, Skipper, Piranha, omniCLIP, CTK, CLAM, or Paraclu. Use when choosing between coverage-based, HMM-based, beta-binomial window-based, and crosslink-site-based peak callers; applying ENCODE eCLIP thresholds (log2 IP/SMInput = 3, -log10 p = 3); deciding when SMInput is mandatory; or reconciling peak-set discordance between callers for the same RBP.

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

It sits in Research & Science, covering Bioinformatics. 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

  • Choosing between coverage-based
  • Beta-binomial window-based
  • Crosslink-site-based peak callers
  • Applying ENCODE eCLIP thresholds (log2 IP/SMInput = 3

Example prompts

  • “/bio-clip-seq-clip-peak-calling”

Requirements

  • Python 3
  • 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), which the agent can run.

    Shell commands in SKILL.md call:

    • python
    • pip

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

  • Network

    No URLs in SKILL.md. Its commands use pip, which can reach the network depending on how they are called.

    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 Clip Seq Clip Peak Calling loads about 6.9k tokens when it runs. Until then it costs about 113 tokens; SKILL.md has 3,068 words of instructions outside code blocks.

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

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,068 words, ~6,923 tokens.

Download SKILL.mdSave it as .claude/skills/bio-clip-seq-clip-peak-calling/SKILL.md (or your agent's skills folder). This skill also uses 2 other files; get the full folder from GitHub.
name
bio-clip-seq-clip-peak-calling
description
Call protein-RNA binding sites from CLIP-seq BAM with CLIPper, PureCLIP, Skipper, Piranha, omniCLIP, CTK, CLAM, or Paraclu. Use when choosing between coverage-based, HMM-based, beta-binomial window-based, and crosslink-site-based peak callers; applying ENCODE eCLIP thresholds (log2 IP/SMInput >= 3, -log10 p >= 3); deciding when SMInput is mandatory; or reconciling peak-set discordance between callers for the same RBP.
tool_type
cli
primary_tool
CLIPper

Version Compatibility

Reference examples tested with: CLIPper 2.0+, PureCLIP 1.3.1+, Piranha 1.2.1+, omniCLIP 0.2.0+, CTK 1.1.4+, CLAM 1.2+, Paraclu 9+, Skipper (commit 2023.05+), MACS3 3.0+, bedtools 2.31+, samtools 1.19+, idr 2.0.4+.

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

  • Python: pip show <package> then help(module.function) to check signatures
  • CLI: <tool> --version then <tool> --help to confirm flags

If code throws unexpected errors, introspect the installed binary and adapt the example to match the actual CLI rather than retrying. PureCLIP 2.x changed several flag names; Skipper is distributed as a Snakemake workflow with frequently-evolving paths.

CLIP-seq Peak Calling

"Call protein-RNA binding sites from my deduplicated CLIP BAM" -> Identify regions where read pile-up (and, for iCLIP/eCLIP, single-nucleotide truncations) exceed background from a size-matched input (SMInput) control. The choice of peak caller depends on (a) the CLIP variant (HITS-CLIP, iCLIP, eCLIP, PAR-CLIP), (b) whether SMInput is available, (c) the RBP binding mode (narrow motif vs broad zones vs repeat-binding), and (d) the goal (publication-comparable ENCODE peaks vs single-nucleotide crosslink sites vs high-recall site lists).

  • CLI (ENCODE eCLIP canonical): clipper -b dedup.bam -s hg38 -o peaks.bed --save-pickle --FDR-alpha 0.05 --superlocal then eclip-norm peaks.bed -i sminput.bam for log2 fold-change against SMInput (--FDR-alpha is the CLIPper flag for the FDR cutoff; older docs sometimes shorten to --FDR)
  • CLI (single-nucleotide crosslink sites, iCLIP/eCLIP): pureclip -i dedup.bam -bai dedup.bam.bai -g genome.fa -ibam sminput.bam -ibai sminput.bam.bai -o sites.bed -or regions.bed -nt 8 -dm 8
  • CLI (high-recall, beta-binomial windowed; needs SMInput): Skipper Snakemake workflow with config matching cell type and SMInput BAM
  • CLI (no SMInput, no truncation): Piranha -b 50 -p 0.01 -d ZeroTruncatedNegativeBinomial -s -o peaks.bed dedup.bam (Piranha takes the BAM as a positional argument, not via -s)
  • CLI (CIMS/CITS single-nt from CTK): tag2cluster.pl dedup.bed cluster.bed --multi-tag-method coverage; then bedExtractCIMS.pl cluster.bed cims.bed
  • CLI (multi-mapper rescue for repeat-binding RBPs): CLAM peakcaller -i unique.bam multimap.bam -o clam_out_dir/ --gtf gencode.gtf (CLAM peakcaller writes peaks into an OUTPUT DIRECTORY, not a single file)

The ENCODE eCLIP gold standard for "stringent" peaks is: log2(IP / SMInput) >= 3 AND -log10(p-value) >= 3. "Lenient" peaks use log2 >= 1 AND -log10 >= 2. Both filters operate on CLIPper peak output normalized against SMInput. Without SMInput, neither stringency level can be reproduced - the algorithm has no background term.

Algorithmic Taxonomy

CallerModelResolutionSMInput requiredStrengthFails when
CLIPper (Yeo)Poisson with 500 bp local lambda, cubic-spline interpolationPeak (10-500 nt)Not for calling; required for ENCODE normalizationENCODE eCLIP standard; reproducible against published ENCODE peak setsAssumes most reads not from binding; fails when IP signal dominates a gene; sensitive to highly expressed transcripts
PureCLIP (Krakau 2017)Non-homogeneous HMM jointly modeling enrichment + truncation + sequence biasesSingle-nucleotide CL + broad regionOptional via -ibam; recommendedSingle-nt resolution; only caller that explicitly models the iCLIP truncation patternMisses broad binding zones; very focal (low recall on broad-binding RBPs in the Boyle 2023 benchmark)
Skipper (Boyle 2023)GC-stratified beta-binomial, 100 bp feature-respecting windowsWindow (~100 nt)Mandatory210-320% more sites than CLIPper; 8x faster; properly normalizes against inputLoses single-nt resolution; relatively new (2023); fewer published peak sets to compare
Piranha (Smith lab)Zero-truncated negative binomial regression with optional covariatesBin (50-200 nt)Optional; pass as covariateMature, widely cited, handles count overdispersionBiased toward high-expression transcripts; convergence fails with large covariate values (use -l log-space)
omniCLIP (Drewe-Boss 2018)Non-homogeneous HMM with Dirichlet-multinomial of variantsPeakRequiredModels replicate variance; integrates background; can call peaks on any CLIP variantSlow on deep libraries; blind to mitochondrial transcripts (misses chrM windows for FASTKD2)
CTK CIMS/CITS (Shah 2017)Empirical FDR on crosslink-induced mutations or truncationsSingle-nucleotideNo (uses background mutation rate from non-bound transcripts)Single-nt resolution; works on HITS-CLIP deletions, PAR-CLIP T->C, iCLIP truncationsEmpirical FDR less principled than HMM/beta-binomial; perl-based pipeline harder to integrate
CLAM peakcaller (Zhang & Xing 2017)EM-assigned multi-mapper count + Piranha-like negative binomialPeakOptionalOnly solution for repeat-binding RBPs; 10-30% additional sites in repeatsInherits Piranha limitations on coverage-based stats; slower than Piranha
Paraclu (Frith)Parametric clustering with min-density and max-density thresholdsVariableNoSimple, parameter-tunable, works on bedgraphHeuristic; no statistical significance; cluster boundaries sensitive to thresholds
PIPE-CLIPOnline CLIP pipeline with custom peak callerPeakOptionalWeb interface; integrated end-to-endSlow on cloud; less customizable; community has moved on
CLIPick (Park 2018)Expression-deconvolved peak callerPeakNo (RNA-seq used instead)Models RNA-seq abundance as backgroundRNA-seq cannot capture nonspecific binding; less popular post-Skipper
Flipper (Flanagan 2026)Negative-binomial differential test downstream of SkipperWindowYesCompanion differential tool to SkipperOnly meaningful in differential context; see clip-seq/differential-clip
MACS3 callpeakLocal PoissonPeakOptional (treats SMInput as ChIP-seq input)Familiar, fastNot designed for CLIP; misses truncation signal; produces wider-than-typical peaks

Methodology evolves; verify the current ENCODE eCLIP standard operating procedure (encodeproject.org/eclip) and the nf-core/clipseq pipeline configuration before locking on a single caller. The 2023 Skipper benchmark (Boyle Cell Genomics) is the most recent comprehensive comparison and is the rationale for many recent eCLIP reanalyses.

Three fundamentally different statistical frameworks:

Coverage-based (CLIPper, Piranha, MACS3, Paraclu): Tally reads in a window; significance from local Poisson or negative binomial. Produces multi-nt peaks. Best when binding zones are broader than the read footprint (PUM2 3' UTR, HuR ARE elements).

Crosslink-site-based (PureCLIP, CTK CIMS/CITS, PARalyzer): Identify single nucleotides enriched in truncations (iCLIP/eCLIP) or specific mutations (PAR-CLIP T->C, HITS-CLIP deletions). Produces single-nt sites that can be aggregated into footprints. Best when single-nt resolution is essential (motif registration with mCross; allele-specific binding).

Window-based (Skipper): Tile transcriptome a priori into fixed-size feature-respecting windows; test each window's IP/IN ratio with beta-binomial. Produces window-level calls. Best when SMInput is available and the goal is high-recall, comparable-across-RBPs site sets.

GoalRecommended callerWhy
Reproduce ENCODE published peaksCLIPper + IP/SMInput normalizationThe Yeo lab pipeline is the canonical reference
Maximum sensitivity, modern statistics, SMInput availableSkipper210-320% more sites; explicit input normalization
Single-nucleotide crosslink-site map (motif registration, ASB)PureCLIP (HMM) or CTK CITS (empirical)True single-nt resolution
Repeat-binding RBP (Alu, LINE, LTR)STAR multi-mapper + CLAM peakcallerOnly solution that uses multi-mappers
No SMInput controlPiranha or PureCLIP with no -ibamBoth work without input but lose specificity
PAR-CLIP T->C signaturePARalyzer or CTK CIMS (-substitution)Designed for the T->C signal
HITS-CLIP deletion signatureCTK CIMS (-deletion)Designed for the deletion signal
Custom statistical model neededomniCLIPMost flexible HMM among the options
Online interactive analysisGalaxy CLIP-Explorer or PIPE-CLIPWeb interface

ENCODE eCLIP Stringency Thresholds

The Van Nostrand et al. ENCODE eCLIP standards define two stringency levels for CLIPper peaks normalized against SMInput:

Stringencylog2(IP / SMInput)-log10(p-value)Use case
Stringent (publication)>= 3>= 3High-confidence binding sites; differential analysis; motif discovery
Lenient (discovery)>= 1>= 2Catalogue of all enriched windows; sensitive analyses

Both thresholds are applied to the IDR-passing reproducible peak set. ENCODE requires:

  • = 2 biological replicates

  • = 1M unique fragments per replicate (or saturated peak detection)

  • IDR rescue ratio and self-consistency ratio both < 2
  • Narrow-binding RBPs: FRiP >= 0.005 (atypical-binding RBPs exempt)
bash
# CLIPper -> SMInput normalization -> ENCODE thresholds
clipper -b dedup.bam -s hg38 -o peaks.bed --save-pickle --FDR-alpha 0.05 --superlocal

# Normalize against SMInput; eclip-norm is the Yeo lab tool
python overlap_peakfi_with_bam_PE.py peaks.bed dedup.bam sminput.bam dedup.bam.readnum.txt sminput.bam.readnum.txt peaks.normed.bed
python compress_l2foldenrpeakfi_for_replicate_overlapping_bedformat.py peaks.normed.bed peaks.compressed.bed

# Stringent filter: log2 FC >= 3, -log10 p >= 3
awk 'BEGIN{FS=OFS="\t"} $4 >= 3 && $5 >= 3' peaks.compressed.bed > peaks.stringent.bed

# Lenient
awk 'BEGIN{FS=OFS="\t"} $4 >= 1 && $5 >= 2' peaks.compressed.bed > peaks.lenient.bed

The Yeo lab scripts (overlap_peakfi_with_bam_PE.py, compress_l2foldenrpeakfi_for_replicate_overlapping_bedformat.py) live in the eclip-pipeline repository; they implement the exact log2 fold-change computation used for ENCODE data downloads.

Per-Caller Failure Modes

CLIPper -- High-expression transcript bias

Trigger: RBP that binds rare transcripts (snoRNAs, tRNAs, mitochondrial mRNAs) such as TROVE2 (Y RNA), NSUN2 (tRNA), or FASTKD2 (chrM).

Mechanism: CLIPper's Poisson local-lambda model assumes only a minority of reads come from binding. For rare-transcript binders, the IP reads ARE the majority signal on that transcript; the model treats them as background.

Symptom: Per-transcript peak count plummets compared to qualitatively-visible IP signal; chrM peaks called by Skipper but missed by CLIPper for FASTKD2.

Fix: Use Skipper for rare-transcript binders (beta-binomial against SMInput respects the actual IP/IN ratio independently of local lambda). Or pre-restrict CLIPper to the target transcript with --gene custom.bed.

CLIPper -- Requires SMInput downstream

Trigger: Submitting CLIPper output as "peaks" without IP/SMInput log2 normalization.

Mechanism: CLIPper's own p-value is uncorrected for SMInput background. ENCODE peak BED files distributed on the portal are CLIPper + SMInput log2 normalization combined.

Symptom: Peak count from the analysis is 5-10x higher than ENCODE values for the same RBP; the peak set includes obvious housekeeping-gene noise.

Fix: Always normalize CLIPper output against SMInput. The Yeo lab scripts (overlap_peakfi_with_bam_PE.py + compress_l2foldenrpeakfi_for_replicate_overlapping_bedformat.py) produce the canonical ENCODE-style peak.

PureCLIP -- Too focal; misses broad binding zones

Trigger: RBP with broad binding mode (PUM2 in 3' UTR clusters; SR proteins across exonic enhancer regions); using PureCLIP and disappointed.

Mechanism: PureCLIP's HMM emits single-nt crosslink-site state at high stringency. In the Boyle 2023 Skipper benchmark, PureCLIP was highly focal with low recall on broad-binding RBPs (few true-positive windows).

Symptom: Site count 100x lower than expected; sites cluster within known binding regions but vast majority of region is "background" in PureCLIP output.

Fix: Use PureCLIP for single-nt CL maps (motif registration, ASB) but pair with CLIPper or Skipper for the broader binding-site list. PureCLIP's -or regions file gives broader output but is still focal compared to CLIPper.

Piranha -- Top-expression-decile bias

Trigger: Highly expressed transcript (GAPDH, ACTB, rRNA-flanking) appears in most-significant Piranha peaks even when RBP biology is elsewhere.

Mechanism: ZTNB regression weights peak significance by absolute count, not relative enrichment. Genes with 10x baseline expression dominate the top of the peak list.

Symptom: Top-100 Piranha peaks include housekeeping genes; motif enrichment in top peaks is weak; functional GO term analysis of peak-bearing genes returns generic "cellular metabolism."

Fix: Use Piranha with SMInput as a covariate (-c sminput_counts.bed -l) so the regression accounts for input pile-up. Or switch to Skipper for principled input normalization.

Piranha -- Convergence failure with covariates

Trigger: -c rna_seq.bed for expression normalization; large per-bin RNA-seq counts (> 10000).

Mechanism: ZTNB optimization fails on extreme covariate values; the iterative algorithm diverges.

Symptom: "Maximum iterations reached" or "Singularity in regression" error; or output BED file empty.

Fix: Pass -l to convert covariates to log-space; or pre-filter covariate BED to remove top-1% outlier bins; or switch to Skipper which handles input normalization internally.

omniCLIP -- Mitochondrial transcript blind spot

Trigger: Mitochondrial RBP (FASTKD2, LRPPRC) submitted to omniCLIP.

Mechanism: omniCLIP's HMM is trained on autosomal/X transcripts; chrM has different background statistics that the model treats as outlier (or excludes if blacklisted).

Symptom: chrM peaks return 0; FASTKD2 peak file has no peaks at all.

Fix: Use Skipper for chrM-binding RBPs (GC-stratified beta-binomial is per-bin and indifferent to chromosome). Or call peaks on chrM separately with PureCLIP.

CTK CIMS -- HITS-CLIP only; iCLIP/eCLIP misuse

Trigger: CTK CIMS (-mutation flag) applied to iCLIP/eCLIP data.

Mechanism: iCLIP/eCLIP use truncation (RT stops at adduct), not mutations. CIMS expects deletions/substitutions inside the read; CITS is the truncation-based companion.

Symptom: CIMS returns very few sites (mutation rate of CL is ~3-7% for HITS-CLIP, but only ~1-2% for iCLIP since most reads truncate before reaching the adduct).

Fix: For iCLIP/eCLIP, use CTK CITS (tag2cluster.pl ... -cs5 5 truncation-mode). For HITS-CLIP and PAR-CLIP, CIMS is correct (HITS deletions, PAR T->C).

CLAM peakcaller -- Multi-mapper BAM absent

Trigger: Ran STAR with --outFilterMultimapNmax 1 then tried CLAM; CLAM fails or returns identical output to Piranha.

Mechanism: CLAM's EM rescue requires the multi-mapper BAM from STAR (--outFilterMultimapNmax 100 --outSAMmultNmax -1). Without it, CLAM falls back to unique-only Piranha-style peak calling.

Symptom: CLAM output looks identical to Piranha; repeat peaks not rescued.

Fix: Re-align with multi-mapper-aware STAR parameters (see clip-seq/clip-alignment). Verify the multi-mapper BAM has alignments at non-unique positions before running CLAM.

Show full SKILL.md (1,200 more words)Show less
MACS3 callpeak -- Wide peaks miss footprint

Trigger: MACS3 used because the user is familiar from ATAC/ChIP work.

Mechanism: MACS3 model is for DNA-protein binding at ~100-500 nt scale; CLIP-seq RBP footprints are 8-30 nt. MACS3 wide peaks (300+ nt) merge multiple distinct binding sites.

Symptom: MACS3 peak count is much lower than CLIPper/Skipper; mean peak width >> 100 nt; multiple known motif instances inside one MACS peak.

Fix: Use CLIP-specific callers. If MACS3 is forced (institutional pipeline), pass --nomodel --shift -1 --extsize 50 for narrower peaks and accept the limitation.

IDR for CLIP-seq

IDR (Li 2011) measures reproducibility of peak rankings across biological replicates. ENCODE eCLIP convention is per-rep + pooled + pseudoreplicates, identical to the ChIP-seq IDR pattern. The CLIP-specific consideration: rank by signalValue (column 7) NOT by score (column 5), because CLIPper's score is sparse and tied across many peaks.

bash
# Per-replicate CLIPper + SMInput normalization yields .compressed.bed files
sort -k7,7nr rep1_peaks.compressed.bed > rep1.sorted
sort -k7,7nr rep2_peaks.compressed.bed > rep2.sorted

idr --samples rep1.sorted rep2.sorted \
    --input-file-type bed --rank 7 \
    --output-file idr.out --idr-threshold 0.05 \
    --plot --log-output-file idr.log

ENCODE IDR rules for eCLIP:

  • Nt (true replicates) and Nself (pseudoreplicates): max(Nt, Nself) / min(Nt, Nself) <= 2 -> pass
  • Both ratios > 2 -> library rejected
  • IDR threshold 0.05 for true reps; 0.10 for pseudoreplicates

Decision Tree by Scenario

ScenarioCaller + parametersWhy
Standard eCLIP with SMInput, ENCODE-comparableCLIPper + SMInput log2 norm + IDRReproducible against ENCODE peak files
Standard eCLIP with SMInput, maximum sensitivitySkipper Snakemake workflow210-320% more sites, beta-binomial input-norm
iCLIP/iCLIP2, want single-nt CL mapPureCLIP + SMInput (or empty bam if no SMI)HMM jointly models enrichment + truncation
HITS-CLIP, want CIMS deletionsCTK parseAlignment.pl + tag2cluster.pl + bedExtractCIMS.plEmpirical FDR on deletion-induced mutations
PAR-CLIP, T->C signalPARalyzer or CTK CIMS -substitution T CDesigned for the T->C signature
Repeat-binding RBP (MATR3, LINE-1)CLAM peakcaller on multi-mapper BAMOnly solution that recovers repeat peaks
No SMInput, mostly hopelessPiranha -d ZeroTruncatedNegativeBinomial or PureCLIP w/o -ibamLose ENCODE comparability but get a peak set
Mitochondrial RBP (FASTKD2)Skipper (window-based, chrM-friendly)omniCLIP/CLIPper miss chrM
Highly multiplexed (SPIDR)Custom Snakemake; no single-tool solutionEach barcode's reads are deep enough for CLIPper
Long-read CLIP (dirCLIP)Custom analysis from BAM; long-read tools not yet matureIsoform-resolved binding-site calls
Need maximum precision for motif analysisPureCLIP (single-nt) + mCross downstreammCross requires registered CL positions
Replicates with unequal library complexity (>2x diff in unique fragments)Skipper (more robust to depth imbalance) OR samtools view -s down-sample to common depth then CLIPper + IDRSkipper's GC-stratified beta-binomial handles per-sample depth; CLIPper without down-sampling lets the deeper replicate dominate joint analysis

Reconciliation: When Callers Disagree

PatternLikely causeAction
Skipper >> CLIPper site countSkipper better recovers low-abundance and rare-transcript bindersTrust Skipper for rare transcripts; trust CLIPper for ENCODE-comparable counts
PureCLIP << CLIPperPureCLIP is single-nt focal; CLIPper is broad peakBoth correct; report at the resolution the downstream analysis needs
Piranha top peaks dominated by housekeepingNo input normalizationAdd SMInput as -c covariate or switch to Skipper
CLAM > Piranha by 10-30%CLAM rescued multi-mappers in repeatsTrust CLAM if RBP biologically binds repeats
omniCLIP wider peaks than CLIPperHMM smoothes binding state across nearby positionsBoth correct; choose by downstream analysis needs
Per-rep CLIPper calls peak; pooled does notReplicates inconsistent; one rep dominatesInspect with IGV; trust IDR-passing peaks only
MACS3 < CLIPper peak countMACS3 wide peaks merge multiple CLIP sitesUse CLIP-specific caller
FASTKD2 chrM peaks: Skipper finds; CLIPper / omniCLIP find noneCoverage-based callers blind to chrM lambdaTrust Skipper for organelle-binding RBPs
chimeric eCLIP peaks for snoRNA: standard tools find fewsnoRNA-targeting eCLIP needs custom processingUse VanNostrandLab/snoRNA-chimeric pipeline

Operational rule for high-confidence reporting: Require a peak to pass (a) IDR <= 0.05 on true replicates, (b) log2(IP/SMInput) >= 3 AND -log10 p >= 3 (ENCODE stringent), (c) overlap with at least one independent caller within 100 nt. For motif analysis, additionally require PureCLIP single-nt sites within the peak. For ASB, require WASP-filtered alignment + PureCLIP CL sites overlapping heterozygous SNPs.

Strand-Specific Peak Calling

CLIP libraries are strand-specific by design. Most callers handle strands correctly when the BAM is stranded (read flags 99/147/83/163 for paired). If a caller bug or unstranded library forces manual split:

bash
# Plus strand reads (F flag NOT 0x10)
samtools view -h -b -F 16 dedup.bam > plus.bam
samtools index plus.bam
# Minus strand reads (F flag 0x10)
samtools view -h -b -f 16 dedup.bam > minus.bam
samtools index minus.bam

# Call peaks on each strand independently, then merge
clipper -b plus.bam -s hg38 -o peaks_plus.bed
clipper -b minus.bam -s hg38 -o peaks_minus.bed
cat peaks_plus.bed peaks_minus.bed | sort -k1,1 -k2,2n > peaks_stranded.bed

For paired-end CLIP, mate orientation determines strand: RF (R1 reverse) means R2 5' is the truncation = CL site -1 on plus-strand transcripts. ENCODE eCLIP convention: read 2 of pair is the truncation-bearing read.

Multi-Mapper Rescue with CLAM (Repeat Binders)

bash
# Assume STAR was run with --outFilterMultimapNmax 100 --outSAMmultNmax -1
samtools sort -o multimap.bam aligned_multimap.bam
samtools index multimap.bam

# Split unique vs multi
CLAM preprocessor -i multimap.bam -o clam_out/ --read-tagger-method median

# EM-based reassignment
CLAM realigner -i clam_out/unique.sorted.bam -o clam_out/ --winsize 50 --max-tags 0

# Peak calling with reassigned multi-mappers
CLAM peakcaller -i clam_out/unique.sorted.bam clam_out/realigned.sorted.bam \
    -o clam_peaks.bed -p 8 --gtf gencode.v38.annotation.gtf

CLAM rescues 10-30% additional peaks in repeat-rich regions. The trade-off: peak coordinates in repeat instances are probabilistic (single best from EM), so motif analysis on CLAM repeat peaks requires careful interpretation.

Quality Metrics for Peak Sets

python
import pandas as pd

def peak_qc(peaks_bed):
    peaks = pd.read_csv(peaks_bed, sep='\t', header=None,
                        names=['chrom','start','end','name','score','strand'])
    peaks['width'] = peaks['end'] - peaks['start']
    return {
        'n_peaks': len(peaks),
        'mean_width': peaks['width'].mean(),
        'median_width': peaks['width'].median(),
        'width_5p_95p': (peaks['width'].quantile(0.05), peaks['width'].quantile(0.95)),
        'chroms_with_peaks': peaks['chrom'].nunique(),
        'peaks_chrM': (peaks['chrom'] == 'chrM').sum()
    }
MetricExpectedInterpretation
n_peaks (CLIPper stringent)5k - 100k<5k = under-IP or stringency too high; >>100k = noisy library
Mean peak width (CLIPper)40-200 ntWider = caller over-merging; narrower = under-coverage
Peak width 5-95% range20-500 ntTight range = consistent peaks; wide = mixed sharp + broad
FRiP (fraction reads in peaks)>= 0.005ENCODE narrow-binding RBP minimum; many RBPs higher
chrM peaks0 unless mt-RBPFASTKD2, LRPPRC expected to have chrM enrichment
TPM-rank distributionSpread across decilesConcentrated in top decile = caller has expression bias (Piranha symptom)

Common Errors

Error / symptomCauseSolution
CLIPper "no peaks found"BAM not sorted/indexed; gene annotation missingsamtools sort && index; verify -s hg38 (or --gene custom.bed)
CLIPper out-of-memory on 50M BAM--save-pickle keeps intermediates in RAMRemove --save-pickle; or use machine with > 64 GB
PureCLIP slow (>24h)-iv interval file missingRestrict to one chromosome with -iv chr1 for testing; provide GTF
Piranha returns no peaksZTNB convergence failed silentlyAdd -l; or reduce -b bin size; or switch to Skipper
omniCLIP segmentation faultReplicate BAMs differ in chromosome orderRe-sort all BAMs with identical reference dictionary
CTK CITS finds nothing on PAR-CLIPUsed CITS (truncation) for substitution dataUse CIMS -substitution T C for PAR-CLIP
Multi-mapper rescue returns 0 extra peaksSTAR was run unique-only; no multi-mapper BAMRe-align with --outFilterMultimapNmax 100 --outSAMmultNmax -1
ENCODE stringent peak count = 0Forgot SMInput normalization stepRun Yeo lab overlap_peakfi_with_bam_PE.py first; thresholds apply to normalized peaks
Strand information lostsamtools view -F 16 filter applied to merged BAMStrand is encoded in BAM flags; do not pre-split
IDR returns no reproducible peaksWrong ranking columnSort by signalValue / log2FC, not score; for narrowPeak format use --rank p.value

References

  • Van Nostrand EL et al 2016 Nat Methods 13:508 (eCLIP, SMInput, ENCODE pipeline)
  • Lovci MT et al 2013 Nat Struct Mol Biol 20:1434 (CLIPper algorithm)
  • Krakau S et al 2017 Genome Biol 18:240 (PureCLIP HMM)
  • Boyle EA et al 2023 Cell Genomics 3:100317 (Skipper, GC-stratified beta-binomial)
  • Uren PJ et al 2012 Bioinformatics 28:3013 (Piranha, ZTNB)
  • Drewe-Boss P et al 2018 Genome Biol 19:183 (omniCLIP)
  • Shah A et al 2017 Bioinformatics 33:566 (CTK / CIMS / CITS)
  • Zhang Z & Xing Y 2017 Nucleic Acids Res 45:9260 (CLAM multi-mapper)
  • Frith MC et al 2008 Genome Res 18:1-12 (paraclu)
  • Li Q et al 2011 Ann Appl Stat 5:1752 (IDR framework)
  • Van Nostrand EL et al 2020 Nature 583:711 (A large-scale binding and functional map of human RNA-binding proteins)
  • ENCODE eCLIP Standards (encodeproject.org/eclip) - canonical thresholds
  • clip-seq/clip-preprocessing - Upstream preprocessing producing dedup BAM
  • clip-seq/clip-alignment - Upstream alignment with crosslink-preserving parameters
  • clip-seq/clip-qc - FRiP, library complexity, IDR before/after peak calling
  • clip-seq/crosslink-site-detection - PureCLIP / CTK CITS / PARalyzer for single-nt CL sites
  • clip-seq/differential-clip - DEWSeq / Flipper for cross-condition differential binding
  • clip-seq/binding-site-annotation - Annotate called peaks to 5' UTR / CDS / 3' UTR / intron
  • clip-seq/clip-motif-analysis - Motif discovery on called peaks
  • clip-seq/ago-clip-mirna-targets - Chimeric eCLIP peak calling
  • clip-seq/m6a-clip - miCLIP2-specific peak calling
  • chip-seq/peak-calling - DNA-protein peak calling for comparison

© 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 2 other files in clip-seq/clip-peak-calling of GPTomics/bioSkills.

  • SKILL.md
  • examples/call_peaks.sh
  • usage-guide.md

Open the folder on GitHubat commit d91ed3d

Used in 2 other repositories

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

Compare with similar skills

Bio Clip Seq Clip Peak Calling 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 Clip Seq Clip Peak Calling compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Bio Clip Seq Clip Peak Calling this skillGPTomics/bioSkills1.2k2 repos~6.9kAutomated safety check: PassMIT
Alphagenome Single Variant Analysisgoogle-deepmind/science-skills3.2k2 repos~3kAutomated safety check: NotesApache-2.0
13C Metabolic Flux AnalysisK-Dense-AI/scientific-agent-skills48k1 repos~3.2kAutomated safety check: PassMIT
Clinvar Databasegoogle-deepmind/science-skills3.2k2 repos~3.9kAutomated safety check: NotesApache-2.0
Metabolic Study Planneraiming-lab/AutoResearchClaw15k—~1.9kAutomated safety check: PassMIT
Dbsnp Databasegoogle-deepmind/science-skills3.2k2 repos~3.4kAutomated safety check: NotesApache-2.0

Similar skills

  • Alphagenome Single Variant Analysis

    google-deepmind/science-skills

    Analyzes genetic variant effects on gene expression (RNA-seq), chromatin accessibility (DNASE), histone marks (ChIP), and transcription factors using the AlphaGenome API.

    3.2k GitHub starsUsed in 2 repos~3k tokens
    Research & ScienceAuto-check: notes
  • 13C Metabolic Flux Analysis

    K-Dense-AI/scientific-agent-skills

    Estimates reaction fluxes inside cells from steady-state carbon-13 labeling data with a bundled mfapy-based solver, and reports which fluxes the data pin down.

    48k GitHub starsUsed in 1 repo~3.2k tokens
    Research & ScienceAuto-check passed
  • Clinvar Database

    google-deepmind/science-skills

    A skill your agent uses when needing clinical significance, pathogenicity classifications (e.g., Pathogenic, Benign, VUS), clinical evidence rationales, or finding "hard positive" benchmark controls…

    3.2k GitHub starsUsed in 2 repos~3.9k tokens
    Research & ScienceAuto-check: notes
  • Metabolic Study Planner

    aiming-lab/AutoResearchClaw

    Turns a broad metabolic modelling topic into a concrete, paper-shaped plan with organism, model, perturbations, metrics and figures before any FBA code is written.

    15k GitHub stars~1.9k tokensUpdated 1 mo ago
    Research & ScienceAuto-check passed
  • Dbsnp Database

    google-deepmind/science-skills

    A skill your agent uses when you want to look up, map, and search for short genetic variants (SNPs, indels) in NCBI's dbSNP database.

    3.2k GitHub starsUsed in 2 repos~3.4k tokens
    Research & ScienceAuto-check: notes
  • MFA Pipeline Orchestrator

    aiming-lab/AutoResearchClaw

    Runs a metabolic flux analysis from model loading to phenotype prediction and figures by handing work to four sub-agents in sequence.

    15k GitHub stars~923 tokensUpdated 1 mo ago
    Research & ScienceAuto-check passed

More from GPTomics/bioSkills

All 559 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
  • Filters BAM alignments by FLAG bits, mapping quality and regions with samtools view or pysam, with recipes for common keep and drop cases.

    1.2k GitHub starsUsed in 2 repos~3.6k 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

Questions about Bio Clip Seq Clip Peak Calling

What does Bio Clip Seq Clip Peak Calling do?

Call protein-RNA binding sites from CLIP-seq BAM with CLIPper, PureCLIP, Skipper, Piranha, omniCLIP, CTK, CLAM, or Paraclu. Bio Clip Seq Clip Peak Calling is an agent skill from GPTomics/bioSkills. Call protein-RNA binding sites from CLIP-seq BAM with CLIPper, PureCLIP, Skipper, Piranha, omniCLIP, CTK, CLAM, or Paraclu.

When should I use Bio Clip Seq Clip Peak Calling?

Bio Clip Seq Clip Peak Calling fits situations like: choosing between coverage-based; beta-binomial window-based; crosslink-site-based peak callers; applying ENCODE eCLIP thresholds (log2 IP/SMInput = 3.

How do I install Bio Clip Seq Clip Peak Calling in Claude Code?

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

How do I install Bio Clip Seq Clip Peak Calling in Codex?

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

Can I use Bio Clip Seq Clip Peak Calling 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-clip-seq-clip-peak-calling -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-clip-seq-clip-peak-calling, .gemini/skills/bio-clip-seq-clip-peak-calling, .github/skills/bio-clip-seq-clip-peak-calling and .opencode/skills/bio-clip-seq-clip-peak-calling in your project.

What does Bio Clip Seq Clip Peak Calling need to run?

Going by SKILL.md and its folder, Bio Clip Seq Clip Peak Calling needs a shell for the scripts in its folder and the command-line tools its instructions call (python and pip). Our summary lists: Python 3; A Bash shell.

Does Bio Clip Seq Clip Peak Calling access the network?

SKILL.md contains no URLs. Its commands use pip, which can reach the network depending on how they are called. This is read from the text; nothing was executed.

Is Bio Clip Seq Clip Peak Calling 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 Clip Seq Clip Peak Calling use?

Bio Clip Seq Clip Peak Calling 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 Clip Seq Clip Peak Calling use?

About 6.9k tokens (SKILL.md is roughly 28k 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 Clip Seq Clip Peak Calling?

Skills that share tags, products or a category with Bio Clip Seq Clip Peak Calling: Alphagenome Single Variant Analysis (google-deepmind/science-skills, 3.2k stars), 13C Metabolic Flux Analysis (K-Dense-AI/scientific-agent-skills, 48k stars), Clinvar Database (google-deepmind/science-skills, 3.2k stars) and Metabolic Study Planner (aiming-lab/AutoResearchClaw, 15k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Bio Clip Seq Clip Peak Calling?

GPTomics (a GitHub organization) maintains it in GPTomics/bioSkills, which has 1,218 GitHub stars. The repository holds 559 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.