analyze-publish スキル
データフォルダを指定して、解析から論文用パッケージ作成までを一貫して行うスキル。
使用方法
code
/analyze-publish [データフォルダのパス]
パスが指定されない場合は、カレントディレクトリを対象とする。
重要な原則
絶対に推測しない
以下の情報は絶対に推測せず、必ずユーザーに確認する:
- •デバイス構造・サンプル構造
- •各条件/手法の具体的な説明
- •材料名・膜厚・製法
- •測定条件の詳細
- •グラフのラベル表記
間違った情報を書くと修正が二度手間になる。不明な点は必ず質問する。
ワークフロー
Phase 1: データ確認
- •指定されたフォルダの構造を確認(
ls -la) - •含まれるデータファイルの種類を特定(CSV, Excel, etc.)
- •サブフォルダの構造を把握
- •既存の解析結果があれば確認
- •データの概要をユーザーに報告し、理解が正しいか確認
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: 解析スクリプト作成
- •
analysis/ディレクトリに新規スクリプトを作成 - •ファイル名:
{トピック}_publication.py - •以下を含める:
- •日付コメント
- •入力/出力パス
- •Nature風グラフスタイル設定
- •
FormatStrFormatter('%g')で軸フォーマット - •データ読み込み・処理・プロット・保存
Phase 5: スクリプト実行
- •作成したスクリプトを実行
- •PDF/PNG を
publication/{フォルダ名}/に出力 - •統計サマリーCSVも出力
Phase 6: README作成
publication/{フォルダ名}/README_論文用.md を作成。
Phase 2で収集した情報をそのまま使用する。推測で補完しない。
markdown
# {トピック} - 論文用データパッケージ
## 概要
{ユーザーから聞いた説明}
## ファイル一覧
| ファイル名 | 説明 |
|-----------|------|
| Figure_*.pdf | メイン図 |
| *_summary.csv | 統計サマリー |
## 比較条件
| 条件名 | ラベル | 説明 |
|--------|--------|------|
| {ユーザーから聞いた情報をそのまま記載} |
## デバイス/サンプル構造
{ユーザーから聞いた情報をそのまま記載}
## 測定条件
{CSVから読み取った情報 + ユーザーから聞いた情報}
## 解析方法
{解析手法の説明}
## 結果サマリー
{主要な結果をテーブル形式で記載}
## 解析スクリプト
python3 analysis/{スクリプト名}.py
## 生データの場所
{元データのパス}
## 作成日
{YYYY-MM-DD}
Phase 7: ファイル整理
- •解析結果CSVを
publication/{フォルダ名}/にコピー - •最終的なフォルダ構成を確認・報告
グラフスタイル設定(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
└── (元データのコピー)