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.

28 Şubat 2013 Perşembe

Kavramların Türkçeleştirilmesi

Moleküler biyoloji ve genetik kavramlarının neredeyse hiç birinin meydana gelmesinde katkımız olmadığı için bu kavramlar dilimize girerken de ne yapacağımızı şaşırmış durumdayız. İzlenilen bazı pratik kurallar var; bunlardan ilki, o kavramın Fransızca okunuşunun doğrudan alınması (ekspresyon, sekans). Bu alışkanlık bize Jön Türkler'in hediyesi. Jön de, Fransızca genç sözcüğünün okunuşuyla devşirilen bir kelime. Buna alıştığımız için yadırgamıyoruz bu tür kelime dönüşümlerini ancak bu da bir yerden sonra yetersiz kalıyor. Örneğin, direction kelimesini ele alalım. İngilizce okunuşunu yaklaşık şöyle yazabiliriz: dayrekşın (yazınca komik geliyor değil mi). Aynı kelime, Fransızca'da da aynı şekilde yazılıyor, fakat farklı bir şekilde okunuyor: direksiyon. Belki son bir yüzyıldır İngilizce konuşan ekolün bilimi geliştirme konusunda Fransızca konuşan ekolden daha ileri gittiği düşünüldüğünde, klasik yaklaşımımız yetersiz kalmaya başlıyor. Burada da en güzel örnek Google. Guugıl olarak okuyoruz, ancak böyle yazmıyoruz (bu durum sadece özel isim olmasından kaynaklanmıyor, alışkanlıklarımız değişiyor). Selahattin'li son banka reklamında da bir kelime kullanıyor: konnekşın. Bunu konneksiyon olarak kullanan kişiler de var; bu bir kültür savaşı nihayetinde.

Bir diğer kavram ithalati yaklaşımı da, Türkçe'de en yakın anlamına çevirme. Bilgisayar kelimesinin ortaya çıktığı zamanları düşünün, ve bugün yazıcı olarak isimlendirdiğimiz ürünün de piyasaya girmeye başladığını. İngilizce printer olarak isimlendirilmiş olan bu cihazın Türkçe karşılığı başlarda bilgiyazar olarak isimlendirilmiş (Kaynak: Ufuk Tarhan), bunu biliyor muydunuz? Sonra yazıcı kabul görüyor ve bu şekilde kalıyor.

27 Şubat 2013 Çarşamba

Biyoinformatik ve Veri Analizi - 3


Hasta bir şikayetle doktora gittiğinde, doktorun ilk yaptığı şey hastanın şikayetlerini dinlemek ve onun doğrultusunda muayene etmektir. Bu muayene sırasında ilk etapta hastaya sorular sorarak elindeki araçlarla (steteskop vs. ) sorunu anlamaya çalışır. Bu ilk tanı hastalığın genel bir özeti niteliğindedir ve tam bir teşhis koymaz. Fakat resme genel bir bakış atar. Sorunun olduğu yeri tespit eder ve duruma göre o bölge üzerinde genel bir araştırmaya gider ( röntgen, MR gibi ).

Veri analizi de doktorun yaptığı muayeneye benzer. Veriye sorular sorar ve dinler. Verinin yapısını şeklini öğrenir. Yapısı ve şeklinden kasıt; dağılımı, basıklığı, çarpıklığı, genişliği, aykırı değerlerin varlığı gibi özet bilgiler olup, bu bilgiler verinin yapısının belirlenmesinde önemlidir.  Veride bir anormallik var mı onu tespit eder. Varsa tedavisi için gerekli yöntemlerin seçimine verinin yapısına göre karar verilir. Kısacası yanlış teşhis yanlış tedavi demektir. Doğru teşhis için gerekli bilgiyi veren  "keşfedici veri analizi" yöntemleri kullanılır.

Bir önceki yazımda verinin içindeki hatalardan bahsetmiştim. Keşfedici veri analizi, bu hataların bulunmasına yönelik analizleri içerir. Veride, uç değerlerin bulunması ve veri yapısındaki sapmaların olması, uzun kuyruklu olması ( verinin çok geniş olması ) ve veri gözlemlerinin asimetrik dağılıma sahip olması gibi nedenlerden dolayı hataya sebebiyet verir. Çünkü veri içindeki gerçekliğe ulaşmamıza engel olur. Hatalar bulunup giderilebildiği kadar giderilebilmelidir. Giderilemediği durumlarda ise farklı yöntemlere başvurulur. Keşfedici veri analizinde kullanılan teknikler; tanımlayıcı istatistikler, grafik yöntemleri, sağlam ( robust ) istatistikler, ilişki katsayıları gibi yöntemlerdir. Basit ve genel bir bakış vermesine rağmen doğru teşhis ve doğru tedavi için çok önemlidir.



Sözün Özü:

Keşfedici veri analizi verinin yapısını ve şeklini ortaya koyarak veri hakkında genel bir bilgi verir. İçeriyorsa hataları bulur ve giderilmesi için yol gösterici niteliğindedir. Özet bilgiler vererek verinin bütünü açısından genel bir yargıya varmamıza yardımcı olur.

Biyoinformatiğe Nasıl Başladım 4

Ö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.

26 Şubat 2013 Salı

Zeitgeist ve Biyoinformatik - 1

Zamanın ruhu. Enteresan bir kavram. Bu kavramın biyoinformatikle olan ilişkisini anlatabilmek için bu konuyu iki ayrı yazıda ele alacağım.

Geçen gün sıradışı bir belgesel izledim: "How Earth Made Us: Winds". Rüzgarların medeniyetleri nasıl şekillendirdiğini anlatıyordu. Birbirini bu kadar az çağrıştıran iki kavramın birbiriyle belki hiç bir şeyin olmadığı kadar içiçe olması çok şaşırtıcı geldi bana; ve bunu ancak bu yüzyılda keşfedebilmemiz de bir o kadar hayret verici. Belgeseli yarısında izlemeye başlamıştım ancak bahsedilen ilişki o kısa zaman diliminde beni çarpmaya yetti.

Diyordu ki; dünyayı şekillendiren birkaç büyük hava akımı döngüsü var, ve bunların bazıları yıllık, bazıları on yıllık, ve bazıları 50 yıllık döngüler. Bu döngülerdeki değişim yağmurun dünya üzerindeki dağılımını sürekli değiştiriyor fakat bazıları o kadar uzun sürelerde etkili ki, insan ömrü bunları tespit ve takip edebilmek için yeterli gelmiyor. Bu nedenle de bazı motiflerin [pattern] tespiti bu yüzyıla gelinceye kadar mümkün değildi.