Agent skill

bio-comparative-genomics-synteny-analysis

Detect syntenic blocks and structural rearrangements between genomes using MCScanX (Wang 2012), JCVI/MCScan (Tang 2008 Python), GENESPACE (Lovell 2022) for orthology-anchored riparian visualization, SyRI for structural variation, AnchorWave for sequence-level synteny, i-ADHoRe 3.0 for highly diverged species, SynNet for synteny networks, and ntSynt for multi-genome macrosynteny. Use when identifying collinear gene blocks across species, distinguishing macrosynteny from microsynteny, detecting inversions/translocations/duplications, anchoring orthology in WGD lineages, producing publication rip

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

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

Facts
Files in the skill folder: 3
SKILL.md size: 33 KB
Bundled scripts: yes
Path: skills/bioskills/synteny-analysis/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.

Review
written from the skill's own SKILL.md · Aug 5, 2026

What it does

Detect syntenic blocks and structural rearrangements between genomes using MCScanX (Wang 2012), JCVI/MCScan (Tang 2008 Python), GENESPACE (Lovell 2022) for orthology-anchored riparian visualization, SyRI for structural variation, AnchorWave for sequence-level synteny, i-ADHoRe 3.0 for highly diverged species, SynNet for synteny networks, and ntSynt for multi-genome macrosynteny. Use when identifying collinear gene blocks across species, distinguishing macrosynteny from microsynteny, detecting inversions/translocations/duplications, anchoring orthology in WGD lineages, producing publication riparian plots, computing synteny block age via Ks (cross-references whole-genome-duplication), or running synteny-aware ortholog inference in polyploids.

How it works

  • CLI: MCScanX for collinear gene blocks via dynamic programming
  • CLI: python -m jcvi.compara.catalog ortholog A B for JCVI/MCScan Python pipeline
  • R: run_genespace() for orthology-anchored riparian plots + pan-gene tracks
  • CLI: syri for inversion / translocation / duplication detection
  • CLI: anchorwave proali for sequence-level WGD-aware synteny
  • Provides a detailed algorithmic taxonomy comparing tools (MCScanX, JCVI, GENESPACE, i-ADHoRe, AnchorWave, SyRI, ntSynt, SynNet, etc.)
  • Includes decision guidance by scenario and failure modes (e.g., Repeat-derived false synteny, fragmented assemblies, reference-guided assemblies, tandem duplicates, chromosome-name mismatches, microsynteny vs macrosynteny, polyploid handling)

When to use it

Use when comparing genomes to identify synteny blocks, structural rearrangements, orthology-informed synteny, and macrosynteny vs microsynteny distinctions. Applicable scenarios include plant comparative genomics with GENESPACE, multi-genome macrosynteny with ntSynt, or polyploid-focused analyses with subgenome-aware approaches.

What it can touch

The skill references these tools and pipelines: MCScanX, JCVI/MCScan Python, GENESPACE, SyRI, AnchorWave, i-ADHoRe 3.0, SynNet, ntSynt, and plotsr for visualization. It also mentions requirements and input formats (e.g., 4-column BED inputs, GFF3 constraints, softmasking for repeats), but does not specify new touch points beyond invoking these tools as described above.

Caveats

  • Repeat masking quality strongly affects results; unmasked repeats inflate false synteny blocks.
  • Fragmented assemblies (N50 < 1 Mb) bias macrosynteny detection and may misrepresent rearrangements.
  • Reference-guided assemblies can produce circular synteny biases when comparing to the reference.
  • For polyploids, subgenome assignment is important to avoid inflated 1:many or many:many relationships.
  • GENESPACE OrthoFinder version compatibility can affect output if mismatched.
  • Microsynteny vs macrosynteny must be explicitly stated to avoid conflation in reports.
From the SKILL.md

