空間トランスクリプトーム解析(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つに分かれます。参照を使わずに構造を発見するか、参照と照合して名前を付けるかです。

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ではない。組織の状態や境界も因子になる。
- セグメンテーションの代わりではなく、もう一つの見方。両方で見て、一致しない場所を探す。
関連記事
- シーケンス型 空間トランスクリプトーム:解析単位の決め方
- シーケンス型 空間トランスクリプトーム:Stereo-seq の bin と cellbin
- シーケンス型 空間トランスクリプトーム:Visium HD のビン→細胞再構成
- シーケンス型 空間トランスクリプトーム:細胞型を割り当てる(全体像)
- シーケンス型 空間トランスクリプトーム:空間ドメイン同定
- scRNA-seq解析:細胞型アノテーション手法の全体像
- scRNA-seq解析:細胞型アノテーション(手動)
- scRNA-seq解析:細胞間相互作用(cell-cell communication)
- scRNA-seq解析の土台:AnnData のデータ構造をリレーショナルDBの発想で理解する
- ターミナルの基本操作入門【Windows版】
参考文献
- 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


コメント