#KUMPULAN DATA HIIRAGI
Gambar 3.5: Gambar imunofluoresensi satu bagian dari blastokista tikus E3.5 yang diwarnai dengan Serpinh1, penanda endoderm primitif (biru), Gata6 (merah) dan Nanog (hijau). Untuk menguji fungsionalitas ggplot2 dengan benar , kita memerlukan kumpulan data yang cukup besar dan memiliki kompleksitas sehingga dapat dipotong dan dilihat dari berbagai sudut. Kami akan menggunakan kumpulan data microarray ekspresi gen yang melaporkan transkriptom sekitar 100 sel individu dari embrio tikus pada titik waktu berbeda dalam perkembangan awal. Embrio mamalia dimulai sebagai sel tunggal, telur yang telah dibuahi. Melalui gelombang pembelahan sel yang tersinkronisasi, sel telur berkembang biak menjadi gumpalan sel yang pada awalnya tidak menunjukkan perbedaan nyata di antara sel-sel tersebut. Namun, pada titik tertentu, sel memilih garis keturunan yang berbeda. Dengan spesifikasi yang lebih jauh dan lebih jauh, muncul berbagai jenis sel dan jaringan yang diperlukan untuk organisme utuh. Tujuan percobaan, dijelaskan olehOhnishi dkk. ( 2014 ) , adalah untuk menyelidiki perubahan ekspresi gen yang terkait dengan peristiwa pemutusan simetri pertama pada embrio. Kami akan menjelaskan lebih lanjut datanya seiring berjalannya waktu. Detail lebih lanjut dapat ditemukan di makalah dan dokumentasi paket data Biokonduktor Hiiragi2013 . Kami pertama kali memuat data:
library("Hiiragi2013")
## Loading required package: affy
## Loading required package: BiocGenerics
##
## Attaching package: 'BiocGenerics'
## The following objects are masked from 'package:stats':
##
## IQR, mad, sd, var, xtabs
## The following objects are masked from 'package:base':
##
## anyDuplicated, aperm, append, as.data.frame, basename, cbind,
## colnames, dirname, do.call, duplicated, eval, evalq, Filter, Find,
## get, grep, grepl, intersect, is.unsorted, lapply, Map, mapply,
## match, mget, order, paste, pmax, pmax.int, pmin, pmin.int,
## Position, rank, rbind, Reduce, rownames, sapply, setdiff, sort,
## table, tapply, union, unique, unsplit, which.max, which.min
## Loading required package: Biobase
## Welcome to Bioconductor
##
## Vignettes contain introductory material; view with
## 'browseVignettes()'. To cite Bioconductor, see
## 'citation("Biobase")', and for packages 'citation("pkgname")'.
## Loading required package: boot
## Loading required package: clue
## Loading required package: cluster
## Loading required package: genefilter
## Loading required package: geneplotter
## Loading required package: lattice
##
## Attaching package: 'lattice'
## The following object is masked from 'package:boot':
##
## melanoma
## Loading required package: annotate
## Loading required package: AnnotationDbi
## Loading required package: stats4
## Loading required package: IRanges
## Loading required package: S4Vectors
##
## Attaching package: 'S4Vectors'
## The following object is masked from 'package:utils':
##
## findMatches
## The following objects are masked from 'package:base':
##
## expand.grid, I, unname
## Loading required package: XML
## Loading required package: gplots
##
## Attaching package: 'gplots'
## The following object is masked from 'package:IRanges':
##
## space
## The following object is masked from 'package:S4Vectors':
##
## space
## The following object is masked from 'package:stats':
##
## lowess
## Loading required package: gtools
##
## Attaching package: 'gtools'
## The following objects are masked from 'package:boot':
##
## inv.logit, logit
## Loading required package: KEGGREST
## Loading required package: MASS
##
## Attaching package: 'MASS'
## The following object is masked from 'package:AnnotationDbi':
##
## select
## The following object is masked from 'package:genefilter':
##
## area
## Loading required package: mouse4302.db
## Loading required package: org.Mm.eg.db
##
##
## Loading required package: RColorBrewer
## Loading required package: xtable
data("x")
dim(Biobase::exprs(x))
## [1] 45101 101
Anda dapat mencetak ringkasan objek ExpressionSet yangx lebih detail hanya dengan mengetik xdi prompt R. 101 kolom matriks data (diakses di atas melalui exprsfungsi dari paket Biobase ) sesuai dengan sampel (masing-masing adalah sel tunggal), baris 45101 sesuai dengan gen yang diperiksa oleh larik, larik Affymetrix mouse4302. Data dinormalisasi menggunakan metode RMA ( Irizarry et al. 2003 ) . Data mentah juga tersedia dalam paket (dalam objek data a) dan di database ArrayExpress EMBL-EBI dengan kode akses E-MTAB-1681.
Mari kita lihat informasi apa yang tersedia tentang sampel 2 .
head(pData(x), n = 2)
## File.name Embryonic.day Total.number.of.cells lineage genotype
## 1 E3.25 1_C32_IN E3.25 32 WT
## 2 E3.25 2_C32_IN E3.25 32 WT
## ScanDate sampleGroup sampleColour
## 1 E3.25 2011-03-16 E3.25 #CAB2D6
## 2 E3.25 2011-03-16 E3.25 #CAB2D6
Informasi yang diberikan merupakan gabungan informasi tentang sel (yaitu, usia, ukuran dan genotipe embrio asal sel tersebut diperoleh) dan informasi teknis (tanggal pemindaian, nama file data mentah). Berdasarkan konvensi, waktu perkembangan embrio tikus diukur dalam hari, dan dilaporkan, misalnya, E3.5. Selain itu, dalam makalah tersebut penulis membagi sel menjadi 8 kelompok biologis ( sampleGroup), berdasarkan usia, genotipe, dan garis keturunan, dan mereka menentukan skema warna untuk mewakili kelompok tersebut ( sampleColour3 ). Dengan menggunakan kode berikut (lihat penjelasan di bawah), kami mendefinisikan kerangka data kecil groupsyang berisi informasi ringkasan untuk setiap grup: jumlah sel dan warna yang diinginkan.
library("dplyr")
##
## Attaching package: 'dplyr'
## The following object is masked from 'package:MASS':
##
## select
## The following object is masked from 'package:AnnotationDbi':
##
## select
## The following objects are masked from 'package:IRanges':
##
## collapse, desc, intersect, setdiff, slice, union
## The following objects are masked from 'package:S4Vectors':
##
## first, intersect, rename, setdiff, setequal, union
## The following object is masked from 'package:Biobase':
##
## combine
## The following objects are masked from 'package:BiocGenerics':
##
## combine, intersect, setdiff, union
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
groups = group_by(pData(x), sampleGroup) |>
summarise(n = n(), color = unique(sampleColour))
groups
## # A tibble: 8 × 3
## sampleGroup n color
## <chr> <int> <chr>
## 1 E3.25 36 #CAB2D6
## 2 E3.25 (FGF4-KO) 17 #FDBF6F
## 3 E3.5 (EPI) 11 #A6CEE3
## 4 E3.5 (FGF4-KO) 8 #FF7F00
## 5 E3.5 (PE) 11 #B2DF8A
## 6 E4.5 (EPI) 4 #1F78B4
## 7 E4.5 (FGF4-KO) 10 #E31A1C
## 8 E4.5 (PE) 4 #33A02C
Sel-sel dalam kelompok yang namanya terkandung FGF4-KOberasal dari embrio di mana gen FGF4, pengatur penting diferensiasi sel, telah dihilangkan. Mulai dari E3.5, sel tipe liar (tanpa knock-out FGF4) mengalami peristiwa pemutusan simetri pertama dan berdiferensiasi menjadi garis keturunan sel yang berbeda, yang disebut epiblast pluripoten (EPI) dan endoderm primitif (PE).
Karena potongan kode di atas adalah contoh pertama yang kita temui dengan operator pipa |>dan fungsinya group_byserta summarisedari paket dplyr , mari kita buka paket kodenya. Pertama, pipa |>4 . Secara umum, pipa berguna untuk membuat panggilan fungsi bersarang lebih mudah dibaca manusia. Dua baris kode berikut setara dengan R.
Bunyinya: “Evaluate f(x), lalu teruskan hasilnya agar berfungsi gsebagai argumen pertama, sementara yditeruskan gsebagai argumen kedua. Kemudian teruskan hasilnya gke fungsi h.” Anda dapat mengulangi hal ini tanpa batas waktu. Terutama jika argumen xdan yekspresi itu sendiri kompleks, atau jika terdapat cukup banyak rangkaian fungsi yang terlibat, versi pertama cenderung lebih mudah dibaca.
Fungsi ini group_byhanya “menandai” kerangka data dengan catatan bahwa semua operasi selanjutnya tidak boleh diterapkan ke seluruh kerangka data sekaligus, tetapi ke blok yang ditentukan oleh sampleGroupfaktor tersebut. Terakhir, summarisehitung statistik ringkasan; ini bisa berupa, misalnya, mean, sum; dalam hal ini, kita hanya menghitung jumlah baris di setiap blok, n(), dan warna umum.
ggplot2 adalah paket oleh Hadley Wickham ( Wickham 2016 ) yang mengimplementasikan ide tata bahasa grafis – sebuah konsep yang dibuat oleh Leland Wilkinson dalam buku eponymousnya ( Wilkinson 2005 ) . Kita akan mengeksplorasi beberapa fungsinya di bab ini, dan Anda akan melihat banyak contoh penggunaannya di sisa buku ini. Dokumentasi lengkap untuk paket tersebut dapat ditemukan di situs webnya . Dokumentasi online mencakup contoh kasus penggunaan untuk masing-masing tipe grafik yang diperkenalkan dalam bab ini (dan banyak lagi) dan merupakan sumber daya yang sangat berharga saat membuat gambar.
Mari kita mulai dengan memuat paket dan mengulangi plot sederhana pada Gambar 3.2 .
library("ggplot2")
ggplot(DNase, aes(x = conc, y = density)) + geom_point()
Kami baru saja menulis “kalimat” pertama kami menggunakan tata bahasa
grafik. Mari kita dekonstruksi kalimat ini. Pertama, kami menentukan
kerangka data yang berisi data, DNase. Argumen aes(ini singkatan dari
estetika ) menyatakan variabel mana yang ingin kita lihat dipetakan ke
dalamnya - Dan -kapak, masing-masing. Terakhir, kami menyatakan bahwa
kami ingin plot menggunakan titik (sebagai lawan, katakanlah, garis atau
batang), dengan menambahkan hasil pemanggilan fungsi tersebut
geom_point.
Sekarang mari kita beralih ke data sel tunggal mouse dan memplot jumlah sampel untuk masing-masing dari 8 grup menggunakan ggplotfungsi tersebut. Hasilnya ditunjukkan pada Gambar 3.7 .
ggplot(groups, aes(x = sampleGroup, y = n)) +
geom_bar(stat = "identity")
Sekarang geom_barkita diberitahu ggplotbahwa kita ingin setiap item data
(setiap baris groups) diwakili oleh sebuah bar. Batangan adalah salah
satu contoh objek geometris ( geom dalam bahasa paket ggplot2ggplot )
yang mengetahui tentangnya. Kita telah melihat objek serupa lainnya pada
Gambar 3.6 : titik, yang ditunjukkan oleh geom_pointfungsi. Kita akan
menemui banyak geom lainnya nanti. Kami menggunakan aesuntuk menunjukkan
bahwa kami ingin grup ditampilkan di sepanjang -sumbu dan ukuran
sepanjang -sumbu. Terakhir, kami memberikan argumen stat =
“identity”(dengan kata lain, tidak melakukan apa pun) pada
geom_barfungsi tersebut, karena jika tidak, fungsi tersebut akan mencoba
menghitung histogram data (nilai defaultnya statadalah “count”).
statadalah kependekan dari statistic , yang kita sebut sebagai fungsi
data apa pun. Selain statistik identitas dan jumlah, ada operasi lain,
seperti penghalusan, rata-rata, binning, atau operasi lain yang
mengurangi data dengan cara tertentu.
Konsep-konsep ini –data, objek geometris, statistik– adalah beberapa unsur tata bahasa grafis, sama seperti kata benda, kata kerja, dan kata keterangan yang merupakan unsur dalam kalimat bahasa Inggris.
Plot pada Gambar 3.7 tidak buruk, namun ada beberapa potensi perbaikan. Kita dapat menggunakan warna pada batang untuk membantu kita dengan cepat melihat batang mana yang sesuai dengan kelompok mana. Hal ini sangat berguna jika kita menggunakan skema warna yang sama di beberapa plot. Untuk tujuan ini, mari kita tentukan vektor bernama groupColoryang berisi warna yang kita inginkan untuk setiap nilai yang mungkin sampleGroup. 5
groupColor = setNames(groups$color, groups$sampleGroup)
Hal lain yang perlu kita perbaiki pada Gambar 3.7 adalah keterbacaan label batang. Saat ini mereka sedang bertemu satu sama lain — masalah umum jika Anda memiliki nama deskriptif.
ggplot(groups, aes(x = sampleGroup, y = n, fill = sampleGroup)) +
geom_bar(stat = "identity") +
scale_fill_manual(values = groupColor, name = "Groups") +
theme(axis.text.x = element_text(angle = 90, hjust = 1))
Ini sekarang menjadi kalimat yang lebih panjang dan kompleks. Mari kita
membedahnya. Kita menambahkan sebuah argumen, fillke aesfungsi yang
menyatakan bahwa kita ingin batangnya diwarnai (diisi) berdasarkan
sampleGroup(yang dalam hal ini secara kebetulan juga merupakan nilai
argumennya x, namun tidak harus selalu demikian). Selanjutnya kita
menambahkan panggilan ke scale_fill_manualfungsi tersebut, yang
mengambil masukan berupa peta warna – yaitu, pemetaan dari kemungkinan
nilai suatu variabel ke warna terkait – sebagai vektor bernama. Kami
juga memberi judul pada peta warna ini (perhatikan bahwa dalam plot yang
lebih kompleks, mungkin terdapat beberapa peta warna berbeda yang
terlibat). Seandainya kami menghilangkan panggilan ke scale_fill_manual,
ggplot2 akan menggunakan pilihan warna defaultnya. Kami juga menambahkan
panggilan untuk thememenyatakan bahwa kami menginginkannya -Label sumbu
diputar 90 derajat dan rata kanan ( hjust; defaultnya adalah ke
tengah).
##3.4.1 Aliran data
Fungsi ini ggplotmengharapkan data Anda dalam kerangka data. Jika mereka berada dalam matriks, dalam vektor terpisah, atau jenis objek lainnya, Anda harus mengonversinya. Paket dplyr dan broom antara lain menawarkan fasilitas untuk tujuan tersebut. Kita akan membahas hal ini lebih lanjut di Bagian 13.10 , dan Anda akan melihat contoh konversi tersebut di seluruh buku ini.
Ini termasuk kelas basis R data.frame serta kelas tibble (dan sinonim data_frame ) dari paket tibble di rapiverse. Hasil dari panggilan ke ggplotadalah objek ggplot . Mari kita ingat kembali potongan kode di atas:
gg = ggplot(DNase, aes(x = conc, y = density)) + geom_point()
Kami sekarang telah menetapkan output ggplotke objek gg, alih-alih mengirimkannya langsung ke konsol, di mana ia “dicetak” dan menghasilkan Gambar 3.6 . Situasi ini sepenuhnya analog dengan apa yang biasa Anda lakukan saat bekerja dengan konsol R: ketika Anda memasukkan ekspresi seperti 1+1dan menekan “Enter”, hasilnya akan dicetak. Ketika ekspresi merupakan penugasan, seperti s = 1+1, efek samping terjadi (nama “s”terikat pada objek di memori yang mewakili nilai 1+1), tetapi tidak ada yang dicetak. Demikian pula, ketika sebuah ekspresi dievaluasi sebagai bagian dari skrip yang dipanggil dengan source, ekspresi tersebut tidak dicetak. Jadi, kode di atas juga tidak menghasilkan keluaran grafik apa pun, karena tidak ada printmetode yang dipanggil. Untuk mencetakgg, ketikkan namanya (dalam sesi interaktif) atau panggil print:
gg
print(gg)
##3.4.2 Menyimpan angka ggplot2 memiliki fungsi penyimpanan plot bawaan
yang disebutggsave:
ggplot2::ggsave("DNAse-histogram-demo.pdf", plot = gg)
## Saving 7 x 5 in image
Ada dua cara utama menyimpan plot: grafik vektor dan grafik raster (piksel). Dalam grafik vektor, plot disimpan sebagai rangkaian primitif geometris seperti titik, garis, kurva, bentuk, dan karakter tipografi. Format pilihan di R untuk menyimpan plot ke dalam format grafik vektor adalah PDF. Dalam grafik raster, plot disimpan dalam struktur data matriks titik. Keterbatasan utama format raster adalah resolusinya yang terbatas, yang bergantung pada jumlah piksel yang tersedia. Di R, perangkat yang paling umum digunakan untuk keluaran grafik raster adalahpng. Secara umum, lebih baik menyimpan plot Anda dalam format grafik vektor, karena file grafik vektor nanti selalu dapat diubah menjadi format raster dengan resolusi apa pun yang diinginkan, sedangkan sebaliknya cukup sulit. Dan Anda tidak ingin gambar-gambar dalam pembicaraan atau makalah Anda terlihat buruk karena artefak pikselisasi!
Refrensi : https://www.huber.embl.de/msmb/03-chap.html#sec-graphics-ggplot