シーケンス型 空間トランスクリプトーム:segmentation-free 解析 ─ 細胞を切らずに組織構造を読む

Spatial transcriptome
📚 この記事について
細胞の境界を決めずに、分子の空間分布から直接、組織の構造を取り出す手法を扱います。FICTURE と Sainsc という性格の違う2つを比べながら、何が得られて何が失われるのかを整理します。この記事で、細胞型を割り当てるブロックは完結します。
🔙 前の記事:シーケンス型 空間トランスクリプトーム:Stereo-seq の bin と cellbin
🔜 次の記事:シーケンス型 空間トランスクリプトーム:空間ドメイン同定
📌 前提解析単位の決め方scRNA-seq解析:細胞型アノテーション手法の全体像

空間トランスクリプトーム解析(spatial transcriptomics)のうちシーケンス型(Visium・Stereo-seq など NGS で読み出す方式)は、サブセル解像度になると、1個の細胞が何十ものビンに割れます。ここまでの記事では、それを細胞に組み立て直す方法を見てきました。しかし組み立てには、核が写った画像と十分なカウントが要ります。どちらも揃わないとき、あるいは細胞の形が不規則で輪郭が引けないとき、そもそも細胞に切らないという選択肢があります。

1. なぜセグメンテーションをやめるのか


FICTURE の論文(Si et al., Nature Methods, 2024)は、問題をこう述べています。高解像度の空間データの解析は、画像ベースのセグメンテーションか格子への集約に強く依存しているが、細胞の大きさと形が多様で不規則な複雑な組織では、しばしば失敗する

  • 核染色の画像が無い、または品質が悪い:セグメンテーションの手がかりがない。
  • 細胞の形が不規則:神経細胞の突起、筋線維、上皮の重なり。楕円に近い形を前提にしたモデルは、こうした細胞をうまく切れない。
  • 1細胞あたりのカウントが薄い:切っても、発現プロファイルがノイズだらけになる。
  • 誤差が下流すべてに伝わる:一度切ってしまうと、切り方の誤りはクラスタリングにもアノテーションにも波及する。

2. 返ってくるものが違う


図:返ってくるのは、細胞のリストではなくピクセルの地図
図:返ってくるのは、細胞のリストではなくピクセルの地図

ここが最も大きな違いです。セグメンテーションをすれば、行が細胞、列が遺伝子の行列が得られます。scRNA-seq と同じ形なので、そこから先の道具はすべて使えます。

segmentation-free では、細胞という行が存在しません。返ってくるのは、1ピクセルごとに因子や細胞型が塗られた地図です。

⚠️ 何を捨てるのかを先に決める
細胞という単位が無いということは、細胞の数を数えられないということです。「この領域に T細胞が何個いるか」には答えられません。また、細胞ペアを前提にする解析(リガンド–受容体による細胞間相互作用など)も、そのままの形では使えません。組織の構造を読むことと、細胞を数えることは、別の目的です。どちらが必要なのかを先に決めてから、手法を選んでください。

3. 2つの流派


segmentation-free と一口に言っても、考え方が2つに分かれます。参照を使わずに構造を発見するか、参照と照合して名前を付けるかです。

図:segmentation-free には、2つの流派がある
図:segmentation-free には、2つの流派がある

4. FICTURE ─ 参照なしで因子を見つける


FICTURE(Factor Inference of Cartographic Transcriptome at Ultra-high REsolution)は、多層ディリクレモデルを使って、ピクセル単位の空間因子を確率的変分推論で求めます。参照 scRNA-seq は要りません。

重要なのは、因子の推定が格子に縛られないことです。いったん集計用の単位で因子を学習したあと、推論そのものはピクセル単位で行われるので、組織の中の細胞の形に沿った構造が現れます。

bash
# FICTURE は分子の座標表を入力に取る
#   必要な列:X  Y  gene  Count
head -n 3 transcripts.tsv
# X       Y       gene    Count
# 3120.5  8842.1  Snap25  2

pip install ficture

# 六角形の集計単位で因子を学習し、そのあとピクセル単位へ広げる
#   train-width : 学習に使う六角形の一辺(µm)
#   n-factor    : 因子の数。最初は多めにしてから減らす
ficture run_together \
    --in-tsv transcripts.tsv \
    --out-dir out_ficture \
    --mu-scale 1 \
    --major-axis Y \
    --train-width 12 \
    --n-factor 24

# 出力:ピクセルごとの因子と、因子ごとの上位遺伝子リスト
💡 全転写産物・数十億座標に耐える
既存の segmentation-free 手法は、小さな領域と少数の遺伝子にしかスケールしないという制約がありました。FICTURE はこの制限を外し、サブミクロン解像度の座標が数十億あるような、全転写産物のデータを扱えます。Stereo-seq の bin1 のような、そのままでは扱いにくい規模のデータに向きます。

返ってくるのは番号のついた因子です。「因子3が何なのか」は、上位遺伝子を見て自分で判断します。

python
import pandas as pd

