本文へ移動
cccskills
無料GitHub で公開

bio-clip-seq-clip-alignment

Align preprocessed CLIP-seq reads (eCLIP, iCLIP, iCLIP2, PAR-CLIP) to genome with STAR or bowtie2 using crosslink-preserving parameters, choosing between unique-mapper-only and multi-mapper-aware alignment for repeat-binding RBPs, deciding STAR vs HISAT2 memory trade-offs, and applying ENCODE-compatible filters. Use when turning preprocessed CLIP FASTQ into a deduplicated, MAPQ-filtered BAM ready for peak calling or crosslink-site detection.

インストール方法を見る

含まれるファイル(3)

  • SKILL.md19.5 KB
  • examples/align_clip.sh3.2 KB
  • usage-guide.md4.3 KB

SKILL.md(原文)

インストールする前に、エージェントに与えられる指示の中身を確認できます。

Version Compatibility

Reference examples tested with: STAR 2.7.11b+, bowtie2 2.5.3+, HISAT2 2.2.1+, samtools 1.19+, CLAM 1.2+, umi_tools 1.1.5+.

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

  • CLI: <tool> --version then <tool> --help to confirm flags

If code throws unexpected errors, introspect the installed binary (<tool> -h) and adapt the example to match the actual CLI rather than retrying.

CLIP-seq Alignment

"Align preprocessed CLIP reads to genome with crosslink-preserving parameters" -> Map UMI-extracted, adapter-trimmed reads to the genome (NOT transcriptome) with end-to-end alignment, strict mismatch ceiling, and unique-mapper-only filtering by default. The 5' end of the read (R2 5' in paired-end eCLIP; R1 5' in iCLIP) carries the reverse-transcriptase truncation = crosslink site -1; any soft-clipping or 5' trimming during alignment destroys nucleotide resolution.

  • CLI (eCLIP / iCLIP / iCLIP2, ENCODE pattern): STAR --runMode alignReads --genomeDir STAR_index --readFilesIn R1.trim.fq.gz R2.trim.fq.gz --readFilesCommand zcat --outFilterType BySJout --outFilterMultimapNmax 1 --alignEndsType EndToEnd --outFilterMismatchNoverReadLmax 0.04 --outSAMtype BAM SortedByCoordinate --outSAMattributes All --outFileNamePrefix sample_
  • CLI (PAR-CLIP, mismatch ceiling raised for T->C signal): same as above but --outFilterMismatchNoverReadLmax 0.07
  • CLI (low memory, no splicing): bowtie2 -x genome_index -U R1.trim.fq.gz --very-sensitive -p 8 | samtools view -bS - | samtools sort -o aligned.bam
  • CLI (repeat-binding RBP, multi-mapper rescue): STAR ... --outFilterMultimapNmax 100 --outSAMmultNmax -1 then process with CLAM (see repeat-element section)

End-to-end alignment is non-negotiable. --alignEndsType Local (STAR default for some pipelines) soft-clips low-quality 5' bases and discards exactly the truncation signal. Mismatch ceiling 0.04 (4% of read length) excludes most sequencing-error reads; 0.07 is the PAR-CLIP override to retain T->C reads.

Algorithmic Taxonomy

AlignerSplice-awareMemory (human)CLIP-suitableStrengthFails when
STARYes~30 GB peak (sjdbOverhang 100)Yes (ENCODE eCLIP standard)Splice-aware, fast on deep libraries, excellent multi-mapper logsRAM hungry; small clusters or laptops cannot run human genome index
HISAT2Yes~8 GBYes (good alternative when STAR memory infeasible)Low memory; comparable splice accuracySlightly lower multi-mapper precision; smaller community adoption for CLIP
bowtie2No (no splice)~3 GBLimited (loses intronic and read-through reads at splice junctions)Fast, low memory, matureMisses spliced reads; not suitable for mRNA-binding RBPs (PTBP1, U2AF2)
bwa-mem2No~30 GB indexNot recommendedFast for DNA; no splice supportSame splicing issue as bowtie2; no CLIP-specific advantage
chromapNo~5 GBNot recommended for CLIPVery fast for ATAC/ChIPNo splice support; pre-applies fragment shift inappropriate for CLIP
novoalignYes (splice with -X)~10 GBAcceptableOld standard; some labs still useCommercial; community moved to STAR/HISAT2
Salmon (transcriptome)N/AlowNot suitablePseudo-alignmentDiscards intronic and unannotated reads, both common in CLIP

