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.
Generate Circos configuration files for circular genomics data visualization.
$ npx skills add aipoch/medical-research-skills --skill circos-plot-generator -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install aipoch/medical-research-skills circos-plot-generator --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/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-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 "circos-plot-generator" agent skill from https://github.com/aipoch/medical-research-skills/tree/main/scientific-skills/Data%20Analysis/circos-plot-generator into .claude/skills/circos-plot-generator/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "circos-plot-generator", 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/aipoch/medical-research-skills/tree/main/scientific-skills/Data%20Analysis/circos-plot-generatorType 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 aipoch/medical-research-skills --skill circos-plot-generator -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install aipoch/medical-research-skills circos-plot-generator --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/aipoch/medical-research-skills.git skills-src && mkdir -p .agents/skills && cp -r skills-src/'scientific-skills/Data Analysis/circos-plot-generator' .agents/skills/circos-plot-generator && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "circos-plot-generator" agent skill from https://github.com/aipoch/medical-research-skills/tree/main/scientific-skills/Data%20Analysis/circos-plot-generator into .agents/skills/circos-plot-generator/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "circos-plot-generator", 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 aipoch/medical-research-skills --skill circos-plot-generator -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install aipoch/medical-research-skills circos-plot-generator --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/aipoch/medical-research-skills.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/'scientific-skills/Data Analysis/circos-plot-generator' .cursor/skills/circos-plot-generator && 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 "circos-plot-generator" agent skill from https://github.com/aipoch/medical-research-skills/tree/main/scientific-skills/Data%20Analysis/circos-plot-generator into .cursor/skills/circos-plot-generator/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "circos-plot-generator", 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/aipoch/medical-research-skills.git --path 'scientific-skills/Data Analysis/circos-plot-generator'--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 aipoch/medical-research-skills --skill circos-plot-generator -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install aipoch/medical-research-skills circos-plot-generator --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/aipoch/medical-research-skills.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/'scientific-skills/Data Analysis/circos-plot-generator' .gemini/skills/circos-plot-generator && 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 "circos-plot-generator" agent skill from https://github.com/aipoch/medical-research-skills/tree/main/scientific-skills/Data%20Analysis/circos-plot-generator into .gemini/skills/circos-plot-generator/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "circos-plot-generator", 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 aipoch/medical-research-skills circos-plot-generatorInstalls 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 aipoch/medical-research-skills --skill circos-plot-generator -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/aipoch/medical-research-skills.git skills-src && mkdir -p .github/skills && cp -r skills-src/'scientific-skills/Data Analysis/circos-plot-generator' .github/skills/circos-plot-generator && 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 "circos-plot-generator" agent skill from https://github.com/aipoch/medical-research-skills/tree/main/scientific-skills/Data%20Analysis/circos-plot-generator into .github/skills/circos-plot-generator/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "circos-plot-generator", 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 aipoch/medical-research-skills --skill circos-plot-generator -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install aipoch/medical-research-skills circos-plot-generator --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/aipoch/medical-research-skills.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/'scientific-skills/Data Analysis/circos-plot-generator' .opencode/skills/circos-plot-generator && 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 "circos-plot-generator" agent skill from https://github.com/aipoch/medical-research-skills/tree/main/scientific-skills/Data%20Analysis/circos-plot-generator into .opencode/skills/circos-plot-generator/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "circos-plot-generator", 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.
circos-plot-generatorGenerate 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. 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.
6 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 686e09d. 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 1 file in scripts/ (Python), which the agent can run.
Shell commands in SKILL.md call:
pythoncondaFrom the folder's file list and the shell code blocks in SKILL.md.
Links to these hosts (documentation or services it may open):
circos.cabioconda.github.ionature.comFrom 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.
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.
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); the scripts in this folder are not scanned.
The full file from aipoch/medical-research-skills at commit 686e09d, republished under its MIT licence (© aipoch). 2,738 words, ~9,069 tokens.
.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.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:
scripts/main.py.references/ for task-specific guidance.See ## Prerequisites above for related details.
Python: 3.10+. Repository baseline for current packaged skills.yaml: unspecified. Declared in requirements.txt.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.pyUse these concrete commands for validation. They are intentionally self-contained and avoid placeholder paths.
python -m py_compile scripts/main.py
python scripts/main.py --helpUpstream Skills:
cnv-caller-plotter: Generate CNV calls for visualization in Circoscrispr-screen-analyzer: Prepare hit data for genomic context visualizationbio-ontology-mapper: Map features to genomic coordinates for track displayDownstream Skills:
dpi-upscaler-checker: Verify output resolution meets publication requirementsjournal-cover-prompter: Generate AI prompts for journal covers using Circos plotsfigure-legend-gen: Create figure legends for complex Circos visualizationsComplete Workflow:
WGS Data → cnv-caller-plotter → circos-plot-generator → dpi-upscaler-checker → Publication FigureCreate tracks for visualizing genomic variations including SNPs, CNVs, and structural variants.
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:
| Column | Description | Example |
|---|---|---|
chrom | Chromosome name | chr1, chrX |
start | Start position | 1000000 |
end | End position | 2000000 |
type | Variation type | SNP, CNV, TRANSLOCATION |
value | Score or magnitude | 0.5, -0.8 |
target_chrom | For SVs: target chromosome | chr5 |
target_start | For SVs: target start | 5000000 |
Variation Types Supported:
| Type | Visualization | Color Coding |
|---|---|---|
| SNP | Histogram points | Blue/Red (gain/loss) |
| CNV | Histogram bars | Green/Orange (amplification/deletion) |
| TRANSLOCATION | Links between chromosomes | Purple ribbons |
| INVERSION | Intra-chromosomal links | Yellow |
| DELETION | Histogram bars | Red |
| DUPLICATION | Histogram bars | Blue |
Best Practices:
Common Issues and Solutions:
Issue: Too many data points causing clutter
Issue: Chromosome naming mismatch
Create circular plots showing interactions between cell types in tissues or tumors.
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:
| Column | Description | Example |
|---|---|---|
source | Source cell type | T_Cell |
target | Target cell type | Macrophage |
weight | Interaction strength (0-1) | 0.8 |
type | Interaction type | Ligand-Receptor, Secreted |
Visualization Features:
| Feature | Description | Use Case |
|---|---|---|
| Ribbon links | Connection width ∝ interaction strength | Show communication intensity |
| Cell segments | Each cell type as chromosome segment | Compare cell type abundance |
| Labels | Cell type names outside circle | Identify cells easily |
| Colors | Distinct colors per cell type | Distinguish cell types |
Best Practices:
Common Issues and Solutions:
Issue: Too many cell types causing confusion
Issue: Bidirectional interactions not clear
Generate chromosome ideograms showing banding patterns and genomic coordinates.
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 preprocessingChromosome Specifications:
| Chromosome | Size (bp) | Display Color |
|---|---|---|
| chr1 | 248,956,422 | Red |
| chr2 | 242,193,529 | Orange |
| chr3 | 198,295,559 | Yellow |
| ... | ... | ... |
| chrX | 156,040,895 | Purple |
| chrY | 57,227,415 | Grey |
Ideogram Features:
| Feature | Description | Configuration |
|---|---|---|
| Spacing | Gap between chromosomes | 0.005r (0.5% of radius) |
| Thickness | Chromosome bar width | 25 pixels |
| Labels | Chromosome names | Outside circle |
| Bands | Cytogenetic bands | Show/hide option |
| Ticks | Scale markers | 5u and 25u spacing |
Best Practices:
Common Issues and Solutions:
Issue: Small chromosomes (chr21, chrY) hard to see
Issue: Mitochondrial DNA not included
Overlay multiple data tracks in concentric circles for complex visualizations.
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:
| Track | Radius Range | Typical Use |
|---|---|---|
| Outer 1 | 0.95r - 0.80r | Primary data (CNVs) |
| Outer 2 | 0.80r - 0.65r | Secondary data (SNPs) |
| Middle | 0.65r - 0.50r | Links/connections |
| Inner | 0.50r - 0.35r | Annotations/labels |
Track Types:
| Type | Data Format | Best For |
|---|---|---|
| Histogram | chr start end value | Continuous values (CNVs, expression) |
| Scatter | chr start end value x y | Point data with categories |
| Heatmap | chr start end value0 value1... | Multi-sample comparisons |
| Link | chr1 start1 end1 chr2 start2 end2 | Connections (SVs, interactions) |
| Text | chr start end label | Gene names, annotations |
Best Practices:
Common Issues and Solutions:
Issue: Tracks overlapping
Issue: Scale differences between tracks
Select from predefined color schemes or define custom colors for publication consistency.
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:
| Scheme | Style | Best For |
|---|---|---|
| default | Basic colors | Quick visualization, drafts |
| nature | Nature journal colors | Nature publications |
| lancet | Lancet journal colors | Medical/clinical papers |
| cell | Cell journal colors | Cell biology papers |
Custom Colors:
# Define custom scheme
my_colors = ["#FF6B6B", "#4ECDC4", "#45B7D1", "#96CEB4", "#FFEAA7"]
COLOR_SCHEMES["custom"] = my_colors
config["color_scheme"] = "custom"Best Practices:
Common Issues and Solutions:
Issue: Colors not distinct enough
Issue: Colors don't match brand/institution
Generate complete Circos configuration and optionally render the plot.
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 \
--renderPython API Usage:
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 outputScenario: Visualize genomic alterations in a tumor sample for publication.
{
"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:
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 + SVGScenario: Visualize cell-cell communication in tumor microenvironment.
{
"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:
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 activationScenario: Compare synteny between two species or strains.
{
"plot_type": "custom",
"title": "Human-Mouse Synteny",
"tracks": [
{
"type": "link",
"data": "synteny_blocks.txt",
"description": "Conserved regions"
}
],
"genomes": ["hg38", "mm10"],
"color_by": "chromosome"
}Workflow:
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 conservedScenario: Track clonal evolution through treatment timepoints.
{
"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:
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 relapseData Preparation:
Configuration:
Rendering:
Publication:
Data Issues:
❌ Inconsistent chromosome names → Data missing from plot
❌ Coordinates out of bounds → Rendering errors
❌ Too many data points → Cluttered, slow rendering
❌ Missing values not handled → Gaps or errors
Configuration Issues:
❌ Tracks overlap → Data unreadable
❌ Colors too similar → Can't distinguish tracks
❌ Font too small → Labels unreadable
❌ Image too small → Poor resolution
Interpretation Issues:
❌ No scale reference → Values unclear
❌ Missing legend → Data types unexplained
❌ No chromosome labels → Location unclear
❌ Too much information → Figure overwhelming
Problem: Configuration generates but Circos won't render
conda install -c bioconda circosProblem: Plot is blank or missing data
Problem: Colors not as expected
Problem: Links/connections not showing
Problem: Text labels overlapping
Problem: Rendering is very slow
Available in references/ directory:
External Resources:
Located in scripts/ directory:
main.py - Circos configuration generator with support for variations and cell communicationDefault: 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
| Parameter | Type | Default | Required | Description |
|---|---|---|---|---|
--data | string | - | Yes | Input data file (TSV/CSV format) |
--output, -o | string | circos.svg | No | Output SVG file path |
--type | string | variation | No | Plot type (variation, cell-communication) |
--colors | string | default | No | Color scheme (default, nature, lancet, cell) |
--radius | float | 400 | No | Plot radius in pixels |
--help, -h | flag | - | No | Show help message |
# 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.svgVariation data (TSV format):
chromosome position value
chr1 1000000 0.5
chr1 2000000 -0.3
chr2 500000 0.8Cell communication data (TSV format):
cell_type1 cell_type2 interaction_strength
T_cell B_cell 0.75
Macrophage T_cell 0.60| Risk Indicator | Assessment | Level |
|---|---|---|
| Code Execution | Python script executed locally | Low |
| Network Access | No external API calls | Low |
| File System Access | Read input data, write output SVG | Low |
| Data Exposure | Processes genomic data | Low |
| Resource Usage | Generates SVG files (can be large) | Low |
# Python 3.7+
# No external packages required (uses standard library)
# Output: SVG format (viewable in web browsers)Last Updated: 2026-02-09
Skill ID: 186
Version: 2.0 (K-Dense Standard)
Every final response should make these items explicit when they are relevant:
scripts/main.py fails, report the failure point, summarize what still can be completed safely, and provide a manual fallback.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-generatoronly handles its documented workflow. Please provide the missing required inputs or switch to a more suitable skill.
Use the following fixed structure for non-trivial requests:
If the request is simple, you may compress the structure, but still keep assumptions and limits explicit when they affect correctness.
© aipoch, 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 6 other files (scripts, references) in scientific-skills/Data Analysis/circos-plot-generator of aipoch/medical-research-skills.
Open the folder on GitHubat commit 686e09d
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.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Circos Plot Generator this skillaipoch/medical-research-skills | 2k | — | ~9.1k | Automated safety check: Pass | MIT | |
| Scanpy Single-Cell Analysisdavila7/claude-code-templates | 32k | 16 repos | ~2.8k | Automated safety check: Pass | MIT | |
| deepTools NGS Toolkitdavila7/claude-code-templates | 32k | 13 repos | ~4.5k | Automated safety check: Pass | MIT | |
| FBA Flux Analyzeraiming-lab/AutoResearchClaw | 15k | — | ~2.3k | Automated safety check: Pass | MIT | |
| Ukb Ppp Region FetchClawBio/ClawBio | 1.2k | — | ~4.6k | Automated safety check: Pass | MIT | |
| Bio Data Visualization Genome TracksGPTomics/bioSkills | 1.2k | 2 repos | ~3.3k | Automated safety check: Pass | MIT |
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.
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.
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.
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.
GPTomics/bioSkills
Build genome-browser-style multi-track figures with pyGenomeTracks (config-driven), Gviz (R), and IGV batch screenshotting.
FreedomIntelligence/OpenClaw-Medical-Skills
Visualize Hi-C contact matrices, TADs, loops, and genomic features using matplotlib, cooltools, and HiCExplorer.
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…
aipoch/medical-research-skills
Analyzes clinical diagnostic accuracy studies for bias using the QUADAS-2 tool.
aipoch/medical-research-skills
Perform comprehensive exploratory data analysis on scientific data files across 200+ file formats.
aipoch/medical-research-skills
A toolkit for preparing ISO 13485:2016 certification documentation for medical device QMS.
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…
aipoch/medical-research-skills
Creates academic-poster writing packages for LaTeX using beamerposter, tikzposter, or baposter.
Categories
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.
Circos Plot Generator fits situations like: tasks that involve Bioinformatics; tasks that involve Data visualization.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.