イメージング型 空間トランスクリプトーム:サブセル局在の解析

Spatial transcriptome
📚 この記事について
細胞の中のどこに分子があったかを見る解析を扱います。この方式だけができることですが、同時に、切り方の精度に最も敏感な解析でもあります。進んでよいかの判断から説明します。
🔙 前の記事:イメージング型 空間トランスクリプトーム:空間ドメイン同定
🔜 次の記事:イメージング型 空間トランスクリプトーム:解析の総まとめ
📌 前提データ読み込みとデータ構造セグメンテーション手法の選び方

空間トランスクリプトーム解析(spatial transcriptomics)のうちイメージング型(Xenium・CosMx・MERSCOPE など顕微鏡で1分子ずつ数える方式)は、1分子ごとの座標が残っています。細胞に切って行列を作ったあとも、元の座標は消えていません。だから「その分子が細胞のどこにあったか」を、あとから取り出せます。これは、この方式だけができることです。

1. 行列が捨てている情報


図:細胞の中のどこにあったかが、分かる
図:細胞の中のどこにあったかが、分かる

細胞 × 遺伝子の行列には、「その細胞に何個あったか」しか残りません。核の中にあったのか、細胞質にあったのかは、集計の時点で捨てられています。

しかし1分子の表に戻れば、いつでも取り出せます。多くの装置は、その分子が核と重なっているかを示す列を出力しています。

python
import numpy as np
import pandas as pd

# 1分子の表には、核と重なっているかを示す列がある
tx = sdata.points["transcripts"]
tx = tx[(tx["qv"] >= 20) & (tx["cell_id"] != "UNASSIGNED")]

# 遺伝子ごとに、核内の割合を計算する
df = tx[["feature_name", "overlaps_nucleus"]].compute()
frac = df.groupby("feature_name")["overlaps_nucleus"].agg([
    "mean", "size"
])
frac.columns = ["核内の割合", "分子数"]

# 分子数が少ない遺伝子は、割合が不安定なので除く
frac = frac[frac["分子数"] >= 500]
print(frac.sort_values("核内の割合", ascending=False).head(15))
💡 核内の割合は、何を反映するのか
核の中に多い転写産物は、転写されたばかりか、核内に留まる性質を持つものです。細胞質に多いものは、翻訳に回っているか、細胞質で安定しています。同じ遺伝子でも、細胞の状態によってこの比は変わりえます。つまり発現量では見えない違いが、ここに現れることがあります。

2. 局在のパターンを分類する


図:局在のパターンを、遺伝子ごとに分類する
図:局在のパターンを、遺伝子ごとに分類する

核内か細胞質かという2分法だけでなく、もっと細かいパターンに分類する試みもあります。核のふちに集まる、細胞のふちに集まる、細胞質に一様に広がる、といったパターンです。Bento のような、サブセル解析に特化したツールが公開されています。

⚠️ 分類には、核と細胞の輪郭が両方要る
核だけ、あるいは細胞だけでは、この分類はできません。両方の輪郭が正確であることが前提です。核のセグメンテーションが崩れていれば、「核のふち」というパターンそのものが定義できません。

3. 細胞ごとの核細胞質比


遺伝子ごとではなく、細胞ごとに核内の割合を計算することもできます。細胞型による違いや、組織の領域による偏りが見えることがあります。

python
# 細胞ごとの核細胞質比を作る
d = tx[["cell_id", "overlaps_nucleus"]].compute()
g = d.groupby("cell_id")["overlaps_nucleus"].agg(["sum", "size"])
g["nuc_frac"] = g["sum"] / g["size"]

# AnnData に戻す
adata.obs["nuc_frac"] = g["nuc_frac"].reindex(
    adata.obs_names
).values

# 細胞型ごとに分布を比べる
print(adata.obs.groupby("celltype")["nuc_frac"].median())

# 組織の上に描く。領域ごとに偏りがあるかを見る
sq.pl.spatial_scatter(adata, color="nuc_frac", shape=None)
⚠️ 細胞型による違いは、切り方の違いかもしれない
「この細胞型は核内の割合が高い」という結果が出たとき、その細胞型では核が大きく取られているだけかもしれません。核と細胞の面積比を、細胞型ごとに比べてください。面積比も一緒に高いなら、切り方の影響を疑うべきです。

4. 進んでよいかを、先に確かめる