# 因子ごとの上位遺伝子を見て、何を表しているのかを判断する
top = pd.read_csv("out_ficture/analysis/DE.tsv", sep="\t")
for fac, g in top.groupby("factor"):
    genes = g.nlargest(8, "gene_total")["gene"].tolist()
    print(fac, genes)

# ここで人が名前を付ける。自動では付かない
# 因子0 -> ['Snap25','Syt1',...]  神経細胞らしい
# 因子5 -> ['Mbp','Plp1',...]     オリゴデンドロサイトらしい
⚠️ 参照が要らないことと、楽であることは別
参照フリーの手法は、参照を用意する手間から解放してくれますが、最後に因子に名前を付ける作業が残ります。これは 手動アノテーションと同じ作業です。また、因子の数(n-factor)は自分で決める必要があります。多めに設定してから、似た因子をまとめていくのが実務的です。参照フリーという点では、マルチセル解像度向けの STdeconvolve(Miller et al., Nature Communications, 2022)と同じ発想の系譜にあります。

5. Sainsc ─ 参照と照合して名前を付ける


Sainsc(Müller-Bötticher et al., Small Methods, 2025)は、違うアプローチを取ります。

  • カーネル密度推定(KDE)で、2次元の発現をならす。これでサブセル解像度に特有のスパース性が下がる。
  • 参照シグネチャ(細胞型ごとの発現プロファイル)を用意する。既知のものでも、データ自身から作ったものでもよい。
  • 各ピクセルの発現と参照シグネチャのコサイン類似度を取り、最も近い細胞型を割り当てる。
  • 同時に割り当てスコアを計算し、その割り当てがどれだけ確からしいかを示す。
python
import sainsc
import numpy as np

# 分子の座標表から GridCounts を作る
counts = sainsc.io.read_StereoSeq("cellbin_or_bin1.gem.gz")

# カーネル密度推定で、局所の発現をならす
#   ガウスカーネルは滑らか、Epanechnikov は端が切れる
kernel = sainsc.utils.gaussian_kernel(bw=8, truncate=2)
counts.calculate_total_mRNA_KDE(kernel)

# 参照シグネチャ(細胞型 × 遺伝子の平均発現)を渡す
#   参照 scRNA-seq から作ってもよいし、データ自身から作ってもよい
counts.assign_celltype(signatures=sig, kernel=kernel)

# 各ピクセルに細胞型と、その信頼度スコアが付く
print(counts.celltype_map.shape)
print(np.nanquantile(counts.assignment_score, [0.1, 0.5, 0.9]))
💡 スコアが返ることの実務的な価値
Sainsc は細胞型を割り当てるだけでなく、ピクセルごとに信頼度を返します。スコアが低い領域を地図にすれば、「参照に無い細胞型がいる場所」や「複数の型が混ざった境界」が浮かび上がります。デコンボリューションの結果には、こうした自己申告の不確かさが付いてこないことが多いので、これは実務上の強みです。
💡 速さが、使い方を変える
Sainsc は計算の重い部分を Rust に任せており、遺伝子 2,000・細胞型 30 程度の典型的な設定なら、データ読み込みを含めて 10 分未満で終わります。対話的にパラメータを変えながら試せる速さです。カーネルの帯域幅を変えて地図がどう変わるかを見る、という使い方ができます。

なお Sainsc は、100 の模擬データを使った評価で、セグメンテーションを前提とする手法や RCTD と比較され、割り当ての正確さと、スコアが高いほど正確になるという関係が示されています。

6. 使い分け


FICTURE Sainsc
参照 不要 必要(データ自身から作ってもよい)
原理 多層ディリクレモデル + 確率的変分推論 カーネル密度推定 + コサイン類似度
返るもの 番号のついた因子 細胞型名 + 信頼度スコア
名前付け 自分で行う 参照から自動で付く
向いている場面 参照が無い、構造を発見したい 信頼できる参照がある、素早く地図にしたい
扱える規模 全転写産物・数十億座標 全転写産物・ナノメートル解像度
💡 どちらか一方を選ぶ必要はない
参照が無い段階では FICTURE で構造を発見し、そこで見えてきた細胞型からシグネチャを作って Sainsc で地図にする、という順序も成り立ちます。Sainsc はデータ自身から参照シグネチャを作ることもできるので、この流れは自然につながります。

7. 結果をどう検証するか


segmentation-free の結果は、細胞という単位が無いので、これまでの記事で使ってきた「マーカーを UMAP に投影する」という検証がそのままは使えません。代わりに、次の3つを行います。

python
import matplotlib.pyplot as plt

# 検証1:地図を組織像と重ねて、構造が一致するかを見る
fig, ax = plt.subplots(1, 2, figsize=(14, 7))
ax[0].imshow(he_image)
ax[1].imshow(counts.celltype_map)

# 検証2:信頼度スコアが低い領域を、そのまま地図にする
#   スコアが低い場所は、参照に無い型か、複数の型が混ざった境界
low = counts.assignment_score < np.nanquantile(counts.assignment_score, 0.2)
plt.imshow(low)

