当前位置: 首页 > article >正文

手把手教你用Scanpy搞定空间转录组分析:从Visium数据到FISH可视化(附避坑指南)

空间转录组分析实战从Visium到MERFISH的Scanpy全流程解析空间转录组技术正在彻底改变我们对组织微环境的理解。想象一下你不仅能知道细胞表达哪些基因还能精确看到这些基因在组织中的空间分布——这正是Visium和MERFISH等技术带来的革命。作为单细胞分析老手你可能已经熟悉Scanpy的基础操作但空间数据的特殊性会带来全新的挑战图像对齐问题、空间坐标处理、多维可视化技巧...本文将带你完整走通这个流程避开那些官方文档没明说的坑。1. 环境配置与数据获取工欲善其事必先利其器。不同于常规单细胞分析空间转录组对可视化依赖更重需要特别注意图形后端的配置。推荐使用Jupyter Lab而非Notebook因为前者对交互式绘图支持更好# 基础环境配置 import scanpy as sc import pandas as pd import matplotlib.pyplot as plt import seaborn as sns from IPython.display import set_matplotlib_formats sc.logging.print_versions() sc.set_figure_params(facecolorwhite, figsize(8, 8), dpi300) set_matplotlib_formats(retina) # 高清显示Visium数据获取有两种常见方式。官方数据集适合快速测试但实际项目中更多需要处理自己的数据。这里有个关键细节当使用visium_sge()下载数据时国内用户常因网络问题失败。此时可以手动下载到指定目录通常为~/sca​​npy_data/visium/使用代理镜像站点需修改Scanpy源码中的URL直接加载本地h5文件# 替代下载的本地加载方案 adata sc.read_visium(path_to_visium_dir, genomeNone, # 自动检测 count_filefiltered_feature_bc_matrix.h5)对于MERFISH数据官方示例中的百度网盘链接可能失效。更可靠的方式是从原始论文补充材料下载或使用预处理的示例数据# MERFISH数据加载优化方案 coordinates pd.read_csv(merfish_coords.csv, index_col0) counts sc.read_csv(merfish_counts.csv).T adata_merfish counts[coordinates.index, :] adata_merfish.obsm[spatial] coordinates.values注意空间数据的坐标系统可能因平台而异。Visium使用像素坐标而MERFISH常用微米单位进行跨平台比较时需统一尺度。2. 质控与预处理的特殊考量空间数据的质控标准需要调整。传统单细胞的线粒体基因阈值通常10%在组织样本中可能过于严格因为组织边缘细胞天然有更高mtDNA含量某些细胞类型如心肌细胞本就富含线粒体建议采用动态阈值策略# 空间特异的质控流程 sc.pp.calculate_qc_metrics(adata, qc_vars[mt], inplaceTrue) # 可视化QC指标的空间分布 fig plt.figure(figsize(12, 4)) gs fig.add_gridspec(1, 3) ax1 fig.add_subplot(gs[0, 0]) ax2 fig.add_subplot(gs[0, 1]) ax3 fig.add_subplot(gs[0, 2]) sc.pl.spatial(adata, colortotal_counts, axax1, showFalse) sc.pl.spatial(adata, colorpct_counts_mt, axax2, showFalse) sc.pl.spatial(adata, colorn_genes_by_counts, axax3) plt.tight_layout()通过这种空间可视化可以识别组织边缘的低质量区域需过滤特殊解剖结构的真实生物学信号应保留过滤参数建议指标常规单细胞阈值空间转录组调整建议基因数500-5000300-6000UMI数1000-250002000-35000线粒体%10%15-20%核糖体%-注意免疫细胞富集区域# 执行过滤 sc.pp.filter_cells(adata, min_counts2000) sc.pp.filter_cells(adata, max_counts35000) adata adata[adata.obs[pct_counts_mt] 20] sc.pp.filter_genes(adata, min_cells5) # 更宽松的基因过滤3. 空间感知的聚类分析标准单细胞聚类在空间数据中可能失效因为它忽略了位置信息。Scanpy提供了几种空间增强的分析策略3.1 空间约束的聚类# 计算空间邻接图 sc.pp.neighbors(adata, n_neighbors10, knnTrue) sc.pp.neighbors(adata, n_neighbors6, metriceuclidean, use_repspatial, key_addedspatial_neighbors) # 融合两种邻接图 adata.obsp[combined_neighbors] adata.obsp[connectivities] * 0.7 \ adata.obsp[spatial_neighbors_connectivities] * 0.3 # 基于混合图的聚类 sc.tl.leiden(adata, adjacencycombined_neighbors, key_addedspatial_clusters, resolution0.8)3.2 空间差异表达分析常规的rank_genes_groups可能遗漏空间特异的marker基因。建议补充# 空间差异分析 sc.tl.rank_genes_groups(adata, spatial_clusters, methodt-test) sc.tl.spatial_genes(adata, n_jobs4) # 计算空间自相关 # 筛选空间特异的marker markers sc.get.rank_genes_groups_df(adata, groupNone) spatial_markers markers[markers[names].isin(adata.var_names[adata.var.spatial_genes])]3.3 多模态可视化技巧避免官网示例中的重叠问题推荐使用# 改进的空间可视化方案 with plt.rc_context({figure.figsize: (12, 4)}): fig, (ax1, ax2) plt.subplots(1, 2) sc.pl.spatial(adata, colorspatial_clusters, axax1, titleClusters, showFalse) sc.pl.spatial(adata, colorCd3e, axax2, # 示例marker基因 titleCd3e Expression, showFalse) plt.tight_layout()当需要展示多个基因时不要使用默认的sc.pl.spatial网格而是# 多基因空间表达面板 genes [Cd3e, Cd79a, Col1a1, Ptprc] fig plt.figure(figsize(12, 12)) for i, gene in enumerate(genes): ax fig.add_subplot(2, 2, i1) sc.pl.spatial(adata, colorgene, axax, showFalse, titlegene, vmaxp99) # 避免极端值影响色阶 plt.tight_layout()4. MERFISH数据的特殊处理MERFISH与Visium的主要差异特性VisiumMERFISH分辨率55μm0.5-1μm通量全转录组数百基因数据密度低极高坐标单位像素微米4.1 高密度数据处理MERFISH的细胞密度可能导致标准UMAP失效建议# MERFISH特制的降维方案 sc.pp.pca(adata_merfish, n_comps50) sc.pp.neighbors(adata_merfish, n_pcs30, n_neighbors50) sc.tl.umap(adata_merfish, min_dist0.3) # 增大min_dist避免重叠 # 使用PHATE降维替代UMAP import phate phate_op phate.PHATE(n_components2, knn30) adata_merfish.obsm[X_phate] phate_op.fit_transform(adata_merfish.X)4.2 亚细胞级可视化MERFISH允许亚细胞分辨率分析需要调整可视化参数# 亚细胞级绘图 sc.pl.embedding(adata_merfish, basisspatial, colorclusters, size10, # 更小的点 palettetab20, # 更多颜色 alpha0.7, # 半透明 frameonFalse) # 去边框 # 聚焦特定区域 x_min, x_max 100, 200 y_min, y_max 50, 150 ax sc.pl.embedding(adata_merfish, basisspatial, colorPcp4, showFalse) ax.set_xlim(x_min, x_max) ax.set_ylim(y_min, y_max)4.3 多模态数据整合将MERFISH与Visium数据联合分析# 共享基因取交集 common_genes list(set(adata.var_names) set(adata_merfish.var_names)) # 创建联合AnnData对象 import anndata adata_combined anndata.AnnData( obspd.concat([adata.obs, adata_merfish.obs]), varpd.DataFrame(indexcommon_genes), obsm{spatial: np.vstack([adata.obsm[spatial], adata_merfish.obsm[spatial]])} ) # 填充表达矩阵 adata_combined.X np.zeros((adata_combined.n_obs, len(common_genes))) for i, gene in enumerate(common_genes): if gene in adata.var_names: adata_combined.X[:adata.n_obs, i] adata[:, gene].X.flatten() if gene in adata_merfish.var_names: adata_combined.X[adata.n_obs:, i] adata_merfish[:, gene].X.flatten()5. 高级分析与疑难排解5.1 批次效应处理空间数据常含技术批次效应特别是多切片实验。使用BBKNN进行空间感知的批次校正# 安装bbknn: pip install bbknn import bbknn bbknn.bbknn(adata, batch_keysample_id, # 假设obs中有批次信息 neighbors_within_batch3, metriceuclidean, n_pcs30) sc.tl.umap(adata)5.2 空间轨迹推断使用PAGA分析空间发育轨迹# 空间增强的轨迹分析 sc.tl.paga(adata, groupsspatial_clusters) sc.pl.paga(adata, colorspatial_clusters, posadata.uns[paga][pos], # 使用空间坐标布局 node_size_scale3)5.3 常见报错解决图形重叠问题调整plt.subplots_adjust()参数或使用GridSpec配色不一致显式指定palette参数如sns.color_palette(husl, n_colors10)内存不足对MERFISH数据使用adata_merfish adata_merfish[:, :1000]取高变基因子集下载失败手动下载数据后放到~/scanpy_data/对应目录空间转录组的分析流程仍在快速发展。最近尝试将Squidpy等工具与Scanpy联用发现其空间自相关分析能有效识别组织中的功能区域。实际项目中建议先在小样本上测试完整流程再扩展到全部数据——我曾因直接处理大样本导致8小时的计算结果因一个小参数错误而报废这个教训值得各位引以为戒。

