做单细胞转录组数据分析的小伙伴们想必接触过Chan Zuckerberg基金会的CELLxGENE 在线平台。Facebook(现更名为Meta Platforms, Inc.)的创始人马克·扎克伯格(Mark Zuckerberg)并没有直接参与任何公开的单细胞项目,但是扎克伯格和他的妻子普莉希拉·陈(Priscilla Chan)通过Chan Zuckerberg Initiative(CZI)支持了多个科学和医疗项目,点赞一下!
CELLxGENE 在线平台上面的单细胞转录组数据集整理的非常规范,比如:https://cellxgene.cziscience.com/collections/3f7c572c-cd73-4b51-a313-207c7f20f188
This atlas is an integration of 13 single-cell studies of cells obtained from 8 tumor types and normal tissues, including breast, colorectal, ovary, lung, liver, skin, uvea and PBMC. Four types of samples compose this dataset (normal, tumor, lymph node, and blood) obtained from 3 different types of single-cell technologies (10x, Smart-seq2, and inDrop). About 400 thousand cells were carefully integrated and most cell types annotated in detail, specially myeloid-derived cells and states.
可以看到CELLxGENE 在线平台的每个项目的网页上面都提供了两种文件下载方式,.h5ad
和 .rds
是两种不同的文件格式,它们被用于存储单细胞RNA测序数据,并且与特定的生物信息学软件包兼容。以下是这两种文件格式的对比:
文件格式:
.h5ad:这是一种基于HDF5(Hierarchical Data Format version 5)的文件格式,由AnnData库使用。HDF5是一种通用的数据模型、库和文件格式,用于存储和管理大量数据。 .rds:这是一种R数据存储格式,通常用于保存R语言中的任意对象。 .rds
文件可以用R的saveRDS
和readRDS
函数创建和读取。
.h5ad:与AnnData库兼容,AnnData是一个用于处理单细胞RNA测序数据的Python库。 .rds:与Seurat库兼容,Seurat是一个专门用于R语言中的单细胞基因组学数据分析的包。
.h5ad:存储了原始数据矩阵、变量特征(如基因表达)、观测特征(如样本信息)以及AnnData对象的其他组件。 .rds:存储了Seurat对象,该对象包含了数据矩阵、辅助数据(如特征基因、缩放因子等)和图形结构。
但是,当我们选择基于Seurat的V5的rds文件的时候,赫然弹出来了一个警告信息:
也就是说,扎克伯格背刺基于R语言的Seurat单细胞生态,全面投入了Python编程语言的单细胞数据处理生态。这样就让我很难过,毕竟我这十多年都是坚定不移的R编程语言教学者啊。当然了,如果仅仅是把.h5ad
格式文件转为r编程环境里面的信息,其实难不倒我。而且确实是很多人都会面临这样的困难,因为不仅仅是扎克伯格,越来越多人选择了Python编程语言的单细胞数据处理生态,因为在R编程语言里面的确实是太耗费内存了:
如果你确实是只有.h5ad
格式文件
就需要在自己的电脑里面安装Python编程语言环境,然后在里面安装好相关的单细胞模块,就可以运行下面的Python代码:
#先导出python中的annadata主要数据
#python中导出数据
import scipy.sparse as sparse
import scipy.io as sio
import scipy.stats as stats
import numpy as np
import scanpy as sc
import os
all_data=sc.read_h5ad("./integrated_lymphoid_organ_scrna.h5ad")
cellinfo=all_data.obs
geneinfo=all_data.var
mtx=all_data.X.T
cellinfo.to_csv("cellinfo.csv")
geneinfo.to_csv("geneinfo.csv")
sio.mmwrite("sparse_matrix.mtx",mtx)
上面的Python代码可以把.h5ad
格式文件里面的单细胞表达量矩阵,还有单细胞的名字,矩阵里面的基因名字独立的输出成为3个文件。接下来就可以去R编程语言里面读取然后存储为 .rds
文件啦:
library(data.table)
library(Matrix)
# https://hbctraining.github.io/scRNA-seq/lessons/readMM_loadData.html
#
mtx=readMM( "inputs/sparse_matrix.mtx.gz" )
cl=fread( "inputs/cellinfo.csv.gz" ,
header = T,data.table = F )
rl=fread( "inputs/geneinfo.csv.gz" ,
header = T,data.table = F )
rownames(mtx)=rl$V1
colnames(mtx)=cl$index #paste0('c',cl$V2)
meta=cl
rownames(meta)=cl$index
identical(rownames(meta),colnames(mtx))
library(Seurat)
sce.all=CreateSeuratObject(counts = mtx ,
meta.data = meta,
min.cells = 5,
min.features = 300 )
有了上面的 sce.all 这个Seurat对象,后面的降维聚类分群等等单细胞转录组常规的数据分析都是可以手到擒来。我的苹果64G电脑就可以处理60万左右的细胞数量的单细胞转录组项目的表达量矩阵,就是读取那个sparse_matrix.mtx.gz实在是非常耗费时间!
关于这个CELLxGENE 在线平台
它提供了一个用户友好的界面,用于探索和分析单细胞RNA测序数据。这个平台是由Chan Zuckerberg Initiative(CZI)资助的一个项目,旨在促进单细胞基因组学数据的共享和开放访问。以下是CELLxGENE平台的一些主要特点:
数据集成:
CELLxGENE集成了多个公共单细胞数据集,允许用户在一个统一的平台上访问和比较来自不同研究的数据。
交互式探索:
提供了一个交互式的单细胞浏览器,用户可以通过这个浏览器探索基因表达模式、细胞类型注释和细胞状态。
高级分析工具:
平台提供了一系列的分析工具,包括数据可视化、聚类分析、差异表达分析和轨迹推断等。
基因和细胞类型搜索:
用户可以搜索特定的基因或细胞类型,并查看它们在不同数据集中的表达和分布情况。
数据下载:
CELLxGENE允许用户下载原始数据和分析结果,以便进行进一步的自定义分析。
协作功能:
平台支持用户之间的协作,可以共享注释、视图和分析结果。
教育和培训资源:
提供了教育资源和培训材料,帮助新用户学习如何使用平台和理解单细胞数据分析。
开放访问和共享:
强调数据的开放访问和共享,以促进科学发现和创新。
社区参与:
CELLxGENE鼓励社区参与,用户可以贡献自己的数据集,丰富平台的内容。
持续更新:
平台会定期更新,以包含最新的单细胞研究数据和技术进展。
CELLxGENE平台的目标是成为一个全面的资源,为研究人员提供一个强大的工具,以探索和理解单细胞基因组学的复杂性。通过提供易于访问的数据和分析工具,CELLxGENE有助于推动单细胞生物学领域的发展。
关于Python和R语言的单细胞生态
在单细胞基因组学领域,Python和R语言都是流行的数据分析工具,它们各自有着独特的生态系统和优势。以下是Python和R语言在单细胞数据分析中的对比,以及它们的生态系统介绍:
Python单细胞生态:
灵活性和通用性:
Python是一种通用编程语言,适用于各种类型的数据分析和软件开发。
丰富的库和框架:
Python拥有丰富的科学计算库,如NumPy、Pandas、SciPy,以及专门针对单细胞分析的库,如Scanpy、AnnoTree、Scran等。
数据处理能力:
Python在数据处理和清洗方面非常强大,适合处理大规模和复杂的单细胞数据集。
可视化工具:
Python的Matplotlib、Seaborn和Plotly等库提供了强大的数据可视化功能。
机器学习集成:
Python的Scikit-learn、TensorFlow和PyTorch等库使得机器学习集成到单细胞分析中变得容易。
交互式环境:
Jupyter Notebook和JupyterLab提供了交互式编程环境,方便数据分析和探索。
社区和资源:
Python拥有庞大的开发者社区,提供了大量的教程、文档和在线课程。
R语言单细胞生态:
统计分析:
R语言以其强大的统计分析能力而闻名,适合进行复杂的统计测试和模型构建。
生物信息学包:
R拥有许多专门针对生物信息学和单细胞分析的包,如Seurat、scater、scran、 monocle等。
数据可视化:
R的ggplot2、lattice和pheatmap等包提供了高级的数据可视化工具。
集成开发环境:
RStudio提供了一个集成开发环境,支持代码编写、数据分析和报告生成。
标准化流程:
R语言中的许多包提供了标准化的数据分析流程,适合重复性和可复制性研究。
社区和会议:
R语言有一个活跃的社区,定期举办会议和研讨会,如useR!会议。
教学资源:
R语言有许多在线课程、书籍和教程,适合不同水平的用户学习。
对比:
灵活性:Python在灵活性和通用性方面更胜一筹,而R语言在统计分析方面更为专业。 数据处理:Python在处理大规模数据集方面更强大,R语言则在统计分析和图形绘制方面更为出色。 学习曲线:R语言对于统计学家和生物信息学家来说可能更容易上手,Python则对于程序员和数据科学家更为友好。 社区和资源:两者都有庞大的社区和丰富的资源,但Python在数据科学和机器学习领域的资源可能更为丰富。 集成开发环境:RStudio为R语言提供了一个强大的IDE,而Python用户可能更倾向于使用Jupyter Notebook。
总的来说,Python和R语言在单细胞数据分析中都有各自的优势和特点,选择哪个工具取决于个人偏好、项目需求和团队背景。许多研究者甚至会结合使用这两种语言,以利用它们各自的优势。