寫在寫在前面的前面 中午一個師弟說,,手上有一個需求,,需要確定某個模式在荔枝所有基因的啟動子區(qū)域內(nèi)是否存在。事實上,,這很明顯就是要看某個轉(zhuǎn)錄因子是否是調(diào)控哪些基因,,我一看模式就知道,必定是ERF,,因為是典型的GCC-box序列,。 一提到這個,我的想法是: 復(fù)雜的操作,,那么你最好用MEME,,MAST,所以可能需要稍微寫個小教本,,但是事實上,,你也可以用TBtools,我早就打包了Windows, Linux, MacOS的執(zhí)行器,。所以,。。,。有那么復(fù)雜嗎,? 簡單的操作,事實上大部分人需要的是Perfect Match,,當然你也可以自己寫正則,。我在半年前就開放了TBtools的一個序列模式定位功能(附加在下方)。
如果是我直接在命令行下操作,,那么我一兩分鐘就搞定,,如下
我在寫這個命令的時候,考慮了: 基因組存儲序列是會存在換行的,,往往60個字符一行,,模式匹配的時候需要考慮這個 使用-0777一次性讀取整個文件進行檢索,因為這個正則幾乎不會出現(xiàn)在header上,,沒必要搞得太復(fù)雜,。 基因組序列中可能會有大小寫(當然,手上這個文件,,必然是小寫,,因為使用TBtools一次性提取的所有基因的啟動子區(qū)域,我當然知道只有小寫)
最后,,我們得到上述的一行perl命令,。
問題解決,,但是還是存在另外兩個問題:
如果用戶不是需要數(shù)目,而是需要每個序列,,甚至是匹配位置,? 如果基因組很大,比如16G的小麥基因組,,那么上述這個命令至少主要32Gb的內(nèi)存,,運行慢且不說... 無論基因組大小如何,模式匹配本身就比直接indexOf()慢很多,,這是基本的編程基礎(chǔ)知識 ....
上述這些問題,,在TBtools里面都不是問題,即是你用的是1個T的基因組,,只要你愿意花一點點時間等待,,那么TBtools都能幫你找出所有匹配的位置,而且還很快,,比上述那行perl快,;而且給出的信息還很全面,包括所有匹配位置,;當然還支持正則等等等等 輸出結(jié)果還很優(yōu)美
同樣是736個.... 最后,,還是補充一句: 無論你是做實驗的,還是做數(shù)據(jù)分析的,,TBtools都值得你推薦給身邊的人,。因為你是前者,那么TBtools減少你的煩惱,,給你補充一些基礎(chǔ)數(shù)據(jù)分析能力,;如果你是后者,那么TBtools可以減少其他成員占用你的工作時間,,你應(yīng)該去做一些有深度的分析,,而不是幫其他人做一些任何人都能簡單搞定的事情,比如做個熱圖,,有意思嗎? 當然了,,你在高校是如此,;你在公司亦是如此,減少你客戶的煩惱,;降低公司技術(shù)運維的工作量,。
附加半年前TBtools的推文如下: 寫在前面TBtools開發(fā)至今三年有余,,讓開發(fā)工作的持續(xù)開展,,事實上主要來源于用戶朋友的信任與支持。總的來說,,我對多數(shù)用戶存在某種意義上的感謝,,畢竟使用一個未正式發(fā)表的工具,并在漂亮的發(fā)表工作引用,,是對我個人能力在某種程度的認可,。 與開發(fā)早期極少數(shù)負面評價相同,同樣存在一部分非常支持TBtools的開發(fā)工作,。部分朋友,,甚至將TBtools應(yīng)用于學(xué)校課堂教學(xué)。這是我從未敢想的事,,畢竟TBtools事實上只是我們課題組(前面碩士與現(xiàn)在博士)分析需求的部分體現(xiàn),。 我是一個潮汕人,潮汕人(或者可能是我家人給我的感覺)有一個傳統(tǒng),,即知恩圖報,,更或者說,滴水之恩,,涌泉相報,。 開發(fā)這一功能的起因在非常支持TBtools開發(fā)的用戶朋友中,其常常與我提起,, 能否開發(fā)出一個支持正則表達式檢索的工具,?用于查找結(jié)構(gòu)域或者特定的模式,如微衛(wèi)星....
總的來說,,我覺得這個功能似乎我并不一定用得到,,所以我或者會建議其去找另外的工具,比如MEME suite的MAST,,或者自己編程實現(xiàn),。但是最后,似乎他還是沒有按照我說的去操作,。 昨晚我在等待數(shù)據(jù)下載的過程中,,再次看到其提起。我想這已經(jīng)是其超過三次的提起,,或許確實可以花時間試試,,畢竟辜負一個一直支持你的人的期待,似乎是一種不講義氣的操作,。我大體想了下,,這個事情似乎還不是我以前想的那么簡單。 MAST是不允許gaps的,,其最大的作用是允許misM 自己變成時,,那么多行的序列的回車需要處理,;而如果一次將整條序列讀入內(nèi)存,那么遇到chromosome時,,可能會有內(nèi)存不足,。 序列模式的Overlap的情況需要處理 不定長度的正則要求,可能確實不好找到工具來處理
總的來說,,似乎確實找不到合適的工具可以很好的支持這些需求,。所以,我寫了一個,。 功能的使用首先是打開TBtools,,找到最新的功能,Fasta Sequence Pattern Locator
需要設(shè)置的是三個參數(shù):
對于輸入的序列文件,,事實上,,需要保證的只是Fasta格式,而與其序列長度與類型(全基因組序列或者蛋白序列等)沒有關(guān)系,。 對于序列模式,,那么需要用戶對正則表達式有一定的了解,比如挖掘微衛(wèi)星(AT){6,} 表示ATATATATATAT....,;或者從mRNA中預(yù)測ORF,,ATG(?:\w{3})+T(?:AG|AA|GA) ,隨后對每個序列取最長的一個最長ORF即是,。當然,,也可以使蛋白的某些序列模式... 如果確實不了解正則表達式,其實還是比較簡單,,大概可能知道
ATCG 對應(yīng)的就是 四個堿基,,ATCG [ATCG] 對應(yīng)的是 一個堿基,A或T或C或G [^AT] 對應(yīng)的是 一個堿基,,但不會是A或者T (AT) 對應(yīng)的是 兩個堿基,,把AT定位一個單元 (AT){6} 對應(yīng)的是 2x6,一共 12 個堿基,,也就是AT重復(fù)正好6次,,如ATATATATATAT (AT){,6} 對應(yīng)的是(AT)重復(fù)不多于6次,如AT, ATAT, ATATAT, ATATATAT, ATATATATAT, ATATATATATAT (AT){,6} 對應(yīng)的是(AT)重復(fù)不低于6次, ATATATATATAT, ATATATATATATATATATATATAT..... 等等....
Overlap參數(shù),,大體對應(yīng)的就是模式之間是否允許Overlap, 比如ATG\w{111}TGA ,,那么在這個模式捕獲出來的序列中間是否有可能出現(xiàn)新的ATG? Max Sequence Pattern(kb),查找出來的片段大小,,不能長于這個長度,,如2即2kb,。這個參數(shù)事實上,,也對模式查找存在一定的影響,。對于Overlap模式的,沒有影響,。對于不Overlap的,,可能會丟失一小部分模式。 當所有參數(shù)設(shè)置好之后,,設(shè)置輸出文件,,注意補齊文件名。隨后點擊Start即可,。 輸出結(jié)果輸出的結(jié)果,,主要分為四列 分別是: 序列ID 起始坐標 終止坐標 匹配到模式的序列
其實是可以支持多個模式一次查找的,但我確實沒有感覺到這個需求的大小,,所以暫時也懶得支持,。
|