Nano'nun Günlüğü…

Ideallerimi gerceklestirmek icin arastiriyorum, Unutmamak icin yaziyorum!

  • Bulundugunuz Sayfa: 
  • Ana Sayfa
  • Java ile Multiple Sequence Alignment (4D)

Java ile Multiple Sequence Alignment (4D)

Gönderim Mayıs 27th, 2014

Bu makalemde size biyo informatik alaninda cok sik kullanilan bir hizalama yontemi olan Multiple Sequence Alignment  (4 Boyutlu) ‘in java ile kodlanmasi hakkinda basit bir uygulama paylasiyor olucam.

Yine ayni zamanda java uzerinde string kontrollerini pekistirmis olabileceksiniz.

Yazinin sonunda kullanabileceginiz birden fazla dizilim ornekleride bulunmaktadir.

MAS4.Java Komutlari

public class MAS4 {

private String seq1, seq2, seq3, seq4;
private int matrix[][];
private int [][] sutunTopla = new int[4][2];
private int [][] ikiliMatrix = new int[4][4];
private int gap;
private int match;
private int mismatch;

public MAS4()
{
ikiliMatrix[0][0] = ikiliMatrix[1][1] = ikiliMatrix[2][2] =
ikiliMatrix[3][3] =  0;
}

public MAS4(String sequence1, String sequence2,
String sequence3, String sequence4,
int m, int mm, int g)
{
this.seq1 = “-” + sequence1.toUpperCase();
this.seq2 = “-” + sequence2.toUpperCase();
this.seq3 = “-” + sequence3.toUpperCase();
this.seq4 = “-” + sequence4.toUpperCase();

this.match = m;
this.gap = g;
this.mismatch = mm;
}

public void matrixDuzenle(String sBir, String sIki)
{
matrix = new int[sBir.length() + 1][sIki.length() + 1];

for (int i = 0; i < sBir.length(); i++)
for (int j = 0; j < sIki.length(); j++)
matrix[i][j] = 0;
}

public void ikiliSonuclarTabloMatrix()
{
int enBuyuk = 0, m=1;
for (int i = 0; i < 4; i++) {
sutunTopla[i][0] = 0;
for (int z = 0; z < 4; z++) {
System.out.print(ikiliMatrix[i][z] + ” “);
sutunTopla[i][0] += ikiliMatrix[i][z];
}
sutunTopla[i][1] = m;
m++;
System.out.println(sutunTopla[i][0]);
}
System.out.println(“En buyuk degere sahip sequence’ler : “);
System.out.println(sutunTopla[0][0] + ” S” + sutunTopla[0][1]);
System.out.println(sutunTopla[1][0] + ” S” + sutunTopla[1][1]);
System.out.println(sutunTopla[2][0] + ” S” + sutunTopla[2][1]);
System.out.println(sutunTopla[3][0] + ” S” + sutunTopla[3][1]);
selectionSort();
}

public void selectionSort()
{
for (int i=0; i<sutunTopla.length; i++) {
int max = i;
for (int j = i + 1; j < sutunTopla.length; j++) {
if (sutunTopla[j][0] > sutunTopla[max][0]) {
max = j;
}
}
int temp = sutunTopla[i][0];
int temp2 = sutunTopla[i][1];
sutunTopla[i][0] = sutunTopla[max][0];
sutunTopla[i][1] = sutunTopla[max][1];
sutunTopla[max][0] = temp;
sutunTopla[max][1] = temp2;
}

System.out.println(“Selection Sort sonucu buyukten kucuge siralama : “);
System.out.println(sutunTopla[0][0] + ” S” + sutunTopla[0][1]);
System.out.println(sutunTopla[1][0] + ” S” + sutunTopla[1][1]);
System.out.println(sutunTopla[2][0] + ” S” + sutunTopla[2][1]);
System.out.println(sutunTopla[3][0] + ” S” + sutunTopla[3][1]);
treeMap();
}

public void treeMap()
{
System.out.println(“Tree MAP : “);
System.out.println(“S” + sutunTopla[0][1] + “—|____”);
System.out.println(“S” + sutunTopla[1][1] + “—|”);
System.out.println(“S” + sutunTopla[2][1] + “——-|_____”);
System.out.println(“S” + sutunTopla[3][1] + “—|_________|”);
}

public void matrixOlustur(String sBir, String sIki)
{
for (int i = 0; i < sBir.length(); i++) {
for (int j = 0; j < sIki.length(); j++) {
if (i != 0 && j != 0) {
if (sBir.charAt(i) == sIki.charAt(j)) {  //match
matrix[i][j] = Math.max(0, Math.max(
matrix[i – 1][j – 1] + match, Math.max(
matrix[i – 1][j] + gap,
matrix[i][j – 1] + gap)));
} else {    //gap ve mismatch
matrix[i][j] = Math.max(0, Math.max(
matrix[i – 1][j – 1] + mismatch, Math.max(
matrix[i – 1][j] + gap,
matrix[i][j – 1] + gap)));
}
}
}
}
}

public int enYuksekBul(String sBir, String sIki)
{
int enYuksek = 0, iEnYuksek = 0, jEnYuksek = 0;
for (int i = 0; i < sBir.length(); i++) {
for (int j = 0; j < sIki.length(); j++) {
if (matrix[i][j] > enYuksek) {
enYuksek = matrix[i][j];
iEnYuksek = i;
jEnYuksek = j;
}
}
}
return enYuksek;
}

public void dizilimiBul(String sBir, String sIki)
{
int enYuksek = 0, iEnYuksek = 0, jEnYuksek = 0;
char harf1 = ‘ ‘,harf2 = ‘ ‘;
for (int i = 0; i < sBir.length(); i++) {
for (int j = 0; j < sIki.length(); j++) {
if (matrix[i][j] > enYuksek) {
enYuksek = matrix[i][j];
iEnYuksek = i;
jEnYuksek = j;
harf1 = sBir.charAt(i);
harf2 = sIki.charAt(j);
}
}
}
System.out.println(harf1 + ” ” + harf2);
}

public void matrixEkranaBas(String sBir, String sIki) {

for (int i = 0; i < sBir.length(); i++) {
if (i == 0) {
for (int z = 0; z < sIki.length(); z++) {
if (z == 0)
System.out.println(”   “);
System.out.print(sIki.charAt(z) + ”  “);
if (z == sIki.length() – 1)
System.out.println();
}
}

for (int j = 1; j < sIki.length(); j++) {
if (j == 1) {
System.out.print(sBir.charAt(i) + ”  “);
}
System.out.print(matrix[i][j] + ”  “);
}
System.out.println();
}
System.out.println();
}

public void sonuclariToparla(String sBir, String SIki)
{
matrixDuzenle(sBir,SIki);
matrixOlustur(sBir,SIki);
System.out.println(“Dizi en yuksek score: ” + enYuksekBul(sBir,SIki));
matrixEkranaBas(sBir,SIki);
dizilimiBul(sBir,SIki);
}

public static void main(String[] args) {
MAS4 mali = new MAS4(“AACCTG”, “CCAGTA”, “GAATTC”,
“TCCCTG”, 5,-3,-1);

mali.sonuclariToparla(mali.seq1, mali.seq2);
mali.ikiliMatrix[1][0] = mali.ikiliMatrix[0][1] = mali.enYuksekBul(mali.seq1,mali.seq2);

mali.sonuclariToparla(mali.seq1, mali.seq3);
mali.ikiliMatrix[2][0] = mali.ikiliMatrix[0][2] = mali.enYuksekBul(mali.seq1, mali.seq3);

mali.sonuclariToparla(mali.seq1, mali.seq4);
mali.ikiliMatrix[3][0] = mali.ikiliMatrix[0][3] = mali.enYuksekBul(mali.seq1, mali.seq4);

mali.sonuclariToparla(mali.seq2, mali.seq3);
mali.ikiliMatrix[2][1] = mali.ikiliMatrix[1][2] = mali.enYuksekBul(mali.seq2, mali.seq3);

mali.sonuclariToparla(mali.seq2, mali.seq4);
mali.ikiliMatrix[3][1] = mali.ikiliMatrix[1][3] = mali.enYuksekBul(mali.seq2, mali.seq4);

mali.sonuclariToparla(mali.seq3, mali.seq4);
mali.ikiliMatrix[3][2] = mali.ikiliMatrix[2][3] = mali.enYuksekBul(mali.seq3, mali.seq4);

mali.ikiliSonuclarTabloMatrix();
}

}