## Version Compatibility Reference examples tested with: MCScanX 1.0+ (wyp1125/MCScanX commit 2020+), JCVI 1.4.21+ (Python port of MCScan), GENESPACE 1.4.0+ (Lovell 2022 eLife 78526), SyRI 1.7.1+ (Goel 2019 Genome Biol 20:277), plotsr 1.1.1+, AnchorWave 1.2.5+ (Song 2022 PNAS 119:e2113075119), i-ADHoRe 3.0.01+, SynNet (Zhao 2017 NAR 45:e108), ntSynt 1.0.4+ (2023), minimap2 2.28+, MUMmer 4.0.0+, OrthoFinder 3.0+, R 4.4+. plotsr requires pysam 0.22+ and seaborn 0.13+. Before using code patterns, verify installed versions match. If versions differ: - CLI: `MCScanX -h`; `syri --version`; `python -m jcvi.compara.catalog ortholog --help` - R: `packageVersion('GENESPACE')`; `?run_genespace` - Python: `pip show jcvi` If code throws `MCScanX: argument bad format`, `syri: input alignment file missing required columns`, or `GENESPACE: GFF parse error`, these tools have brittle input parsing: MCScanX requires 4-column `species_chr gene start end` BED (non-standard), JCVI expects 4-column simple BED, GENESPACE requires GFF3 with `gene` feature type. Pre-process with `jcvi.formats.gff bed` or custom AWK. # Synteny Analysis **"Compare genome architecture between these species"** -> Detect conserv

What's inside
Steps it walks through
  1. Version Compatibility
  2. Algorithmic Taxonomy
  3. Decision Tree by Experimental Scenario
  4. Per-Tool Failure Modes
  5. Repeat-derived false synteny
  6. Reference-guided assembly creating circular synteny
  7. Fragmented assemblies underestimating macrosynteny
  8. Tandem duplicate inflation
  9. Cross-genome chromosome name mismatch
  10. SyRI complaining about inversions in absence of true inversions
  11. GENESPACE OrthoFinder version mismatch
  12. Microsynteny vs macrosynteny conflation
  13. Polyploid / WGD-affected genome ambiguity
  14. Quantitative Thresholds
Ships with 2 files
  • examples/synteny_analysis.py
  • usage-guide.md
Commands it runs
python -m jcvi.formats.gff bed --type=gene --key=ID species_A.gff > A.gff.tmp
python -m jcvi.formats.gff bed --type=gene --key=ID species_B.gff > B.gff.tmp
awk 'BEGIN{OFS="\t"}{print "A"$1, $4, $2, $3}' A.gff.tmp > work/A.gff
awk 'BEGIN{OFS="\t"}{print "B"$1, $4, $2, $3}' B.gff.tmp > work/B.gff
cat work/A.gff work/B.gff > work/A_B.gff
diamond makedb --in species_A.faa --db work/A.dmnd
diamond makedb --in species_B.faa --db work/B.dmnd
diamond blastp --db work/A.dmnd --query species_A.faa --threads 16 \
diamond blastp --db work/B.dmnd --query species_B.faa --threads 16 \
diamond blastp --db work/B.dmnd --query species_A.faa --threads 16 \
More from awesome-bio-agent-skills
All skills →
About this skill
What does the bio-comparative-genomics-synteny-analysis skill do?

Detect syntenic blocks and structural rearrangements between genomes using MCScanX (Wang 2012), JCVI/MCScan (Tang 2008 Python), GENESPACE (Lovell 2022) for orthology-anchored riparian visualization, SyRI for structural variation, AnchorWave for sequence-level synteny, i-ADHoRe 3.0 for highly diverged species, SynNet for synteny networks, and ntSynt for multi-genome macrosynteny. Use when identifying collinear gene blocks across species, distinguishing macrosynteny from microsynteny, detecting inversions/translocations/duplications, anchoring orthology in WGD lineages, producing publication rip

How do I install it?

Run `npx skills add BioTender-max/awesome-bio-agent-skills --skill synteny-analysis --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