踩坑实录一:GEO单细胞样本读取和增加样本metadata信息

本文介绍了如何使用Read10X函数读取单细胞测序样本,包括文件格式要求,然后展示了如何导入并合并病人的meta信息,最终实现临床数据与基因表达数据的整合。重点讲解了将病人代号对应到meta信息和外部患者信息的步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

单细胞样本读取

将病人的meta信息导入


单细胞样本读取

文件夹下所有的样本必须为gz格式

比如这里面那些非gz格式的样本是不能用Read10X的函数去读取的

实际上只需要有以下三个文件即可

读取代码

# 数据储存本地 "E:/GEO/scRNAseq/HNSCC/GSE164690/data"
data_path <- "E:/GEO/scRNAseq/HNSCC/GSE164690/data"
files <- list.files(data_path,full.names = T)
files

system.time({
  sceList = lapply(files,function(patient){ 
    # patient=files[[1]] 
    print(patient)
    ct <- Read10X(patient)
    sce=CreateSeuratObject(counts =  ct ,
                           project =  str_split_fixed(patient,"_",n=2)[,2],
                           min.cells = 3, #Include features detected in at least this many cells.
                           min.features = 200 #	Include cells where at least this many features are detected.
    )
    return(sce)
  }) #返回一个List
})#记录一下运行时间

names(sceList)  
samples = str_split_fixed(files,"_",n=2)[,2]
names(sceList) = samples

sce.all=merge(x=sceList[[1]],
              y=sceList[ -1 ],add.cell.ids = samples)

head(sce.all@meta.data, 10)
table(sce.all@meta.data$orig.ident) 

 

将病人的meta信息导入

# 增加病人的和来源的分组 
phe=str_split(rownames(sce.all@meta.data),'_',simplify = T)
head(phe) 
sce.all@meta.data$patients=phe[,1] 
sce.all@meta.data$cell.orig=phe[,2] 

table(sce.all@meta.data$patients)
table(sce.all@meta.data$cell.orig)

简单给病人分组后,meta信息如下

 希望把临床信息导入meta信息中

 其实按照病人的代号merge即可 不要想得太复杂!!!

# 增加病人的meta信息
patient_info <- read.csv("E:/GEO/scRNAseq/HNSCC/GSE164690/Patients_info_use.csv")
head(patient_info$Patients)

data <- sce.all@meta.data
colnames(patient_info)
# [1] "Patients"      "Gender"        "Age_group"     "Smoking"       "Alcohol"      
# [6] "Disease_site"  "T_Stage"       "N_Stage"       "M_Stage"       "HPV"          
# [11] "Inflam_status"
data <- rownames_to_column(data,var = "barcodes")

metadata <- merge(data,
      patient_info,
      by.x='patients',
      by.y='Patients',
      all=T)
metadata <- column_to_rownames(metadata,var = "barcodes")
sce.all <- AddMetaData(sce.all,metadata)
colnames(sce.all@meta.data)

 基础几天不学 不熟练浪费大量时间!!!!!!一开始用循环去写的,实在离谱

### 单细胞分析中 Metadata 文件的读取方法及工具 在单细胞数据分析过程中,`metadata` 是非常重要的组成部分之,它包含了关于样本的各种描述性信息(如患者编号、细胞类型、组织来源等)。以下是有关 `metadata` 的读取方法及其常用工具。 #### 方法概述 为了成功加载并关联 `metadata` 到 Seurat 对象或其他类似的单细胞分析框架中,通常需要以下几个步骤: 1. **准备 Meta 数据文件** 确保 `metadata` 文件是个结构化的表格形式(通常是 CSV 或 TSV),其中每行对应于个单元格或样本,列则表示不同的属性。例如,在 GEO 提供的数据集中,可能需要手动提取这些元信息[^3]。 2. **加载表达矩阵 Meta 数据到 R 中** 使用标准函数来导入数据表,比如通过 `read.csv()` 函数加载 `.csv` 文件或者利用 Bioconductor 工具包处理更复杂的格式。 3. **创建 Seurat 对象并将 Meta 数据附加进去** 创建初始 Seurat 对象之后,可以通过修改其内部槽位 (`@meta.data`) 来加入额外的信息字段。 #### 实现细节与代码示例 下面提供段具体的实现流程以及相应的代码片段用于说明上述过程: ```r library(Seurat) # 加载基因表达计数矩阵 (假设为 10X Genomics 格式) data.dir <- "/path/to/your/data" counts.matrix <- Read10X(data.dir) # 初始化 Seurat 对象 seurat.obj <- CreateSeuratObject(counts = counts.matrix, project = "MyProject") # 导入外部 meta data 表格 meta.data.file <- "/path/to/meta_data_file.csv" meta.data.df <- read.csv(meta.data.file, row.names=1) # 验证两者的索引致性 if(all(row.names(seurat.obj) %in% rownames(meta.data.df))){ seurat.obj[["meta.data"]] <- meta.data.df[row.names(seurat.obj), ] } else { stop("Row names of expression matrix and metadata do not match.") } # 查看更新后的 meta data 结构 head([email protected]) ``` 此脚本展示了如何从本地路径读取原始计数值,并将其转换成适合进步下游分析的形式;同时还演示了怎样安全地注入预定义好的 `metadata` 记录至目标对象之中[^1][^2]. 值得注意的是,当面对不同平台产生的输入资料时,可能会遇到些特定的技术挑战——例如某些情况下需先解析复杂命名规则才能正确分配类别标签给各个观测单位. 这种情形下往往依赖字符串操作技巧完成初步清理工作后再正式挂接到模型实例上作为辅助变量参与后续统计建模环节. ---
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

18kkk

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值