Agent skill

Circos Plot Generator

by aipoch in aipoch/medical-research-skills

Generate Circos configuration files for circular genomics data visualization.

MITAuto-check passedResearch & Science

Install Circos Plot Generator

skills CLI
$ npx skills add aipoch/medical-research-skills --skill circos-plot-generator -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install aipoch/medical-research-skills circos-plot-generator --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/aipoch/medical-research-skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/'scientific-skills/Data Analysis/circos-plot-generator' .claude/skills/circos-plot-generator && rm -rf skills-src

Use ~/.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/

Facts

Skill name
circos-plot-generator
GitHub stars
2k
Token cost
~9.1k tokens
SKILL.md length
2,738 words
Files
7 (incl. scripts, references)
Skills in repo
567
Repo updated
First seen
Licence
MIT

At a glance

Generate Circos configuration files for circular genomics data visualization.

  • Works in 6 steps: Genomic Variation Track Generation → Cell-Cell Communication Visualization → Chromosome Ideogram Configuration → …
  • Tasks that involve Bioinformatics
  • SKILL.md covers When to Use, Key Features, Dependencies and Example Usage, plus 13 more sections
  • Runs Python scripts from its folder; calls python and conda

What it does

Circos Plot Generator is an agent skill from aipoch/medical-research-skills. Generate Circos configuration files for circular genomics data visualization. Supports genomic variations (SNPs, CNVs, structural variants), cell-cell communication networks, and custom track configurations for publication-ready circular plots.

Its SKILL.md is about 9.1k tokens, which your agent loads only when the skill is triggered. The skill folder holds 9 other files, including scripts and reference files (for example `circos-plot-generator_audit_result_v2.json`, `references/runtime_checklist.md` and `scripts/main.py`).

It sits in Research & Science, covering Bioinformatics and Data visualization. The repository describes itself as: Hundreds of agent skills for medical research, including protocol design, data analysis, evidence insights, and academic writing. The licence is MIT.

When your agent uses it

  • Tasks that involve Bioinformatics
  • Tasks that involve Data visualization

Example prompts

  • “/circos-plot-generator”

Requirements

  • Python 3

Workflow steps

6 steps, taken from the step headings in SKILL.md.

  1. Genomic Variation Track Generation
  2. Cell-Cell Communication Visualization
  3. Chromosome Ideogram Configuration
  4. Multiple Track Layering
  5. Color Scheme Customization
  6. Configuration Export and Rendering

What it can do on your machine

Read from SKILL.md and the folder at commit 686e09d. It shows what the files ask for, not the result of running them.

  • Tool permissions

    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.

  • Runs code

    Ships 1 file in scripts/ (Python), which the agent can run.

    Shell commands in SKILL.md call:

    • python
    • conda

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Links to these hosts (documentation or services it may open):

    • circos.ca
    • bioconda.github.io
    • nature.com

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Circos Plot Generator loads about 9.1k tokens when it runs, and up to ~9.2k if it reads all its reference files. Until then it costs about 67 tokens; SKILL.md has 2,738 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~67
When it runs · the whole SKILL.md, loaded when a task matches
~9.1k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~9.2k

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.

Safety

Auto-check passed

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); the scripts in this folder are not scanned.

SKILL.md

The full file from aipoch/medical-research-skills at commit 686e09d, republished under its MIT licence (© aipoch). 2,738 words, ~9,069 tokens.

