Cytoscape可視化物種分類樹結(jié)構(gòu)

本文轉(zhuǎn)載自:Cytoscape可視化物種分類樹結(jié)構(gòu)


Cytoscape可視化物種分類樹結(jié)構(gòu)


卵牍。因此本篇就只是概括了一下大致的過程,包括如何準(zhǔn)備輸入數(shù)據(jù)勉躺,以及在Cytoscape可視化時大致上要點擊哪些按鈕等,并未仔細(xì)琢磨成品圖刽射。所以序宦,下文略顯粗糙雄可,大家有興趣就看吧……

這其實是個物種分類樹厨疙,代表的微生物分類柑晒。從高級分類水平(界缴守,細(xì)菌和真菌)的根節(jié)點開始固耘,依次往低分類層級(門綱目科屬等)延伸题篷,逐漸形成分支,末端節(jié)點應(yīng)該是OTU或者種水平厅目。因此番枚,分支呈簇狀展示,分支的顏色主要按門水平著色损敷,將衍生自同一類門的微生物分支賦值相同的顏色葫笼。節(jié)點的大小應(yīng)該對應(yīng)了微生物的豐度,而節(jié)點的顏色主要有兩種拗馒,猜測紅色代表了一些重要的微生物路星,白色是不重要的。圖中文字部分則標(biāo)識了主要的微生物門所含的節(jié)點數(shù)量诱桂,以及這些微生物的總豐度占比奥额。

好吧苫幢,其實白魚同學(xué)并不知道這是來自哪篇文章的插圖,不清楚它的任何細(xì)節(jié)垫挨,包括其具體的指代信息以及作者試圖表達(dá)的意義等韩肝,上一段文字純粹是看圖瞎猜的……又懶得問其來源,那就按照這種理解去模仿吧九榔,反正只是隨手畫個圖嘛哀峻,不要在意那么多細(xì)節(jié)。


準(zhǔn)備數(shù)據(jù)

示例數(shù)據(jù)和預(yù)處理R代碼的百度盤鏈接(提取碼哲泊,sf9f):

https://pan.baidu.com/s/1nS402FLH3lQu8CNq6JjEsA

網(wǎng)盤附件“otu.txt”如下所示剩蟀,以O(shè)TU的豐度為主,后面跟上這些OTU所屬的界門綱目科屬分類切威。需要事先把一些注釋不明確的物種提前去除(比如unidentified育特、unknown、others等)先朦,否則導(dǎo)致了一些分類關(guān)系混亂缰冤。然后將它讀到R中,整合各個分類水平的包含關(guān)系喳魏,即上一級分類和下一級分類的對應(yīng)列表用作邊列表棉浸,并統(tǒng)計共計多少分類類型及其豐度用作節(jié)點列表

#讀入數(shù)據(jù)

otu <- read.delim('otu.txt', stringsAsFactors = FALSE, check.names = FALSE)

#整合各分類層級和所含物種豐度的嵌套關(guān)系刺彩,構(gòu)建網(wǎng)絡(luò)邊列表

#source 和 target 分別對應(yīng)了上下級物種分類層級的對應(yīng)關(guān)系迷郑,abundance 表示 target 的豐度

genus_otu <- otu[c('genus', 'otu', 'abundance')]

names(genus_otu) <- c('source', 'target', 'abundance')

family_genus <- aggregate(otu$abundance, by = list(otu$family, otu$genus), FUN = sum)

names(family_genus) <- c('source', 'target', 'abundance')

order_family <- aggregate(otu$abundance, by = list(otu$order, otu$family), FUN = sum)

names(order_family) <- c('source', 'target', 'abundance')

class_order <- aggregate(otu$abundance, by = list(otu$class, otu$order), FUN = sum)

names(class_order) <- c('source', 'target', 'abundance')

phylum_class <- aggregate(otu$abundance, by = list(otu$phylum, otu$class), FUN = sum)

names(phylum_class) <- c('source', 'target', 'abundance')

kingdom_phylum <- aggregate(otu$abundance, by = list(otu$kingdom, otu$phylum), FUN = sum)

names(kingdom_phylum) <- c('source', 'target', 'abundance')

edge_list <- rbind(kingdom_phylum, phylum_class, class_order, order_family, family_genus, genus_otu)

