用Python实现Circos图的在线绘制的Circos有局限性,如对数据的要求、个性局限理速度等的问题,但如果你是一个Pythoneer或者喜欢用更加Pythonic的方式来个性化地绘制Circos图,那么今天就跟随我一起用代码实现这一目标吧!

安装Circos包

首先,登录Python的包索引网站Python Package Index(PyPI,正确读音是:Pie Pee Ai),找到Circos包的下载页:

https://pypi.python.org/pypi/Circos/1.3.5

该包/模块的作者是我的好友Eric Ma。你可以选择下载wheeler文件,然后本地安装。也可以在shell下直接通过pip进行安装:

pipinstallcircos

注意,所支持的Python版本必须是3.x,对2不支持。

选择数据

当安装了circos包后,我们就可以直接应用这个包来写代码了。为了演示方便,我需要应用一些数据。作为内科医师,就让我来展示一下老本行:处理药物与肝酶细胞色素P450的相互关系的可视化。由于是为了抛砖引玉,所以绘制出的Circos图相对简单。

我们先从美国FDA官网下载不同细胞色素相关的各种口服药物表。共202种常用的口服药物,涵盖内科学、肿瘤学、神经科和心理学等学科。数据文件如下:

可以看到这个数据的结构:是按肝细胞色素酶进行分类,共分8个列。这8个细胞色素酶分别是:CYP1A2,CYP2B6, CYP2C8, CYP2C9, CYP2C19, CYP2D6, CYP2E1和CYP3A4。我们将要建立各个口服药与这些肝酶之间关系的Circos图,从而了解通过相同肝酶代谢或转化的药物之间是否存在相互作用。

导入各个模块和读入数据

导入各个模块:

fromcircosimportCircosPlot

importxlrd

importpandasaspd

importnumpyasnp

读入文件:

filename='.\\MedicationInteraction.xlsx'

book=xlrd.open_workbook(filename)

print('File loaded!')

提取数据:

nrows=book.sheet_by_name('Sheet1').nrows

header=book.sheet_by_name('Sheet1').row_values(0)

data=[book.sheet_by_name('Sheet1').row_values(i) fori inrange(1, nrows)]

df=pd.DataFrame(data, columns =header)

df[df==''] = np.nan

读取后,药物和酶的数据为pandas的DataFrame数据结构,细胞色素P450酶的名字为columns的名字。我们可以检查一下数据:

修数据,尤其是处理NA数据

df_dict={}

foriinrange(len(df.columns)):

df_dict[df.icol(i).name] =list(df.icol(i).dropna())

节点和连线

创建节点(nodes)数据,在我这个例子里就是各个药物和肝酶:

nodes=[]

forkeyindf_dict.keys():

nodes.extend(df_dict[key])

nodes=list(nodes)

headers=list(df.columns)

enzymes=['0'] * 5

forheaderinheaders:

enzymes.append(header)

enzymes.extend(['0']*5)

nodes.extend(enzymes)

创建连线(edges)数据,我们应用tuple(元组)这个数据结构来表示药物与特定肝酶之间的关系:

edges_origin=[]

forkeyindf_dict.keys():

forvalue indf_dict[key]:

edges_origin.append((key, value))

绘图

绘制Circos图:

c=CircosPlot(nodes, edges_origin, radius =10,

nodecolor="blue",

edgecolor="red",

)

c.draw()

得到了下面这张所有药物与肝酶之间的图:

左上方是8个肝脏细胞色素P450酶(CYP1A2、CYP2B6、CYP2C8、CYP2C9、CYP2C19、CYP2D6、CYP2E1和CYP3A4)。其它点即为202种口服药物。每种药物都与参与代谢和转化它的P450酶相连。与相同酶连接的不同药物,理论上应该都存在相互作用,但具体如何还要看与酶的作用机理。

个性化绘图

如果我们打算分别可视化出不同肝酶的关系图形,我们只需改变连线信息,即edges信息:

edges=[]

版权声明:本站所有文章皆为原创,欢迎转载或转发,请保留网站地址和作者信息。

