IGV-基因组浏览器-改造记录(七)

写在前面

活着的软件,不会停止更新。只是每一个软件更新(对外开放新版本)的频率不同。曾经TBtools平均每天一更,当然现在已经很长时间不更新了,或者确切地说,并不那么频繁地推出新版本了。这或许有两个方面的原因:

  1. 经过大部分用户的测试和使用,软件的大多数常用功能鲁棒性较好,不会有程序上的问题,所以无需更新;
  2. 常见的需求会被提出,但需求类型是有限的。TBtools从某个角度来说,其实只是做了以前一切公司不愿意去做的事情,比如解决一些序列提取,自定义集合富集分析,Blast和系列可视化等(当然,现在很多公司的云平台也可以做,但是你也会发现,来来去去也就是那些功能)。

但回过来说,软件的新版本推出又是必须的,这或许是另外三方面的原因:

  1. 已有的功能存在不足,必须尽快更新,或者说是bugs fixing。这也是我一直希望所有人跟上TBtools的最新版本,虽然很少人接收到我的信息。这可能是因为,TBtools本身用户使用逻辑就是,打开,使用,关闭,换句话说,有种日抛型隐形眼镜感觉。
  2. 常见的需求是有限的,但新的需求是可以开发的,比如前面TBtools推出的掰弯的热图,似乎还是有不少用户需求。但是至少,从目前来看,并不存在哪个公司或者云平台去做这个事情。或许有一天大家也都能做呢?(事实上,似乎没有人注意到,TBtools掰弯的热图可以从命令行直接出图,这意味着存在一些公司,完全可以通过调用,直接输出掰弯的热图)。
  3. 已有的特性增强,较大地提高软件功能和用户体验。正如今天推送的主要内容,我们课题组基于植物small RNA测序数据深度挖掘需求而设计的IGV-sRNA。

前述,可见标题,我们已经对IGV进行了六次改造,得到了IGV-sRNA v0.1.6,课题组做小RNA数据深度挖掘的需求已经满足,但在使用过程中,我们仍然发现一些问题(用户基数太小,暂时仅限于XiaLab和合作课题组,所以问题发现的速度也慢,这与TBtools形成鲜明对比)。既然发现了问题,那么我们就又对IGV-sRNA进行了第七次较大的改造,从而得到IGV-sRNA v0.2.x。

改造结果

更低的内存需求,更多的数据加载能力

IGV在进行读段数据可视化时,为了节省内存,其会对Read进行DownSample。这个本身没问题,但这就意味着,在Track中可使用的数据,是已经采样的数据,无法用于正确地进行其他Track如ReadLen或Phas Score的计算。在IGV-sRNA v0.1.x中(尤其是后期版本),我们采用的是重量级操作,直接在上游保存所有Reads到内存。这看起来似乎并没有问题,但事实上会直接造成内存占用的快速提升,同时卡顿的现象非常明显(jvm的GC效率并不高)。尤其体现在32位的操作系统中。在这里可能会有朋友认为,那我们可以直接在Track中调用AlignmentFileReader,重新读取。这里则会涉及两个问题,IGV本身涉及逻辑考虑了交互体验,同一个窗口不同的Tracks有延时装载,在LoadData上对读取逻辑进行了优化,这就使得我们增加更多地读取步骤,要么就强行读取,导致异常;要么就同步进去,直接增加了使用时间,失去意义。当然,这里还有一个I/O速度的问题。总的来说,我们使用了另外的逻辑,完成了这个问题的处理。所以现在基本上并不需要有多少内存的使用,即使你有再多的数据输入(比如我们将100个拟南芥sRNA sequencing data合并成bam作为输入)。

更好的collasped数据解析逻辑

在IGV-sRNA v0.1.x中,我们只在IGV中对collasped的数据进行实时解析,这是一个逻辑,但整体上其实增加了IGV读取Read Alignment数据的耗时。在IGV-sRNA v0.2.x中,我们直接修改htsjdk(这主要是IGV使用了它,我们课题组有自己的sambam解析类),从读取的层次直接解析,同时并不会增加内存的占用。这对small RNA测序来说是一个不错的选择。collpased数据的mapping作为IGV数据,我们可以减少硬件IO的次数,而增加内存中解析的次数,这是有赚无赔的操作。当然更不谈没有collasped和collasped之后的数据在readmapping和数据传输时的时间差。我们自然不能不知道,read mapping在很多时候mapping是一个问题,IO更是一个问题。

