イメージング型 空間トランスクリプトーム:前処理の全体像 ─ RNA1分子を検出する

Spatial transcriptome
📚 この記事について
イメージング型の前処理を、順番と理由の両方から通しで説明します。セグメンテーションを境に、扱うものが分子から細胞へ切り替わる。その前後で何が変わるのかを整理します。個別の手順は、ここから各記事へ分かれます。
🔙 前の記事イメージング型 空間トランスクリプトーム解析の全体像
🔜 次の記事:イメージング型 空間トランスクリプトーム:データ読み込みとデータ構造
📌 前提scRNA-seqの前処理 入門AnnData のデータ構造

空間トランスクリプトーム解析(spatial transcriptomics)のうちイメージング型(Xenium・CosMx・MERSCOPE など顕微鏡で1分子ずつ数える方式)は、前処理の途中で、扱う対象そのものが入れ替わります。最初は1行が1分子の表を扱っているのに、セグメンテーションを境に1行が1細胞の行列に変わる。この切り替わりが、前処理の順番を決めています。この記事では、なぜその順番でなければならないのかを説明します。

1. 前処理の順番


図:前処理の順番 ─ セグメンテーションが境目になる
図:前処理の順番 ─ セグメンテーションが境目になる

7つの手順は、3つの領域に分かれます。1〜3 は分子を扱い、4 が境目、5〜7 は細胞を扱います。

手順 扱うもの 行数の目安
1〜3(読み込み・QC・フィルタ) 1行 = 1分子 数千万〜数億
4(セグメンテーション) 境目
5〜7(QC・正規化・アノテーション) 1行 = 1細胞 数万〜数十万

2. 境目の前と後では、できることが違う


図:境目の前と後では、できることが違う
図:境目の前と後では、できることが違う

ここが順番の理由です。細胞に割り当てられなかった分子は、行列に入らないまま消えます。だから、分子に対してやるべきことは、切る前に済ませておく必要があります。

python
import spatialdata_io as sdio

sdata = sdio.xenium("data/run")
tx = sdata.points["transcripts"]

# 分子の世界:ここでできることは、切ったあとには戻ってこない
tx = tx[tx["qv"] >= 20]
tx = tx[~tx["feature_name"].astype(str).str.contains(
    "NegControl|BLANK|Unassigned|Deprecated", case=False)]

# この時点で残った分子だけが、細胞に割り当てられる候補になる
print("解析に使う分子:", len(tx))
⚠️ ベンダーの行列は、すでにフィルタ済み
各社の出力に含まれる細胞 × 遺伝子の行列は、品質スコアの閾値を通り、かつ細胞に割り当てられた分子だけで作られています。たとえば Xenium の cell-feature matrix は、Q-Score が 20 以上の分子だけを含みます。一方、転写産物のファイルには閾値を通らなかった分子も残っています。自分でセグメンテーションをやり直すなら、そのフィルタは自分で当て直す必要があります。10x の Baysor 向けの前処理スクリプトが Q-Score 20 を既定にしているのは、この理由です。

3. 分子のフィルタ ─ 対照プローブを外す


パネルには、実際の遺伝子を狙ったプローブのほかに、対照プローブが混ざっています。生体内に存在しない配列を狙ったもの、どのプローブにも対応しないコードワードなど、いくつかの種類があります。

これらはデータの品質を測るための道具であって、解析の対象ではありません。外し忘れると、クラスタリングや細胞型アノテーションに紛れ込みます。詳しい種類と読み方は 転写産物レベルの QCで扱います。

💡 外す前に、割合を記録しておく
対照プローブは外しますが、外す前にその割合を計算して記録してください。その値が、そのデータの背景ノイズの水準をそのまま表しているからです。あとから「このサンプルは信用してよかったのか」を振り返るとき、この数字が判断材料になります。

4. 境目 ─ セグメンテーション


ここが最も重い判断です。画像ベース、転写産物ベース、ハイブリッドという3つの系統があり、どれを選んでも分子の回収量と細胞の純度のトレードオフから逃れられません。手法の選び方は セグメンテーション手法の選び方で詳しく扱います。

