单细胞专栏-如何给orig.ident换名字

2022-05-10 21:53:43 浏览数 (1)

​由于上游的分析是公司给做的,但是发现我在跟他们说样本名字的时候发错了,想后面自己更改一下每个orig.ident和groups的名字,百度了一下有没有类似问题,果然在seurat的官网上发现了类似的问题(https://github.com/satijalab/seurat/issues/1479

)。

代码整理

代码语言:javascript复制
##官网上回答问题的作者给予的回答
> # Quickly preview the metadata
> head(x = pbmc_small[[]])
                  orig.ident nCount_RNA nFeature_RNA RNA_snn_res.0.8
ATGCCAGAACGACT SeuratProject         70           47               0
CATGGCCTGTGCAT SeuratProject         85           52               0
GAACCTGATGAACC SeuratProject         87           50               1
TGACTGGATTCTCA SeuratProject        127           56               0
AGTCAGACTGCACA SeuratProject        173           53               0
TCTGATACACGTGT SeuratProject         70           48               0
               letter.idents groups RNA_snn_res.1
ATGCCAGAACGACT             A     g2             0
CATGGCCTGTGCAT             A     g1             0
GAACCTGATGAACC             B     g2             0
TGACTGGATTCTCA             A     g2             0
AGTCAGACTGCACA             A     g2             0
TCTGATACACGTGT             A     g1             0
> # Create a new metadata column called "original" with the contents of "orig.ident"
> pbmc_small$original <- pbmc_small$orig.ident
> # Remove the "orig.ident" metadata column
> pbmc_small$orig.ident <- NULL
> # Quickly preview the metadata again
> head(x = pbmc_small[[]])
               nCount_RNA nFeature_RNA RNA_snn_res.0.8 letter.idents groups
ATGCCAGAACGACT         70           47               0             A     g2
CATGGCCTGTGCAT         85           52               0             A     g1
GAACCTGATGAACC         87           50               1             B     g2
TGACTGGATTCTCA        127           56               0             A     g2
AGTCAGACTGCACA        173           53               0             A     g2
TCTGATACACGTGT         70           48               0             A     g1
               RNA_snn_res.1      original
ATGCCAGAACGACT             0 SeuratProject
CATGGCCTGTGCAT             0 SeuratProject
GAACCTGATGAACC             0 SeuratProject
TGACTGGATTCTCA             0 SeuratProject
AGTCAGACTGCACA             0 SeuratProject
TCTGATACACGTGT             0 SeuratProject
##You can add metadata columns using AddMetaData, the [[ operator, or the $ operator. For your specific case, I would create a character vector of 'ctrl' or 'patient' based on testing the value of your metadata column, then add it in like I did above.

由于后面需要加入addmetadata这个函数,因此就想起了前几天做复现的时候用过这个函数,因此准备直接搬运,把作者的代码改了改。

首先需要一个xlsx格式的表格,将自己想要的信息填上,类似于以下的格式。

xlsx表格示例xlsx表格示例

其中有一列需要与自己的矩阵里面的信息一样,因为后面我们要用left_join进行合并,我这里选用的是orig.ident。

代码语言:javascript复制
##load library,先加载一堆有的没的包,防止后面代码找不到函数,没办法调取
library(Seurat)
library(dplyr)
library(reticulate)
library(sctransform)
library(cowplot)
library(ggplot2)
library(viridis)
library(tidyr)
library(magrittr)
library(reshape2)
library(readxl)
library(progeny)
library(readr)
library(stringr)
##先读取xlsx格式的表格
metatable <- read_excel("id_change.xlsx")
metadata <- FetchData(seu_obj, "orig.ident")
metadata$cell_id <- rownames(metadata)
metadata$sample_id <- metadata$orig.ident
##left_join:左连接,保留X中得所有观测,这样可以保留原表数据
metadata <- left_join(x = metadata, y = metatable, by = "orig.ident")
rownames(metadata) <- metadata$cell_id
##AddMetaData:添加元数据列;AddMetaData()中传递给元数据参数的内容必须是具有与数据@meta.data中的行名匹配的行名的数据框
seu_obj <- AddMetaData(seu_obj, metadata = metadata)
##查看矩阵情况
head(seu_obj)
##发现多了original、sample_id、cell_id、Groups几列,需要把original替换为orig.ident
##如果是cell_id及sample_id自己研究不在需要,可以跳过那两行代码
##删去orig.ident行,参考seurta官网答疑的代码
seu_obj$orig.ident <- NULL
##新生成orig.ident的一列
seu_obj$orig.ident <- seu_obj$original
##删去original列
seu_ob$original <- NULL
##查看seurat对象情况
seu_obj
##选择新给予的分组进行test,看看能不能有图出来,表明改的是合理的
DimPlot(seu_obj, group.by = "orig.ident",  pt.size = 0.1)

测试的umap图测试的umap图

总结

目前是通过手动改矩阵的列没有发现问题,明天还需要跟公司那边讨论一下这种方法的可行度怎么样,但是能出图,基本保证一部分还是改对了,后面有可能需要对barcode进行再一次的修改。

0 人点赞