美文网首页
内容复习---visium(stereo bin > 50)细胞

内容复习---visium(stereo bin > 50)细胞

作者: 单细胞空间交响乐 | 来源:发表于2025-07-15 09:07 被阅读0次

作者,Evil Genius

关于visium(stereo bin > 50)全部的分析思路和方法已经都教给大家了,剩下的就是大家多积累一些项目经验,合理的运用到自己的课题中去了。

今天借助项目分析,复习这部分内容。

对于visium(stereo bin > 50)而言,单细胞空间不分家的,首先必须做好单细胞的分析,其中单细胞的注释为重中之重。

目前单细胞的注释,尤其亚群的注释,仍然依据marker注释为主,其中也有很多需要注意的细节,在2025第一课和第二课已经全部讲到了。

空转的基础分析第三课全部讲到了,包括多样本整合去批次。

空间数据的注释,这个也是重点,cell2location和RCTD是最重要的两个方法,当然了,其他方法也很重要,比如王凌华教授的文章就采用了RCTD联合iSTAR,其中联合需要注意的地方在第四课已经全部讲到了。

接下来就是分析细胞niche,第五课的关键内容。

关于细胞niche,2024的课程讲解的是R版本,2025不仅更新了R版本,同时提供了python版本,大家拿到之后,用在自己的项目中即可,其中有很多的注意事项要留意,不要盲目跑代码。

再往下就是共定位,第六课的关键内容。

关于细胞niche与共定位的生物学解读,推荐大家读文章


随着做空间的课题组越来越多,越来越卷是必然的趋势,那么分析也会水涨船高,就像单细胞分析一样,慢慢会的人也越来越多,风口也就那么几年,希望大家抓住机遇,珍惜时间。

最后附上Misty分析空间转录组共定位的封装代码(R版本),注意分析的Seurat版本。

#!/usr/bin/env Rscript
###zhaoyunfei
####20240401

suppressPackageStartupMessages({
    library(argparse)
    library(Seurat)
    library(mistyR)
    library(future)
    library(dplyr)
})

create_parser <- function() {
    parser <- ArgumentParser(description = "MISTY 空间转录组分析流程")
    parser$add_argument("-i", "--input", type = "character", required = TRUE,
                       help = "输入 Seurat 对象的 RDS 文件路径")
    parser$add_argument("-o", "--output", type = "character", required = TRUE,
                       help = "输出目录路径")
    parser$add_argument("-s", "--sample", type = "character", default = "sample",
                       help = "样本名称 (默认: sample)")
    parser$add_argument("--assay", type = "character", default = "Spatial",
                       help = "使用的 assay (默认: Spatial)")
    parser$add_argument("--slot", type = "character", default = "data",
                       help = "使用的数据 slot (默认: data)")
    parser$add_argument("--features", type = "character", 
                       help = "要分析的基因列表文件 (每行一个基因)")
    parser$add_argument("--nfeatures", type = "integer", default = 2000,
                       help = "如果未指定基因列表,使用的高变基因数量 (默认: 2000)")
    parser$add_argument("--views", type = "character", default = "intra,para",
                       help = "要创建的视图类型,逗号分隔 (默认: intra,para)")
    parser$add_argument("--l", type = "integer", default = 10,
                       help = "参数视图的邻域大小 (默认: 10)")
    parser$add_argument("--workers", type = "integer", default = 4,
                       help = "并行工作线程数 (默认: 4)")
    return(parser)
}

# 主分析函数
run_misty_analysis <- function(seurat_obj, params) {
    # 设置并行计算
    plan("multisession", workers = params$workers)
    # 选择特征
    if (!is.null(params$features)) {
        features <- readLines(params$features)
        features <- intersect(features, rownames(seurat_obj))
        if (length(features) == 0) {
            stop("指定的基因列表中没有在数据中找到的基因")
        }
    } else {
        # 如果没有提供基因列表,使用高变基因
        seurat_obj <- FindVariableFeatures(seurat_obj, nfeatures = params$nfeatures)
        features <- VariableFeatures(seurat_obj)
    }
    
    cat(paste("使用", length(features), "个特征进行分析\n"))
    
    # 获取空间坐标
    coordinates <- GetTissueCoordinates(seurat_obj)
    
    # 创建视图
    views <- unlist(strsplit(params$views, ","))
    
    misty.views <- create_initial_view(data = GetAssayData(seurat_obj, 
                                                          assay = params$assay, 
                                                          slot = params$slot))
    
    if ("intra" %in% views) {
        cat("添加细胞内视图\n")
        misty.views <- add_paraview(misty.views, l = params$l)
    }
    
    if ("para" %in% views) {
        cat("添加参数视图\n")
        misty.views <- add_paraview(misty.views, l = params$l)
    }
    
    # 运行 MISTY
    cat("运行 MISTY 分析...\n")
    results <- run_misty(misty.views, results.folder = file.path(params$output, "results"))
    
    # 保存结果
    cat("保存结果...\n")
    saveRDS(results, file.path(params$output, "misty_results.rds"))
    
    # 可视化
    cat("生成可视化...\n")
    pdf(file.path(params$output, "misty_plots.pdf"))
    plot_interaction_heatmap(results)
    plot_view_contributions(results)
    dev.off()
    
    return(results)
}

# 主函数
main <- function() {
    parser <- create_parser()
    args <- parser$parse_args()
    
    # 创建输出目录
    if (!dir.exists(args$output)) {
        dir.create(args$output, recursive = TRUE)
    }
    
    # 记录参数
    writeLines(capture.output(print(args)), 
               file.path(args$output, "analysis_parameters.txt"))
    
    # 加载数据
    cat(paste("加载数据:", args$input, "\n"))
    seurat_obj <- readRDS(args$input)
    
    # 运行分析
    results <- tryCatch({
        run_misty_analysis(seurat_obj, args)
    }, error = function(e) {
        cat("分析过程中出错:\n")
        cat(e$message, "\n")
        traceback()
        quit(status = 1)
    })
    
    cat("分析完成!\n")
}

if (!interactive()) {
    main()
}

生活很好,有你更好

相关文章

网友评论

      本文标题:内容复习---visium(stereo bin > 50)细胞

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