⚠️ やり直すと、5 以降はすべてやり直しになる
セグメンテーションを変えると、細胞の数も、各細胞の発現プロファイルも変わります。つまりその先の QC・正規化・クラスタリング・アノテーションは、すべて無効です。だからこそ、この段階で複数の手法を試し、納得してから先に進む価値があります。先に進んでから戻ると、それまでの作業がまるごと失われます。

5. 細胞レベルの QC ─ 3つの指標を並べて見る


細胞の世界に入ったら、QC の指標は scRNA-seq の QCに近づきます。ただし、面積という指標が加わり、しかもそれが重要な役割を持ちます。

python
import scanpy as sc
import squidpy as sq
import numpy as np

# 細胞の世界に入ってからの QC
adata = sdata["table"].copy()
sc.pp.calculate_qc_metrics(adata, inplace=True, log1p=False)

# 面積あたりの分子数。切り方の良し悪しが、ここに出る
adata.obs["density"] = adata.obs["total_counts"] / adata.obs["cell_area"]

# 3つを並べて見る。片方だけでは判断できない
sq.pl.spatial_scatter(
    adata, color=["total_counts", "cell_area", "density"],
    shape=None, ncols=3,
)
# 面積が大きいのに density が低い細胞は、広げすぎている疑い
指標 何を意味するか おかしい場合
細胞あたりの分子数 その細胞から回収できた量 少なすぎると、型を決められない
細胞の面積 セグメンテーションが引いた輪郭の大きさ 大きすぎるなら、複数細胞をまとめている
面積あたりの分子数 切り方の良し悪しがここに出る 面積が大きいのに低いなら、広げすぎ
💡 3つを別々に見ても分からない
分子数が少ない細胞は、2通りに解釈できます。もともと発現の低い細胞か、輪郭が小さすぎて取りこぼした細胞か。面積を並べて見ると、この2つが区別できます。面積が小さくて分子数も少ないなら、切り方の問題である可能性が高い。面積は普通なのに分子数が少ないなら、生物学かもしれません。指標を1つずつ見る習慣は、ここでは通用しません。
⚠️ セグメンテーション由来のダブレット
2つの細胞を1つにまとめてしまうと、互いに排他的なはずのマーカーを同時に持つ細胞ができます。scRNA-seq のダブレットと見かけは似ていますが、原因が違います。scRNA-seq では実験由来ですが、ここでは計算由来です。だから、セグメンテーションを直せば減らせます。面積が大きく、排他的マーカーを併せ持つ細胞を疑ってください。

6. 正規化 ─ 総カウントに何が入っているか


正規化の前に、1細胞の総カウントが何でできているかを整理します。

図:1細胞の総カウントには、何が入っているか
図:1細胞の総カウントには、何が入っているか

4つの成分があります。細胞の大きさ転写の活発さは生物学、輪郭の切り方は計算由来、パネルの中身は設計由来です。

python
# 生カウントは必ず残す
adata.layers["counts"] = adata.X.copy()

# 面積は obs に持っておく。正規化で消える情報だから
adata.obs["cell_area"] = adata.obs["cell_area"].astype(float)

# クラスタリングのための正規化
sc.pp.normalize_total(adata)
sc.pp.log1p(adata)

# 細胞の大きさが問いに関わるなら、共変量として明示的に扱う
#   例:クラスタごとの面積の分布を比べる
print(adata.obs.groupby("leiden")["cell_area"].median())
💡 シーケンス型とは、入っているものが違う
シーケンス型では、総カウントに細胞密度という生物学が入り込み、それが正規化を難しくしていました。イメージング型では、1行が1細胞なので細胞密度は入りません。その代わりにセグメンテーションの切り方が入り込みます。総カウントで割ると、切り方の影響を消せる一方で、細胞の大きさという生物学も一緒に消えます。大きさが問いに関わるなら、面積を obs に残し、別に扱ってください。

7. クラスタリングと、複数スライス


正規化から先は scRNA-seq の手順とほぼ同じです。ただし、使える遺伝子はパネルの範囲に限られます。高変動遺伝子を 2,000 選ぼうとしても、パネルが 300 遺伝子ならそもそも足りません。パネルが小さい場合は、全遺伝子を使うほうが素直なこともあります。

