← スキル一覧に戻る

scientific-app-scaffold
by DeruL0
⭐ 0🍴 0📅 2026年1月25日
SKILL.md
name: scientific-app-scaffold description: Scaffolds a high-performance scientific GUI application using a Data-Centric Architecture (PyQt+Visualization).
Scientific App Scaffold Skill
Use this skill to initialize or restructure high-performance scientific/engineering applications. It provides a robust foundation for applications that require heavy computation, complex data visualization, and a responsive GUI.
1. Architectural Principles
- Data-Centric Design: A central
ScientificDataDTO (Data Transfer Object) acts as the single source of truth, passed between Loaders, Analyzers, and Visualizers. - Pipeline Architecture:
- Input:
loaders/strategies for different file formats. - Compute:
algorithms/for heavy calculations (CPU/GPU). - Output/View:
visualization/for rendering (2D generic or 3D PyVista).
- Input:
- Separation of Concerns:
core/: core data structures and abstract interfaces.gui/: UI logic (Widgets, Panels), strictly decoupled from computation.config.py: Centralized configuration for physical constants and thresholds.
2. Directory Structure Template
project_root/
├── config.py # Centralized constants & thresholds
├── App.py # Application Entry Point
├── core/
│ ├── __init__.py
│ ├── base.py # ScientificData, Abstract Interfaces
│ └── computational_backend.py # Resource manager (e.g., GPU/Thread pool)
├── loaders/
│ ├── __init__.py
│ └── [format]_loader.py # Specific format strategies
├── algorithms/ # Domain-specific logic
│ ├── __init__.py
│ └── [domain]_algo.py
├── visualization/ # Rendering Tier
│ ├── __init__.py
│ ├── engine.py # Framework-agnostic rendering logic
│ └── cameras.py # View/Camera management
└── gui/
├── __init__.py
├── styles.py # Centralized QSS/Theming
├── main_window.py # Main Layout
└── panels/ # Domain-specific control panels
└── [context]_panel.py
3. Core Boilerplate
core/base.py
from dataclasses import dataclass, field
from abc import ABC, abstractmethod
from typing import Any, Dict, Optional
@dataclass
class ScientificData:
"""Generic DTO for scientific data."""
primary_data: Any = None # The main array/tensor/mesh
secondary_data: Any = None # Auxiliary data (e.g., derived results)
spatial_info: Dict = field(default_factory=dict) # Spacing, Origin, Units
metadata: Dict = field(default_factory=dict) # Experiment ID, Timestamp
class BaseLoader(ABC):
@abstractmethod
def load(self, source: str) -> ScientificData:
pass
class BaseAnalyzer(ABC):
@abstractmethod
def process(self, data: ScientificData, **params) -> ScientificData:
pass
class BaseVisualizer(ABC):
@abstractmethod
def set_data(self, data: ScientificData):
pass
config.py
# System Limits
MAX_MEMORY_MB = 1024
USE_GPU_ACCELERATION = True
# GUI Settings
DEFAULT_THEME = "Dark"
WINDOW_SIZE = (1280, 800)
4. Visual Style Guidelines
- Theme: "Scientific Dark" (reduces eye strain for data analysts).
- Layout:
- Central View: Large viewport for Visualization (2D Plot/3D Canvas).
- Sidebars: Collapsible "Parameters" (Controls) and "Data Tree" (Explorer).
- Feedback:
- Status Bar for quick messages.
- Progress Panels for threaded operations.
5. Implementation Steps
- Define Domain Data: subclass
ScientificDataincore/base.pyto fit specific domain needs (e.g.,SeismicVolume,MolecularStructure). - Establish Pipeline: Implement at least one
Loaderand oneVisualizer. - Build GUI Frame: Create
gui/main_window.pyconnecting the Visualizer to the central widget. - Connect Signals: Use an Event Bus or Signals (PyQt) to propagate
data_loadedorparams_changedevents.
スコア
総合スコア
50/100
リポジトリの品質指標に基づく評価
✓SKILL.md
SKILL.mdファイルが含まれている
+20
○LICENSE
ライセンスが設定されている
0/10
○説明文
100文字以上の説明がある
0/10
○人気
GitHub Stars 100以上
0/15
○最近の活動
3ヶ月以内に更新がある
0/10
○フォーク
10回以上フォークされている
0/5
✓Issue管理
オープンIssueが50未満
+5
✓言語
プログラミング言語が設定されている
+5
○タグ
1つ以上のタグが設定されている
0/5
レビュー
💬
レビュー機能は近日公開予定です