首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >是否可以根据两个seurat对象的条形码从一个样本中合并它们?

是否可以根据两个seurat对象的条形码从一个样本中合并它们?
EN

Stack Overflow用户
提问于 2021-07-25 22:45:32
回答 2查看 199关注 0票数 0

我根据一些基因将我的seurat对象分成两个对象,并对它们进行了分析,现在我想根据它们的原始细胞重新合并它们,但当我合并它们时,条形码发生了变化,我有两个不同索引的一个细胞的条形码。

object1@meta.data:

代码语言:javascript
运行
复制
                        orig.ident nCount_RNA nFeature_RNA
AAAGTCCTCCCTGGTT_1_1 SeuratProject        181           71
AACACACTCTAGATCG_1_1 SeuratProject        153           70
AATAGAGGTGACGCCT_1_1 SeuratProject        171           69
ACTCCCAAGAGGCTGT_1_1 SeuratProject         70           41
AGATCCAAGGGCGAAG_1_1 SeuratProject        224           85
AGGTCATCAGAACTCT_1_1 SeuratProject        758          192

object2@meta.data

代码语言:javascript
运行
复制
                     orig.ident nCount_RNA nFeature_RNA 
AAAGTCCTCCCTGGTT_1_1   alive_14        231          158  
AACACACTCTAGATCG_1_1   alive_14        245          148  
AATAGAGGTGACGCCT_1_1   alive_14        275          179  
ACTCCCAAGAGGCTGT_1_1   alive_14        344          193  
AGATCCAAGGGCGAAG_1_1   alive_14        355          194  
AGGTCATCAGAACTCT_1_1   alive_14        397          245 

我想要的结果是:

代码语言:javascript
运行
复制
                     orig.ident nCount_RNA nFeature_RNA 
AAAGTCCTCCCTGGTT_1_1   alive_14        412          229         
AACACACTCTAGATCG_1_1   alive_14        398          218         
AATAGAGGTGACGCCT_1_1   alive_14        446          248        
ACTCCCAAGAGGCTGT_1_1   alive_14        414          234         
AGATCCAAGGGCGAAG_1_1   alive_14        579          279         
AGGTCATCAGAACTCT_1_1   alive_14       1155          437  

但是我从合并数据中得到的结果是: merge(object1,object2)

代码语言:javascript
运行
复制
                       orig.ident nCount_RNA nFeature_RNA 
AAAGTCCTCCCTGGTT_1_1_1   alive_14        231          158  
AACACACTCTAGATCG_1_1_1   alive_14        245          148  
AATAGAGGTGACGCCT_1_1_1   alive_14        275          179  
ACTCCCAAGAGGCTGT_1_1_1   alive_14        344          193  
AGATCCAAGGGCGAAG_1_1_1   alive_14        355          194  
AGGTCATCAGAACTCT_1_1_1   alive_14        397          245   
EN

回答 2

Stack Overflow用户

发布于 2021-07-26 03:55:23

您可以使用tidyverse-approach:

代码语言:javascript
运行
复制
library(tibble)
library(dplyr)

bind_rows(rownames_to_column(object1), rownames_to_column(object2)) %>% 
  group_by(rowname) %>% 
  summarise(nCount_RNA = sum(nCount_RNA),
            nFeature_RNA = sum(nFeature_RNA)) %>% 
  mutate(orig.ident = "alive_14", .before = 2)

为您提供

代码语言:javascript
运行
复制
# A tibble: 6 x 4
  rowname              orig.ident nCount_RNA nFeature_RNA
  <chr>                <chr>           <dbl>        <dbl>
1 AAAGTCCTCCCTGGTT_1_1 alive_14          412          229
2 AACACACTCTAGATCG_1_1 alive_14          398          218
3 AATAGAGGTGACGCCT_1_1 alive_14          446          248
4 ACTCCCAAGAGGCTGT_1_1 alive_14          414          234
5 AGATCCAAGGGCGAAG_1_1 alive_14          579          279
6 AGGTCATCAGAACTCT_1_1 alive_14         1155          437

数据

