一键导入
scientific-data-simulation
物理・化学・生物学に基づく合成データ生成のスキル。実験データが不足する場合に、 ドメイン知識を反映したシミュレーションデータを生成する際に使用。 Scientific Skills Exp-06, 07, 08, 09, 12, 13 で確立したパターン。
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
物理・化学・生物学に基づく合成データ生成のスキル。実験データが不足する場合に、 ドメイン知識を反映したシミュレーションデータを生成する際に使用。 Scientific Skills Exp-06, 07, 08, 09, 12, 13 で確立したパターン。
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
| name | scientific-data-simulation |
| description | 物理・化学・生物学に基づく合成データ生成のスキル。実験データが不足する場合に、 ドメイン知識を反映したシミュレーションデータを生成する際に使用。 Scientific Skills Exp-06, 07, 08, 09, 12, 13 で確立したパターン。 |
| tu_tools | [{"key":"biotools","name":"bio.tools","description":"シミュレーションツールレジストリ検索"}] |
物理法則・化学モデル・生物学的知見に基づいて、現実的なシミュレーションデータを 生成するスキル。実データの不足を補い、ML パイプラインの開発・検証を可能にする。
import numpy as np
import pandas as pd
def generate_process_dataset(n_samples=500, seed=42):
"""
物理ベースのプロセスデータを生成するテンプレート。
因果関係: Process → Structure → Property
"""
rng = np.random.default_rng(seed)
# === Process パラメータ(独立変数)===
temperature = rng.uniform(25, 500, n_samples) # °C
pressure = rng.uniform(0.1, 5.0, n_samples) # Pa
power = rng.uniform(50, 500, n_samples) # W
time = rng.uniform(5, 120, n_samples) # min
# === Structure 変数(Process に依存)===
# 物理モデル:因果関係を組み込む
dep_rate = (
0.5
+ 0.02 * power # 出力依存
- 0.005 * pressure ** 2 # 高圧での飽和
+ rng.normal(0, 0.5, n_samples) # ノイズ
)
dep_rate = np.clip(dep_rate, 0.1, 30)
thickness = dep_rate * time
thickness = np.clip(thickness, 5, 2000)
crystallite_size = (
5
+ 0.1 * temperature # 温度依存(アレニウス的)
+ 0.01 * time # 時間依存
+ rng.normal(0, 2, n_samples) # ノイズ
)
crystallite_size = np.clip(crystallite_size, 2, 80)
# === Property 変数(Structure に依存)===
resistivity = (
1e-2
* np.exp(-0.005 * temperature) # 温度活性化
* (1 + 0.01 * pressure)
* np.exp(rng.normal(0, 0.3, n_samples)) # 対数正規ノイズ
)
transmittance = (
95
- 0.02 * thickness # 膜厚依存
+ 0.05 * crystallite_size # 結晶子サイズ依存
+ rng.normal(0, 1, n_samples)
)
transmittance = np.clip(transmittance, 40, 98)
df = pd.DataFrame({
"Temperature": temperature,
"Pressure": pressure,
"Power": power,
"Time": time,
"Deposition_Rate": dep_rate,
"Thickness": thickness,
"Crystallite_Size": crystallite_size,
"Resistivity": resistivity,
"Transmittance": transmittance,
})
return df
def generate_multi_material_dataset(materials, n_per_material=100, seed=42):
"""
複数材料の PSP データを生成する。
materials: {"ZnO": {"Tm": 2248, "Eg": 3.3}, ...} の辞書
"""
rng = np.random.default_rng(seed)
all_data = []
for mat_name, props in materials.items():
n = n_per_material
Tm = props["Tm"] # 融点 (K)
Eg = props["Eg"] # バンドギャップ (eV)
# Process
Tsub = rng.uniform(25, 500, n)
Pwork = rng.uniform(0.1, 5.0, n)
Power = rng.uniform(50, 500, n)
# Structure(材料依存の因果関係)
T_homologous = (Tsub + 273.15) / Tm # 相同温度
crystallite = 5 + 80 * T_homologous + rng.normal(0, 3, n)
crystallite = np.clip(crystallite, 2, 80)
# Property(材料固有値 + プロセス依存変動)
bandgap = Eg + rng.normal(0, 0.1, n)
data = pd.DataFrame({
"Material": mat_name,
"Substrate_Temp": Tsub,
"Working_Pressure": Pwork,
"Power": Power,
"T_homologous": T_homologous,
"Crystallite_Size": crystallite,
"Bandgap": bandgap,
})
all_data.append(data)
return pd.concat(all_data, ignore_index=True)
def generate_clinical_trial_data(n_total=500, effect_size=0.3, seed=42):
"""RCT シミュレーションデータを生成する。"""
rng = np.random.default_rng(seed)
n_per_arm = n_total // 2
# 人口統計
ages = np.concatenate([
rng.normal(55, 12, n_per_arm),
rng.normal(55, 12, n_per_arm),
])
sex = rng.choice(["M", "F"], n_total)
group = np.array(["Treatment"] * n_per_arm + ["Control"] * n_per_arm)
# 主要エンドポイント
baseline = rng.normal(100, 15, n_total)
treatment_effect = np.where(group == "Treatment", effect_size * 15, 0)
endpoint = baseline + treatment_effect + rng.normal(0, 10, n_total)
# 生存時間(指数分布)
survival_time = rng.exponential(
np.where(group == "Treatment", 365 * 2, 365 * 1.5),
n_total
)
event = rng.binomial(1, 0.7, n_total)
return pd.DataFrame({
"Patient_ID": range(1, n_total + 1),
"Group": group,
"Age": ages.astype(int),
"Sex": sex,
"Baseline": baseline,
"Endpoint": endpoint,
"Survival_Time": survival_time,
"Event": event,
})
def generate_spectrum(wavenumbers, peak_positions, peak_heights,
peak_widths, noise_level=0.02, seed=None):
"""
ガウスピーク合成によるスペクトルを生成する。
ラマン / IR / UV-Vis などに汎用。
"""
rng = np.random.default_rng(seed)
spectrum = np.zeros_like(wavenumbers, dtype=float)
for pos, height, width in zip(peak_positions, peak_heights, peak_widths):
spectrum += height * np.exp(-0.5 * ((wavenumbers - pos) / width) ** 2)
# ノイズ付加
spectrum += rng.normal(0, noise_level * spectrum.max(), len(wavenumbers))
return spectrum
def generate_ecg_beat(t, hr=72):
"""合成 ECG 波形(PQRST パターン)を生成する。"""
beat_duration = 60.0 / hr
# P 波、QRS 群、T 波のガウス重ね合わせ
p_wave = 0.1 * np.exp(-((t % beat_duration - 0.16) / 0.04) ** 2)
qrs = 1.0 * np.exp(-((t % beat_duration - 0.25) / 0.01) ** 2)
q_wave = -0.15 * np.exp(-((t % beat_duration - 0.22) / 0.015) ** 2)
s_wave = -0.1 * np.exp(-((t % beat_duration - 0.28) / 0.015) ** 2)
t_wave = 0.2 * np.exp(-((t % beat_duration - 0.40) / 0.05) ** 2)
return p_wave + q_wave + qrs + s_wave + t_wave
生成データの品質を保証するためのチェック項目:
| TU Key | ツール名 | 連携内容 |
|---|---|---|
biotools | bio.tools | シミュレーションツールレジストリ検索 |
| ファイル | 形式 |
|---|---|
data/<dataset_name>.csv | CSV |
実験の監査レポート・データ来歴(プロベナンス)生成スキル。 データ変換履歴・使用ツールのバージョン・データ整合性チェックを 含むトレーサビリティレポートを自動生成する。 「監査レポート作成」「データ来歴を記録」「トレーサビリティ」で発火。
派生実験設計スキル。既存の実験をベースに条件を変更した派生実験を 設計する。実験計画法(DOE)に基づくパラメータ探索を支援。 「派生実験を設計して」「条件を変えて実験」「パラメータ探索」で発火。
実験テンプレート生成スキル。研究目的・仮説・手法・実験条件・評価基準・ スケジュールを構造化した実験計画書を自動作成する。 「実験テンプレート作成して」「実験計画を立てて」「実験プロトコルを作成」で発火。
実験結果を論文形式(LaTeX / IMRaD)にエクスポートするスキル。 Introduction・Materials & Methods・Results・Discussion の構造で 出版準備用の原稿を自動生成する。 「論文にして」「LaTeX出力」「出版準備」で発火。
実験結果の査読・レビュースキル。再現性・統計的妥当性・方法論の 健全性を体系的に評価し、構造化されたレビューレポートを生成する。 「レビューして」「査読して」「実験結果を評価して」で発火。
科学技術・学術論文の執筆スキル。IMRaD 標準、Nature/Science 系、ACS 系、IEEE 系、 Elsevier 系のジャーナル形式に対応した論文構成・セクション設計・文章パターンを提供。 「論文を書いて」「Abstract を作成して」「Methods セクションを書いて」で発火。 assets/ に主要ジャーナル形式の Markdown テンプレートを同梱。