Methodology evolves; verify the current ENCODE eCLIP pipeline (encodeproject.org/eclip) before locking parameters. The ENCODE eCLIP SOP v2.2 pins STAR 2.5.2b (the earlier v1 SOP used 2.4.0i); modern reanalyses use STAR 2.7.x with the same parameter set.

Critical Choice: Unique-Mapper-Only vs Multi-Mapper Rescue

Two valid alignment strategies depend on the RBP biology:

Strategy A -- Unique-mapper-only (default, ENCODE standard): --outFilterMultimapNmax 1 discards every read that maps to more than one genomic location. Loses 5-15% of reads but produces unambiguous positions for downstream peak calling and crosslink-site detection.

Strategy B -- Multi-mapper rescue (for repeat-binding RBPs): --outFilterMultimapNmax 100 --outSAMmultNmax -1 retains up to 100 alignments per read; downstream EM-based assignment (CLAM, Xinglab) probabilistically allocates them. Required for RBPs that bind Alu, LINE-1, LTR, or other repetitive elements (e.g., MATR3, ILF3, FUS at LINE-1, HNRNPK at SINEs, PUM2 in some repeat contexts).

RBP classStrategyWhy
Splicing factors (PTBP1, U2AF2, RBFOX, SRSF1)A (unique)Bind defined intronic/exonic motifs, not repeats
3' UTR stability (HuR, PUM2, AUF1)A (unique)Binding sites are usually in unique 3' UTR sequence
Ribosomal proteins (RPS19, RPL35A)A (unique)Bind mRNA bodies and snoRNAs in unique sequence
Translation initiation (EIF3J, EIF2S2)A (unique)Bind 5' UTRs and snoRNAs
Repeat / TE binders (MATR3, ZFP36 isoforms, HNRNPK, LINE-1 ORFs)B (multi-mapper)Genuine biology is in repeat regions
Y-RNA / 7SK / vault RNAs (TROVE2, LARP7)A (unique) but with --outFilterMultimapNmax 50 for the ncRNA itselfThese small RNAs have a few unique copies; pure unique discards them
Mitochondrial RBPs (FASTKD2, LRPPRC, TFAM)A (unique) with chrM retainedchrM has unique sequence but must not be excluded by blacklists
Histone mRNA (SLBP)A (unique) but DO NOT pre-filter rRNA index that includes histoneReplication-dependent histone genes are repetitive in some indices

Per-Aligner Failure Modes

STAR -- Local alignment soft-clips the truncation site

Trigger: Pipeline copied from RNA-seq tutorial uses --alignEndsType Local (or omits the flag, letting STAR default).

Mechanism: Local alignment soft-clips up to 12% of the read end if scoring improves. In CLIP, the 5' read end is the truncation = CL site -1 base; if it carries even one mismatched base from RT errors, STAR soft-clips it.

Symptom: Crosslink-site density looks "smoothed"; PureCLIP / CTK CITS detect 5-30% fewer single-nt sites than expected; peak boundaries look fuzzy.

Fix: Always pass --alignEndsType EndToEnd. To confirm: samtools view dedup.bam | awk '{ if ($6 ~ /S/) print }' | wc -l should report < 1% of reads with soft-clip CIGAR operations.

STAR -- Mismatch ceiling discards PAR-CLIP signal

Trigger: PAR-CLIP library aligned with --outFilterMismatchNoverReadLmax 0.04 (the iCLIP/eCLIP default).

Mechanism: PAR-CLIP T->C conversion rate is 20-50% of T positions in crosslinked reads. For a 30 nt read with 8 Ts and 50% conversion, ~4 T->C mismatches occur (13% of read length). The 4% mismatch ceiling drops these reads.

Symptom: 40-70% read loss at alignment for PAR-CLIP; downstream PARalyzer / wavClusteR find few clusters.

