参考:https://www.jianshu.com/p/14f1d64d220f
二次开发前:了解原本有的功能,避免重复,方法:看官方文档
画出需求设计图,有的放矢。
需求:

用三个文件:分段比对的、meta的、intron的。多加一个track,在intron3‘ss位置将intron用极坐标表示,外圈是分段比对的,内圈是meta的序列,用同样的颜色表示同一个片段出来的read。渐变色不便于识别,放弃。
可以先在python中写一个小demo,再移植到igv。
或者,只要找到igv是如何确定位置的,再将坐标转换为极坐标,即可将图像改变。
考虑各个层次结构:从igv的文章中可以看到
找到https://docs.oracle.com/javase/6/docs/api/java/awt/Graphics2D.html,graphics2D画图的部分。只能对画出的图旋转等,虽然也能画弧形,但是不如只变换坐标画图方便。
再找点文献,不行先自己写一个,然后再套进igv。Visualization of RNA structure models within the Integrative Genomics Viewer
从补充材料找结构 https://www.ncbi.nlm.nih.gov/pmc/articles/PMC3346182/

coverage-tract


attribute位置:





是alignment。
目前决定的思路是:
用readref的方法,读出每个inron的x1,x2,作为画圆弧的参数
用readsam的方法,读出每个read的x1,x2,转换到圆弧上。并设置弧线宽度。
先在gui上尝试用graphics2D画一下,可以之后再在track中加上。




http://www.doczj.com/doc/1e9edb9d55270722182ef723-8.html



用了几天大概理清igv的层次,尝试简单按照其思路在GUI中复现
选择idea做编辑器(与IGV的编辑器保持一致)

简单画一条线尝试一下。
具体的建GUI参考如下:
https://www.jianshu.com/p/cdca9a30b86b
https://www.cnblogs.com/wq-blogs/p/12701857.html,这个主要看建GUI form的地方,其他参考1
IGV的大体层次是:
trick (轨道)
rectangle(轨道里的每一个row)
g.fillpolygon(画每条read)
复现/改写的步骤也是:
先建立一个track
再计算rectangle的x,y 因为条数多了y需要加高,并且因为是画环形,y需要重新计算,而x可以直接拿来用
算每层多加的y
画弧线,并用storken设定宽度。
IGV的代码目前来说太长了,能看懂的部分未比对,需要先复现一下,然后再接着看。
要增加的部分就是1.加rtack 2.画环形和弧形(用readGFF3 和readSAM类里的方法)
待验证正确后,会将IGV代码逻辑和结构整理好写一下。
在参考文献是发现,有写IGV插件发文章的:

网友评论