Initial commit — scientific-viz skill

Claude Code skill for publication-quality scientific visualisations:
chart, architecture, flowchart, comparison, pipeline. Bundles matplotlib
publication defaults (300 DPI, serif font, colorblind palette), NADEZHDA
project palette, Mermaid conventions, and ready-to-use templates.

Contents:
- SKILL.md                              — behaviour spec (5 types, generation pipeline)
- README.md                             — human-facing entry: when, install, examples
- reference/chart_patterns.md           — Pareto/bar/radar/heatmap snippets
- templates/architecture_nadezhda.md    — Mermaid templates for Teacher-Student / LUPI / fusion

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-05-04 11:13:08 +03:00
commit a243601523
5 changed files with 703 additions and 0 deletions

181
SKILL.md Normal file
View File

@@ -0,0 +1,181 @@
---
name: scientific-viz
description: "Generate publication-quality scientific visualizations: charts (matplotlib/seaborn), neural network architecture diagrams, block-scheme flowcharts (mermaid), training pipeline diagrams, and benchmark comparison tables. Use when the user needs any visual figure for papers, reports, or presentations."
argument-hint: "[type: chart|architecture|flowchart|comparison|pipeline] [description]"
user-invocable: true
allowed-tools: Read Write Edit Bash Glob Grep
---
# Научная визуализация для CVGL
Генерация визуализаций для научных публикаций, отчётов и презентаций проекта NADEZHDA.
## Входные данные
- `$ARGUMENTS` — тип визуализации + описание
- Примеры:
- `/scientific-viz chart "R@1 comparison across methods on University-1652"`
- `/scientific-viz architecture "Teacher-Student LUPI pipeline"`
- `/scientific-viz flowchart "Training progressive staging 3 phases"`
- `/scientific-viz comparison "Backbone candidates: params vs R@1"`
## Типы визуализаций
### 1. `chart` — Графики и диаграммы (matplotlib + seaborn)
Для: сравнение метрик, аблации, распределения, training curves.
**Выход:** Python-скрипт `.py` + сохранённый `.png`/`.pdf`
Обязательные требования:
- Разрешение ≥ 300 DPI
- Шрифт: Times New Roman или DejaVu Serif, ≥ 10pt
- Colorblind-safe палитра (Okabe-Ito или tab10)
- Подписи осей на **английском** (для публикаций)
- Легенда без перекрытия данных
- Grid: light gray, alpha=0.3
- Tight layout, без обрезки подписей
- Формат сохранения: PNG (300 DPI) + PDF (vector)
Стиль matplotlib (использовать в начале каждого скрипта):
```python
import matplotlib.pyplot as plt
import matplotlib
matplotlib.rcParams.update({
'font.family': 'serif',
'font.size': 11,
'axes.labelsize': 12,
'axes.titlesize': 13,
'legend.fontsize': 10,
'xtick.labelsize': 10,
'ytick.labelsize': 10,
'figure.dpi': 300,
'savefig.dpi': 300,
'savefig.bbox': 'tight',
'axes.grid': True,
'grid.alpha': 0.3,
})
```
Шаблоны: см. [reference/chart_patterns.md](reference/chart_patterns.md)
### 2. `architecture` — Архитектуры нейросетей
Для: Teacher/Student диаграммы, backbone stages, fusion modules, head designs.
**Два варианта выхода:**
**A) Python (matplotlib + patches/arrows)** — для сложных кастомных диаграмм:
- Прямоугольники = слои/модули
- Стрелки = потоки данных
- Цвета = разные модальности/компоненты
- Аннотации: размерности тензоров, число параметров
- Используй `matplotlib.patches.FancyBboxPatch` для красивых блоков
**B) Mermaid** — для встраивания в Obsidian:
```mermaid
graph TD
A[Satellite RGB] --> B[DINOv2-L Encoder]
C[Drone RGB] --> B
D[Depth Map] --> E[CNN Encoder]
...
```
Шаблоны: см. [templates/architecture_nadezhda.md](templates/architecture_nadezhda.md)
### 3. `flowchart` — Блок-схемы процессов
Для: training pipeline, inference pipeline, experimental workflow, data processing.
**Выход:** Mermaid-диаграмма (встраиваемая в Obsidian) + опционально Python-версия
Mermaid-конвенции:
- `graph TD` для вертикальных flow
- `graph LR` для горизонтальных pipeline
- Цвета через `style` или `classDef`
- Подписи на английском (для публикаций) или русском (для отчётов)
### 4. `comparison` — Сравнительные визуализации
Для: scatter plot params-vs-accuracy, grouped bar chart методов, radar chart по критериям.
Паттерны:
- **Pareto front:** params (x) vs R@1 (y), маркеры = разные методы, размер = FLOPs
- **Grouped bar:** методы × датасеты, hatching для edge/cloud
- **Radar/spider:** критерии (accuracy, speed, size, generalization, robustness)
- **Heatmap:** метод × датасет → R@1 значения
### 5. `pipeline` — Диаграммы пайплайна
Для: LUPI distillation flow, data augmentation pipeline, edge deployment chain.
Специальная нотация:
- Thick arrows = main data flow
- Dashed arrows = gradient flow / loss signals
- Color: blue = Teacher, orange = Student, green = shared
- Labels on arrows: loss names (L_task, L_LUPI, L_feat, L_RKD)
## Процесс генерации
### Шаг 1: Определи тип и параметры
Из `$ARGUMENTS` извлеки:
- Тип: chart / architecture / flowchart / comparison / pipeline
- Что визуализировать
- Целевой формат: Obsidian (mermaid) / публикация (matplotlib) / оба
- Язык подписей: EN (default для публикаций) / RU (для отчётов)
### Шаг 2: Найди данные
Если визуализация требует числовых данных:
- Поищи в `1_lit_research/СИНТЕЗсех_статей_для_LUPI_CVGL.md`
- Или в конкретных конспектах `1_lit_research/6_cvgl/P{N}_*.md`
- Или спроси пользователя
### Шаг 3: Сгенерируй код
- Python-скрипт: сохранить в `3_work/` или `attachments/figures/`
- Mermaid: вставить inline в .md файл
- Всегда указывай: `plt.savefig("filename.png", dpi=300, bbox_inches='tight')`
### Шаг 4: Добавь аннотации
Каждая визуализация должна иметь:
- Заголовок (title)
- Подписи осей (xlabel, ylabel)
- Легенду (если >1 series)
- Источник данных (caption или комментарий в коде)
## Специфика проекта NADEZHDA
### Цветовая схема компонентов
| Компонент | Цвет | Hex |
|:----------|:-----|:----|
| Teacher | Deep blue | `#1f77b4` |
| Student | Orange | `#ff7f0e` |
| Satellite modality | Green | `#2ca02c` |
| Drone modality | Red | `#d62728` |
| Street-view | Purple | `#9467bd` |
| Depth | Brown | `#8c564b` |
| Text | Pink | `#e377c2` |
| Loss / gradient | Gray | `#7f7f7f` |
| Edge / Jetson | Teal | `#17becf` |
### Стандартные размерности тензоров
```
Input: [B, 3, 256, 256]
Stage 1: [B, 32, 96, 96]
Stage 2: [B, 64, 48, 48]
Stage 3: [B, 128, 24, 24]
Stage 4: [B, 256, 12, 12]
Descriptor: [B, 512] L2-normalized
```
## Ограничения
- НЕ используй внешние API (OpenRouter, Gemini) — только локальные библиотеки
- НЕ генерируй растровые диаграммы архитектур через PIL/ImageDraw — используй matplotlib patches или mermaid
- Всегда сохраняй и .py скрипт, и результат (.png/.pdf)
- Для Obsidian: mermaid блоки встраиваются напрямую в .md