如何用Python绘制Circos图
2024-11-30
来源:品趣旅游知识分享网
用Python实现Circos图的绘制在线绘制的Circos图存在局限性,如对数据的要求、个性化程度和处理速度等。对于热衷于用Python进行个性化Circos图绘制的开发者来说,今天将通过代码实现这一目标。
首先,登录Python的包索引网站PyPI,找到Circos包的下载页。该包的作者是EricMa,你可以下载wheeler文件进行本地安装,或直接在shell中通过pip进行安装:pip install circos。注意,所支持的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图,得到特定药物间的相互作用图。
显示全文