美文网首页单细胞测序
python和R写出表达矩阵为稀疏矩阵matrix.mtx.gz

python和R写出表达矩阵为稀疏矩阵matrix.mtx.gz

作者: 倪桦 | 来源:发表于2022-03-16 21:05 被阅读0次

python部分

加载读取稀疏矩阵的mmread和构建数据框的pandas

from scipy.io import mmread
import pandas as pd
import numpy as np

读取10X单细胞矩阵文件: matrix.mtx.gz(coo_matrix格式的sparse 矩阵) 、barcodes.tsv.gz (构成单细胞密集表达矩阵的列名,对应测序的细胞样本)、features.tsv.gz (构成单细胞密集表达矩阵的行名,是细胞的表达基因ID或symbolName)

_index = pd.read_csv("./features.tsv.gz", index_col=0,sep = '\t',header=None)
_index.index.name =None #把索引列的列名去掉
_col   = pd.read_csv("./barcodes.tsv.gz", index_col=0,sep = '\t',header=None)
_col.index.name =None #把列名向量的名去掉
_data  = mmread("./matrix.mtx.gz").todense()

将稀疏矩阵转换成DataFrame用pandas处理:

rna_count = pd.DataFrame(data=_data,index = _index.index,columns=_col.index)
print(rna_count .iloc[0:3,0:2])
print("gene_ID_len : "+str(rna_count .shape[0]))  #获取表达矩阵基因长度
image.png

对pd类型的表达矩阵简单标准化处理:

rna_count  = ( rna_count +1 ).applymap(np.log2)

对处理后的DataFrame保存出同cellranger格式的sparse matrix等相关文件

import os
import shutil 
import gzip
import scipy
import time
fmt='%Y-%m-%d %a %H:%M:%S'
Date=time.strftime(fmt,time.localtime(time.time()))
outdir = ".Matrix_reAnno"
os.makedirs(outdir, exist_ok=True)
##save matrix.mtx.gz
reAnno_count_sparse_mtx = scipy.sparse.coo_matrix(rna_countrna_count_combine.values)
scipy.io.mmwrite(os.path.join(outdir,'matrix.mtx'),
                 reAnno_count_sparse_mtx,
                 comment='This counts is regenerate and remapped symbol by zhuzhiyong \n Generate DateTime::'+str(Date)
                )
with open(os.path.join(outdir,'matrix.mtx'),'rb') as mtx_in:
        with gzip.open(os.path.join(outdir,'matrix.mtx') + '.gz','wb') as mtx_gz: #创建一个读写文件'matrix.mtx.gz',用以将matrix.mtx拷贝过去
            shutil.copyfileobj(mtx_in, mtx_gz)
os.remove(os.path.join(outdir,'matrix.mtx'))
##save barcodes.tsv.gz
barcodesFile = pd.DataFrame(rna_countrna_count_combine.columns)
barcodesFile.to_csv(os.path.join(outdir,"barcodes.tsv.gz"),sep='\t',header =False,index=False)
##save features.tsv.gz
featuresFile = pd.DataFrame(rna_countrna_count_combine.index)
featuresFile.to_csv(os.path.join(outdir,"features.tsv.gz"),sep='\t',header =False,index=False)

R部分

写出expr counts 为matrix.mtx.gz

library(Matrix)
sparse.gbm <- Matrix(scRNA@assays$RNA@counts, sparse = T )
write(x = sparse.gbm@Dimnames[[1]], file = "features.tsv")
write.table(scRAN@meta.data, file = 'scRNA_ref_meta.tsv', sep = '\t', quote = FALSE)
writeMM(obj = sparse.gbm, file="matrix.mtx")
system("gzip matrix.mtx")  #创建压缩文件并删除原文件 matrix.mtx.gz
scales::number_bytes(file.size("matrix.mtx.gz"))

相关文章

  • python和R写出表达矩阵为稀疏矩阵matrix.mtx.gz

    python部分 加载读取稀疏矩阵的mmread和构建数据框的pandas 读取10X单细胞矩阵文件: matri...

  • 稀疏矩阵及其压缩格式

    一般情况下,稀疏矩阵指的是元素大部分是0的矩阵(有些资料定义非零元素不超过5%的矩阵,为稀疏矩阵), 矩阵的稀疏性...

  • keras使用稀疏输入进行训练

    稀疏矩阵 稀疏矩阵是指矩阵中数值为0的元素数目远远多于非0元素的数目,在实际中遇到的大矩阵基本都是稀疏的。如果使用...

  • 构建邻接矩阵

    构建邻接矩阵 net = spconvert(linklist);%把外部数据转换为稀疏矩阵 稀疏矩阵 对于矩阵 ...

  • 由行列构成的矩阵转化为矩阵的形式

    行列构成的矩阵(稀疏矩阵) 即是矩阵由3列构成,矩阵的行号,矩阵的列号,矩阵的值,值为0的部分省略。比如:下面矩阵...

  • 机器学习中的稀疏矩阵

    什么是稀疏矩阵? 大多数元素都是0的矩阵称为稀疏矩阵,否则称为稠密矩阵。规模巨大的稀疏矩阵在应用机器学习中很常见,...

  • 稀疏矩阵与稠密矩阵以及 LibRec 中的实现

    稀疏矩阵 在矩阵中,若数值为0的元素数目远远多于非0元素的数目时,则称该矩阵为稀疏矩阵。与之相反,若非0元素数目占...

  • MATLAB稀疏矩阵

    7稀疏矩阵 稀疏矩阵是一种特殊类型的矩阵,即矩阵中包括较多的零元素。对于稀疏矩阵的这种特性,在MATLAB中可以只...

  • 线性代数 01

    矩阵的初等变换初等变换 秩为r的矩阵初等行变换 逆矩阵求逆矩阵 分块矩阵求逆矩阵分块矩阵 线性相关性线性相关性 R...

  • 小白的机器学习实战——向量,矩阵和数组

    创建矩阵 向量 计算平均值,方差和标准偏差 重塑矩阵 矩阵加减法 对矩阵元素进行操作 创建稀疏矩阵 描述一个矩阵 ...

网友评论

    本文标题:python和R写出表达矩阵为稀疏矩阵matrix.mtx.gz

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