R语言读取单细胞转录组基因表达矩阵loom文件

以GSE160756数据集为例,https://www.ncbi.nlm.nih.gov/geo/query/acc.cgi?acc=GSE160756

下载上传服务器,解压缩为loom文件后,先尝试用python来打开。

import loompy

import numpy as np

with loompy.connect("GSM4878538_umi_hNP_1.loom") as ds:

print(ds.shape) # 输出矩阵维度

print(ds.row_attrs"Gene":10) # 输出前10个基因名

print(ds.col_attrs"CellID":5) # 输出前5个细胞ID

出现报错:

with loompy.connect("GSM4878538_umi_hNP_1.loom") as ds:

File "/usr/local/lib/python3.9/site-packages/loompy/loompy.py", line 1634, in connect

return LoomConnection(filename, mode, validate=validate)

File "/usr/local/lib/python3.9/site-packages/loompy/loompy.py", line 86, in init

raise ValueError("\n".join(lv.errors) + f"\n{filename} does not appear to be a valid Loom file according to Loom spec version '{lv.version}'")

ValueError: Row attribute 'gene_names' dtype object is not allowed

Column attribute 'cell_names' dtype object is not allowed

For help, see http://linnarssonlab.org/loompy/format/

GSM4878538_umi_hNP_1.loom does not appear to be a valid Loom file according to Loom spec version '0.0.0'

不知道为啥在python打不开。

R:

安装相关R包:

BiocManager::install("LoomExperiment")

remotes::install_github("aertslab/SCopeLoomR")

最终R运行:

library(hdf5r)

library(loomR)

library(LoomExperiment)

library(SCopeLoomR)

conn <- connect("GSM4878538_umi_hNP_1.loom")

再查看conn:

> conn

Class: loom

Filename: /xxx/GSM4878538_umi_hNP_1.loom

Access type: H5F_ACC_RDONLY

Attributes: version, chunks

Listing:

name obj_type dataset.dims dataset.type_class

col_attrs H5I_GROUP <NA> <NA>

col_graphs H5I_GROUP <NA> <NA>

layers H5I_GROUP <NA> <NA>

matrix H5I_DATASET 12385 x 26418 H5T_FLOAT

row_attrs H5I_GROUP <NA> <NA>

row_graphs H5I_GROUP <NA> <NA>

读取出矩阵:

> GCMat <- as.data.frame(conn\["matrix"],)

> GCMat1:4,1:4

V1 V2 V3 V4

1 0 0 0 0

2 0 0 0 0

3 0 0 0 0

4 0 0 0 0

> colnames(GCMat) <- conn\["row_attrs/gene_names"]\[\]

> rownames(GCMat) <- conn\["col_attrs/cell_names"]\[\]

> GCMat1:4,1:5

AL627309.1 AL627309.6 AL627309.5 AL627309.4

hNP_1_AAACCCACAAAGACTA-1-1 0 0 0 0

hNP_1_AAACCCACACTTCTCG-1-1 0 0 0 0

hNP_1_AAACCCACAGCGTATT-1-1 0 0 0 0

hNP_1_AAACCCACATCTGGGC-1-1 0 0 0 0

FO538757.1

hNP_1_AAACCCACAAAGACTA-1-1 0

hNP_1_AAACCCACACTTCTCG-1-1 0

hNP_1_AAACCCACAGCGTATT-1-1 0

hNP_1_AAACCCACATCTGGGC-1-1 0

注意要转置:

> GCMat <- t(GCMat)

转换成稀疏矩阵:

> GCMat <- as(GCMat,"dgCMatrix")

> GCMat1:4,1:4

4 x 4 sparse Matrix of class "dgCMatrix"

hNP_1_AAACCCACAAAGACTA-1-1 hNP_1_AAACCCACACTTCTCG-1-1

AL627309.1 . .

AL627309.6 . .

AL627309.5 . .

AL627309.4 . .

替换细胞名前面的编号,以方便管理:

AllCells <- colnames(GCMat)

NewCells <- c()

for(i in AllCells)

{

TCell <- gsub("hNP_1zhong","hNP-3",i)

NewCells <- c(NewCells,TCell)

}

colnames(GCMat) <- NewCells

相关推荐
承渊政道1 分钟前
星空组网+Python实战:在另一台电脑上查看CSV报表
运维·开发语言·python·csv·星空组网
Liquad Li2 小时前
Salesforce 主流认证方式、流程、适用场景
开发语言·salesforce
LOVE️YOU5 小时前
Python 中 Tuple 为什么有时可 Hash,有时不可 Hash?
开发语言·python·哈希算法
李永奉5 小时前
C语言-指针函数与函数指针及回调函数的使用
c语言·开发语言
小oo呆5 小时前
【学习心得】迭代器和可迭代对象
开发语言·python
AC赳赳老秦5 小时前
采集行为合规自检:OpenClaw 自动校验 robots 协议与采集频率,规避违规采集风险
java·开发语言·c++·python·php·deepseek·openclaw
钱栈up5 小时前
mvn compile 卡死在 javac 阶段:一次类型不匹配的排查与修复
java·开发语言
迅猛龙办公室5 小时前
Python输出当前计算机的系统日期和时间
开发语言·前端·python
杨丰玮4186 小时前
C语言基础知识(一)————各类符号的含义与输入输出库(stdio)
c语言·开发语言
程序猿编码6 小时前
工业视觉多任务方案:可编程梯度信息视觉框架,训练评估 + C++ 部署完整实战
开发语言·c++·视觉·推理引擎