懂视

如何用Python绘制Circos图

2024-11-30 11:50:01

用Python实现Circos图的绘制在线绘制的Circos图存在局限性,如对数据的要求、个性化程度和处理速度等。对于热衷于用Python进行个性化Circos图绘制的开发者来说,今天将通过代码实现这一目标。首先,登录Python的包索引网站PyPI,找到Circos包的下载页。该包的作者是EricMa,你可以下载wheeler文件进行本地安装,或直接在shell中通过pip进行安装:pipinstallcircos。注意,所支持的Python版本必须是3.x,对2.x不支持。接下来,选择数据。为了演示方便,我将展示处理药物与肝酶细胞色素P450的相互关系的可视化。从美国FDA官网下载不同细胞色素相关的口服药物表,共202种常用药物,涵盖内科学、肿瘤学、神经科和心理学等学科。数据结构按肝细胞色素酶分类,共分8个列:CYP1A2、CYP2B6、CYP2C8、CYP2C9、CYP2C19、CYP2D6、CYP2E1和CYP3A4。导入各个模块和读入数据,包括从pandas和numpy导入相应功能,读取文件并提取数据。数据结构为pandas的DataFrame数据结构,细胞色素P450酶的名字为columns的名字。检查数据后,进行数据处理,尤其是处理NA数据。创建节点(nodes)数据,即各个药物和肝酶。创建连线(edges)数据,表示药物与特定肝酶之间的关系。绘制Circos图:c=CircosPlot(nodes,edges_origin,radius=10,nodecolor="blue",edgecolor="red",)c.draw()得到了所有药物与肝酶之间的图。个性化绘图。通过改变连线信息,如edges信息,可以分别可视化出不同肝酶的关系图形。例如,仅显示CYP2B6所代谢和转化的药物图形,通过PS将它们合并。显示特定药物。从202个药物中指定几个感兴趣的药物,如propafenone、acetaminophen等,重新建立edges,再次绘制Circos图,得到特定药物间的相互作用图。