欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

STOmics-seq:立体视图教程 (I)

最编程 2024-06-08 14:08:03
...

一、背景介绍

大家其实对华大测序的原理什么的都知道,但是以下概念是比较重要的,什么是DNB,bin,我们怎么选择binsize的大小等问题就至关重要了。
首先解释以下DNB和bin的关系,以下来自华大的结题报告:
在华大的时空组学技术(STOmics)中,Bin是分析数据统计的基本单元。一个Bin表示一个固定大小的区域,区域内 DNB 表达量累加,区域间不重合,数字表示单边 DNB 数量。时空芯片上每个 DNB 在基因表达热图上表现为一个像素点,此时的分析单元为Bin1,即一个像素点只包含一个 DNB 的数据,其分辨率为500nm。将相邻N×N个 DNB 数据合并,在基因表达热图上以一个像素点的形式展示,此时分析单元为BinN。比如Bin100表示一个分析单元包含100×100=10000个 DNB 区域的数据,而cellbin是根据ssDNA进行细胞分割后的单个细胞的区域。Bin大小的选择可以根据细胞大小、基因数量以及细胞聚类效果进行调整。

但是我查看网上的资料有的图DNB也可能是715nm的。这个要根据实际测序情况才知道。
技术流程图

有500/715nm

常见的名称:
  • BinSize:合并作为一个单元进行分析的DNB数量;
  • MeanGeneTypes:所有Bin中捕获到基因类型的平均数;
  • MedianGeneTypes:所有Bin中捕获到基因类型的中位数;
  • MeanMIDs:所有Bin中表征基因表达量的MID平均数;
  • MedianMIDs:所有Bin中表征基因表达量的MID中位数。

简而言之,bin1=DNB=500nm大小的区域。如果是bin100就是50um×50um的范围(um应该是错误写法,输入法不好打)。那我们分析的时候应该使用什么分辨率去分析呢?
我们应该考虑以下问题(个人愚见,不对的地方欢迎指教):
1、组织的细胞大小,500nm已经是亚细胞级了,我们更想在单细胞水平去探索组织的基因表达等问题,那么不同组织就要用不同的binsize去获得单细胞水平的表达量。
2、基因数量,虽然我们能根据细胞大家确认binsize,但是过小的size会导致单位内的基因检测数过低,在实际分析中并不理想,因此要保证基因检测数的条件下通常选取的size是大于细胞的实际大小。常用的10X的空间技术的一个spot点实际上也是多个细胞构成。
3、根据细胞聚类效果进行调整,由于binsize选择不合适的大小会导致细胞聚类的结果和实际情况不符,那么就需要调整合适的size大小,比如华大在研究斑马鱼的胚胎发育,选取的是bin15进行分析的。
记住这里的binsize的设置,后续stereopy分析时需要设置。

二、stereopy的数据来源和安装

stereopy使用的是 GEF 文件文件,这个10X的文件截然不同。这个数据是数据下机后使用STOmics/SAW (github.com),华大自主研发,与数据配套的软件,这里可以类比为spaceranger,可以获得表达矩阵和空间位置的软件。具体使用方法,见链接。这里不进行记录,因为华大一般是提gef文件,这一步分析不需要我们进行。当然如果您是特殊物种,可能需要构建参考基因组后自行分析,那需要好好学习以下SAW的使用。我有空再进行学习。
下面展示stereopy的安装,推荐使用conda进行安装

#使用python3.8的版本,此环境命名为st,也可根据习惯自行命名
conda create --name st python=3.8
#激活进入st环境
conda activate st
#安装stereopy 和对应的依赖包
conda install stereopy -c stereopy -c grst -c numba -c conda-forge -c bioconda

#也可以进入conda环境后使用pip安装
pip install stereopy

三、stereopy与其他软件的格式相互转换

目前主流的分析软件还是seurat或Scanpy,即使stereopy已经具体这些功能,但是下游的高级分析的数据大多还是使用rds或者h5ad格式,那么数据格式转换是必不可少的。下面就展示以下数据的读入和转换的脚本。

1、转换为h5ad后使用 Scanpy

import stereo as st
import warnings
warnings.filterwarnings('ignore')

# read the GEF file
data_path = 'sample.tissue.gef'
data = st.io.read_gef(file_path=data_path, bin_size=50)#bin_size设置binsize的大小
data.tl.raw_checkpoint()

# remember to set flavor as scanpy
adata = st.io.stereo_to_anndata(data,flavor='scanpy',output='scanpy_out.h5ad')

2、转换为rds后使用Seurat

转换为rds之前还是需要先输出为H5ad格式

import stereo as st
import warnings
warnings.filterwarnings('ignore')

# read the GEF file
data_path = '.sample.tissue.gef'
data = st.io.read_gef(file_path=data_path, bin_size=50)
data.tl.raw_checkpoint()

# remember to set flavor as seurat
adata = st.io.stereo_to_anndata(data,flavor='seurat',output='seurat_out.h5ad')

然后将h5ad转换为rds:

Rscript annh5ad2rds.R --infile <h5ad file> --outfile <rds file>

annh5ad2rds.R的链接:
Stereopy/docs/source/_static/annh5ad2rds.R at dev · STOmics/Stereopy · GitHub

四、小结

如果有空间的分析经验,通过以上的转换即可,择自己习惯的scanpy或者seurat进行分析。如果binsize设置的小,spot点较多,推荐使用scanpy,python处理大数据方面比R包的seurat要有优势。那么stereopy后续的内容也可以不必学习。后续我还会继续学习sterepy的具体使用方法。
以上是我个人学习心得,如有错误请指正。

上一篇: ST_Buffer

下一篇: ST触点指令