オミクス解析入門 ― トランスクリプトーム解析の実践例 ―

2026年4月24日
株式会社知能情報システム 中田 翔太
目次
  1. はじめに
  2. 実行環境とデータセット
    1. 実行環境
    2. RNA-seq データについて
    3. 使用データセット
  3. 発現変動解析 (DEG 解析)
    1. DEG 解析とは
    2. 解析結果
    3. 結果の考察
  4. エンリッチメント解析
    1. DEGs から生物学的意味を読み解く
    2. 解析結果
    3. 結果の考察
  5. まとめ

1. はじめに

生命現象を分子レベルで理解するためのアプローチとして、オミクス解析が広く用いられています。オミクス解析とは、生体内の分子を網羅的に計測・解析する手法の総称であり、RNA、タンパク質、代謝物などの対象分子に応じた各種解析(トランスクリプトーム解析、プロテオミクス解析、メタボロミクス解析など)に分類されます。いずれも個別の分子ではなく、生体システム全体を分析することで、疾患メカニズムの解明やバイオマーカー探索に貢献しています。

中でも、発現している RNA を網羅的に定量するトランスクリプトーム解析は、次世代シーケンサー (NGS) の発展とともに広く利用されているオミクス解析の一つです。RNA-seq は mRNA 由来の配列情報を大規模に取得することで、数万種類の遺伝子の発現量を同時に定量できる強力な手法です。

RNA-seq で得られたデータからは、目的に応じて様々な情報を引き出すことができます。代表的な解析として、以下のようなものがあります。

本稿では、公開データベースである NCBI GEO (Gene Expression Omnibus) から取得した RNA-seq データを用いて、これらの解析を段階的に実施し、トランスクリプトーム解析の流れを見ていきます。

RNA-seq
データ
発現変動
解析
エンリッチメント
解析

2. 実行環境とデータセット

2.1. 実行環境

本稿の解析は、以下のバージョンの Python および主要ライブラリを用いて実施しました。

ソフトウェアバージョン
Python3.12.3
PyDESeq20.5.4
gget0.30.3
pandas3.0.2
numpy2.4.4

2.2. RNA-seq データについて

RNA-seq で得られる発現量データには、マッピング直後の生カウントと、それを補正した正規化データがあります。これらは解析の目的や手法に応じて適切な入力形式が異なるため、それぞれの違いを理解しておくことが重要です。

生カウント (Raw Counts) は、各遺伝子にマッピングされたリード数そのものです。遺伝子長やライブラリ サイズの補正を行っていないため、そのままではサンプル間や遺伝子間の比較には適しません。一方、一部の統計的検定手法では、内部で正規化や分散推定を行う設計になっているため、生カウントを入力として使用します。

正規化データは、遺伝子長やライブラリ サイズの違いを補正し、発現量を比較しやすくした指標です。代表的なものとして以下があります。

正規化データは、機械学習や可視化など発現量の相対的な違いを比較する用途で用いられます。一方、本稿の DEG 解析では、DESeq2 [1] の入力として生カウントを使用しています。

2.3. 使用データセット

本稿では、NCBI GEO で公開されている GSE62944 データセットを使用しました。これは TCGA (The Cancer Genome Atlas) プロジェクトで収集された 24 種のがんの RNA-seq データを含む大規模データセットです [2]。

本稿では BRCA (乳がん) の腫瘍組織と正常組織を対象に、発現変動解析とエンリッチメント解析を行います。

以下のコードでは、生データから BRCA サンプルを抽出し、DEG 解析用のデータセットを準備しています。

クリックでコードを表示
import pandas as pd

# 解析対象とするがんの種類を指定します。今回は BRCA を指定します。
TARGET = "BRCA"

# ダウンロードした RNA-seq データのファイル名を指定します。
type_file_normal = "GSE62944_06_01_15_TCGA_24_Normal_CancerType_Samples.txt.gz"
type_file_tumor = "GSE62944_06_01_15_TCGA_24_CancerType_Samples.txt.gz"
counts_file_normal = "GSM1697009_06_01_15_TCGA_24.normal_Rsubread_FeatureCounts.txt.gz"
counts_file_tumor = "GSM1536837_06_01_15_TCGA_24.tumor_Rsubread_FeatureCounts.txt.gz"

