26  Translasyon fonksiyonu anlatımı

Bu dersteki amacımız, bir DNA ipliğini amino asit dizisine çevirmek olacak. Bunun için codon.txt isimli kodon tablosunu ve example.fna içinde bulunan birinci DNA dizisini kullanacağız.

DNA dizisini okumak için, seqinr paketini kullanacağız. Eğer bu paketi daha önce kurmadıysanız, konsola install.packages("seqinr") yazmalınız.

Paket kurduysanız öncelikle çalışma alanımıza yükleyelim:

26.1 Ön bilgileri yükleyelim

Burada internet sitesinin github sayfasında bulunan dosyalar internet üzerinden yüklenmektedir. Dosyaları bu şekilde de yükleyebilirsiniz. Ayrıntılı bilgi için: {Bölüm 13}

Şimdi DNA dizisini yükleyelim:

fasta <- read.fasta(file = "https://raw.githubusercontent.com/emrahkirdok/ybva/main/03-bilgisayarli-dusunme/data/example.fna", forceDNAtolower = FALSE)

Bir sonraki adımda, kodon dosyamızı yükleyelim:

kodon <- read.table(file = "https://raw.githubusercontent.com/emrahkirdok/ybva/main/03-bilgisayarli-dusunme/data/codon.txt", sep = "\t", header = TRUE)

26.2 Bir kodonu nasıl seçebiliriz?

Önce örnek bir DNA verisi oluşturalım:

ornek <- c("A", "T", "G", "A", "C" , "G", "A", "T", "T", "T", "G", "A")

Birinci kodon:

ornek[1:3]
[1] "A" "T" "G"

İkinci kodon:

ornek[4:6]
[1] "A" "C" "G"

Şimdi başlangıç pozisyonlarını oluşturalım:

baslangic <- seq(1,(length(ornek)-2), 3)

Şimdi kodonları tek tek seçelim:

for (i in baslangic){
  secilen_kodon <- ornek[i:(i+2)]
  cat("Secilen kodon: ", secilen_kodon, "\n")
}
Secilen kodon:  A T G 
Secilen kodon:  A C G 
Secilen kodon:  A T T 
Secilen kodon:  T G A 

Ancak geri döndürdüğümüz secilen_kodon değeri aslında bir vektör. Kodon tablosunda arama yapmak için, bunu vektöre çevirmeliyiz. Bir örnek:

paste(ornek[4:6], collapse="")
[1] "ACG"

Şimdi bunu da for döngümüze ekleyelim:

for (i in baslangic){
  secilen_kodon <- ornek[i:(i+2)]
  secilen_kodon <- paste(secilen_kodon, collapse = "")
  cat("Secilen kodon: ", secilen_kodon, "\n")
}
Secilen kodon:  ATG 
Secilen kodon:  ACG 
Secilen kodon:  ATT 
Secilen kodon:  TGA 

Artık, kodon veri setinde bulunan kodon listesi içerisinde arama yapabiliriz. Şimdi seçtiğimiz kodona uygun amino asiti geri döndürelim:

for (i in baslangic){
  secilen_kodon <- ornek[i:(i+2)]
  secilen_kodon <- paste(secilen_kodon, collapse = "")
  aa <- kodon[kodon$Codon == secilen_kodon, 2]
  
  cat("Secilen kodon:", secilen_kodon, "kodona karsilik gelen amino asit:", aa, "\n")
}
Secilen kodon: ATG kodona karsilik gelen amino asit: Met 
Secilen kodon: ACG kodona karsilik gelen amino asit: Thr 
Secilen kodon: ATT kodona karsilik gelen amino asit: Ile 
Secilen kodon: TGA kodona karsilik gelen amino asit: Stp 

Peki amino asit ipliğini nasıl oluşturabilriz?

aa_ipligi <- c()

for (i in baslangic){
  secilen_kodon <- ornek[i:(i+2)]
  secilen_kodon <- paste(secilen_kodon, collapse = "")
  aa <- kodon[kodon$Codon == secilen_kodon, 2]
  aa_ipligi <- c(aa_ipligi, aa)
  cat("Secilen kodon:", secilen_kodon, "kodona karsilik gelen amino asit:", aa, "\n")
}
Secilen kodon: ATG kodona karsilik gelen amino asit: Met 
Secilen kodon: ACG kodona karsilik gelen amino asit: Thr 
Secilen kodon: ATT kodona karsilik gelen amino asit: Ile 
Secilen kodon: TGA kodona karsilik gelen amino asit: Stp 
cat(aa_ipligi)
Met Thr Ile Stp

