Upload
others
View
5
Download
0
Embed Size (px)
Citation preview
R ile Biyoenformatik
Metehan Ünal
Metehan Ünal 1
Sunum genel olarak «Bioinformatics with R Cookbook (Paurush Praveen Sinha)»
kitabını temel almaktadır.
Giriş
• Moleküler biyoloji alanındaki son gelişmelerle birlikte dizilim verileri
sayısında üssel bir artışa sebep olmuştur.
• Biyoenformatik, biyolojik işleyiş ve bu verilere dayanan canlı bir
sistemin organizasyonu hakkında bilgi edinmeyi amaçlamaktadır.
• Üretilen muazzam büyüklükteki veri sağlam bir istatistiksel idare
gerektirir. Bu da ancak sağlam bir hesaplama istatistik aracı ve
ortamı ile mümkün olacaktır.
Metehan Ünal 2
Giriş
• R dili bu tarz bir ortamı sağlar.
• R, geniş bir «community»ye sahip ücretsiz bir araçtır.
• Çeşitli analiz işlemlerini destekleyen devasa paket kütüphaneleri
aracılığı ile veri analizi yapılmasını sağlar.
• Bu bölümde ilk olarak «R nasıl yüklenir?» ve «ileride yaralı
olabilecek R fonksiyonları nasıl kullanılır?» üzerine olacaktır.
Metehan Ünal 3
Yükleme
• R'deki kütüphaneler belirli amaçlara hizmet etmek için yazılmış fonksiyonları olan paketlerdir.
• Bu fonksiyonları arasında belirli dosya biçimlerinin okunması veya belirli veritabanlarından veri alınması sayılabilir.
• Bu kütüphaneleri kullanabilmek için onların hem sistemde hem de R oturumunda yüklü olması gerekmektedir.
• Bu kütüphaneler belirli bir repository’den veya bir yerel dosyadan yüklenebilir.
Metehan Ünal 4
Yükleme
• R paket repository’lerinden en önemli ikisi Comprehensive R
Archive Network (CRAN) ve Bioconductor’dır.
• CRAN, mirror sitelerinde R'nin kodunun ve dokümantasyonunun aynı, güncel
versiyonlarını korur ve barındırır.
• Bioconductor ise yüksek verimlilikli veri analizi yapmayı sağlayan bir diğer
repository’dir.
Metehan Ünal 5
Yükleme
• http://cran.r-project.org adresinden «install R for the first time»
seçeneğine, ardından da 1Download R 3.6.* for Windows»
tıklayarak indirip kurabilirsiniz.
Metehan Ünal 6
Yükleme
• Paketleri yüklemek için,
• Araç kutusundaki Paketler menüsünden Paket Yükle seçeneğine tıklanır.
• Bu oturum sırasında bir paketi ilk kez kuruyorsanız, R sizden bir ayna/mirror
seçmenizi isteyecektir. Coğrafi olarak en yakın aynayı seçiniz.
• Kurmak istediğiniz paketin adına ve ardından Tamam düğmesini tıklayın. R,
seçilen paketleri indirir ve yükler.
Metehan Ünal 7
Yükleme
• Varsayılan olarak, R, paketleri CRAN'dan alır. İsterseniz paketler
menüsünden Depoları Seç seçeneği ile değiştirebilirsiniz.
• İstenen paketin farklı bir depoda mevcut olması durumunda,
varsayılan depoyu değiştirmeniz gerekir.
• Bir diğer paket yükleme yöntemi olarak aşağıdaki kodu
kullanabilirsiniz.
> install.packages("package_name")
Metehan Ünal 8
Yükleme
• Yüklü olan paketleri yada kütüphaneleri görüntülemek için
aşağıdaki komut kullanılabilir:
> library()
• Bir R oturumundan çıkmak için, R istemcisine q() yazın; bu
durumda istemci kaydedip kaydetmemek istediğiniz soracaktır.
Metehan Ünal 9
• Bir R oturumu başladığında birkaç kütüphane varsayılan olarak yüklenir. R'ye bir kütüphane yüklemek için aşağıdaki komutu çalıştırın:
> load(package_name)
• Bir paketin yüklenmesi, bu paketin tüm işlevlerini R oturumuna alır. Oturumdaki varsayılan paketler aşağıdaki getOption komutunu kullanarak görüntülenebilir:
> getOption("defaultPackages")
• Şu anda bir oturumda yüklü kütüphaneler aşağıdaki komutla görülebilir:
> print(.packages())
• Bunun için alternatif, sürüm detaylarını da sağlayan sessionInfo () 'dir.
• Yüklü tüm paketler, library() aşağıdaki şekilde çalıştırılarak görüntülenebilir:
> library()
Metehan Ünal 10
• Tüm bunların yanı sıra, R kapsamlı bir yardım sistemine sahiptir. R'dan çeşitli şekillerde yardım alabilirsiniz.
• Aşağıdakiler, R’de yardım almak için kullanılabilecek seçeneklerin bir listesidir:
> help.start()
> help(sum) # Sum fonksiyonu için help dosyalarına ulaş.
> ?sum # Sum fonksiyonu için help dosyalarını ara.
> example(sum) # fonksiyonu bir örnekle göster
> help.search("sum") # Help dosyalarını aramak için argüman karakterini kullanır.
Metehan Ünal 11
• Önceki fonksiyonların tümü benzersiz bir şekilde yardım sağlar.
• help.start komutu, R belgelerinin hypertext sürümünü başlatmak
için kullanılan genel komuttur.
• Paketle ilgili tüm yardım dosyaları aşağıdaki komutla kontrol
edilebilir:
> help(package="package_name")
Metehan Ünal 12
Veri Okuma ve Yazma
• Herhangi bir veriyi analiz etmeye başlamadan önce, onu R çalışma
alanımıza yüklemeliyiz.
• Bu, dışarından bir R nesnesi (.rda veya .Rdata olabilir) veya bir paket için
içeriden bir R nesnesi veya bir TXT, CSV veya Excel dosyası olabilir.
• Bu tarif için R Base paketlerinde bulunan iris veri setini kullanacağız.
• Bu veriseti, ilişkili üç iris çiçeği türünün morfolojik varyasyonunun nicelikli
özelliklerini taşımaktadır.
Metehan Ünal 13
Veri Okuma ve Yazma
• R’da okuma ve yazma işlemleri için aşağıdaki adımları izleyin:
1. Aşağıdaki komut ile dahili bir R verisini yükleyin:
> data(iris)
2. İris verileri hakkında daha fazla bilgi edinmek için, aşağıdaki fonksiyonu kullanın:
> ?iris
3. Dışarından bir R verisi yükleyin:
> load(file="mydata.RData")
Metehan Ünal 14
Veri Okuma ve Yazma
4. Bir veri nesnesi (D) kaydetmek için:
> save(D, file="myData.RData")
5. Tablo verilerini read.csv veya read.table içeren bir .csv dosyası biçiminde
okumak için:
> mydata <- read.table("file.dat", header = TRUE, sep="\t", row. names
= 1)
> mydata <- read.csv("mydata.csv")
Metehan Ünal 15
Veri Okuma ve Yazma
• Ayrıca bir Excel dosyasını R’da okumak da mümkündür.
• Bunu xlsx ve gdata gibi çeşitli paketlerle yapabilirsiniz.
• xlsx paketi Java ayarları gerektirir, gdata ise nispeten daha basittir.
• Ancak xlsx paketi doğal olarak daha fazla işlevsellik sunar.
• Bu örnek için, xlsx paketini kullanacağız. Bir Excel dosyasını aşağıdaki gibi okumak için read.xlsx fonksiyonunu kullanın:
> install.packages("xlsx", dependencies=TRUE)
> library(xlsx)
> results_data <- read.xlsx("Results.xlsx",1)
Metehan Ünal 16
Veri Okuma ve Yazma
• Bu verileri yada tablo nesnelerini bir CSV dosyasına yazmak için aşağıdaki
komut kullanılır:
> write.table(results_data, file = "results_2.xls", append = FALSE, quote
=TRUE, sep = " ")
> write.csv(results_data, file="results_3.csv", sep=",")
Metehan Ünal 17
Veri Okuma ve Yazma
• read.csv veya write.csv komutları, eğer dizin açıkça belirtilmedi ise,
geçerli çalışma dizinindeki dosya adını alır.
• Geçerli çalışma dizinini bulmak için getwd () komutunu kullanın.
• İstediğiniz dizine değiştirmek için setwd fonksiyonunu aşağıdaki
gibi kullanın:
> setwd("D:/R_work/mywork/")
Metehan Ünal 18
Veri Okuma ve Yazma
• Yüklenen veri kümesi hakkında daha fazla bilgi edinmek için, veri kümesi türünü (nesne sınıfı) almak üzere veri kümesinin class() fonksiyonunu kullanın.
> class(iris)
• İris verisi 150 satır ve 5 sütundan oluşan bir data framedir. dim komutu boyutları görmemizi sağlar.
> dim(iris)
• Data frame sınıfı bir matris gibidir, ancak içinde karakter ve sayısal değerler gibi farklı türdeki nesneleri barındırabilir.
Metehan Ünal 19
Veri Okuma ve Yazma
• Head ve tail komutlarını kullanarak ilk ve son birkaç satıra
ulaşılabilir.
> head(iris), head (iris, 10)
> tail(iris)
Metehan Ünal 20
Veri Okuma ve Yazma
• Aşağıda görülen WriteXLS paketi, Excel dosyasına nesne yazabilmemeize olanak sağlar. Burada x veri nesnesidir:
> install.packages(«WriteXLS»)
> library(WriteXLS)
> WriteXLS(x, ExcelFileName = "R.xls")
• Paket ayrıca, bir Excel dosyasının farklı sayfalarına data frameler listesini yazmamızı sağlar. WriteXLS fonksiyonu, görevleri yerine getirmek için arka planda Perl'i kullanır.
Metehan Ünal 21
Verileri Filtreleme ve Bölümleme
• Önceki bölümlerde okuduğumuz veriler, R'de data frame olarak var
olurlar. Data frameler, R'deki tablo verisinin birincil yapılarıdır.
• Data framelerin sütunlarında sakladığımız veriler, sayısal veya
karakter gibi çeşitli türlerde olabilir.
• Bu kısımda data framelerin bölümlerini almak, yeni yığınlar
eklemek veya belirli koşulları sağlayan verileri filtrelemek için basit
işlemlerden bahsedeceğiz.
Metehan Ünal 22
Verileri Filtreleme ve Bölümleme
• Bu örnek için aşağıdaki öğeler gereklidir:
• R oturumunda değiştirilmek veya filtrelenmek üzere yüklenmiş bir data frame.
(Bizim örneğimizde Iris veri seti var.)
• 1. maddeye eklenecek bir başka veri seti veya 1. maddeden çıkarılacak bir
dizi filtre
Metehan Ünal 23
Verileri Filtreleme ve Bölümleme
• Data frameden bir alt kümeyi filtrelemek ve oluşturmak için
aşağıdaki adımları izleyin:
1. Daha önce anlatılan iris verisini yükleyin.
2. Türlerin adlarını ve bunlara karşılık gelen sepal boyutları (uzunluk
ve genişlik) almak için, verilerin yapısına aşağıdaki gibi göz atın:
> str(iris)
Metehan Ünal 24
Verileri Filtreleme ve Bölümleme
3. İlgili verileri myiris nesnesine almak için, aşağıdaki gibi tanımlanmış
sütunlarla data frame oluşturan data.frame işlevini kullanın:
> myiris=data.frame(Sepal.Length=iris$Sepal.Length, Sepal.Width=iris$Sepal.Width,
Species=iris$Species)
4. Alternatif olarak, ilgili sütunları alın veya alakasızları çıkartın(Ancak bu tarz
altkümelemeden kaçınılmalıdır):
> myiris2 <- iris[,c(1,2,5)]
> myiris3<-iris[,c(1,2,3,4)]
Metehan Ünal 25
Verileri Filtreleme ve Bölümleme
5. Önceki iki yöntem yerine, verileri aşağıdaki şekilde almak için
çıkarma/removing yaklaşımını da kullanabilirsiniz:
> myiris4 <- iris[,-c(3,4)]
6. Veri eklemek adına, cbind ile yeni bir sütun veya rbind ile yeni bir satır
eklenebilir. (rnorm fonksiyonu normal dağılımdan rastgele bir örnek oluşturur.)
> Stalk.Length <-c (rnorm(30,1,0.1),rnorm(30,1.3,0.1), rnorm(30,1.5,0.1),
rnorm(30,1.8,0.1), rnorm(30,2,0.1))
> myiris <- cbind(iris, Stalk.Length)
Metehan Ünal 26
Verileri Filtreleme ve Bölümleme
7. Önceki işlemi alternatif olarak, aşağıdaki gibi bir adımda yapabilirsiniz:
> myiris$Stalk.Length = c(rnorm(30,1,0.1),rnorm(30,1.3,0.1), rnorm (30,1.5,0.1),rnorm(30,1.8,0.1), rnorm(30,2,0.1))
8. Yeni data frame’i kontrol et:
> dim(myiris)
> colnames(myiris)
Metehan Ünal 27
Verileri Filtreleme ve Bölümleme
9. Gösterildiği gibi rbind kullanın:
>newdat <- data.frame(Sepal.Length=10.1, Sepal.Width=0.5, Petal.Length=2.5, Petal.Width=0.9,
Species="myspecies")
> myiris <- rbind(iris, newdat)
> dim(myiris)
> myiris[151,]
Metehan Ünal 28
Verileri Filtreleme ve Bölümleme
10. Data frameden belirli koşullara uyan bir parçayı aşağıdaki yollardan biriyle alın:
> mynew.iris <- subset(myiris, Sepal.Length == 10.1)
VEYA
> mynew.iris <- myiris[myiris$Sepal.Length == 10.1, ]
> mynew.iris
> mynew.iris <- subset(iris, Species == "setosa")
Metehan Ünal 29
Verileri Filtreleme ve Bölümleme
• Alınan verilerin aşağıdaki ilk satırını kontrol edin:
> mynew.iris[1,]
• Herhangi bir karşılaştırma operatörü (& (AND), | (VEYA) ve !(NOT))
kullanabilir ve hatta birden fazla şekilde de kullanılabilir.
Metehan Ünal 30
Verileri Filtreleme ve Bölümleme
• Bu fonksiyonlarda sütun adının ardından verinin arkasına yerleştirilen $ işareti, o sütundaki verileri belirtir.
• Data frameleri için R indeksleme sistemi, tıpkı diğer dillerdeki gibi çok basittir ve [satırlar, sütunlar] olarak temsil edilir.
• Aşağıdaki örnekte uygulandığı şekilde c operatörünü kullanarak satırlar ve sütunlar için birkaç dizin gösterebilirsiniz.
> mylength <- c(4,5,6,7,7.2)
• Satır / sütun indekslerinde eksi işareti, verilerin bu kısımlarını kaldırır.
• Daha önce kullanılan rbind fonksiyonu, verileri satırlar boyunca birleştirir cbind de aynı şeyi sütunlar boyunca yapar.
Metehan Ünal 31
Verileri Filtreleme ve Bölümleme
• Verilerin bir bölümünü seçmenin diğer bir yolu da, data frame ile
%in% operatörünü aşağıdaki gibi kullanmaktır:
> mynew.iris <- myiris[myiris[,1] %in% mylength,]
• Bu, tanımlanan koşulu karşılayan verilerden tüm satırları seçer.
• Buradaki koşul, "myiris" in 1. sütunundaki değerin "mylength"
vektöründeki herhangi bir değerle aynı olduğu anlamına gelir.
Alınmış satırlar, daha sonra mynew.iris adlı nesneye atanır.
Metehan Ünal 32
FIN
Metehan Ünal 33