# BRCA 患者の正常サンプルの ID を取得します。
df_type_normal = pd.read_csv(
    type_file_normal,
    sep=r"\s+",
    header=None,
    compression="gzip",
    engine="python"
)
normal_ids = df_type_normal[df_type_normal[1] == TARGET][0].tolist()

# BRCA 患者の腫瘍サンプルの ID を取得します。
df_type_tumor = pd.read_csv(
    type_file_tumor,
    sep=r"\s+",
    header=None,
    compression="gzip",
    engine="python"
)
tumor_ids = df_type_tumor[df_type_tumor[1] == TARGET][0].tolist()

print(f"BRCA サンプル数: 正常={len(normal_ids)}, 腫瘍={len(tumor_ids)}")

# 生カウント データを読み込みます。
df_counts_normal = pd.read_csv(
    counts_file_normal,
    sep=r"\s+",
    index_col=0,
    compression="gzip",
    engine="python"
)
df_counts_tumor = pd.read_csv(
    counts_file_tumor,
    sep=r"\s+",
    index_col=0,
    compression="gzip",
    engine="python"
)

# BRCA 患者の ID と一致するカウント データを抽出して、
# 正常サンプルと腫瘍サンプルを結合します。
df_brca_counts = pd.concat([
    df_counts_normal[normal_ids].T,
    df_counts_tumor[tumor_ids].T
])

print(f"遺伝子数: {df_brca_counts.shape[1]}")

# メタデータを作成します。`condition` 列に "normal" または "tumor" を格納します。
df_brca_meta = pd.concat([
    pd.DataFrame("normal", index=normal_ids, columns=["condition"]),
    pd.DataFrame("tumor", index=tumor_ids, columns=["condition"])
])

# Pickle ファイルとして保存します。
df_brca_counts.to_pickle("BRCA_counts.pkl")
df_brca_meta.to_pickle("BRCA_metadata.pkl")

3. 発現変動解析 (DEG 解析)

3.1. DEG 解析とは

RNA-seq データ解析の最初のステップとして広く行われるのが、DEG 解析 です。これは、2 つの条件間 (例: 腫瘍 vs 正常) で統計的に有意な発現変動を示す遺伝子を同定する手法であり、疾患に関連する遺伝子候補を抽出する出発点となります。

DEG 解析の結果からは、以下のような情報が得られます。

本稿では PyDESeq2 ライブラリ [3] (DESeq2 の Python 実装、MIT License) を使用しました。DESeq2 は RNA-seq の生カウントを対象とした統計手法であり、各遺伝子の発現量を負の二項分布に基づいてモデル化し、ライブラリ サイズの違いを内部で補正したうえで検定を行います。

3.2. 解析結果

以下のコードでは、生カウント データと腫瘍または正常のメタデータを PyDESeq2 に入力し、遺伝子ごとの log2 fold change と補正後 p 値を算出しています。

クリックでコードを表示
import pandas as pd
from pydeseq2.dds import DeseqDataSet
from pydeseq2.default_inference import DefaultInference
from pydeseq2.ds import DeseqStats

# フィルタリングに使用するリード数の下限を指定します。
MIN_READ_COUNT = 10

# 計算に使用する CPU の数です。
N_CPUS = 8

# 生カウント データとメタデータを読み込みます。
df_counts = pd.read_pickle("BRCA_counts.pkl")
df_meta = pd.read_pickle("BRCA_metadata.pkl")

# 全サンプルにおける合計リード数が `MIN_READ_COUNT` 未満の遺伝子は除外します (フィルタリング)。
genes_to_keep = df_counts.columns[df_counts.sum(axis=0) >= MIN_READ_COUNT]
df_counts = df_counts[genes_to_keep]

# DEG 解析用のオブジェクトを作成します。
inference = DefaultInference(n_cpus=N_CPUS)
dds = DeseqDataSet(
    counts=df_counts,
    metadata=df_meta,
    design="~condition",
    refit_cooks=True,
    inference=inference
)

# DEG 解析を実行し、統計量を計算します。
dds.deseq2()
stats = DeseqStats(
    dds,
    contrast=["condition", "tumor", "normal"],
    inference=inference
)
stats.summary()

# MA プロットを描画します。
stats.plot_MA(s=20, save_path="BRCA_MA_plot.png")

# 結果を CSV ファイルとして保存します。
stats.results_df.to_csv("BRCA_deg_results.csv")

DEG 解析の結果、腫瘍組織と正常組織の間で、16,690 個の遺伝子が有意 (補正後 p 値 < 0.05) な発現変動を示しました。

