美文网首页
STOmics-seq:Stereopy教程(一)

STOmics-seq:Stereopy教程(一)

作者: 土豆干锅 | 来源:发表于2023-07-09 11:10 被阅读0次

    一、背景介绍

    大家其实对华大测序的原理什么的都知道,但是以下概念是比较重要的,什么是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的具体使用方法。
    以上是我个人学习心得,如有错误请指正。

    相关文章

      网友评论

          本文标题:STOmics-seq:Stereopy教程(一)

          本文链接:https://www.haomeiwen.com/subject/lliludtx.html