gtex-expression — Tissue Gene Expression
GTEx 54 組織の TPM 中央値を Bar/Heatmap/Violin で可視化 — 外部ライブラリ 0、mygene-search 連携、ko/en/ja。
各組織のサンプル TPM 中央値. TPM = Transcripts Per Million、長さ正規化単位.
z-score = (log10 TPM − 平均) / 標準偏差(遺伝子別).
ツールガイド
定義
gtex-expression は GTEx Portal API V2 (https://gtexportal.org/api/v2) を Next.js 15 Route Handler 4 種 (resolve / median / geneExpression / tissueSiteDetail) でプロキシし、単一または最大 5 件の遺伝子について 54 組織 TPM 中央値を 棒 / グループ棒 / ヒートマップ / バイオリン の 4 種で可視化する無料 GTEx 発現解析ツールです。遺伝子シンボル (TP53)、Entrez ID (7157)、Ensembl ID unversioned/versioned (ENSG00000141510 / ENSG00000141510.18) の 4 つの入力形式を自動検出し、BioPlayground 自前 mygene-search Route Handler を経由して versioned gencodeId を 1 回の fetch で確定します。GTEx 公式ポリシー (verbatim: "do not send queries in parallel ... send one query and wait until it completes") に整合させるため、サーバーサイド GtexQueue (500ms 直列強制 + 2 RPS 上限) + Vercel Edge ISR 24h Brotli 自動 + IndexedDB 30 日 raw wrapper (外部 idb-keyval 0) を統合します。外部ライブラリ 0 — D3.js 873KB / Chart.js / ECharts はすべて自前 SVG `<rect>` 270 セル + CSS `transition: 350ms` + 自前 Epanechnikov KDE 30 行で代替。
目的
(1) GTEx Portal 英語学術 UI の学習負担 (54 組織英名 + GENCODE バージョン管理) を解消 + ko/en/ja 統合エントリポイント (2) 創薬標的検証 / オフターゲット組織安全性評価 / 組織特異性解析の統合ワークフロー (3) mygene-search (BL-108) 連携 — ユーザーから見れば単一ツール (Symbol → Gencode 自動 chain) (4) 54 組織 ko/ja 学術標準マッピング (KAMJE 医学用語集 6 版 + 日本解剖学会) (5) 外部 npm ライブラリ 0 (Bundlephobia: D3.js 873 KB / Chart.js / ECharts 300 KB すべて拒否) — 自前 SVG + 自前 KDE + 自前 IndexedDB ラッパー (6) GTEx 公式ポリシー自動遵守 — サーバーサイド GtexQueue 直列強制 + Retry-After 優先 + 指数バックオフ (2s→4s→8s, max 3 回)
使い方
① 遺伝子を入力 — 4 つの形式を自動検出: • Symbol: TP53、GFAP、INS、MYH7、HBB • Entrez ID: 7157 (TP53)、2670 (GFAP) • Ensembl unversioned: ENSG00000141510 • Ensembl versioned: ENSG00000141510.18 ② データセットを選択 — GTEx V8 (2019, GENCODE v26) / V10 (2024-11) / V11 (2026-01, GENCODE v47) ③ 「検索」をクリック — Route Handler `/api/gtex/resolve` が (1) mygene → ensembl、(2) GTEx `/reference/gene` → versioned gencodeId chain を 1 回の fetch で処理。alias count > 3 で衝突モーダル自動表示。 ④ 棒グラフが自動表示 — 54 組織 TPM 中央値 + 9 カテゴリ背景色 + log10 既定 (0 TPM は log10(max(tpm, 0.01)) 処理) ⑤ カテゴリフィルター (9 マルチトグル) / Y軸トグル (log10 / linear / zスコア) / ソート (カテゴリ / TPM↓ / A-Z) ⑥ 任意の棒をクリック → バイオリンモーダル (サンプル TPM 分布、自前 Epanechnikov KDE + IQR ボックス + 中央値白線) ⑦ 「比較に追加」 → チップ最大 5 件。Grouped Bar 自動切替 + Heatmap トグル (gene × tissue z-score, 270 セル) ⑧ Export — CSV (組織別 TPM + カテゴリ) / SVG (現在のチャート) — 外部ライブラリ 0 (Blob + URL.createObjectURL) ⑨ 外部リンク — GTEx Portal / Ensembl / OpenTargets / Human Protein Atlas / mygene-search (内部) ⑩ 最近の検索 5 件は localStorage に自動保存
例
例 1) TP53 (Symbol 入力、ベースライン) → ENSG00000141510.18 / Entrez 7157 / Chr 17 → 54 組織で TPM 1-50、カテゴリ色分布が正常 (log10 既定) 例 2) GFAP (脳特異) → 脳カテゴリのみフィルタ → 13 本のみ表示。Brain - Cerebellum / Brain - Cortex z > 1.5 例 3) INS (膵臓特異) → TPM↓ ソート → Pancreas 1 位 (大きな外れ値、log10 推奨) 例 4) MYH7 (心臓特異) → Heart - Left Ventricle / Heart - Atrial Appendage の 2 本が突出 例 5) 5 遺伝子比較 (TP53 + GFAP + INS + MYH7 + HBB) → 5 チップ → 自動で Grouped Bar (270 本) + Heatmap トグル (z-score 270 セル、組織特異性を一望)