ここで、有意遺伝子数の解釈には注意が必要です。本データセットは症例数が非常に多く (腫瘍 1,119 例、正常 113 例) 検出力が高いため、ごく小さな発現差でも統計的に有意となりえます。すなわち、「統計的に有意」であることは「発現変動そのものが大きい」ことと同義ではありません。加えて、腫瘍組織と正常組織では細胞組成 (腫瘍細胞、脂肪細胞、免疫細胞など) そのものが大きく異なるため、観察された差のすべてが腫瘍細胞固有の発現変動を意味するわけではなく、組織全体としての細胞構成の違いも含まれている点に留意する必要があります。

まず、以下の MA プロットで発現変動の全体像を俯瞰します。横軸は各遺伝子の平均発現量 (log スケール) を表し、右にいくほど発現量の多い遺伝子です。縦軸は log2 fold change であり、正の値の遺伝子ほど腫瘍組織で高発現、負の値の遺伝子ほど正常組織で高発現であることを表します。

MA Plot
図 1: MA プロット
横軸は平均発現量 (log スケール)、縦軸は log2 fold change です。
赤色の点は補正後 p 値 < 0.05 の有意遺伝子、灰色の点は非有意遺伝子です。

MA プロットから、本データセットでは有意遺伝子 (赤) の割合が非常に高いことが確認できます。ただし、補正後 p 値は「変動の確からしさ」を示すに過ぎず、個々の遺伝子がどの程度大きく変動しているかを表すものではありません。今回のデータセットは検出力が高いため、有意遺伝子の中には発現変動の小さい遺伝子も多く含まれることが想定され、有意性だけを見ていては個々の遺伝子の生物学的な重要性を判断できません。そこで、統計的有意性と発現変動の大きさの両方の分布を分析するために Volcano plot を確認します。

以下のコードにより、各遺伝子を 5 群に色分けした Volcano plot を描画できます。

クリックでコードを表示
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd

# 補正後 p 値の閾値です。
PADJ_THRESHOLD = 0.05

# log2 fold change の絶対値の閾値です。
LOG2FC_THRESHOLD = 2.0

# DEG 解析の結果を読み込みます。
df = pd.read_csv("BRCA_deg_results.csv", index_col=0)

# 補正後 p 値または log2 fold change が欠損している遺伝子を除外します。
df = df.dropna(subset=["padj", "log2FoldChange"])

# -log10(補正後 p 値) を計算します。
# 補正後 p 値が 0 の行はゼロ除算を避けるため最小非ゼロ値で置き換えます。
min_nonzero_padj = df.loc[df["padj"] > 0, "padj"].min()
padj_clipped = df["padj"].clip(lower=min_nonzero_padj)
neg_log10_padj = -np.log10(padj_clipped)

# log2 fold change の値を取得します。
log2fc = df["log2FoldChange"]

# 有意性と発現変動の大きさで分類します。
# 有意かつ変動の大きい群は、さらに上昇または下降で分類します。
is_sig = df["padj"] < PADJ_THRESHOLD
is_large = log2fc.abs() > LOG2FC_THRESHOLD
mask_both_up = is_sig & is_large & (log2fc > 0)
mask_both_down = is_sig & is_large & (log2fc < 0)
mask_sig_only = is_sig & ~is_large
mask_large_only = ~is_sig & is_large
mask_none = ~is_sig & ~is_large

# 各群の遺伝子数を表示します。
print(f"総遺伝子数: {len(df):,}")
print(f"両方満たす (上昇) (padj<0.05 & log2FC>2): {mask_both_up.sum():,}")
print(f"両方満たす (下降) (padj<0.05 & log2FC<-2): {mask_both_down.sum():,}")
print(f"有意のみ (変動小): {mask_sig_only.sum():,}")
print(f"変動のみ (非有意): {mask_large_only.sum():,}")
print(f"両方満たさない: {mask_none.sum():,}")

# Volcano plot を描画します。
fig, ax = plt.subplots(figsize=(7, 6))

