如何讓你的程序人盡皆知?

2021-02-23 科研貓

 戳上面的藍字關注我們哦!

作者:科研貓 | 小獵豹

對於做生物信息開發的人來說,當你辛辛苦苦開發了一個程序,你的想法是什麼?肯定是想要更多的人去使用它。那麼如何才能使得你的程序人盡皆知呢?其中最重要的一點就是提高程序的易用性,需要充分考慮到你的用戶群體。

在日常的科研工作當中,R語言成為一個越來越重要的工具。越來越多的R包和基於R的工具被開發出來,使用R的人也是越來越多。作為一名開發人員,當你開發了一個工具的時候,你的想法是讓他幫助到更多的人。

可是你有沒有想過,在眾多的科研人員中,懂得使用SPSS以及graphpad的人都是少數人,那麼能夠靈活運用R語言的人就更加少之又少了。不管你的工具開發的再好,你仍然需要面對一個無法辯駁的事實,依然很少有人會去用它。這就是我們所說的,「酒香也怕巷子深」。

還有一種情形,我們在臨床上經常遇到這樣的問題,比如在臨床實踐中經常遇到的一些小計算,像BMI、體表面積、平均動脈壓、eGFR、或者類似CURB65評分等等,這樣的計算在臨床上每天都在發生,大多數人會自己在腦子裡記下公式,然後掏出手機算一算。

可是人腦的記憶力畢竟是有限的。有沒有可能自己寫一個計算公式來完成這些簡單的計算呢?當然是可以的。這些計算在程序語言中只是簡單的加減乘除,非常容易實現。可是我們總不能在遇到計算的時候,把電腦掏出來用R語言去跑一遍吧。那有沒有什麼快捷簡便的方法可以幫我們去實現這些簡單的計算,同時又擺脫複雜的計算環境呢?

這個時候很多人的腦子裡都會浮現出來這樣一個想法:手機APP或者網頁工具。如果我們可以把這些計算公式都事先封裝在一個APP中或者網頁工具中,在真正計算的時候,我們只需要把需要的數值代入進去,即可獲得最終的結果。比如一個在線的BMI指數計算工具。有沒有覺得這樣的想法非常的靠譜呢。比如像這樣子的,一個簡單的網頁就可以解決這個問題。可以毫不誇張的說,如果一個程序做成R包,面對的用戶是10個人,那麼做成網頁應用,面對的用戶可能有1000個人。

那麼如何來實現這樣的操作呢?對於網頁工具稍有涉獵的人都知道,涉及到網頁工具就會涉及到非常多的基礎的程式語言。比如HTML,CSS.,Javascript. 除了這些前端的內容。我們還要學習後端的很多東西。比如最老套的LAMP。Linux + Apache + MySQL/MariaDB + PHP/Perl/Python,當然後臺的程式語言也可以用Golang或者是Java等等。

雖然說現在有很多現成的框架可以幫我們又快又好的去搭建一個網站,比如前端的Bootstrap,Vue, React以及後臺的Django,Flask等等,但是這些框架往往非常的龐大,而且不易學習。為了一些簡單的計算而使用這麼龐大的系統去搭建的話,會浪費我們大把的時間在學習上面,對於專注於計算和數據研究的人來說非常的不友好。

在前面很多次的教程中,我們不止一次的說過,R語言對於需要做數據分析的人來說,是極其重要的一個工具。我們很多文章和教程裡面的乾貨也都是R語言的代碼。那麼有沒有什麼好的工具可以幫助我們,單純使用R語言就可以快速開發一個網頁呢?當然有,這就是Shiny

Shiny包是RStudio開發的,可以快速搭建基於R的交互網頁應用。Shiny包的特點在於不需要了解網頁語言,用純R來搭建。生成的網頁應用是動態交互、即時更新的。通過shiny交互網頁應用,你可以:

不需要安裝任何程序, 攜帶數據, 只要有網的地方, 就能使用。

只要你安裝一次, 就可以讓別人試用,無需別人安裝調試環境。

不用擔心軟體或者代碼洩密, 可以控制用戶使用時間和權限。

通過交互式操作,在數據分析中減少重複的工作。