Fix: For PAR-CLIP only, set --outFilterMismatchNoverReadLmax 0.07 (7%). Verify post-alignment: samtools view dedup.bam | awk '{ for(i=12;i<=NF;i++) if($i ~ /^MD:/) print $i }' | head should show many T->C-indicating MD tags.

STAR -- Multi-mappers silently discarded when needed

Trigger: Repeat-binding RBP (MATR3, LINE-1 binders) aligned with default --outFilterMultimapNmax 1.

Mechanism: Reads mapping to more than one Alu/LINE/LTR instance are removed; 10-30% of true binding sites are lost.

Symptom: Compared to published RBP literature for repeat binders, the analysis peak count is 3-10x lower; repeat-overlap fraction is < 5% when literature suggests 15-30%.

Fix: Raise --outFilterMultimapNmax to 50-100; emit all alignments with --outSAMmultNmax -1; downstream use CLAM (Xinglab) to probabilistically assign multi-mappers to a single best location via expectation-maximization. Or restrict to a non-repeat analysis and note the limitation.

bowtie2 -- Splice junctions missed silently

Trigger: Used bowtie2 instead of STAR for an mRNA-binding RBP (typical of PTBP1, U2AF2 intronic binding studies); BAM looks normal but introns/exons map poorly.

Mechanism: bowtie2 has no splice model; reads spanning exon-intron junctions soft-clip 5-20 nt or fail to align entirely.

Symptom: Lower read recovery (~70-80% vs STAR ~90-95%); peaks at splice sites under-called; intronic peaks over-represented (reads that would have aligned across an exon now align fully in the intron upstream).

Fix: Use STAR or HISAT2 for any RBP that binds mRNA, pre-mRNA, or splice signals. Reserve bowtie2 for non-coding RNA targets (snoRNA, 7SK, Y RNA) where short reads do not span junctions.

STAR -- Memory exhausted on small machine

Trigger: Human genome index loaded into < 32 GB RAM machine.

Mechanism: STAR's suffix-array index requires ~30 GB RAM for human/mouse. Smaller machines crash or swap.

Symptom: "STAR EXITED" with bus error; or alignment takes > 24h on a single sample.

Fix: Switch to HISAT2 (~8 GB peak); or build a STAR index with --genomeSAsparseD 2 (halves RAM at the cost of ~30% alignment slowdown); or use a public cluster with > 64 GB. Do NOT use bowtie2 as a memory workaround for splice-aware needs.

Read-2 5' end trimmed inadvertently

Trigger: A --clip5pNbases flag carried over from RNA-seq quality trimming; or a fastp --trim_front2 5 step in preprocessing.

Mechanism: Removes the eCLIP truncation base on R2 5'.

Symptom: Crosslink sites called from R2 5' positions cluster artificially at uniform offsets across genome; motif enrichment around crosslink sites collapses.