ax.scatter(
    log2fc[mask_none], neg_log10_padj[mask_none],
    s=6, c="#d0d0d0", alpha=0.5, linewidths=0,
    label=f"neither ({mask_none.sum():,})",
)
ax.scatter(
    log2fc[mask_sig_only], neg_log10_padj[mask_sig_only],
    s=6, c="#c0a8d8", alpha=0.6, linewidths=0,
    label=f"padj < 0.05 only ({mask_sig_only.sum():,})",
)
ax.scatter(
    log2fc[mask_large_only], neg_log10_padj[mask_large_only],
    s=6, c="#e0b070", alpha=0.85, linewidths=0,
    label=f"|log2FC| > 2 only ({mask_large_only.sum():,})",
)
ax.scatter(
    log2fc[mask_both_down], neg_log10_padj[mask_both_down],
    s=6, c="#2e86ab", alpha=0.85, linewidths=0,
    label=f"padj < 0.05 & log2FC < -2 (down, {mask_both_down.sum():,})",
)
ax.scatter(
    log2fc[mask_both_up], neg_log10_padj[mask_both_up],
    s=6, c="#d7263d", alpha=0.85, linewidths=0,
    label=f"padj < 0.05 & log2FC > 2 (up, {mask_both_up.sum():,})",
)

# 閾値線 (点線) を描画します。
ax.axvline(LOG2FC_THRESHOLD, color="black", linestyle="--", linewidth=0.8, alpha=0.6)
ax.axvline(-LOG2FC_THRESHOLD, color="black", linestyle="--", linewidth=0.8, alpha=0.6)
ax.axhline(-np.log10(PADJ_THRESHOLD), color="black", linestyle="--", linewidth=0.8, alpha=0.6)

ax.set_xlabel("log2 fold change (tumor / normal)")
ax.set_ylabel("-log10(adjusted p-value)")
ax.set_title("Volcano plot (BRCA tumor vs normal)")

# 凡例を右上に配置します。
ax.legend(loc="upper right", fontsize=9, framealpha=0.9)

# 図を保存します。
fig.tight_layout()
fig.savefig("BRCA_volcano_plot.png", dpi=150)
plt.close(fig)

print("BRCA_volcano_plot.png を保存しました。")
Volcano Plot
図 2: Volcano plot
横軸は log2 fold change (発現変動の大きさ)、縦軸は -log10 (補正後 p 値) (統計的有意性) です。
閾値 |log2FC| = 2padj = 0.05 を点線で示し、各領域の遺伝子を色分けしています。
赤: 統計的に有意かつ腫瘍で高発現、青: 統計的に有意かつ腫瘍で低発現、紫: 統計的に有意だが変動が小さい、橙: 統計的に有意ではないが変動が大きい (本データでは該当なし)、灰: 統計的に有意ではなく変動も小さい。

Volcano plot は横軸に log2 fold change (発現変動の方向と大きさ)、縦軸に -log10 (補正後 p 値) (統計的有意性) をとり、各遺伝子の発現変動を 1 つの図で俯瞰するプロットです。図の上方にある遺伝子ほど統計的に確かな変動であり、右側ほど腫瘍組織で高発現、左側ほど正常組織で高発現であることを意味します。

Volcano plot を見ると、遺伝子の大多数は |log2FC| の小さい中央の領域に位置しており、「統計的には有意だが発現変動そのものは小さい」遺伝子 (紫) が大多数 (有意遺伝子の 88%) を占めることが分かります。一方で、|log2FC| > 2 の領域にも相当数の遺伝子が分布しており、log2 fold change が ±6 を超える大きな発現変動を示す遺伝子も確認できます。閾値 |log2FC| > 2 を満たす遺伝子を上昇側 (赤) と下降側 (青) で比べると、上昇側のほうが log2 fold change の最大値が大きく、遺伝子数も上昇 1,241 個に対して下降 754 個と上昇側のほうが多い分布になっています。

では、具体的にどのような遺伝子が大きな発現変動を示しているのでしょうか。以下の表に、腫瘍組織で発現が上昇した遺伝子と減少した遺伝子の上位 10 個をそれぞれ示します。

発現上昇 上位 10 遺伝子

遺伝子log2FC補正後 p 値
CGA8.072.24e-93
MAGEA67.622.65e-37
CST47.479.41e-142
LINC000527.302.19e-71
MUC27.264.56e-97
MAGEA37.161.42e-33
COL10A17.100.00e+00
CSAG17.058.23e-53
CST16.934.55e-180
DSCAM-AS16.894.93e-92

発現減少 上位 10 遺伝子

