「fastANI」軟件界面化實(shí)踐~ 解決Windows下全基因組相似度快速分析

終于有第一個(gè)投稿的插件,來(lái)自多年前的師弟 Chuhao Li (估計(jì)他入學(xué)的時(shí)候可能我正好開始寫 TBtools,或者沒(méi)寫多久忘瓦?)。他干了一個(gè)出乎無(wú)意料的插件引颈,尤其是用了 Python政冻!雖然我說(shuō)過(guò),邏輯上是支持的线欲,但沒(méi)想到真能支持(雖然不是用解釋器,不過(guò)師弟用的方式似乎更好汽摹,體積更欣罘帷)。相關(guān)插件已經(jīng)上傳到「TBtools」的「Plugin Store」逼泣,歡迎大伙下載使用趴泌。期待大伙一起開發(fā)實(shí)用工具,加速更多人的生信數(shù)據(jù)分析拉庶。 - CJ - 陳程杰

前言

平均核苷酸一致性(average nucleotide identity, ANI)是衡量基因組之間相似性的一個(gè)常用指標(biāo)嗜憔。windows下暫時(shí)沒(méi)發(fā)現(xiàn)一個(gè)好用的可以計(jì)算ANI的工具。fastANI是在linux下用C++開發(fā)的一個(gè)小巧氏仗、快速的ANI計(jì)算工具吉捶。最近,CJ大神發(fā)布了TBtools新插件“CLI program wrapper creator”皆尔,可以大大縮減圖形化界面工具開發(fā)的時(shí)間成本呐舔。這里,我介紹一下我是如何把linux上的命令行工具移植到TBtools上的慷蠕。

折騰過(guò)程

編譯

一開始珊拼,我使用cygwin來(lái)編譯能在windows下運(yùn)行的fastANI。主要包括以下步驟:

  • a. 安裝工具cygwin流炕。下載fastANI源碼澎现。
  • b. 安裝編譯依賴環(huán)境cygwin有一個(gè)圖形化的應(yīng)用安裝界面仅胞,還是挺方便的。根據(jù)fastaANI的文檔剑辫,需要安裝的依賴包括:gcc-g++, mingw64-x86_64-gcc-g++, mingw64-x86_64-gsl, mingw64-x86_64-zlib, make, autoconf.
  • c. 編譯干旧。configure完,直接make便是揭斧。源碼中有兩個(gè)地方導(dǎo)致了編譯失敗莱革,一個(gè)是“unsetenv”,還有一個(gè)是“.symenv”讹开。 前者是要去掉某個(gè)環(huán)境變量盅视,取消系統(tǒng)對(duì)多線程的限制,后者是要告訴編譯器使用特定版本的庫(kù)旦万。我把這兩個(gè)地方注釋掉了闹击,后面測(cè)試過(guò),對(duì)程序運(yùn)行沒(méi)有影響成艘。編譯成功后赏半,得到一個(gè)fastANI.exe程序,可以在windows的命令行下運(yùn)行淆两。
  • d. 測(cè)試断箫。

測(cè)試時(shí)發(fā)現(xiàn),只要用到2個(gè)或以上的線程秋冰,幾乎完全跑不動(dòng)仲义。進(jìn)一步測(cè)試,確定了凡是使用到openmp來(lái)并行的地方剑勾,速度就會(huì)奇慢埃撵。有幾種解決方案:

  • a. 更換編譯器。使用了mingw虽另,不行暂刘。
  • b. 修改源碼中多線程的邏輯。不會(huì)改捂刺。
  • c. 改寫源碼谣拣,用msvc等windows原生編譯工具重新編譯。更不會(huì)改族展。
  • d. 只用單線程版本芝发,外面套一層python來(lái)實(shí)現(xiàn)多線程。這是我最終使用的方案苛谷。

python打包

腳本主要包含4個(gè)步驟:

  1. 命令行解析辅鲸。
  2. 多線程調(diào)用fastANI。
  3. 合并結(jié)果腹殿。
  4. 使用pyinstaller打包独悴。

