29 Mart 2013 Cuma

Cytoscape - 2

Önceki yazımda Cytoscape ile tanışma maceramdan bahsetmiş ve bir örnekle giriş yapmıştım, daha doğrusu bu örnekle yazıyı tamamlamıştım :) Önceki yazıdaki örneği ve yaklaşımı anlamak çok kıymetli; zira, bu yazıda vereceğim diğer gerçek hayat verisi aynı yaklaşımın biraz daha iyileştirilmiş versiyonu. Bu sefer, bir mikrodizi [microarray] verisini ağ  analizlerine tabi tutuyorum. Bu örneğe geçmeden değinmek istediğim başka bir konu var.

Yazılarımı takip edenler bir uyum olayına zaman zaman vurgu yaptığımı farketmişlerdir. Farklı teknoloji veya yaklaşımları biraraya getirip tek bir uygulamaymış hissi verebilmek maharet istiyor ve bence bu kesinlikle odaklanılması gereken konulardan biri. Buna nasıl bir örnek verebilirim diye düşünürken, birkaç gündür dilimde olan bir şarkı imdadıma yetişti :) Murat Dalkılıç'tan Lüzumsuz Savaş; Zeynep Bastık kendisine eşlik ediyor şarkıda.

Dört ayrı video bulabildim Youtube'da beraber söyledikleri: ilki şarkının klibi, ikincisi bir müzik kanalında geçiyor ve izlenme sayısı 2 milyon civarında. Üçüncüsü ve dördüncüsü ise iki ayrı programda yer alıyor. İki farklı ses ve farklı enstrüman kombinasyonlarının birbiriyle ne kadar uyumlu ve uyumsuz olabileceğini bu dört videoda rahatça görebiliyorsunuz; eninde sonunda aynı şarkıyı söylüyorlar ancak bazı kısımlar kulak zevkinize hitap ederken bazılarında ise dinlemek adına dinliyorsunuz. Biyoinformatik projelerinde de aynı durum geçerli; ortaya koyduğunuz yazılım ve/veya raporların muhataplarında bıraktığı tad da aynı şekilde değişebiliyor. Bunun biyoinformatik dünyasından bir örneği Webgestalt, Babelomics ve DAVID ile gözlemlenebilir. Bu 3 web aracıyla yapabileceğiniz şeyler aşağı yukarı aynı ancak Babelomics'in kullanıcı odaklı yaklaşımını DAVID'de hissedemiyorum. Webgestalt bile göreceli az gelişmiş arayüzüne rağmen daha sıcak geliyor. Zaten bu 3 ayrı web aracını geliştiren ekiplere bir göz atınca bu farklılığın nereden geldiğini anlıyorsunuz.

Cytoscape - 1

Cytoscape'le 2006 yılının yazında tanışmıştım, Toronto Üniversitesi Banting and Best Enstitüsü'ndeki stajımda (Banting ve Best, insülinin kaşifleri). Andrew Emili ile çalışmıştım 3 ay boyunca, ve amacımız MS-MS verilerini işleyerek kalp rahatsızlıklarına ilişkin biyobelirteçlerin keşfedilmesiydi. Protein protein etkileşimleri odaklı ilerliyorduk ve etkileşimleri şık bir şekilde görüntüleyebilmek için elimizdeki en iyi seçenek olan Cytoscape ile çalışıyorduk. Ancak bu yazılım sadece güzel etkileşim şekilleri oluşturmak için kullanılmıyordu; aynı zamanda eklentiler [plugin] yazarak etkileşim verilerini analiz edecek yazılımlar da hazırlayabiliyorduk. Bu amaç doğrultusunda yaptığımız bir iş de, BINGO eklentisini labın ihtiyaçları doğrultusunda yeniden yazmaktı.

İnsan zihni verileri şekillerle algılamaya ve analiz etmeye kelimeler veya sayılarla algılamaktan daha yatkın. Bu nedenle kutu grafiklerine [boxplot], histogramlara, ısı haritalarına [heat map] ve volkan grafiklerine [volcano plot] sıkı sıkıya sarılıyoruz; kocaman excel dosyalarını birkaç saniyede algılayabiliyoruz bu şekilde. Cytoscape'in en iyi yaptığı şey tam da bu: çok boyutlu etkileşim verilerini hızlıca anlayabilmemize olanak sağlayan muhteşem grafikler oluşturmak. Cytoscape ile neler yapılabildiğini göstermek adına iki farklı gerçek örnek üzerinden gideceğim. Sonunda -göreceli olarak- bol şekilli bir yazı olacak, umarım :) İlk örnekle başlayalım.

28 Mart 2013 Perşembe