遺伝子log2FC補正後 p 値
MYOC-6.828.41e-132
LEP-6.194.14e-121
GLYAT-5.957.21e-123
LOC283392-5.462.40e-128
APOB-5.427.53e-149
PLIN1-5.321.39e-134
ADIPOQ-5.321.16e-91
CA4-5.321.29e-95
GPD1-5.315.36e-131
CIDEC-5.312.41e-106

3.3. 結果の考察

発現上昇遺伝子の上位には、CGA (糖タンパク質ホルモン α サブユニット) [4] や COL10A1 (X 型コラーゲン) [5]、CST1 (システイン プロテアーゼ阻害剤) [6] のように、乳がんでの高発現や予後不良との関連が報告され、予後バイオマーカーとしての可能性が示唆されている遺伝子が見られます。また、MAGEA3 や MAGEA6 はがん精巣抗原と呼ばれ、正常組織ではほとんど発現せず腫瘍で特異的に活性化される遺伝子群です [7]。このように、発現が上昇した遺伝子の上位には腫瘍細胞で特異的に発現が上昇するものが多く含まれていることがわかります。

一方、発現減少遺伝子の上位には、LEP (レプチン)、ADIPOQ (アディポネクチン)、PLIN1 (ペリリピン)、GPD1、CIDEC など、脂肪細胞に特徴的な遺伝子が集中しています。乳房の正常組織は脂肪細胞を豊富に含むことが知られており [8]、本結果は腫瘍組織における脂肪細胞成分の減少を反映していると考えられます。また、GLYAT (グリシン N-アシル転移酵素) は、乳がん細胞で発現が低下することが報告されています [9]。

このように、DEGs の上位遺伝子は「腫瘍組織に特徴的な発現変化」と「正常な脂肪組織成分の減少」という 2 つの生物学的変化を示唆しています。次章では、こうした個々の遺伝子レベルの変動をパスウェイに集約し、より俯瞰的な理解を目指します。

4. エンリッチメント解析

4.1. DEGs から生物学的意味を読み解く

DEG 解析によって「どの遺伝子が変動しているか」は分かりますが、多数の有意遺伝子を個別に解釈するのは現実的ではありません。そこで、DEGs が特定の生物学的パスウェイ (経路) に偏って存在するかどうかを統計的に検定するのがエンリッチメント解析です。

この解析により、個々の遺伝子レベルの変動を「代謝経路」「シグナル伝達」「細胞周期」などの上位の生物学的プロセスに集約でき、疾患がどのような分子メカニズムを介して進行しているかを俯瞰的に理解することができます。たとえば、がん関連の遺伝子が多数変動しているだけでなく、それらが特定の代謝経路に集中していれば、その経路が疾患に関連している可能性が示唆されます。

本稿では、Python の gget ライブラリ [10] (BSD 2-Clause License) を使用して WikiPathways [11] データベースに対してエンリッチメント解析を行いました。WikiPathways は、研究コミュニティが共同で編集・キュレーションを行うオープン ソースのパスウェイ データベースです。

次節では、あらかじめ選択した注目遺伝子セットが特定のパスウェイに偏って含まれるかを統計的に評価する over-representation analysis (ORA) を実施します。前章の Volcano plot で見たとおり、有意遺伝子には発現変動の小さいものが多数含まれます。パスウェイの偏りを生物学的に意味のある形で読み取るには、「統計的に確からしい」だけでなく「発現変動そのものが大きい」遺伝子に絞って入力することが望ましいと考えられます。そこで本解析では、有意性 (補正後 p 値 < 0.05) に加えて発現変動の大きさ (|log2 fold change| > 2) の条件も課し、両方を満たす遺伝子 1,995 個を ORA の入力としました。これは前章の Volcano plot で赤 (上昇) および青 (下降) に塗られた遺伝子群に相当します。

さらに、腫瘍で発現が上昇した遺伝子群と下降した遺伝子群では、背景にある生物学的意味が大きく異なることが予想されます。両者を同一セットにまとめて ORA を行うと、検出されたパスウェイが上昇・下降のどちらに由来するかが区別できなくなってしまいます。そこで本解析では、上昇遺伝子群 (1,241 個) と下降遺伝子群 (754 個) を分けて個別に ORA を実行し、腫瘍で活性化している経路と抑制されている経路をそれぞれ分析します。

