生物信息學所用的計算機知識和CS專業的計算機知識有多大不同?

語言,應用,程序設計各個方面?


各有側重。


計算生物學(通常翻譯為Computational Biology)和生物信息學(通常翻譯為Bioinformatics)暫時還沒有統一的定義。但是從對計算機,生物和醫學知識的要求方面,可以簡約分成兩類。


第一類對計算機方面要求更高,更多專註於演算法,數據結構。強調工具的效率和通用性。比方說通常提到的比對(Alignment)和組裝(Assembly)問題。一個高效通用的比對演算法可以用在DNA,RNA,Epi等不同方面的分析當中,比方說當前被大量使用的BWT轉換(Burrows-Wheeler Transformation,生物信息常用變體包括雙向BWT轉換,FM-index,分區FM-index),動態規劃(Dynamic Programming,生物信息里常用變體包括Banded DP, Myers" bit-vector)。為了提高效率,在硬體允許的情況下還會用到SIMD,GPU,MIC和FPGA等專用加速設備。這部分的專家還會參與到文件格式和API標準的制定,比方說BAM和VCF文件格式和GA4GH API標準的制定。對於推進工業化的進程,這方面的專家會因應需求,製作在線或者本地部署的平台以應付日益增長的對項目、數據和知識的分析、總結和共享的需求。相比較項目分析(第二類)而言,從事了這方面的研究,時間投入較大,較難出成果,更難對生物信息分析中的多個分支有全面的了解。但是這部分專家的技能較難替代,回報也相對較大。一個優秀的工具可能被引用上百次甚至上千次。這部分專家從就業的角度並不局限於生物信息,積累下來的演算法,數據結構,計算機,數據挖掘,機器學習方面的技能能平行運用到金融等其他領域,一個例子是Morgan Stanley總部去年招Engineers和Quants特別青睞生物信息方面畢業的博士。


第二類對生物和醫學方面要求更高,更多專註於對研究對象和數據的理解。比方說通常人方面提到的全基因組(WGS),全外顯子組(WES),癌症基因組,輔助製藥,表觀分析(WGBS,RRBS,Chip-SEQ,Hi-C),單細胞等,非人方面的包括育種,宏基因組,基因組組裝等。不同方向之間共享一部分的基礎知識,比方說質控。不同方向對知識儲備和經驗有不同的要求,比方說癌症基因組對醫學和臨床的要求較高,基因組組裝對計算機方面的要求較高。一個人可以是一個方向,也可以是多個方向的專家。這些人能把多個基礎工具結合在一起產生1+1&>2的效果(有時候連第一類寫工具的人都想不到自己的工具可以被這麼使用)。這些專家的經驗比較難通過項目之外的其他途徑獲得(不是說書本無用,但肯定不夠用)。這方面的研究對出成果有更好的保證(無論大小,一個項目一個成果)。這方面的人才在這個時間點上比較容易獲得海外博士以及博士後的機會。但是畢業後轉換工作機會成本較大,工作的選擇也較為局限。需要儘早對職業進行規劃,找到機會逃出自己的舒適區,擴展知識面,或者根據自己的能力,做好進入管理崗等其他通道的準備。


隨著生物信息的發展,在下一個Solexa技術出來之前,市場對這兩類人的要求必然更加精細化,第一類人提供更好的平台和工具,第二類人更高效和全面地發現問題和解決問題。


分別讀過生物信息(master)和計算機專業(PHD)。

這麼說吧,生物信息專業學的計算機知識就像生物信息專業學的生物知識一樣。


  • 生物信息多用腳本語言。別的「高性能」語言大都用來做基礎設施。
  • 日常數據分析經常會寫「一次性」腳本。
  • (傳統的)生物信息圍繞基因組數據展開,CS專業的本科教學圍繞「通用」數據結構與演算法展開。


CS專業,在cornell的cb組裡實習過半年,也去過jhu的cb組參觀。不同組偏重不同,還是要因組而異。

我在cornell的時候主要就是開發工具的,寫了3個中型網站,這裡只需要你有基本的資料庫知識和網站開發。我還做過雜七雜八的事情比如parse一個xml文件然後存到資料庫里,又比如寫爬蟲。總的來說需要你啥都會一點,技術難度不高。經過基礎完整CS訓練的學生就可以很好完成任務。

jhu的那個組偏向於演算法,需要你有很好的dp水平,同時也要你很好的實現出來。

此外,我接觸過的cb組,沒有不在用machine learning的。

雖然不同組對CS要求各異,但是編譯器,操作系統,組成原理基本是不會涉及的。


首先,生信的絕大多數工作都是在linux上完成,圖形界面就相當不重要了。

然後是語言,perl/python二選一;另外需要學R,尤其是ggplot2;偶爾還需要用到bash;

接著是應用,目前最廣泛的應用是二代測序行業;

最後是程序,實話實說干我們這行的按照面向對象那一套規範來做的不多。公司里偶爾能見到,但科研機構即使是NCS級別的文章裡帶的程序,都遠遠達不到工業級的水準,當然專業開發生信工具的組還是寫得很好的。

綜上,生信入門的話,更重要的還是生物學理論,編程技巧的要求並不高。


我們研究室做研究的時候,

不分析數據,不用生物信息學軟體。

基本不需要生物知識……需要時搜一下,百科級別的就夠了。

不解除生物材料,不做生物學實驗。

主要工作。

讀論文,

數學推導,

演算法設計,

編寫程序,

拿自己的程序處理某些生物數據,只為和同類軟體對比運算速度,結果精度等……而不做任何生物方面的分析。

基本不需要腳本語言……因為想跑贏其它軟體,當然要用執行速度高的語言。

不注重生物應用……即使生物方面沒實用價值,也可以根據其理論價值,發計算機的文章

其實,生信和生信差別很大……範圍很寬。


我是讀碩士才接觸了生物信息,本科是軟體工程完全和生物信息無關。因為生物信息算是個交叉學科,而且最近來了幾個比較厲害的老師,所以我們計算機系也有幾個老師在研究。

我們學校計算機系搞生物信息的老闆很少,既然是計算機系的,方向上基本都更偏向於編程演算法和數據挖掘。換句話說就是將某個生物學上的東西抽象出能用計算機編程和數學解決的東西。 既編程語言的話同門幾乎用的是python和c++,而且對編程能力要求比較高,需要掌握各種比較高級的數據結構,演算法分析設計(動態規劃),常用機器學習演算法(神經網路,貝葉斯,各種VM等等)。


為什麼你們大三才學java為r打基礎

而我大二上截止就學完了 c java r

Matlab也在建模期間學了一些

?_?感覺我們專業只是為了處理數據 手算太麻煩 才去學編程的 能用編程算出來生物統計的數就好了


同大三,前面學的計算機語言c,java都是為現在大三學的,像R,perl,html打基礎。真正學計算機的學生應該很少會學r和perl吧,畢竟生信學這兩個軟體是以後真正在生信工作會用到的。

附一張用perl處理完序列以後在meme跑的結果圖。


推薦閱讀:

生物背景入門生物信息學需要補哪些計算機知識?
既然在 Windows 中文檔放在桌面重裝系統就沒有了,為什麼默認是C盤而不是其他盤?
日誌採集系統flume和kafka有什麼區別及聯繫,它們分別在什麼時候使用,什麼時候又可以結合?
如何整理電腦文件夾?
20 年後的電腦會是什麼樣子?

TAG:計算機 | 生物信息學 | 計算生物學 |