Sabit Disk Yerine Bakteri Uygulamasi
- Sevdanur GENC

- Oct 19, 2012
- 2 min read
2010 yilinin son aylarina dogru cikan bir haber ile arastirmacilarin bakteri uzerine veri depolamasi hakkinda calismalari basinda duyurulmustu. Sunduklari fikirlere gore, bilinen bilgisayar diskleri uzerinde bilgileri DNA genetik dizilimlerine donusturulerek son olarak E.Coli bakteresi icerisinde saklanabilecegi ongorulmustur. Tabi bu konun bi an icin algoritmasi benim ilgimi cekti. Ve basit ama kucuk bir uygulama ile dusuncelerimi dile dokmus oldum.
Peki bu algoritma nasil dusunulmus?
Verileri bakterilerin uzerine yerlestirebilmek icin bakterilere ait DNA genetigi uzerinde calismamiz gerekiyor. Bunun icinde verilerimizi Adenin, Timin, Sitozin ve Guanin'lerle eslestirilmesi gerekiyormus. Bu da 4 tabaninda sayilarla calismamiz gerektiriyor. Tabi bu 4'luk tabana gelecek olan verinin onceden 10'luk tabandaki bilgisi yani Ascii ile aciklayabilecegimiz bir anlami olmasi gerekiyor.
Bu islemleri baston sona dogru mantigini dusunecek olursak;
- Oncelikle verimizin Ascii tablosunda bulunan kodlarina karsilik her bir harfin 10'luk tabanda var olan sayisal es degeri buluruz.
- Daha sonra 10'luk tabaninda olusmus sayilari A,T,C,G icin 4'luk tabana ceviririz.
- 4'luk sistemde denk gelmesini istedigimiz genlere yani 0=A, 1=T, 2=C, 3=G verilerine donusum saglariz.
Adim Adim bir ornekle aciklayacak olursak ;
Bu konu hakkinda pek cok ilgili makaleyi internette arastirabilirsiniz.
Simdi basit bir uygulama ile islemleri C# dilini kullanarak Visual Studio ortami ile kod kisminda 3 ayri metod icerisinde kullanarak gerceklestiriyor olacagiz.
Form1.Cs Kaynak Kodlari ;
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace SabitDiskYerineBakteriUygulamasi { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { listBox1.Items.Clear(); listBox2.Items.Clear(); listBox3.Items.Clear(); ConvertToAscii(); ConvertToTenFour(); ConvertToGenetic(); } public void ConvertToAscii() { string KelimeAl; int i; KelimeAl = textBox1.Text; for (i = 0; i < KelimeAl.Length; i++) { if (KelimeAl
== 32) { continue; } else { listBox1.Items.Add(Convert.ToInt32(KelimeAl
)); } } } public void ConvertToTenFour() { int cevrilecekDeger; for (int i = 0; i < listBox1.Items.Count; i++) { cevrilecekDeger = Convert.ToInt32(listBox1.Items
.ToString()); string binary = ""; while (cevrilecekDeger >= 4) { binary += (cevrilecekDeger % 4).ToString(); cevrilecekDeger = cevrilecekDeger / 4; } binary += cevrilecekDeger.ToString(); string sonuc = string.Empty; sonuc += binary.ToString(); listBox2.Items.Add(sonuc); } } public void ConvertToGenetic() { string TekTekAl; for (int i = 0; i < listBox2.Items.Count; i++) { TekTekAl = listBox2.Items
.ToString();
TekTekAl = TekTekAl.Replace("0", "A");
TekTekAl = TekTekAl.Replace("1", "T");
TekTekAl = TekTekAl.Replace("2", "C");
TekTekAl = TekTekAl.Replace("3", "G");
listBox3.Items.Add(TekTekAl);
}
}
}
}
Ekran Goruntusu ;
Keyifli Calismalar Dilerim.
Comments