美文网首页单细胞测序
单细胞分析之细胞注释工具Garnett

单细胞分析之细胞注释工具Garnett

作者: 11的雾 | 来源:发表于2022-01-14 11:32 被阅读0次

    本文摘自公众号 【生信诊断所】
    原文链接:https://mp.weixin.qq.com/s/eV0m1H6a9gyf4FMZjqQnzA

    摘要
    Garnett是一个单细胞自动注释软件包,输入数据包括一个单细胞数据集和细胞类型定义文件。Garnett使用弹性网回归模型的机器学习算法训练出一个基于回归的分类器。随后训练好的分类器就可以用于更多数据集的细胞类型定义。 官网:https://cole-trapnell-lab.github.io/garnett/

    a993753032104b1371104904b8159ad0.png
    b84303b69baa1fbcc7067ca42e05959c.png
    1. 安装
      Garnett的运行依赖于monole,因此在安装garnett前需要先安装monole和其他依赖包。

    我这里安装的是monocle3,所以以下记录都是根据monocle3的版本。

    从Github上安装:必须要先安装monocle3和其他依赖包。

    # First install Bioconductor and Monocle 3
    if (!requireNamespace("BiocManager"))
        install.packages("BiocManager")
    
    BiocManager::install()
    
    # Next install a few more dependencies
    BiocManager::install(c('BiocGenerics', 'DelayedArray', 
                           'DelayedMatrixStats',
                           'limma', 'S4Vectors', 'SingleCellExperiment',
                           'SummarizedExperiment'))
    
    install.packages("devtools")
    devtools::install_github('cole-trapnell-lab/monocle3')
    

    安装Garnett

    # Install a few Garnett dependencies:
    BiocManager::install(c('org.Hs.eg.db', 'org.Mm.eg.db'))
    
    # Install Garnett
    devtools::install_github("cole-trapnell-lab/garnett",ref="monocle3")
    

    导入Garnett

    安装后,通过打开一个新的R会话并键入,测试Garnett是否安装正确

    library(garnett)

    2.使用

    2.1,如果你有自己的marker,就可以训练你自己的classifier,

    如果没有,可以下载官方的marker文件进行训练,或者直接下载已经训练好的classifier。

    2.1a :训练自己的文件

    先准备文件:文件格式要求如下:
    
    >B cells
    expressed: CD19, MS4A1
    
    >T cells
    expressed: CD3D
    

    可以根据需要:

    >B cells
    expressed: CD19, MS4A1
    expressed above: CD79A 10
    references: https://www.abcam.com/primary-antibodies/b-cells-basic-immunophenotyping,
    10.3109/07420528.2013.775654
    
    >T cells
    expressed: CD3D
    sample: blood # A meta data specification
    
    >Helper T cells
    expressed: CD4
    subtype of: T cells
    references: https://www.ncbi.nlm.nih.gov/pubmed/?term=12000723
    

    可以使用check_markers 和plot_markers去检查你自己的marker表达情况,根据情况再去调整marker文件,以达到最好的效果。

    2.1b :下载已经训练好的classifier

    下载地址:https://cole-trapnell-lab.github.io/garnett/classifiers/

    e747d2d33f4254246a8fdee173af68a0.png
    2.2 导入数据

    这里使用Seurat前期处理后的

    Garnett 是基于monocle3,所以它输入的数据格式是CellDataSet(CDS)。

    这一部分的操作可以参考monocle3的使用。

    需要先创建CDS 对象

    library(monocle3)
    library(garnett)
    library(org.Hs.eg.db)
    
    # 这里使用的是Seurat经过标准流程处理过的seurat对象
    data = GetAssayData(sc_seurat_obj, assay="RNA", slot = 'counts')
    cell_metadata <- sc_seurat_obj@meta.data
    gene_annotation <- data.frame(gene_short_name = rownames(data))
    rownames(gene_annotation) <- rownames(data)
    
    # 创建cds 对象
    cds <- monocle3::new_cell_data_set(data, cell_metadata = cell_metadata,
                                        gene_metadata = gene_annotation)
    cds <- monocle3::preprocess_cds(cds, num_dim = 10)
    
    # 对marker file中的marker基因评分
    # 将自己准备的marker文件放入这里:"pbmc_bad_markers.txt",
    marker_check <- check_markers(pbmc_cds, "./my_marker_file.txt",
                                  db=org.Hs.eg.db,
                                  cds_gene_id_type = "SYMBOL",
                                  marker_file_gene_id_type = "SYMBOL")
    plot_markers(marker_check)
    
    0032fecb2b1dc90358bddb565889c59a.png

    评估结果会以红色字体提示哪些marker基因在数据库中找不到对应的Ensembl名称,以及哪些基因的特异性不高(标注“High overlap with XX cells”)。我们可以根据评估结果优化marker基因,或者添加其他信息来辅助区分细胞类型。

    2.4 训练分类器

    # 使用marker file和cds对象训练分类器 # 这一步比较慢可以使用cores
    sc_seurat_obj_classifier <- train_cell_classifier(cds = cds,
                                marker_file = "./my_marker_file.txt",
                                db = org.Hs.eg.db,
                                cds_gene_id_type = "SYMBOL",
                                num_unknown = 10,
                                marker_file_gene_id_type = "SYMBOL",
                                min_observations = 50,
                                cores = 16,  # windows
                                # cores = 64, # linux
    )
    
    1. 使用自己训练好的classifier预测自己的数据
    pData(cds)$garnett_cluster <- pData(cds)$seurat_clusters
    # 使用前面训练的pbmc_classifier来对自己的数据进行细胞分型
    cds <- classify_cells(cds, sc_seurat_obj_classifier, 
                          db=org.Hs.eg.db, 
                          cluster_extend = TRUE, 
                          cds_gene_id_type = "SYMBOL")
    ## 将结果返回给seurat对象# 提取分类结果
    cds.meta <- subset(pData(cds), 
      select = c("cell_type","cluster_ext_type")) %>% as.data.frame()
    sc_seurat_obj <- AddMetaData(sc_seurat_obj, metadata = cds.meta)
    
    # 查看结果
    DimPlot(sc_seurat_obj, group.by = "cluster_ext_type", 
        label = T, label.size = 3) + ggtitle("Classified by Garnett")
    
    90e0f0441fb5da39b896391426f35e64.png

    上图是用自己的真实的数据测试的结果。

    准确性暂不评价,等测试完SingleR,scCATCH之后再对比一下。

    生信学习交流Q群:826162518

    相关文章

      网友评论

        本文标题:单细胞分析之细胞注释工具Garnett

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