図:サブセル解析で、結果を壊す3つのこと
図:サブセル解析で、結果を壊す3つのこと
壊すもの 起きること 対応
核の輪郭のずれ 細胞質の分子が核内に数えられる 核と細胞の両方の精度を確かめる
z 方向を潰すこと 上下に重なった分子が同じ位置に見える 重なりの多い組織では慎重に
パネルの制約 見たい遺伝子が入っていなければ何もできない 設計の段階で決まっている
python
# この解析に進んでよいかを、先に確かめる
#   1. 核の面積と細胞の面積の比が、生物学的に妥当か
r = adata.obs["nucleus_area"] / adata.obs["cell_area"]
print(np.percentile(r, [5, 25, 50, 75, 95]))
#   核が細胞の大半を占めるなら、輪郭が狭すぎる

#   2. 核内の割合が、既知の傾向と合っているか
#      長い非コード RNA は核内に多い、という既知の性質で確かめる
known_nuclear = [g for g in ["MALAT1", "NEAT1"] if g in frac.index]
print(frac.loc[known_nuclear])
#      ここが低いなら、核の輪郭がずれている疑いがある

#   3. 画像と輪郭を、目で見て確かめる
#      数字だけでは判断しない
💡 既知の性質で、輪郭の精度を検証できる
核内に多く留まることが知られている転写産物があります。そうした遺伝子がパネルに入っているなら、核内の割合が高く出るかどうかで、核の輪郭の精度を確かめられます。既知の傾向が再現できないなら、サブセルの結果は信用できません。これは、セグメンテーション手法の選び方で使った純度の指標と同じ発想です。正解が無いなら、既知の生物学を物差しにする
⚠️ サブセル解析は、切り方の精度に最も敏感
細胞レベルの解析なら、輪郭が数ピクセルずれても結論は変わりません。しかしサブセル解析では、そのずれがそのまま結果になります。核と細胞の輪郭を目で見て確かめ、信用できないと感じたら、この解析には進まないという判断も正しい。

5. z 方向をどう扱うか


分子には z 座標も記録されています。多くの解析は2次元に潰して進めますが、切片には厚みがあります

  • 上下に別の細胞が重なっていれば、潰すと同じ位置に見える。
  • 核と細胞質の判定も、z を無視すれば崩れる。核の上下にある細胞質の分子が、核内と判定されうる。
  • 3次元のまま分子を細胞に割り当てる処理を行う装置もある。その場合、割り当ての段階では z が使われている。
💡 z 方向の分布そのものを見てみる
分子の z 座標の分布を描くと、切片のどのあたりに信号が集中しているかが分かります。片側に偏っているなら、焦点や光の届き方に問題があるかもしれません。サブセル解析に進む前の、簡単だが有効な確認です。

6. パネルという制約は、ここでも効く


局在を見たい遺伝子がパネルに入っていなければ、何もできません。しかも、1遺伝子あたりの分子数も問題になります。

⚠️ 分子数が少ない遺伝子の局在は、信用しない
核内の割合を計算するには、その遺伝子の分子がある程度必要です。数十個しか検出されていない遺伝子で「核内 70%」と言っても、偶然の範囲です。遺伝子ごとの分子数で足切りしてください。パネルを大きくすると1遺伝子あたりの検出が薄くなることも報告されており(Cervilla et al., Genome Biology, 2026)、高プレックスのパネルほど、この足切りが効いてきます。

7. チェックリスト


  • 核と細胞の輪郭を目で見て確かめたか
  • 核と細胞の面積比が生物学的に妥当か
  • 既知の核内 RNA で、輪郭の精度を検証したか
  • 遺伝子ごとの分子数で足切りしたか
  • 細胞型ごとの違いが、切り方の違いでないかを確認したか
  • z 方向の分布を見たか
  • 見たい遺伝子がパネルにあるか

まとめ


  • 行列は「細胞に何個あったか」しか残さないが、1分子の表に戻れば、細胞の中のどこにあったかを取り出せる
  • 多くの装置は、分子が核と重なっているかを列として出力している。
  • 核内の割合は、発現量では見えない違いを映すことがある。
  • サブセル解析は、切り方の精度に最も敏感。細胞レベルなら許せた誤差が、ここでは許せない。
  • 既知の核内 RNA を物差しにして、核の輪郭の精度を検証できる。再現できないなら、この解析には進まない。
  • z 方向を潰すことの影響を意識する。分布そのものを見ておく。
  • 分子数の少ない遺伝子の局在は信用しない。遺伝子ごとに足切りする。

関連記事


参考文献


  • 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
  • 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
  • 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
  • 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
  • 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
  • Singhal, V., Chou, N., Lee, J., et al. (2024). BANKSY unifies cell typing and tissue domain segmentation for scalable spatial omics data analysis. Nature Genetics, 56(3), 431–441. doi:10.1038/s41588-024-01664-3
  • 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をコピーしました