1. 程式人生 > >Python也可以搶網速,我下了十部電影,室友才一部

Python也可以搶網速,我下了十部電影,室友才一部

我們就用幾個小例子來展示一下程式設計能給我們的工作生活帶來怎樣意想不到的便利。希望通過適當的引導,大家能體會程式設計的爽,樂在其中,享受編碼的樂趣。


學習Python中有不明白推薦加入交流裙
                號:735934841
                群裡有志同道合的小夥伴,互幫互助,
                群裡有免費的視訊學習教程和PDF!

首先宣告,我們的原則是,一切機械的重複性的工作都應該自動化,牢記這一條。

場景一

我們想研究某個基因家族,比如說人類的HSP家族,首先我們需要獲取該家族的所有成員以及他們的序列。我們可以這樣做,在NCBI上搜索“heat shock protein”,物種設定為“Homo Sapiens”,逐條記錄點進去,將序列拷下來,貼上到記事本中,整理成fasta格式。上期講過,程式設計就是通過程式語言告訴計算機我們想怎麼做,讓機器替我們去幹苦力,解放自己的雙手和時間。現在我們把自己手動執行的過程轉換成程式碼。我這裡簡化了,直接從refgene資料庫提取HSP家族各成員相應的轉錄本編號,再利用這個編號去NCBI上獲取序列。

Python也可以搶網速,我下了十部電影,室友才一部

 

場景二

我們需要對上一步得到的序列設計引物,用於後續的研究。從程式輸出的log可以看到,一共有39條序列,一條一條拖進primer5,調整好引數,滑鼠一點一點拖過去,吭哧吭哧埋頭苦幹一上午,眼睛都要瞎了(回想起自己當年一遍一遍重複這個操作,瑟瑟發抖。。。)。龜叔告訴我們,生活不應該是這個樣子的。

Python也可以搶網速,我下了十部電影,室友才一部

Python之父Guido van Rossum

我們有primer3-py庫啊,只需要適度的封裝,別說39條,就算39萬條都不帶眨眼睛的。

 

Python也可以搶網速,我下了十部電影,室友才一部

 

 

示例程式碼比較糙,只為了說明問題。完全可以在這基礎上優化,比如調整引數,結果過濾,篩選出最優的primer,使其成為實際可用的程式碼。

場景三

引物設計完了,需要送去合成,也可以用程式碼搞定。將上一步的結果傳送給生物公司的銷售,並抄送老師。

 

Python也可以搶網速,我下了十部電影,室友才一部

 

來看看是不是真的傳送成功了

Python也可以搶網速,我下了十部電影,室友才一部

 

以上三個場景是一個連貫性的操作,完全可以整合到一起,實現完全自動化。只需要敲完命令,回車,剩下的就不用關心了。除了第一步比較耗時,因為要通過網路請求,需要62s,二三兩步不超過5s,總耗時不過70s,節省了大量的時間精力。這麼美好的時光,乾點啥不好啊,看劇看文獻,打球做實驗,撩妹寫文章都行啊。

當然程式設計的應用場景遠不止這些,這裡拋磚引玉。其實很多問題都有第三方的庫,這也是python如此受歡迎的原因之一,Google一下,說不定就有你想要的,直接拿過來用就好了。還有些問題,不怕想不到,就怕實現不了。只要能力爐(lan)火(ai)純(wan)青(qi),你用python煮咖啡也不是不可以噢。

其他的像什麼自動下載小電影的技能我們就不傳授了,身體受不了的,有興趣的自己研究。初衷必須是為了錘鍊技能,比方說同一個學習室,他一天下了100部,我一天能下500部,這也是真正的技術啊。

Python也可以搶網速,我下了十部電影,室友才一部

 

當然了,這種事還是在家幹,在學習室這麼搶網速會被懟的。但是在學習室,他的分析流程要跑12h,我就比他NB,我只要4h跑完,這種事情絕對是喜聞樂見的。我們後面會討論如何構建一個高效的分析流程,請保持關注哦。