26.3 Bunu bir fonksiyona dönüştürelim

translasyon <- function(ornek, kodon){
  aa_ipligi <- c()
  baslangic <- seq(1,(length(ornek)-2), 3)
  
  for (i in baslangic){
    secilen_kodon <- ornek[i:(i+2)]
    secilen_kodon <- paste(secilen_kodon, collapse = "")
    aa <- kodon[kodon$Codon == secilen_kodon, 2]
    aa_ipligi <- c(aa_ipligi, aa)
    cat("Secilen kodon:", secilen_kodon, "kodona karsilik gelen amino asit:", aa, "\n")
  }
  return(aa_ipligi)
}

Şimdi bu fonksiyonu kullanalım:

translasyon(ornek = ornek, kodon = kodon)
Secilen kodon: ATG kodona karsilik gelen amino asit: Met 
Secilen kodon: ACG kodona karsilik gelen amino asit: Thr 
Secilen kodon: ATT kodona karsilik gelen amino asit: Ile 
Secilen kodon: TGA kodona karsilik gelen amino asit: Stp 
[1] "Met" "Thr" "Ile" "Stp"

Derste kullandığımız DNA dizilerini kullanalım:

translasyon(ornek = fasta[[1]], kodon = kodon)
Secilen kodon: ATG kodona karsilik gelen amino asit: Met 
Secilen kodon: AGT kodona karsilik gelen amino asit: Ser 
Secilen kodon: CTC kodona karsilik gelen amino asit: Leu 
Secilen kodon: TCT kodona karsilik gelen amino asit: Ser 
Secilen kodon: GAT kodona karsilik gelen amino asit: Asp 
Secilen kodon: AAG kodona karsilik gelen amino asit: Lys 
Secilen kodon: GAC kodona karsilik gelen amino asit: Asp 
Secilen kodon: AAG kodona karsilik gelen amino asit: Lys 
Secilen kodon: GCT kodona karsilik gelen amino asit: Ala 
Secilen kodon: GCT kodona karsilik gelen amino asit: Ala 
Secilen kodon: GTG kodona karsilik gelen amino asit: Val 
Secilen kodon: AAA kodona karsilik gelen amino asit: Lys 
Secilen kodon: GCC kodona karsilik gelen amino asit: Ala 
Secilen kodon: CTA kodona karsilik gelen amino asit: Leu 
Secilen kodon: TGG kodona karsilik gelen amino asit: Trp 
Secilen kodon: GCT kodona karsilik gelen amino asit: Ala 
Secilen kodon: AAG kodona karsilik gelen amino asit: Lys 
Secilen kodon: ATC kodona karsilik gelen amino asit: Ile 
Secilen kodon: AGC kodona karsilik gelen amino asit: Ser 
Secilen kodon: CCC kodona karsilik gelen amino asit: Pro 
Secilen kodon: AAA kodona karsilik gelen amino asit: Lys 
Secilen kodon: GCC kodona karsilik gelen amino asit: Ala 
Secilen kodon: GAT kodona karsilik gelen amino asit: Asp 
Secilen kodon: GAT kodona karsilik gelen amino asit: Asp 
Secilen kodon: ATC kodona karsilik gelen amino asit: Ile 
Secilen kodon: GGC kodona karsilik gelen amino asit: Gly 
Secilen kodon: GCT kodona karsilik gelen amino asit: Ala 
Secilen kodon: GAA kodona karsilik gelen amino asit: Glu 
Secilen kodon: GCT kodona karsilik gelen amino asit: Ala 
Secilen kodon: CTC kodona karsilik gelen amino asit: Leu 
Secilen kodon: GGC kodona karsilik gelen amino asit: Gly 
Secilen kodon: AGA kodona karsilik gelen amino asit: Arg 
Secilen kodon: ATG kodona karsilik gelen amino asit: Met 
Secilen kodon: CTG kodona karsilik gelen amino asit: Leu 
Secilen kodon: ACC kodona karsilik gelen amino asit: Thr 
Secilen kodon: GTC kodona karsilik gelen amino asit: Val 
Secilen kodon: TAC kodona karsilik gelen amino asit: Tyr 
Secilen kodon: CCT kodona karsilik gelen amino asit: Pro 
Secilen kodon: CAG kodona karsilik gelen amino asit: Gln 
Secilen kodon: ACC kodona karsilik gelen amino asit: Thr 
Secilen kodon: AAG kodona karsilik gelen amino asit: Lys 
Secilen kodon: ACC kodona karsilik gelen amino asit: Thr 
Secilen kodon: TAC kodona karsilik gelen amino asit: Tyr 
Secilen kodon: TTC kodona karsilik gelen amino asit: Phe 
Secilen kodon: GCT kodona karsilik gelen amino asit: Ala 
Secilen kodon: CAC kodona karsilik gelen amino asit: His 
Secilen kodon: TGG kodona karsilik gelen amino asit: Trp 
Secilen kodon: GAT kodona karsilik gelen amino asit: Asp 
Secilen kodon: GAC kodona karsilik gelen amino asit: Asp 
Secilen kodon: CTG kodona karsilik gelen amino asit: Leu 
Secilen kodon: AGC kodona karsilik gelen amino asit: Ser 
Secilen kodon: CCT kodona karsilik gelen amino asit: Pro 
Secilen kodon: GGG kodona karsilik gelen amino asit: Gly 
Secilen kodon: TCC kodona karsilik gelen amino asit: Ser 
Secilen kodon: GGT kodona karsilik gelen amino asit: Gly 
Secilen kodon: CCT kodona karsilik gelen amino asit: Pro 
Secilen kodon: GTG kodona karsilik gelen amino asit: Val 
Secilen kodon: AAG kodona karsilik gelen amino asit: Lys 
Secilen kodon: AAG kodona karsilik gelen amino asit: Lys 
Secilen kodon: CAT kodona karsilik gelen amino asit: His 
Secilen kodon: GGC kodona karsilik gelen amino asit: Gly 
Secilen kodon: AAG kodona karsilik gelen amino asit: Lys 
Secilen kodon: GTT kodona karsilik gelen amino asit: Val 
Secilen kodon: ATC kodona karsilik gelen amino asit: Ile 
Secilen kodon: ATG kodona karsilik gelen amino asit: Met 
Secilen kodon: GGT kodona karsilik gelen amino asit: Gly 
Secilen kodon: GCA kodona karsilik gelen amino asit: Ala 
Secilen kodon: GTG kodona karsilik gelen amino asit: Val 
Secilen kodon: GCC kodona karsilik gelen amino asit: Ala 
Secilen kodon: GAT kodona karsilik gelen amino asit: Asp 
Secilen kodon: GCC kodona karsilik gelen amino asit: Ala 
Secilen kodon: GTT kodona karsilik gelen amino asit: Val 
Secilen kodon: TCA kodona karsilik gelen amino asit: Ser 
Secilen kodon: AAA kodona karsilik gelen amino asit: Lys 
Secilen kodon: ATA kodona karsilik gelen amino asit: Ile 
Secilen kodon: GAC kodona karsilik gelen amino asit: Asp 
Secilen kodon: GAC kodona karsilik gelen amino asit: Asp 
Secilen kodon: CTT kodona karsilik gelen amino asit: Leu 
Secilen kodon: GTG kodona karsilik gelen amino asit: Val 
Secilen kodon: GGA kodona karsilik gelen amino asit: Gly 
Secilen kodon: GGT kodona karsilik gelen amino asit: Gly 
Secilen kodon: CTG kodona karsilik gelen amino asit: Leu 
Secilen kodon: GCC kodona karsilik gelen amino asit: Ala 
Secilen kodon: TCC kodona karsilik gelen amino asit: Ser 
Secilen kodon: CTG kodona karsilik gelen amino asit: Leu 
Secilen kodon: AGC kodona karsilik gelen amino asit: Ser 
Secilen kodon: GAA kodona karsilik gelen amino asit: Glu 
Secilen kodon: CTT kodona karsilik gelen amino asit: Leu 
Secilen kodon: CAT kodona karsilik gelen amino asit: His 
Secilen kodon: GCT kodona karsilik gelen amino asit: Ala 
Secilen kodon: TCC kodona karsilik gelen amino asit: Ser 
Secilen kodon: AAG kodona karsilik gelen amino asit: Lys 
Secilen kodon: CTG kodona karsilik gelen amino asit: Leu 
Secilen kodon: CGT kodona karsilik gelen amino asit: Arg 
Secilen kodon: GTT kodona karsilik gelen amino asit: Val 
Secilen kodon: GAC kodona karsilik gelen amino asit: Asp 
Secilen kodon: CCG kodona karsilik gelen amino asit: Pro 
Secilen kodon: GCC kodona karsilik gelen amino asit: Ala 
Secilen kodon: AAC kodona karsilik gelen amino asit: Asn 
Secilen kodon: TTC kodona karsilik gelen amino asit: Phe 
Secilen kodon: AAG kodona karsilik gelen amino asit: Lys 
Secilen kodon: ATC kodona karsilik gelen amino asit: Ile 
Secilen kodon: CTC kodona karsilik gelen amino asit: Leu 
Secilen kodon: GCA kodona karsilik gelen amino asit: Ala 
Secilen kodon: CAC kodona karsilik gelen amino asit: His 
Secilen kodon: AAT kodona karsilik gelen amino asit: Asn 
Secilen kodon: GTC kodona karsilik gelen amino asit: Val 
Secilen kodon: ATC kodona karsilik gelen amino asit: Ile 
Secilen kodon: GTG kodona karsilik gelen amino asit: Val 
Secilen kodon: GTC kodona karsilik gelen amino asit: Val 
Secilen kodon: ATC kodona karsilik gelen amino asit: Ile 
Secilen kodon: GGC kodona karsilik gelen amino asit: Gly 
Secilen kodon: ATG kodona karsilik gelen amino asit: Met 
Secilen kodon: CTC kodona karsilik gelen amino asit: Leu 
Secilen kodon: TTC kodona karsilik gelen amino asit: Phe 
Secilen kodon: CCT kodona karsilik gelen amino asit: Pro 
Secilen kodon: GGA kodona karsilik gelen amino asit: Gly 
Secilen kodon: GAC kodona karsilik gelen amino asit: Asp 
Secilen kodon: TTC kodona karsilik gelen amino asit: Phe 
Secilen kodon: CCC kodona karsilik gelen amino asit: Pro 
Secilen kodon: CCA kodona karsilik gelen amino asit: Pro 
Secilen kodon: GAG kodona karsilik gelen amino asit: Glu 
Secilen kodon: GTT kodona karsilik gelen amino asit: Val 
Secilen kodon: CAC kodona karsilik gelen amino asit: His 
Secilen kodon: ATG kodona karsilik gelen amino asit: Met 
Secilen kodon: TCA kodona karsilik gelen amino asit: Ser 
Secilen kodon: GTT kodona karsilik gelen amino asit: Val 
Secilen kodon: GAC kodona karsilik gelen amino asit: Asp 
Secilen kodon: AAG kodona karsilik gelen amino asit: Lys 
Secilen kodon: TTT kodona karsilik gelen amino asit: Phe 
Secilen kodon: TTC kodona karsilik gelen amino asit: Phe 
Secilen kodon: CAG kodona karsilik gelen amino asit: Gln 
Secilen kodon: AAC kodona karsilik gelen amino asit: Asn 
Secilen kodon: TTG kodona karsilik gelen amino asit: Leu 
Secilen kodon: GCT kodona karsilik gelen amino asit: Ala 
Secilen kodon: CTG kodona karsilik gelen amino asit: Leu 
Secilen kodon: GCT kodona karsilik gelen amino asit: Ala 
Secilen kodon: CTC kodona karsilik gelen amino asit: Leu 
Secilen kodon: TCT kodona karsilik gelen amino asit: Ser 
Secilen kodon: GAG kodona karsilik gelen amino asit: Glu 
Secilen kodon: AAG kodona karsilik gelen amino asit: Lys 
Secilen kodon: TAC kodona karsilik gelen amino asit: Tyr 
Secilen kodon: CGC kodona karsilik gelen amino asit: Arg 
Secilen kodon: TAA kodona karsilik gelen amino asit: Stp 
  [1] "Met" "Ser" "Leu" "Ser" "Asp" "Lys" "Asp" "Lys" "Ala" "Ala" "Val" "Lys"
 [13] "Ala" "Leu" "Trp" "Ala" "Lys" "Ile" "Ser" "Pro" "Lys" "Ala" "Asp" "Asp"
 [25] "Ile" "Gly" "Ala" "Glu" "Ala" "Leu" "Gly" "Arg" "Met" "Leu" "Thr" "Val"
 [37] "Tyr" "Pro" "Gln" "Thr" "Lys" "Thr" "Tyr" "Phe" "Ala" "His" "Trp" "Asp"
 [49] "Asp" "Leu" "Ser" "Pro" "Gly" "Ser" "Gly" "Pro" "Val" "Lys" "Lys" "His"
 [61] "Gly" "Lys" "Val" "Ile" "Met" "Gly" "Ala" "Val" "Ala" "Asp" "Ala" "Val"
 [73] "Ser" "Lys" "Ile" "Asp" "Asp" "Leu" "Val" "Gly" "Gly" "Leu" "Ala" "Ser"
 [85] "Leu" "Ser" "Glu" "Leu" "His" "Ala" "Ser" "Lys" "Leu" "Arg" "Val" "Asp"
 [97] "Pro" "Ala" "Asn" "Phe" "Lys" "Ile" "Leu" "Ala" "His" "Asn" "Val" "Ile"
