AgentSkillsCN

Analyze Publish

分析发布

SKILL.md

analyze-publish スキル

データフォルダを指定して、解析から論文用パッケージ作成までを一貫して行うスキル。

使用方法

code
/analyze-publish [データフォルダのパス]

パスが指定されない場合は、カレントディレクトリを対象とする。


重要な原則

絶対に推測しない

以下の情報は絶対に推測せず、必ずユーザーに確認する

  • デバイス構造・サンプル構造
  • 各条件/手法の具体的な説明
  • 材料名・膜厚・製法
  • 測定条件の詳細
  • グラフのラベル表記

間違った情報を書くと修正が二度手間になる。不明な点は必ず質問する。


ワークフロー

Phase 1: データ確認

  1. 指定されたフォルダの構造を確認(ls -la
  2. 含まれるデータファイルの種類を特定(CSV, Excel, etc.)
  3. サブフォルダの構造を把握
  4. 既存の解析結果があれば確認
  5. データの概要をユーザーに報告し、理解が正しいか確認

Phase 2: ユーザーへの質問(多段階)

Step 1: 基本設定(AskUserQuestion)

  • フォルダ名: publication/配下に作成するフォルダ名
  • グラフ種類: 棒グラフ、折れ線、散布図など
  • 図サイズ: シングルカラム(89mm)/ ダブルカラム(183mm)
  • カラースキーム: グレースケール / カラー / 特定条件強調

Step 2: 実験の詳細説明を依頼(テキストで質問)

以下の質問を直接テキストでユーザーに投げかける

code
実験の詳細を教えてください:

1. **比較している条件/手法は何ですか?**
   (例:PI, Molded, Scratched, This work)

2. **各条件の具体的な説明を教えてください**
   - 条件1の名前: ○○
     説明: △△
   - 条件2の名前: ○○
     説明: △△
   ...

3. **デバイス/サンプルの構造は?**
   (材料、膜厚、製法など)

4. **グラフに使うラベル表記は?**
   (英語のまま or 説明的な表記、具体的に指定)

ユーザーの回答を待ち、回答に基づいてREADMEを作成する。推測は絶対にしない。

Step 3: 測定条件(AskUserQuestion または テキスト)

  • データの種類に応じた測定条件を質問
  • CSVヘッダーから読み取れる情報は提示して確認を取る
  • 読み取れない情報(光源の種類、光強度など)は必ず質問

Step 4: グラフ詳細(AskUserQuestion)

  • Y軸範囲: 自動 / 固定(固定の場合は値を質問)
  • データポイント表示: あり / なし
  • エラーバー: 標準偏差 / 標準誤差 / なし
  • README言語: 日本語 / 英語

Phase 3: 確認

グラフとREADMEに書く内容の要約をユーザーに提示し、OKをもらってから次に進む

code
以下の内容で作成します。問題があれば修正してください:

【グラフ】
- 種類: Vthシフト棒グラフ
- ラベル: Flat PI, Nanofiber/Parylene, Scratched PI, NMPI-treated
- サイズ: シングルカラム
- カラー: グレースケール

【README記載内容】
- 条件1 (Flat PI): 平坦なポリイミド基板
- 条件2 (Nanofiber/Parylene): ナノファイバー上にパリレン5μmをCVDで成膜、表面荒さを残しつつ穴を埋めた構造
- ...

【デバイス構造】
- 構造: BGTC
- 半導体: DNTT (30nm)
- 絶縁層: Parylene (500nm)

よろしいですか?

Phase 4: 解析スクリプト作成

  1. analysis/ ディレクトリに新規スクリプトを作成
  2. ファイル名: {トピック}_publication.py
  3. 以下を含める:
    • 日付コメント
    • 入力/出力パス
    • Nature風グラフスタイル設定
    • FormatStrFormatter('%g') で軸フォーマット
    • データ読み込み・処理・プロット・保存

Phase 5: スクリプト実行

  1. 作成したスクリプトを実行
  2. PDF/PNG を publication/{フォルダ名}/ に出力
  3. 統計サマリーCSVも出力

Phase 6: README作成

publication/{フォルダ名}/README_論文用.md を作成。

Phase 2で収集した情報をそのまま使用する。推測で補完しない。

markdown
# {トピック} - 論文用データパッケージ

## 概要
{ユーザーから聞いた説明}

## ファイル一覧
| ファイル名 | 説明 |
|-----------|------|
| Figure_*.pdf | メイン図 |
| *_summary.csv | 統計サマリー |

## 比較条件
| 条件名 | ラベル | 説明 |
|--------|--------|------|
| {ユーザーから聞いた情報をそのまま記載} |

## デバイス/サンプル構造
{ユーザーから聞いた情報をそのまま記載}

## 測定条件
{CSVから読み取った情報 + ユーザーから聞いた情報}

## 解析方法
{解析手法の説明}

## 結果サマリー
{主要な結果をテーブル形式で記載}

## 解析スクリプト
python3 analysis/{スクリプト名}.py

## 生データの場所
{元データのパス}

## 作成日
{YYYY-MM-DD}

Phase 7: ファイル整理

  1. 解析結果CSVを publication/{フォルダ名}/ にコピー
  2. 最終的なフォルダ構成を確認・報告

グラフスタイル設定(Nature風)

python
import matplotlib.pyplot as plt
from matplotlib.ticker import FormatStrFormatter

plt.rcParams.update({
    'font.family': 'Arial',
    'font.size': 8,
    'axes.labelsize': 9,
    'xtick.labelsize': 8,
    'ytick.labelsize': 8,
    'legend.fontsize': 8,
    'axes.linewidth': 0.6,
    'xtick.major.width': 0.6,
    'ytick.major.width': 0.6,
    'xtick.major.size': 3.5,
    'ytick.major.size': 3.5,
    'figure.dpi': 300,
    'savefig.dpi': 600,
    'savefig.bbox': 'tight',
})

# 軸フォーマット(0.0 → 0)
ax.xaxis.set_major_formatter(FormatStrFormatter('%g'))
ax.yaxis.set_major_formatter(FormatStrFormatter('%g'))

# 上・右の軸を非表示
ax.spines['top'].set_visible(False)
ax.spines['right'].set_visible(False)

図サイズ

  • シングルカラム: figsize=(3.3, 2.8) (89mm幅)
  • ダブルカラム: figsize=(7.0, 2.8) (183mm幅)

チェックリスト

スクリプト作成前に以下を確認:

  • 各条件/手法の説明をユーザーから直接聞いた
  • デバイス/サンプル構造をユーザーから直接聞いた
  • グラフのラベル表記をユーザーに確認した
  • 測定条件の不明点をユーザーに確認した
  • 作成内容の要約をユーザーに提示してOKをもらった

1つでも未確認なら、推測せずに質問する。


トリガー

  • /analyze-publish コマンド
  • 「解析して論文用パッケージを作って」などの依頼

出力例

code
publication/
└── {トピック}/
    ├── Figure_*.pdf
    ├── Figure_*.png
    ├── *_summary.csv
    ├── README_論文用.md
    └── (元データのコピー)