相关文章:

手把手教你用Scanpy搞定空间转录组分析:从Visium数据到FISH可视化(附避坑指南)

空间转录组分析实战:从Visium到MERFISH的Scanpy全流程解析 空间转录组技术正在彻底改变我们对组织微环境的理解。想象一下,你不仅能知道细胞表达哪些基因,还能精确看到这些基因在组织中的空间分布——这正是Visium和MERFISH等技术带来的革命。…...

基于Phi-3-mini-128k-instruct构建运维智能助手:Linux命令分析与故障排查

基于Phi-3-mini-128k-instruct构建运维智能助手:Linux命令分析与故障排查 1. 引言 想象一下这个场景:凌晨两点,服务器监控告警突然响起,CPU使用率飙升到90%,内存也快见底。你睡眼惺忪地登录服务器,面对满…...

洛谷-入门5-字符串3

P1553 数字反转(升级版)题目背景以下为原题面,仅供参考:给定一个数,请将该数各个位上数字反转得到一个新数。这次与 NOIp2011 普及组第一题不同的是:这个数可以是小数,分数,百分数,整…...

如何用一套键鼠控制多台电脑?Lan Mouse跨平台键鼠共享终极指南

如何用一套键鼠控制多台电脑?Lan Mouse跨平台键鼠共享终极指南 【免费下载链接】lan-mouse mouse & keyboard sharing via LAN 项目地址: https://gitcode.com/gh_mirrors/la/lan-mouse 你是否经常需要在多台电脑之间切换工作?Windows台式机、…...

