生物信息之程序学习
歡迎關注天下博客:http://blog.genesino.com/2017/06/program-learn/
作為本科學生物,后來轉行生物信息的人,經常會被人問起,為啥學習生物信息了呢?這背后通常會帶著一些困惑,生物信息分析好不好學?
我讀書的時候,實驗室純計算機出身的人員只占很小比例,更多的是大學期間學生物的;特別的,有個做的挺好的師兄,本科是商科出身。從這來看,像我這樣本科學生物轉行生物信息還不算是有跨度的。這也從一個側面說明,專業背景不是能否學好生信的決定因素。
想想自己大學開始自學生信的時候,可以說是一頭霧水,只知道先學習編程,查了查資料,是要學習perl語言,但是不知道要在什么地方寫,怎么去運行。費了些勁,在windows上安裝好perl,寫個文本文件,改下后綴,發現文件的圖標變成了perl的圖標,雙擊就可以運行了,不會寫命令行參數,不會輸出重定向,一種傻呵呵的體驗。
后來接觸了Linux系統,體驗到在終端輸入命令的快意,才找到了編程的感覺。不過,深深印在腦海里的還是作為一個生信小白的時候,寫一個程序不知道在哪寫,在哪運行。看過不少的教程都默認學習者會打開終端,會使用終端,會在終端運行命令。而我卻是個例外,什么都不會。程序可以照著教程寫下來,卻不知道怎么運行。所以在我后來寫python教程的時候(后臺回復 python 可獲取),第一部分就是介紹程序在哪兒寫,在哪兒運行,怎么運行。(最開始學習perl,在研一時在QQ群一個同一大學學長的忽悠下,嘗試了下python,那時有些編程基礎,寒假在家看了遍《python簡明教程》就可以寫了,以后也就習慣了這個語言)。
我個人是個理解能力比較差的,尤其是在接觸新的領域時,閱讀不少教程,總覺得這些教程都是給有些基礎的人寫的,自己去學習時,需要多方嘗試,多多綜合,才能找到門路。為了方便自己學習,也為了記述學習過程,就開始寫博客去記錄,力爭從一個小白的視角、從最基礎的角度去寫作,記述哪怕是最簡單的一步操作,一個錯誤,提供一個近乎人人可以直接上手的教程 (比如虛擬系統Docker的使用教程和任務流控制管理的Airflow教程,這些文章被轉載后,在同一平臺相比于同類的教程閱讀量多了10倍,我想這正是因為簡單、可操作,為初學者接觸這些工具提供了最大的便利)。
在初步知道程序語言怎么運行并能成功運行完示例后,就要系統地讀一本簡明教程;簡明的教程不多見,因為一般的教程都涵蓋的面比較廣,而我們初期只需要關注最基本的就好 (所以我提取了我個人認為比較重要的基礎內容,形成教程),可以找本經典書,請身邊朋友劃下重點,先從頭到尾讀一遍,不管理解多少,然后再讀一遍。讀不下去,就抄寫一遍。最好的自學方式就是守住一本教材,一遍一遍地去讀去熟悉,每看一遍都會有一些了解,從陌生到熟悉,慢慢就串起來了。然后就開始自己去寫代碼,代碼就是我們思想的體現;我在教人寫代碼時,總會讓他先描述下如果沒有程序,我們自己是如何一步步的手動處理這個問題的,模擬的是程序運行的過程。理清一遍思路之后,怎么想的就怎么寫,只要你敢寫,就成功了。
當然這個時候一般會遇到初學者經常犯的錯誤,寫完代碼,覺得自己寫的很對,但運行時卻總是提示錯誤。絕大多數情況下,錯誤是我們自己寫作的錯誤;起碼在最開始時,要相信是自己的錯誤,不是程序語言設計的錯誤。錯誤的種類就這么幾種,比如引號未配對、縮進不對、少了空格、文件名不對、變量名字不一致等。這時需仔細看屏幕提示的錯誤信息,在提示的錯誤行附近反復去查看。在之前的python教程和后續的文章中,都有或會提到經常出現的錯誤和解決辦法。
能讓程序提示的錯誤都算不上大的錯誤,而程序運行成功,不等同于程序的邏輯是對的,獲得的結果是對的。程序是我們設計的,多數情況,我們對程序的輸出結果是可以預估和判斷的,不符合預期的結果是我們最應該慎重對待的。
在能獨立寫作程序后,一方面是學以致用,在解決問題中逐步學習;這時谷歌是你最好的幫手,把你遇到的錯誤或想解決的問題的關鍵字提取出,一鍵搜索,可以幫你解決大部分問題。另一方面,則是去學習別人的代碼、學習初學時跳過的內容,利用社區中提供的優秀的模塊或包來簡化、加速自己的操作。入了門,就不需要像剛開始時,什么操作都自己去寫了,俗語叫“自己造輪子”;可以用很多經驗更豐富的開發人員做好的輪子解決我們的問題。
關于學習周期,如果能靜下心去學習的話,1個月的時間是足夠的。如果不時還能有人給你點播,2-3周就差不多了。關鍵的關鍵是去背、去抄,書讀百遍其義自見。
RPYTHONBIOINFO生物信息
CHENTONG
版權聲明:本文為博主原創文章,轉載請注明出處。
alipay.png WeChatPay.png
總結
- 上一篇: 最后一周|高级转录组分析和R语言数据可视
- 下一篇: 本地使用Rfam 12.0+