Ekran Ciktisi

Dizi en yuksek score: 13

–  C  C  A  G  T  A
–  0  0  0  0  0  0
A  0  0  5  4  3  5
A  0  0  5  4  3  8
C  5  5  4  3  2  7
C  5  10  9  8  7  6
T  4  9  8  7  13  12
G  3  8  7  13  12  11

T T
Dizi en yuksek score: 13

–  G  A  A  T  T  C
–  0  0  0  0  0  0
A  0  5  5  4  3  2
A  0  5  10  9  8  7
C  0  4  9  8  7  13
C  0  3  8  7  6  12
T  0  2  7  13  12  11
G  5  4  6  12  11  10

C C
Dizi en yuksek score: 20

–  T  C  C  C  T  G
–  0  0  0  0  0  0
A  0  0  0  0  0  0
A  0  0  0  0  0  0
C  0  5  5  5  4  3
C  0  5  10  10  9  8
T  5  4  9  9  15  14
G  4  3  8  8  14  20

G G
Dizi en yuksek score: 9

–  G  A  A  T  T  C
–  0  0  0  0  0  0
C  0  0  0  0  0  5
C  0  0  0  0  0  5
A  0  5  5  4  3  4
G  5  4  4  3  2  3
T  4  3  3  9  8  7
A  3  9  8  8  7  6

