![](https://img.51dongshi.com/20250108/wz/18396053852.jpg)
用Python實(shí)現(xiàn)Circos圖的繪制在線繪制的Circos圖存在局限性,如對(duì)數(shù)據(jù)的要求、個(gè)性化程度和處理速度等。對(duì)于熱衷于用Python進(jìn)行個(gè)性化Circos圖繪制的開發(fā)者來(lái)說(shuō),今天將通過(guò)代碼實(shí)現(xiàn)這一目標(biāo)。首先,登錄Python的包索引網(wǎng)站PyPI,找到Circos包的下載頁(yè)。該包的作者是EricMa,你可以下載wheeler文件進(jìn)行本地安裝,或直接在shell中通過(guò)pip進(jìn)行安裝:pip install circos。注意,所支持的Python版本必須是3.x,對(duì)2.x不支持。接下來(lái),選擇數(shù)據(jù)。為了演示方便,我將展示處理藥物與肝酶細(xì)胞色素P450的相互關(guān)系的可視化。從美國(guó)FDA官網(wǎng)下載不同細(xì)胞色素相關(guān)的口服藥物表,共202種常用藥物,涵蓋內(nèi)科學(xué)、腫瘤學(xué)、神經(jīng)科和心理學(xué)等學(xué)科。數(shù)據(jù)結(jié)構(gòu)按肝細(xì)胞色素酶分類,共分8個(gè)列:CYP1A2、CYP2B6、CYP2C8、CYP2C9、CYP2C19、CYP2D6、CYP2E1和CYP3A4。導(dǎo)入各個(gè)模塊和讀入數(shù)據(jù),包括從pandas和numpy導(dǎo)入相應(yīng)功能,讀取文件并提取數(shù)據(jù)。數(shù)據(jù)結(jié)構(gòu)為pandas的DataFrame數(shù)據(jù)結(jié)構(gòu),細(xì)胞色素P450酶的名字為columns的名字。檢查數(shù)據(jù)后,進(jìn)行數(shù)據(jù)處理,尤其是處理NA數(shù)據(jù)。創(chuàng)建節(jié)點(diǎn)(nodes)數(shù)據(jù),即各個(gè)藥物和肝酶。創(chuàng)建連線(edges)數(shù)據(jù),表示藥物與特定肝酶之間的關(guān)系。繪制Circos圖:c = CircosPlot(nodes, edges_origin, radius=10, nodecolor="blue", edgecolor="red", ) c.draw() 得到了所有藥物與肝酶之間的圖。個(gè)性化繪圖。通過(guò)改變連線信息,如edges信息,可以分別可視化出不同肝酶的關(guān)系圖形。例如,僅顯示CYP2B6所代謝和轉(zhuǎn)化的藥物圖形,通過(guò)PS將它們合并。顯示特定藥物。從202個(gè)藥物中指定幾個(gè)感興趣的藥物,如propafenone、acetaminophen等,重新建立edges,再次繪制Circos圖,得到特定藥物間的相互作用圖。