【代码更新】单细胞分析实录(21): 非负矩阵分解(NMF)的R代码实现,只需两步,啥图都有
1. 起因
之前的代码(单细胞分析实录(17): 非负矩阵分解(NMF)代码演示)没有涉及到python语法,只有4个python命令行,就跟Linux下面的ls grep一样的。然鹅,有几个小伙伴不会命令行,所以我决定再改写一下,把命令行都放到R下面运行。
2. 尝试
2.1 一开始,我的想法是教大家在R里面调用python,需要提前下载好anaconda和一些python包
然而想了想在Windows上安装python包可能对大家不是很友好,有些包很难装,我之前也弄了很久。考虑到这次更新是针对桌面版Rstudio用户,故没有采用。
2.2 最终,我采用的方案是,使用Rstudio Server,也就是网页版Rstudio
这样做有几个好处:
- 直接和云服务器连接,服务器下载python包和R包都很容易(云服务器刚买,下血本)
- 我提前配置好运行环境,用户只需上传数据,分析数据,下载数据即可。
代码方面也更加简化:
- 我尽量减少了人工处理的时间,主要分析代码只有两行
如果你之前在我这儿拿过代码,可以直接找我要更新的代码。此外,如果因为之前的代码涉及命令行,你操作起来有困难,可以找我开Rstudio Server的账户 (高端玩家就别了,服务器配置比较低,就够几个人用的那种)。
3. 注意
- 我会提前安装可能用到的R包,所以不用重复安装,直接library就可以
- 请大家及时下载结果文件,以免丢失;也请大家在做完分析后,删除表达数据,服务器存储空间不是很大
- 每个账号只保留半个月时间,若想再次使用,可以联系我再开一个账号
- 有任何问题可以微信或者邮箱问我
接下来简单介绍一下,使用方法
登录
打开我给你的链接,输入用户名和密码即可登录

之后就可以看见Rstudio的界面了

然后确保你的家目录下面有图中框出来的几个文件,并点击进入count_data文件夹
上传数据
点击upload上传数据

运行代码
主要是3.R中的step1和step2两个函数

library(reticulate)
use_condaenv(condaenv = "cnmf_env", required = T,conda = "/home/hsy/miniconda3/bin/conda")
py_config() #如果显示cnmf_env环境里面的python就OK
source("1.R")
step1(dir_input = "count_data",dir_output = "res1",k=3:5,iteration = 50) #这里为了演示方便,取值都比较小
source("2.R")
step2(dir_input = "res1",dir_output = "res2",dir_count = "count_data",usage_filter = 0.03,top_gene = 30,cor_min = 0,cor_max = 0.6)
查看结果
step2之后,会在res2文件夹中生成结果文件
sampleID_program.usage.norm.txt和sampleID_program.Zscore.txt
是NMF分解表达矩阵得到的两个矩阵
program_topngene.txt
这是所有program的前几十个基因,一般会放到文件附表
program_pearson_cor.complete.heatmap.pdf
program之间的相关性热图
cor_heatmap_data.txt
用来画上图的数据
program_topngene_enrichment.xlsx
program_topngene_enrichment_order.csv
这两个都是对program前几十个基因的富集分析结果,这两个文件可以用来辅助我们理解program,其中第二个文件和相关性热图的顺序一致,看起来更方便
sampleID_program_gene.heatmap.pdf
用来验证在这个样本中,program找得对不对,其实就是看program的表达,一般看program的前几十个基因
sampleID_data_heatmap.txt
用来画上面那个热图的数据
program之间的相关性热图

某个样本中program的表达

下载结果

