我要寫個(gè)生信軟件!自救!畢業(yè)~

劍鋒

上海交通大學(xué)醫(yī)學(xué)院附屬瑞金醫(yī)院、醫(yī)學(xué)基因組學(xué)國家重點(diǎn)實(shí)驗(yàn)室在讀研究生(2015年入學(xué))

主要感興趣的研究方向:

數(shù)據(jù)可視化;高通量測序數(shù)據(jù)分析方法開發(fā);臨床檢測相關(guān)的軟件和數(shù)據(jù)庫的開發(fā);白血病相關(guān)的發(fā)病機(jī)制研究;公共數(shù)據(jù)挖掘。

已開源的工具: configr 、 BioInstaller 、 iseq 、 ngstk

生信技能:兩年生物信息學(xué)習(xí)和實(shí)踐經(jīng)驗(yàn),熟練使用Adobe的系列工具(PS/AI/PR/AE, 本科以及研究生階段擔(dān)任學(xué)生會(huì)宣傳部部長)、熟悉Linux服務(wù)器運(yùn)維、熟練使用git、熟悉網(wǎng)頁以及數(shù)據(jù)庫服務(wù)的開發(fā)及其運(yùn)維、有Python、R、PHP、Javascript相關(guān)的實(shí)際項(xiàng)目開發(fā)經(jīng)驗(yàn)、熟悉各類高通量測序數(shù)據(jù)(WGS、WES、RNA-seq、CHIP-seq)分析流程、參與多個(gè)大樣本測序項(xiàng)目分析工作。

下面是我咨詢劍鋒關(guān)于”如何開始寫生信軟件的?”問題的回答:

  • 首先是要確定哪些功能別人已經(jīng)做過了,然后確定他們的局限性在哪里;

  • 寫一個(gè)新工具或者軟件包之前 可以參考一下類似的包或者工具;

    (開始確定一個(gè)要實(shí)現(xiàn)的功能,然后去使用、調(diào)查各個(gè)軟件,總結(jié)優(yōu)缺點(diǎn),明白自己要做啥創(chuàng)新)

  • 你看過其他人寫的軟件包的源代碼沒?看懂是先進(jìn)步 然后是改動(dòng)和添加功能;

    (如果有一些是python寫的怎么辦,看不懂也得看,去學(xué))

  • 先從一些小功能的程序?qū)懫?熟悉一下軟件開發(fā)的整個(gè)流程

    (從寫shiny小程序開始,學(xué)習(xí)R編程)

  • 現(xiàn)在 開發(fā)工具或者軟件 一般是三種模式:

    基于別人的框架開發(fā)特定工具;

    自己寫一個(gè)框架然后開發(fā)相應(yīng)工具;

    直接寫一個(gè)工具

  • 開發(fā)基于已有數(shù)據(jù)庫進(jìn)行宏基因組注釋提高宏基因組數(shù)據(jù)注釋率:可以考慮收集已經(jīng)發(fā)表的一些文獻(xiàn)附錄數(shù)據(jù) 做一些數(shù)據(jù)庫 ,例如COSMIC就是比較典型的;

  • 如果實(shí)驗(yàn)室計(jì)算資源多,可以整合以及發(fā)表的同樣類型的數(shù)據(jù),做一些整合分析方法、算法開發(fā);

大師兄

自家實(shí)驗(yàn)室的師兄,博士論文用樸素貝葉斯算法寫了一個(gè)分類器。師兄畢業(yè)去美國讀計(jì)算機(jī)碩士,不知道啥方向了。其實(shí)自救寫軟件的想法就是來自師兄的,師兄就是靠自己寫了軟件發(fā)文章畢業(yè)的,雖然自救后還是7年畢業(yè)。

下面是我問師兄”寫一個(gè)軟件是如何想到用這種算法的?“問題的回答:

算法肯定不是憑空想的,要了解算法領(lǐng)域的知識(shí)才能知道用什么。

演林師弟

比我低一年紀(jì),做優(yōu)化算法工作,現(xiàn)在已經(jīng)完成一個(gè)宏基因組分箱算法優(yōu)化的工作,開始著手做另外一個(gè)關(guān)于蛋白質(zhì)研究軟件算法的工作(他問我的蛋白質(zhì)問題,我都不會(huì),比如蛋白質(zhì)的三維結(jié)構(gòu)是什么?),打算用支持向量機(jī)寫。

下面是師弟對”寫一個(gè)軟件是如何想到用這種算法的?“問題的回答:

根據(jù)問題去找用什么算法,看看這個(gè)問題或者相近的問題大家都是用什么方法解決的,查文獻(xiàn)。優(yōu)中選優(yōu),然后用自己決定較好的和別人比較。

Jimmy師兄

基于R和shiny寫了一個(gè)web小工具,鼓勵(lì)我做整合性的工作,類似 TRAPR: R Package for Statistical Analysis and Visualization of RNA-Seq Data 、 DEGreport: Report of DEG analysis 。只要你愿意寫出來,不一定需要算法,可以是總結(jié),只要是能加速科研發(fā)展的,你整理的好,總結(jié)的方便,其他人就用你的,就是對科學(xué)有貢獻(xiàn)。基本上做一個(gè)完整的工作,都是可以發(fā)的。

下面是師兄對”寫一個(gè)軟件是如何想到用這種算法的?“問題的回答:

一般選擇引用率較高的。

浩浩

計(jì)算機(jī)碩士,本科做的是生信軟件算法優(yōu)化。老板是計(jì)算機(jī)碩士、數(shù)學(xué)博士。

下面是浩浩對”寫一個(gè)軟件是如何想到用這種算法的?“問題的回答:

  • 我感覺開發(fā)軟件用什么算法,這個(gè)問題就類似于分析數(shù)據(jù)用啥軟件?主要看積累吧,看看別人的軟件里面用了啥算法(類比與別人用什么軟件分析數(shù)據(jù)),如果要做原創(chuàng)性的工作就要了解經(jīng)典的問題有哪些,解決這些問題的算法有哪些。。。然后確定了大概的思路就要看文獻(xiàn)了,然后改進(jìn)算法應(yīng)用到新領(lǐng)域。
  • 我覺得最大的點(diǎn)在于拆解問題,能從rnaseq之類的大問題拆解到比對等具體步驟,那么比對軟件就很多了。開發(fā)軟件用算法也是的,具體可能就是比對里面分為建索引和比對兩步。
  • 學(xué)習(xí)軟件開發(fā)的方法就是最快的方式就是看看別人怎么弄的~ 浩浩小老板做了軟件(R語言):https://github.com/XiaoleiLiuBio/MVP/
  • 先確定思路吧,具體實(shí)現(xiàn)放后面,不過也不好說,因?yàn)榫幋a經(jīng)驗(yàn)會(huì)影響思考方式。。??赡軐懼鴮懼X得之前思路有問題。有思路只能多試試,有一個(gè)有突破其他都還過得去應(yīng)該就還OK。
  • 做軟件肯定是要和同類軟件比較的。