なお、エンリッチメント解析ではバックグラウンド遺伝子リストの定義が結果に影響することに注意が必要です。本解析では、DEG 解析の対象となった遺伝子集合 (全サンプル合計リード数 10 以上の遺伝子) をバックグラウンドとしています。また、ORA は解析者が設定した閾値でフィルタリングした遺伝子セットを入力とする手法のため、閾値周辺の遺伝子の情報を十分に反映できません。今回は記事を簡潔にするために ORA のみを行っていますが、全遺伝子をランキングして直接解析する GSEA (Gene Set Enrichment Analysis) [12] は、閾値を設けずに経路レベルの偏りを評価する代表的な代替手法として広く用いられています。

4.2. 解析結果

以下のコードにより、有意かつ発現変動の大きい遺伝子を上昇または下降に分け、それぞれに対して WikiPathways に対するエンリッチメント解析を実行しています。

クリックでコードを表示
import gget
import pandas as pd

# 補正後 p 値の閾値です。
PADJ_THRESHOLD = 0.05

# log2 fold change の絶対値の閾値です。
LOG2FC_THRESHOLD = 2.0

# DEG 解析の結果を読み込みます。
df_deg = pd.read_csv("BRCA_deg_results.csv", index_col=0)

# バックグラウンド遺伝子のリストを取得します (DEG 解析の対象となった遺伝子集合です)。
background = df_deg.index.tolist()

# 有意かつ発現変動の大きい遺伝子を抽出し、上昇または下降に分けます。
mask_sig_large = (
    (df_deg["padj"] < PADJ_THRESHOLD) &
    (df_deg["log2FoldChange"].abs() > LOG2FC_THRESHOLD)
)
df_query = df_deg[mask_sig_large]
genes_up = df_query.index[df_query["log2FoldChange"] > 0].tolist()
genes_down = df_query.index[df_query["log2FoldChange"] < 0].tolist()

print(f"ORA 入力: 上昇 {len(genes_up):,} 遺伝子、下降 {len(genes_down):,} 遺伝子")

# 上昇側と下降側でそれぞれ WikiPathways に対してエンリッチメント解析を実行します。
result_up = gget.enrichr(
    genes=genes_up,
    database="WikiPathways_2024_Human",
    background_list=background
)
result_down = gget.enrichr(
    genes=genes_down,
    database="WikiPathways_2024_Human",
    background_list=background
)

# 結果をそれぞれ CSV ファイルとして保存します。
result_up.to_csv("enrichment_results_up.csv", index=False)
result_down.to_csv("enrichment_results_down.csv", index=False)

以下の表に、上昇遺伝子群および下降遺伝子群について、補正後 p 値の小さい順に上位 10 個の WikiPathways パスウェイを示します。補正後 p 値 < 0.05 を有意とすると、上昇側で 15 個、下降側で 56 個 のパスウェイが有意となりました。特に上昇側のヒット数が少ないため、より多面的に経路を読み取りたい場合は Reactome、KEGG、Gene Ontology など別のデータベースに対する ORA を併用するのも有効と考えられます。

上昇遺伝子群 (腫瘍で高発現) 上位 10 パスウェイ