选中你想导出的文件,点击more,再点击Export就可以了
至此,公众号仅有的两篇付费教程都已更新完毕~
因水平有限,有错误的地方,欢迎批评指正!
【代码更新】单细胞分析实录(21): 非负矩阵分解(NMF)的R代码实现,只需两步,啥图都有的更多相关文章
- 单细胞分析实录(17): 非负矩阵分解(NMF)代码演示
本次演示使用的数据来自2017年发表于Cell的头颈鳞癌单细胞文章:Single-Cell Transcriptomic Analysis of Primary and Metastatic Tumo ...
- 【代码更新】单细胞分析实录(20): 将多个样本的CNV定位到染色体臂,并画热图
之前写过三篇和CNV相关的帖子,如果你做肿瘤单细胞转录组,大概率看过: 单细胞分析实录(11): inferCNV的基本用法 单细胞分析实录(12): 如何推断肿瘤细胞 单细胞分析实录(13): in ...
- 非负矩阵分解NMF
http://blog.csdn.net/pipisorry/article/details/52098864 非负矩阵分解(NMF,Non-negative matrix factorization ...
- 文本主题模型之非负矩阵分解(NMF)
在文本主题模型之潜在语义索引(LSI)中,我们讲到LSI主题模型使用了奇异值分解,面临着高维度计算量太大的问题.这里我们就介绍另一种基于矩阵分解的主题模型:非负矩阵分解(NMF),它同样使用了矩阵分解 ...
- 漂浮广告代码兼容ie、firefox,多个漂浮不冲突,调用只需两行代码
原文:漂浮广告代码兼容ie.firefox,多个漂浮不冲突,调用只需两行代码 将广告内容放在div中,设置一个id,然后用下面方法调用var adcls=new AdMove("div的id ...
- 如何把C++的源代码改写成C代码?而C改C++只需一步!
★ 如何把C++的源代码改写成C代码? C++解释器比C语言解释器占用的存储空间要大,想要在某些特定场合兼容C++代码,同时为了节省有限的存储空间,降低成本,也为了提高效率,将用C++语言写的源程序用 ...
- 单细胞分析实录(5): Seurat标准流程
前面我们已经学习了单细胞转录组分析的:使用Cell Ranger得到表达矩阵和doublet检测,今天我们开始Seurat标准流程的学习.这一部分的内容,网上有很多帖子,基本上都是把Seurat官网P ...
- 单细胞分析实录(3): Cell Hashing数据拆分
在之前的文章里,我主要讲了如下两个内容:(1) 认识Cell Hashing:(2): 使用Cell Ranger得到表达矩阵.相信大家已经知道了cell hashing与普通10X转录组的差异,以及 ...
- 单细胞分析实录(2): 使用Cell Ranger得到表达矩阵
Cell Ranger是一个"傻瓜"软件,你只需提供原始的fastq文件,它就会返回feature-barcode表达矩阵.为啥不说是gene-cell,举个例子,cell has ...
随机推荐
- 最新seo优化技巧
国内的SEO也发展不少年份了.我是最早开始从事SEO的那一班人.看着这个行业从零开始发展,长大.成熟还谈不上.可以这样说吧,国内做这个行业的,高手并不多.实战的高手更是寥寥无几.当然这个是我个人的推断 ...
- 传说中 VUE 的“语法糖”到底是啥?
一.什么是语法糖? 语法糖也译为糖衣语法,是由英国计算机科学家彼得·约翰·兰达(Peter J. Landin)发明的一个术语.指的是计算机语言中添加的一种语法,在不影响功能的情况下,添加某种简单的语 ...
- localStorage util
// localStorage util var db ={ set : function(key, obj){ localStorage.setItem(key, JSON.stringify(ob ...
- [转载]Windows 2008多用户同时远程登陆配置方法
有些朋友需要在在使用Windows 2008远程登录功能时,进行多用户登录,那么就可以采用以下配置方法: 首先要启用远程桌面这一功能:右击"我的电脑"→ 属性 → 远程配置 → 远 ...
- 鸿蒙内核源码分析(重定位篇) | 与国际接轨的对外部发言人 | 百篇博客分析OpenHarmony源码 | v55.01
百篇博客系列篇.本篇为: v55.xx 鸿蒙内核源码分析(重定位篇) | 与国际接轨的对外部发言人 | 51.c.h.o 加载运行相关篇为: v51.xx 鸿蒙内核源码分析(ELF格式篇) | 应用程 ...
- Winform配置文件读写操作
前言 在项目当中为了增加软件的灵活性及可配置性,配置文件在程序当中起着不可替代的作用.下面介绍一下最近用的比较多的方式. config文件的操作 数据库连接字符串 1.获取连接字符串 public s ...
- 独家对话阿里云函数计算负责人不瞋:你所不知道的 Serverless
作者 | 杨丽 出品 | 雷锋网产业组 "Serverless 其实离我们并没有那么遥远". 如果你是一名互联网研发人员,那么极有可能了解并应用过 Serverless 这套技术体 ...
- Linux查找运行程序主目录
1.查看程序所在PID netstat -lntup 2.根据PID查找程序所在目录 ll /proc/PID/exe 3.查找程序配置路径 /proc/PID/exe -t
- MySQL中如何选择合适的备份策略和备份工具
数据库备份的重要性毋庸置疑,可以说,它是数据安全的最后一道防线.鉴于此,对于备份,我们通常会做以下要求: 多地部署 对于核心数据库,我们通常有两地三中心的部署要求.对于备份来说,也是如此. 一个备份 ...
- Java领域的表现层的三种技术--jsp、freemarker、velocity
10月份忙碌的参加秋招并获得了5个成都.上海.广州等不同地区的工作offer,最终选择了广州,11月底来到公司实习,很快,就跟进了公司的项目了,原本以为可以和宣讲会时报的志愿一样--Java开发,但是 ...