Fix: Verify the BAM with samtools view dedup.bam | awk '$2 ~ /83|163/ { print $4 }' (R2 5' positions on minus and plus strand) and confirm they map to the EXPECTED truncation sites, not shifted by 5 nt.

ENCODE 4 eCLIP STAR Parameters (Reference)

STAR --runMode alignReads \
    --runThreadN 16 \
    --genomeDir /path/to/STAR_hg38_index \
    --genomeLoad NoSharedMemory \
    --readFilesIn R1.trim.fq.gz R2.trim.fq.gz \
    --readFilesCommand zcat \
    --outFilterType BySJout \
    --outFilterMultimapNmax 1 \
    --alignEndsType EndToEnd \
    --outFilterMismatchNoverReadLmax 0.04 \
    --outSAMtype BAM SortedByCoordinate \
    --outSAMattributes All \
    --outFileNamePrefix sample_ \
    --outFilterScoreMinOverLread 0.66 \
    --outFilterMatchNminOverLread 0.66

The --outFilterScoreMinOverLread 0.66 / --outFilterMatchNminOverLread 0.66 (matched score / matched bases >= 66% of read length) are ENCODE-specific stringency added on top of the mismatch ceiling. These two flags are why ENCODE eCLIP BAMs are smaller than naive STAR output.

Post-Alignment Filtering

# Sort and index
samtools index sample_Aligned.sortedByCoord.out.bam

# MAPQ filter (255 in STAR = unique; bowtie2 uses different scheme)
samtools view -b -q 10 sample_Aligned.sortedByCoord.out.bam > sample_q10.bam
samtools index sample_q10.bam

# UMI deduplication (see clip-preprocessing for `--method=unique` rationale)
umi_tools dedup \
    --stdin=sample_q10.bam \
    --stdout=sample_dedup.bam \
    --method=unique \
    --paired \
    --log=sample_dedup.log
samtools index sample_dedup.bam

MAPQ thresholds differ by aligner:

  • STAR: 255 = uniquely mapped (== --outFilterMultimapNmax 1 already filtered); lower MAPQ values mean multi-mappers
  • bowtie2: 42 = unique; 0-1 = multi-mapper; intermediate = ambiguous
  • HISAT2: 60 = unique; similar to bowtie2 scheme but tool-specific

For STAR -q 10 is conventional but redundant if --outFilterMultimapNmax 1 was already set. For bowtie2/HISAT2, -q 30 is a stricter unique-mapper proxy.

Multi-Mapper Rescue with CLAM (Repeat-Binding RBPs)

# 1. Re-align permitting multi-mappers
STAR --runMode alignReads \
    --genomeDir STAR_index --readFilesIn R1.fq.gz R2.fq.gz \
    --readFilesCommand zcat --outFilterMultimapNmax 100 \
    --outSAMmultNmax -1 --alignEndsType EndToEnd \
    --outSAMtype BAM SortedByCoordinate --outFileNamePrefix mm_

samtools index mm_Aligned.sortedByCoord.out.bam

# 2. CLAM preprocessing splits unique vs multi-mapper reads
CLAM preprocessor -i mm_Aligned.sortedByCoord.out.bam -o clam_out/ --read-tagger-method median

# 3. EM-based multi-mapper realignment
CLAM realigner -i clam_out/unique.sorted.bam -o clam_out/ --winsize 50 --max-tags 0

# 4. Downstream peakcaller (CLAM peakcaller is a wrapper for Piranha+EM)
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 (Zhang & Xing 2017) rescues additional peaks in repeat regions (operationally ~10-30% more, dataset-dependent). It is the only EM-based multi-mapper solution actively maintained for CLIP as of 2025.

HISAT2 Low-Memory Alternative

hisat2 --rna-strandness FR --no-softclip \
    -p 8 -x hisat2_grch38_index \
    -1 R1.trim.fq.gz -2 R2.trim.fq.gz \
    --no-unal \
    --score-min L,0,-0.2 \
    -S sample.sam 2> hisat2.log

samtools view -bS sample.sam | samtools sort -o sample.bam -
samtools index sample.bam

--no-softclip is the HISAT2 equivalent of STAR's --alignEndsType EndToEnd. --score-min L,0,-0.2 is roughly equivalent to STAR's --outFilterMismatchNoverReadLmax 0.04 (penalty scales linearly with read length, with -0.2 per mismatch slope).

Decision Tree by Use Case

ScenarioRecommended aligner + parametersWhy
eCLIP, ENCODE-comparable, 32+ GB RAMSTAR ENCODE pattern (above)Reproducible against ENCODE peak calls
iCLIP / iCLIP2, single-endSTAR same params, --readFilesIn R1.fq.gzSingle-end variant of ENCODE block
PAR-CLIPSTAR with --outFilterMismatchNoverReadLmax 0.07T->C is signal, not error
Repeat-binding RBP (MATR3, LINE-1 binders)STAR --outFilterMultimapNmax 100 --outSAMmultNmax -1 + CLAMEM rescue of multi-mappers
Low memory (< 16 GB)HISAT2 with --no-softclipSTAR index unloadable
Bacterial / yeast (small genome, no splicing)bowtie2 --very-sensitiveSplice-awareness wasted
snoRNA-only / 7SK-only analysisbowtie2 with custom indexAvoid genome-scale splicing tangle
Allele-specific CLIPSTAR ENCODE + WASP filter (--waspOutputMode SAMtag)Reference-allele mapping bias must be removed
Long-read CLIP (dirCLIP, nanopore)minimap2 -ax splice -uf -k14STAR cannot align long reads

Allele-Specific Alignment with WASP

CLIP-seq inherits reference-allele mapping bias from RNA-seq. For allele-specific binding analyses (BEAPR, ASPRIN), STAR's WASP integration removes reads where the alternative-allele version of the read would not have aligned at the same position.

# STAR with WASP filter; --varVCFfile is the heterozygous SNP VCF
STAR --runMode alignReads \
    --genomeDir STAR_index --readFilesIn R1.fq.gz R2.fq.gz --readFilesCommand zcat \
    --alignEndsType EndToEnd --outFilterMultimapNmax 1 --outFilterMismatchNoverReadLmax 0.04 \
    --outSAMtype BAM SortedByCoordinate \
    --varVCFfile sample.het.vcf.gz \
    --waspOutputMode SAMtag \
    --outSAMattributes vA vG vW \
    --outFileNamePrefix wasp_

samtools view -b -e '[vW]==1' wasp_Aligned.sortedByCoord.out.bam > wasp_pass.bam

WASP filtering is MANDATORY for allele-specific binding analyses; reference-allele bias inflates REF allele frequency 1-5% in unfiltered CLIP data.

Reconciliation: When Alignment Outputs Disagree

PatternLikely causeAction
STAR retains more reads than bowtie2STAR handles splice junctions; bowtie2 fails on spliced readsTrust STAR for mRNA-binding RBPs
Read count after STAR < expected--outFilterMultimapNmax 1 discarding multi-mappersIf RBP binds repeats, switch to multi-mapper mode + CLAM
Crosslink-site density looks smoothedSoft-clip ON (alignEndsType Local)Re-align with --alignEndsType EndToEnd
40-70% read loss in PAR-CLIPT->C mismatches exceed 4% ceilingRaise --outFilterMismatchNoverReadLmax to 0.07
HISAT2 calls peaks STAR missesHISAT2 lower-stringency soft-clip behaviourRe-run HISAT2 with --no-softclip; differences should narrow to < 5%
Two STAR versions (2.4 vs 2.7) give different BAMsIndex sjdb format changed; parameter defaults driftPin STAR version for cross-study comparison; document

Operational rule: For ENCODE-comparable analysis, use STAR 2.5.2b (ENCODE eCLIP SOP v2.2) or 2.7.x with the ENCODE eCLIP parameter block; use --alignEndsType EndToEnd; use --outFilterMultimapNmax 1 unless the biology requires multi-mappers (then add CLAM); UMI-dedupe with umi_tools dedup --method=unique. Document any deviation in methods.

Common Errors

Error / symptomCauseSolution
STAR ERROR ... Could not allocate memoryIndex too large for RAMSwitch to HISAT2; or rebuild STAR index with --genomeSAsparseD 2
samtools sort: not enough memory after STARsort -m default 768M too smallsamtools sort -m 4G -@ 8
Crosslink density at uniform 5 nt offsets across genomeR2 5' trimmed by mistakeRecheck preprocessing; cutadapt -g and fastp --trim_front2 are banned for CLIP
90% of reads MAPQ < 10Genome index built for different speciesVerify with samtools view -h sample.bam | head against expected chromosome names
HISAT2 splice junctions miss-detectedUsed --no-splice (HISAT2 splice OFF)Remove --no-splice for mRNA studies
umi_tools dedup OOMToo many UMIs at one position; deep librarySwitch to --method=unique (less RAM than directional)
Multi-mapper count after STAR --outFilterMultimapNmax 100 = 0--outSAMmultNmax not setAdd --outSAMmultNmax -1 to emit all alignments
Reads MAPQ 0 dominate after bowtie2--very-sensitive ON but multi-mappers retainedAdd samtools view -q 30 post-filter
CLAM EM never convergesBackground regions empty; sparse coverageLower --max-tags to 5; provide gene model GTF; verify multi-mapper BAM exists

References

  • Van Nostrand EL et al 2016 Nat Methods 13:508 (eCLIP / ENCODE alignment parameter block)
  • Konig J et al 2010 Nat Struct Mol Biol 17:909 (iCLIP truncation-as-CL principle)
  • Dobin A et al 2013 Bioinformatics 29:15 (STAR aligner)
  • Kim D et al 2019 Nat Biotechnol 37:907 (HISAT2)
  • Langmead B & Salzberg SL 2012 Nat Methods 9:357 (bowtie2)
  • Zhang Z & Xing Y 2017 Nucleic Acids Res 45:9260 (CLAM multi-mapper assignment)
  • van de Geijn B et al 2015 Nat Methods 12:1061 (WASP allele-specific alignment)
  • Hafner M et al 2010 Cell 141:129 (PAR-CLIP T->C mismatch tolerance need)
  • West C et al 2023 Wellcome Open Res 8:286 (nf-core/clipseq alignment defaults)

Related Skills

  • clip-seq/clip-preprocessing - UMI extraction and adapter trimming before alignment
  • clip-seq/clip-qc - Post-alignment QC (library complexity, read distribution, FRiP)
  • clip-seq/crosslink-site-detection - Why the 5' end must be preserved
  • clip-seq/clip-peak-calling - Downstream peak calling on the dedup BAM
  • read-alignment/star-alignment - General STAR usage and indexing
  • read-alignment/bowtie2-alignment - General bowtie2 usage
  • alignment-files/duplicate-handling - Picard MarkDuplicates as UMI-less fallback
  • single-cell/scatac-analysis - Cross-reference for single-cell variants

レビュー

まだレビューはありません。使ってみた感想をお寄せください。

同じリポジトリのスキル

概要と使いどころ

Predicts ADMET properties using ADMETlab 3.0 (119 platform features, including 77 prediction models with modeled-endpoint uncertainty), ADMET-AI, DeepChem MolNet, and chemprop D-MPNN with explicit handling of OECD QSAR principles, applicability domain assessment, calibration, hERG/CYP/AMES endpoints, and PAINS / Lipinski / Ro5 / Veber / BBB druglikeness filters. Use when filtering compounds for drug-likeness, prioritizing leads by predicted safety, or building an in-house ADMET QSAR model.

日本語の概要は準備中です。原文の説明を表示しています。

GPTomics/bioSkills1,2192026年8月15日 更新

Trim PCR primers from aligned reads in amplicon-panel BAMs using samtools ampliconclip. Use when processing SARS-CoV-2 ARTIC, hereditary cancer panels, ctDNA hot-spot panels, or any amplicon assay where primer-derived bases would falsely confirm reference at primer footprints.

日本語の概要は準備中です。原文の説明を表示しています。

GPTomics/bioSkills1,2192026年8月15日 更新

Filter alignments by flags, mapping quality, and regions using samtools view and pysam. Use when extracting specific reads, removing low-quality alignments, or subsetting to target regions.

日本語の概要は準備中です。原文の説明を表示しています。

GPTomics/bioSkills1,2192026年8月15日 更新

Create and use BAI/CSI indices for BAM/CRAM files using samtools and pysam. Use when enabling random access to alignment files or fetching specific genomic regions.

日本語の概要は準備中です。原文の説明を表示しています。

GPTomics/bioSkills1,2192026年8月15日 更新

Read, write, and convert multiple sequence alignment files using Biopython Bio.AlignIO. Supports Clustal, PHYLIP, Stockholm, FASTA, Nexus, and other alignment formats for phylogenetics and conservation analysis. Use when reading, writing, or converting alignment file formats.

日本語の概要は準備中です。原文の説明を表示しています。

GPTomics/bioSkills1,2192026年8月15日 更新

Parse and analyze multiple sequence alignments using Biopython. Extract sequences, identify conserved regions, analyze gaps, work with annotations, and manipulate alignment data for downstream analysis. Use when parsing or manipulating multiple sequence alignments.

日本語の概要は準備中です。原文の説明を表示しています。

GPTomics/bioSkills1,2192026年8月15日 更新

GPTomics のスキルをすべて見る

このスキルの問題を報告する