パスウェイ補正後 p 値関連遺伝子
Cell Cycle WP1791.34e-05['CDKN2A', 'PLK1', 'TTK', 'CDC6', 'CDC25C', 'PKMYT1', 'CDC25A', 'SMC1B', 'CDC20', 'CCNA2', 'CCNB2', 'CCNB1', 'ORC6', 'CDC45', 'PTTG1', 'CCNE2', 'ORC1', 'ESPL1', 'PTTG2', 'CCNE1', 'CDK1', 'E2F1', 'E2F2', 'BUB1']
Gastric Cancer Network 1 WP23615.39e-05['TOP2A', 'TPX2', 'ESM1', 'CENPF', 'UBE2C', 'MYBL2', 'S100P', 'E2F7', 'KIF15', 'AURKA']
Retinoblastoma Gene In Cancer WP24461.18e-04['TOP2A', 'CDT1', 'RRM2', 'TTK', 'TYMS', 'CDC25A', 'CCNA2', 'CCNB2', 'ANLN', 'CCNB1', 'CDC45', 'CCNE2', 'ORC1', 'CCNE1', 'KIF4A', 'E2F1', 'CDK1', 'E2F2']
Overview Of Proinflammatory And Profibrotic Mediators WP50952.82e-04['IL21', 'CXCL9', 'IL20', 'CCL11', 'EPO', 'MMP1', 'CCL20', 'IFNB1', 'IL24', 'MMP3', 'CXCL17', 'IL19', 'CXCL13', 'MMP9', 'CXCL10', 'CXCL11', 'CCL7', 'SPP1', 'IL12B', 'IL36RN', 'IL17C']
Regulation Sister Chromatid Sep At Meta-Anaphase Transition WP42403.41e-04['CDC20', 'CENPE', 'ESPL1', 'PTTG1', 'BUB1B', 'BUB1', 'MAD2L1']
Pancreatic Cancer Subtypes WP53902.28e-03['SPINK4', 'CEACAM6', 'REG4', 'PLA2G10', 'AGR2', 'TFF3', 'AGR3', 'TFF1', 'KRT20', 'CST6', 'FAM83A']
G1 To S Cell Cycle Control WP452.44e-03['CDKN2A', 'MYT1', 'CDC25A', 'CCNB1', 'ORC6', 'CDC45', 'CCNE2', 'ORC1', 'CCNE1', 'CREB3L1', 'E2F1', 'CDK1', 'E2F2']
Cardiac Progenitor Differentiation WP24065.74e-03['SOX2', 'LIN28B', 'LIN28A', 'ZFP42', 'TBX20', 'GATA4', 'TNNI3', 'INHBA', 'NKX2-5', 'DKK1', 'MYH6']
GDNF RET Signaling Axis WP48306.44e-03['ROBO2', 'RET', 'WT1', 'SIX2', 'LHX1', 'SOX11', 'HOXC11', 'PAX2']
Cohesin Complex Cornelia De Lange Syndrome WP51176.85e-03['PTTG1', 'ESPL1', 'CDCA5', 'PLK1', 'CDK1', 'ESCO2', 'AURKB', 'SMC1B']

下降遺伝子群 (腫瘍で低発現) 上位 10 パスウェイ

パスウェイ補正後 p 値関連遺伝子
Adipogenesis WP2362.15e-08['CFD', 'GDF10', 'CNTFR', 'CEBPA', 'EGR2', 'PTGIS', 'ADIPOQ', 'EBF1', 'LPL', 'LIFR', 'IGF1', 'SLC2A4', 'KLF15', 'LIPE', 'BMP3', 'IL6', 'BMP2', 'CYP26B1', 'LEP', 'PPARG', 'PLIN1', 'PCK1', 'RXRG']
Vitamin A And Carotenoid Metabolism WP7161.28e-06['ADH4', 'RBP7', 'CYP26B1', 'RBP4', 'ADH1A', 'ALDH1A2', 'ALDH1A1', 'LPL', 'RDH5', 'CD36', 'RXRG', 'RPE65']
Fatty Acid Omega Oxidation WP2061.28e-06['ADH4', 'ADH1C', 'ALDH2', 'ADH1B', 'ADH1A', 'ALDH1A1', 'CYP1A1', 'ADH7']
ADHD And Autism ASD Pathways WP54204.53e-06['CNTNAP3', 'OXTR', 'ALDH1L1', 'MAOA', 'KCNA1', 'KCNA2', 'KCNA4', 'ADRB2', 'HTR2A', 'HTR4', 'ADRA1A', 'ALDH2', 'SCN11A', 'PRKAR2B', 'AGMO', 'SCN9A', 'AOX1', 'SCN5A', 'SCN3B', 'SCN3A', 'GRIA4', 'GABRA4', 'AKR1C1', 'AKR1C3', 'AMPD1', 'GRIN2B', 'SOD3', 'GABRG1', 'KIT', 'SCN4A', 'SCN2A', 'CDO1', 'SCN4B', 'SCN2B']
Differentiation Of White And Brown Adipocyte WP28956.12e-06['CEBPA', 'BMP2', 'LEP', 'HSPB7', 'ADIPOQ', 'CIDEA', 'EBF3', 'PPARG', 'SLC7A10']
PPAR Signaling WP39422.24e-05['ACSL1', 'ADIPOQ', 'AQP7', 'LPL', 'SORBS1', 'FABP4', 'ACADL', 'SLC27A6', 'PPARG', 'CD36', 'PLIN1', 'PCK1', 'RXRG']
Familial Partial Lipodystrophy WP51022.64e-05['CEBPA', 'LIPE', 'FABP4', 'CIDEA', 'LPL', 'PPARG', 'PLIN1', 'CIDEC', 'MGLL']
Cytokine Cytokine Receptor Interaction WP54731.48e-04['CCL14', 'GDF10', 'CNTFR', 'CCL13', 'CCL24', 'IL33', 'CCL23', 'CSF3', 'TSLP', 'CCL21', 'LIFR', 'PPBP', 'CXCL2', 'CX3CL1', 'TGFBR2', 'GHR', 'BMP3', 'IL6', 'ACVR1C', 'LEP', 'LEPR', 'CCL28', 'IL17B', 'PF4']
Overview Of Proinflammatory And Profibrotic Mediators WP50951.48e-04['CCL14', 'CCL13', 'CCL24', 'IL33', 'CSF3', 'CCL23', 'TSLP', 'CCL21', 'PPBP', 'CXCL2', 'CX3CL1', 'IL6', 'CCL28', 'CCL16', 'IL17B', 'PF4']
Galanin Receptor Pathway WP49704.10e-04['CDKN1C', 'IL6', 'ADIPOQ', 'PPARG', 'FOS', 'SLC2A4']