Biyoinformatik Projelerinde Programlama - 4 (Bütünleştirme)

Nihayet serinin son yazısındayız :) Nicedir öğrenmek istediğim birkaç konuya eğildiğim ve tüm enerjimi de bu konulara sarfettiğim için yazmaya bir türlü odaklanamıyordum. Kaldığımız yerden devam edelim.

Önceki yazılarımda kişisel tecrübelerim doğrultusunda hangi aracın veya programlama dilinin ne tür problemler için daha uygun olduğundan bahsetmiştim. Bu yazıda da hepsini toparlayıp, nasıl tek bir uygulama çatısı altında birleştirilebileceğinden bir örnek üzerinden giderek bahsetmeye çalışacağım. Yalnız bu konuya geçmeden önce, deneyimim olmadığı için es geçtiğim Ruby'ye Yrd. Doç. Dr. +Omer Sinan Sarac'ın önerileri doğrultusunda değineceğim, kendisine katkısından ötürü çok teşekkür ediyorum :) Aşağıdaki paragrafı da tamamen verdiği bilgilerle hazırladım:

Ruby de Perl ve Python gibi bir programlama [veya scripting] dili; özellikle gelişmiş web entegrasyonu ve çok hızlı prototip geliştirmeye imkan vermesinden ötürü popüler bir dil. Ruby'nin diğer dillerden farklı olduğu noktaları basit bir Google aramasıyla bulabilirsiniz ancak Ruby'yi öğrenmek veya dile bir göz atmak için de şu iki link iyi bir başlangıç noktası olacaktır [kaynaklar İngilizce]: Ruby in Twenty Minutes ve Ruby From Other Languages.


Varolan farklı araçları bir araya uyumlu bir şekilde getirip tek parçaymış gibi düzenlemek asrımızın en büyük özelliklerin biri, ve bu denli hızlı teknolojik gelişmeyi de bu yaklaşımın yaygınlaşmasına borçluyuz diyebiliriz. Daha önce değindiğim programlama araçlarını seçmemin bir diğer nedeni de, birbirleriyle uyumlu bir şekilde kullanılabilmeleri; özellikle de gelişen web teknolojileri sayesinde. Bugün üzerinden gideceğim örnek, bir miRNA-Seq (miRNA Yeni Nesil Sekanslama) veri analizi gerçekleştirmek üzerine web tabanlı ancak sanki bir masaüstü uygulaması hissi veren bir uygulama geliştirmek. Bildiğim kadarıyla Türkiye'deki ilk miRNA-Seq veri analizini gerçekleştirdim ve bu doğrultuda edindiğim deneyimlerin bir kısmını sizinle bu örnek üzerinden paylaşacağım.

23 Mart 2013 Cumartesi

T-Testi ve Guinness Biraları



Hipotez testlerinde sıklıkla kullanılan t-testinin keşfinin aslında ilginç bir öyküsü var.  1900'lü yılların başında Guinness bira fabrikası kaliteli bira üretimini arttırarak diğer üreticilerden farklılaşmak istiyordu. Guinness bira fabrikasında kimyager olarak çalışan William Gosset de bu yüzden biranın tadını geliştirmeye çalışıyordu. Şimdiye kadar üretilen biralarla kendi geliştirdiği biralar arasındaki kaliteyi ölçmek için örnekler aldı. Kimyasal analizler yaptıktan sonra örnek aldığı biraların kıvamlarını karşılaştırdı. O zamanlar örneklemler üzerinden karşılaştıracak uygun bir istatistik testi bulunmadığı için kendisi küçük örneklemler için kullanılacak bir test geliştirdi. Gosset daha sonra  bulduğu bu testi yayınlamak istedi fakat Guinness diğer bira üreticilerinde bu testin kullanılacağı düşüncesiyle karşı çıktı (O günün şartıyla düşünürsek Guinness adı altında geliştirdiği için telif hakkı Guinness’a aitti diyebiliriz). Sonunda Guinness ve Gosset, makalenin Gosset’in  takma adı altında yayınlaması koşuluyla, anlaştılar ve “Student” takma adıyla test yayınladı (Böylece t-testinin bira üretiminin kalite kontrolünde kullanıldığı saklanmış oldu). Bu sebeple t-testi, Student’s t testi olarak da bilinir.  

14 Mart 2013 Perşembe

Biyoinformatik Projelerinde Programlama - 3 (Arayüz Geliştirme)

Bir konu hakkında yazı dizisi oluşturmanın en gıcık tarafı, aklınızın sürekli oraya takılı kalması bence. Aklımdaki diğer yazıları bir türlü yazamıyorum; ne zaman yazmaya niyetlensem, bu yazı dizisine kayıyor zihnim. Neyse, sonlara geliyorum :)

