在笔记本中嵌入基因组可视化igv.js的jupyter扩展

igv-jupyter的Python项目详细描述


IGV Jupyter扩展

Binder

igv jupyter是Jupyter Notebook的扩展,它 包装igv.js。带着这个 可以在单元格中呈现igv.js并从中调用其api的扩展 笔记本。扩展公开了一个模仿igv.js的python api。 浏览器创建和控制API。词典用于浏览和跟踪 配置对象。轨道数据可以从本地或远程加载 或者直接作为对象列表提供。

安装

要求:

  • python=3.6.4
  • jupyter=4.2.0
pip install igv

# To install to configuration in your home directory
jupyter serverextension enable --py igv
jupyter nbextension install --py igv
jupyter nbextension enable --py igv


# If using a virtual environment or conda (don't forget to activate
jupyter serverextension enable --py igv --sys-prefix
jupyter nbextension install --py igv --sys-prefix
jupyter nbextension enable --py igv --sys-prefix

用法

示例

github存储库中提供了示例笔记本。要下载而不克隆存储库,请使用 这个link。笔记本电脑在 “示例”目录。

初始化

将igv实例插入单元格:

(1)创建一个igv.browser对象,(2)在实例上调用showbrowser。

示例:

importigvb=igv.Browser({"genome":"hg19"})

browser初始值设定项接受一个配置对象,该对象被转换为json并传递给igv.js createbrowser函数。配置对象在 igv.js documentation

在单元格调用show()中实例化客户端igv实例

b.show()

曲目

要加载轨迹,请将轨迹配置对象传递到load_track()。轨道配置 对象在igv.js documentation中描述。 配置对象将转换为json并传递给igv.js浏览器 实例。

跟踪的数据可以通过url加载,也可以作为json对象数组直接传递。

远程URL

b.load_track({"name":"Segmented CN","url":"https://data.broadinstitute.org/igvdata/test/igv-web/segmented_data_080520.seg.gz","format":"seg","indexed":False})

本地文件

通过在路径前面加上“文件”,可以使用Jupyter Web服务器从本地文件加载曲目。路径 相对于笔记本文件。

b.load_track({"name":"Local VCF","url":"files/data/example.vcf","format":"vcf","type":"variant","indexed":False})

嵌入式功能

功能也可以直接传递到曲目。

b.load_track({"name":"Copy number","type":"seg","displayMode":"EXPANDED","height":100,"isLog":True,"features":[{"chr":"chr20","start":1233820,"end":1235000,"value":0.8239,"sample":"TCGA-OR-A5J2-01"},{"chr":"chr20","start":1234500,"end":1235180,"value":-0.8391,"sample":"TCGA-OR-A5J3-01"}]})

导航

放大倍数为2

b.zoom_in()

缩小2倍

b.zoom_out()

跳到特定轨迹

b.search('chr1:3000-4000')

跳到一个特定的基因。这使用了igv搜索web服务,该服务目前支持有限数量的基因组:hg38、hg19和mm10。 要配置自定义搜索服务,请参见igv.js documentation

b.search('myc')

SVG输出

将当前igv视图保存为svg图像需要两次调用。

b.get_svg()b.display_svg()

事件

注意:这是一个实验特性。

deflocuschange(data):b.locus=datab.on("locuschange",locuschange)b.zoom_in()returnb.locus

开发

从源代码生成和安装:

python setup.py build
pip install -e .
jupyter nbextension install --py igv
jupyter nbextension enable --py igv

创建conda环境

conda create -n testpython=3.7.1
conda activate test
conda install pip
conda install jupyter

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java Jetty是否有请求缓存?   数组中的java 2值与我的数据帧中的2列对应   对象序列化期间的java DbUtils类型转换问题   java根面板中不显示所有单独的面板   java通过代理或SSH隧道连接Hbase API   java困惑:与经典MVC控制器相比,JSF2中bean的角色   java在我的Triangle类中“找不到符号错误”   java在Android中设置从路径到自定义按钮的图像   java不绕轨道旋转椭圆   AES在socket上搞砸了序列化/反序列化。无效的流标头。JAVA   java在数组中搜索term和if语句   线程“main”java中出现异常。util。正则表达式。PatternSyntaxException:在索引0附近悬挂元字符“*”*   Websphere上的java Google反射无法打开url连接   java为什么inc/dec频道什么都不做?   java KeyListener无法访问keyPressed方法