Phi-4-mini-reasoning科研助手应用:论文定理推导辅助与反例生成案例

Phi-4-mini-reasoning科研助手应用:论文定理推导辅助与反例生成案例 1. 模型简介与部署验证 Phi-4-mini-reasoning 是一个专注于数学推理的轻量级开源模型,基于高质量合成数据训练而成。作为Phi-4模型家族成员,它特别擅长处理需要密集逻辑推…...

小红书内容采集效率革命:XHS-Downloader全方位解决方案

小红书内容采集效率革命:XHS-Downloader全方位解决方案 【免费下载链接】XHS-Downloader 小红书(XiaoHongShu、RedNote)链接提取/作品采集工具:提取账号发布、收藏、点赞、专辑作品链接;提取搜索结果作品、用户链接&am…...

ClawdBot优化升级:如何配置国内大模型,提升响应速度与效果

ClawdBot优化升级:如何配置国内大模型,提升响应速度与效果 1. 项目概述 ClawdBot(现更名为MoltBot)是一款开源的个人AI助手工具,它能够在本地设备上运行,通过vLLM提供后端模型能力。这个工具特别适合开发…...

pg_dump备份报错:Only syssso can access this table

文章目录环境症状问题原因解决方案环境 系统平台:N/A 版本:4.5.8 症状 使用pg_dump对数据库进行备份时报错: pg_dump:error:query failed:ERROR: Only syssso can access this table. pg_dump:error:query was: SELECT label, provider, …...

近场声全息(NAH)数据与MATLAB实现

