空間トランスクリプトーム解析(spatial transcriptomics)のうちシーケンス型(Visium・Stereo-seq など NGS で読み出す方式)は、Visium HD の 2 µm ビンでは、1個の細胞が何十ものビンに割れています。解析単位の決め方で見たように、bin2cell などで細胞に組み立て直すことができます。問題はその先です。組み立てた細胞に、どうやって細胞型を割り当てるのか。ここで多くの人が「もう1細胞なのだから、scRNA-seq と同じでいい」と考えますが、それは正確ではありません。この記事では、その理由と、正しい進め方を示します。
1. 再構成した細胞は、きれいな単一細胞ではない

scRNA-seq では、1個の細胞をまるごと回収して配列を読みます。得られるのは、その細胞だけの発現です。
bin2cell(Polański et al., Bioinformatics, 2024)がやるのは、核を見つけて、そこから外へ膨張させ、範囲に入ったビンを1細胞としてまとめることです。この膨張の縁で、隣の細胞の転写産物が混ざり込みます。
混ざる原因は1つではありません。境界での取り違え、セグメンテーションの誤差、細胞が密に詰まった領域、そして透過処理中の転写産物の側方拡散。核を膨張させて細胞を作る以上、この混入(partial volume 効果)は必ず一定量起きます。
細胞に組み立てると、達成感から「もう scRNA-seq と同じ」と思いたくなります。しかし実際には、多くの細胞は1細胞(singlet)でも、一部は2細胞ぶんが混ざったままです。この「一部」を見つけて適切に扱うことが、アノテーションの質を決めます。細胞に組み立てても、細胞型を割り当てる(全体像)で触れた混入の問題は、まだ終わっていません。
2. 中心の問い ─ アノテーションか、デコンボリューションか
再構成した細胞に型を付ける道は、2つあります。
- アノテーション:1細胞に1つのラベルを付ける。参照 scRNA-seq からのラベル転移。scRNA-seq と同じやり方。
- デコンボリューション:混入を割合として明示的に扱う。RCTD の doublet モードや cell2location。

結論から言うと、多くの場合はアノテーションが素直です。理由は、再構成した細胞の大半が実際に単一細胞だからです。
8 µm ビンに RCTD の doublet モードを当てると、おおよそ 75% のビンが singlet(単一の細胞型)と判定される、という報告があります。bin2cell で再構成した細胞についても、多数が単一の細胞型に支配されているという観察が、開発側から共有されています。大半が単一細胞なら、1細胞に1ラベルを付けるアノテーションのほうが自然です。混入を割合に分解するデコンボリューションは、この場合むしろ過剰です。
大腸がんの Visium HD を詳細に解析した研究(Oliveira et al., Nature Genetics, 2025)は、この再構成+アノテーションのアプローチで、免疫細胞集団を高精細に地図化できることを示した代表例です。
3. では、デコンボリューションはいつ使うのか
デコンボリューションを捨てるわけではありません。使いどころは、混入した細胞を洗い出す道具としてです。
RCTD の doublet モードを走らせて、singlet と判定された細胞と、doublet と判定された細胞を分けます。doublet が多く出る細胞型は、混入が起きやすい場所にあると分かります。アノテーションで付けたラベルを、この判定で検証するのです。
再構成した1つ1つの細胞に対してデコンボリューションを走らせるのは、計算コストが高くつきます。実務では、8 µm ビンに対してデコンボリューションを行うのが現実的です。8 µm ビンは、1細胞ぶんに近いカウントを持ちつつ、細胞数が細胞単位より少なくて済みます。de Oliveira らの解析でも、RCTD は 8 µm ビンに対して doublet モードで適用されています。
そして、この singlet の割合そのものが、再構成の質の指標になります。70〜75% が単一型に出るなら、再構成はうまくいっています。singlet の割合が極端に低いなら、セグメンテーションがうまくいっていないか、参照が組織に合っていない可能性があります。
4. パイプライン ─ 再構成から検証まで