整體來說,Shiny是使用R代碼創建Web應用程式的框架。它的設計首先考慮了數據科學家,為此,您可以創建非常複雜的Shiny應用程式,而無需了解HTML,CSS或JavaScript。另一方面,Shiny並不僅限於創建簡單或預製的應用程式:它的用戶界面組件可以輕鬆地自定義或擴展,其伺服器使用反應式編程來創建所需的任何類型的後端邏輯。入門時,Shiny的設計使你感覺上很神奇,但是,深入了解它的工作原理後,您會越意識到,它是由具有強大軟體工程原理的通用構建模塊構建而成的。

如今,與R本身一樣,Shiny在幾乎所有細分市場和行業中都得到了使用。它在學術界用作統計概念的教學工具,是一種用於炫耀新穎的統計方法或模型的媒介,大型製藥公司使用它來加快藥物開發過程中科學家與分析師之間的協作,科技公司使用它來建立運行高級分析的實時控制臺。例如在Hiplot網站中的大量shiny高級應用一樣,我們可以通過shiny來實現非常複雜絢麗的網頁展示。例如在Hiplot網站中,由openbiox開發和維護的TCGA XenaShiny項目,其功能就十分完善。

本次教程旨在幫助大家對Shiny進行更深入的了解。希望大家在學習後,能夠編寫具有更多自定義用戶界面,更多可維護代碼以及更好的性能和可伸縮性的應用。下面我們先來一個例子,先睹為快。

1library(shiny)
2
3#ui 
4ui <- fluidPage(
5  titlePanel("Calculate Body Mass Index (BMI)"),
6
7  sidebarLayout(
8    sidebarPanel(
9      p("This tool calculates the BMI by using fomular:"),
10      p("BMI = Weight(kg) / Height(m) ^ 2"),
11      br(),
12
13      numericInput(inputId = "weight",label = "Enter body weight (kg)",value = 75,min = 0,max = 500,step = 1),
14      numericInput(inputId = "height",label = "Enter body height (cm)",value = 180,min = 0,max = 300,step = 5)
15
16    ),
17    mainPanel(
18      p("According to your input, the BMI is:"),
19      textOutput(outputId = "bmi")
20    )
21  )
22)
23
24#server 
25server <- function(input, output, session) {
26  output$bmi <- renderText({
27    bmi = input$weight / ((input$height / 100) ^ 2)
28    sprintf("%2.4f kg/m2",bmi)
29  })
30}
31
32# run app
33shinyApp(ui, server)

就這樣簡單的幾十行R代碼,在RStudio中直接點擊運行後,結果是這樣的,大家可以在自己的RStudio中試一試,這種滿足感是非常奇特的:

這期教程中關於shiny的初步介紹,我們就講到這裡。後面我們將會給大家講解關於R的Shiny應用的一系列內容,由淺入深,也會邀請大咖給大家解讀自己的shiny代碼。下期內容我們將詳細的解讀關於shiny的基礎,帶領大家來一步步書寫R語言的shiny應用。