一、近场声全息核心原理 近场声全息(NAH)通过测量声源近场区域的声压分布(包含传播波和倏逝波成分),利用空间傅里叶变换重建声场分布。其核心公式基于Helmholtz-Kirchhoff积分方程:其中: p0(kx,…...

Tomcat中间件能够提供的能力

Tomcat 中间件能够提供的能力主要包括以下几个方面:‌运行 Java Web 应用程序‌:Tomcat 是一个开源的 Web 应用服务器,主要用于运行基于 Java 的 Web 应用,包括 Servlet、JSP 和 JavaBean 等组件。‌提供 Servlet 容器功能‌&…...

hgproxy4.0.35.0之前版本数据库连接卡在parse状态

文章目录环境症状问题原因解决方案环境 系统平台:Linux x86-64 Red Hat Enterprise Linux 7 版本:4.5.10 症状 查询数据库后台连接进程,发现主备节点均有超过几天的长连接,且状态卡在parse状态 问题原因 数据库会话sql出错后…...

MiniCPM-o-4.5-nvidia-FlagOS跨平台部署:Windows系统配置要点

MiniCPM-o-4.5-nvidia-FlagOS跨平台部署:Windows系统配置要点 想在自己的Windows电脑上跑起来最新的MiniCPM-o-4.5-nvidia-FlagOS,结果被一堆环境问题卡住了?别急,这太正常了。很多朋友在Windows上部署这类AI项目时,总…...

Phi-3-mini-4k-instruct-gguf参数详解:温度0.0时技术文档摘要的逻辑连贯性分析

Phi-3-mini-4k-instruct-gguf参数详解:温度0.0时技术文档摘要的逻辑连贯性分析 1. 模型概述与核心能力 Phi-3-mini-4k-instruct-gguf是微软Phi-3系列中的轻量级文本生成模型GGUF版本,专为高效推理场景优化。该模型在问答、文本改写、摘要整理等任务中表…...

从“认怂”到“被看见”:flomo的产品设计哲学

当大多数笔记软件都在追求“大而全”时,有一款产品选择了一条完全不同的路。它不让你写标题,不支持复杂排版,甚至在官网上大大方方地列出“自己不擅长什么”。它的创始人说:“35岁再创业,我学会了认怂。”它就是flomo&…...

Nginx + FFmpeg 核心配置

Nginx FFmpeg 核心配置(2 种最实用方案)我给你最简、能直接用的配置,不用你自己改半天,分两种场景:Nginx 接收 FFmpeg 推流(直播)Nginx 调用 FFmpeg 自动转码(高清 / 标清&#xff…...

Chrome密码一键提取:3分钟找回所有浏览器保存的密码

Chrome密码一键提取:3分钟找回所有浏览器保存的密码 【免费下载链接】chromepass Get all passwords stored by Chrome on WINDOWS. 项目地址: https://gitcode.com/gh_mirrors/chr/chromepass 你是否曾经因为忘记某个重要网站的登录密码而感到焦虑&#xff…...

如何高效解决Windows驱动存储臃肿问题?DriverStore Explorer带来75-90%的空间释放效率提升

如何高效解决Windows驱动存储臃肿问题?DriverStore Explorer带来75-90%的空间释放效率提升 【免费下载链接】DriverStoreExplorer Driver Store Explorer [RAPR] 项目地址: https://gitcode.com/gh_mirrors/dr/DriverStoreExplorer Windows系统随着使用时间增…...

Obsidian表格处理革新:Excel插件的无缝集成方案

Obsidian表格处理革新:Excel插件的无缝集成方案 【免费下载链接】obsidian-excel 项目地址: https://gitcode.com/gh_mirrors/ob/obsidian-excel 在知识管理的日常工作中,你是否经常遇到这样的困境:在Obsidian中记录项目数据时&#…...

一文读懂DMXAPI:一个Key接入300+大模型,开发者降本增效新选择

导语:在大模型应用爆发式增长的今天,开发者面临模型选择多、接入成本高、并发限制严、发票合规难等痛点。有没有一种方案,能让开发者"一次接入,全模型可用"?本文带你深入了解国内新兴的AI大模型聚合平台——…...

基于Vue的川汇水产养殖管理系统[vue]-计算机毕业设计源码+LW文档

摘要:随着水产养殖业的快速发展,传统的管理方式已难以满足现代化水产养殖的需求。本文介绍了一款基于Vue框架开发的川汇水产养殖管理系统,该系统旨在提高水产养殖管理的效率和精准度。系统涵盖了系统用户管理、水质管理、药品管理、设备管理、…...

IDEA使用maven打包Java项目,跳过test的3种方法

文章目录第一种&#xff1a;命令行第二种&#xff1a;pom.xml设置第三种&#xff1a;IDEA工具操作第一种&#xff1a;命令行 命令行的方式&#xff0c;在哪输入命令都行。 mvn install -Dmaven.test.skiptrue第二种&#xff1a;pom.xml设置 修改pom.xml文件 <build>&…...

Anthropic 又双叒翻车了:Claude Code源代码打包失误,这已经是第几次了?

今天&#xff08;2026-03-31&#xff09;上午&#xff0c;Anthropic的Claude Code CLI又出大糗了。 安全研究员 Chaofan Shou发现&#xff1a; 他们的 npm 包里多塞了一个 60MB 的 cli.js.map 文件。 结果呢&#xff1f;完整源代码直接公开——1900多个 TypeScript 文件&#x…...

小型物联网系统——家居网关设计(C语言实现)

一、系统概述 家居网关是小型物联网系统的核心枢纽&#xff0c;负责多协议设备接入、数据汇聚转发、本地/远程控制三大核心功能。本设计基于STM32F103C8T6主控&#xff0c;集成Zigbee&#xff08;传感器接入&#xff09;、Wi-Fi&#xff08;云端通信&#xff09;、GPIO&#xf…...

Autovisor:5分钟实现智慧树课程自动化学习的智能助手

Autovisor&#xff1a;5分钟实现智慧树课程自动化学习的智能助手 【免费下载链接】Autovisor 2024知道智慧树刷课脚本 基于Python Playwright的自动化程序 [有免安装发行版] 项目地址: https://gitcode.com/gh_mirrors/au/Autovisor Autovisor是一款专为智慧树在线课程平…...

手把手调试:从V8引擎的ArrayBuffer到WebAssembly,一步步拆解Chrome CVE-2020-6507漏洞利用链

深入解析Chrome V8引擎漏洞利用&#xff1a;从ArrayBuffer到WebAssembly的内存操控实战 浏览器安全研究领域近年来持续升温&#xff0c;其中V8引擎作为Chrome和Node.js的核心组件&#xff0c;其安全性直接影响着数十亿用户。本文将带您深入探索一个典型V8漏洞&#xff08;CVE-2…...

实测,用 AI (Stitch + Codex) 给产品做个官网

作为一个写了 10 年代码的老程序员&#xff0c;这几年听得最多的一句话就是&#xff1a; “AI 已经可以写代码、做设计了。” 但说实话&#xff0c;我一直是半信半疑的状态&#xff08;停留在 Cursor 刚出来的那会儿&#xff09;。 于是&#xff0c;今天我决定不看别人说&…...

导出浏览器网络日志 har 后缀的日志是什么 怎么打开

导出浏览器网络日志 har 后缀的日志是什么 怎么打开 一、实机演示二、har 后缀的日志是什么 .har 后缀的日志文件是一种专门用于记录和分析网页网络活动的文件格式。 &#x1f4c4; HAR 文件是什么&#xff1f; HAR 的全称是 HTTP ARchive。它本质上是一个标准的 JSON 文件&…...

ExplorerBlurMica终极指南:让你的Windows文件资源管理器焕然一新

ExplorerBlurMica终极指南&#xff1a;让你的Windows文件资源管理器焕然一新 【免费下载链接】ExplorerBlurMica Add background Blur effect or Acrylic (Mica for win11) effect to explorer for win10 and win11 项目地址: https://gitcode.com/gh_mirrors/ex/ExplorerBlu…...

弧形导轨精度等级适配策略

弧形导轨是用于实现曲线运动的线性导向装置&#xff0c;广泛应用于自动化设备、机器人、医疗机械等领域。弧形导轨作为机械传动中的核心部件&#xff0c;其精度等级直接影响设备性能与稳定性。从精密加工到重型机械&#xff0c;不同场景对导轨的制造精度、运行精度及耐磨性要求…...

如何用Marzipano构建高性能360度全景图应用?

如何用Marzipano构建高性能360度全景图应用&#xff1f; 【免费下载链接】marzipano A 360 media viewer for the modern web. 项目地址: https://gitcode.com/gh_mirrors/ma/marzipano Marzipano是一个由Google开发的现代Web 360度媒体查看器&#xff0c;专为构建沉浸式…...