複数のスライドがある場合、スライド間の差は Harmony などで補正できます。道具立ては scRNA-seq と同じです。

⚠️ バッチ効果と、セグメンテーションの差を混同しない
スライド間で細胞の分子数が違うとき、原因は2つ考えられます。実験のばらつきか、スライドごとにセグメンテーションの出来が違うか。後者なら、バッチ補正では直りません。面積と面積あたりの分子数をスライドごとに比べて、どちらなのかを先に見分けてください。

8. 前処理チェックリスト


  • 対照プローブの割合を計算し、記録してから外したか
  • 品質スコアのフィルタを、自分で切り直すなら自分で当てたか
  • セグメンテーションを複数試して比べたか
  • 細胞の分子数・面積・面積あたりの分子数を並べて見たか
  • 面積が大きく排他的マーカーを併せ持つ細胞を確認したか
  • 生カウントを layers に残したか
  • 面積を obs に残したか(正規化で消える情報)
  • パネルの遺伝子数に対して、高変動遺伝子の数は妥当か
  • スライド間の差が、実験由来かセグメンテーション由来かを見分けたか

まとめ


  • 前処理は3つの領域に分かれる。分子の世界(1〜3)、境目(4)、細胞の世界(5〜7)。
  • 細胞に割り当てられなかった分子は、行列に入らないまま消える。分子に対する作業は、切る前に済ませる。
  • ベンダーの行列はすでに品質フィルタ済み。自分で切り直すなら、フィルタも自分で当て直す。
  • 対照プローブは外す。ただし外す前に割合を記録する。
  • セグメンテーションをやり直すと、5 以降はすべてやり直し。ここで時間をかける。
  • 細胞レベルの QC は分子数・面積・面積あたりの分子数の3つを並べて見る。1つずつでは判断できない。
  • 総カウントには切り方が入り込む。総カウントで割ると、切り方と一緒に細胞の大きさも消える。面積は別に残す。
  • 使える遺伝子はパネルの範囲。パネルが小さいなら全遺伝子を使う選択もある。

関連記事


参考文献


  • Petukhov, V., Xu, R. J., Soldatov, R. A., et al. (2022). Cell segmentation in imaging-based spatial transcriptomics. Nature Biotechnology, 40(3), 345–354. doi:10.1038/s41587-021-01044-w
  • Stringer, C., Wang, T., Michaelos, M., & Pachitariu, M. (2021). Cellpose: a generalist algorithm for cellular segmentation. Nature Methods, 18(1), 100–106. doi:10.1038/s41592-020-01018-x
  • Heidari, E., Moorman, A., Unyi, D., et al. (2025). Segger: fast and accurate cell segmentation of imaging-based spatial transcriptomics data. bioRxiv(プレプリント). doi:10.1101/2025.03.14.643160
  • Cervilla, S., Grases, D., Perez, E., et al. (2026). A technical comparison of spatial transcriptomics platforms across six cancer types. Genome Biology, 27, 22. doi:10.1186/s13059-026-03937-y
  • Janesick, A., Shelansky, R., Gottscho, A. D., et al. (2023). High resolution mapping of the tumor microenvironment using integrated single-cell, spatial and in situ analysis. Nature Communications, 14(1), 8353. doi:10.1038/s41467-023-43458-x
  • Marconato, L., Palla, G., Yamauchi, K. A., et al. (2025). SpatialData: an open and universal data framework for spatial omics. Nature Methods, 22(1), 58–62. doi:10.1038/s41592-024-02212-x
  • Palla, G., Spitzer, H., Klein, M., et al. (2022). Squidpy: a scalable framework for spatial omics analysis. Nature Methods, 19(2), 171–178. doi:10.1038/s41592-021-01358-2
  • Wolf, F. A., Angerer, P., & Theis, F. J. (2018). SCANPY: large-scale single-cell gene expression data analysis. Genome Biology, 19, 15. doi:10.1186/s13059-017-1382-0

コメント

タイトルとURLをコピーしました