更合理的Read Len Dots Track展示方式

在前述,我们在IGV中增加了Read Length Track,这个track可以很好的辨识每个位点,匹配的不同长度的Reads的丰度,无论是在miRNA或者是phasiRNAs来源位点的观测上,效果均较好。但是在之前的版本中,我们并没有区分正反链,这样看起来并不清晰,尤其是对于PHAS loci。在新的版本中,我们将比对到正反链的Read Dots分开展示,同时在中间加一条线。可以很好的区分正反链。


更好的丰度指示方式

在IGV-sRNA中做数据探索时,我们常常会遇到这么一种情况,下图(拟南芥TAS3),


可以看到,这整个位点有一个极高丰度的读段,使得其他点无法被清晰的查看。我们很清楚,这是一个PHAS位点。所以此时,我们打开IGV-sRNA的Real time Phas Score calculation track,或者是直接对ReadLen Track,进行Set DataRange,如设置1000,得到以下

这样的效果就比较明显,有小RNA数据分析经验的可以大体判断出其很可能是phas位点。上图出来,其实很明显,我们可能无法判断该位点的丰度到底是超过1000,还是接近于1000,所以,我们又增加了特性,使用三角形展示丰度更高的数值。

事实上,我们从这些三角型的分布方式,就可以更确定,是Phas位点无误。

更智能的auto-scale

上述,我们使用1000作为最大值,但他对当前位点有用(示例数据是1000套sRNA sequencing data,所以丰度都很高),并不是每个位点都比较有效。比如另外低丰度的位点,我们可能需要设置150。基于这个需求,我们在IGV-sRNA v0.2.x中增加了选项,Top50 as MaxRange。也就是把丰度排名前第50的丰度作为当前区间的最高丰度。这样我们就可以在很多时候,减少用户的Set DataRange操作,如下


更快的Phas Score 实时计算逻辑

无论上述我怎么说ReadLen Track的查看,在Phas位点的鉴定上有多大用处,但都不是解决的根本。更好的办法是查看Phas Score的分布。在官方的IGV中,用户一般需要对每套数据自行计算好Phas Score的BedGraph文件(一般是Mb级的文本),随后导入IGV,这不仅增加了处理复杂度,更增加了内存的使用。最好的方式是实时计算。在IGV-sRNA v0.1.x中,我们已经实现了Phas Score Calc. in Fly-time。用户只需像正常使用IGV一样拖动即可同步查看任意位点的Phas Score情况,但之前的计算逻辑相对重量,见上文。在IGV-sRNA v0.2.x中,我们启用新逻辑后,现在几乎实现零延迟,目前测试效果是毫无卡顿感。总的来说,这是一个非常重大的增强。

更清晰的Phas Score Tracks可视化方式

在前述版本,我使用的是Bar Plot去绘制Phas Score,但这点与博士导师(Dr.Xia)的观点有不一致。其提出,往往在发表论文中,我们使用的Line Plot。当然,这是一个事实。一开始我是抗拒的,但实现起来其实难度并不是很大。于是我增加了Options。



具体博导可以用他喜欢的Line Plot,我可以用我喜欢的Bar plot。当然,似乎我现在也接受,Line Plot似乎确实更好看。这主要是因为secondary PhasiRNAs的Peaks确实在lIne Plot中更容易辨识。

一个更优秀的IGV-sRNA,即v0.2.x

写在最后

马上就是暑期了,提前祝大家暑期快乐,科研顺利!

修改版IGV的获取方式

近日有多个朋友联系过来,想要使用这个改造后的IGV。嗯...
我个人的想法是:

  1. 付费,如资助XiaLab课题组出游一次,大体价格是3K,那么将获得本年度(如果还有更细的话)的我经手的IGV更新功能。
  2. 直接联系课题组PI即RX获取,课题组主页为 http://xialab.scau.edu.cn/
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 195,783评论 5 462
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 82,360评论 2 373
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 142,942评论 0 325
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,507评论 1 267
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,324评论 5 358
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,299评论 1 273
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,685评论 3 386
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,358评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,652评论 1 293
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,704评论 2 312
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,465评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,318评论 3 313
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,711评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,991评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,265评论 1 251
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,661评论 2 342
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,864评论 2 335

推荐阅读更多精彩内容