DEapp(差异表达分析)本地版——自由飞翔
前面两期我们分别介绍了DEapp的理论(零代码差异表达分析, DESeq,limma,edgeR一网打尽)和实践(零代码差异表达分析——手把手带你GEO实战)。想必大家已经对DEapp有所了解了。我前面介绍过DEapp是一个做差异表达分析的网络工具,其实它是用R shiny写的一个网络工具。关于shiny的介绍可以参考我前面一篇文章。
网络应用实际上有一些局限性
- 这个网站搞不好那天就不存在了
- 服务器搞不好哪天就负载过重down掉了
- 用的人多了,你的任务还要排队,什么时候排得上谁也说不准
- 上传文件有大小限制
- 数据安全性谁也不能保证
那么问题来了,我们总不能因噎废食吧!这么好的工具,就这么眼睁睁看它从指缝中溜走,还说再见?别急,这个工具有本地版。直接从github可以下载源代码https://github.com/yan-cri/DEApp
下载到本地的文件叫DEApp-master.zip,解压,之后你就会看到,我们在shiny一文中讲到的server.R和ui.R。还有demo data。
先别急着运行,这个app背后依赖好几个R包。shiny是肯定需要装的,另外我们提到这个app中提供三个做差异表达的算法DESeq,limma,edgeR,因此这三个包也是需要装的。
具体这个app需要什么包,其实打开server.R和ui.R看一下就一目了然了
那么如何来安装这些包呢?你会发现下载的文件夹里面有一个install文件夹,里面有一个R文件prep.R,运行里面的R代码就可以了。或者直接将这段代码贴到你的R里面运行。小编用的R是3.5.1,测试没有问题。
packages <- c("shinydashboard", "DT","shiny", "ggplot2", "gplots")
if (length(setdiff(packages, rownames(installed.packages()))) > 0) {
install.packages(setdiff(packages, rownames(installed.packages())))
}
BCpackages <- c("edgeR", "DESeq2", "limma")
if (length(setdiff(BCpackages, rownames(installed.packages()))) > 0) {
source("http://bioconductor.org/biocLite.R")
biocLite(setdiff(BCpackages, rownames(installed.packages())))
}
sapply(c(packages, BCpackages), require, character.only=T)
print(sapply(c(packages, BCpackages), require, character.only=T))
接下来就可以来运行了,将你的工作路径修改到DEApp-master中
修改工作路径的方法是,R控制台->文件->修改工作路径
Rstudio中修改工作路径
然后运行
library(shiny)
runApp()
你会发现DEapp跃然纸上,还是熟悉的配方,还是熟悉的味道。
只是它现在运行在你的电脑上,看到网址了吗?
接下来你就可以去测试一下他的性能,是不是一如往常。
在DEApp-master的data中有demo数据,下面的操作前面都讲过了,大家可以enjoy youself了。
如果你懂R,其实DESeq,limma,edgeR这三个包做差异表达分析的代码都在server.R中可以找到。是不是发现了新大陆!
- django:DateTimeField如何自动设置为当前时间并且能被修改 ——django日期时间字段的使用
- logback + slf4j + jboss + spring mvc
- Oracle XE http端口8080的修改
- django之对FileField字段的upload_to的设定
- JAVA_HOME环境变量失效的解决办法
- JBOSS EAP 6.0+ Standalone模式安装成Windows服务
- Django 设置media static
- Django---Ajax
- 利用Spring MVC搭建REST Service
- ehcache2.8.3入门示例:hello world
- day4、Linux基础题目
- 命令行执行Django脚本的方法
- Spring Security笔记:Hello World
- day5、文件乱码怎么解决
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Excelize 2.3.0 发布, Go 语言 Excel 基础库
- 网站渗透攻防Web篇之SQL注入攻击高级篇
- 网站渗透攻防Web篇之SQL注入攻击中级篇
- Go 语言学习之 method
- 网站渗透攻防Web篇之SQL注入攻击初级篇
- VBA解析复合文档05——读取数据流
- C++核心准则E.25:如果不能抛出异常,模仿RAII方式进行资源管理
- VBA解析复合文档06——改写数据流
- PyTorch5:torch.nn总览&torch.nn.Module
- 玩转Spring中强大的spel表达式!
- C++核心准则E.18:最小限度显式使用try/catch
- C++核心准则E.19:如果无法选择适当的资源句柄,使用final_action表现清除处理
- VBA解析复合文档04——解析目录信息
- 【程序源代码】基于NetCore2.2/3.1功能强大的Cms建站系统
- Linux如何屏蔽国外IP-宝塔如何屏蔽国外IP-appnode如何屏蔽国外IP