[109] "Val" "Val" "Ile" "Gly" "Met" "Leu" "Phe" "Pro" "Gly" "Asp" "Phe" "Pro"
[121] "Pro" "Glu" "Val" "His" "Met" "Ser" "Val" "Asp" "Lys" "Phe" "Phe" "Gln"
[133] "Asn" "Leu" "Ala" "Leu" "Ala" "Leu" "Ser" "Glu" "Lys" "Tyr" "Arg" "Stp"

26.4 Fonksiyonu biraz daha güzelleştirelim

Genel olarak kodlama yaparken şu noktalara dikkat edelim:

  • Değişken isimleri anlaşılır olmalı
  • Kodlara açıklama ekleyelim
translasyon <- function(dna, kodon){
  # oncelikle bos bir amino asit iplik vektoru olusturalim
  aa_ipligi <- c()
  
  # kodon baslangic pozisyonlarini belirleylim
  baslangic <- seq(1,(length(dna)-2), 3)
  
  # her baslangic pozisyonunu tek tek alalim
  for (i in baslangic){
    # o baslangic pozisyonuna gore kodon secelim
    secilen_kodon <- dna[i:(i+2)]
    # kodon vektorunu metine donusturelim
    secilen_kodon <- paste(secilen_kodon, collapse = "")
    # o kodona karsilik gelen amino asidi alalım
    aa <- kodon[kodon$Codon == secilen_kodon, 2]
    # bu amino asidi, amino asit iplik vektorune ekleyelim
    aa_ipligi <- c(aa_ipligi, aa)
    # her adimi yazalim
    #cat("Secilen kodon:", secilen_kodon, "kodona karsilik gelen amino asit:", aa, "\n")
  }
  # amino asit ipligini geri dondurelim
  return(aa_ipligi)
}

