Önceki yazıyı tamamlarken, gerekli disiplini nasıl aldığımdan bahsedeceğimi söylemiştim. İkinci sınıfın yazında gerçek problemlerin neye benzediğini görmek için Doç. Dr. Özlen Konu'nun laboratuvarında çalışabilmek adına bir girişimde bulundum ve mikrodizi verileriyle çalışmaya başladım. Yalnız aklınıza bugünkü tarzda mikrodizi verileri gelmesin; daha GEO ve ArrayExpress'in yaygınlaşmadığı zamanlar, sadece SMD (Stanford Microarray Database) vardı ve cDNA mikrodizi çipleri kullanılarak elde edilen veriler mevcuttu. Yaklaşık 10 yıl öncesinden bahsediyoruz ancak henüz verilerin nasıl normalize edileceğine ilişkin tam olarak belirlenmiş algoritmalar bile mevcut değildi veya yaygınlaşmamıştı.
Amacımız, farklı mikrodizi çalışmalarından elde edilen verileri biraraya getirmek ve ribozomal proteinleri meydana getiren genlerin ifade seviyelerini incelemekti. Verilerin indirilmesi biraz zaman alıyordu ancak ilk büyük problem, bu verilerin doğru ve istenilir bir biçimde biraraya getirilebilmesiydi. Bu da kendi içerisinde iki temel problemi barındırıyordu: 1) veriler etkin bir şekilde nasıl depolanabilir ki hızlı ve basit bir şekilde ulaşılabilsin, ve 2) veriler birleştirilirken en doğru nasıl yeniden şekillendirilebilir? Her birinde binlerce satır ve onlarca sütun olan verilerden bahsediyoruz, ve işin kötüsü her bir mikrodizi çipi tasarım olarak birbirinden çok farklı; ortak gen veya transkriptleri elle tespit edebilmek neredeyse imkansız. Tam bir programlama problemi ve yeni başlayan biri için de ideal zorlukta, ancak o zaman etkin bir şekilde kullanabildiğim tek dil JAVA idi ve JAVA'nın metin işleme problemleri için en iyi seçenek olmadığını rahatlıkla söyleyebilirim. Bir diğer problem de, geliştirilecek olan yazılımın herkes tarafından kullanılabilir olmasıydı, bu da beraberinde bir arayüz tasarımını gerektiriyordu. Farklı işletim sistemlerinde çalışabilir bir yazılım yerine, bir sunucuda çalışan fakat bir web arayüzü aracılığıyla ulaşılabilen bir sistem geliştirmenin daha faydalı olacağını hissetmiştim ve JAVA tabanlı bir web uygulaması geliştirme yazılımı olan JSP'ye yönelmiştim, ancak birşeyler ters gidiyordu.
Web tabanlı bir uygulama geliştirmek için HTML kodlarıyla oynayabilmek yetmez, bir de onları dinamik olarak oluşturabilmek gerekir. Yani kullanıcıyla etkileşim kurarak seçim veya kısıtlarına uygun olarak web sitesinin içeriğini değiştirebilen bir tarzdan bahsediyorum; günümüzün Facebook'u gibi. Siz sayfada bir yere tıklarsın, hatta bazen siz tıklamadan her şey güncellenir, bir şeyler değişir, ve sürekli içerik yenilenir.

Programlamanın en güzel yanı, emek verdiğiniz şeyin sonucunu hızlı bir şekilde görebilmek. Deney yaparken bu süreç çok daha yavaş işliyor ve her bir adımda elinize geçen çıktı kendi başına büyük bir anlam ifade edemeyebiliyor. Ancak birkaç haftada geliştirdiğiniz bir web uygulamasını insanlar kullandıkça motivasyonunuz artıyor ve sürekli belirli bir limitin üzerinde kalıyor. Buna belki de "işe yarama duygusu" diyebiliriz.
CIF bir öğrenme sürecinde geliştirilmişti ve karmaşıklaştıkça yazılımın geliştirildiği sunucu bilgisayara bağımlı hale gelmişti; maalesef o dönemde bir başka bilgisayara taşınabilir hale getirememiştim. Bir gün o bilgisayarın hard diskinin ve RAM'inin "değerlendirmek" üzere alınacağını söylediler ve kurtarabildiklerim dışında geliştirdiğim birçok yazılım çöpe gitti. Tek tesellim, o günlerde çıkan bir yayında CIF'in kullanılması nedeniyle tarihe not düşülmüş olması.
CIF'i geliştirmeye başladıktan 2 yıl sonra, makalesini yayınlamak amacıyla tekrar çalışmaya başladım ancak o sıralarda benzer bir yayının daha birkaç ay önce yayınlanmış olduğunu gördüm, üstelik neredeyse tamamen aynı arayüzle. Aklın yolu bir. Büyük bir hayal kırıklığı yaşamıştım; ancak bu, bilgiyi üretebilme kabiliyetini büyük oranda kaybetmiş bir ülkede yeni bir şey geliştirmeye çalışmanın bedeliymiş, çok sonradan öğrendim.
Sözün özü:
Herhangi bir alanda kendini geliştirmek için sistematik bir bütünlükte ilerlemek kıymetlidir ve mümkünse bir ekole dahil olmak daha da kıymetlidir; biyoinformatik için de bu kural geçerlidir. Gelişen paylaşım teknolojileriyle bir ekole dahil olma, internet üzerinden ders ve kaynak takip etme şeklinde olabilir.
Proje:
Bir programlama dilinin metin işleme kabiliyetlerini anlamak adına basit bir test yapılabilir. Bildiğiniz bir programlama diliyle, bu yazıda geçen kelimeleri sayacak (içerik bir metin dosyasına kaydedilebilir) ve çoktan aza doğru sıralayarak raporlayacak ufak bir yazılım geliştirin. Perl'de bunu 4 satırda gerçekleştirebilirsiniz.
Meraklısına:
Can Uğur Ayfer'in biriktirdiği ve paylaştığı yazılara cayfer.bilkent.edu.tr adresinden ulaşabilirsiniz; ilginizi çekecek en az birkaç yazı bulabileceğinizi düşünüyorum.