Download SKILL.mdSave it as .claude/skills/circos-plot-generator/SKILL.md (or your agent's skills folder). This skill also uses 6 other files; get the full folder from GitHub.
name
circos-plot-generator
description
Generate Circos configuration files for circular genomics data visualization. Supports genomic variations (SNPs, CNVs, structural variants), cell-cell communication networks, and custom track configurations for publication-ready circular plots.
license
MIT
author
AIPOCH

Source: https://github.com/aipoch/medical-research-skills

Circos Plot Generator

Generate configuration files for Circos circular visualization plots, enabling genomics data visualization including genomic variations, chromosome ideograms, cell-cell communication networks, and custom track annotations. Simplifies the complex Circos configuration process for researchers without Perl expertise.

Key Capabilities:

  • Genomic Variation Visualization: Create plots for SNPs, CNVs, structural variants (translocations, inversions)
  • Cell-Cell Communication Networks: Visualize intercellular interactions and signaling pathways
  • Chromosome Ideograms: Display chromosome structure with bands and annotations
  • Multiple Track Types: Support histograms, scatter plots, links, heatmaps, and text tracks
  • Publication-Ready Output: Generate configurations for high-quality PNG/SVG figures

When to Use

  • Use this skill when the task is to Generate Circos configuration files for circular genomics data visualization. Supports genomic variations (SNPs, CNVs, structural variants), cell-cell communication networks, and custom track configurations for publication-ready circular plots.
  • Use this skill for data analysis tasks that require explicit assumptions, bounded scope, and a reproducible output format.
  • Use this skill when you need a documented fallback path for missing inputs, execution errors, or partial evidence.

Key Features

  • Scope-focused workflow aligned to: Generate Circos configuration files for circular genomics data visualization. Supports genomic variations (SNPs, CNVs, structural variants), cell-cell communication networks, and custom track configurations for publication-ready circular plots.
  • Packaged executable path(s): scripts/main.py.
  • Reference material available in references/ for task-specific guidance.
  • Structured execution path designed to keep outputs consistent and reviewable.

Dependencies

See ## Prerequisites above for related details.

  • Python: 3.10+. Repository baseline for current packaged skills.
  • yaml: unspecified. Declared in requirements.txt.

Example Usage

config = { "type": "variation", "title": "Genomic Landscape", "data": "variants.csv", "output": "./output" }

result = generate_and_render(config, render=True)


**Output Files:**

| File | Description | Format |
|------|-------------|--------|
| `circos.conf` | Main configuration | Text |
| `data/karyotype.txt` | Chromosome definitions | Text |
| `data/*.txt` | Track data files | TSV |
| `circos.png` | Raster image (if rendered) | PNG |
| `circos.svg` | Vector image (if rendered) | SVG |

**Rendering Requirements:**

| Component | Installation | Command |
|-----------|--------------|---------|
| **Circos** | `conda install -c bioconda circos` | `circos -conf circos.conf` |
| **Perl** | Usually pre-installed | Required by Circos |
| **GD library** | System package | Image generation |

**Best Practices:**
- ✅ **Generate SVG for publication** - scalable, editable
- ✅ **Use PNG for drafts** - faster rendering
- ✅ **Check file sizes** - high-res images can be large
- ✅ **Archive configurations** - for reproducibility

**Common Issues and Solutions:**

**Issue: Circos installation fails**
- Symptom: "circos: command not found"
- Solution: Use conda installation; check Perl and GD dependencies

**Issue: Rendering produces warnings**
- Symptom: Many "skip" or "warning" messages
- Solution: Usually harmless; check output image quality; adjust data ranges

---

## Implementation Details

See `## Workflow` above for related details.

- Execution model: validate the request, choose the packaged workflow, and produce a bounded deliverable.
- Input controls: confirm the source files, scope limits, output format, and acceptance criteria before running any script.
- Primary implementation surface: `scripts/main.py`.
- Reference guidance: `references/` contains supporting rules, prompts, or checklists.
- Parameters to clarify first: input path, output path, scope filters, thresholds, and any domain-specific constraints.
- Output discipline: keep results reproducible, identify assumptions explicitly, and avoid undocumented side effects.

## Quick Check

Use this command to verify that the packaged script entry point can be parsed before deeper execution.

```bash
python -m py_compile scripts/main.py

Audit-Ready Commands

Use these concrete commands for validation. They are intentionally self-contained and avoid placeholder paths.

bash
python -m py_compile scripts/main.py
python scripts/main.py --help

Workflow

  1. Confirm the user objective, required inputs, and non-negotiable constraints before doing detailed work.
  2. Validate that the request matches the documented scope and stop early if the task would require unsupported assumptions.
  3. Use the packaged script path or the documented reasoning path with only the inputs that are actually available.
  4. Return a structured result that separates assumptions, deliverables, risks, and unresolved items.
  5. If execution fails or inputs are incomplete, switch to the fallback path and state exactly what blocked full completion.

Integration with Other Skills

Upstream Skills:

  • cnv-caller-plotter: Generate CNV calls for visualization in Circos
  • crispr-screen-analyzer: Prepare hit data for genomic context visualization
  • bio-ontology-mapper: Map features to genomic coordinates for track display

Downstream Skills:

  • dpi-upscaler-checker: Verify output resolution meets publication requirements
  • journal-cover-prompter: Generate AI prompts for journal covers using Circos plots
  • figure-legend-gen: Create figure legends for complex Circos visualizations

Complete Workflow:

WGS Data → cnv-caller-plotter → circos-plot-generator → dpi-upscaler-checker → Publication Figure

Core Capabilities

1. Genomic Variation Track Generation

Create tracks for visualizing genomic variations including SNPs, CNVs, and structural variants.

python
from scripts.main import CircosConfig

# Configuration for genomic variation plot
config = {
    "type": "variation",
    "title": "Sample Genomic Variations",
    "data": "variations.csv",
    "width": 1200,
    "height": 1200,
    "color_scheme": "nature",
    "output": "./circos_output"
}

# Generate configuration
generator = CircosConfig(config)
config_path = generator.generate()

print(f"Configuration generated: {config_path}")
print(f"Tracks included:")
print("  - Histogram track for SNPs/CNVs")
print("  - Link track for structural variants")
print("  - Chromosome ideogram")

Input Data Format:

ColumnDescriptionExample
chromChromosome namechr1, chrX
startStart position1000000
endEnd position2000000
typeVariation typeSNP, CNV, TRANSLOCATION
valueScore or magnitude0.5, -0.8
target_chromFor SVs: target chromosomechr5
target_startFor SVs: target start5000000

Variation Types Supported:

TypeVisualizationColor Coding
SNPHistogram pointsBlue/Red (gain/loss)
CNVHistogram barsGreen/Orange (amplification/deletion)
TRANSLOCATIONLinks between chromosomesPurple ribbons
INVERSIONIntra-chromosomal linksYellow
DELETIONHistogram barsRed
DUPLICATIONHistogram barsBlue

Best Practices:

  • ✅ Normalize values to -1 to +1 range for consistent scaling
  • ✅ Use appropriate bin sizes (1-10 Mb) for genome-wide views
  • ✅ Color code by type for easy interpretation
  • ✅ Include ideogram for chromosome context

Common Issues and Solutions:

Issue: Too many data points causing clutter

  • Symptom: Plot looks crowded with overlapping elements
  • Solution: Increase bin size; filter for significant variants only; use transparency

Issue: Chromosome naming mismatch

  • Symptom: Data not appearing on correct chromosomes
  • Solution: Use consistent naming (chr1, chr2, ... chrX, chrY); check for "1" vs "chr1"
2. Cell-Cell Communication Visualization

Create circular plots showing interactions between cell types in tissues or tumors.

python
from scripts.main import CircosConfig

# Configuration for cell-cell communication
config = {
    "type": "cell-comm",
    "title": "Tumor Microenvironment Interactions",
    "data": "cell_communication.csv",
    "width": 1000,
    "height": 1000,
    "color_scheme": "cell",
    "output": "./cell_comm_plots"
}

generator = CircosConfig(config)
config_path = generator.generate()

print("Cell-cell communication plot configured:")
print("  - Cell types arranged in circle")
print("  - Connection ribbons showing interactions")
print("  - Labels for each cell type")

Input Format for Cell Communication:

ColumnDescriptionExample
sourceSource cell typeT_Cell
targetTarget cell typeMacrophage
weightInteraction strength (0-1)0.8
typeInteraction typeLigand-Receptor, Secreted

Visualization Features:

FeatureDescriptionUse Case
Ribbon linksConnection width ∝ interaction strengthShow communication intensity
Cell segmentsEach cell type as chromosome segmentCompare cell type abundance
LabelsCell type names outside circleIdentify cells easily
ColorsDistinct colors per cell typeDistinguish cell types

Best Practices:

  • ✅ Normalize weights to 0-1 scale for consistent ribbon sizing
  • ✅ Group related cell types together in input file
  • ✅ Use distinct colors for each cell type (max 8-10 for clarity)
  • ✅ Filter weak interactions (weight < 0.2) to reduce clutter

Common Issues and Solutions:

Issue: Too many cell types causing confusion

  • Symptom: Plot crowded with >10 cell types
  • Solution: Group rare cell types into "Other"; create separate plots for major groups

Issue: Bidirectional interactions not clear

  • Symptom: Can't distinguish A→B from B→A
  • Solution: Use arrow indicators; color-code by direction; split into two plots
3. Chromosome Ideogram Configuration

Generate chromosome ideograms showing banding patterns and genomic coordinates.

python
from scripts.main import CircosConfig, CHROMOSOME_SIZES

# View available chromosomes
print("Available chromosomes (GRCh38/hg38):")
for chrom, size in CHROMOSOME_SIZES.items():
    size_mb = size / 1_000_000
    print(f"  {chrom}: {size_mb:.1f} Mb")

# Custom chromosome selection
config = {
    "type": "variation",
    "title": "Chr1-5 Variations",
    "chromosomes": ["chr1", "chr2", "chr3", "chr4", "chr5"],  # Subset
    "width": 1000,
    "height": 1000,
    "output": "./chr1-5_plots"
}

# Note: Chromosome selection handled in data preprocessing

Chromosome Specifications:

ChromosomeSize (bp)Display Color
chr1248,956,422Red
chr2242,193,529Orange
chr3198,295,559Yellow
.........
chrX156,040,895Purple
chrY57,227,415Grey

Ideogram Features:

FeatureDescriptionConfiguration
SpacingGap between chromosomes0.005r (0.5% of radius)
ThicknessChromosome bar width25 pixels
LabelsChromosome namesOutside circle
BandsCytogenetic bandsShow/hide option
TicksScale markers5u and 25u spacing

Best Practices:

  • ✅ Include all autosomes for genome-wide views
  • ✅ Show X and Y for sex chromosome analysis
  • ✅ Use consistent scaling across samples
  • ✅ Add cytoband information for clinical relevance

Common Issues and Solutions:

Issue: Small chromosomes (chr21, chrY) hard to see

  • Symptom: Very small segments for small chromosomes
  • Solution: Use non-linear scaling; create zoomed inset plots

Issue: Mitochondrial DNA not included

  • Symptom: chrM variants not shown
  • Solution: Add chrM to CHROMOSOME_SIZES dict; or exclude mitochondrial from plot
4. Multiple Track Layering

Overlay multiple data tracks in concentric circles for complex visualizations.

python
from scripts.main import CircosConfig

# Multi-track configuration
config = {
    "type": "custom",
    "title": "Multi-Track Genome View",
    "width": 1200,
    "height": 1200,
    "tracks": [
        {
            "type": "histogram",
            "file": "data/cnv_track.txt",
            "color": "color0"  # Red
        },
        {
            "type": "histogram", 
            "file": "data/snp_track.txt",
            "color": "color1"  # Blue
        },
        {
            "type": "link",
            "file": "data/sv_links.txt",
            "color": "color2"  # Green
        }
    ],
    "output": "./multi_track"
}

generator = CircosConfig(config)
config_path = generator.generate()

Track Positioning:

TrackRadius RangeTypical Use
Outer 10.95r - 0.80rPrimary data (CNVs)
Outer 20.80r - 0.65rSecondary data (SNPs)
Middle0.65r - 0.50rLinks/connections
Inner0.50r - 0.35rAnnotations/labels

Track Types:

TypeData FormatBest For
Histogramchr start end valueContinuous values (CNVs, expression)
Scatterchr start end value x yPoint data with categories
Heatmapchr start end value0 value1...Multi-sample comparisons
Linkchr1 start1 end1 chr2 start2 end2Connections (SVs, interactions)
Textchr start end labelGene names, annotations

Best Practices:

  • ✅ Limit to 3-4 tracks for readability
  • ✅ Use complementary colors for different data types
  • ✅ Add track labels in figure legend
  • ✅ Consider track order - most important data outermost

Common Issues and Solutions:

Issue: Tracks overlapping

  • Symptom: Data from different tracks hard to distinguish
  • Solution: Adjust radius ranges; use different track types; add transparency

Issue: Scale differences between tracks

  • Symptom: One track dominates visualization
  • Solution: Normalize each track to 0-1 range; use separate color scales
5. Color Scheme Customization

Select from predefined color schemes or define custom colors for publication consistency.

python
from scripts.main import CircosConfig, COLOR_SCHEMES

# View available color schemes
print("Available color schemes:")
for name, colors in COLOR_SCHEMES.items():
    print(f"\n{name.upper()}:")
    print(f"  Colors: {', '.join(colors[:4])}...")

# Example outputs for each scheme
scheme_examples = {
    "default": ["red", "blue", "green", "orange"],
    "nature": ["#E64B35", "#4DBBD5", "#00A087", "#3C5488"],
    "lancet": ["#00468B", "#ED0000", "#42B540", "#0099B4"],
    "cell": ["#1B9E77", "#D95F02", "#7570B3", "#E7298A"]
}

# Usage
config = {
    "type": "variation",
    "color_scheme": "nature",  # Publication-quality colors
    # ... other config
}

Color Schemes:

SchemeStyleBest For
defaultBasic colorsQuick visualization, drafts
natureNature journal colorsNature publications
lancetLancet journal colorsMedical/clinical papers
cellCell journal colorsCell biology papers

Custom Colors:

python

# Define custom scheme
my_colors = ["#FF6B6B", "#4ECDC4", "#45B7D1", "#96CEB4", "#FFEAA7"]
COLOR_SCHEMES["custom"] = my_colors

config["color_scheme"] = "custom"

Best Practices:

  • ✅ Use colorblind-friendly palettes for accessibility
  • ✅ Match journal requirements for submissions
  • ✅ Maintain consistency across all figures in paper
  • ✅ Test printed output - colors may differ from screen

Common Issues and Solutions:

Issue: Colors not distinct enough

  • Symptom: Hard to distinguish adjacent tracks
  • Solution: Increase color contrast; use complementary colors

Issue: Colors don't match brand/institution

  • Symptom: Need specific institutional colors
  • Solution: Define custom color scheme with hex codes
6. Configuration Export and Rendering

Generate complete Circos configuration and optionally render the plot.

python
import subprocess
from pathlib import Path
from scripts.main import CircosConfig

def generate_and_render(config: dict, render: bool = False) -> dict:
    """
    Generate Circos config and optionally render plot.
    
    Returns:
        dict with paths and status
    """
    # Generate configuration
    generator = CircosConfig(config)
    config_path = generator.generate()
    
    result = {
        "config_path": config_path,
        "data_dir": str(generator.data_dir),
        "rendered": False,
        "output_image": None
    }
    
    # Attempt to render
    if render:
        output_dir = Path(config["output"])
        try:
            proc_result = subprocess.run(
                ["circos", "-conf", config_path],
                capture_output=True,
                text=True,
                cwd=output_dir
            )
            
            if proc_result.returncode == 0:
                result["rendered"] = True
                result["output_image"] = str(output_dir / "circos.png")
                print("✅ Plot rendered successfully!")
            else:
                print(f"❌ Rendering failed: {proc_result.stderr}")
        except FileNotFoundError:
            print("⚠️  Circos not installed. Configuration ready for manual rendering.")
            print(f"   Run: cd {output_dir} && circos -conf circos.conf")
    
    return result

## Complete Workflow Example

**From variant calls to publication figure:**

```text

# Step 1: Create sample data for testing
python scripts/main.py --create-sample variation --output ./data

# Step 2: Generate configuration
python scripts/main.py \
  --data ./data/sample_variations.csv \
  --type variation \
  --title "Tumor Genomic Landscape" \
  --color-scheme nature \
  --width 1200 \
  --height 1200 \
  --output ./plots

# Step 3: Render plot (requires Circos)
python scripts/main.py \
  --data ./data/sample_variations.csv \
  --type variation \
  --output ./plots \
  --render

Python API Usage:

python
from scripts.main import CircosConfig
import pandas as pd

def create_genomic_landscape_plot(
    variation_data: pd.DataFrame,
    output_dir: str = "./circos_output",
    title: str = "Genomic Variations"
) -> str:
    """
    Create comprehensive genomic landscape Circos plot.
    
    Args:
        variation_data: DataFrame with columns [chrom, start, end, type, value]
        output_dir: Output directory for files
        title: Plot title
        
    Returns:
        Path to generated configuration file
    """
    # Save data to CSV
    data_path = f"{output_dir}/input_data.csv"
    variation_data.to_csv(data_path, index=False)
    
    # Generate configuration
    config = {
        "type": "variation",
        "title": title,
        "data": data_path,
        "width": 1200,
        "height": 1200,
        "color_scheme": "nature",
        "output": output_dir
    }
    
    generator = CircosConfig(config)
    config_path = generator.generate()
    
    # Print summary
    print(f"✅ Circos configuration generated")
    print(f"   Config: {config_path}")
    print(f"   Data directory: {generator.data_dir}")
    print(f"\nTo render:")
    print(f"   circos -conf {config_path}")
    
    return config_path

# Example with sample data
sample_data = pd.DataFrame({
    'chrom': ['chr1', 'chr1', 'chr2', 'chr5', 'chrX'],
    'start': [1000000, 5000000, 1000000, 5000000, 5000000],
    'end': [2000000, 6000000, 1500000, 7000000, 8000000],
    'type': ['SNP', 'CNV', 'SNP', 'TRANSLOCATION', 'DELETION'],
    'value': [0.5, -0.8, 0.3, None, -1.0],
    'target_chrom': [None, None, None, 'chr2', None],
    'target_start': [None, None, None, 8000000, None],
    'target_end': [None, None, None, 10000000, None]
})

config_file = create_genomic_landscape_plot(
    sample_data,
    output_dir="./my_plot",
    title="Sample Genomic Landscape"
)

Expected Output Files:

circos_output/
├── circos.conf              # Main configuration
├── data/
│   ├── karyotype.txt        # Chromosome definitions
│   ├── variations.txt       # Histogram data
│   └── links.txt            # Structural variant links
└── (after rendering)
    ├── circos.png           # Raster output
    └── circos.svg           # Vector output

Common Patterns

Pattern 1: Cancer Genomic Landscape

Scenario: Visualize genomic alterations in a tumor sample for publication.

json
{
  "plot_type": "variation",
  "title": "Tumor Genomic Landscape",
  "data_layers": [
    "CNV (outer track)",
    "SNV density (middle track)",
    "Structural variants (links)"
  ],
  "color_scheme": "nature",
  "resolution": "1200x1200",
  "publication": "Nature Medicine"
}

Workflow:

  1. Collect CNV data from WGS or SNP array
  2. Get SNV calls from exome/WGS
  3. Identify structural variants (SVs)
  4. Generate Circos configuration
  5. Render and export high-resolution PNG/SVG
  6. Create figure legend and methods description

Output Example:

Cancer Genomic Landscape Plot:
  - CNV track: 47 copy number alterations
  - SNV track: 2,847 mutations (density)
  - SV links: 12 translocations, 8 inversions
  
Key findings visible:
  - Chr8 MYC amplification
  - Chr17 TP53 deletion
  - Chr7-14 translocation
  
Publication ready: 1200x1200 PNG + SVG
Pattern 2: Tumor Microenvironment

Scenario: Visualize cell-cell communication in tumor microenvironment.

json
{
  "plot_type": "cell-comm",
  "title": "TME Communication Network",
  "cell_types": [
    "T_Cell", "B_Cell", "Macrophage",
    "NK_Cell", "Tumor_Cell", "Fibroblast"
  ],
  "data_source": "CellChat analysis",
  "filter": "weight > 0.3",
  "color_scheme": "cell"
}

Workflow:

  1. Run CellChat or similar on scRNA-seq data
  2. Export communication probabilities
  3. Filter for significant interactions
  4. Generate Circos configuration
  5. Adjust colors for each cell type
  6. Add annotations for key pathways

Output Example:

TME Communication Network:
  Cell types: 6
  Interactions: 24 (filtered from 156)
  
Major communication axes:
  - T_Cell → Macrophage (strongest)
  - Dendritic → T_Cell
  - Tumor → Macrophage
  
Insights:
  - Immunosuppressive signaling dominant
  - Limited NK cell activation
Pattern 3: Comparative Genomics

Scenario: Compare synteny between two species or strains.

json
{
  "plot_type": "custom",
  "title": "Human-Mouse Synteny",
  "tracks": [
    {
      "type": "link",
      "data": "synteny_blocks.txt",
      "description": "Conserved regions"
    }
  ],
  "genomes": ["hg38", "mm10"],
  "color_by": "chromosome"
}

Workflow:

  1. Identify syntenic blocks between genomes
  2. Map coordinates to common reference
  3. Create link track for conserved regions
  4. Generate dual-genome Circos plot
  5. Color-code by chromosome of origin
  6. Highlight breakpoints and rearrangements

Output Example:

Synteny Comparison:
  Human chromosomes: 22 + X + Y
  Mouse chromosomes: 19 + X + Y
  Syntenic blocks: 342
  
Key observations:
  - Chr12 conservation strong
  - Multiple breakpoints on Chr1
  - X chromosome largely conserved
Pattern 4: Time-Series Evolution

Scenario: Track clonal evolution through treatment timepoints.

json
{
  "plot_type": "custom",
  "title": "Clonal Evolution Over Time",
  "timepoints": ["Baseline", "Post-Treatment", "Relapse"],
  "tracks": [
    "Baseline CNV",
    "Post-Treatment CNV",
    "Relapse CNV",
    "Clonal links"
  ],
  "color_scheme": "lancet"
}

Workflow:

  1. Collect CNV data from multiple timepoints
  2. Track clone frequencies
  3. Create separate track for each timepoint
  4. Add links showing clone relationships
  5. Generate evolution Circos plot
  6. Annotate treatment events

Output Example:

Clonal Evolution Plot:
  Timepoints: 3
  Clones tracked: 5
  
Evolutionary trajectory:
  - Baseline: 3 subclones
  - Post-treatment: 1 dominant clone
  - Relapse: New clone emergence
  
Therapeutic implications:
  - Pre-existing resistance clone expanded
  - New mutation acquired at relapse

Quality Checklist

Data Preparation:

  • CRITICAL: Verify chromosome naming consistency (chr1 vs 1)
  • Check coordinate system (0-based vs 1-based)
  • Validate all positions within chromosome bounds
  • Normalize values to appropriate ranges
  • Filter out low-quality or ambiguous data
  • Ensure no duplicate entries
  • Check for missing values and handle appropriately
  • Verify file formats (CSV with proper headers)

Configuration:

  • CRITICAL: Set appropriate image size for publication (min 1200x1200)
  • Choose color scheme matching journal requirements
  • Set track radii to avoid overlap
  • Configure chromosome spacing for readability
  • Add descriptive title
  • Set up proper scaling for each track
  • Choose appropriate color for each data type
  • Test with subset of data first

Rendering:

  • CRITICAL: Generate SVG for publication-quality output
  • Check PNG output for visual quality
  • Verify all tracks visible and correctly positioned
  • Test color visibility (colorblind-friendly check)
  • Confirm labels readable at target size
  • Check for rendering warnings or errors
  • Verify file sizes reasonable
  • Archive configuration files

Publication:

  • CRITICAL: Include scale bars and legends
  • Add chromosome labels clearly
  • Include figure caption with data description
  • Note software version in methods
  • Provide data availability statement
  • Check journal figure requirements (size, format)
  • Create supplementary data files if needed
  • Test figure at print resolution

Show full SKILL.md (1,113 more words)Show less

Common Pitfalls

Data Issues:

  • ❌ Inconsistent chromosome names → Data missing from plot

    • ✅ Use consistent "chr" prefix (chr1, chr2, not 1, 2)
  • ❌ Coordinates out of bounds → Rendering errors

    • ✅ Verify all coordinates ≤ chromosome size
  • ❌ Too many data points → Cluttered, slow rendering

    • ✅ Filter for significance; increase bin size
  • ❌ Missing values not handled → Gaps or errors

    • ✅ Impute or filter missing values before plotting

Configuration Issues:

  • ❌ Tracks overlap → Data unreadable

    • ✅ Adjust radius ranges; use transparency
  • ❌ Colors too similar → Can't distinguish tracks

    • ✅ Use distinct, contrasting colors
  • ❌ Font too small → Labels unreadable

    • ✅ Increase font sizes for publication
  • ❌ Image too small → Poor resolution

    • ✅ Use minimum 1200x1200 for publications

Interpretation Issues:

  • ❌ No scale reference → Values unclear

    • ✅ Add color scale and value ranges
  • ❌ Missing legend → Data types unexplained

    • ✅ Include comprehensive figure legend
  • ❌ No chromosome labels → Location unclear

    • ✅ Label all chromosomes clearly
  • ❌ Too much information → Figure overwhelming

    • ✅ Limit to 3-4 key data types per plot

Troubleshooting

Problem: Configuration generates but Circos won't render

  • Symptoms: "Can't open file" or "Invalid configuration" errors
  • Causes:
    • Missing data files
    • Incorrect file paths
    • Syntax errors in configuration
    • Missing Circos installation
  • Solutions:
    • Verify all data files exist in data/ directory
    • Check file paths are absolute or correct relative paths
    • Validate configuration syntax
    • Install Circos: conda install -c bioconda circos

Problem: Plot is blank or missing data

  • Symptoms: Chromosomes shown but no data tracks
  • Causes:
    • Data format incorrect
    • Chromosome name mismatch
    • Values out of visible range
  • Solutions:
    • Check data format matches expected (TSV, correct columns)
    • Verify chromosome names (chr1 vs 1)
    • Check min/max values in data files

Problem: Colors not as expected

  • Symptoms: Wrong colors or all same color
  • Causes:
    • Color scheme name misspelled
    • Custom colors not defined
    • Color values out of range
  • Solutions:
    • Check color_scheme name matches available schemes
    • Define custom colors if needed
    • Verify color values are valid hex codes

Problem: Links/connections not showing

  • Symptoms: Histograms visible but no SV links
  • Causes:
    • Link data format incorrect
    • Target coordinates missing
    • Link radius outside visible area
  • Solutions:
    • Check link file format: chr1 start1 end1 chr2 start2 end2
    • Verify target coordinates provided for translocations
    • Adjust link radius parameter

Problem: Text labels overlapping

  • Symptoms: Gene names or labels unreadable
  • Causes:
    • Too many labels in small space
    • Font size too large
    • Insufficient label radius
  • Solutions:
    • Filter labels to show only most important
    • Reduce font size
    • Increase label radius (move further from center)
    • Use label collision detection if available

Problem: Rendering is very slow

  • Symptoms: Takes minutes or hours to generate plot
  • Causes:
    • Too many data points
    • High resolution settings
    • Complex link calculations
  • Solutions:
    • Reduce data points (filter or bin)
    • Lower image resolution for drafts
    • Simplify link visualization
    • Use PNG instead of SVG for faster rendering

References

Available in references/ directory:

  • (No reference files currently available for this skill)

External Resources:


Scripts

Located in scripts/ directory:

  • main.py - Circos configuration generator with support for variations and cell communication

Color Scheme Reference

Default: red, blue, green, orange, purple, cyan

Nature: #E64B35, #4DBBD5, #00A087, #3C5488, #F39B7F, #8491B4

Lancet: #00468B, #ED0000, #42B540, #0099B4, #925E9F, #FDAF91

Cell: #1B9E77, #D95F02, #7570B3, #E7298A, #66A61E, #E6AB02

Parameters

ParameterTypeDefaultRequiredDescription
--datastring-YesInput data file (TSV/CSV format)
--output, -ostringcircos.svgNoOutput SVG file path
--typestringvariationNoPlot type (variation, cell-communication)
--colorsstringdefaultNoColor scheme (default, nature, lancet, cell)
--radiusfloat400NoPlot radius in pixels
--help, -hflag-NoShow help message

Usage

Basic Usage
text

# Generate genomic variation Circos plot
python scripts/main.py --data variations.tsv --output genome.svg

# Cell communication plot with custom colors
python scripts/main.py --data cell_comm.tsv --type cell-communication --colors nature

# Custom radius
python scripts/main.py --data data.tsv --radius 500 --output large.svg
Input Data Format

Variation data (TSV format):

chromosome	position	value
chr1	1000000	0.5
chr1	2000000	-0.3
chr2	500000	0.8

Cell communication data (TSV format):

cell_type1	cell_type2	interaction_strength
T_cell	B_cell	0.75
Macrophage	T_cell	0.60

Risk Assessment

Risk IndicatorAssessmentLevel
Code ExecutionPython script executed locallyLow
Network AccessNo external API callsLow
File System AccessRead input data, write output SVGLow
Data ExposureProcesses genomic dataLow
Resource UsageGenerates SVG files (can be large)Low

Security Checklist

  • No hardcoded credentials or API keys
  • No unauthorized file system access
  • Input validation for file paths
  • Output directory restricted
  • Error messages sanitized
  • Script execution in sandboxed environment
  • No network connections

Prerequisites

text

# Python 3.7+

# No external packages required (uses standard library)

# Output: SVG format (viewable in web browsers)

Evaluation Criteria

Success Metrics
  • Successfully generates Circos configuration
  • Creates valid SVG output files
  • Supports multiple color schemes
  • Handles both variation and cell communication data
Test Cases
  1. Variation Plot: Genomic data → Circular genome visualization
  2. Cell Communication: Interaction matrix → Cell-type network diagram
  3. Custom Colors: Data + color scheme → Styled visualization

Lifecycle Status

  • Current Stage: Active
  • Next Review Date: 2026-03-09
  • Known Issues: None
  • Planned Improvements:
    • Add more plot types (methylation, expression)
    • Support for interactive HTML output
    • Integration with common genomic formats (VCF, BED)

Last Updated: 2026-02-09
Skill ID: 186
Version: 2.0 (K-Dense Standard)

Output Requirements

Every final response should make these items explicit when they are relevant:

  • Objective or requested deliverable
  • Inputs used and assumptions introduced
  • Workflow or decision path
  • Core result, recommendation, or artifact
  • Constraints, risks, caveats, or validation needs
  • Unresolved items and next-step checks

Error Handling

  • If required inputs are missing, state exactly which fields are missing and request only the minimum additional information.
  • If the task goes outside the documented scope, stop instead of guessing or silently widening the assignment.
  • If scripts/main.py fails, report the failure point, summarize what still can be completed safely, and provide a manual fallback.
  • Do not fabricate files, citations, data, search results, or execution outcomes.

Input Validation

This skill accepts requests that match the documented purpose of circos-plot-generator and include enough context to complete the workflow safely.

Do not continue the workflow when the request is out of scope, missing a critical input, or would require unsupported assumptions. Instead respond:

circos-plot-generator only handles its documented workflow. Please provide the missing required inputs or switch to a more suitable skill.

Response Template

Use the following fixed structure for non-trivial requests:

  1. Objective
  2. Inputs Received
  3. Assumptions
  4. Workflow
  5. Deliverable
  6. Risks and Limits
  7. Next Checks

If the request is simple, you may compress the structure, but still keep assumptions and limits explicit when they affect correctness.

Inputs to Collect

  • Required inputs: the user goal, the primary data or source file, and the requested output format.
  • Optional inputs: output directory, formatting preferences, and validation constraints.
  • If a required input is unavailable, return a short clarification request before continuing.

Output Contract

  • Return a short summary, the main deliverables, and any assumptions that materially affect interpretation.
  • If execution is partial, label what succeeded, what failed, and the next safe recovery step.
  • Keep the final answer within the documented scope of the skill.

Validation and Safety Rules

  • Validate identifiers, file paths, and user-provided parameters before execution.
  • Do not fabricate results, metrics, citations, or downstream conclusions.
  • Use safe fallback behavior when dependencies, credentials, or required inputs are missing.
  • Surface any execution failure with a concise diagnosis and recovery path.

© aipoch, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 6 other files (scripts, references) in scientific-skills/Data Analysis/circos-plot-generator of aipoch/medical-research-skills.

  • SKILL.md
  • circos-plot-generator_audit_result_v2.json
  • circos.conf
  • data/karyotype.txt
  • references/runtime_checklist.md
  • requirements.txt
  • scripts/main.py

Open the folder on GitHubat commit 686e09d

Compare with similar skills

Circos Plot Generator 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.

Circos Plot Generator compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Circos Plot Generator this skillaipoch/medical-research-skills2k—~9.1kAutomated safety check: PassMIT
Scanpy Single-Cell Analysisdavila7/claude-code-templates32k16 repos~2.8kAutomated safety check: PassMIT
deepTools NGS Toolkitdavila7/claude-code-templates32k13 repos~4.5kAutomated safety check: PassMIT
FBA Flux Analyzeraiming-lab/AutoResearchClaw15k—~2.3kAutomated safety check: PassMIT
Ukb Ppp Region FetchClawBio/ClawBio1.2k—~4.6kAutomated safety check: PassMIT
Bio Data Visualization Genome TracksGPTomics/bioSkills1.2k2 repos~3.3kAutomated safety check: PassMIT

Similar skills

  • Scanpy Single-Cell Analysis

    davila7/claude-code-templates

    Walks through single-cell RNA-seq analysis with Scanpy: loading .h5ad and 10X data, QC, normalization, PCA and UMAP, Leiden clustering, marker genes and cell type annotation.

    32k GitHub starsUsed in 16 repos~2.8k tokens
    Research & ScienceAuto-check passed
  • deepTools NGS Toolkit

    davila7/claude-code-templates

    Guides use of deepTools on sequencing data: BAM to bigWig conversion, QC, sample correlation, and heatmaps or profiles around TSS and peaks for ChIP-seq, RNA-seq and ATAC-seq.

    32k GitHub starsUsed in 13 repos~4.5k tokens
    Research & ScienceAuto-check passed
  • FBA Flux Analyzer

    aiming-lab/AutoResearchClaw

    Turns raw flux balance analysis output and a COBRApy model into gene essentiality maps, phenotypic phase planes, flux sampling results, pathway summaries and secretion predictions.

    15k GitHub stars~2.3k tokensUpdated 1 mo ago
    Research & ScienceAuto-check passed
  • Ukb Ppp Region Fetch

    ClawBio/ClawBio

    Fetch a regional slice of plasma pQTL summary statistics from the UK Biobank Pharma Proteomics Project (UKB-PPP; Sun 2023 Nature) for a specific (protein, ancestry) measurement.

    1.2k GitHub stars~4.6k tokensUpdated yesterday
    Research & ScienceAuto-check passed
  • Build genome-browser-style multi-track figures with pyGenomeTracks (config-driven), Gviz (R), and IGV batch screenshotting.

    1.2k GitHub starsUsed in 2 repos~3.3k tokens
    Research & ScienceAuto-check passed
  • Bio Hi C Analysis Hic Visualization

    FreedomIntelligence/OpenClaw-Medical-Skills

    Visualize Hi-C contact matrices, TADs, loops, and genomic features using matplotlib, cooltools, and HiCExplorer.

    3.1k GitHub starsUsed in 1 repo~2.2k tokens
    Research & ScienceAuto-check passed

More from aipoch/medical-research-skills

All 567 skills in this repo
  • Academic Poster Generator

    aipoch/medical-research-skills

    Complete workflow for generating academic research posters from PDF literature; use when you need to extract paper content from PDFs and produce a LaTeX-based poster…

    2k GitHub stars~2.2k tokensUpdated 20 days ago
    Auto-check passed
  • Diagnostic Study Quality Assessment Quadas

    aipoch/medical-research-skills

    Analyzes clinical diagnostic accuracy studies for bias using the QUADAS-2 tool.

    2k GitHub stars~1.4k tokensUpdated 20 days ago
    Auto-check passed
  • Exploratory Data Analysis

    aipoch/medical-research-skills

    Perform comprehensive exploratory data analysis on scientific data files across 200+ file formats.

    2k GitHub stars~3.7k tokensUpdated 20 days ago
    Auto-check passed
  • Iso Certification

    aipoch/medical-research-skills

    A toolkit for preparing ISO 13485:2016 certification documentation for medical device QMS.

    2k GitHub stars~1.8k tokensUpdated 20 days ago
    Auto-check passed
  • Journal Skills

    aipoch/medical-research-skills

    Recommends target journals for manuscript submission by analyzing the paper topic/abstract and the journal distribution of similar PubMed literature; use when users ask for journal…

    2k GitHub stars~1.7k tokensUpdated 20 days ago
    Auto-check passed
  • Latex Posters

    aipoch/medical-research-skills

    Creates academic-poster writing packages for LaTeX using beamerposter, tikzposter, or baposter.

    2k GitHub stars~1.3k tokensUpdated 20 days ago
    Auto-check passed

Questions about Circos Plot Generator

What does Circos Plot Generator do?

Generate Circos configuration files for circular genomics data visualization. Circos Plot Generator is an agent skill from aipoch/medical-research-skills. Generate Circos configuration files for circular genomics data visualization.

When should I use Circos Plot Generator?

Circos Plot Generator fits situations like: tasks that involve Bioinformatics; tasks that involve Data visualization.

How do I install Circos Plot Generator in Claude Code?

Run `npx skills add aipoch/medical-research-skills --skill circos-plot-generator -a claude-code`. Or copy the skill folder (scientific-skills/Data Analysis/circos-plot-generator in aipoch/medical-research-skills) into .claude/skills/circos-plot-generator in your project. Claude Code loads it when a task matches its description.

How do I install Circos Plot Generator in Codex?

Run `npx skills add aipoch/medical-research-skills --skill circos-plot-generator -a codex`. Or copy the skill folder (scientific-skills/Data Analysis/circos-plot-generator in aipoch/medical-research-skills) into .agents/skills/circos-plot-generator in your project. Codex loads it when a task matches its description.

Can I use Circos Plot Generator in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add aipoch/medical-research-skills --skill circos-plot-generator -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/circos-plot-generator, .gemini/skills/circos-plot-generator, .github/skills/circos-plot-generator and .opencode/skills/circos-plot-generator in your project.

What does Circos Plot Generator need to run?

Going by SKILL.md and its folder, Circos Plot Generator needs Python for the scripts in its folder and the command-line tools its instructions call (python and conda). Our summary lists: Python 3.

Does Circos Plot Generator access the network?

SKILL.md names 3 domains. As links in the text: circos.ca, bioconda.github.io and nature.com. This is read from the text; nothing was executed.

Is Circos Plot Generator safe to install?

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. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.

What licence does Circos Plot Generator use?

Circos Plot Generator is published under the MIT licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Circos Plot Generator use?

About 9.1k tokens (SKILL.md is roughly 36k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 136 tokens, read only when the agent opens those files.

What are the alternatives to Circos Plot Generator?

Skills that share tags, products or a category with Circos Plot Generator: Scanpy Single-Cell Analysis (davila7/claude-code-templates, 32k stars), deepTools NGS Toolkit (davila7/claude-code-templates, 32k stars), FBA Flux Analyzer (aiming-lab/AutoResearchClaw, 15k stars) and Ukb Ppp Region Fetch (ClawBio/ClawBio, 1.2k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Circos Plot Generator?

aipoch (a GitHub organization) maintains it in aipoch/medical-research-skills, which has 1,973 GitHub stars. The repository holds 567 skills in this directory. The repository was last updated on September 17, 2026.

Source: aipoch/medical-research-skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.