這時(shí)候例书,我就得到了一個(gè)可以在windows下多線程運(yùn)行的fastANI程序。接下來(lái)刻炒,就到TBtools發(fā)揮作用了决采。界面生成的過(guò)程非常簡(jiǎn)單,可以參考CJ前兩天的推文坟奥。

使用

安裝好的程序树瞭,在Others -> Plugin -> fastANI_w 下。

在界面中輸入運(yùn)行所需信息:

  1. 輸入query fasta序列所在路徑(可以直接從文件夾拖進(jìn)來(lái))爱谁。
  2. 輸入reference fasta序列所在路徑(可以直接從文件夾拖進(jìn)來(lái))晒喷。
  3. 勾選“include fasta files in the same directory”。這樣访敌,如果你的query/reference所在文件夾中如果有多個(gè)fasta文件凉敲,就都會(huì)讀取到。適用于一個(gè)基因組比對(duì)多個(gè)寺旺,或者多個(gè)比對(duì)多個(gè)的情況爷抓。
  4. 指定線程數(shù),默認(rèn)為4阻塑。
  5. 指定輸出文件蓝撇。

填好以上參數(shù),點(diǎn)擊“start”即可陈莽。這里測(cè)試了兩個(gè)對(duì)兩個(gè)的情況唉地,幾秒鐘就完成了。

結(jié)果是一個(gè)tab分隔符文件传透,總共5列,其中第三列是ANI极颓。

總結(jié)

非常曲折的過(guò)程朱盐。希望對(duì)大家有幫助。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末菠隆,一起剝皮案震驚了整個(gè)濱河市兵琳,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌骇径,老刑警劉巖躯肌,帶你破解...
    沈念sama閱讀 216,324評(píng)論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異破衔,居然都是意外死亡清女,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,356評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門晰筛,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)嫡丙,“玉大人拴袭,你說(shuō)我怎么就攤上這事∈锊” “怎么了拥刻?”我有些...
    開封第一講書人閱讀 162,328評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)父泳。 經(jīng)常有香客問(wèn)我般哼,道長(zhǎng),這世上最難降的妖魔是什么惠窄? 我笑而不...
    開封第一講書人閱讀 58,147評(píng)論 1 292
  • 正文 為了忘掉前任蒸眠,我火速辦了婚禮,結(jié)果婚禮上睬捶,老公的妹妹穿的比我還像新娘黔宛。我一直安慰自己,他們只是感情好擒贸,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,160評(píng)論 6 388
  • 文/花漫 我一把揭開白布臀晃。 她就那樣靜靜地躺著,像睡著了一般介劫。 火紅的嫁衣襯著肌膚如雪徽惋。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,115評(píng)論 1 296
  • 那天座韵,我揣著相機(jī)與錄音险绘,去河邊找鬼。 笑死誉碴,一個(gè)胖子當(dāng)著我的面吹牛宦棺,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播黔帕,決...
    沈念sama閱讀 40,025評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼代咸,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了成黄?” 一聲冷哼從身側(cè)響起呐芥,我...
    開封第一講書人閱讀 38,867評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎奋岁,沒(méi)想到半個(gè)月后思瘟,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,307評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡闻伶,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,528評(píng)論 2 332
  • 正文 我和宋清朗相戀三年滨攻,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,688評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡铡买,死狀恐怖更鲁,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情奇钞,我是刑警寧澤澡为,帶...
    沈念sama閱讀 35,409評(píng)論 5 343
  • 正文 年R本政府宣布,位于F島的核電站景埃,受9級(jí)特大地震影響媒至,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜谷徙,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,001評(píng)論 3 325
  • 文/蒙蒙 一拒啰、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧完慧,春花似錦谋旦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,657評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至脾歧,卻和暖如春甲捏,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背鞭执。 一陣腳步聲響...
    開封第一講書人閱讀 32,811評(píng)論 1 268
  • 我被黑心中介騙來(lái)泰國(guó)打工司顿, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人兄纺。 一個(gè)月前我還...
    沈念sama閱讀 47,685評(píng)論 2 368
  • 正文 我出身青樓大溜,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親估脆。 傳聞我的和親對(duì)象是個(gè)殘疾皇子钦奋,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,573評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容