Ringkasan
Kami menyajikan paket r , ggtree , yang menyediakan visualisasi dan anotasi pohon filogenetik yang dapat diprogram.
ggtree dapat membaca lebih banyak format berkas pohon daripada perangkat lunak lain, termasuk format newick , nexus , NHX , phylip , dan jplace , serta mendukung visualisasi objek pohon phylo, multiphylo, phylo4, phylo4d, obkdata, dan phyloseq yang didefinisikan dalam paket r lainnya . Ia juga dapat mengekstrak data khusus pohon/cabang/simpul dan data lainnya dari hasil analisis perangkat lunak beast , epa , hyphy , paml , phylodog , pplacer , r8s , raxml, dan revbayes , dan memungkinkan penggunaan data ini untuk membuat anotasi pohon.
Paket tersebut memungkinkan pewarnaan dan anotasi pohon berdasarkan atribut simpul numerik/kategori, memanipulasi pohon dengan cara memutar, menciutkan, dan memperkecil klade, menyorot klade yang dipilih pengguna atau unit taksonomi operasional, serta menjelajahi pohon besar dengan memperbesar bagian yang dipilih.
Pohon dua dimensi dapat digambar dengan menskalakan lebar pohon berdasarkan atribut simpul. Pohon dapat diberi anotasi dengan matriks numerik terkait (sebagai peta panas), penyelarasan sekuens ganda, subplot, atau gambar siluet.
Paket ggtree dirilis di bawah lisensi artistic-2.0 . Kode sumber dan dokumen tersedia secara bebas melalui bioconductor ( http://www.bioconductor.org/packages/ggtree ).
Perkenalan
Pohon filogenetik umumnya digunakan untuk menyajikan hubungan evolusi spesies. Ada banyak paket perangkat lunak dan alat Web yang dirancang untuk menampilkan pohon filogenetik, seperti treeview (Page 1996 ), figtree (Rambaut 2014 ), treedyn (Chevenet et al . 2006 ), itol (Letunic & Bork 2011 ), evolview (Zhang et al . 2012 ) dan dendroscope (Huson & Scornavacca 2012 ). Hanya sebagian kecil, seperti figtree , treedyn dan itol , yang memungkinkan pengguna untuk membuat anotasi pohon dengan cabang yang diwarnai, klade yang disorot, dan fitur pohon. Namun, fungsi anotasi yang telah ditentukan sebelumnya biasanya terbatas pada beberapa data evolusi tertentu dan tidak dapat diprogram dengan mudah dalam platform program yang sama. Seiring makin luasnya penggunaan pohon filogenetik dalam studi multidisiplin, semakin meningkat pula kebutuhan untuk menggabungkan berbagai jenis kovariat dan data terkait lainnya dari berbagai sumber ke dalam pohon untuk visualisasi dan analisis lebih lanjut. Pengguna kemudian memerlukan perangkat lunak yang dapat diprogram untuk memungkinkan penyesuaian dan integrasi data tingkat tinggi pada pohon, selain aplikasi mandiri yang berfokus pada analisis dan jenis data tertentu.
Untuk mengisi celah ini, kami mengembangkan ggtree , sebuah paket untuk bahasa pemrograman r (Tim Inti R, 2015 ) yang dirilis di bawah proyek biokonduktor (Gentleman et al . 2004 ). ggtree dibangun dengan keunggulan ggplot2 (Wickham 2009 ) yang didasarkan pada tata bahasa grafik (Wilkinson 2005 ). Tidak seperti kebanyakan perangkat lunak filogenetik dan paket r lainnya yang hanya membaca berkas pohon dalam format newick dan/atau nexus , ggtree mendukung lebih banyak format termasuk NHX (format New Hampshire eXtended), jplace dan phylip . Ini juga memungkinkan data evolusi untuk diurai dari data keluaran berformat non-standar dari perangkat lunak yang berbeda (Tabel 1 ) menjadi anotasi pada pohon. Ini memungkinkan berbagai jenis anotasi untuk digabungkan, divisualisasikan, dan diproses lebih lanjut pada topologi pohon yang sama, di mana pola atau korelasi baru dari proses evolusi dapat diidentifikasi dengan lebih mudah.
Tabel 1. Program komputer dan paket r untuk analisis evolusi molekuler di mana keluaran data spesifiknya dapat langsung diurai oleh ggtree
Program Data yang dapat diurai
kera ( paket r ) Nilai bootstrap
binatang buas Informasi apa pun (misalnya tingkat substitusi, usia node, status geografis) yang disimpan dalam atribut node dalam file pohon berformat nexus
paml-baseml Urutan leluhur (dari file rst )
paml-kodeml
Urutan leluhur (dari file rst )
Estimasi d N , d S dan ω (dari file mlc )
hyphy Urutan leluhur (dari berkas pohon berformat nexus )
phangorn ( paket r ) Urutan leluhur
raxml Nilai dukungan cabang
r8s Pohon dengan cabang dalam satuan waktu, laju dan substitusi absolut
Penempatan Informasi penempatan takson dari file pohon berformat jplace
bahasa inggris Informasi penempatan takson dari file pohon berformat jplace
anjing filo Informasi apa pun dari file pohon berformat NHX
ulasan Informasi apa pun dari file pohon berformat NHX
Bahasa r semakin banyak digunakan dalam filogenetika. Akan tetapi, paket komprehensif yang dirancang untuk melihat dan membuat anotasi pohon filogenetik, khususnya dengan integrasi data, belum tersedia. Sebagian besar paket r dalam filogenetika berfokus pada analisis statistik tertentu daripada melihat dan membuat anotasi pohon dengan data terkait pohon yang lebih umum. Beberapa paket, termasuk ape (Paradis, Claude & Strimmer 2004 ) dan phytools (Revell 2012 ), yang mampu menampilkan dan membuat anotasi pohon, dikembangkan menggunakan sistem grafik dasar r . outbreaktools (Jombart et al . 2014 ) dan phyloseq (McMurdie & Holmes 2013 ) memperluas ggplot2 untuk menggambar pohon filogenetik. Sistem grafik ggplot2 memungkinkan kustomisasi dan eksplorasi solusi desain yang cepat. Namun, paket-paket ini masing-masing dirancang untuk data epidemiologi dan mikrobioma, dan tidak bertujuan untuk menyediakan solusi umum untuk visualisasi dan anotasi pohon (Lampiran S1, Informasi Pendukung). Paket ggtree mewarisi properti serbaguna dari ggplot2 dan dengan demikian memungkinkan pembuatan tampilan pohon yang kompleks dengan menggabungkan beberapa lapisan anotasi dari berbagai sumber data terkait pohon secara bebas.
Keterangan
Paket ggtree
Paket ggtree dirancang untuk memberi anotasi pada pohon filogenetik dengan data terkaitnya dari berbagai jenis dan dari berbagai sumber. Data ini dapat berasal dari pengguna atau program analisis dan mungkin mencakup laju evolusi, urutan leluhur, dll ., yang dikaitkan dengan taksa dari sampel nyata, atau dengan simpul internal yang mewakili galur/spesies leluhur hipotetis, atau dengan cabang pohon yang menunjukkan perjalanan waktu evolusi. Misalnya, data dapat berupa posisi geografis virus influenza burung yang diambil sampelnya (diinformasikan oleh lokasi survei) dan simpul leluhur (dengan inferensi filogeografis) dalam pohon gen virus (Lam et al . 2012 ).
ggtree mendukung bahasa grafis ggplot2 , yang dengannya kustomisasi tingkat tinggi dapat bersifat intuitif dan fleksibel. Akan tetapi, ggplot2 sendiri tidak menyediakan objek geometris tingkat rendah atau dukungan lain untuk struktur mirip pohon. Meskipun outbreaktools dan phyloseq dikembangkan berdasarkan ggplot2 , bagian terpenting dari sintaks ggplot2 – menambahkan lapisan anotasi – tidak didukung dalam paket-paket ini. Misalnya, jika kita telah memplot pohon tanpa label taksa, outbreaktools dan phyloseq tidak menyediakan cara mudah bagi pengguna r umum , yang memiliki sedikit pengetahuan tentang infrastruktur paket-paket ini, untuk menambahkan lapisan label taksa.
ggtree memperluas ggplot2 untuk mendukung objek pohon dan mengimplementasikan lapisan geometris, geom_tree , untuk mendukung visualisasi struktur pohon. Di ggtree , melihat pohon filogenetik relatif mudah, melalui perintah ‘ ggplot(tree_object) + geom_tree() + theme_tree() ‘ atau singkatnya ‘ ggtree(tree_object) ‘. Lapisan anotasi dapat ditambahkan satu per satu melalui operator ‘+’. Untuk memfasilitasi visualisasi pohon, ggtree menyediakan beberapa lapisan geometris, termasuk geom_treescale untuk menambahkan legenda skala pohon (jarak genetik, waktu divergensi, dll.), geom_range untuk menampilkan ketidakpastian panjang cabang (interval kepercayaan atau rentang, dll.), geom_tiplab untuk menambahkan label taksa, geom_tippoint dan geom_nodepoint untuk menambahkan simbol ujung dan simpul internal, geom_hilight untuk menyorot klade dengan persegi panjang dan geom_cladelabel untuk memberi anotasi pada klade yang dipilih dengan label batang dan teks (Tabel 2 ).
Tabel 2. Fungsi utama ggtree
Fungsi Keterangan
sebagai.biner Ubah pohon percabangan menjadi pohon biner dengan menyelesaikan politomi dengan panjang cabang nol.
MRCA Temukan nenek moyang umum terbaru dari dua atau lebih tip
baca.paml_rst Parsing file ‘ rst’ dari paml , yang kemudian disimpan dalam objek paml_rst ; output dari baseml dan codeml didukung
baca.baseml Parsing output dari baseml , yang kemudian disimpan dalam objek baseml
baca.codeml_mlc Parsing file ‘ mlc ‘ dari codeml yang kemudian disimpan dalam objek codeml_mlc
baca.codeml Parsing output dari codeml , yang kemudian disimpan dalam objek codeml
baca.hyphy Menguraikan output dari hyphy , yang kemudian disimpan dalam objek hyphy
baca.binatang Menguraikan output dari beast , yang kemudian disimpan dalam objek beast
baca.raxml Parsing output dari raxml , yang kemudian disimpan dalam objek raxml
baca.r8s Parsing output dari r8s , yang kemudian disimpan dalam objek r8s
baca.jplace Parsing file jplace menjadi objek jplace . Output dari epa , pplacer dan ggtree didukung
baca.nhx Memproses file NHX menjadi objek nhx . Output dari phylodog dan revbayes didukung
baca.phylip Parsing berkas pohon PHYLIP .
sepatu bot kera Integrasikan objek phylo dengan nilai bootstrap dari ape::boot.phylo dan disimpan dalam objek apeBootstrap
phyPML Menguraikan keluaran dari phangorn::optim.pml , menyimpan urutan leluhur yang disimpulkan dan menyimpan hasilnya dalam objek phangorn
dapatkan.bidang Mencantumkan atribut anotasi yang disimpan dalam objek pohon
dapatkan.tekspohon Ekstrak string pohon newick dari objek pohon
dapatkan.pohon Ekstrak objek phylo (representasi pohon) dari objek pohon
dapatkan.tipseqs Ekstrak urutan tip dari objek baseml , codeml atau hyphy
dapatkan.subs Ekstrak substitusi nukleotida atau asam amino sepanjang pohon dari objek baseml , codeml atau hyphy
dapatkan penempatan Ekstrak informasi penempatan dari objek jplace yang diurai dari output epa atau pplacer
dapatkan.phylopic Unduh gambar siluet dari basis data PhyloPic
merencanakan Metode plot untuk melihat dengan cepat data anotasi dari semua jenis objek pohon yang didefinisikan dalam ggtree
pohon gg Buat tampilan pohon dari objek pohon . Tata letak yang didukung adalah pohon persegi panjang, miring, melingkar, kipas, tidak berakar, dan dua dimensi.
geom_pohon Lapisan untuk mendukung penggambaran tampilan pohon dengan ggplot2
geom_label_klade Lapisan untuk memberi anotasi pada klade dengan label bar dan teks
rentang_geom Lapisan untuk memberi anotasi ketidakpastian panjang cabang
geom_highlight Lapisan untuk menyorot klade yang dipilih dengan persegi panjang
geom_tiplab Lapisan untuk menambahkan label ke ujung pohon
titik_ujung_geom Lapisan untuk menambahkan simbol ke ujung pohon
geom_titik_simpul Lapisan untuk menambahkan simbol ke node internal
geom_titik_akar Lapisan untuk menambahkan simbol ke simpul akar
geom_skala pohon Lapisan untuk menambahkan skala pohon (misalnya tingkat substitusi)
geom_teks2 Versi geom_text yang dimodifikasi dengan dukungan subset
geom_titik2 Versi geom_point yang dimodifikasi dengan dukungan subset
geom_segmen2 Versi geom_segment yang dimodifikasi dengan dukungan subset
tema_pohon Tema kosong
tema_pohon2 Tema kosong dengan jarak evolusi sebagai sumbu x
tema_transparan Tema latar belakang transparan
tema_sisipan Tema kosong dengan latar belakang transparan
skala_warna Tentukan warna berdasarkan nilai numerik (skala) atribut yang terkait dengan pohon. Nilai ini kemudian dapat digunakan untuk mewarnai pohon atau data anotasi.
runtuh Ciutkan klade yang dipilih
memperluas Memperluas klade yang runtuh
skalaClade Memperbesar atau memperkecil klade yang dipilih
membalik Posisi pertukaran dua klade yang berbagi simpul induk yang sama
memutar Memutar klade yang dipilih
kelompokOTU Kelompokkan OTU yang dipilih dengan menelusuri kembali ke nenek moyang mereka yang paling baru
kelompokClade Kelompokkan klade yang dipilih atau daftar klade
gzoom Memperbesar bagian terpilih dari pohon yang sangat besar
LihatClade Visualisasikan klade pohon
peta panas Visualisasikan pohon dengan matriks terkait yang ditampilkan di sebelah pohon sebagai peta panas
tampilan bawah Sematkan subplot
sisipan Beri anotasi pada node dengan subplot
bilah simpul Buat daftar diagram batang untuk node
simpulan Buat daftar diagram lingkaran untuk node
filotipe Beri anotasi pada pohon dengan gambar siluet yang diunduh dari basis data PhyloPic
masker Tutupi semua substitusi genetik pada cabang-cabang pohon, kecuali yang telah ditentukan.
msaplot Visualisasikan pohon dengan penyelarasan sekuens ganda yang ditampilkan di sebelah pohon
pohon terbuka Ubah pohon tata letak melingkar menjadi tata letak kipas
skala_ulang_pohon Ubah skala panjang cabang
putar_pohon Putar pohon dengan sudut tertentu
%<% Memperbarui tampilan pohon dengan objek pohon lain
Bahasa Indonesia: %<+% Tambahkan data anotasi khusus pengguna ke tampilan pohon yang ada. Data ini dapat digunakan untuk membuat anotasi pada pohon
tulis.jplace Menghasilkan file jplace dari pohon dengan data yang ditentukan pengguna. File ini dapat digunakan untuk menyimpan pohon dengan data anotasi milik pengguna. Output akan dapat diurai oleh read.jplace dan didukung sepenuhnya di ggtree
Format file dan kelas S4
Dalam ggtree , kelas S4 mendefinisikan objek berbasis pohon gabungan yang berisi pohon dan informasi lain yang terkait dengan pohon, cabang, atau simpul. ggtree dapat membaca sejumlah format berkas pohon, termasuk newick dan nexus (melalui ape ), NHX , jplace (Matsen et al . 2012 ) dan phylip, ke dalam objek pohon S4 . File keluaran analisis non-standar dari berbagai paket perangkat lunak biologi evolusi termasuk beast (Bouckaert et al . 2014 ), epa (Berger, Krompass & Stamatakis 2011 ), hyphy (Pond, Frost & Muse 2005 ), paml (Yang 2007 ), phylodog (Bastien et al . 2013 ) , pplacer (Matsen, Kodner & Armbrust 2010 ), raxml (Stamatakis 2014 ), revbayes (Sebastian et al . 2014 ) dan r8s (Sanderson 2003 ) (Tabel 1 ) juga dapat diurai menjadi objek S4 menggunakan fungsi read.beast , read.codeml_mlc , read.codeml , read.hyphy , read.jplace , read.nhx , read.paml_rst , read.phylip , read.raxml dan read.r8s (Gbr. 1 , Tabel 2 ). Setelah diurai, beberapa data atribut spesifik simpul/cabang (misalnya laju evolusi, urutan leluhur/takson) diekstrak dari berkas dan disimpan dalam objek pohon S4 . Tinjauan umum kelas S4 dan fungsi parser terkait diilustrasikan dalam Gbr. 1 .

Tinjauan umum kelas S4 dan fungsi parsernya yang didefinisikan dalam ggtree . Pohon filogenetik, data yang terkait dengan cabang/simpul, dan informasi lain yang terkandung dalam berkas pohon standar atau berkas keluaran dari program analisis yang didukung (Tabel 1 ) dapat diimpor ke objek pohon S4 oleh fungsi parser. Kompartemen tengah dan bawah diagram kelas (kotak) menunjukkan atribut yang akan ditambahkan ke objek pohon setelah penguraian dan metode pembantu lainnya, masing-masing. Dua objek pohon S4 dapat digabungkan menjadi satu menggunakan fungsi merge_tree . ggtree juga mendukung visualisasi objek pohon phylo, multiphylo, phylo4, phylo4d, obkdata, dan phyloseq yang didefinisikan dalam paket r lainnya, melalui ggtree() .
Lebih jauh, ggtree menyediakan fungsi, merge_tree , untuk menggabungkan dua pohon bersama dengan data atribut spesifik node/cabangnya. Pada dasarnya, sebagai hasilnya, satu atribut tersebut (misalnya laju evolusi) dapat dipetakan ke atribut lain (misalnya d N /d S ) dari cabang/node yang sama untuk perbandingan dan perhitungan lebih lanjut (Gbr. 2 ). ggtree juga dapat secara langsung memvisualisasikan dan memberi anotasi pada objek terkait pohon phylo, multiphylo, phylo4, phylo4d, obkdata dan phyloseq yang didefinisikan dalam paket r lainnya . Objek pohon di ggtree juga dapat dikonversi, melalui get.tree() , ke objek phylo atau multiphylo yang banyak digunakan dalam paket r lainnya . Selain itu, ggtree menyediakan metode fortify untuk mengonversi objek pohon ke bingkai data yang rapi , yang familier bagi pengguna r dan mudah dimanipulasi. Oleh karena itu, ggtree merupakan infrastruktur yang memungkinkan data terkait filogeni/takson yang disimpulkan dari berbagai program komputer eksternal atau paket r , untuk disatukan dan dianalisis dalam r .

Setelah menggabungkan keluaran beast dan codeml , estimasi spesifik cabang ( tingkat substitusi , d N /d S , d N dan d S ) dari dua program analisis dibandingkan pada basis cabang yang sama. Hubungan d N /d S , d N dan d S vs. tingkat divisualisasikan dalam plot sebaran hexbin..
Contoh 1: parsing pohon dan file keluaran analisis
Untuk mengilustrasikan utilitas ggtree , kami menggunakan set data yang dipublikasikan sebelumnya: 76 sekuens gen hemaglutinin H3 dari garis keturunan yang mengandung virus influenza A pada babi dan manusia (Liang et al . 2014 ). Set data dianalisis ulang oleh beast untuk estimasi skala waktu dan codeml untuk estimasi substitusi sinonim dan non-sinonim. Dalam contoh ini, pertama-tama kami mengurai keluaran dari beast menggunakan read.beast dan dari codeml menggunakan read.codeml menjadi dua objek pohon. Kemudian, dua objek yang berisi dua set data khusus cabang/simpul digabungkan melalui fungsi merge_tree .
perpustakaan(ggtree)
beast_file<-system.file(“contoh/
MCC_FluA_H3.pohon”,paket=“ggtree”)
rst_file<-system.file(“contoh/rst”,
paket=”ggtree”)
mlc_file<-system.file(“contoh/mlc”,
paket=”ggtree”)
pohon_binatang<-baca.binatang(berkas_binatang)
codeml_tree<-baca.codeml(file_rst, file_mlc)
merged_tree<-merge_tree(pohon_binatang,pohon_codeml)dapatkan.bidang(pohon_gabungan)
##[1]“tinggi” “tinggi_0.95_HPD” “tinggi_median”
##[4]“rentang_ketinggian” “panjang” “panjang_0,95_HPD”
##[7]“median_panjang” “rentang_panjang” “posterior”
##[10]“tingkat” “tingkat_0,95_HPD” “tingkat_median”
##[13]“rentang_tingkat” “t” “N”
##[16]“S” “dN_vs_dS” “dN”
##[19]“dS”“N_x_dN” “S_x_dS”
##[22]“sub_marginal” “sub_gabungan”
“sub_AA_marginal”
##[25]“sub_AA_gabungan”
Setelah menggabungkan objek beast_tree dan codeml_tree , semua data spesifik cabang/simpul yang disimpulkan oleh beast dan codeml tersedia di objek merged_tree , dalam komponen [1-13] dan [14-25] dari vektor di atas. Kami selanjutnya mengonversi objek pohon ke kerangka data, df , dan memvisualisasikan diagram sebaran hexbin dari d N /d S , d N dan d S yang disimpulkan oleh codeml vs. laju yang disimpulkan oleh beast pada cabang yang sama.
df<-fortify(pohon_gabungan)
df<-df[,c(“dN_vs_dS”,”dN”,”dS”,”laju”)]
df<-na.hilangkan(df)
df<-df[df$dN_vs_dS>=0&df$dN_vs_dS<=1,5,]%>%
tidyr::gather(tipe, nilai, dN_vs_dS:dS)
df$tipe[df$tipe==“dN_vs_dS”]<-“dN/dS”
tingkat(df$type)<-c(“dN/dS”,“dN”,“dS”)
ggplot(df,aes(nilai,laju))+ geom_hex()+
facet_wrap(~ jenis, skala=“free_y”)
Hasilnya diilustrasikan dalam Gambar 2. Kita kemudian dapat menguji asosiasi data spesifik cabang/simpul ini menggunakan korelasi Pearson, yang dalam kasus ini menunjukkan bahwa d N dan d S secara signifikan terkait dengan laju tetapi tidak dengan d N / d S.
Contoh 2: visualisasi dan anotasi pohon filogenetik
Contoh berikut mengubah merged_tree menjadi objek grafis dengan cabang-cabang pohon yang diwarnai berdasarkan tingkat substitusi spesifik cabang ( rate ) seperti yang ditunjukkan pada Gambar 3 a.

Pohon filogenetik virus influenza H3. Pohon dengan cabang-cabang yang diskalakan berdasarkan waktu (tahun dari akar) dan diwarnai berdasarkan tingkat substitusi (a). Pohon tersebut diskalakan ulang menggunakan d N sebagai panjang cabang dan diwarnai berdasarkan nilai d N (b). Cabang-cabang pohon tersebut diskalakan ulang berdasarkan waktu (kalender Gregorian) dan dimasukkan ke dalam kelompok yang berbeda berdasarkan spesies inang taksa, yang mana cabang-cabang tersebut diberi anotasi dalam jenis garis, warna, dan simbol yang berbeda (c).
p<-ggtree(pohon_gabungan,aes(warna=laju))+
tema_pohon2()+
skala_warna_kontinyu(tinggi=’#D55E00′,
rendah=’#0072B2′)+ geom_tiplab(ukuran=2)
Data spesifik cabang/simpul lain yang disimpan dalam objek pohon (Gbr. 5 ) dapat ditampilkan sebagai lapisan grafik anotasi tambahan di atas pohon. Presentasi pohon yang kompleks dimungkinkan dengan menambahkan beberapa lapisan anotasi. Pohon filogenetik dapat diskalakan ulang menggunakan variabel numerik apa pun yang terkait dengan cabang. Misalnya, estimasi spesifik cabang dari d N , d S dan ω dari analisis codeml , dapat digunakan sebagai panjang dan warna cabang di pohon (Gbr. 3 b). Simpul pohon dapat diberikan simbol yang berbeda berdasarkan nilai kategoris yang terkait (Gbr. 3 c). ggtree dapat menampilkan pohon dalam tata letak yang berbeda, termasuk tata letak persegi panjang, miring, melingkar dan kipas untuk filogeni dan kladogram, berakar/tidak berakar, berskala waktu dan dua dimensi.
Dibandingkan dengan paket visualisasi pohon filogenetik lainnya, ggtree unggul dalam eksplorasi visual struktur pohon dan data terkait. Misalnya, tampilan pohon kompleks dengan beberapa lapisan anotasi dapat ditransfer ke objek pohon baru tanpa pembuatan ulang langkah demi langkah. Kami telah membuat operator, %<% , untuk memperbarui tampilan pohon dengan objek pohon baru. Contoh berikut mengubah skala panjang cabang pohon ( merged_tree ) dengan nilai d N khusus cabang dan memperbarui objek grafik ( p ) dengan pohon baru ini melalui %<% . Warna cabang dari tampilan pohon yang diperbarui ini dipetakan ulang dari ‘rate’ ke ‘dN’.
p%<%rescale_tree(pohon_gabungan,’dN’)+ aes(warna=dN)
Fungsi groupClade menetapkan cabang dan simpul di bawah klade yang berbeda ke dalam kelompok yang berbeda. Demikian pula, fungsi groupOTU menetapkan cabang dan simpul ke kelompok yang berbeda berdasarkan kelompok unit taksonomi operasional (OTU) yang ditentukan pengguna yang tidak harus berada dalam klade, tetapi dapat berupa monofiletik (klade), polifiletik, atau parafiletik. Pohon filogenetik dapat diberi anotasi dengan memetakan jenis garis, ukuran, warna, atau bentuk yang berbeda ke cabang atau simpul yang telah ditetapkan ke kelompok yang berbeda. Dalam contoh berikut (Gbr. 3 c), kami menetapkan cabang dan simpul ke kelompok yang berbeda berdasarkan spesies inang taksa melalui groupOTU() . Menurut pengelompokan, cabang kemudian diberi warna dan jenis garis yang berbeda, dan taksa diberi simbol dengan warna dan bentuk yang berbeda. Kami juga menerapkan skala waktu, dalam kalender Gregorian, ke panjang cabang dengan menetapkan tanggal pengambilan sampel terbaru ( mrsd ).
tip<-get.tree(pohon_gabungan)$tip.label
pohon_gabungan<-groupOTU(pohon_gabungan,tip[grep
(“Babi”,tip)],“tuan rumah”)
ggtree(pohon_gabungan,aes(warna=host,
tipe data=host),mrsd=“2013-01-01”)+
geom_tippoint(aes(bentuk=host))+tema_pohon2()
Untuk memudahkan melihat dan memanipulasi pohon filogenetik, ggtree menyediakan sejumlah fungsi pembantu. Misalnya, fungsi gzoom atau viewClade memungkinkan pengguna untuk memperbesar bagian yang dipilih atau menampilkan klade yang dipilih. Manipulasi pohon umum lainnya dapat dicapai dengan fungsi-fungsi collapse , expand , rotate, flip, dll . Daftar fungsi-fungsi ggtree utama diberikan dalam Tabel 2 , dan penjelasan terperinci serta contoh-contohnya disediakan dalam cuplikan daring.
Contoh 3: pohon dua dimensi
Sumbu y atau lebar pohon yang ditata secara konvensional (yaitu dengan cabang-cabang pohon yang membentang secara horizontal sepanjang sumbu x , seperti yang ditunjukkan pada Gambar 3 ) sering kali hanya menyediakan pemisahan spasial yang teratur pada cabang-cabang pohon, tanpa makna biologis kuantitatif. ggtree dapat menggambar pohon ‘dua dimensi’ dengan mengubah skala sumbu y /lebar pohon ke atribut numerik spesifik-simpul yang mungkin merupakan ukuran karakteristik biologis tertentu dari taksa dan nenek moyang hipotetis di pohon tersebut. Dalam contoh ini, kami menggunakan objek pohon berskala waktu sebelumnya dan bertujuan untuk mengubah skala sumbu y /lebar pohonnya berdasarkan situs glikosilasi terkait -N (NLG) yang diprediksi untuk setiap takson dan urutan leluhur. Situs NLG diprediksi menggunakan netnglyc 1.0 Server (Blom et al . 2004 ) dan dibaca ke dalam r dan disimpan dalam variabel NAG (Lampiran S2). Untuk mengubah skala sumbu y , parameter yscale dalam fungsi ggtree() diatur ke variabel numerik atau kategoris. Jika yscale adalah variabel kategoris, pengguna harus menentukan bagaimana kategori tersebut dipetakan ke nilai numerik melalui variabel yscale_mapping seperti yang ditunjukkan dalam kasus ini. Pohon dua dimensi yang dihasilkan ditunjukkan pada Gambar 4 .

Pohon dua dimensi dengan batang dan cabang lainnya disorot dengan warna merah (untuk babi) dan biru (untuk manusia). Sumbu x diskalakan ke panjang cabang (dalam satuan tahun) dari pohon berskala waktu. Sumbu y diskalakan ke variabel atribut simpul, dalam hal ini jumlah situs glikosilasi terkait -N (NLG) yang diprediksi pada protein hemaglutinin. Lingkaran berwarna menunjukkan berbagai jenis simpul pohon. Perhatikan bahwa simpul yang diberi koordinat x (temporal) dan y (NLG) yang sama ditumpangkan dalam representasi ini dan muncul sebagai satu simpul, yang diarsir berdasarkan warna semua simpul pada titik tersebut.
ggtree(pohon_gabungan,aes(warna=host),mrsd=“2013-
01-01”,yscale=“label”,yscale_mapping=NAG)
Contoh 4: anotasi pohon yang lebih kompleks
Dalam contoh ini, kami menunjukkan anotasi pohon yang lebih kompleks dengan teks dan bentuk tambahan (Gbr. 5 ). Pertama-tama kami memvisualisasikan pohon dalam skala waktu dan cabang yang diwarnai oleh d N /d S. Pohon tersebut dianotasi dengan probabilitas klade dan substitusi asam amino. Substitusi ditentukan melalui perbandingan urutan induk-anak dari urutan takson dan urutan leluhur yang dapat diperkirakan oleh salah satu dari hyphy , baseml atau codeml .

Pohon filogenetik berskala waktu yang diberi anotasi dengan matriks nilai yang diasosiasikan dengan setiap takson, dalam kasus ini genotipe virus influenza H3. Sumbu x adalah skala waktu (dalam satuan tahun) yang disimpulkan oleh beast . Cabang-cabang pohon diwarnai oleh nilai d N /d S (seperti pada skala kiri di atas), dan label simpul internal menunjukkan probabilitas klade posterior. Label ujung (nama takson) dan lingkaran diwarnai oleh spesies (manusia berwarna biru dan babi berwarna merah). Genotipe, yang ditampilkan sebagai susunan kotak berwarna di sebelah kanan, tersusun dari garis keturunan (baik HuH3N2, Pdm/09 atau TRIG, diwarnai seperti pada legenda kanan di atas) dari delapan segmen genom virus. Setiap urutan segmen yang hilang ditampilkan sebagai kotak kosong. Tata letak persegi panjang dan kipas yang lebih kecil dari pohon yang tidak berlabel ditampilkan di sisipan atas dan bawah di sebelah kiri. Kode lengkap tersedia di Lampiran S2.
Sementara ggtree mendukung anotasi pohon menggunakan data dari daftar perangkat lunak (Tabel 1 ), ia juga menerima data yang ditentukan pengguna dengan mudah. Dalam ggtree , operator %<+% telah ditetapkan untuk memungkinkan data anotasi yang ditentukan pengguna ( host.df dalam contoh ini) untuk dilampirkan ke objek grafik pohon. Dalam contoh ini, kami melampirkan informasi spesies inang ke tampilan pohon dan mewarnai simbol lingkaran dan label taksa berdasarkan informasi ini.
Pengguna mungkin memiliki matriks data (dari eksperimen atau analisis data) tentang taksa dalam pohon filogenetik. Dalam ggtree , matriks data ini dapat ditampilkan sebagai peta panas yang menyelaraskan dengan taksa terkait di sisi kanan pohon dengan fungsi gheatmap . Di sini, kami memberi anotasi pada pohon dengan peta panas genotipe untuk setiap takson (Gbr. 5 ). Dalam matriks genotipe, warna masing-masing dari delapan kotak menunjukkan garis keturunan setiap segmen gen virus yang diklasifikasikan menurut Lam et al . ( 2011 ) dan Liang et al . ( 2014 ).
ggtree menyediakan fungsi subview untuk menambahkan subplot di lapisan baru plot utama. Dalam contoh ini, pohon dengan matriks terkait dipadatkan menjadi bentuk persegi panjang dan kipas dan diplot sebagai subplot di dalam Gambar 5 .
##Di bawah ini adalah kutipan kode, lihat Lampiran S2 untuk detailnya
##visualisasikan pohon dengan cabang dalam skala waktu dan
##diwarnai berdasarkan dN/dS.
kolom<-skala_warna(pohon_gabungan,“dN_vs_dS”,
rendah=“#0072B2”,tinggi=“#D55E00”,
interval=seq(0,1.5,panjang.keluar=100))
p<-ggtree(pohon_gabungan,ukuran=.8,mrsd=“2013-01-
01”,ndigits= 2,warna=kolom)
##tambahkan anotasi substitusi asam amino
## disimpulkan oleh probabilitas gabungan
p<- p+geom_text(aes(x=cabang,
label=gabungan_AA_subs),vjust=-.03,ukuran=1.8)
##gunakan %<+%operatoruntukmelampirkaninformasihosting
##pemandanganpohon
p<-p%<+%host.df
##setelah lampiran melalui operator %<+%,
##kita dapat menggunakan informasi host untuk mewarnai lingkaran dan
##label ujung.
p <-p + geom_tippoint(aes(warna=host),ukuran=2)+ geom_tiplab(aes(warna=host), align=BENAR, ukuran=3, ukuran garis = .3) ##visualisasikan peta panas genotipe gheatmap(p, genotipe, lebar=.4,offset=7, colnames=F)%>%skala_x_ggtree
Selain tampilan peta panas dari data matriks yang terkait dengan taksa, penyelarasan sekuens jamak yang mendasari taksa dapat ditampilkan dengan pohon menggunakan fungsi msaplot . Lebih jauh, pohon juga dapat diberi anotasi dengan subplot dari berbagai jenis grafik (misalnya grafik batang, pai, kotak) menggunakan fungsi inset atau dengan gambar siluet yang diambil dari basis data PhyloPic ( http://phylopic.org ) dengan fungsi phylopic .
Kesimpulan
Paket ggtree memiliki fitur (i) interoperabilitas tinggi , karena ggtree dapat mengimpor data evolusi dari berbagai format file pohon dan program analisis serta data terkait lainnya dari eksperimen, sehingga berbagai sumber dan jenis data dapat ditampilkan pada pohon untuk perbandingan dan analisis lebih lanjut; (ii) presentasi filogenetik yang kompleks , seperti pohon dua dimensi dan pohon yang terkait dengan grafik/gambar; (iii) sistem grafis yang sangat fleksibel , karena ggtree memperluas ggplot2 dan memungkinkan pembuatan lapisan geometris terpisah yang dapat dengan bebas dikombinasikan, dihapus, dan disusun ulang untuk mendukung berbagai cara manipulasi dan visualisasi pohon yang nyaman. ggtree juga mendukung visualisasi objek pohon yang didefinisikan oleh paket r lain sehingga ggtree dapat dengan mudah diintegrasikan ke dalam analisis/paket mereka. Misalnya, objek pohon phyloseq dan data mikrobioma dapat divisualisasikan menggunakan ggtree (Lampiran S1). Dengan bantuan ggtree , pengguna dapat dengan mudah membuat pohon filogenetik besar dengan anotasi kompleks dengan mengintegrasikan berbagai data terkait termasuk informasi temporal, spasial, dan genotipe, seperti pohon yang dibuat di Liang et al . ( 2014 ) dan Lam et al . ( 2015 ).
Ucapan Terima Kasih
Kami mengucapkan terima kasih kepada Editor dan tiga peninjau anonim atas saran dan komentar bermanfaat yang telah meningkatkan naskah ini secara signifikan. Penelitian ini didukung oleh Program Pendanaan Awal untuk Penelitian Dasar, HKU (201411159214), Skema Penelitian Berbasis Tema (T11-705/14-N) dan hibah Skema Area of Excellence (AoE/M-12/06) dari Komite Hibah Universitas HKSAR. Penelitian ini dilakukan sebagian dengan menggunakan fasilitas komputasi penelitian (HPC2015) dan layanan konsultasi yang ditawarkan oleh Layanan Teknologi Informasi, HKU. Penulis menyatakan tidak ada konflik kepentingan terhadap publikasi karya ini.
Kontribusi penulis
GY dan TT-YL menyusun dan mengembangkan metode dan paket r ; GY, DKS, dan TT-YL menulis naskah; GY, DKS, HZ, YG, dan TT-YL berkontribusi pada versi final naskah.
Aksesibilitas data
Contoh data yang disimpan di repositori Dryad: http://datadryad.org/resource/doi:10.5061/dryad.v15v0 (Yu et al . 2016 ).