4.3. 結果の考察

上昇側と下降側で別々に ORA を行った結果、両者で検出されるパスウェイの傾向が大きく異なりました。以下ではそれぞれを分けて解釈します。

上昇遺伝子群では、Cell Cycle や G1/S 期移行、染色体分離制御といった細胞周期関連パスウェイが有意に濃縮されました。これらのパスウェイには細胞分裂の進行を直接制御する遺伝子群が含まれており、腫瘍細胞における増殖能の亢進を強く反映していると考えられます。また、炎症性サイトカインや MMP を含むパスウェイ (Overview Of Proinflammatory And Profibrotic Mediators) の濃縮は、腫瘍微小環境における炎症応答や細胞外マトリックス再構築の活性化を示唆しています。これらの特徴は、がんにおける代表的な性質である細胞増殖の活性化に加え、腫瘍微小環境の変化を介した浸潤・進展といった生物学的過程とも一致する結果といえます。

一方、下降遺伝子群では、Adipogenesis、Fatty Acid Omega Oxidation、PPAR signaling といった脂肪細胞の分化や脂質代謝に関連するパスウェイが顕著に濃縮されました。これらには脂肪細胞機能の維持に重要な遺伝子が含まれており、腫瘍組織における脂肪細胞由来シグナルの低下を示唆しています。本結果は、腫瘍組織における脂肪細胞成分の減少 (細胞組成の変化) や腫瘍細胞における代謝リプログラミングを反映していると考えられます。

このように、上昇遺伝子群と下降遺伝子群を分けて ORA を行うことで、「腫瘍組織で活性化される細胞増殖プロセス」と「腫瘍組織で失われる正常な脂肪細胞機能や代謝経路」という、2 種類の生物学的シグナルを切り分けて読み取ることができました。ただし、本解析のような bulk RNA-seq による解析では「サンプル間の細胞組成差」と「腫瘍細胞固有の代謝変化」を分離することができないため、両者を厳密に切り分けて議論するには single-cell RNA-seq による細胞種別の発現解析などが必要となります。

5. まとめ

本稿では、乳がん患者の RNA-seq データを題材に、トランスクリプトーム解析の基本的なワークフローを実演しました。

DEG 解析では、腫瘍組織でがん精巣抗原や乳がん関連マーカー (MAGEA3/6、COL10A1、CST1 など) が大きく上昇する一方、正常組織に豊富に含まれる脂肪細胞由来の遺伝子群 (LEP、ADIPOQ、PLIN1、GPD1、CIDEC など) が大きく下降することが確認できました。続くエンリッチメント解析では、上昇遺伝子群から細胞周期や染色分体分離制御などの細胞増殖関連経路の亢進が、下降遺伝子群から脂肪細胞分化や脂質代謝の減少が検出され、正常組織と腫瘍組織の対比が「細胞増殖プロセスの活性化」と「正常な脂肪細胞機能の低下」という 2 つの軸で読み解けることを示しました。

このように段階的に解析を進めることで、網羅的な RNA-seq データから生物学的情報を抽出し、疾患に特有の発現変化やその背後にある分子機構を体系的に把握することが可能となります。RNA-seq データは、本稿で取り上げた DEG 解析やエンリッチメント解析に加え、遺伝子発現パターンに基づくがん種分類や、機械学習による発現量予測など、多様な解析に展開することが可能です。

参考資料