代码语言:javascript
运行
复制
object1 <- structure(list(orig.ident = c("SeuratProject", "SeuratProject", 
"SeuratProject", "SeuratProject", "SeuratProject", "SeuratProject"
), nCount_RNA = c(181, 153, 171, 70, 224, 758), nFeature_RNA = c(71, 
70, 69, 41, 85, 192)), class = "data.frame", row.names = c("AAAGTCCTCCCTGGTT_1_1", 
"AACACACTCTAGATCG_1_1", "AATAGAGGTGACGCCT_1_1", "ACTCCCAAGAGGCTGT_1_1", 
"AGATCCAAGGGCGAAG_1_1", "AGGTCATCAGAACTCT_1_1"), spec = structure(list(
    cols = list(id = structure(list(), class = c("collector_character", 
    "collector")), orig.ident = structure(list(), class = c("collector_character", 
    "collector")), nCount_RNA = structure(list(), class = c("collector_double", 
    "collector")), nFeature_RNA = structure(list(), class = c("collector_double", 
    "collector"))), default = structure(list(), class = c("collector_guess", 
    "collector")), skip = 1L), class = "col_spec"))
代码语言:javascript
运行
复制
object2 <- structure(list(orig.ident = c("alive_14", "alive_14", "alive_14", 
"alive_14", "alive_14", "alive_14"), nCount_RNA = c(231, 245, 
275, 344, 355, 397), nFeature_RNA = c(158, 148, 179, 193, 194, 
245)), problems = structure(list(row = 1:5, col = c(NA_character_, 
NA_character_, NA_character_, NA_character_, NA_character_), 
    expected = c("4 columns", "4 columns", "4 columns", "4 columns", 
    "4 columns"), actual = c("5 columns", "5 columns", "5 columns", 
    "5 columns", "5 columns"), file = c("literal data", "literal data", 
    "literal data", "literal data", "literal data")), row.names = c(NA, 
-5L), class = c("tbl_df", "tbl", "data.frame")), class = "data.frame", row.names = c("AAAGTCCTCCCTGGTT_1_1", 
"AACACACTCTAGATCG_1_1", "AATAGAGGTGACGCCT_1_1", "ACTCCCAAGAGGCTGT_1_1", 
"AGATCCAAGGGCGAAG_1_1", "AGGTCATCAGAACTCT_1_1"), spec = structure(list(
    cols = list(id = structure(list(), class = c("collector_character", 
    "collector")), orig.ident = structure(list(), class = c("collector_character", 
    "collector")), nCount_RNA = structure(list(), class = c("collector_double", 
    "collector")), nFeature_RNA = structure(list(), class = c("collector_double", 
    "collector"))), default = structure(list(), class = c("collector_guess", 
    "collector")), skip = 1L), class = "col_spec"))
票数 0
EN

Stack Overflow用户

发布于 2021-08-04 17:40:12

问题是,您需要在两个不同的数据集之间保留Seurat对象的哪些内容?对于数据槽(seurat[assay]@counts),您可以使用rbind将两个矩阵行绑定在一起。(只需小心合并归一化值,如果这会违反任何假设)。

接下来,对于降维和图形,您可以通过将降维或图形从一个对象拉到新的Seurat对象中,将它们放入插槽中。

下面是一些伪代码(我使用的是V3,但如果您使用的是V2,只需更改插槽名称)

代码语言:javascript
运行
复制
merge_data <- rbind(object1[[assay]]@counts, object2[[assay]]@counts)
# repeat for other slots/assays (maybe write a function?)

metadata <- rbind(object1[[]], object2[[]])

seurat_merge <- CreateSeuratObject(counts = merge_data, meta.data = metadata)

# Place dim_reds
seurat_merge[["UMAP_object1"]] <- object1[["UMAP"]]
# repeat for more reductions (maybe write a function?)

一种更简单的解决方案可能是重新导入数据,因为除非您将一个数据集投影到另一个数据集上,否则两个数据集之间的任何降维都是不可比较的。然后,您可以将两个分析中的任何相关元数据添加到新导入的对象中。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68519679

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档