专栏名称: 生信媛
生信媛,从1人分享,到8人同行。坚持分享生信入门方法与课程,持续记录生信相关的分析pipeline, python和R在生物信息学中的利用。内容涵盖服务器使用、基因组转录组分析以及群体遗传。
目录
相关文章推荐
51好读  ›  专栏  ›  生信媛

如何0基础部署R的shiny app

生信媛  · 公众号  · 生物  · 2019-12-10 19:40

正文

请到「今天看啥」查看全文


Why we need visualization by web

目前的单细胞实验文章,大家都会习惯把自己的数据做成一个数据库的形式,方便读者进行检索,那么(零基础的)我们该如何做一个网站来展示我们的数据结果呢?

例如我知道身边的洲更同学(www.xuzhougeng.top)就做了两个工具网站,美观且实用,有兴趣的大家可以点进去一览究竟:

  1. BSA(http://xuzhougeng.top/BSA)

  2. RNA-seq(http://xuzhougeng.top/RNA-seq-downstream-analysis/)

Which tools to use

作为一个R语言的使用者,我很庆幸前人在此领域已经进行了极大的开拓,Rstudio的工作人员开发了shiny这个包来进行数据的交互可视化,并且我们可以将其部署到server上与读者进行分享

当然,本次课程的目的不是教你怎么用shiny写app,毕竟Rstudio上的教程已经写的很清楚了,并且Rstudio(https://shiny.rstudio.com/gallery/)官方就给出了很多的示例以及在showmeshiny(https://www.showmeshiny.com/)里也有很多包含了code的示例app

所以本次介绍的是(零基础的)我们使用shiny开发一个工具网页

What do you need to build a shiny web

a server or some money

事实上,用户可以在自己的PC上就可以完成一个shiny app的编写,但是问题就在于当你运行shiny以后,你打开浏览器是监听本地端口的,别人没有访问你电脑的权限,所以你是没有办法让别人看到你的数据或者使用你编写的工具的,在这种情况下,你可以拥有两个基本选项:

  1. 将你的shiny app以代码的形式分享给别人
  • 可以使用 runUrl , runGithub , runGist 等函数获取在线app
  • 优点:简单,只需要代码传输就可以了,例如GitHub
  • 缺点:需要别人会用R(如果有大的数据量的话,就会比较麻烦)
  • 将你的shiny app以网页的形式分享给别人
    • 有点:友好的交互形式,只要有网就可以查看数据或者使用工具
    • 缺点:你需要有一点基本的网页配置知识和一些硬件

    我们的选择是2,让别人无门槛的访问我们的shiny app

    那么,将你的shiny app以网页的形式分享给别人需要哪些硬件呢?

    • 一台联网的服务器
    • shiny app代码编写及测试的能力
    • 一个善于尝试及摸索的大脑

    以上三个条件的重要性依次递增

    By which way could we build a shiny web

    目前有三种方法可以到达我们的目的,依次为:

    1. 【可能是最简单的白嫖方法】使用shiny官方出版的shiny app托管服务即shinyapps.io(http://www.shinyapps.io/),无需你配置服务器以及设置参数,只需要点点鼠标,上传你的shiny app就可以啦,而且免费账户就有可能满足你的需求了(免费托管五个app aplications),白嫖万岁(再不行就花点钱,哪怕*呢)
    2. 【高阶用户的首选】使用RStudio Connect(https://www.rstudio.com/products/connect/),如果你是营利性的目的,并且数据不准备公开(密码登录授权等),那么RStudio Connect可能是你需要考虑使用的
    3. 【绝不认输的救赎之路】如果你想折腾,又有自己的服务器,那么使用shiny server去发布你的shiny app一定是不二之选

    Pipeline for publish a web on server

    我使用的为小型VPS,配置不高但是够用,同时拥有root权限

    首先是Download Shiny Server(https://rstudio.com/products/shiny/download-server/),不同的系统有不同的下载方式,我使用的是CentOS 7,大家根据官网教程操作就可以了:

    # 安装EPELyum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm# 安装Rsudo yum install R# 安装shinysudo su - -c "R -e \"install.packages('shiny', repos='https://cran.rstudio.com/')\""# 或者在Linux内进入R,手动安装shiny及其依赖包
    # 随后下载shiny server并安装wget https://download3.rstudio.org/centos6.3/x86_64/shiny-server-1.5.12.933-x86_64.rpmsudo yum install --nogpgcheck shiny-server-1.5.12.933-x86_64.rpm

    到这一步你就已经完成了shiny server的配置(可能会出一些安装上的小麻烦,但是见山开路,遇水搭桥,解决问题是提升自己的必由之路)

    随后你可以将你的shiny app上传到服务器的 /srv/shiny-server/ 位置,打开浏览器,输入服务器的IP监听端口及包名就🆗了,格式为 http:// :3838/APP_NAME/ ,代码演示:

    # 自带示例文件演示cp -R /your-path-wo-shiny/shiny/examples/* /srv/shiny-server/
    # 我的数据(base) ⚡ root@Chevy  ~  cd /srv/shiny-server (base) ⚡ root@Chevy  /srv/shiny-server  lltotal 44Kdrwxr-xr-x 2 root root 4.0K Dec 4 04:21 01_hellodrwxr-xr-x 2 root root 4.0K Dec 4 04:21 02_textdrwxr-xr-x 2 root root 4.0K Dec 4 04:21 03_reactivitydrwxr-xr-x 2 root root 4.0K Dec 4 04:21 04_mpgdrwxr-xr-x 2 root root 4.0K Dec 4 04:21 05_slidersdrwxr-xr-x 2 root root 4.0K Dec 4 04:21 06_tabsetsdrwxr-xr-x 2 root root 4.0K Dec 4 04:21 07_widgetsdrwxr-xr-x 3 root root 4.0K Dec 4 04:21 08_htmldrwxr-xr-x 2 root root 4.0K Dec 4 04:21 09_uploaddrwxr-xr-x 2 root root 4.0K Dec 4 04:21 10_downloaddrwxr-xr-x 2 root root 4.0K Dec 4 04:21 11_timerlrwxrwxrwx 1 root root 38 Dec 4 04:20 index.html -> /opt/shiny-server/samples/welcome.htmllrwxrwxrwx 1 root root 37 Dec 4 04:20 sample-apps -> /opt/shiny-server/samples/sample-apps

    Example

    我的测试结果,可点击(比较慢,小水管VPS)

    Chevy's shiny example(http://104.224.178.164:3838/sample-apps/hello/)

    【如需获得最好的阅读效果,点击原文链接即可】







    请到「今天看啥」查看全文


    推荐文章
    霍老爷  ·  知乎作了什么恶
    8 年前
    微设计  ·  一茶,一室,一中国
    8 年前
    跑步指南  ·  瘦下来以后,薪水会增加吗?
    7 年前