agentsclimarketplace

Chain pruning threshold optimization

Skill HolobiomicsLab/asb-skill-collections/collections/transcriptomics/v1/skills/chain-pruning-threshold-optimization

Curated, evidence-grounded skill and software-tool collections for scientific AI agents, generated by the AgenticScienceBuilder

Install
npx -y skills add HolobiomicsLab/asb-skill-collections --skill chain-pruning-threshold-optimization

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • 14 stars14 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

What its author says it does

Copied from the file, not written here

Use when when comparing mapped read counts between two RNA-seq quantification implementations (e.

The file declares its own license as CC-BY-4.0. That is the author’s claim about this one file, and it is not the same thing as the license GitHub reports for the repository, which is listed with the other numbers below.

SKILL.md

8.1 KB, ~1.6k tokens by cl100k_base, as published. Nobody here has run it

chain-pruning-threshold-optimization

Summary

Optimize k-mer chain filtering thresholds (orphanChainSubThresh, postMergeChainSubThresh) to reduce spurious read assignments and improve mapping accuracy consistency between RNA-seq quantification implementations. This skill addresses parameter-driven mapping-rate gaps by systematically tuning chain-pruning defaults before selective-alignment scoring.

When to use

When comparing mapped read counts between two RNA-seq quantification implementations (e.g., C++ vs. Rust ports of the same tool) or between versions, and observing a systematic 1–5% gap in mapping rate on a byte-identical reference index that is not explained by k-mer lookup bugs or index format differences. Chain-pruning threshold divergence is a leading hypothesis when per-read mapping agreement is high (≥99.8%) but total mapped-read counts differ substantially.

When NOT to use

  • Mapping rates already agree to within ≤0.02% on a byte-identical index; chain-pruning optimization is not the bottleneck.
  • Per-read mapping agreement is <99% or residual disagreement is symmetric (similar counts of reads mapped by each implementation); suggests a k-mer lookup or index-format bug rather than pruning-threshold divergence.
  • Input reads are very long (>300 bp), where chain coverage is typically high and pruning thresholds have minimal effect on mapping rates.

Inputs

  • paired-end FASTQ reads (or any read format compatible with the quantification tool; e.g., ERR188044: 36.35M reads, 76 bp, gzip-compressed)
  • byte-identical transcriptome reference index (k=31, deterministic N-replacement, matching both implementations)
  • reference implementation's chain-pruning parameters (orphanChainSubThresh, postMergeChainSubThresh, preMergeChainSubThresh values)

Outputs

  • mapping statistics table: total mapped reads, mapping rate (%), per-read mapping agreement (%)
  • residual disagreement report: counts of reads mapped by test-only vs. reference-only implementations
  • quantified threshold-contribution estimate: proportion of original gap explained by chain-pruning parameter difference (e.g., ~80%, ~49k reads)
  • boundary-case read classifications (optional): strong/weak/unaligned annotations from full Smith-Waterman re-alignment via minimap2

How to apply

First, establish a baseline: run both implementations on a real short-read dataset (e.g., 36.35M paired-end 76 bp reads) with identical index and selective-alignment settings, recording total mapped reads and per-read mapping agreement. If the gap is ≥1% and per-read agreement is ≥99.8%, isolate the reference implementation's chain-pruning parameters (typically orphanChainSubThresh and postMergeChainSubThresh); these are often not exposed in user-facing CLIs. Re-run the test implementation with those exact thresholds explicitly set via command-line flags. Compare mapped counts, residual read disagreement (reads mapped by only one implementation), and per-read agreement. If mapping rate converges to within 0.02% and residual disagreement drops from ~63k to <20k reads, quantify the proportion of the original gap attributable to this parameter difference. Document whether the threshold difference is a conservative default (reducing false positives) or a sensitivity choice (capturing boundary-case reads with weak chains).

Related tools

Examples

salmon quant -i salmon_index -l A -1 reads_1.fastq.gz -2 reads_2.fastq.gz -p 16 --orphanChainSubThresh 0.95 --postMergeChainSubThresh 0.9 -o sample_quant

Evaluation signals

  • Mapping rate of test implementation with optimized thresholds is ≥92.03% (within 0.02% of reference baseline of 92.011% on ERR188044), confirming threshold adoption reproduces reference behavior.
  • Per-read mapping agreement (fraction of reads assigned identically by both implementations) reaches ≥99.8% after threshold optimization, indicating consistent read-level decisions.
  • Residual read disagreement (reads mapped by only one implementation) drops from initial ~63k to <20k reads, with majority of original gap accounted for by threshold difference.
  • Quantified threshold-contribution estimate (proportion of gap explained) aligns with expected range (≥75%); documents whether pruning is primary driver vs. secondary contributor.
  • Full Smith-Waterman re-alignment of residual boundary-case reads shows that pruned chains have measurably lower coverage or score, validating that thresholds filter genuinely weak chains rather than arbitrarily discarding valid alignments.

Limitations

  • Chain-pruning threshold optimization only addresses parameter-driven gaps; it does not resolve k-mer lookup bugs (e.g., strand-orientation errors in pufferfish SSHash) or index-format incompatibilities, which require separate fixes.
  • Threshold values are tool- and reference-specific; parameters tuned for one transcriptome (e.g., GRCh38 cDNA, 193,759 transcripts) may not transfer to decoy-augmented or genome-scale indices, and empirical re-tuning may be necessary.
  • Optimization is most effective for short reads (≤100 bp) where chain coverage is moderate; very long reads typically have high chain coverage and are insensitive to threshold tweaks.
  • Pruning thresholds control false-positive reduction but do not improve sensitivity to genuinely difficult reads; residual disagreement after threshold matching still reflects fundamental mapper differences (e.g., MEM extraction strategy, seed selection) that threshold tuning cannot bridge.

Evidence

  • [methods] C++ salmon uses orphanChainSubThresh=0.95 and postMergeChainSubThresh=0.9 for chain pruning before alignment: "C++ prunes low-coverage chains/orphans before alignment using orphanChainSubThresh = 0.95 and postMergeChainSubThresh = 0.9"
  • [methods] ~80% of the observed mapping-count gap is attributable to chain-pruning parameter difference: "~80% (~49k): a chain-sub-optimality default difference (describable, deferred)"
  • [methods] Per-read mapping agreement between C++ 1.12.0 and Rust on byte-identical index is 99.83%: "per-read mapping agreement | 99.83%"
  • [methods] Rust maps 62,812 reads C++ leaves fully unmapped; C++ maps only 154 Rust doesn't: "Rust maps 62,812 reads C++ leaves fully unmapped (u), C++ maps only 154 Rust doesn't"
  • [readme] Salmon 2.0 is a from-scratch Rust rewrite with the same workflow and output formats but breaking changes: "This is salmon 2.0 — a from-scratch Rust rewrite of salmon. It keeps the same workflow (salmon indexsalmon quantquant.sf) and the same output formats downstream tools read, but it is a"

What ships with it

Read from the repository

Just SKILL.md. No reference files, no scripts.

Keep looking

Skills are one crate of 328,083. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.