# 検証3:マーカー遺伝子の分布と、因子の分布を照合する
#   神経細胞の因子の場所に Snap25 が出ているか、を目で確かめる
  • 地図を組織像と重ねる。因子や細胞型の分布が、組織学的な構造(層、腺管、血管、腫瘍巣)と一致するか。これが最も強い検証になる。
  • 信頼度スコアの低い領域を地図にする。(Sainsc の場合)スコアが低い場所は、参照に無い型か、複数の型が混ざった境界。組織像と照らして、それが説明できるかを見る。
  • マーカー遺伝子の分布と、因子の分布を照合する。神経細胞と判断した因子の場所に、実際に神経細胞のマーカーが出ているか。これは 細胞型アノテーションでマーカーを確認するのと同じ作業を、地図の上で行うということ。

8. 注意点 ─ 因子は細胞型と1対1ではない


図:どこで使い、何ができないのか
図:どこで使い、何ができないのか
⚠️ 因子をそのまま細胞型として扱わない
教師なしで得られた因子は、必ずしも細胞型に対応しません。組織の状態(低酸素、線維化)、細胞外の領域、複数の型が混ざった境界そのものが、1つの因子として出てくることがあります。上位遺伝子を見て、その因子が何を表しているのかを毎回判断してください。「因子の数 = 細胞型の数」という読み方は誤りです。

もう1つ、覚えておくべきことがあります。segmentation-free は、セグメンテーションの代わりではありません。同じデータを両方の方法で見て、一致しない場所を探すのが実務的な使い方です。一致しない場所には理由があります。組織の境界か、セグメンテーションが苦手とする領域か、のどちらかです。

9. 判断のまとめ


状況 選ぶもの
核染色の画像があり、カウントも十分 セグメンテーション(bin2cell、CellBin など)
画像が無い / 品質が悪い、参照も無い FICTURE
画像が無い / 品質が悪い、信頼できる参照がある Sainsc
細胞の形が不規則で輪郭が引けない どちらかの segmentation-free
セグメンテーションの結果を検証したい 両方を走らせて、一致しない場所を見る
細胞の数を数えたい segmentation-free では答えられない
細胞ペアの解析をしたい 同上。セグメンテーションが要る

まとめ


  • 細胞の大きさと形が不規則な組織では、セグメンテーションはしばしば失敗する。そもそも切らないという選択肢がある。
  • 返ってくるのは細胞のリストではなく、ピクセルの地図。セグメンテーション誤差は入らないが、細胞を数えることはできない。
  • FICTURE は参照なしで因子を見つける。多層ディリクレモデル、格子に縛られないピクセル単位の推論、全転写産物・数十億座標に対応。ただし因子の名前は自分で付ける
  • Sainsc は KDE でならしてから参照シグネチャと照合する。細胞型名と信頼度スコアが返り、10 分未満で終わるので対話的に使える。
  • 参照があるかどうかで選ぶ。順に使ってもよい。
  • 検証は地図と組織像の重ね合わせが中心。スコアの低い領域とマーカーの分布も併せて見る。
  • 因子は細胞型と1対1ではない。組織の状態や境界も因子になる。
  • セグメンテーションの代わりではなく、もう一つの見方。両方で見て、一致しない場所を探す。

関連記事


参考文献


  • Si, Y., Lee, C., Hwang, Y., et al. (2024). FICTURE: scalable segmentation-free analysis of submicron-resolution spatial transcriptomics. Nature Methods, 21(10), 1843–1854. doi:10.1038/s41592-024-02415-2
  • Müller-Bötticher, N., Tiesmeyer, S., Eils, R., & Ishaque, N. (2025). Sainsc: a computational tool for segmentation-free analysis of in situ capture data. Small Methods, 9(5), 2401123. doi:10.1002/smtd.202401123
  • Miller, B. F., Huang, F., Atta, L., Sahoo, A., & Fan, J. (2022). Reference-free cell type deconvolution of multi-cellular pixel-resolution spatially resolved transcriptomics data. Nature Communications, 13(1), 2339. doi:10.1038/s41467-022-30033-z
  • Chen, A., Liao, S., Cheng, M., et al. (2022). Spatiotemporal transcriptomic atlas of mouse organogenesis using DNA nanoball-patterned arrays. Cell, 185(10), 1777–1792. doi:10.1016/j.cell.2022.04.003
  • Polański, K., Bartolomé-Casado, R., Sarropoulos, I., et al. (2024). Bin2cell reconstructs cells from high resolution Visium HD data. Bioinformatics, 40(9), btae546. doi:10.1093/bioinformatics/btae546
  • Cable, D. M., Murray, E., Zou, L. S., et al. (2022). Robust decomposition of cell type mixtures in spatial transcriptomics. Nature Biotechnology, 40(4), 517–526. doi:10.1038/s41587-021-00830-w
  • Kleshchevnikov, V., Shmatko, A., Dann, E., et al. (2022). Cell2location maps fine-grained cell types in spatial transcriptomics. Nature Biotechnology, 40(5), 661–671. doi:10.1038/s41587-021-01139-4
  • 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
  • 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をコピーしました