#將各個分類層級對應(yīng)至 phylum,以便用于在 Cytoscape 中調(diào)整樹分支的顏色

otu_phylum <- otu[c('phylum', 'otu')]

names(otu_phylum)[2] <- 'target'

genus_phylum <- otu[c('phylum', 'genus')]

names(genus_phylum)[2] <- 'target'

family_phylum <- otu[c('phylum', 'family')]

names(family_phylum)[2] <- 'target'

order_phylum <- otu[c('phylum', 'order')]

names(order_phylum)[2] <- 'target'

class_phylum <- otu[c('phylum', 'class')]

names(class_phylum)[2] <- 'target'

phylum_phylum <- otu[c('phylum', 'phylum')]

names(phylum_phylum)[2] <- 'target'

tax_phylum <- rbind(phylum_phylum, class_phylum, order_phylum, family_phylum, genus_phylum, otu_phylum)

tax_phylum <- tax_phylum[!duplicated(tax_phylum$target), ]

edge_list <- merge(edge_list, tax_phylum, by = 'target', all.x = TRUE)

#輸出邊列表

edge_list <- edge_list[c('source', 'target', 'abundance', 'phylum')]

edge_list$weight <- 1

head(edge_list)

write.table(edge_list, 'edge_list.txt', row.names = FALSE, sep = '\t', quote = FALSE)

#構(gòu)建節(jié)點列表创倔,包括各個分類水平的名稱嗡害,以及所含物種總豐度等

node_list <- reshape2::melt(otu, id = 'abundance')

node_list <- aggregate(node_list$abundance, by = list(node_list$value, node_list$variable), FUN = sum)

names(node_list) <- c('shared name', 'taxonomy', 'abundance')

#原始豐度 abundance 的數(shù)值差較大,不利于直接使用該列在 Cytoscape 中定義節(jié)點大小

#再指定個新列 abundance2畦攘,對原始的 abundance 作些轉(zhuǎn)換霸妹,比如 log 降低高豐度的權(quán)重等

node_list$abundance2 <- log(node_list$abundance+1, 2)? #log 轉(zhuǎn)化時加個基數(shù) 1

#添加節(jié)點的 phylum 水平分類

otu_phylum <- otu[c('phylum', 'otu')]

names(otu_phylum)[2] <- 'shared name'

genus_phylum <- otu[c('phylum', 'genus')]

names(genus_phylum)[2] <- 'shared name'

family_phylum <- otu[c('phylum', 'family')]

names(family_phylum)[2] <- 'shared name'

order_phylum <- otu[c('phylum', 'order')]

names(order_phylum)[2] <- 'shared name'

class_phylum <- otu[c('phylum', 'class')]

names(class_phylum)[2] <- 'shared name'

phylum_phylum <- otu[c('phylum', 'phylum')]

names(phylum_phylum)[2] <- 'shared name'

tax_phylum <- rbind(phylum_phylum, class_phylum, order_phylum, family_phylum, genus_phylum, otu_phylum)

tax_phylum <- tax_phylum[!duplicated(tax_phylum$'shared name'), ]

node_list <- merge(node_list, tax_phylum, by = 'shared name', all.x = TRUE)

#根據(jù)事先選擇的一些重要節(jié)點名稱,在節(jié)點列表中標(biāo)識出后輸出節(jié)點列表

select_node <- read.delim('select_node.txt', stringsAsFactors = FALSE)

node_list[which(node_list$'shared name' %in% select_node$id),'select'] <- 1

node_list[which(! node_list$'shared name' %in% select_node$id),'select'] <- 0

head(node_list)

write.table(node_list, 'node_list.txt', row.names = FALSE, sep = '\t', quote = FALSE)


Cytoscape的可視化

這樣兩個輸入文件就準(zhǔn)備好了念搬,分別為上述R輸出的“edge_list.txt”和“node_list.txt”抑堡,導(dǎo)入至Cytoscape中進(jìn)行可視化。

1 讀取輸入文件

打開Cytoscape后朗徊,點擊“Import Network from File System”讀取邊列表首妖,也就是上述輸出的“edge_list.txt”;以及點擊“Import Table from File”讀取節(jié)點列表爷恳,“node_list.txt”有缆。

文件導(dǎo)入后,Cytoscape中自動呈現(xiàn)一幅網(wǎng)絡(luò)圖,這個網(wǎng)絡(luò)圖的結(jié)構(gòu)就代表了給定的物種分類樹了棚壁。