T T
Dizi en yuksek score: 13

–  T  C  C  C  T  G
–  0  0  0  0  0  0
C  0  5  5  5  4  3
C  0  5  10  10  9  8
A  0  4  9  9  8  7
G  0  3  8  8  7  13
T  5  4  7  7  13  12
A  4  3  6  6  12  11

G G
Dizi en yuksek score: 10

–  T  C  C  C  T  G
–  0  0  0  0  0  0
G  0  0  0  0  0  5
A  0  0  0  0  0  4
A  0  0  0  0  0  3
T  5  4  3  2  5  4
T  5  4  3  2  7  6
C  4  10  9  8  7  6

C C
0 13 13 20 46
13 0 9 13 35
13 9 0 10 32
20 13 10 0 43
En buyuk degere sahip sequence’ler :
46 S1
35 S2
32 S3
43 S4
Selection Sort sonucu buyukten kucuge siralama :
46 S1
43 S4
35 S2
32 S3
Tree MAP :
S1—|____
S4—|
S2——-|_____
S3—|_________|

Dizilim Ornekleri

“ACACACTA”, “AGCACACA”

“gcgcgtgc”, “gcaagtgca”

“GCAGAGCACG”, “GCTGGAAGGCAT”

“GGATCGA”, “GAATTCAGTTA”

“KVLEFGY”, “EQLLKALEFKL”

Keyifli Calismalar Dilerim.

Etiketler: , , , ,
Bulundugu Konu Etiketleri Akademik, BioInformatic, Java, Yazilim |

2 Adet Konu Ile Ilgili Yorum Bulunmaktadir...

  1. max Dedi Ki... :
    Kasım 14th, 2014 at 21:13

    .

    thanks for information.

  2. Nano Dedi Ki... :
    Aralık 6th, 2014 at 14:25

    you’re welcome

Lutfen Yorumlarinizi Burdan Ulastiriniz!...

You must be Kullanici Adiniz : to post a comment.

Istatistik

  • 1 Uye
  • 334 Yazi
  • 16 Yorum Var