Agent skill · Databases

bio-variant-normalization

Normalize indel representation, decompose MNPs, and split multiallelic variants using bcftools norm. Use when comparing variants from different callers, preparing VCF for database annotation, or merging VCFs from multiple sources.

BioTender-maxgithub.com/BioTender-maxGitHub ↗
claude-codeships scriptsNOASSERTION
Install
npx skills add BioTender-max/awesome-bio-agent-skills --skill variant-normalization --agent claude-code

Same command for any agent — swap --agent for codex, cursor, copilot.

Facts
Files in the skill folder: 3
SKILL.md size: 14 KB
Bundled scripts: yes
Path: skills/bioskills/variant-normalization/SKILL.md
Open the folder on GitHub →
Where it comes from
Stars: 135
Language: Python

Weekly change comes from our own snapshots, not the repository page — it measures attention, not adoption.

From the SKILL.md

## Version Compatibility Reference examples tested with: bcftools 1.19+, cyvcf2 0.30+ 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 The `--atomize` flag requires bcftools 1.17+. Earlier versions require `vt decompose_blocksub` as an alternative. If code throws ImportError, AttributeError, or TypeError, introspect the installed package and adapt the example to match the actual API rather than retrying. # Variant Normalization Left-align indels, decompose MNPs, and split multiallelic sites using bcftools norm. ## When Normalization is Mandatory Not normalizing before certain operations leads to missed matches and false discordance. Normalization is required: - **Before comparing variants from different callers.** Each caller may represent the same indel at different positions or encode MNPs differently. Without normalization, identical variants appear discordant. - **Before database annotation.** dbSNP, ClinVar, and gnomAD store variants in canonical left-aligned, parsimonious representation. A right-aligned

What's inside
Steps it walks through
  1. Version Compatibility
  2. When Normalization is Mandatory
  3. Why Normalize?
  4. Recommended Normalization Pipeline
  5. Left-Alignment
  6. Check for Normalization Issues
  7. Multiallelic Splitting
  8. Split Multiallelic to Biallelic
  9. Splitting Caveats
  10. Split Options
  11. Join Biallelic to Multiallelic
  12. Atomize Complex Variants (MNP Decomposition)
  13. Atomize MNPs to SNPs
  14. Atomize with Old Record Tag
Ships with 2 files
  • examples/normalize_vcf.sh
  • usage-guide.md
Commands it runs
bcftools norm --atomize input.vcf.gz | \
bcftools norm -m- | \
bcftools norm -f reference.fa -Oz -o normalized.vcf.gz
bcftools index normalized.vcf.gz
bcftools norm -m- input.vcf.gz | \
bcftools norm -f reference.fa input.vcf.gz -Oz -o normalized.vcf.gz
bcftools norm -f reference.fa -c s input.vcf.gz > /dev/null
bcftools norm -m-any input.vcf.gz -Oz -o split.vcf.gz
bcftools norm -m+any input.vcf.gz -Oz -o merged.vcf.gz
bcftools norm --atomize input.vcf.gz -Oz -o atomized.vcf.gz
More from awesome-bio-agent-skills
All skills →
About this skill
What does the bio-variant-normalization skill do?

Normalize indel representation, decompose MNPs, and split multiallelic variants using bcftools norm. Use when comparing variants from different callers, preparing VCF for database annotation, or merging VCFs from multiple sources.

How do I install it?

Run `npx skills add BioTender-max/awesome-bio-agent-skills --skill variant-normalization --agent claude-code` — it drops the skill into your project so the agent can pick it up. Swap the --agent value for codex, cursor or copilot if you use one of those.

Where does this skill come from?

From BioTender-max/awesome-bio-agent-skills, a repository with 135 stars. We read it straight from the repository tree rather than a submitted listing, so what you see here is what is actually published.

Is a popular skill a good skill?

Not necessarily. Stars measure attention, not adoption — a repository can trend for a week and be abandoned. That is why we show the weekly change from our own snapshots next to the total, instead of a single flattering number.

Keep going