python绘制分形图形教程_#python绘制分形图形教程#如何用Python绘制Circos图相关推荐

  1. python英文文本情感分析_舆情信息浩如烟海?看看如何用Python进行英文文本的情感分析...

    市场每天都在生成海量的舆情信息,这些信息可以帮助我们识别市场情绪的转变.如果只是人工地去跟踪大量的舆论和研报显然缺乏效率.我们可以试试让机器来完成这个工作. 数据科学在数值领域中很常见,但这个不断壮大 ...

  2. Cg教程_可编程实时图形权威指南(扫描清晰版)+部分unity shader 知识

      Cg教程_可编程实时图形权威指南(扫描清晰版) .pdf (34.5 MB, 下载次数: 239) Shader Model(在 3D 图形领域常被简称SM)就是"优化渲染引擎模式&qu ...

  3. 实例教程_次世代兽人制作教程

    实例教程_次世代兽人制作教程 链接:https://pan.baidu.com/s/1sr6VvFHKyfpg1ZlW0ui8PQ 密码:cj85

  4. python编译器入门教程_一篇让你直接入门的 Python 教程

    目录(1)Python是什么?Python属性 (2)获取Python-一个Prelim选择Python版本 (3)如何获得Python? (4)确认Python安装PythonShell (5)语言 ...

  5. 用python完成图形输出设备_使用numpy进行9宫格图像拼接 - Python

    本节内容要用到opencv-python模块,请先行安装.本例程中使用到的图片保存在pictures子目录下.本例的任务是要将9张JPG格式图片按三行三列拼接成下述九宫格. 微实践:九宫格图像拼接 本 ...

  6. python独立网站教程_python做网站教程_如何免费做网站的教程

    python学习指南教程 180x270 - 7KB - JPEG 图灵程序设计丛书:Python基础教程 260x317 - 12KB - JPEG 跳一跳python使用教程 微信跳一跳pytho ...

  7. 阿里巴巴python教程_阿里巴巴工程师内部的一份全新Python学习清单,你一定可以用得到...

    站在风口上,猪都能飞起来.人工智能风口,让Pyhon这门胶水语言转变成非常火的网红语言. 编程功力深厚的程序员花一两个星期就能上手Python,而一些新手程序员花几个月就可以上手. 学编程,用Pyth ...

  8. javplayer 使用教程_药物设计软件Sybyl教程(五):绘制分子对接后对接表面

    教程内容: 以SYBYL-X 2.0软件为例,进行分子对接(Surflex-Dock)后创建对接空腔的对接表面教程. 1 视频教程 建议在wifi环境下观看~ 2 图文教程 1.打开对接结果 本期教程 ...

  9. python numpy安装教程_手把手教你搭建机器学习开发环境—Python与NumPy的超简安装教程...

    手把手教你搭建机器学习开发环境Python语言是机器学习的基础,所以,想要入门机器学习,配置好Python的开发环境是第一步.本文就手把手的教你配置好基于Python的机器学习开发环境.超简单!第一步 ...

  10. python怎么做彩票概率_小白学数据小抄放送 Python,R,大数据,机器学习

    原标题:小白学数据小抄放送 Python,R,大数据,机器学习 大数据文摘作品,转载要求见文末 作者 | Elaine,田桂英,Aileen 导读:前段时间小白学数据专栏出了一期Python小抄表,后 ...

最新文章

  1. LIGHTOJ 1027(概率 - 期望)
  2. 关于 CSS3 backface-visiable 与 overflow 属性的冲突
  3. android subString
  4. 完成登录并生成JWT
  5. LOJ洛谷P1248加工生产调度(贪心、Johnson 法则)
  6. 使用txt文件导入数据库内容
  7. 前端基础牢记的一些操作-Github仓库管理
  8. Docker与容器安全
  9. 【零开始】怎样购买、配置服务器及发布网站(页)?
  10. vue-cli 2.6.9 安装卸载及创建一个工程
  11. 《博客园精华集》web标准分册第2论筛选结果文章列表
  12. Landsat 8 数据获取
  13. 路由期末复习(二)—配置命令
  14. 犬类水疗跑步机的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  15. linux系统支持网银吗,Linux系统能使用网银吗?Linux网银使用方法介绍
  16. html中css设置td高度,如何使div填充td高度
  17. 22(线性方程组求解)高斯赛德尔迭代法
  18. Hadoop配置lzo
  19. 数据库SUSPECT(置疑)状态如何解决
  20. 什么是域名服务器?域名服务器的作用是什么?

热门文章

  1. Richardson外推法计算给定点处的一阶和二阶导数
  2. html转换成pdf工具-wkhtmltopdf、Python生成PDF(pdfkit库)
  3. 一些自身工作经历和感悟,随手写的,很乱
  4. CentOS6开启BBR加速
  5. UIview 添加触摸.手势
  6. Android 10 拨打电话流程
  7. Linux之——添加VIP
  8. 客服在线咨询工具|即时聊天客服系统下载安装(包含APP)
  9. PYTHON-模块 re subprocess
  10. html div中css设置平均水平分布,CSS - 水平和垂直分布div