###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]))  #获取表达矩阵基因长度

对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的方法相关推荐

  1. [css] 写出你知道的CSS水平和垂直居中的方法

    [css] 写出你知道的CSS水平和垂直居中的方法 flex布局水平垂直居中:<!-- html --> <div class="outer"><di ...

  2. python学到什么程度可以写爬虫-刚开始学习 Python 到可以写出一个爬虫大约需要多长时间...

    学习 Python 的三种境界 前言王国维在<人间词话>中将读书分为了三种境界:"古今之成大事业.大学问者,必经过三种之境界:"昨夜西风凋碧树,独上高楼,望尽天涯路'. ...

  3. 学python需要多久-刚开始学习 Python 到可以写出一个爬虫大约需要多长时间

    学习 Python 的三种境界 前言王国维在<人间词话>中将读书分为了三种境界:"古今之成大事业.大学问者,必经过三种之境界:"昨夜西风凋碧树,独上高楼,望尽天涯路'. ...

  4. python60行绘图程序_不敢相信,60行python代码就写出了贪吃蛇游戏

    通过写游戏玩编程是一个非常有趣的事,网上用Python写贪吃蛇的代码很多,大部分都用类来写的,比较复杂.今天看到一个非常简洁的贪吃蛇游戏代码,只有60几行,非常适合小白上手,而且思路极其清晰,赶紧分享 ...

  5. 软件测试|Python帮手残党写出漂亮签名

    前言 我们的工作是每天敲键盘,基本上很少用到手来写字了,一旦提起笔,写出来的字往往也不堪入目,那万一到了我们需要签字的时候,怎么办,手写的字简直难看,老话说得好,字如其人?最起码也得把自己的名字写漂亮 ...

  6. 贪吃蛇python撞墙不死_不敢相信,60行python代码就写出了贪吃蛇游戏

    通过写游戏玩编程是一个非常有趣的事,网上用Python写贪吃蛇的代码很多,大部分都用类来写的,比较复杂.今天看到一个非常简洁的贪吃蛇游戏代码,只有60几行,非常适合小白上手,而且思路极其清晰,赶紧分享 ...

  7. RNA-seq流程学习笔记(14)-在windows10平台上利用R包合并表达矩阵、设置实验分组信息、列名及数据的导入导出

    参考文章: RNA-seq(6): reads计数,合并矩阵并进行注释 进入R学习和相关操作后,各种折腾已经快2周了,看了几个网站的教程,借了几本教科书,发现都是零零碎碎的知识.索性就按照之前的方法, ...

  8. python用while写出金字塔_使用while循环的星金字塔python嵌套while循环

    所以,让我们用算术的方法来处理这个问题.第一排需要一颗星,第二排需要两颗星,第三排需要三颗星等 换句话说,星的数目等于当前行索引(假设您的索引从1开始).Python的string format方法允 ...

  9. 智能客服系列3 seq2seq+attention【Python十分钟写出聊天机器人】基于Keras实现seq2seq模型

    开篇导读 首先复习下前面聊天机器人系列: <一>聊天机器人/翻译系统系列一梳理了聊天机器人网络设计模型原理 (理论篇-图文解锁seq2seq+attention模型原理) <二> ...

最新文章

  1. linux环境下中文乱码问题
  2. 2020年国家电网计算机类考纲,终于发布!详解2020届国家电网考试大纲,带你读懂考纲变化!...
  3. ML.NET 示例:图像分类模型训练-首选API(基于原生TensorFlow迁移学习)
  4. 定了!2020年,6种将死的编程语言!
  5. Linux下的CUDA多版本管理
  6. js转义字符 php 反转义6,JS实现HTML标签转义及反转义
  7. 问题:get_params() missing 1 required positional argument: 'self' 之解决
  8. mysql6位数货币大写,生成数字+英文字母大小写彩虹字符集(6位),共有62^6种可能_MySQL...
  9. android学习笔记---53_采用网页设计软件界面,以及使用android系统内置的浏览器,利用js调用java方法
  10. python内置函数__init__及__str__的区别
  11. 对yolo与fasterrcnn anchors的理解
  12. re.sub对多处字符串进行替换
  13. 路由器截获微信消息_猫(Modem)和路由器有什么区别?
  14. 74ls系列芯片的分类
  15. weka mac安装
  16. 打造知识服务市场 知乎的变现之路
  17. cesium——鼠标拾取坐标并转换为经纬高
  18. JAVA HTML 转 PDF
  19. 马克思主义基本原理【0163】
  20. VS2017 C++解决方案和项目目录文件夹

热门文章

  1. 2022年最新Python大数据之Python基础【一】介绍
  2. Punte 多功能免费WordPress主题
  3. VS2017 报表控件找不到怎么办?
  4. sz和rz命令:提示*B00000000000000
  5. 【Gazebo入门教程】第二讲 模型库导入与可视化机器人建模(模型编辑器)
  6. tensorflow with求导_TensorFlow - 求导
  7. 第11期 《大牛养成记》2017年1月刊
  8. springboot高级篇及springboot1.5转springboot2.17所遇到的坑
  9. MDSF:面向语言编程LOP(Language Oriented Programming)方法介绍
  10. 基于TADF分子Br-DBPzDCN,DMAC-Ph-DBPzDCN,DPA-Ph-DBPzDCN的快速响应室温平面型氨气敏传感器