寫(xiě)在前面
活著的軟件尚镰,不會(huì)停止更新。只是每一個(gè)軟件更新(對(duì)外開(kāi)放新版本)的頻率不同反番。曾經(jīng)TBtools平均每天一更,當(dāng)然現(xiàn)在已經(jīng)很長(zhǎng)時(shí)間不更新了叉钥,或者確切地說(shuō)罢缸,并不那么頻繁地推出新版本了。這或許有兩個(gè)方面的原因:
- 經(jīng)過(guò)大部分用戶的測(cè)試和使用投队,軟件的大多數(shù)常用功能魯棒性較好枫疆,不會(huì)有程序上的問(wèn)題,所以無(wú)需更新敷鸦;
- 常見(jiàn)的需求會(huì)被提出息楔,但需求類型是有限的。TBtools從某個(gè)角度來(lái)說(shuō)扒披,其實(shí)只是做了以前一切公司不愿意去做的事情值依,比如解決一些序列提取,自定義集合富集分析碟案,Blast和系列可視化等(當(dāng)然愿险,現(xiàn)在很多公司的云平臺(tái)也可以做,但是你也會(huì)發(fā)現(xiàn)价说,來(lái)來(lái)去去也就是那些功能)辆亏。
但回過(guò)來(lái)說(shuō),軟件的新版本推出又是必須的鳖目,這或許是另外三方面的原因:
- 已有的功能存在不足扮叨,必須盡快更新,或者說(shuō)是bugs fixing疑苔。這也是我一直希望所有人跟上TBtools的最新版本甫匹,雖然很少人接收到我的信息。這可能是因?yàn)椋?strong>TBtools本身用戶使用邏輯就是惦费,打開(kāi)兵迅,使用,關(guān)閉薪贫,換句話說(shuō)恍箭,有種日拋型隱形眼鏡感覺(jué)。
- 常見(jiàn)的需求是有限的瞧省,但新的需求是可以開(kāi)發(fā)的扯夭,比如前面TBtools推出的掰彎的熱圖鳍贾,似乎還是有不少用戶需求。但是至少交洗,從目前來(lái)看骑科,并不存在哪個(gè)公司或者云平臺(tái)去做這個(gè)事情」谷或許有一天大家也都能做呢咆爽?(事實(shí)上,似乎沒(méi)有人注意到置森,TBtools掰彎的熱圖可以從命令行直接出圖斗埂,這意味著存在一些公司,完全可以通過(guò)調(diào)用凫海,直接輸出掰彎的熱圖)呛凶。
- 已有的特性增強(qiáng),較大地提高軟件功能和用戶體驗(yàn)行贪。正如今天推送的主要內(nèi)容漾稀,我們課題組基于植物small RNA測(cè)序數(shù)據(jù)深度挖掘需求而設(shè)計(jì)的IGV-sRNA。
前述建瘫,可見(jiàn)標(biāo)題县好,我們已經(jīng)對(duì)IGV進(jìn)行了六次改造,得到了IGV-sRNA v0.1.6暖混,課題組做小RNA數(shù)據(jù)深度挖掘的需求已經(jīng)滿足,但在使用過(guò)程中翁授,我們?nèi)匀话l(fā)現(xiàn)一些問(wèn)題(用戶基數(shù)太小拣播,暫時(shí)僅限于XiaLab和合作課題組,所以問(wèn)題發(fā)現(xiàn)的速度也慢收擦,這與TBtools形成鮮明對(duì)比)贮配。既然發(fā)現(xiàn)了問(wèn)題,那么我們就又對(duì)IGV-sRNA進(jìn)行了第七次較大的改造塞赂,從而得到IGV-sRNA v0.2.x泪勒。
改造結(jié)果
更低的內(nèi)存需求,更多的數(shù)據(jù)加載能力
IGV在進(jìn)行讀段數(shù)據(jù)可視化時(shí)宴猾,為了節(jié)省內(nèi)存圆存,其會(huì)對(duì)Read進(jìn)行DownSample。這個(gè)本身沒(méi)問(wèn)題仇哆,但這就意味著沦辙,在Track中可使用的數(shù)據(jù),是已經(jīng)采樣的數(shù)據(jù)讹剔,無(wú)法用于正確地進(jìn)行其他Track如ReadLen或Phas Score的計(jì)算油讯。在IGV-sRNA v0.1.x中(尤其是后期版本)详民,我們采用的是重量級(jí)操作,直接在上游保存所有Reads到內(nèi)存陌兑。這看起來(lái)似乎并沒(méi)有問(wèn)題沈跨,但事實(shí)上會(huì)直接造成內(nèi)存占用的快速提升,同時(shí)卡頓的現(xiàn)象非常明顯(jvm的GC效率并不高)兔综。尤其體現(xiàn)在32位的操作系統(tǒng)中饿凛。在這里可能會(huì)有朋友認(rèn)為,那我們可以直接在Track中調(diào)用AlignmentFileReader邻奠,重新讀取笤喳。這里則會(huì)涉及兩個(gè)問(wèn)題,IGV本身涉及邏輯考慮了交互體驗(yàn)碌宴,同一個(gè)窗口不同的Tracks有延時(shí)裝載杀狡,在LoadData上對(duì)讀取邏輯進(jìn)行了優(yōu)化,這就使得我們?cè)黾痈嗟刈x取步驟贰镣,要么就強(qiáng)行讀取呜象,導(dǎo)致異常;要么就同步進(jìn)去碑隆,直接增加了使用時(shí)間恭陡,失去意義。當(dāng)然上煤,這里還有一個(gè)I/O速度的問(wèn)題休玩。總的來(lái)說(shuō)劫狠,我們使用了另外的邏輯拴疤,完成了這個(gè)問(wèn)題的處理。所以現(xiàn)在基本上并不需要有多少內(nèi)存的使用独泞,即使你有再多的數(shù)據(jù)輸入(比如我們將100個(gè)擬南芥sRNA sequencing data合并成bam作為輸入)呐矾。
更好的collasped數(shù)據(jù)解析邏輯
在IGV-sRNA v0.1.x中,我們只在IGV中對(duì)collasped的數(shù)據(jù)進(jìn)行實(shí)時(shí)解析懦砂,這是一個(gè)邏輯蜒犯,但整體上其實(shí)增加了IGV讀取Read Alignment數(shù)據(jù)的耗時(shí)。在IGV-sRNA v0.2.x中荞膘,我們直接修改htsjdk(這主要是IGV使用了它罚随,我們課題組有自己的sambam解析類),從讀取的層次直接解析衫画,同時(shí)并不會(huì)增加內(nèi)存的占用毫炉。這對(duì)small RNA測(cè)序來(lái)說(shuō)是一個(gè)不錯(cuò)的選擇。collpased數(shù)據(jù)的mapping作為IGV數(shù)據(jù)削罩,我們可以減少硬件IO的次數(shù)瞄勾,而增加內(nèi)存中解析的次數(shù)费奸,這是有賺無(wú)賠的操作。當(dāng)然更不談沒(méi)有collasped和collasped之后的數(shù)據(jù)在readmapping和數(shù)據(jù)傳輸時(shí)的時(shí)間差进陡。我們自然不能不知道愿阐,read mapping在很多時(shí)候mapping是一個(gè)問(wèn)題,IO更是一個(gè)問(wèn)題趾疚。
更合理的Read Len Dots Track展示方式
在前述缨历,我們?cè)贗GV中增加了Read Length Track,這個(gè)track可以很好的辨識(shí)每個(gè)位點(diǎn)糙麦,匹配的不同長(zhǎng)度的Reads的豐度辛孵,無(wú)論是在miRNA或者是phasiRNAs來(lái)源位點(diǎn)的觀測(cè)上,效果均較好赡磅。但是在之前的版本中魄缚,我們并沒(méi)有區(qū)分正反鏈,這樣看起來(lái)并不清晰焚廊,尤其是對(duì)于PHAS loci冶匹。在新的版本中,我們將比對(duì)到正反鏈的Read Dots分開(kāi)展示咆瘟,同時(shí)在中間加一條線嚼隘。可以很好的區(qū)分正反鏈袒餐。
更好的豐度指示方式
在IGV-sRNA中做數(shù)據(jù)探索時(shí)飞蛹,我們常常會(huì)遇到這么一種情況,下圖(擬南芥TAS3)灸眼,
可以看到桩皿,這整個(gè)位點(diǎn)有一個(gè)極高豐度的讀段,使得其他點(diǎn)無(wú)法被清晰的查看幢炸。我們很清楚,這是一個(gè)PHAS位點(diǎn)拒贱。所以此時(shí)宛徊,我們打開(kāi)IGV-sRNA的Real time Phas Score calculation track,或者是直接對(duì)ReadLen Track逻澳,進(jìn)行Set DataRange闸天,如設(shè)置1000,得到以下
這樣的效果就比較明顯斜做,有小RNA數(shù)據(jù)分析經(jīng)驗(yàn)的可以大體判斷出其很可能是phas位點(diǎn)苞氮。上圖出來(lái),其實(shí)很明顯瓤逼,我們可能無(wú)法判斷該位點(diǎn)的豐度到底是超過(guò)1000笼吟,還是接近于1000库物,所以,我們又增加了特性贷帮,使用三角形展示豐度更高的數(shù)值戚揭。
事實(shí)上,我們從這些三角型的分布方式撵枢,就可以更確定民晒,是Phas位點(diǎn)無(wú)誤。
更智能的auto-scale
上述锄禽,我們使用1000作為最大值潜必,但他對(duì)當(dāng)前位點(diǎn)有用(示例數(shù)據(jù)是1000套sRNA sequencing data,所以豐度都很高)沃但,并不是每個(gè)位點(diǎn)都比較有效磁滚。比如另外低豐度的位點(diǎn),我們可能需要設(shè)置150绽慈『藓担基于這個(gè)需求,我們?cè)贗GV-sRNA v0.2.x中增加了選項(xiàng)坝疼,Top50 as MaxRange搜贤。也就是把豐度排名前第50的豐度作為當(dāng)前區(qū)間的最高豐度。這樣我們就可以在很多時(shí)候钝凶,減少用戶的Set DataRange操作仪芒,如下
更快的Phas Score 實(shí)時(shí)計(jì)算邏輯
無(wú)論上述我怎么說(shuō)ReadLen Track的查看,在Phas位點(diǎn)的鑒定上有多大用處耕陷,但都不是解決的根本掂名。更好的辦法是查看Phas Score的分布。在官方的IGV中哟沫,用戶一般需要對(duì)每套數(shù)據(jù)自行計(jì)算好Phas Score的BedGraph文件(一般是Mb級(jí)的文本)饺蔑,隨后導(dǎo)入IGV,這不僅增加了處理復(fù)雜度嗜诀,更增加了內(nèi)存的使用猾警。最好的方式是實(shí)時(shí)計(jì)算。在IGV-sRNA v0.1.x中隆敢,我們已經(jīng)實(shí)現(xiàn)了Phas Score Calc. in Fly-time发皿。用戶只需像正常使用IGV一樣拖動(dòng)即可同步查看任意位點(diǎn)的Phas Score情況,但之前的計(jì)算邏輯相對(duì)重量拂蝎,見(jiàn)上文穴墅。在IGV-sRNA v0.2.x中,我們啟用新邏輯后,現(xiàn)在幾乎實(shí)現(xiàn)零延遲玄货,目前測(cè)試效果是毫無(wú)卡頓感皇钞。總的來(lái)說(shuō)誉结,這是一個(gè)非常重大的增強(qiáng)鹅士。
更清晰的Phas Score Tracks可視化方式
在前述版本,我使用的是Bar Plot去繪制Phas Score惩坑,但這點(diǎn)與博士導(dǎo)師(Dr.Xia)的觀點(diǎn)有不一致掉盅。其提出,往往在發(fā)表論文中以舒,我們使用的Line Plot趾痘。當(dāng)然,這是一個(gè)事實(shí)蔓钟。一開(kāi)始我是抗拒的永票,但實(shí)現(xiàn)起來(lái)其實(shí)難度并不是很大。于是我增加了Options滥沫。
具體博導(dǎo)可以用他喜歡的Line Plot侣集,我可以用我喜歡的Bar plot。當(dāng)然兰绣,似乎我現(xiàn)在也接受世分,Line Plot似乎確實(shí)更好看。這主要是因?yàn)閟econdary PhasiRNAs的Peaks確實(shí)在lIne Plot中更容易辨識(shí)缀辩。
一個(gè)更優(yōu)秀的IGV-sRNA臭埋,即v0.2.x
寫(xiě)在最后
馬上就是暑期了,提前祝大家暑期快樂(lè)臀玄,科研順利瓢阴!
修改版IGV的獲取方式
近日有多個(gè)朋友聯(lián)系過(guò)來(lái),想要使用這個(gè)改造后的IGV健无。嗯...
我個(gè)人的想法是:
- 付費(fèi)荣恐,如資助XiaLab課題組出游一次,大體價(jià)格是3K累贤,那么將獲得本年度(如果還有更細(xì)的話)的我經(jīng)手的IGV更新功能募胃。
- 直接聯(lián)系課題組PI即RX獲取,課題組主頁(yè)為 http://xialab.scau.edu.cn/