← 返回图册
图册 / 空间转录组 / Stereo-seq
plot50 · 代码 4 · 图 0 · 笔记 1 · 代码库专题
4.3 上游定量
三个平台从原始测序数据到表达矩阵的上游步骤对照。本目录只放脚本骨架,不含数据。
- 分类
- spatial
- 图号
- 代码 4 · 图 0 · 笔记 1
- 文献来源
- 非期刊图,无对应论文。
- 教程来源
- 本地路径:06_空转/04_Stereo-seq/4.3_上游定量_10x_SeekSpace_Stereo-seq
4 个代码文件 · 1 份笔记
- 代码来源
- 本地代码库 06_空转/04_Stereo-seq/4.3_上游定量_10x_SeekSpace_Stereo-seq
图源:(自动生成占位图)
分析流程与参数
从专题 README 抽取;原文顺序保留,未跑过的部分照实标注。
三个平台从原始测序数据到表达矩阵的上游步骤对照。本目录只放脚本骨架,不含数据。
展开其余 4 个章节(工具栈、数据格式、可视化方法、参考文献等)
三平台对照
| 步骤 |
10x Visium |
SeekSpace(华大) |
Stereo-seq(华大) |
| 上游工具 |
SpaceRanger |
SAW |
SAW |
| 输入 |
FASTQ + 参考 + 玻片图 |
FASTQ + 参考 |
FASTQ + 参考 |
| 输出 |
.h5 + spatial/ |
.gef |
.gef(bins 或 cellbin) |
| 坐标来源 |
玻片 fiducial 对齐 |
芯片坐标 |
芯片坐标(DNB) |
| 转 AnnData |
scanpy.read_visium |
read_to_anndata.py |
gef_to_anndata.py |
| 分辨率 |
55 µm spot |
500 nm DNB + bin |
500 nm DNB + bin |
文件
| 文件 |
平台 |
作用 |
run_spaceranger.sh |
10x Visium |
SpaceRanger count 的标准调用(在 01_Visium/1.1_Visium标准下游流程/ 也有一份) |
build_reference.sh |
10x Visium |
spaceranger mkref 建参考 |
gef_to_anndata.py |
Stereo-seq |
.gef → .h5ad,把空间坐标写进 obsm['spatial'] |
read_to_anndata.py |
SeekSpace |
SeekSpace 输出 → .h5ad |
转换后必查三件事
import anndata as ad
adata = ad.read_h5ad("output.h5ad")
# 1. 空间坐标在不在,单位是什么(像素 vs 微米,差 1000 倍)
print(adata.obsm["spatial"][:3])
# 2. 坐标是 (x, y) 还是 (row, col)?画出来方向对不对
# 很多转换脚本不统一,方向反了图会上下颠倒
import matplotlib.pyplot as plt
plt.scatter(*adata.obsm["spatial"].T, s=1); plt.gca().invert_yaxis(); plt.show()
# 3. 图像与坐标能对上吗(scalefactors 是否一起搬过来了)
print(adata.uns.get("spatial"))
状态
- 脚本来自本地
hz-HS-spatial-analysis-release 项目的上游整理。
- 本机未运行验证:SAW / SpaceRanger 都是容器化工具,本机未装。
- 需要真实 FASTQ + 参考基因组才能验证;本仓库不含数据。
分析代码
4 个源码文件,按目录顺序;本机绝对路径已替换为 ~。
代码可复制,但需要按自己的数据改路径与参数。
build_reference.sh
bash · 684 bytes
#!/usr/bin/env bash
# ============================================
# 10x Visium 参考基因组构建
# ============================================
set -euo pipefail
SPACERANGER="/path/to/spaceranger-4.0.1"
export PATH="${SPACERANGER}:${PATH}"
# 下载参考基因组(已有则跳过)
REF_DIR="./reference"
mkdir -p "${REF_DIR}"
cd "${REF_DIR}"
# 方法1:使用 10x 官网提供的一键基因组文件
# wget "https://cf.10xgenomics.com/supp/cell-exp/refdata-gex-mm10-2020-A.tar.gz"
# tar -xf refdata-gex-mm10-2020-A.tar.gz
# 方法2:自行构建(适用于非模式动物)
# 使用上方 README 中的 mkgtf + mkref 流程
echo "参考 README.md 中的构建说明"
gef_to_anndata.py
python · 1528 bytes
"""
Stereo-seq GEF → AnnData 转换脚本
===================================
用法:python gef_to_anndata.py --gef /path/to/cellbin.gef --output output.h5ad
"""
import argparse
import stereo as st
def main():
parser = argparse.ArgumentParser(description="Convert Stereo-seq GEF to AnnData")
parser.add_argument("--gef", required=True, help="Path to GEF file")
parser.add_argument("--bin-type", default="cell_bins",
choices=["cell_bins", "bins"], help="Bin type")
parser.add_argument("--bin-size", type=int, default=None,
help="Bin size (for bin_type='bins')")
parser.add_argument("--flavor", default="scanpy",
choices=["scanpy", "seurat"], help="AnnData flavor")
parser.add_argument("--output", default="output.h5ad",
help="Output h5ad file path")
args = parser.parse_args()
# 读取 GEF
read_kwargs = {
"file_path": args.gef,
"is_sparse": True,
"bin_type": args.bin_type,
}
if args.bin_size is not None:
read_kwargs["bin_size"] = args.bin_size
data = st.io.read_gef(**read_kwargs)
print(f"Loaded: {data}")
# QC
print("Running QC...")
data.tl.cal_qc()
# 转为 AnnData
print(f"Converting to AnnData ({args.flavor} flavor)...")
adata = st.io.stereo_to_anndata(data, flavor=args.flavor, output=args.output)
print(f"Saved to {args.output}")
print(f"AnnData: {adata}")
if __name__ == "__main__":
main()
read_to_anndata.py
python · 194 bytes
#!/usr/bin/env bash
# ============================================
# SeekSpace → AnnData 格式转换
# ============================================
# 运行方式:python read_to_anndata.py
run_spaceranger.sh
bash · 1006 bytes
#!/usr/bin/env bash
# ============================================
# 10x Visium 上游定量 (Space Ranger)
# ============================================
set -euo pipefail
# ---------- 配置参数(请根据实际情况修改)----------
PROJECT_DIR="/path/to/project"
SPACERANGER="/path/to/spaceranger-4.0.1"
TRANSCRIPTOME="/path/to/refdata-gex-mm10-2020-A"
FASTQS_DIR="/path/to/fastqs"
PROBE_SET="/path/to/probe_set.csv"
IMAGE_TIF="/path/to/tissue_image.tif"
SLIDE_ID="H1-8CPZTMY"
AREA="A1"
SAMPLE_ID="Spatial_Sample"
CORES=30
MEM_GB=300
# -------------------------------------------------
export PATH="${SPACERANGER}:${PATH}"
mkdir -p "${PROJECT_DIR}/runs"
cd "${PROJECT_DIR}/runs"
spaceranger count \
--id="${SAMPLE_ID}" \
--transcriptome="${TRANSCRIPTOME}" \
--fastqs="${FASTQS_DIR}" \
--probe-set="${PROBE_SET}" \
--image="${IMAGE_TIF}" \
--slide="${SLIDE_ID}" \
--area="${AREA}" \
--create-bam=false \
--localcores="${CORES}" \
--localmem="${MEM_GB}"