top of page

Java ile Blosum62 Hesaplama

Yazarın fotoğrafı: Sevdanur GENC
Sevdanur GENC
25 Nis 2014
4 dakikada okunur

Biyoinformatik alaninda protein dizilerinin hesaplanmasi konusu onemlidir ve dikkatlice yapilmasi gerekir. Dizi hizalamanin en onemli gorevi farkli DNA, RNA veya protein dizilimlerinin birbirine en cok benzer alanlarinin tespit edilmesidir. Dizi hizalamarinda temel yaklasim olarak hesaplama islemleri puanlama sistemine dayanmaktadir. Bunun icin en cok kullanilan algoritmanin BLAST oldugunu soyleyebilirim. Yapmis oldugum uygulamada, en basit seklinde bir Protein diziliminin hesaplamasi icin BLOSUM62 yontemini kullaniyor olucaz. Blosum matrislerinin birden fazla cesiti bulunmaktadir. Blosum45, birbirine uzak iki tur protein dizilimlerinin hizalanmasindaki %45 benzerlik oranina ait matris degerleridir. Blosum80, birbirine yakin iki tur protein dizilimlerinin hizalanmasindaki %80 benzerlik oranina ait matris degerleridir. Ancak yakinligi ve uzanligi tam olarak belirlenemeyen durumlarda ise Blosum62 matrisi kullanilmaktadir. Blosum62, gunumuzde en sik kullanilan ve her zaman icin tercih edilen sequence hesaplama matrisidir. Blosum tablosunda en yuksek puan 11'dir. Kisacasi, DNA, RNA ve protein dizilimlerinde BLAST en iyi referans olarak BLOSUM62 matrisini kullanmaktadir.

Java Kodu

