30 Ocak 2014 Perşembe

Programlama Araçlarının Faydaları

Web tabanlı araçları kullanarak temel biyoinformatik analizleri gerçekleştirebilirsiniz ve detaylara girmediğiniz sürece ortaya kayda değer sonuçlar çıkarabilirsiniz. Ancak burada unutulmaması gereken bir şey var: çoğu zaman verileri analize hazırlamak, analizin kendisinden çok daha fazla emek ve zaman gerektirir. Elinizdeki dosyaları FASTA biçimine çevirmek, onlarca farklı dosyada yer alan verileri tek bir dosyada tablo şeklinde toplamak, veritabanlarından otomatik olarak veri çekmek, veya veriyi bir yerden başka bir yere kopyalamak. 

UNIX tabanlı işletim sistemlerinin bu tarz işlemleri kolaylaştırmak amacıyla geliştirildiğini söylesek sanırım yanılmış olmayız. Farklı Linux sürümleri arasında bu sıralar en popüler ve kullanışlı olanı Ubuntu, alternatif olarak da Mac işletim sisteminden bahsedebiliriz. Windows'ta komutları teker teker yazmak yerine bunları bir grafik arayüzünün arkasına gizleyip kullanıcıya daha basit şeyler göstermek kuşkusuz kişisel bilgisayarın yaygınlaşmasında büyük rol oynamıştır, ancak aynı zamanda da bilgisayarın nasıl çalıştığını anlamak noktasında kullanıcıyla bilgisayarın mantığı arasına bir perde çektiği de muhakkak. Özetle, programlama araçlarını tanımak ve etkin bir şekilde kullanmak, büyük miktarlarda veriyle uğraşanların olmazsa olmazı. Bu doğrultuda sizinle 3 farklı örnek paylaşmak istiyorum.

İlk örneğim, otomatik olarak veriye erişim hakkında. Ankara'daki son 10 yıllık saatlik hava durumuna ulaşmak istiyordum ve Meteoroloji Genel Müdürlüğü bunun için aşırı yüksek bir fiyat biçmişti. Bir web sitesinde ücretsiz bir şekilde arşiv bilgilerine ulaşabileceğimi farkettim: web tarayıcısında adres çubuğuna yazdığım URL'nin son kısmını değiştirdiğimde ilgili veriye ulaşabiliyordum. Fakat bunu son 10 yıl için teker teker yapmalıydım, yani 365 x 10 kez her seferinde URL'yi değiştirerek verilere ulaşmalı ve bunları bir yere kaydetmeliydim. Bunun yerine, bunu benim için otomatik yapacak bir komut buldum (wget) ve Terminal'den bu komutu verdim. Yaklaşık bir saat içerisinde tüm veriler belirttiğim klasörde toplanmıştı. Böylece, neredeyse imkansız olan bir veri erişim problemi sadece bir satırlık bir probleme dönüşüyor. Bu yaklaşımı birden fazla gen hakkında veri toplamak için de kullanabilirsiniz.

Karşılaştığım diğer bir problemse, büyük bir veriyi bir bilgisayardan diğerine aktarmaktı. Bilgisayarlar aynı ağda olmasına rağmen çok ilginç bir şekilde birbirini görmüyordu, yanımda USB bellek yoktu, dosyalar Dropbox'da taşınamayacak kadar da büyüktü. Çok uzun süredir kullanmak zorunda kalmadığım bir komutu hatırladım ve normal şartlar altında başka programlarla iki bilgisayar birbirini görmezken, hatırladığım komutla (scp) dosyayı bir bilgisayardan diğerine rahatlıkla taşıyabildim. Bu komutu kullanmayı bilmiyor olsaydım, en iyi ihtimalle ertesi gün bu işlemi yapabilecektim.

Son olarak bahsetmek istediğim olayda ise Python programlama dilini kullandım. Amacım, bir web sayfasını sürekli ziyaret ederek sayfada bir değişiklik olup olmadığnı kontrol etmekti. Bu biraz sinir bozucu bir iş ve bilgisayarın başından ayrılamıyorsunuz. Şöyle bir çözüm ürettim: ilgilendiğim web sayfasını her beş dakikada bir kontrol edecek ve içerik değiştiğinde bu değişikliği içeren bir e-posta gönderecek bir program yazdım. Akıllı telefonlar sayesinde e-postalarımıza ulaşmak çok daha kolay; böylece ilgilendiğim sayfada değişiklik olduktan en fazla beş dakika sonra haberdar olabilir hale geldim. Nitekim bilgisayar başında olamayacağım bir zaman diliminde web sayfasını güncellediler ve hemen bir bilgisayar bulup sayfayı kontrol edebildim. Hem daha az gerildim ve strese girdim, hem de neredeyse gerçek zamanlı olarak değişiklikten haberdar oldum. Bunun için de Python'da iki kütüphane kullandım: web sayfasını ziyaret etmek için urllib ve e-posta göndermek için smtplib.

Biyoinformatik veya veri merkezli başka bir alanla ilgileniyorsanız, bir programlama dilini öğrenmeye başlamanızı kesinlikle öneririm. Python iyi bir başlangıç olabilir.


Sözün Özü:
Herhangi bir programlama diline ve/veya Linux işletim sistemine yapacağınız her türlü yatırımın fazlasıyla getirisi olacaktır.



Proje:
Ankara'ya ait son bir yıldaki günlük sıcaklık değerlerine erişmeyi deneyin.

Meraklısına:
Pyhton özellikle veri analizi dünyasında gittikçe popülerlik kazanan bir programlama dili ve Perl'e iyi bir alternatif. Bu programlama diline yatırım yapmak iyi bir fikir olabilir.