相關焦點

  • 不確定的未來就不要人盡皆知
    不確定的未來就不要人盡皆知 在這個濫情的年代裡, 一句我愛你,相當於你好。
  • 從默默無聞到人盡皆知的搞笑動漫梗,你都知道哪些呢?
    邊看番邊看梗,通常是漫迷最愛做的事情,而每出現新的番,如果能夠從中發現新的讓人捧腹大笑的梗,那對漫迷來說,簡直就是人生中最有意義的事情,而那些從默默無聞到人間皆知的搞笑動漫梗,你都知道哪些呢?很多人都是看過琦玉老師之後才知道「我禿了,也變強了」的梗,那你有沒有因為梗而去追的番呢?答案當然是有的,《男子高中生的日常》就是很多人因為梗而選擇去追的動漫。
  • 這道「中國菜」在日本是人盡皆知的美食,但是在中國卻吃不到!
    不過,在日本有一道很著名的「中國菜」,在當地是人盡皆知的美食,但是中國卻吃不到這道菜。這道「中國菜」在日本是人盡皆知的美食,但是在中國卻吃不到! 日本人特別愛吃這道菜,但是國內的人卻沒有聽說過,天津人自己也不知道這種食物。其實天津飯就是一種比較特殊的蛋包飯,日本人在做這種食物的時候,還會往裡面加入很厚的芡汁,因此這道天津飯就像是湯汁比較多的蛋包飯。
  • 月嫂行業人盡皆知的「內幕」,想要寶寶聽話容易,戒掉「藥癮」難
    導讀:月嫂行業人盡皆知的「內幕」,想要寶寶聽話容易,戒掉「藥癮」難各位點開這篇文章的朋友們,想必都是很高的顏值吧,我們真的是很有緣哦,小編每天都會給大家帶來不一樣的育兒資訊,如果對小編的文章或者其他的什麼,有什麼一些意見的話歡迎在下方積極評論哦,小編每條都會認真看的。那麼本期的內容是:月嫂行業人盡皆知的「內幕」,想要寶寶聽話容易,戒掉「藥癮」難!那麼我們就來看看吧!
  • 別把不確定的事弄得人盡皆知,這世間多的是你不知道的事
    寫在開頭的話:別把不確定的事弄得人盡皆知,這世間多的是你不知道的事。從小學到大學,你除了年齡、身高等外在條件發生變化之外,你真正成長的是什麼?小時候的你,指著星星說長大以後我要當太空人,所有人都會豎起大拇指告訴你,有夢想的孩子可真了不起。長大之後,特別是過了十七八歲,你告訴別人你要去到那裡,他們只會告訴你努力學習,別辜負了還在痴人說夢的年紀。你看,你還是你,話還是原來的話,但是你得到的答案不會是原來的答案。
  • 十句文案,不確定的事,不要鬧得人盡皆知
    十句文案,不確定的事,不要鬧得人盡皆知 2.你欠我一句對不起,可我不會再說沒關係了。 3.心只要寒過一次就沒有重蹈覆轍的必要了。 4.凌晨的驚醒,比失眠的夜更難熬。 5.還是希望你好,即使你的未來與我無關。 6.我到底有多糟糕,值得你這麼對待我。
  • 月嫂行業人盡皆知的「內幕」,孩子睡得香原來靠「藥療」,坑寶寶
    導讀:月嫂行業人盡皆知的「內幕」,孩子睡得香原來靠「藥療」,坑寶寶各位點開這篇文章的朋友們,想必都是很高的顏值吧,我們真的是很有緣哦,小編每天都會給大家帶來不一樣的育兒資訊,如果對小編的文章或者其他的什麼,有什麼一些意見的話歡迎在下方積極評論哦,小編每條都會認真看的。那麼本期的內容是:月嫂行業人盡皆知的「內幕」,孩子睡得香原來靠「藥療」,坑寶寶!那麼我們就來看看吧!
  • 日本人盡皆知的3個姓氏,其實都源自中國,大多數人都不知道!
    說起中國人的姓氏,很多人就想到了百家姓,百家姓大多只是我國一些常見的姓氏,我國的姓氏遠遠不止這些,在一些比較古老的書籍中,還有很多的姓氏和名字。很多父母在孩子出生時,為了給孩子取一個好名,翻遍古籍,一個好名字不僅能讓他人更快地記住你,也能讓他人更有興趣。
  • 人盡皆知的阿爾卑斯糖果,日本叫不二家,中國名字你想不到!
    人盡皆知的阿爾卑斯糖果,日本叫不二家,中國名字你想不到!其實說到義大利的這個阿爾卑斯糖,應該很多人都非常熟悉,它其實就是奶糖,街裡面的口味種類非常多,有香蕉味,草莓味,香橙味,巧克力味,芒果味,葡萄味,檸檬味,而且很多人可以說從小知道大學其實很多人,如果不說它是義大利的一個糖果的話,估計很多人都以為是國產的糖果呢。其實這個阿爾卑斯糖在世界各地都非常的有名。
  • 「B站」人盡皆知,那「A、C、D、E、F、G、H站」分別代表什麼?
    「B站」目前已經人盡皆,那「A、C、D、E、F、G、H站」分別代表什麼?文/小鳴人二次元愛好者在閒暇時間涉獵各類動漫網站是常有的事情,或許是為了最新資訊、或許是為了喜歡的人物、或許是為了各類搞笑彈幕。「B站」目前已經人盡皆知,那麼你知道其他的各種「站」嗎?
  • 豆腐圓子,嘉魚人盡皆知的家鄉美味小吃...
    豆腐圓子,嘉魚人盡皆知的家鄉美味小吃...作者:肖創彬湖北嘉魚人,現任鹹寧市中級人民法院副院長,文學愛好者,為《散文選刊》籤約作家,多篇散文發表於《湖北日報》、《散文選刊》、《人民司法·天平》。
  • 不確定的事情,別搞得人盡皆知
    1.有些人,不適合掛在嘴邊柳巖曾經有首歌叫《絕口不提》,裡面有這樣一句歌詞:「感情是兩個人的事,最好別讓太多人知。」其實,沒有一段感情的落幕,是人們希望看到的。對於你的朋友.你的家人來說,他們希望你獲得美好的感情。
  • 我,喜歡你:黎曼說的沒錯,配不配人盡皆知,但喜歡沒有規則
    《我,喜歡你》自從路晉的秘書,現任副總黎曼出現後,她和顧勝男之間就註定了會對路晉有一番爭奪,雖然兩人明爭暗鬥只是暗潮洶湧,但黎曼和顧勝男卻有深意,兩人一個代表了現實一個代表真愛,對於她倆,路晉無論堅持還是妥協都無可厚非。《我,喜歡你》是由林雨申、趙露思、張曉謙、于欣禾、付嘉等主演的當代都市情感劇。
  • 「人盡皆知」的機場貴賓室還有啥是你不知道的?
    「候機時與其在登機口無聊地玩手機,不如選擇遠離人群喧囂、盡情放鬆休憩,或沐浴梳洗一番,或大快朵頤一頓,或獨自處理公務,或與團隊開個會議,甚至可以好好睡一覺……今天,我們就去了解一下「人盡皆知」的機場貴賓休息室,看看還有哪些是你不知道的。」
  • 晚安心語:笑笑就能過去的事,何必把它弄的人盡皆知
    想成為你這輩子,不管過了多少年,遇見了多少人,以後回想還會覺得妙不可言的人。很多人喜歡用,我有一個朋友開頭,其實說的就是自己得故事 。Many people like to use it. I have a friend to start with. In fact, what I say is my own story.
  • 穿越文:她是頂級王牌殺手,一朝穿越,成了人盡皆知的廢物大小姐
    如果你感到無聊的話,不妨到小說的海洋中徜徉。小說中男女主之間一生一世一雙人的承諾,簡直能把人的心給甜化。作為一名不折不扣的小說迷,在以後的日子裡,小編將會為大家帶來更多優質又好看的小說,歡迎關注哦。今天要給大家推薦的是穿越文:她是頂級王牌殺手,一朝穿越,成了人盡皆知的廢物大小姐。1.
  • 大三學姐道出人盡皆知的「秘密」
    住宿之後你會發現,宿舍真的是你第二個家,你跟宿舍中的每個同學都會留下一段難忘的故事。除此之外,你跟宿舍中的一桌一椅、一花一盆都會產生深厚的情感。今天,作為大三的學姐,就給新生說一下人盡皆知卻只有少部分人才會去做的秘密~雖然現在我們國家的許多學校還沒有特別優厚的住宿條件,沒有自己家中那麼舒適和溫馨,但是你可以進行設計,去布置一些高顏值、高體驗感的小物品,會讓你的住宿生活更加的豐富,也會讓你更加喜愛自己的這片環境。
  • 魯迅的《狂人日記》人盡皆知,但是主人公昆仲的原型,卻鮮為人知
    魯迅的《狂人日記》人盡皆知,但是主人公昆仲的原型,卻鮮為人知很多人以為《狂人日記》只是魯迅用來攻擊封建思想、封建文化、封建禮教的利器,是憑空想像出來的,其實不然。《狂人日記》不僅有人物原型,這個人還是魯迅的表兄,名字叫做阮久孫。
  • 司馬光砸缸為何人盡皆知?成為「網紅」背後,是司馬池在「操刀」
    很多人不知道北宋興也司馬光亡也司馬光,更不知道這人和王安石是死對頭,倒是對其砸缸的事樂此不疲,這件事不僅影響了一代小學生的課後作業,對於司馬光同樣有很大的影響,所以才被史書記住,關於砸缸故事的含義,你是否有真正的品讀過。
  • 飯圈冷知識:SM公司「老闆娘」是中國人,還是一位人盡皆知的歌手
    SM娛樂公司的「老闆娘」居然是一位中國人,她還是一位人盡皆知的歌手。這個人就是許茹芸!1974年歌手許茹芸出生於中國臺灣臺北市,她自創的空靈唱腔被稱「芸式唱腔」,她的這種唱腔和JYP的半空氣音很像。雖然她是SM的「老闆娘」,但是唱腔卻是很JYP。或許很多年輕的人都不認識許茹芸了,但是《如果雲知道》、《獨角戲》等大家耳熟能詳的歌應該聽過,這些歌都是她的歌曲。