import java.io.ObjectInputStream.GetField; public class Blosum62 { private Blosum62()    {} public static final int[][] blosumMatrix = new int[][] { /*     C   S   T   P   A   G   N   D   E   Q   H   R   K   M   I   L   V   F   Y   W*/ /*C*/{ 9, -1, -1, -3,  0, -3, -3, -3, -4, -3, -3, -3, -3, -1, -1, -1, -1, -2, -2, -2}, /*S*/{-1,  4,  1, -1,  1,  0,  1,  0,  0,  0, -1, -1,  0, -1, -2, -2, -2, -2, -2, -3}, /*T*/{-1,  1,  4,  1, -1,  1,  0,  1,  0,  0,  0, -1,  0, -1, -2, -2, -2, -2, -2, -3}, /*P*/{-3, -1,  1,  7, -1, -2, -1, -1, -1, -1, -2, -2, -1, -2, -3, -3, -2, -4, -3, -4}, /*A*/{ 0,  1, -1, -1,  4,  0, -1, -2, -1, -1, -2, -1, -1, -1, -1, -1, -2, -2, -2, -3}, /*G*/{-3,  0,  1, -2,  0,  6, -2, -1, -2, -2, -2, -2, -2, -3, -4, -4,  0, -3, -3, -2}, /*N*/{-3,  1,  0, -2, -2,  0,  6,  1,  0,  0,  1,  0,  0, -2, -3, -3, -3, -3, -2, -4}, /*D*/{-3,  0,  1, -1, -2, -1,  1,  6,  2,  0, -1, -2, -1, -3, -3, -4, -3, -3, -3, -4}, /*E*/{-4,  0,  0, -1, -1, -2,  0,  2,  5,  2,  0,  0,  1, -2, -3, -3, -3, -3, -2, -3}, /*Q*/{-3,  0,  0, -1, -1, -2,  0,  0,  2,  5,  0,  1,  1,  0, -3, -2, -2, -3, -1, -2}, /*H*/{-3, -1,  0, -2, -2, -2,  1, -1,  0,  0,  8,  0, -1, -2, -3, -3, -2, -1,  2, -2}, /*R*/{-3, -1, -1, -2, -1, -2,  0, -2,  0,  1,  0,  5,  2, -1, -3, -2, -3, -3, -2, -3}, /*K*/{-3,  0,  0, -1, -1, -2,  0, -1,  1,  1, -1,  2,  5, -1, -3, -2, -3, -3, -2, -3}, /*M*/{-1, -1, -1, -2, -1, -3, -2, -3, -2,  0, -2, -1, -1,  5,  1,  2, -2,  0, -1, -1}, /*I*/{-1, -2, -2, -3, -1, -4, -3, -3, -3, -3, -3, -3, -3,  1,  4,  2,  1,  0, -1, -3}, /*L*/{-1, -2, -2, -3, -1, -4, -3, -4, -3, -2, -3, -2, -2,  2,  2,  4,  3,  0, -1, -2}, /*V*/{-1, -2, -2, -2,  0, -3, -3, -3, -2, -2, -3, -3, -2,  1,  3,  1,  4, -1, -1, -3}, /*F*/{-2, -2, -2, -4, -2, -3, -3, -3, -3, -3, -1, -3, -3,  0,  0,  0, -1,  6,  3,  1}, /*Y*/{-2, -2, -2, -3, -2, -3, -2, -3, -2, -1,  2, -2, -2, -1, -1, -1, -1,  3,  7,  2}, /*W*/{-2, -3, -3, -4, -3, -2, -4, -4, -3, -2, -2, -3, -3, -1, -3, -2, -3,  1,  2,  11} }; private static int getMatrixNo(char a) { switch ((String.valueOf(a)).toUpperCase().charAt(0)) { case 'C': return 0;            case 'S': return 1;            case 'T': return 2; case 'P': return 3;            case 'A': return 4;            case 'G': return 5; case 'N': return 6;            case 'D': return 7;            case 'E': return 8; case 'Q': return 9;            case 'H': return 10;           case 'R': return 11; case 'K': return 12;        case 'M': return 13;           case 'I': return 14; case 'L': return 15;        case 'V': return 16;           case 'F': return 17; case 'Y': return 18;        case 'W': return 19;           default: return 777; } } public static void main(String[] args) { String aminoAcid1 = "GEIMAASRIETYKEDAQVWIGDLPCWLADYGYWDLPKRAVGRRYRIIAGGQPVIITTEYF"; String aminoAcid2 = "GEVMAASCIETFKEEAKVWAGESPAWLELDRRRNLPPKVVGRQYRVIAEGRPVIIITEYF"; int score = 0; int realLength = 0; int AA1uzunluk = aminoAcid1.length(); int AA2uzunluk = aminoAcid2.length(); for (int i=0; i< AA1uzunluk; i++) { if(aminoAcid1.charAt(i) == aminoAcid2.charAt(i)) { System.out.println(i + ". Alinan deger = " + blosumMatrix

); score =  score + blosumMatrix

; realLength = realLength + 1; } else { continue; } } System.out.println("-----------RESULTS------------"); System.out.println("1. AA uzunlugu = " + AA1uzunluk); System.out.println("2. AA uzunlugu = " + AA2uzunluk); System.out.println("score = " + score); System.out.println("karsilastirilan uzunluk = " + realLength); } }

Ekran Ciktisi

0. Alinan deger = 6 1. Alinan deger = 5 3. Alinan deger = 5 4. Alinan deger = 4 5. Alinan deger = 4 6. Alinan deger = 4 8. Alinan deger = 4 9. Alinan deger = 5 10. Alinan deger = 4 12. Alinan deger = 5 13. Alinan deger = 5 15. Alinan deger = 4 17. Alinan deger = 4 18. Alinan deger = 11 20. Alinan deger = 6 23. Alinan deger = 7 25. Alinan deger = 11 26. Alinan deger = 4 34. Alinan deger = 4 35. Alinan deger = 7 39. Alinan deger = 4 40. Alinan deger = 6 41. Alinan deger = 5 43. Alinan deger = 7 44. Alinan deger = 5 46. Alinan deger = 4 47. Alinan deger = 4 49. Alinan deger = 6 51. Alinan deger = 7 52. Alinan deger = 4 53. Alinan deger = 4 54. Alinan deger = 4 56. Alinan deger = 4 57. Alinan deger = 5 58. Alinan deger = 7 59. Alinan deger = 6 -----------RESULTS------------ 1. AA uzunlugu = 60 2. AA uzunlugu = 60 score = 191 karsilastirilan uzunluk = 36 Keyifli Calismalar Dilerim.

Yorumlar


©2026 by Sevdanur Genc

bottom of page