Fonksiyonu tekrar çalıştıralım:

fasta <- read.fasta(file = "https://raw.githubusercontent.com/emrahkirdok/ybva/main/03-bilgisayarli-dusunme/data/example.fna", forceDNAtolower = FALSE)

kodon <- read.table(file = "https://raw.githubusercontent.com/emrahkirdok/ybva/main/03-bilgisayarli-dusunme/data/codon.txt", sep = "\t", header = TRUE)

translasyon(dna = fasta[[2]], kodon = kodon)
  [1] "Met" "Val" "Leu" "Ser" "Pro" "Ala" "Asp" "Lys" "Thr" "Asn" "Val" "Lys"
 [13] "Ala" "Ala" "Trp" "Gly" "Lys" "Val" "Gly" "Ala" "His" "Ala" "Gly" "Glu"
 [25] "Tyr" "Gly" "Ala" "Glu" "Ala" "Leu" "Glu" "Arg" "Met" "Phe" "Leu" "Ser"
 [37] "Phe" "Pro" "Thr" "Thr" "Lys" "Thr" "Tyr" "Phe" "Pro" "His" "Phe" "Asp"
 [49] "Leu" "Ser" "His" "Gly" "Ser" "Ala" "Gln" "Val" "Lys" "Gly" "His" "Gly"
 [61] "Lys" "Lys" "Val" "Ala" "Asp" "Ala" "Leu" "Thr" "Asn" "Ala" "Val" "Ala"
 [73] "His" "Val" "Asp" "Asp" "Met" "Pro" "Asn" "Ala" "Leu" "Ser" "Ala" "Leu"
 [85] "Ser" "Asp" "Leu" "His" "Ala" "His" "Lys" "Leu" "Arg" "Val" "Asp" "Pro"
 [97] "Val" "Asn" "Phe" "Lys" "Leu" "Leu" "Ser" "His" "Cys" "Leu" "Leu" "Val"
[109] "Thr" "Leu" "Ala" "Ala" "His" "Leu" "Pro" "Ala" "Glu" "Phe" "Thr" "Pro"
[121] "Ala" "Val" "His" "Ala" "Ser" "Leu" "Asp" "Lys" "Phe" "Leu" "Ala" "Ser"
[133] "Val" "Ser" "Thr" "Val" "Leu" "Thr" "Ser" "Lys" "Tyr" "Arg" "Stp"