究竟為什么要學(xué)編程,可能每個(gè)人在行動(dòng)之前都會(huì)有這樣的疑問(wèn)。因?yàn)殪趴?,可以裝逼,熒幕上的黑客都帥呆了;因?yàn)槌绷鳎麄€(gè)社會(huì)都在宣傳學(xué)編程,各種廣告鋪天蓋地,再不學(xué)就out了。誠(chéng)然,這些理由都不錯(cuò),但這些是大眾學(xué)編程的原因,而不是你學(xué)編程的理由。我絕對(duì)學(xué)習(xí)一樣技能,一定要有強(qiáng)烈的主觀愿望,尤其是編程,如果不是靠興趣驅(qū)動(dòng),真的會(huì)很痛苦。如何才能有強(qiáng)烈的主觀愿望呢?興趣是基礎(chǔ),然后在學(xué)習(xí)的過(guò)程中不斷地獲得正反饋,越學(xué)越有意思,越來(lái)越爽。
我們就用幾個(gè)小例子來(lái)展示一下編程能給我們的工作生活帶來(lái)怎樣意想不到的便利。希望通過(guò)適當(dāng)?shù)囊龑?dǎo),大家能體會(huì)編程的爽,樂(lè)在其中,享受編碼的樂(lè)趣。
首先聲明,我們的原則是,一切機(jī)械的重復(fù)性的工作都應(yīng)該自動(dòng)化,牢記這一條。
代碼已上傳至GitHub,想直接看代碼的點(diǎn)這里。
場(chǎng)景一
我們想研究某個(gè)基因家族,比如說(shuō)人類的HSP家族,首先我們需要獲取該家族的所有成員以及他們的序列。我們可以這樣做,在NCBI上搜索“heat shock protein”,物種設(shè)置為“Homo Sapiens”,逐條記錄點(diǎn)進(jìn)去,將序列拷下來(lái),粘貼到記事本中,整理成fasta格式。上期講過(guò),編程就是通過(guò)編程語(yǔ)言告訴計(jì)算機(jī)我們想怎么做,讓機(jī)器替我們?nèi)ジ煽嗔?,解放自己的雙手和時(shí)間?,F(xiàn)在我們把自己手動(dòng)執(zhí)行的過(guò)程轉(zhuǎn)換成代碼。我這里簡(jiǎn)化了,直接從refgene數(shù)據(jù)庫(kù)提取HSP家族各成員相應(yīng)的轉(zhuǎn)錄本編號(hào),再利用這個(gè)編號(hào)去NCBI上獲取序列。
場(chǎng)景二
我們需要對(duì)上一步得到的序列設(shè)計(jì)引物,用于后續(xù)的研究。從程序輸出的log可以看到,一共有39條序列,一條一條拖進(jìn)primer5,調(diào)整好參數(shù),鼠標(biāo)一點(diǎn)一點(diǎn)拖過(guò)去,天啦嚕,干完眼睛都要瞎了(回想起自己當(dāng)年一遍一遍重復(fù)這個(gè)操作,瑟瑟發(fā)抖。。。)。龜叔告訴我們,生活不應(yīng)該是這個(gè)樣子的。
我們有primer3-py庫(kù)啊,只需要適度的封裝,別說(shuō)39條,就算39萬(wàn)條都不帶眨眼睛的。

示例代碼比較糙,只為了說(shuō)明問(wèn)題。完全可以在這基礎(chǔ)上優(yōu)化,比如調(diào)整參數(shù),結(jié)果過(guò)濾,篩選出最優(yōu)的primer,使其成為實(shí)際可用的代碼。
場(chǎng)景三
引物設(shè)計(jì)完了,需要送去合成,也可以用代碼搞定。將上一步的結(jié)果發(fā)送給生物公司的銷售,并抄送老師。
來(lái)看看是不是真的發(fā)送成功了

以上三個(gè)場(chǎng)景是一個(gè)連貫性的操作,完全可以整合到一起,實(shí)現(xiàn)完全自動(dòng)化。只需要敲完命令,回車(chē),剩下的就不用關(guān)心了。除了第一步比較耗時(shí),因?yàn)橐ㄟ^(guò)網(wǎng)絡(luò)請(qǐng)求,需要62s,二三兩步不超過(guò)5s,總耗時(shí)不過(guò)70s,節(jié)省了大量的時(shí)間精力。這么美好的時(shí)光,干點(diǎn)啥不好啊,看劇看文獻(xiàn),打球做實(shí)驗(yàn),撩妹寫(xiě)文章都行啊。
當(dāng)然編程的應(yīng)用場(chǎng)景遠(yuǎn)不止這些,這里拋磚引玉。其實(shí)很多問(wèn)題都有第三方的庫(kù),這也是python如此受歡迎的原因之一,Google一下,說(shuō)不定就有你想要的,直接拿過(guò)來(lái)用就好了。還有些問(wèn)題,不怕想不到,就怕實(shí)現(xiàn)不了。只要能力爐(lan)火(ai)純(wan)青(qi),你用python煮咖啡也不是不可以噢。

當(dāng)然了,這種事還是在家干,在學(xué)習(xí)室這么搶網(wǎng)速會(huì)被懟的。但是在學(xué)習(xí)室,他的分析流程要跑12h,我就比他NB,我只要4h跑完,這種事情絕對(duì)是喜聞樂(lè)見(jiàn)的。我們后面會(huì)討論如何構(gòu)建一個(gè)高效的分析流程,請(qǐng)保持關(guān)注哦。
今天就到這里了,see you!
更多精彩內(nèi)容請(qǐng)關(guān)注公眾號(hào):易微升
