美文网首页
单细胞小记1:将多个样本的表达矩阵,合并成seurat格式

单细胞小记1:将多个样本的表达矩阵,合并成seurat格式

作者: 小程的学习笔记 | 来源:发表于2024-09-13 14:22 被阅读0次

    1. 数据准备

    # 下载所需的数据集
    $ mkdir GSE20652
    $  wget https://ftp.ncbi.nlm.nih.gov/geo/series/GSE206nnn/GSE206528/suppl/GSE206528_RAW.tar
    
    # 解压
    $ tar -xf GSE206528_RAW.tar -C GSE20652/
    
    $ cd  GSE20652
    $ gunzip *.gz
    
    data-1

    2. 数据整合

    # 加载所需的R包
    library(Seurat)
    library(dplyr)
    library(readr)
    
    # 设置文件夹路径
    file_path <- "/data/shumin/ED/GSE206528/"
    
    # 1. 列出所有 CSV 文件
    file_names <- list.files(path = file_path, pattern = "*.csv", full.names = TRUE)
    
    # 2. 创建函数来读取文件和创建 meta 数据框
    process_file <- function(file) {
      # 读取 CSV 文件,设置 row.names = 1 将第一列作为行名
      data <- read.csv(file, row.names = 1)
      
      # 计算列数(即重复次数)
      num_columns <- ncol(data)
      
      # 获取文件名并提取样本名和分组信息
      file_name <- basename(file)
      split_name <- strsplit(file_name, "_")[[1]]
      sample_name <- split_name[1]
      group <- split_name[2]
      
      # 创建一个 meta 数据框,每行记录一个样本的重复次数
      meta <- data.frame(
        Sample = rep(sample_name, num_columns),
        Group = rep(group, num_columns),
        stringsAsFactors = FALSE
      )
      
      return(list(data = data, meta = meta))
    }
    
    # 3. 使用 lapply 处理所有文件
    results <- lapply(file_names, process_file)
    
    # 提取所有数据和 meta 数据框
    data_list <- lapply(results, `[[`, "data")
    meta_list <- do.call(rbind, lapply(results, `[[`, "meta"))
    
    # 4. 合并所有数据框
    combined_data <- do.call(cbind, data_list)
    
    # 5. 创建 Seurat 对象
    seurat_obj <- CreateSeuratObject(counts = combined_data)
    
    # 6. 将 meta 数据添加到 Seurat 对象
    seurat_obj <- AddMetaData(seurat_obj, metadata = meta_list)
    
    head(seurat_obj)
    ##                               orig.ident nCount_RNA nFeature_RNA     Sample  Group
    ## LZ037.AAACCCAAGAGGGTGG.1_1 SeuratProject       4407         1673 GSM6255907 Normal
    ## LZ037.AAACCCAAGATACGAT.1_1 SeuratProject       6786         2275 GSM6255907 Normal
    ## LZ037.AAACCCAAGATGGCAC.1_1 SeuratProject       5277         2130 GSM6255907 Normal
    ## LZ037.AAACCCAAGGGAGTGG.1_1 SeuratProject       5773         2050 GSM6255907 Normal
    ## LZ037.AAACCCAAGTTGGACG.1_1 SeuratProject       6518         2099 GSM6255907 Normal
    ## LZ037.AAACCCACAACTTCTT.1_1 SeuratProject       1595          838 GSM6255907 Normal
    ## LZ037.AAACCCACAATCTCGA.1_1 SeuratProject       6017         2047 GSM6255907 Normal
    ## LZ037.AAACCCACAATGCTCA.1_1 SeuratProject       3954         1401 GSM6255907 Normal
    ## LZ037.AAACCCACAGCCGGTT.1_1 SeuratProject      11695         3281 GSM6255907 Normal
    ## LZ037.AAACCCAGTATGATCC.1_1 SeuratProject       6469         2092 GSM6255907 Normal
    
    # 数据标准化
    seurat_obj <- NormalizeData(seurat_obj) %>% FindVariableFeatures() %>% ScaleData() %>% RunPCA(verbose=FALSE)
    
    # harmony及降维
    scRNA <- RunHarmony(seurat_obj, group.by.vars = "Sample")
    scRNA <- FindNeighbors(scRNA, reduction = "harmony", dims = 1:20) %>% FindClusters(resolution = 0.6)
    scRNA <- RunUMAP(scRNA, reduction = "harmony")
    scRNA <- RunTSNE(scRNA, reduction = "harmony")
    

    相关文章

      网友评论

          本文标题:单细胞小记1:将多个样本的表达矩阵,合并成seurat格式

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