Arayüz Geliştirme

Biyoinformatik projelerinde büyük verilerle karşı karşıya kaldığımızda problemleri genel olarak iki kategoriye ayırabiliriz demiştik: metin işleme ve hesaplama. Problemi çözmek kadar önemli bir diğer konu ise arayüz geliştirme. Yani, kullanıcının (küçük projelerde bu kişi programı geliştiren kişidir çoğu zaman) verileri kolayca girebileceği, veriye yapılan işlemleri basamaklar halinde görebileceği veya bu konuda bir geribildirim alabileceği, ve son olarak da işlenmiş verileri kullanılabilir halde bir dosya olarak bilgisayarına kaydedebileceği veya kopyalayıp yapıştırabileceği etkileşimli bir yazılımdan bahsediyoruz aslında. 

Arayüz denince insanların aklına genelde grafik arayüzler (GUI) geliyor, yani fareyle bir yerlere tıklayabileceğiniz ve yukarıda bahsettiğim adımları bir ekran üzerinde geniş geniş gösteren arayüzler. Temel motivasyon, kullanıcının programı çalıştırmak için bilmesi gerekenleri bir arada sunup, bilmesi gerekmeyen şeyleri ise izole etmek. 

Biyoinformatik ve Veri Analizi - 4


"İnsanlar dünyanın düz olduğuna inandıkları zamanlarda haksızdılar. Dünyanın küre şeklinde olduğunu düşündüklerinde de haksızdırlar. Fakat eğer dünyanın küre şeklinde olduğuna inanmanın, düz olduğuna inanmak kadar yanlış olduğunu düşünüyorsanız, sizin bakış açınız bu kişinin toplamından daha yanlıştır." Isaac Asimov

Dünyanın geoit bir yapıya sahip olduğunu gelişmiş teknoloji ve bilim sayesinde biliyoruz. Geçmiş zamanlarda ise bunu bilmek zordu. Veri çok azdı ve kısıtlı araçlar ile çalışmalar sürdürülmekteydi. Günümüzde de bazı istatistiksel çalışmalarda bu durumla karşı karşıya gelebiliyoruz. Örneklemin az sayıda olması, verinin aykırı değerler içermesi, yanlış yöntemlerin seçilmesi gibi nedenlerden dolayı dünyanın düz bir şekle sahip olduğu sonucuna varıyoruz. İyi bir çalışmada bile geoit sonucuna varamasak da küre şeklinde olduğuna dair yorum getirmemiz çok değerli bilgileri sunar. İstatistiğin aslında tanımından gelen bir varsayım ile (yanılma payı) geoit olması göz ardı edilebilir olması uygulamada kullanılabilirliği avantajını sağlar.

12 Mart 2013 Salı

Biyoinformatik Projelerinde Programlama - 2 (Hesaplama)

İlk yazımda metin işleme kaabiliyetlerine göre ve kendi deneyimlerim doğrultusunda programlama araçlarından bahsetmiştim. 

Bu yazıda, sayısal hesaplamaların yoğun olduğu durumlarda kullanılabilecek araçlardan  yine kendi deneyimlerim doğrultusunda bahsedeceğim. Bu arada, atladığım veya kaçırdığım her türlü detaya ilişkin önerilere de açığım :)

Hesaplama

Yüksek çıktılı [high throughput] sayısal veri üreten mikrodizi ve yeni nesil sekanslama gibi  teknolojilerin yaygınlaşmasıyla büyük verinin işlenmesi gittikçe önem kazanıyor; hatta tüm odak neredeyse bu verinin analizinde (teknoloji geliştiren ülkeleri kastediyorum).

Özetle, sayısal verilerin neredeyse tamamen istatistiksel yöntemlerle analizinde kullanılan araçlardan bahsedeceğim. Hazır yazılımların şahıyla başlayalım.

8 Mart 2013 Cuma

Biyoinformatik Projelerinde Programlama - 1 (Metin İşleme)

Bu konuda herkes farklı bir şey söylüyor ancak bence bu durum, aslında bir problemi çözebilmek için elimizde ne kadar çok seçenek olduğunun göstergesi. Yine de biyoinformatik dünyasında çeşitli nedenlerden ötürü bazı programlama dilleri diğerlerine göre daha popüler ve kullanışlı. Kişisel deneyimlerime dayanarak bir karşılaştırma yapmak istiyorum.

İhtiyaca göre üç ayrı kategori olduğunu düşünüyorum ancak bu üç kategoriyi de iki ayrı çatı altında değerlendireceğim; programlama dilleri ve hazır programlar. Bu yazıda metin işleme üzerinde duracağım.