27  RNA Dizileme Veri analizi

## Veri yükleme

Öncelikle verileri yükleyelim. İlk olarak Drosophila canlısından elde edilen RNA sayı matrisini yükleyelim:

counts <- read.table(file = "https://raw.githubusercontent.com/emrahkirdok/ybva/main/data/counts_drosophila.txt", header = T, sep = " ")

counts <- as.matrix(counts)

Şimdi de örneklerin sahip oldukları metadata bilgilerini yükleyelim:

metadata <- read.table(file = "https://raw.githubusercontent.com/emrahkirdok/ybva/main/data/sample_info_drosophila.txt", header = T)

RNASeq matrisi boyutuna bakalım:

dim(counts)
[1] 8359    7

Burada Sütun isimlerinin sırasına dikkat edelim:

colnames(counts)
[1] "SRR031714" "SRR031716" "SRR031724" "SRR031726" "SRR031708" "SRR031718"
[7] "SRR031728"

Örnek metaverisine baktığımızda, örneklerin sahip olukları metaveri bilgilerini görebilirz. Burada iki tane koşul bulunmakta: kontrol ve uygulama

Ayrıca, RNA sayı matrisindeki örnek sırası ile, bu veri çerçevesinde bulunan örneklerin sıralarının aynı olduğuna dikkat edelim:

metadata
      Ornek     Grup Kutuphane
1 SRR031714  Kontrol        PE
2 SRR031716  Kontrol        PE
3 SRR031724 Uygulama        PE
4 SRR031726 Uygulama        PE
5 SRR031708  Kontrol        SE
6 SRR031718 Uygulama        SE
7 SRR031728  Kontrol        SE

27.1 Veri normalizasyonu

Kutu grafiği ile elimizdeki veriye bakalım:

boxplot(counts)

Şimdi de verinin histogramını oluşturalım:

hist(counts)

Dikkat edersek veri karşılaştırılabilir değil. Öncelikle normalizasyon ile veriyi karşılaştırılabilir hale getirelim. Bunun için kullanılacak tekniklerden bir tanesi log2 normalizasyonu:

counts <- log2(counts)

Kutu grafiği ile veriyi inceleyelim:

boxplot(counts)

Şimdi de histogram ile:

hist(counts)

Dikkat ederseniz, artık veri normalize edildi.

Son olarak dendrogram oluşturup, elimizdeki koşulların birlikte gruplanıp gruplanmadıklarına bakalım:

plot(hclust(dist(t(counts))), labels = metadata$Grup)

27.2 Gen anlatım analizi

İlk olarak birinci geni inceleyelim. Acana bu gen anlatımında anlamlı bir farklılık var mı?

kontrol <- counts[1,metadata$Grup=="Kontrol"]
uygulama <- counts[1,metadata$Grup=="Uygulama"]

test <- t.test(x = kontrol, y = uygulama)

Peki bu genin anlatımında görülen değişim anlamlı mı? Bunu 0.05 anlamlılık seviyesine göre inceleyelim:

test$p.value < 0.05
[1] TRUE

Evet, bu gen anlamı bir şekilde değişmiş. Şimdi de bu genin grafiğine bakalım:

boxplot(counts[1,]~metadata$Grup)

Peki ikinci gende durum nedir?

kontrol <- counts[2, metadata$Grup=="Kontrol"]
uygulama <- counts[2, metadata$Grup=="Uygulama"]

test <- t.test(x = kontrol, y = uygulama)

Peki bu genin anlatımında görülen değişim anlamlı mı? Bunu 0.05 anlamlılık seviyesine göre inceleyelim:

test$p.value < 0.05
[1] FALSE

Bu genin anlatımı anlamlı bir şekilde değişmemiş. Şimdi de bu genin grafiğine bakalım:

boxplot(counts[2,]~metadata$Grup)

Şimdi bütün genler için inceleme yapalım:

# once p degerlerini toplayacagimiz bir boş vektor oluşturalim

p.value <- rep(0, nrow(counts))

for (i in 1:nrow(counts)){
  kontrol <- counts[i, metadata$Grup=="Kontrol"]
  uygulama <- counts[i, metadata$Grup=="Uygulama"]

  test <- t.test(x = kontrol, y = uygulama)
  p.value[i] <- test$p.value
}

Kaç tane gen anlamlı değişmiş? (0.05’e göre):

sum(p.value < 0.05, na.rm = TRUE)
[1] 1641