Pysam
davila7/claude-code-templates
Genomic file toolkit. An agent skill from davila7/claude-code-templates.
Detects somatic mutations in circulating tumor DNA, treating low-VAF detection as a signal-versus-noise problem set by error suppression and molecules sampled, not by the choice of caller.
$ npx skills add GPTomics/bioSkills --skill bio-ctdna-mutation-detection -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install GPTomics/bioSkills bio-ctdna-mutation-detection --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/GPTomics/bioSkills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/liquid-biopsy/ctdna-mutation-detection .claude/skills/bio-ctdna-mutation-detection && rm -rf skills-srcUse ~/.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/
Install the "bio-ctdna-mutation-detection" agent skill from https://github.com/GPTomics/bioSkills/tree/main/liquid-biopsy/ctdna-mutation-detection into .claude/skills/bio-ctdna-mutation-detection/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "bio-ctdna-mutation-detection", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/GPTomics/bioSkills/tree/main/liquid-biopsy/ctdna-mutation-detectionType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add GPTomics/bioSkills --skill bio-ctdna-mutation-detection -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install GPTomics/bioSkills bio-ctdna-mutation-detection --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/GPTomics/bioSkills.git skills-src && mkdir -p .agents/skills && cp -r skills-src/liquid-biopsy/ctdna-mutation-detection .agents/skills/bio-ctdna-mutation-detection && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "bio-ctdna-mutation-detection" agent skill from https://github.com/GPTomics/bioSkills/tree/main/liquid-biopsy/ctdna-mutation-detection into .agents/skills/bio-ctdna-mutation-detection/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "bio-ctdna-mutation-detection", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add GPTomics/bioSkills --skill bio-ctdna-mutation-detection -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install GPTomics/bioSkills bio-ctdna-mutation-detection --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/GPTomics/bioSkills.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/liquid-biopsy/ctdna-mutation-detection .cursor/skills/bio-ctdna-mutation-detection && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "bio-ctdna-mutation-detection" agent skill from https://github.com/GPTomics/bioSkills/tree/main/liquid-biopsy/ctdna-mutation-detection into .cursor/skills/bio-ctdna-mutation-detection/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "bio-ctdna-mutation-detection", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/GPTomics/bioSkills.git --path liquid-biopsy/ctdna-mutation-detection--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add GPTomics/bioSkills --skill bio-ctdna-mutation-detection -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install GPTomics/bioSkills bio-ctdna-mutation-detection --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/GPTomics/bioSkills.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/liquid-biopsy/ctdna-mutation-detection .gemini/skills/bio-ctdna-mutation-detection && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "bio-ctdna-mutation-detection" agent skill from https://github.com/GPTomics/bioSkills/tree/main/liquid-biopsy/ctdna-mutation-detection into .gemini/skills/bio-ctdna-mutation-detection/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "bio-ctdna-mutation-detection", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install GPTomics/bioSkills bio-ctdna-mutation-detectionInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add GPTomics/bioSkills --skill bio-ctdna-mutation-detection -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/GPTomics/bioSkills.git skills-src && mkdir -p .github/skills && cp -r skills-src/liquid-biopsy/ctdna-mutation-detection .github/skills/bio-ctdna-mutation-detection && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "bio-ctdna-mutation-detection" agent skill from https://github.com/GPTomics/bioSkills/tree/main/liquid-biopsy/ctdna-mutation-detection into .github/skills/bio-ctdna-mutation-detection/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "bio-ctdna-mutation-detection", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add GPTomics/bioSkills --skill bio-ctdna-mutation-detection -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install GPTomics/bioSkills bio-ctdna-mutation-detection --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/GPTomics/bioSkills.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/liquid-biopsy/ctdna-mutation-detection .opencode/skills/bio-ctdna-mutation-detection && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "bio-ctdna-mutation-detection" agent skill from https://github.com/GPTomics/bioSkills/tree/main/liquid-biopsy/ctdna-mutation-detection into .opencode/skills/bio-ctdna-mutation-detection/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "bio-ctdna-mutation-detection", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
bio-ctdna-mutation-detectionDetects somatic mutations in circulating tumor DNA, treating low-VAF detection as a signal-versus-noise problem set by error suppression and molecules sampled, not by the choice of caller.
Bio Ctdna Mutation Detection is an agent skill from GPTomics/bioSkills. Detects somatic mutations in circulating tumor DNA, treating low-VAF detection as a signal-versus-noise problem set by error suppression and molecules sampled, not by the choice of caller. Distinguishes de novo CALLING (scanning a panel for unknown variants, bounded by per-locus error and multiple testing) from tumor-informed DETECTION (tracking a pre-specified variant set, where panel integration reaches single-ppm). Covers VarDict and Mutect2 for de novo calling, UMI-aware callers, and a pysam-based…
Its SKILL.md is about 5.1k tokens, which your agent loads only when the skill is triggered. The skill folder holds 3 other files (for example `examples/detect_ctdna_mutations.py` and `usage-guide.md`).
It sits in Research & Science. It works with pysam. The repository describes itself as: a set of SKILLS.md for doing bioinformatics with agents like claude code. The licence is MIT.
Read from SKILL.md and the folder at commit d91ed3d. It shows what the files ask for, not the result of running them.
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.
Ships script files (Python), which the agent can run.
Shell commands in SKILL.md call:
pipFrom the folder's file list and the shell code blocks in SKILL.md.
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.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Bio Ctdna Mutation Detection loads about 5.1k tokens when it runs. Until then it costs about 206 tokens; SKILL.md has 2,441 words of instructions outside code blocks.
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.
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.
The full file from GPTomics/bioSkills at commit d91ed3d, republished under its MIT licence (© GPTomics). 2,441 words, ~5,104 tokens.
.claude/skills/bio-ctdna-mutation-detection/SKILL.md (or your agent's skills folder). This skill also uses 2 other files; get the full folder from GitHub.Reference examples tested with: pysam 0.22+, pandas 2.2+, VarDictJava 1.8+, GATK 4.5+, Ensembl VEP 111+
Before using code patterns, verify installed versions match. If versions differ:
pip show <package> then help(module.function) to check signatures<tool> --version then <tool> --help to confirm flagsIf code throws ImportError, AttributeError, or TypeError, introspect the installed package and adapt the example to match the actual API rather than retrying.
Notes specific to this skill: VarDict's -c -S -E -g are 1-based BED COLUMN INDICES, not genomic coordinates; var2vcf_valid.pl's -E suppresses the END tag (opposite meaning to VarDict's -E). VEP gnomAD flags are --af_gnomade (exomes)/--af_gnomadg (genomes); the bare --af_gnomad is a legacy alias that returns only exome AF, so prefer the explicit forms.
"Detect mutations in my cfDNA sample" -> Either scan a panel for unknown low-VAF somatic variants (de novo calling) or quantify a pre-specified mutation set across samples (tumor-informed tracking) — two different statistical problems.
vardict-java | teststrandbias.R | var2vcf_valid.pl for de novo low-VAF calling on a consensus BAMgatk Mutect2 with the read-orientation model for de novo calling with artifact filteringpysam pileup of ref/alt counts at fixed loci for known-variant tracking (MRD)Low-VAF ctDNA detection is set by two limits that no caller can overcome: the per-base error floor (raw Illumina ~1e-3 caps naive VAF detection near 0.5-1%) and the number of tumor molecules physically present in the tube (1 ng cfDNA ~= 303 haploid genome-equivalents; at 0.01% VAF in 10 ng the expected mutant count is ~0.3 copies — there is nothing to detect at any depth). The achieved limit of detection is the worse of the two. Error suppression (UMI consensus -> ~1e-5, duplex -> <1e-7) and input mass move the floor; swapping VarDict for Mutect2 does not.
Critically, de novo CALLING and known-variant DETECTION are different statistical problems. De novo calling scans every covered position for an unknown alt and pays a multiple-testing tax across 1e5-1e6 loci, so per-locus thresholds must be stringent (practical LoD ~0.1-0.5% on UMI consensus). Tumor-informed detection tests ONE hypothesis — "is tumor present?" — by integrating signal across a pre-specified set of N patient-specific loci; the multiple-testing penalty collapses and per-locus signal that is individually indistinguishable from noise sums into a confident panel-level call. This is why per-locus LoD is poor while panel-integrated LoD reaches single-ppm. Conflating the two is the most common conceptual error in the field.
| Method | Class | Citation | Role | When |
|---|---|---|---|---|
| VarDict / vardict-java | de novo caller | AstraZeneca-NGS | sensitive low-VAF amplicon/capture calling with explicit strand-bias test | de novo panel calling on a UMI-consensus BAM |
| Mutect2 (tumor-only) | de novo caller | GATK | local-assembly somatic caller + learned orientation-bias artifact model | de novo calling needing FFPE/OxoG artifact filtering, PoN, germline resource |
| umi-varcal | UMI-aware caller | Sater 2020 Bioinformatics 36(9):2718 | own UMI-aware pileup + per-position Poisson test against local background | UMI-tagged BAM where a consensus-aware caller is wanted (floor ~0.3%) |
| CAPP-Seq / iDES | tumor-informed integration | Newman 2014 Nat Med 20:548; 2016 Nat Biotechnol 34:547 | hybrid-capture deep panel + molecular barcoding + in-silico background polishing | de novo ctDNA to ~0.02%; iDES stacks ~15x error suppression |
| INVAR | tumor-informed integration | Wan 2020 Sci Transl Med 12:eaaz8084 | integrate variant reads across 100s-1000s patient loci, background-weighted | MRD/monitoring with tumor WES; quantifies to ~1e-5, best ~2.5 ppm |
| MRDetect | tumor-informed integration | Zviran 2020 Nat Med 26:1114 | shallow WGS vs patient SNV compendium, read-level SVM noise model | MRD trading depth for breadth (~35x WGS, thousands of SNVs); ~1e-5 |
| PhasED-Seq | tumor-informed integration | Kurtz 2021 Nat Biotechnol 39:1537 | enrich phased (co-occurring) variants to suppress single-molecule error | sub-ppm MRD where phased variants are available |
Per-locus LoD for any of these is error- and sampling-limited (~0.1-0.5%); the tumor-informed methods reach ppm only by integrating across a known, large, patient-specific variant set. Methodology evolves — verify current best practice against each tool's live docs before committing to one.
| Scenario | Recommended | Why |
|---|---|---|
| Tumor tissue available, MRD/monitoring of a known cancer | Tumor-informed tracking (INVAR/MRDetect/Signatera-class), or the pysam tracker below for a fixed list | Integrating across N pre-specified loci is the only route to ppm; CHIP excluded by construction (CHIP variants are not on the tumor list) |
| No tumor tissue, screening/discovery | de novo panel calling (VarDict or Mutect2) + matched WBC | Must scan for unknown variants; CHIP subtraction is mandatory or most calls are not tumor |
| VAF regime > 1% | Any standard caller on a deduplicated BAM | Above the raw error floor; consensus not strictly required |
| VAF regime 0.1-1% | UMI single-strand consensus + VarDict/umi-varcal/Mutect2 | Below the raw 1e-3 floor; consensus needed to recover real signal from error |
| VAF regime < 0.1% | Duplex consensus + tumor-informed integration | Single-strand consensus cannot remove one-strand deamination/oxidation; only duplex + panel integration reaches this regime |
| No matched WBC available | Do NOT report de novo calls as somatic-tumor | Without WBC subtraction, CHIP (the majority of non-germline cfDNA variants) is indistinguishable from tumor |
Clonal hematopoiesis of indeterminate potential (CHIP) is the single largest source of false-positive somatic calls in plasma, and it is the null hypothesis for any low-VAF cfDNA variant. Razavi 2019 sequenced cfDNA with matched white-blood-cell DNA (508 genes, >60,000x) and found that 53.2% of non-germline cfDNA variants in cancer patients and 81.6% in non-cancer controls had features consistent with clonal hematopoiesis; only ~24.4% of cfDNA somatic variants in patients were also in the matched tumor (the remainder split between white-cell CHIP and variants of uncertain origin). These are bona fide somatic mutations — in cancer genes — that come from lysed leukocytes, not tumor. No error-suppression tier removes them because they are not errors.
The biology: CHIP arises in hematopoietic stem cells and rises steeply with age (Jaiswal 2014: ~10% prevalence over age 70), enriched for PPM1D/TP53/CHEK2 clones after prior chemo/radiation — exactly the monitored population. The canonical genes are DNMT3A, TET2, ASXL1 (the big three), then PPM1D, TP53, JAK2, SF3B1, SRSF2, GNB1, GNAS, CBL, ATM, CHEK2. TP53 and ATM are both CHIP genes and bona fide tumor suppressors, so a low-VAF TP53 cfDNA call is the ambiguous case par excellence.
The only reliable filter is matched buffy-coat/WBC subtraction: sequence the WBC fraction of the same draw at comparable depth and remove any cfDNA variant also present in WBC. gnomAD filtering removes germline only — CHIP variants are somatic and absent from germline databases, so they sail straight through. A canonical-CHIP-gene list (the example's CHIP_GENES) is a heuristic flag for extra scrutiny, NOT a substitute for WBC subtraction. See analytical-validation for the LoB/LoD statistics that quantify how confidently a subtracted call clears background.
Goal: Scan a target panel for unknown low-VAF somatic variants on a UMI-consensus BAM.
Approach: Run vardict-java with a lowered -f, pipe through the strand-bias test, then convert to VCF — matching -f across both stages so the threshold is not silently re-applied.
AF_THR=0.005 # 0.5% — practical UMI-consensus de novo floor; below this approaches the per-base error floor
vardict-java -G ref.fa -f $AF_THR -N sample -b consensus.bam \
-c 1 -S 2 -E 3 -g 4 targets.bed | \
teststrandbias.R | \
var2vcf_valid.pl -N sample -E -f $AF_THR > sample.vcfKey flags: -G indexed reference; -f min VAF (VarDict default 0.01); -N sample name; -b BAM. -c 1 -S 2 -E 3 -g 4 are the 1-based BED COLUMN INDICES for chrom/start/end/gene in a standard 4-column BED — they are column positions, not genomic values. On var2vcf_valid.pl, -E means "do NOT print the END tag" (unrelated to VarDict's -E); its -f default is 0.02, so set it to match. For PCR/amplicon data add -P 0 (positional std is expected to be ~0). For paired tumor/normal use the testsomatic.R | var2vcf_paired.pl path instead.
Goal: Call de novo somatic variants while filtering FFPE-deamination (C>T) and OxoG (G>T) strand-biased artifacts that dominate low-VAF false positives.
Approach: Collect F1R2/F2R1 counts during calling, learn the orientation-bias prior, then apply it during filtering alongside a panel of normals and germline resource.
gatk Mutect2 -R ref.fa -I consensus.bam --f1r2-tar-gz f1r2.tar.gz \
--germline-resource af-only-gnomad.vcf.gz --panel-of-normals pon.vcf.gz \
-O unfiltered.vcf.gz
gatk LearnReadOrientationModel -I f1r2.tar.gz -O read-orientation-model.tar.gz
gatk FilterMutectCalls -R ref.fa -V unfiltered.vcf.gz \
--ob-priors read-orientation-model.tar.gz -O filtered.vcf.gzMutect2 is run tumor-only here (no normal sample arg); the orientation model is the load-bearing low-VAF filter. At true ctDNA VAFs Mutect2 is underpowered relative to a dedicated UMI/duplex + background-polishing pipeline, and local assembly can miss extremely low-AF alt support — it is a reasonable de novo caller on consensus reads with the orientation model + PoN (and ideally a matched normal, not shown in this tumor-only command), not a substitute for tumor-informed integration at ppm.
Goal: Quantify the VAF of a pre-specified mutation set at fixed loci for MRD monitoring — the detection (not calling) problem.
Approach: For each target mutation, pileup reads at the position, count ref/alt/other alleles, and compute VAF with depth; aggregate across loci as the panel-level detection signal. The single-base pileup below tracks SNVs only — indel reporters (e.g. EGFR exon-19 deletions) need read.indel/CIGAR-aware counting; a single-base comparison silently scores every indel read as other and reports the locus as cleared.
import pysam
def track_known_variants(bam_file, variants):
'''Pileup ref/alt counts at fixed (chrom, pos, ref, alt) SNV loci; pos is 1-based.
SNVs only - indel reporters need read.indel/CIGAR handling, not a single-base compare.'''
bam = pysam.AlignmentFile(bam_file, 'rb')
rows = []
for chrom, pos, ref, alt in variants:
counts = {'ref': 0, 'alt': 0, 'other': 0}
for col in bam.pileup(chrom, pos - 1, pos, truncate=True):
for read in col.pileups:
if read.is_del or read.is_refskip:
continue
base = read.alignment.query_sequence[read.query_position]
counts['alt' if base == alt else 'ref' if base == ref else 'other'] += 1
depth = sum(counts.values())
rows.append({'chrom': chrom, 'pos': pos, 'ref': ref, 'alt': alt,
'depth': depth, 'alt_count': counts['alt'],
'vaf': counts['alt'] / depth if depth else 0.0})
bam.close()
return rowsAnnotate calls for interpretation with Ensembl VEP (--cache --offline --fasta --vcf --everything); the gnomAD allele-frequency flags are --af_gnomade (exomes) and --af_gnomadg (genomes) — the bare --af_gnomad is a legacy alias returning only exome AF. gnomAD presence separates germline; only WBC presence separates CHIP.
Trigger: de novo calling without matched WBC. Mechanism: leukocyte-derived clonal somatic variants in cancer genes look identical to tumor signal and pass gnomAD filtering. Symptom: low-VAF calls in DNMT3A/TET2/TP53; "tumor" mutations not in the matched tissue. Fix: subtract matched buffy-coat/WBC genotype; never report somatic-tumor without it.
Trigger: FFPE-style C>T or oxidative G>T at VAF near the floor. Mechanism: damage on one template strand is inherited by every PCR copy, so single-strand UMI consensus votes unanimously for the artifact. Symptom: alt support concentrated on one strand. Fix: VarDict strand-bias test or Mutect2 orientation model; for sub-0.1% require duplex consensus.
Trigger: lowering -f to e.g. 0.001 on a non-consensus BAM. Mechanism: the raw ~1e-3 error rate manufactures alt reads at that frequency. Symptom: a flood of low-VAF calls scaling with depth. Fix: do consensus upstream; do not set a VAF threshold below the demonstrated error floor of the input.
Trigger: classifying by VAF alone when depth is low. Mechanism: a true 50% het reads 3/12 = 0.25 by chance. Symptom: germline hets mislabeled subclonal somatic. Fix: gnomAD + matched-WBC presence (germline ~0.5 in WBC; CHIP at clone VAF; tumor-only absent from WBC).
Trigger: reporting a single-variant sensitivity for a multi-locus tracking assay (or vice versa). Mechanism: panel-integrated LoD is orders of magnitude below per-locus LoD. Symptom: a "0.1%" claim that does not match observed ppm-level tracking. Fix: state per-locus vs panel-integrated explicitly; see analytical-validation.
| Threshold | Source | Rationale |
|---|---|---|
| Raw Illumina error ~1e-3 caps naive VAF near 0.5-1% | Schmitt 2012 PNAS 109:14508 | Per-base miscall rate sets the per-locus VAF floor; alt support below it is mostly error |
| UMI single-strand consensus -> ~1e-5; duplex -> <1e-7 | Schmitt 2012; Newman 2016 Nat Biotechnol 34:547 | Family consensus erases PCR/sequencing error; duplex strand concordance also catches one-strand damage |
| CAPP-Seq de novo LoD ~0.02% at 96% specificity | Newman 2014 Nat Med 20:548 | Deep hybrid-capture + reporter set; demonstrates the de novo panel floor |
| iDES ~15x error suppression (UMI ~3x x polishing ~3x) | Newman 2016 Nat Biotechnol 34:547 | Molecular consensus and in-silico background polishing are orthogonal and stack |
| INVAR quantifies to ~1e-5, detects to ~2.5 ppm | Wan 2020 Sci Transl Med 12:eaaz8084 | Integrating variant reads across 100s-1000s of patient loci collapses multiple testing |
| MRDetect ~1e-5 tumor fraction at ~35x WGS, 95% spec | Zviran 2020 Nat Med 26:1114 | Breadth (thousands of SNVs) + read-level SVM (~14.4x error reduction) substitutes for depth |
| CHIP = 53.2% (cancer pts) / 81.6% (controls) of cfDNA variants | Razavi 2019 Nat Med 25:1928 | Most non-germline cfDNA variants are not tumor; matched WBC is mandatory |
| Depth >= 1000-5000x unique consensus for panels | community / Phallen 2017 Sci Transl Med 9:eaan2415 (~30,000x) | Detecting <1% VAF needs enough unique molecules sampled at each locus |
| ~303 genome-equivalents per ng cfDNA (3.3 pg/haploid) | standard constant | Input mass sets a hard Poisson ceiling on detectable VAF independent of sequencing |
| LoB / LoD / LoD95 per CLSI EP17 | CLSI EP17-A2 | A bare VAF without input mass + replicate detection rate is not a sensitivity spec |
| Error / symptom | Cause | Solution |
|---|---|---|
| Flood of low-VAF calls scaling with depth | -f set below the input's error floor on non-consensus reads | Do UMI/duplex consensus first; keep -f >= demonstrated floor |
| VarDict emits nothing or wrong regions | -c -S -E -g read as genomic values | They are 1-based BED column indices; use -c 1 -S 2 -E 3 -g 4 for a 4-column BED |
| var2vcf re-filters away VarDict calls | var2vcf_valid.pl -f default 0.02 mismatched | Set var2vcf -f to match VarDict's -f |
| Real amplicon calls dropped as positional artifacts | var2vcf -P (filter pstd=0) on by default | Add -P 0 for PCR/amplicon data |
| "Tumor" variants absent from matched tissue | CHIP not subtracted | Sequence and subtract matched WBC; flag CHIP-gene hits |
--af_gnomad returns only exome AF | bare flag is a legacy exome-only alias | Use --af_gnomade (exomes) / --af_gnomadg (genomes) |
| ppm "LoD" not reproducible | per-locus LoD quoted for a tracking assay | Report panel-integrated LoD with input mass and LoD95 |
© GPTomics, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 2 other files in liquid-biopsy/ctdna-mutation-detection of GPTomics/bioSkills.
Open the folder on GitHubat commit d91ed3d
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.
Bio Ctdna Mutation Detection 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.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Bio Ctdna Mutation Detection this skillGPTomics/bioSkills | 1.2k | 1 repos | ~5.1k | Automated safety check: Pass | MIT | |
| Pysamdavila7/claude-code-templates | 32k | 10 repos | ~2.5k | Automated safety check: Pass | MIT | |
| PysamK-Dense-AI/scientific-agent-skills | 48k | 1 repos | ~3.4k | Automated safety check: Notes | MIT | |
| Omics ToolsDrugClaw/DrugClaw | 125 | — | ~1.1k | Automated safety check: Pass | Apache-2.0 | |
| Tooluniverse Epigenomicswu-yc/LabClaw | 1.1k | 2 repos | ~14k | Automated safety check: Pass | None | |
| Biopython Sequence Analysisjaechang-hits/SciAgent-Skills | 371 | 1 repos | ~8.5k | Automated safety check: Pass | BSD-3-Clause |
davila7/claude-code-templates
Genomic file toolkit. An agent skill from davila7/claude-code-templates.
K-Dense-AI/scientific-agent-skills
Provides Python/HTSlib workflows for genomic files. An agent skill from K-Dense-AI/scientific-agent-skills.
DrugClaw/DrugClaw
Omics and single-cell workflow guide for AnnData, Scanpy-style dataset profiling, PyDESeq2-oriented count checks, pysam alignment inspection, and pyOpenMS mass-spectrometry summaries.
wu-yc/LabClaw
Production-ready genomics and epigenomics data processing for BixBench questions.
jaechang-hits/SciAgent-Skills
Biopython sequence analysis: parse FASTA/FASTQ/GenBank/GFF (SeqIO), NCBI Entrez (esearch/efetch/elink), remote/local BLAST, pairwise/MSA alignment (PairwiseAligner, MUSCLE/ClustalW), phylogenetic…
jaechang-hits/SciAgent-Skills
CLI toolkit for SAM/BAM/CRAM: sort, index, convert, filter, QC alignments.
GPTomics/bioSkills
Read, write, and convert multiple sequence alignment files using Biopython Bio.AlignIO.
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.
GPTomics/bioSkills
Write biological sequences to files (FASTA, FASTQ, GenBank, EMBL) using Biopython Bio.SeqIO.
GPTomics/bioSkills
Soft- or hard-clips PCR primer footprints from aligned amplicon BAMs so primer bases stop masquerading as confirmed reference sequence.
GPTomics/bioSkills
Filters BAM alignments by FLAG bits, mapping quality and regions with samtools view or pysam, with recipes for common keep and drop cases.
GPTomics/bioSkills
Create and use BAI/CSI indices for BAM/CRAM files using samtools and pysam.
Works with
Categories
Detects somatic mutations in circulating tumor DNA, treating low-VAF detection as a signal-versus-noise problem set by error suppression and molecules sampled, not by the choice of caller. Bio Ctdna Mutation Detection is an agent skill from GPTomics/bioSkills. Detects somatic mutations in circulating tumor DNA, treating low-VAF detection as a signal-versus-noise problem set by error suppression and molecules sampled, not by the choice of caller.
Bio Ctdna Mutation Detection fits situations like: tracking tumor mutations from plasma cfDNA; setting a VAF threshold; deciding whether a low-VAF call is tumor versus CHIP.
Run `npx skills add GPTomics/bioSkills --skill bio-ctdna-mutation-detection -a claude-code`. Or copy the skill folder (liquid-biopsy/ctdna-mutation-detection in GPTomics/bioSkills) into .claude/skills/bio-ctdna-mutation-detection in your project. Claude Code loads it when a task matches its description.
Run `npx skills add GPTomics/bioSkills --skill bio-ctdna-mutation-detection -a codex`. Or copy the skill folder (liquid-biopsy/ctdna-mutation-detection in GPTomics/bioSkills) into .agents/skills/bio-ctdna-mutation-detection in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add GPTomics/bioSkills --skill bio-ctdna-mutation-detection -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-ctdna-mutation-detection, .gemini/skills/bio-ctdna-mutation-detection, .github/skills/bio-ctdna-mutation-detection and .opencode/skills/bio-ctdna-mutation-detection in your project.
Going by SKILL.md and its folder, Bio Ctdna Mutation Detection needs Python for the scripts in its folder and the command-line tools its instructions call (pip). Our summary lists: Python 3.
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.
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.
Bio Ctdna Mutation Detection is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 5.1k tokens (SKILL.md is roughly 20k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Bio Ctdna Mutation Detection: Pysam (davila7/claude-code-templates, 32k stars), Pysam (K-Dense-AI/scientific-agent-skills, 48k stars), Omics Tools (DrugClaw/DrugClaw, 125 stars) and Tooluniverse Epigenomics (wu-yc/LabClaw, 1.1k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
GPTomics (a GitHub organization) maintains it in GPTomics/bioSkills, which has 1,217 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.