順番に見ていきます。まず再構成です。手順の詳細は解析単位の決め方で扱ったので、ここでは要点だけを示します。
python
import bin2cell as b2c
import scanpy as sc
# 2 µm ビンを読み、縞を補正し、核から細胞を組み立てる
# (手順の詳細は「解析単位の決め方」を参照。ここでは要点だけ)
adata = b2c.read_visium("data/square_002um", source_image_path="data/tissue.btf")
adata.var_names_make_unique()
b2c.destripe(adata) # 行・列の縞を補正
b2c.scaled_he_image(adata, mpp=0.3, save_path="he.tiff")
b2c.stardist(image_path="he.tiff", labels_npz_path="he.npz",
stardist_model="2D_versatile_he", prob_thresh=0.01)
b2c.insert_labels(adata, labels_npz_path="he.npz", mpp=0.3, labels_key="labels_he")
b2c.expand_labels(adata, labels_key="labels_he",
expanded_labels_key="labels_he_expanded")
# ビンを細胞にまとめる。ここで初めて「細胞 × 遺伝子」になる
cdata = b2c.bin_to_cell(adata, labels_key="labels_he_expanded")
print(cdata.shape) # (細胞数, 遺伝子数)
5. 細胞側の QC ─ ここは scRNA-seq に近い
組み立てた細胞に対する QC は、scRNA-seq の QCに近づきます。ただし、空間データ特有の指標が1つ増えます。細胞の面積(=まとめられたビンの数)です。
python
import numpy as np
# 細胞側の QC。ここは scRNA-seq に近い
sc.pp.calculate_qc_metrics(cdata, inplace=True, log1p=False)
# 1. 細胞の面積(=まとめたビンの数)。膨張しすぎた細胞を外す
hi = np.quantile(cdata.obs["bin_count"], 0.99)
cdata = cdata[cdata.obs["bin_count"] <= hi].copy()
# 2. カウントと遺伝子数が極端に低い細胞を外す
cdata = cdata[cdata.obs["total_counts"] >= 100].copy()
# 3. 生カウントを残す(デコンボリューションで使う)
cdata.layers["counts"] = cdata.X.copy()
| 確認すること | 見るもの | おかしい場合 |
|---|---|---|
| 細胞の面積 | bin_count(まとめたビン数) | 極端に大きい細胞は、膨張しすぎ。複数細胞が融合している疑い |
| カウント | total_counts | 極端に低い細胞は、核だけ拾って周りを取れていない |
| 遺伝子数 | n_genes_by_counts | 低い細胞は、型付けに耐えない |
| 細胞数 | 8 µm ビン数と比較 | ビン数より極端に多いなら、核の過剰検出 |
6. アノテーション ─ 参照からラベルを転移する
再構成した細胞は、位置情報つきの単一細胞データに近いので、scRNA-seq のアノテーション手法がそのまま使えます。自動アノテーションなら CellTypist、深層生成モデルを使うなら scANVI(Xu et al., Molecular Systems Biology, 2021)が候補です。
python
import celltypist
from celltypist import models
# 参照 scRNA-seq から学習したモデルで、細胞にラベルを付ける
# 自前の参照があるなら、それで train したモデルを使う
model = models.Model.load("Immune_All_Low.pkl")
# CellTypist は対数正規化した入力を前提にする(1e4 正規化 + log1p)
cdata.X = cdata.layers["counts"].copy()
sc.pp.normalize_total(cdata, target_sum=1e4)
sc.pp.log1p(cdata)
pred = celltypist.annotate(cdata, model=model, majority_voting=True)
cdata = pred.to_adata()
print(cdata.obs["majority_voting"].value_counts())
ラベル転移の質は、参照の質で決まります。組織が違えば細胞型の構成も発現も変わりますし、参照に無い細胞型は、細胞型を割り当てる(全体像)で見たとおり、いちばん近い別の型に押し込まれます。Visium HD のプローブ捕捉データに poly-A の参照を使うなら、使える遺伝子は共通部分だけになる点にも注意してください。
7. 検証 ─ マーカーを UMAP と組織像の両方に投影する
これは、細胞型アノテーションのすべての手法に共通する、省略できない工程です。自動アノテーションが返したラベルを、そのまま信じてはいけません。マーカー遺伝子の発現を、UMAP に投影して確かめます。
python
import squidpy as sq
# クラスタリングして UMAP を描く(発現空間での確認のため)
sc.pp.pca(cdata, n_comps=30)
sc.pp.neighbors(cdata, n_neighbors=15)
sc.tl.umap(cdata)
# 検証:マーカーを UMAP に投影する(型付けを鵜呑みにしない)
markers = ["EPCAM", "PTPRC", "CD3D", "CD68", "COL1A1"]
sc.pl.umap(cdata, color=markers + ["majority_voting"], ncols=3)
# 検証:同じマーカーを、今度は組織の上に投影する
sq.pl.spatial_scatter(cdata, color=markers, shape=None)
# UMAP と組織像、両方でマーカーが「あるべき場所」に出るかを見る
UMAP にマーカーを投影すると、3つのことが分かります。
- 他のクラスタも、同じマーカーを発現していないか。T細胞マーカーが、T細胞と呼んでいないクラスタでも光っているなら、そのマーカーは特異的でないか、ラベルが間違っている。
- そのクラスタの全体で発現しているか、一部だけか、それとも弱いか。クラスタの一部でしかマーカーが出ないなら、そのクラスタは均一でなく、さらに細かい型が混ざっている。
- 複数のクラスタにまたがって発現しているマーカーはないか。あるなら、そのマーカーで分けようとした型は、分けられていない。
空間データでは、これに加えて組織の上への投影も行います。同じマーカーが、組織像で「あるべき場所」に出ているかを見ます。上皮マーカーが上皮の領域に、免疫マーカーが免疫浸潤の領域に出ていれば、型付けは組織構造と整合しています。
たとえば、上皮にしかないはずの型が間質に出る。免疫細胞のマーカーが、免疫細胞がいないはずの領域で光る。こういうときは、混入か QC の失敗を疑ってください。再構成した細胞では、その原因はたいてい partial volume 効果(隣の細胞の混入)か、セグメンテーションの誤りです。デコンボリューションのパラメータをいじる前に、細胞側の QC(面積・カウント)に戻り、膨張しすぎた細胞や、複数細胞が融合した細胞を外せていたかを確認してください。
8. 怪しい細胞に印を付ける
最後に、アノテーションで付けたラベルを、RCTD の doublet 判定で検証します。
r
# 8 µm ビンに対して RCTD doublet モードを走らせ、混入を洗い出す
# (細胞ではなくビンに対して行うのが、メモリ的に現実的)
library(spacexr)
rctd_data <- createRctd(bin8_spe, reference_se, cell_type_col = "cell_type")
res <- runRctd(rctd_data, rctd_mode = "doublet", max_cores = 4)
# singlet の割合を見る。高いほど、1ビン=1細胞に近い
df <- res@results$results_df
mean(df$spot_class == "singlet") # 目安として 0.7〜0.75 前後
# この割合が高いことが、そのまま「アノテーションで十分」の裏づけになる
singlet と判定された細胞は、ラベルを信頼できます。doublet と判定された細胞、とくに doublet_uncertain の細胞は、混入している可能性が高いので、慎重に扱います。特定の細胞型で doublet の割合が高いなら、その型は境界や密な領域に多く、混入を受けやすいと分かります。
9. Space Ranger v4 の自動セグメンテーションを使う場合
2025 年 6 月以降の Space Ranger v4.0 は、H&E 画像があれば核ベースの細胞セグメンテーションを自動で行い、細胞単位の出力を返します。bin2cell を自分で回さなくても、細胞×遺伝子の行列が手に入ります。
ただし、ここまで述べたことは変わりません。自動セグメンテーションで作った細胞も、partial volume 効果からは逃れられません。細胞側の QC、アノテーション、マーカーの UMAP・組織像への投影、doublet 判定による検証──この流れは、どちらの方法で細胞を作っても同じです。
手軽さでは Space Ranger v4 の自動セグメンテーションです。一方 bin2cell は、解析単位の決め方で触れた destripe(2 µm ビンの縞の補正)や、総カウント画像を使った二次セグメンテーション(拾えなかった細胞の救済)を挟めます。まず Space Ranger の結果を見て、取りこぼしや過剰な膨張が気になるなら bin2cell を試す、という順序が現実的です。
10. 判断のまとめ
| 状況 | やること |
|---|---|
| 再構成した細胞に型を付けたい | まずアノテーション(CellTypist / scANVI) |
| 混入した細胞を洗い出したい | 8 µm ビンに RCTD doublet モード |
| singlet の割合が高い(70%超) | アノテーションで十分。再構成も良好 |
| singlet の割合が低い | セグメンテーションか参照を見直す |
| 組織学的にありえない型が出た | 細胞側の QC に戻る(面積・カウント) |
| 手軽に細胞を作りたい | Space Ranger v4 の自動セグメンテーション |
| 縞や取りこぼしが気になる | bin2cell(destripe・二次セグメンテーション) |
まとめ
- 再構成した細胞はきれいな単一細胞ではない。膨張の縁で隣の細胞の転写産物が混ざる(partial volume 効果)。
- とはいえ大半は単一細胞(8 µm ビンで約 75% が singlet)。だからアノテーションが素直で、既定の第一選択になる。
- デコンボリューションは、混入を洗い出す道具として使う。8 µm ビンに doublet モードを当て、怪しい細胞に印を付ける。
- singlet の割合そのものが、再構成の質の指標。低ければ再構成か参照を疑う。
- 細胞側の QC では、scRNA-seq の指標に加えて細胞の面積を見る。
- アノテーションは必ずマーカーを UMAP と組織像の両方に投影して検証する。ありえない型が光ったら、混入か QC 失敗を疑い、細胞側の QC に戻る。
- Space Ranger v4 の自動セグメンテーションでも、この検証の流れは同じ。
関連記事
- シーケンス型 空間トランスクリプトーム:解析単位の決め方
- シーケンス型 空間トランスクリプトーム:細胞型を割り当てる(全体像)
- シーケンス型 空間トランスクリプトーム:Curio Seeker と doublet モード
- シーケンス型 空間トランスクリプトーム:Stereo-seq の bin と cellbin
- scRNA-seq解析:細胞型アノテーション手法の全体像
- scRNA-seq解析:細胞型アノテーション(手動)
- scRNA-seq解析:データの読み込みと品質管理(QC)
- scVIだけじゃない:scvi-tools の全体像
- scRNA-seq解析の土台:AnnData のデータ構造をリレーショナルDBの発想で理解する
参考文献
- 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
- Schmidt, U., Weigert, M., Broaddus, C., & Myers, G. (2018). Cell detection with star-convex polygons. In Medical Image Computing and Computer Assisted Intervention (MICCAI) 2018, 265–273. doi:10.1007/978-3-030-00934-2_30
- 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
- Domínguez Conde, C., Xu, C., Jarvis, L. B., et al. (2022). Cross-tissue immune cell analysis reveals tissue-specific features in humans. Science, 376(6594), eabl5197. doi:10.1126/science.abl5197
- Xu, C., Lopez, R., Mehlman, E., et al. (2021). Probabilistic harmonization and annotation of single-cell transcriptomics data with deep generative models. Molecular Systems Biology, 17(1), e9620. doi:10.15252/msb.20209620
- 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
- Oliveira, M. F., Romero, J. P., Chung, M., et al. (2025). High-definition spatial transcriptomic profiling of immune cell populations in colorectal cancer. Nature Genetics, 57(6), 1512–1523. doi:10.1038/s41588-025-02193-3
- 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
- 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
- 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


コメント