2 邊的顏色和尺寸等屬性調(diào)整

點擊界面左側(cè)“Style”按鈕進(jìn)入外觀調(diào)整選項杯矩。首先是對邊的調(diào)整,點擊下方“Edge”后進(jìn)入邊樣式調(diào)整界面袖外。

已知該網(wǎng)絡(luò)代表了物種分類樹史隆,如上所述,從高級分類水平(界)的根節(jié)點開始曼验,依次往低分類層級(門綱目科屬等)延伸泌射,逐漸形成分支。因此鬓照,下游的分類分支都衍生自上游高級分類分支熔酷。參考圖中將衍生自同一門分類的微生物分支賦值相同的顏色,這里我們效仿豺裆,在上文的R操作過程中已經(jīng)對網(wǎng)絡(luò)中每條邊做了歸類拒秘,邊列表中的“phylum”列就記錄了分支對應(yīng)的門分類水平。點擊“Stroke Color”臭猜,按邊列表中的“phylum”列分配顏色躺酒。

邊的顏色是主要的調(diào)節(jié)屬性。對于其它的屬性获讳,視情況自定義修改阴颖。例如如果覺得邊太細(xì)活喊,就可以點擊“Width”將邊的尺寸設(shè)置的寬一些丐膝,使其更清晰。


3 背景色調(diào)整

隨后钾菊,點擊下方“Network”帅矗,將“Background Paint”背景色設(shè)置為黑色。


4 節(jié)點的顏色和尺寸等屬性調(diào)整

然后是對節(jié)點的調(diào)整煞烫,點擊下方“Node”后進(jìn)入節(jié)點樣式調(diào)整界面浑此。

對于節(jié)點顏色,點擊“Fill Color”滞详,按節(jié)點列表中的“select”列分配顏色凛俱,將1(標(biāo)記的重要的微生物)賦值為紅色,0(不重要的)賦值為白色料饥。

對于節(jié)點形狀蒲犬,勾選下方“Lock node width and height”后,點擊“Shape”統(tǒng)一設(shè)置為圓形岸啡。

對于節(jié)點大小原叮,點擊“Size”,按節(jié)點列表中的“abundance2”列指定大小。該列是個連續(xù)的數(shù)值奋隶,大值對應(yīng)大點擂送,小值對應(yīng)小點。

以及點擊“Properties”顯示出“Label Transparency”選項后統(tǒng)一設(shè)置為0唯欣,即將節(jié)點標(biāo)簽均設(shè)置為透明嘹吨,以去除節(jié)點標(biāo)簽。


5 網(wǎng)絡(luò)布局調(diào)整

上述過程都很簡單境氢,不再多說了躺苦,大家看著來設(shè)置就行。

最后是調(diào)整網(wǎng)絡(luò)布局产还,獲得類似示例圖中的樹狀結(jié)構(gòu)匹厘。可以先嘗試一些自動布局脐区,看看哪些布局風(fēng)格效果較好愈诚。下圖展示一些和示例圖較為相似的自動布局,以及一些不相似但是可能有趣的自動布局牛隅,供大家參考吧炕柔。

點擊菜單欄“Layout”,提供了N種預(yù)設(shè)布局媒佣;此外“Apps”中可以下載更多樣式的插件匕累,例如yFiles布局就是在“Apps”中找的拓展插件之一。


這些自動布局也就是有幾分相似而已默伍。一般來說欢嘿,網(wǎng)絡(luò)圖布局光靠自動布局是難以滿足需求的,配合手工調(diào)整肯定是免不了的也糊,只是手工調(diào)整的過程會很糟心……哦對了炼蹦,說不定真的有自動布局能夠出來示例圖樣式,只是沒找到而已

狸剃。

以下簡單展示一個手工調(diào)節(jié)布局的過程掐隐。以“Prefuse Force Directed Layout?(按?weight?列定義布局)”布局為例,因為它的微生物節(jié)點分類層次不明確钞馁,有待手動拖一下虑省。當(dāng)然,實際情況中盡可能找一個最相似的布局來僧凰,這樣可以簡化手動的工作量探颈。點擊“Select”,按微生物節(jié)點所屬的門分類水平進(jìn)行選擇允悦,并將選中的節(jié)點拉動至一旁膝擂,就可和其它類群分開了虑啤。隨后,設(shè)法手動選擇節(jié)點子集架馋,并拖動將該類群內(nèi)部的節(jié)點的層次結(jié)構(gòu)盡可能區(qū)分明顯狞山。

