@nahisaho/satori 0.15.0 → 0.16.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +40 -22
- package/package.json +1 -1
- package/src/.github/skills/scientific-data-submission/SKILL.md +357 -0
- package/src/.github/skills/scientific-gpu-singlecell/SKILL.md +296 -0
- package/src/.github/skills/scientific-marine-ecology/SKILL.md +429 -0
- package/src/.github/skills/scientific-nci60-screening/SKILL.md +307 -0
- package/src/.github/skills/scientific-plant-biology/SKILL.md +321 -0
- package/src/.github/skills/scientific-rrna-taxonomy/SKILL.md +379 -0
- package/src/.github/skills/scientific-scatac-signac/SKILL.md +300 -0
- package/src/.github/skills/scientific-toxicology-env/SKILL.md +309 -0
package/README.md
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
|
|
8
8
|
## Overview
|
|
9
9
|
|
|
10
|
-
このディレクトリには、Exp-01〜13 で蓄積した科学データ解析技法を Agent Skills として体系化した **
|
|
10
|
+
このディレクトリには、Exp-01〜13 で蓄積した科学データ解析技法を Agent Skills として体系化した **124 個**のスキルを格納しています。Copilot がプロンプトの文脈に応じて適切なスキルを自動ロードし、各実験で確立した解析パターンを再利用します。74 のスキルは [ToolUniverse](https://github.com/mims-harvard/ToolUniverse) SMCP 経由で 1,200 以上の外部科学データベースツールとも連携可能です。
|
|
11
11
|
|
|
12
12
|
### パイプラインフロー
|
|
13
13
|
|
|
@@ -208,7 +208,7 @@ symbolic-mathematics ──→ systems-biology ──→ admet-pharmacokinetics
|
|
|
208
208
|
|
|
209
209
|
### ToolUniverse MCP ツール連携
|
|
210
210
|
|
|
211
|
-
|
|
211
|
+
74 のスキル(HIGH 13 + MEDIUM 9 + Phase 3: 20 + Phase 4: 8 + Phase 5: 9 + Phase 6: 7 + Phase 7: 4 + Phase 8: 4)は、[ToolUniverse](https://github.com/mims-harvard/ToolUniverse) SMCP サーバー経由で 1,200 以上の外部科学ツールを利用可能です。各 SKILL.md 内の `### 利用可能ツール` セクションに対応ツールが記載されています。
|
|
212
212
|
|
|
213
213
|
```
|
|
214
214
|
SATORI Skill (方法論・判断) ToolUniverse SMCP (データ取得・計算)
|
|
@@ -247,7 +247,9 @@ SATORI Skill (方法論・判断) ToolUniverse SMCP (データ取得・
|
|
|
247
247
|
│ ensembl-genomics │───MCP──│ Ensembl REST, VEP │
|
|
248
248
|
│ string-network-api │───MCP──│ STRING, BioGRID, STITCH │
|
|
249
249
|
│ expression-comparison│───MCP──│ Expression Atlas │
|
|
250
|
-
│
|
|
250
|
+
│ rrna-taxonomy │───MCP──│ MGnify metagenomics │
|
|
251
|
+
│ marine-ecology │───MCP──│ OBIS, WoRMS, GBIF │
|
|
252
|
+
│ ... (74 skills total) │ │ ... (1,200+ tools) │
|
|
251
253
|
└──────────────────────┘ └─────────────────────────────┘
|
|
252
254
|
```
|
|
253
255
|
|
|
@@ -255,7 +257,7 @@ SATORI Skill (方法論・判断) ToolUniverse SMCP (データ取得・
|
|
|
255
257
|
|
|
256
258
|
| 中区分 | スキル数 | 概要 |
|
|
257
259
|
|---|:---:|---|
|
|
258
|
-
| A. 基盤・ワークフロー |
|
|
260
|
+
| A. 基盤・ワークフロー | 16 | パイプライン構築・前処理・データ生成・図表・執筆・仮説立案・批判的レビュー・SI 生成・LaTeX 変換・引用検証・査読対応・改訂追跡・論文品質・系統的レビュー・BioThings ID マッピング・データ投稿 |
|
|
259
261
|
| B. 統計・探索的解析 | 4 | EDA・仮説検定・次元削減・記号数学 |
|
|
260
262
|
| C. 機械学習・モデリング | 3 | 回帰・分類・特徴量重要度 |
|
|
261
263
|
| D. 実験計画・プロセス最適化 | 2 | DOE・応答曲面法・ベイズ最適化 |
|
|
@@ -264,7 +266,7 @@ SATORI Skill (方法論・判断) ToolUniverse SMCP (データ取得・
|
|
|
264
266
|
| G. 化学・材料・イメージング | 8 | ケモインフォ・材料特性評価・画像形態解析・計算材料科学・ChEMBL アッセイマイニング・MD シミュレーション・高度イメージング・深層化学 |
|
|
265
267
|
| H. 臨床・疫学・メタ科学 | 5 | 生存解析・因果推論・メタアナリシス・臨床試験解析・臨床レポート |
|
|
266
268
|
| I. Deep Research・文献検索 | 3 | 科学文献深層リサーチ・エビデンス階層評価・マルチ DB 文献検索・引用ネットワーク・プレプリント横断検索 |
|
|
267
|
-
| J. 創薬・ファーマコロジー |
|
|
269
|
+
| J. 創薬・ファーマコロジー | 7 | 標的プロファイリング・ADMET/PK・ドラッグリポジショニング・分子ドッキング・薬理学的ターゲット・化合物スクリーニング・NCI-60 スクリーニング |
|
|
268
270
|
| K. 構造生物学・タンパク質工学 | 5 | PDB/AlphaFold 構造解析・de novo タンパク質設計・PPI ネットワーク・ドメイン/ファミリー・構造プロテオミクス |
|
|
269
271
|
| L. 精密医療・臨床意思決定 | 3 | 変異解釈 (ACMG/AMP)・エビデンスベース臨床意思決定・バリアント効果予測 |
|
|
270
272
|
| M. 実験室自動化・データ管理 | 2 | 液体ハンドリング・プロトコル管理・ELN/LIMS 連携・ラボデータ管理 |
|
|
@@ -274,11 +276,11 @@ SATORI Skill (方法論・判断) ToolUniverse SMCP (データ取得・
|
|
|
274
276
|
| Q. 腫瘍学・疾患研究 | 5 | 精密腫瘍学 (CIViC/OncoKB)・疾患-遺伝子関連 (GWAS/Orphanet)・がんゲノミクス (COSMIC/DepMap)・希少疾患遺伝学・細胞株リソース |
|
|
275
277
|
| R. 量子・先端計算 | 7 | 量子計算・GNN・ベイズ統計・説明可能 AI・深層学習・ヘルスケア AI・強化学習 |
|
|
276
278
|
| S. 医用イメージング | 1 | DICOM/NIfTI・WSI 病理画像・Radiomics・MONAI |
|
|
277
|
-
| T. シングルセル・空間・エピゲノミクス |
|
|
279
|
+
| T. シングルセル・空間・エピゲノミクス | 8 | scRNA-seq・Visium・MERFISH・CELLxGENE・RNA velocity・エピゲノミクス・レギュラトリーゲノミクス・摂動解析・scVI 統合・scATAC-seq/Signac・GPU シングルセル |
|
|
278
280
|
| U. 免疫・感染症 | 2 | 免疫情報学・MHC 結合予測・病原体ゲノミクス・AMR・IEDB |
|
|
279
|
-
| V. マイクロバイオーム・環境 |
|
|
281
|
+
| V. マイクロバイオーム・環境 | 6 | 16S/メタゲノム・α/β 多様性・SDM・OBIS・GBIF・系統解析・rRNA 分類学・植物バイオロジー・海洋生態学 |
|
|
280
282
|
| W. システム生物学 | 2 | SBML シミュレーション・FBA・GRN 推定・BioModels・代謝モデリング |
|
|
281
|
-
| X. 疫学・公衆衛生 |
|
|
283
|
+
| X. 疫学・公衆衛生 | 3 | リスク指標 (RR/OR)・年齢標準化・空間疫学・WHO・CDC・公衆衛生データ・環境毒性学 |
|
|
282
284
|
| Y. 集団遺伝学 | 1 | HWE・PCA/ADMIXTURE・Fst・選択スキャン・gnomAD・GWAS |
|
|
283
285
|
| Z. 科学テキストマイニング | 2 | NER・関係抽出・知識グラフ・BERTopic・PubTator バイオアノテーション |
|
|
284
286
|
|
|
@@ -286,7 +288,7 @@ SATORI Skill (方法論・判断) ToolUniverse SMCP (データ取得・
|
|
|
286
288
|
|
|
287
289
|
## Skills 一覧
|
|
288
290
|
|
|
289
|
-
### A. 基盤・ワークフロー(
|
|
291
|
+
### A. 基盤・ワークフロー(16 種)
|
|
290
292
|
|
|
291
293
|
全 Exp に共通する横断的な基盤スキル。
|
|
292
294
|
|
|
@@ -307,6 +309,7 @@ SATORI Skill (方法論・判断) ToolUniverse SMCP (データ取得・
|
|
|
307
309
|
| 13 | [scientific-paper-quality](scientific-paper-quality/SKILL.md) | 可読性スコア・構造バランス・語彙品質・ジャーナル適合性・再現性チェック | 汎用 |
|
|
308
310
|
| 84 | [scientific-systematic-review](scientific-systematic-review/SKILL.md) | PRISMA 2020 系統的レビュー・マルチ DB 検索戦略・スクリーニング・バイアスリスク評価 | 汎用 |
|
|
309
311
|
| 91 | [scientific-biothings-idmapping](scientific-biothings-idmapping/SKILL.md) | BioThings API (MyGene/MyVariant/MyChem) 横断的 ID マッピング・アノテーション | 汎用 |
|
|
312
|
+
| 119 | [scientific-data-submission](scientific-data-submission/SKILL.md) | GenBank/SRA/GEO/BioProject/BioSample データ投稿・FAIR 原則準拠 | 汎用 |
|
|
310
313
|
|
|
311
314
|
### B. 統計・探索的解析(4 種)
|
|
312
315
|
|
|
@@ -411,9 +414,9 @@ SATORI Skill (方法論・判断) ToolUniverse SMCP (データ取得・
|
|
|
411
414
|
| 78 | [scientific-literature-search](scientific-literature-search/SKILL.md) | PubMed/Semantic Scholar/OpenAlex/EuropePMC/CrossRef マルチ DB 検索・引用ネットワーク | 汎用 |
|
|
412
415
|
| 97 | [scientific-preprint-archive](scientific-preprint-archive/SKILL.md) | bioRxiv/medRxiv/arXiv/PMC/CORE/Zenodo/OpenAIRE/Unpaywall プレプリント・OA 横断検索 | 汎用 |
|
|
413
416
|
|
|
414
|
-
### J. 創薬・ファーマコロジー(
|
|
417
|
+
### J. 創薬・ファーマコロジー(7 種)
|
|
415
418
|
|
|
416
|
-
|
|
419
|
+
ドラッグディスカバリーの標的評価・薬物動態・リポジショニング・薬理学的ターゲット・化合物スクリーニング・NCI-60 スクリーニングを担うスキル群。
|
|
417
420
|
|
|
418
421
|
| # | Skill | 説明 | 参照 Exp |
|
|
419
422
|
|---|---|---|---|
|
|
@@ -423,6 +426,7 @@ SATORI Skill (方法論・判断) ToolUniverse SMCP (データ取得・
|
|
|
423
426
|
| 83 | [scientific-molecular-docking](scientific-molecular-docking/SKILL.md) | AutoDock Vina/DiffDock 分子ドッキング・バーチャルスクリーニング | 汎用 |
|
|
424
427
|
| 89 | [scientific-pharmacology-targets](scientific-pharmacology-targets/SKILL.md) | BindingDB/GPCRdb/GtoPdb/BRENDA/Pharos 薬理学的ターゲットプロファイリング | 汎用 |
|
|
425
428
|
| 94 | [scientific-compound-screening](scientific-compound-screening/SKILL.md) | ZINC 化合物ライブラリ検索・バーチャルスクリーニング前処理 | 汎用 |
|
|
429
|
+
| 120 | [scientific-nci60-screening](scientific-nci60-screening/SKILL.md) | NCI-60/CellMiner/DepMap がん細胞株薬剤応答スクリーニング | 汎用 |
|
|
426
430
|
|
|
427
431
|
### K. 構造生物学・タンパク質工学(5 種)
|
|
428
432
|
|
|
@@ -515,9 +519,9 @@ DICOM・WSI 等の医用画像の解析・セグメンテーションを担う
|
|
|
515
519
|
|---|---|---|---|
|
|
516
520
|
| 56 | [scientific-medical-imaging](scientific-medical-imaging/SKILL.md) | DICOM/NIfTI 処理・MONAI U-Net/SwinUNETR・WSI パッチ抽出・Radiomics・3D 可視化 | 汎用 |
|
|
517
521
|
|
|
518
|
-
### T. シングルセル・空間・エピゲノミクス(
|
|
522
|
+
### T. シングルセル・空間・エピゲノミクス(8 種)
|
|
519
523
|
|
|
520
|
-
scRNA-seq・空間トランスクリプトミクス・エピゲノミクス・制御ゲノミクス・摂動解析・scVI
|
|
524
|
+
scRNA-seq・空間トランスクリプトミクス・エピゲノミクス・制御ゲノミクス・摂動解析・scVI 統合・scATAC-seq・GPU シングルセルの解析パイプラインを担うスキル群。
|
|
521
525
|
|
|
522
526
|
| # | Skill | 説明 | 参照 Exp |
|
|
523
527
|
|---|---|---|---|
|
|
@@ -527,6 +531,8 @@ scRNA-seq・空間トランスクリプトミクス・エピゲノミクス・
|
|
|
527
531
|
| 102 | [scientific-regulatory-genomics](scientific-regulatory-genomics/SKILL.md) | RegulomeDB/ReMap/4DN 制御領域バリアント・三次元ゲノム構造解析 | 汎用 |
|
|
528
532
|
| 113 | [scientific-perturbation-analysis](scientific-perturbation-analysis/SKILL.md) | pertpy/Augur/scIB 摂動解析・CRISPR スクリーン・scGen 摂動予測・統合ベンチマーク | 汎用 |
|
|
529
533
|
| 116 | [scientific-scvi-integration](scientific-scvi-integration/SKILL.md) | scVI/scANVI/totalVI/SOLO シングルセル統合・半教師有りアノテーション・CITE-seq | 汎用 |
|
|
534
|
+
| 123 | [scientific-scatac-signac](scientific-scatac-signac/SKILL.md) | Signac/SnapATAC2 scATAC-seq・モチーフ解析・Gene Activity・RNA+ATAC マルチモーダル統合 | 汎用 |
|
|
535
|
+
| 124 | [scientific-gpu-singlecell](scientific-gpu-singlecell/SKILL.md) | rapids-singlecell/cuML/cuGraph GPU アクセラレーションシングルセル解析 | 汎用 |
|
|
530
536
|
|
|
531
537
|
### U. 免疫・感染症(2 種)
|
|
532
538
|
|
|
@@ -537,15 +543,18 @@ scRNA-seq・空間トランスクリプトミクス・エピゲノミクス・
|
|
|
537
543
|
| 59 | [scientific-immunoinformatics](scientific-immunoinformatics/SKILL.md) | MHC-I/II 結合予測・B 細胞エピトープ・TCR/BCR レパトア多様性・抗体 CDR 解析・ワクチン候補ランキング | 汎用 |
|
|
538
544
|
| 60 | [scientific-infectious-disease](scientific-infectious-disease/SKILL.md) | 病原体 WGS QC・AMR 遺伝子検出・MLST 型別・系統解析 (IQ-TREE)・SIR/SEIR 数理モデル | 汎用 |
|
|
539
545
|
|
|
540
|
-
### V. マイクロバイオーム・環境(
|
|
546
|
+
### V. マイクロバイオーム・環境(6 種)
|
|
541
547
|
|
|
542
|
-
|
|
548
|
+
マイクロバイオーム解析・環境/生態系モデリング・系統解析・rRNA 分類学・植物バイオロジー・海洋生態学を担うスキル群。
|
|
543
549
|
|
|
544
550
|
| # | Skill | 説明 | 参照 Exp |
|
|
545
551
|
|---|---|---|---|
|
|
546
552
|
| 61 | [scientific-microbiome-metagenomics](scientific-microbiome-metagenomics/SKILL.md) | DADA2 ASV パイプライン・MetaPhlAn/Kraken2・α/β 多様性・ANCOM-BC 差次的存在量・HUMAnN 機能プロファイリング | 汎用 |
|
|
547
553
|
| 62 | [scientific-environmental-ecology](scientific-environmental-ecology/SKILL.md) | SDM (MaxEnt/RF/GBM)・生物多様性指数・群集序列化 (NMDS/CCA)・保全優先順位ランキング | 汎用 |
|
|
548
554
|
| 103 | [scientific-phylogenetics](scientific-phylogenetics/SKILL.md) | ETE3/scikit-bio 系統樹構築・Faith's PD・UniFrac・分岐年代推定・祖先配列復元 | 汎用 |
|
|
555
|
+
| 118 | [scientific-rrna-taxonomy](scientific-rrna-taxonomy/SKILL.md) | SILVA/Greengenes2/MGnify rRNA リファレンス・分類学・コンセンサス分類 | 汎用 |
|
|
556
|
+
| 121 | [scientific-plant-biology](scientific-plant-biology/SKILL.md) | Plant Reactome/TAIR/Ensembl Plants 植物代謝パスウェイ・種間比較 | 汎用 |
|
|
557
|
+
| 122 | [scientific-marine-ecology](scientific-marine-ecology/SKILL.md) | OBIS/WoRMS/GBIF/FishBase 海洋生物多様性・分布解析 | 汎用 |
|
|
549
558
|
|
|
550
559
|
### W. システム生物学(2 種)
|
|
551
560
|
|
|
@@ -556,14 +565,15 @@ SBML 動的シミュレーション・代謝フラックス・遺伝子制御ネ
|
|
|
556
565
|
| 63 | [scientific-systems-biology](scientific-systems-biology/SKILL.md) | SBML/RoadRunner シミュレーション・FBA/pFBA (cobrapy)・GRN 推定 (GENIE3)・Sobol 感度解析 | 汎用 |
|
|
557
566
|
| 95 | [scientific-metabolic-modeling](scientific-metabolic-modeling/SKILL.md) | BiGG Models/BioModels ゲノムスケール代謝モデル・反応・代謝物検索 | 汎用 |
|
|
558
567
|
|
|
559
|
-
### X. 疫学・公衆衛生(
|
|
568
|
+
### X. 疫学・公衆衛生(3 種)
|
|
560
569
|
|
|
561
|
-
疫学的リスク指標算出・標準化・空間疫学・DAG
|
|
570
|
+
疫学的リスク指標算出・標準化・空間疫学・DAG 交絡分析・公衆衛生データアクセス・環境毒性学を担うスキル群。
|
|
562
571
|
|
|
563
572
|
| # | Skill | 説明 | 参照 Exp |
|
|
564
573
|
|---|---|---|---|
|
|
565
574
|
| 64 | [scientific-epidemiology-public-health](scientific-epidemiology-public-health/SKILL.md) | RR/OR/RD/NNT/AF リスク指標・直接/間接年齢標準化・LISA/Getis-Ord 空間クラスタリング・DAG バックドア基準 | 汎用 |
|
|
566
575
|
| 98 | [scientific-public-health-data](scientific-public-health-data/SKILL.md) | NHANES/MedlinePlus/RxNorm/ODPHP 公衆衛生データアクセス・健康格差API | 汎用 |
|
|
576
|
+
| 117 | [scientific-toxicology-env](scientific-toxicology-env/SKILL.md) | CTD/Tox21/ToxCast/T3DB/EPA IRIS 環境毒性学・化学物質健康影響解析 | 汎用 |
|
|
567
577
|
|
|
568
578
|
### Y. 集団遺伝学(1 種)
|
|
569
579
|
|
|
@@ -642,7 +652,8 @@ Skills は `.github/skills/` に配置されているため、Copilot が自動
|
|
|
642
652
|
│ ├── scientific-revision-tracker/
|
|
643
653
|
│ ├── scientific-paper-quality/
|
|
644
654
|
│ ├── scientific-systematic-review/
|
|
645
|
-
│
|
|
655
|
+
│ ├── scientific-biothings-idmapping/
|
|
656
|
+
│ └── scientific-data-submission/
|
|
646
657
|
│
|
|
647
658
|
│── [B] 統計・探索的解析
|
|
648
659
|
│ ├── scientific-eda-correlation/
|
|
@@ -713,7 +724,8 @@ Skills は `.github/skills/` に配置されているため、Copilot が自動
|
|
|
713
724
|
│ ├── scientific-drug-repurposing/
|
|
714
725
|
│ ├── scientific-molecular-docking/
|
|
715
726
|
│ ├── scientific-pharmacology-targets/
|
|
716
|
-
│
|
|
727
|
+
│ ├── scientific-compound-screening/
|
|
728
|
+
│ └── scientific-nci60-screening/
|
|
717
729
|
│
|
|
718
730
|
├── [K] 構造生物学・タンパク質工学
|
|
719
731
|
│ ├── scientific-protein-structure-analysis/
|
|
@@ -769,7 +781,9 @@ Skills は `.github/skills/` に配置されているため、Copilot が自動
|
|
|
769
781
|
│ ├── scientific-epigenomics-chromatin/
|
|
770
782
|
│ ├── scientific-regulatory-genomics/
|
|
771
783
|
│ ├── scientific-perturbation-analysis/
|
|
772
|
-
│
|
|
784
|
+
│ ├── scientific-scvi-integration/
|
|
785
|
+
│ ├── scientific-scatac-signac/
|
|
786
|
+
│ └── scientific-gpu-singlecell/
|
|
773
787
|
│
|
|
774
788
|
│── [U] 免疫・感染症
|
|
775
789
|
│ ├── scientific-immunoinformatics/
|
|
@@ -778,7 +792,10 @@ Skills は `.github/skills/` に配置されているため、Copilot が自動
|
|
|
778
792
|
│── [V] マイクロバイオーム・環境
|
|
779
793
|
│ ├── scientific-microbiome-metagenomics/
|
|
780
794
|
│ ├── scientific-environmental-ecology/
|
|
781
|
-
│
|
|
795
|
+
│ ├── scientific-phylogenetics/
|
|
796
|
+
│ ├── scientific-rrna-taxonomy/
|
|
797
|
+
│ ├── scientific-plant-biology/
|
|
798
|
+
│ └── scientific-marine-ecology/
|
|
782
799
|
│
|
|
783
800
|
│── [W] システム生物学
|
|
784
801
|
│ ├── scientific-systems-biology/
|
|
@@ -786,7 +803,8 @@ Skills は `.github/skills/` に配置されているため、Copilot が自動
|
|
|
786
803
|
│
|
|
787
804
|
│── [X] 疫学・公衆衛生
|
|
788
805
|
│ ├── scientific-epidemiology-public-health/
|
|
789
|
-
│
|
|
806
|
+
│ ├── scientific-public-health-data/
|
|
807
|
+
│ └── scientific-toxicology-env/
|
|
790
808
|
│
|
|
791
809
|
│── [Y] 集団遺伝学
|
|
792
810
|
│ └── scientific-population-genetics/
|
package/package.json
CHANGED
|
@@ -0,0 +1,357 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: scientific-data-submission
|
|
3
|
+
description: |
|
|
4
|
+
科学データ登録・アーカイブスキル。GenBank/SRA 配列登録・
|
|
5
|
+
ENA 配列アーカイブ・GEO 発現データ登録・BioProject/BioSample
|
|
6
|
+
メタデータ管理・FAIR 原則準拠データ共有。
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Scientific Data Submission
|
|
10
|
+
|
|
11
|
+
GenBank / SRA / ENA / GEO / BioProject を活用した科学データの
|
|
12
|
+
登録・アーカイブパイプラインを提供する。FAIR 原則に準拠した
|
|
13
|
+
配列データ・発現データ・メタデータの公開準備。
|
|
14
|
+
|
|
15
|
+
## When to Use
|
|
16
|
+
|
|
17
|
+
- 配列データを GenBank/DDBJ/ENA に登録するとき
|
|
18
|
+
- RNA-seq/WGS データを SRA にアーカイブするとき
|
|
19
|
+
- GEO にマイクロアレイ/RNA-seq 発現データを登録するとき
|
|
20
|
+
- BioProject/BioSample でメタデータを構造化するとき
|
|
21
|
+
- 論文投稿時にデータアクセッション番号が必要なとき
|
|
22
|
+
- FAIR 原則 (Findable, Accessible, Interoperable, Reusable) に準拠するとき
|
|
23
|
+
|
|
24
|
+
---
|
|
25
|
+
|
|
26
|
+
## Quick Start
|
|
27
|
+
|
|
28
|
+
## 1. BioProject/BioSample メタデータ作成
|
|
29
|
+
|
|
30
|
+
```python
|
|
31
|
+
import json
|
|
32
|
+
import pandas as pd
|
|
33
|
+
from pathlib import Path
|
|
34
|
+
from datetime import date
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
def create_bioproject_metadata(title, description, organism,
|
|
38
|
+
data_type="Genome Sequencing",
|
|
39
|
+
relevance="Medical"):
|
|
40
|
+
"""
|
|
41
|
+
BioProject メタデータ XML/JSON 生成。
|
|
42
|
+
|
|
43
|
+
Parameters:
|
|
44
|
+
title: str — プロジェクトタイトル
|
|
45
|
+
description: str — プロジェクト説明
|
|
46
|
+
organism: str — 生物種名
|
|
47
|
+
data_type: str — データ種別
|
|
48
|
+
relevance: str — 関連分野
|
|
49
|
+
"""
|
|
50
|
+
bioproject = {
|
|
51
|
+
"Project": {
|
|
52
|
+
"ProjectID": {"ArchiveID": {"accession": "PRJNA_PENDING"}},
|
|
53
|
+
"Descriptor": {
|
|
54
|
+
"Title": title,
|
|
55
|
+
"Description": description,
|
|
56
|
+
"Relevance": relevance,
|
|
57
|
+
},
|
|
58
|
+
"ProjectType": {
|
|
59
|
+
"ProjectTypeSubmission": {
|
|
60
|
+
"Target": {
|
|
61
|
+
"Organism": {"OrganismName": organism},
|
|
62
|
+
},
|
|
63
|
+
"Method": {"MethodType": data_type},
|
|
64
|
+
"Objectives": {"Data": {"DataType": data_type}},
|
|
65
|
+
}
|
|
66
|
+
},
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
print(f"BioProject metadata created:")
|
|
71
|
+
print(f" Title: {title}")
|
|
72
|
+
print(f" Organism: {organism}")
|
|
73
|
+
print(f" Data type: {data_type}")
|
|
74
|
+
return bioproject
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
def create_biosample_table(samples, organism, package="Generic"):
|
|
78
|
+
"""
|
|
79
|
+
BioSample TSV テンプレート生成。
|
|
80
|
+
|
|
81
|
+
Parameters:
|
|
82
|
+
samples: list[dict] — サンプル情報
|
|
83
|
+
organism: str — 生物種名
|
|
84
|
+
package: str — BioSample パッケージ
|
|
85
|
+
"""
|
|
86
|
+
required_fields = [
|
|
87
|
+
"sample_name", "organism", "collection_date",
|
|
88
|
+
"geo_loc_name", "tissue", "description",
|
|
89
|
+
]
|
|
90
|
+
|
|
91
|
+
rows = []
|
|
92
|
+
for s in samples:
|
|
93
|
+
row = {
|
|
94
|
+
"sample_name": s.get("name", ""),
|
|
95
|
+
"organism": organism,
|
|
96
|
+
"collection_date": s.get("date", str(date.today())),
|
|
97
|
+
"geo_loc_name": s.get("location", "not collected"),
|
|
98
|
+
"tissue": s.get("tissue", "not applicable"),
|
|
99
|
+
"description": s.get("description", ""),
|
|
100
|
+
}
|
|
101
|
+
row.update({k: v for k, v in s.items()
|
|
102
|
+
if k not in ["name", "date", "location"]})
|
|
103
|
+
rows.append(row)
|
|
104
|
+
|
|
105
|
+
df = pd.DataFrame(rows)
|
|
106
|
+
print(f"BioSample table: {len(df)} samples, package='{package}'")
|
|
107
|
+
return df
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
## 2. GenBank 配列登録準備
|
|
111
|
+
|
|
112
|
+
```python
|
|
113
|
+
def prepare_genbank_submission(sequences, annotations, output_dir="submission"):
|
|
114
|
+
"""
|
|
115
|
+
GenBank 配列登録用 .sqn ファイル準備。
|
|
116
|
+
|
|
117
|
+
Parameters:
|
|
118
|
+
sequences: dict — {seq_id: sequence_string}
|
|
119
|
+
annotations: dict — {seq_id: {gene, product, organism, ...}}
|
|
120
|
+
output_dir: str — 出力ディレクトリ
|
|
121
|
+
"""
|
|
122
|
+
output_dir = Path(output_dir)
|
|
123
|
+
output_dir.mkdir(parents=True, exist_ok=True)
|
|
124
|
+
|
|
125
|
+
# FASTA 生成
|
|
126
|
+
fasta_path = output_dir / "sequences.fsa"
|
|
127
|
+
with open(fasta_path, "w") as f:
|
|
128
|
+
for seq_id, seq in sequences.items():
|
|
129
|
+
ann = annotations.get(seq_id, {})
|
|
130
|
+
organism = ann.get("organism", "Unknown organism")
|
|
131
|
+
f.write(f">{seq_id} [organism={organism}]\n")
|
|
132
|
+
# 80文字折返し
|
|
133
|
+
for i in range(0, len(seq), 80):
|
|
134
|
+
f.write(seq[i:i+80] + "\n")
|
|
135
|
+
|
|
136
|
+
# Feature Table 生成
|
|
137
|
+
tbl_path = output_dir / "sequences.tbl"
|
|
138
|
+
with open(tbl_path, "w") as f:
|
|
139
|
+
for seq_id, ann in annotations.items():
|
|
140
|
+
f.write(f">Feature {seq_id}\n")
|
|
141
|
+
if "gene" in ann:
|
|
142
|
+
f.write(f"1\t{len(sequences[seq_id])}\tgene\n")
|
|
143
|
+
f.write(f"\t\t\tgene\t{ann['gene']}\n")
|
|
144
|
+
if "product" in ann:
|
|
145
|
+
f.write(f"1\t{len(sequences[seq_id])}\tCDS\n")
|
|
146
|
+
f.write(f"\t\t\tproduct\t{ann['product']}\n")
|
|
147
|
+
|
|
148
|
+
# Template 生成
|
|
149
|
+
template = {
|
|
150
|
+
"source": {
|
|
151
|
+
"organism": list(annotations.values())[0].get("organism", ""),
|
|
152
|
+
"mol_type": "genomic DNA",
|
|
153
|
+
},
|
|
154
|
+
"submitter": {
|
|
155
|
+
"name": "AutoSubmission",
|
|
156
|
+
},
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
template_path = output_dir / "template.json"
|
|
160
|
+
with open(template_path, "w") as f:
|
|
161
|
+
json.dump(template, f, indent=2)
|
|
162
|
+
|
|
163
|
+
print(f"GenBank submission prepared: {len(sequences)} sequences")
|
|
164
|
+
print(f" FASTA: {fasta_path}")
|
|
165
|
+
print(f" Feature Table: {tbl_path}")
|
|
166
|
+
return {"fasta": str(fasta_path), "tbl": str(tbl_path)}
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
## 3. SRA メタデータ & アップロード
|
|
170
|
+
|
|
171
|
+
```python
|
|
172
|
+
def prepare_sra_metadata(samples, library_strategy="WGS",
|
|
173
|
+
library_source="GENOMIC",
|
|
174
|
+
platform="ILLUMINA",
|
|
175
|
+
instrument_model="Illumina NovaSeq 6000"):
|
|
176
|
+
"""
|
|
177
|
+
SRA メタデータ TSV 生成。
|
|
178
|
+
|
|
179
|
+
Parameters:
|
|
180
|
+
samples: list[dict] — {biosample, title, file_r1, file_r2}
|
|
181
|
+
library_strategy: str — WGS/RNA-Seq/AMPLICON/etc.
|
|
182
|
+
library_source: str — GENOMIC/TRANSCRIPTOMIC/etc.
|
|
183
|
+
platform: str — ILLUMINA/OXFORD_NANOPORE/etc.
|
|
184
|
+
"""
|
|
185
|
+
rows = []
|
|
186
|
+
for s in samples:
|
|
187
|
+
rows.append({
|
|
188
|
+
"biosample_accession": s.get("biosample", "SAMN_PENDING"),
|
|
189
|
+
"library_ID": s.get("library_id", s.get("title", "")),
|
|
190
|
+
"title": s.get("title", ""),
|
|
191
|
+
"library_strategy": library_strategy,
|
|
192
|
+
"library_source": library_source,
|
|
193
|
+
"library_selection": s.get("selection", "RANDOM"),
|
|
194
|
+
"library_layout": "paired" if s.get("file_r2") else "single",
|
|
195
|
+
"platform": platform,
|
|
196
|
+
"instrument_model": instrument_model,
|
|
197
|
+
"filetype": "fastq",
|
|
198
|
+
"filename": s.get("file_r1", ""),
|
|
199
|
+
"filename2": s.get("file_r2", ""),
|
|
200
|
+
})
|
|
201
|
+
|
|
202
|
+
df = pd.DataFrame(rows)
|
|
203
|
+
print(f"SRA metadata: {len(df)} runs, strategy={library_strategy}")
|
|
204
|
+
return df
|
|
205
|
+
|
|
206
|
+
|
|
207
|
+
def sra_upload_ascp(files, destination, ascp_key=None):
|
|
208
|
+
"""
|
|
209
|
+
Aspera (ascp) による SRA データ高速アップロード。
|
|
210
|
+
|
|
211
|
+
Parameters:
|
|
212
|
+
files: list — アップロードファイルリスト
|
|
213
|
+
destination: str — SRA アップロード先
|
|
214
|
+
ascp_key: str — Aspera SSH キーパス
|
|
215
|
+
"""
|
|
216
|
+
import subprocess
|
|
217
|
+
|
|
218
|
+
if ascp_key is None:
|
|
219
|
+
ascp_key = Path.home() / ".aspera/connect/etc/asperaweb_id_dsa.openssh"
|
|
220
|
+
|
|
221
|
+
for f in files:
|
|
222
|
+
cmd = [
|
|
223
|
+
"ascp", "-i", str(ascp_key),
|
|
224
|
+
"-QT", "-l", "300m", "-k", "1",
|
|
225
|
+
str(f), destination,
|
|
226
|
+
]
|
|
227
|
+
print(f"Uploading: {f}")
|
|
228
|
+
subprocess.run(cmd, check=True)
|
|
229
|
+
|
|
230
|
+
print(f"SRA upload complete: {len(files)} files")
|
|
231
|
+
```
|
|
232
|
+
|
|
233
|
+
## 4. GEO 発現データ登録
|
|
234
|
+
|
|
235
|
+
```python
|
|
236
|
+
def prepare_geo_submission(expression_matrix, sample_metadata,
|
|
237
|
+
platform="GPL16791", output_dir="geo_submission"):
|
|
238
|
+
"""
|
|
239
|
+
GEO SOFT 形式サブミッション準備。
|
|
240
|
+
|
|
241
|
+
Parameters:
|
|
242
|
+
expression_matrix: pd.DataFrame — 遺伝子 × サンプルマトリクス
|
|
243
|
+
sample_metadata: pd.DataFrame — サンプルメタデータ
|
|
244
|
+
platform: str — GEO プラットフォーム ID
|
|
245
|
+
output_dir: str — 出力ディレクトリ
|
|
246
|
+
"""
|
|
247
|
+
output_dir = Path(output_dir)
|
|
248
|
+
output_dir.mkdir(parents=True, exist_ok=True)
|
|
249
|
+
|
|
250
|
+
# SOFT テンプレート
|
|
251
|
+
soft_path = output_dir / "submission.soft"
|
|
252
|
+
with open(soft_path, "w") as f:
|
|
253
|
+
# Series section
|
|
254
|
+
f.write("^SERIES\n")
|
|
255
|
+
f.write("!Series_title = \n")
|
|
256
|
+
f.write("!Series_summary = \n")
|
|
257
|
+
f.write(f"!Series_platform_id = {platform}\n")
|
|
258
|
+
|
|
259
|
+
# Sample sections
|
|
260
|
+
for col in expression_matrix.columns:
|
|
261
|
+
meta = sample_metadata[sample_metadata["sample_id"] == col]
|
|
262
|
+
f.write(f"\n^SAMPLE = {col}\n")
|
|
263
|
+
f.write(f"!Sample_title = {col}\n")
|
|
264
|
+
if len(meta) > 0:
|
|
265
|
+
for key, val in meta.iloc[0].items():
|
|
266
|
+
if key != "sample_id":
|
|
267
|
+
f.write(f"!Sample_characteristics_ch1 = {key}: {val}\n")
|
|
268
|
+
|
|
269
|
+
# Matrix file
|
|
270
|
+
matrix_path = output_dir / "expression_matrix.txt"
|
|
271
|
+
expression_matrix.to_csv(matrix_path, sep="\t")
|
|
272
|
+
|
|
273
|
+
# Raw data files list
|
|
274
|
+
raw_files_path = output_dir / "raw_files.txt"
|
|
275
|
+
with open(raw_files_path, "w") as f:
|
|
276
|
+
for col in expression_matrix.columns:
|
|
277
|
+
f.write(f"{col}.fastq.gz\n")
|
|
278
|
+
|
|
279
|
+
print(f"GEO submission: {expression_matrix.shape[1]} samples, "
|
|
280
|
+
f"{expression_matrix.shape[0]} genes")
|
|
281
|
+
return {"soft": str(soft_path), "matrix": str(matrix_path)}
|
|
282
|
+
```
|
|
283
|
+
|
|
284
|
+
## 5. FAIR データ検証チェックリスト
|
|
285
|
+
|
|
286
|
+
```python
|
|
287
|
+
def fair_checklist(submission_package):
|
|
288
|
+
"""
|
|
289
|
+
FAIR 原則準拠チェックリスト。
|
|
290
|
+
|
|
291
|
+
Parameters:
|
|
292
|
+
submission_package: dict — 登録パッケージ情報
|
|
293
|
+
"""
|
|
294
|
+
checks = {
|
|
295
|
+
"Findable": {
|
|
296
|
+
"F1_persistent_id": bool(submission_package.get("accession")),
|
|
297
|
+
"F2_metadata_rich": bool(submission_package.get("metadata")),
|
|
298
|
+
"F3_id_in_metadata": True,
|
|
299
|
+
"F4_searchable_registry": bool(submission_package.get("repository")),
|
|
300
|
+
},
|
|
301
|
+
"Accessible": {
|
|
302
|
+
"A1_retrievable_protocol": bool(submission_package.get("access_url")),
|
|
303
|
+
"A1_1_open_protocol": True,
|
|
304
|
+
"A2_metadata_persists": True,
|
|
305
|
+
},
|
|
306
|
+
"Interoperable": {
|
|
307
|
+
"I1_formal_language": bool(submission_package.get("format")),
|
|
308
|
+
"I2_fair_vocabularies": bool(submission_package.get("ontology_terms")),
|
|
309
|
+
"I3_qualified_references": bool(submission_package.get("references")),
|
|
310
|
+
},
|
|
311
|
+
"Reusable": {
|
|
312
|
+
"R1_usage_license": bool(submission_package.get("license")),
|
|
313
|
+
"R1_1_community_standards": bool(submission_package.get("standard")),
|
|
314
|
+
"R1_2_provenance": bool(submission_package.get("methods")),
|
|
315
|
+
},
|
|
316
|
+
}
|
|
317
|
+
|
|
318
|
+
total = 0
|
|
319
|
+
passed = 0
|
|
320
|
+
for principle, items in checks.items():
|
|
321
|
+
for check, status in items.items():
|
|
322
|
+
total += 1
|
|
323
|
+
if status:
|
|
324
|
+
passed += 1
|
|
325
|
+
|
|
326
|
+
score = passed / total * 100 if total > 0 else 0
|
|
327
|
+
print(f"FAIR checklist: {passed}/{total} ({score:.0f}%)")
|
|
328
|
+
for principle, items in checks.items():
|
|
329
|
+
n_pass = sum(items.values())
|
|
330
|
+
print(f" {principle}: {n_pass}/{len(items)}")
|
|
331
|
+
|
|
332
|
+
return checks
|
|
333
|
+
```
|
|
334
|
+
|
|
335
|
+
---
|
|
336
|
+
|
|
337
|
+
## パイプライン統合
|
|
338
|
+
|
|
339
|
+
```
|
|
340
|
+
bioinformatics → data-submission → literature-search
|
|
341
|
+
(解析完了) (データ登録) (論文投稿時)
|
|
342
|
+
│ │ ↓
|
|
343
|
+
lab-data-management ───┘ academic-writing
|
|
344
|
+
(Benchling/OMERO) │ (論文執筆)
|
|
345
|
+
↓
|
|
346
|
+
ebi-databases
|
|
347
|
+
(ENA/BioStudies 連携)
|
|
348
|
+
```
|
|
349
|
+
|
|
350
|
+
## パイプライン出力
|
|
351
|
+
|
|
352
|
+
| ファイル | 説明 | 次スキル |
|
|
353
|
+
|---------|------|---------|
|
|
354
|
+
| `submission/sequences.fsa` | GenBank 登録用 FASTA | → bioinformatics |
|
|
355
|
+
| `submission/sra_metadata.tsv` | SRA メタデータ | → ebi-databases |
|
|
356
|
+
| `geo_submission/submission.soft` | GEO SOFT テンプレート | → gene-expression |
|
|
357
|
+
| `submission/fair_report.json` | FAIR チェックリスト結果 | → academic-writing |
|