把所有節(jié)點的層次關(guān)系調(diào)整好,將微生物的分類關(guān)系較好地呈現(xiàn)出叉寂,總之工作量挺大的萍启。所以,白魚同學(xué)就沒再繼續(xù)屏鳍,為了一個示例耗費大量時間在里面就不值得了……本篇教程只是作為方法類指引勘纯,幫助大家了解大體上是怎樣的操作過程就可以了。真正有需要時钓瞭,再花點時間配合手工琢磨布局驳遵,再慢1天也能搞定了吧。


6 關(guān)于文字圖例的添加

最后山涡,如果在Cytoscape中調(diào)試出了想要的結(jié)果堤结,點擊“File > Export > Network to Image”將圖片導(dǎo)出為pdf矢量圖后,放在AI(Adobe Illustrator)中補(bǔ)充文字標(biāo)簽鸭丛。例如示例圖中竞穷,微生物門水平的名稱、節(jié)點數(shù)量和所含物種的豐度占比等鳞溉,就可以通過AI補(bǔ)充瘾带。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市熟菲,隨后出現(xiàn)的幾起案子看政,更是在濱河造成了極大的恐慌,老刑警劉巖科盛,帶你破解...
    沈念sama閱讀 217,084評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件帽衙,死亡現(xiàn)場離奇詭異菜皂,居然都是意外死亡贞绵,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,623評論 3 392
  • 文/潘曉璐 我一進(jìn)店門恍飘,熙熙樓的掌柜王于貴愁眉苦臉地迎上來榨崩,“玉大人,你說我怎么就攤上這事章母∧钢耄” “怎么了?”我有些...
    開封第一講書人閱讀 163,450評論 0 353
  • 文/不壞的土叔 我叫張陵乳怎,是天一觀的道長彩郊。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么秫逝? 我笑而不...
    開封第一講書人閱讀 58,322評論 1 293
  • 正文 為了忘掉前任恕出,我火速辦了婚禮,結(jié)果婚禮上违帆,老公的妹妹穿的比我還像新娘浙巫。我一直安慰自己,他們只是感情好刷后,可當(dāng)我...
    茶點故事閱讀 67,370評論 6 390
  • 文/花漫 我一把揭開白布的畴。 她就那樣靜靜地躺著,像睡著了一般尝胆。 火紅的嫁衣襯著肌膚如雪丧裁。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,274評論 1 300
  • 那天含衔,我揣著相機(jī)與錄音渣慕,去河邊找鬼。 笑死抱慌,一個胖子當(dāng)著我的面吹牛逊桦,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播抑进,決...
    沈念sama閱讀 40,126評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼强经,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了寺渗?” 一聲冷哼從身側(cè)響起匿情,我...
    開封第一講書人閱讀 38,980評論 0 275
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎信殊,沒想到半個月后炬称,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,414評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡涡拘,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,599評論 3 334
  • 正文 我和宋清朗相戀三年玲躯,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片鳄乏。...
    茶點故事閱讀 39,773評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡跷车,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出橱野,到底是詐尸還是另有隱情朽缴,我是刑警寧澤,帶...
    沈念sama閱讀 35,470評論 5 344
  • 正文 年R本政府宣布水援,位于F島的核電站密强,受9級特大地震影響茅郎,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜或渤,卻給世界環(huán)境...
    茶點故事閱讀 41,080評論 3 327
  • 文/蒙蒙 一只洒、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧劳坑,春花似錦毕谴、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,713評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至框仔,卻和暖如春舀武,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背离斩。 一陣腳步聲響...
    開封第一講書人閱讀 32,852評論 1 269
  • 我被黑心中介騙來泰國打工银舱, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人跛梗。 一個月前我還...
    沈念sama閱讀 47,865評論 2 370
  • 正文 我出身青樓寻馏,卻偏偏與公主長得像,于是被迫代替她去往敵國和親核偿。 傳聞我的和親對象是個殘疾皇子诚欠,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,689評論 2 354

推薦閱讀更多精彩內(nèi)容