Güngör Budak's Blog

Bioinformatics, web programming, coding in general

FASTQ Formatı - FASTQ Dosyası

Bugün programı oluştururken kullanacağım “test” dizilimini aldım. İki adet FASTQ dosyasından oluşuyor, her biri sıkıştırılmış ama buna rağmen boyutları 6 GB civarı. Ben elbette çok zaman kaybetmek istemediğim için bu dosyalardan birinin sadece bir kısmını kullanacağım.

Amacım, bu FASTQ dosyalarındaki eşleşebilen okumaları BWA aracı ile bularak, daha sonra onları çıkarmak. Ve kalan eşleşemeyen okumaları MegaBLAST aracının anlayabileceği bir dilde (FASTA formatında) kaydetmek.

Bu arada tüm projeyi bir Unix bilgisayarda hazırladığım için birçok komut öğreniyorum, daha sonra bunları ayrıca yazmaya çalışacağım. Örneğin sıkıştırılan bir dosyayı gzip -d dosya komutuyla çıkarıyorum, eğer özgün dosyayı korumak istiyorsam komuta -c ekliyorum.

Ayrıca Perl scriptlerini Emacs metin editöründe hazırlayacağım. Hiç alışkın olmadığım kısayollara ve özelliklere sahip olduğu için şimdilik zorlanıyorum. Tamamen öğrendikten sonra Emacs ile ilgili yazılar da yazmayı planlıyorum.

FASTQ Formatı

Bir FASTQ dosyasında her dizilim için (diyelim ki bir dizilim 151 bp) dört adet satır bulunuyor ve bu dört özel satır alt alta bu dosyada her dizilim için sıralanıyor. Bu satırların ilki başlık (header) ve dizilim ile ilgili özel belirteç (identifier) bulunuyor ve @ karakteri ile başlıyor. İkinci satır doğrudan baz dizilimini gösteriyor. Üçüncü satırda açıklamalar bulunuyor, boşsa sadece bir + karakteri görüyoruz. Son satır ise dizilimin kalitesini belirten kodlara sahip.

BWA (Burrows-Wheeler Aligner) Hizalayıcı - Eşleştirici

Önceki yazımda belirttiğim gibi bir eşleştirici (aligner ya da mapper) kullanarak elimdeki verinin referans genomu ile ne derece eşlestiğini bulmaya çalışacağım. Daha sonra eşleşmeyen kısmıyla birtakım analizler yapacağım.

BWA (Burrows-Wheeler Aligner) görece kısa dizilimleri insan genomu gibi uzun referans genomlarıyla eşleştiren bir program. 200bp (bp: baz çifti) uzunluğuna kadar bwa-short algoritması, 200bp - 100kbp arası ise BWA-SW algoritması kullanılıyor.

Hizalayıcı - eşleştirici seçmede birçok faktör rol oynuyor. Birçok bu tip araç var ve farklı özelliklere sahipler. Bunlar performans ve hassasiyet (accuracy) özelliklerine göre değişiyor. Ayrıca hassasiyet, yapısal varyasyonları (structural variations - SVs) da etkiliyor.

İleride bu programın özelliklerine daha fazla değineceğim.

Dizileme Çalışmalarını Kirleten Organizmaları Tespit Etme

Bu yaz stajımda ilk olarak başlayacağım çalışma yavaş yavaş şekilleniyor. Bu çalışmada bir pipeline oluşturup, bunu laboratuvarlarda dizileme (sequencing) örneklerini kirleten organizmaları bulmaya çalışacağım.

Laboratuvarlarda birçok nedenden dolayı örnekler başka organizmalar ya da yabancı DNA tarafından kirlenebiliyor. Bunlar bakteri, maya olabilir ya da bir virüs DNA’sı da olabilir. Siz bir DNA’yı diziledikten sonra onun referansıyla eşleştirme çok az oranda çıkabiliyor. Bu da yabancı DNA’nın olabileceğini gösteriyor. Bir başka neden referans DNA’nın farklı olması da olabilir. Aynı zamanda algoritmada da hata olabilir. Bunlar düşük oranda eşleşme çıkaran sonuçların nedenleri olarak gösterilebilir.

Kirletici bir faktör olup olmadığını tespit etmenin çeşitli stratejileri var. Örneğin biri, genomu diziledikten ve referansıyla eşleştirdikten sonra, eşleşmeyen kısmını bu genomdan çıkarıp, onu olası tüm organizmalarla deneyerek, en fazla eşleşmeyi bulmaya çalışmak ve organizmayı belirlemek. Bunu Husar paketinde bulunan MegaBLAST ile yapabiliyoruz. Veri tabanında sahip olduğu 20.000 canlı DNA’sı üzerinden karşılaştırma yaparak, kirletici organizmaları listeleyebiliyor.

İşte yapacağım çalışmada, pipeline dizilenen genomu alacak, referansıyla eşleştirmeye çalışacak, eşleşmeyen kısmını çıkarıp bunu MegaBLAST ile diğer genomlarla karşılaştırıp bana olası organizmaların listesini döndürecek. Oldukça kolay görünen ancak verilerin çok çok büyük boyutlara sahip olması sebebiyle uzun zaman alacak bir çalışma.

Başlamadan önce Perl programlama diline ve MegaBLAST aracına alışmam gerekiyor. Elbette literatür araştırması yaparak, başka stratejiler geliştirilip geliştirilmediğini kontrol etmekte de fayda var.

Pipeline ve Pipeline Geliştirme

Bugün aldığım tanıtım derslerinin devamında, pipeline ve pipeline geliştirme ile ilgili ayrıntılı bilgiler aldım. Pipeline, aslında bildiğimiz boru hattı demek, örneğin borularla petrolün bir yerden başka bir yere taşınması için kullanılan sistem. Bunun bilgisayar terminolojisinde anlamı ise bir elementin çıktısı, diğerinin girdisi olacak şekilde oluşturulmuş işleme elementleri zinciri. Böylece çok daha komplike işlemler pipeline oluşturularak, kolay ve düzenli bir biçimde gerçekleştiriliyor. Sanırım pipeline Türkçeye ardışık düzen olarak çevriliyor, gene de ben pipeline olarak kullanacağım.

Pipeline oluşturulması birkaç adım içeriyor. Öncelikle işlem öncesi (pre-processing) yapılması gereken kontroller var, bunlar örneğin JavaScript gibi client-side bir dil ile yapılabiliyor. Amaç, kullanıcının girdilerini kontrol etmek ve henüz işlemeden herhangi bir olası uyumsuzluğu, hatayı önceden bildirmek ve kullanıcıyı uyarmak. İşlem süresince ise pipeline, gelen verinin analizini yapıyor, eğer ileride tekrar kullanmak ıstıyorsak saklıyor ve bunu çözümledikten sonra çıktı olarak veriyor. Son, çıktı adımında ise en iyi gösterim için stil dosyaları kullanılıyor ve çıktı XML dosyasına dönüştürülerek, daha sonra kolayca kullanılabilecek bir formatta gösteriliyor.

XML’e dönüştürme gerçekten çok önemli, çünkü böylece hem makina, hem de insanın okuyabileceği bir formatta sonuçlarınızı sunabiliyorsunuz. XML (Genişletilmiş İşaretleme Dili) verileri sizin belirleyebileceğiniz etiketler ve özelliklerle saklamanızı sağlayan bir standart.

WWW2HUSAR - HUSAR'ın Web Arayüzü

Stajımın ikinci gününde HUSAR’ın web arayüzünü konuştuk. HUSAR komut isteminden komutlarla kullanılabilen, yönetilebilen bir yazılım ancak bunu kolaylaştırmak için hazırlanmış bir web arayüzü var. WWW2HUSAR adını verdikleri bu arayüz ile listelenen araçları kolayca seçebiliyor, genetik dizinizi ekleyebiliyor ve başka birçok işlemi kolayca, birkaç tık ile yapabiliyorsunuz.

Bununla birlikte biraz daha HUSAR’ın işlevlerine göz attık. Yazılımda, yerel klasörde gen dizisi listeleri oluşturarak, bunları çoklu dizi hizalama (multiple sequence alignment) aracı ile genlerin benzerliklerini karşılastırabiliyor ve örneğin evrimsel ilişkilerini ortaya çıkarabiliyorsunuz.

DKFZ - Heidelberg Biyoenformatik Birimi'nde Staj

Erasmus programıyla yapıyor olduğum yaz stajı başladı. İlk olarak birimi yöneten bilim insanlarından birkaç saatlik tanıtım dersi aldım. Bu derste birimin kısa tarihi, birimin günümüze kadar yaptıkları projeler ve bunlarin ayrintilari konusunda bilgiler aldım.

Biyoenformatik Birimi DKFZ’nin (Deutsches Krebsforschungszentrum – ing. German Cancer Research Center) bir çekirdek tesisi olan Genomik ve Proteomik Çekirdek Tesisi’ne bağlı bir grup. İsimleri aynı zamanda HUSAR (Heidelberg Unix Sequence Analysis Resources) ve bu isim grubun geliştirdiği dizi analizi yapma paketinin de adı olarak kullanılıyor. HUSAR hem komut satırından hem de web üzerinden yönetilebiliyor.

Adından da anlaşılacağı gibi HUSAR Unix sisteminde çalışan bir yazılım paketi. Bu yüzden her ne kadar web arayüzü olsa da üzerinde çalışmak için Unix’i öğrenmem gerekecek. Daha önce hiçbir Unix işletim sistemi kullanmadığım için ilk gün labda bulunan CentOS dağıtıcısının işletim sistemini anlamaya keşfetmeye çalıştım.

Son olarak ilk günde SRS (Sequence Retrival System) hakkında konuştuk. SRS, HUSAR’in kullandığı hızlı, kolay ve kullanıcı dostu bir data alma sistemi. Bu sistem 90’dan fazla herkese açık veri tabanına bağlanabiliyor. Böylece farkli veri tabanlarını kullanarak sorgular yapılabiliyor.

Biyoinformatik mi? Yoksa Biyoenformatik mi?

Yazılarıma konu ararken kitaplarla birlikte interneti de karıştırıyorum. Yabancı kaynaklar elbette fazlaca var ve yeterliler, ancak Türkçe kaynaklara baktığımda ilk gözüme çarpan bu alanın isminin farklı kullanımları oldu.

Biliyorsunuz, İngilizcede bu alana bioinformatics deniyor. Gayet normal, çünkü İngilizcede informatics ics eki ile birlikte information sözcüğünden geliyor. Bu sözcük ise Latince kökene sahip1. Enformatik sözcüğü Türkçeye, Fransızcadan informatique sözcüğünden, enformatik olarak gelmiş, ayrıca bilişim olarak da Türkçesi önerilmiş2. Elbette bu Fransızca sözcük de İngilizcesi ile aynı kökene sahip.

Bu birkaç etimolojik bilgiden sonra, biyoinformatik sözcüğünün hatalı bir aktarma olduğunu görebiliriz. Doğru kullanım biyo ön eki ile enformatik kelimesinin birleşiminden oluşan biyoenformatik sözcüğü olacaktır.

İlginç bir not ise, Google’ın biyoenformatik aramasını “biyoinformatik mi demek istediniz” diyerek düzeltmesi tüm bunlardan şüphe duymamıza neden olabiliyor. Umarım Google da bu durumu düzeltecek bir adım atacak.

Peki, neden TDK’nin önerisi bilişim sözcüğünü kullanmıyoruz? Ne yazık ki, bunu tartışacak kadar dil bilgim yok ve alanı da bu kadar fazla tanımıyorum. Ama bu, bilişim kelimesinin zaten henüz çok fazla kullanımda olmamasından dolayı olabilir.

Kaynaklar

  1. Wiktionary: information, http://en.wiktionary.org/wiki/information
  2. TDK Güncel Türkçe Sözcük, http://www.tdk.gov.tr

7th International Symposium on Health Informatics and Bioinformatics

7. Sağlık Enformatiği ve Biyoenformatik üzerine Uluslararası Sempozyumu, 7th International Symposium on Health Informatics and Bioinformatics (HIBIT 2012), ilk kez 2005’te ODTÜ Enformatik Enstitüsü tarafından düzenlenmiş ve Sağlık Enformatiği, Tıbbi Enformatik, Hesaplamalı Biyoloji ve Biyoenformatik alanlarında akademisyenleri ve araştırmacıları bir araya getirmeyi ve bu alanlar hakkında yapılan çalışmaların sunulmasına ortam sağlamayı ve çalışmalar üzerine interaktif bir şekilde değerlendirmeler yapmayı amaçlamaktadır.

Bu sene, 19-22 Nisan 2012’de Ürgüp, Nevşehir Perissia Hotel’de düzenlenecek olan HIBIT 2012 organizasyonu ODTÜ, ODTÜ Enformatik Enstitüsü, ODTÜ Biyolojik Bilimler Bölümü ve ODTÜ Bilgisayar Mühendisliği Bölümü partnerliği ile gerçekleştirilmektedir.

Bu sempozyum ile ilgili tüm ayrıntıları, programı, önemli tarihleri, kayıt sayfasını, resmi web sitesi.nden öğrenebilirsiniz.

Biyoenformatik Nedir? Biyoenformatik'in Tanımı

Birçok organizmanın ve son olarak da 2001’de insan genomunun çıkarılmasıyla, tüm 3 milyar baz çiftinin diziliminin elde edilmesiyle, karşımıza bu bilgiyi farklı şekillerde kullanacak olan alanlar çıktı.Bu genleri anlamaya çalışan, bu genlerden oluşacak proteinleri belirlemeye çalışan alanların yanında bu bilginin analizini yapma ihtiyacı da Biyoenformatik alanını doğurdu.

Biyoenformatik, biyolojik bilginin bilgisayarlar ve istatistiksel teknikler kullanılarak analiz edilmesidir; başka bir deyişle, biyoenformatik, biyolojik araştırmaları iyileştirmek ve hızlandırmak için bilgisayar veri tabanları ve algoritmaları geliştirme ve onlardan yarar sağlama bilimidir [1].

NCBI (National Center for Biotechnology Information) Biyoenformatik’i şöyle tanımlamıştır: “Biyoenformatik, Biyoloji, Bilgisayar Bilimi ve Bilişim Teknolojisi bilimlerinin tek bir disiplinde birleşme alanıdır. Bu alanın nihai hedefi, yeni biyolojik keşiflere olanak sağlamak ve Biyoloji’deki birleştirici ilkelerin ayırt edilebileceği evrensel bir bakış açısı yaratmaktır. Biyoenformatik’te üç tane alt-disiplin vardır; geniş veri setleri arasındaki ilişkileri belirleyecek yeni algoritmaların ve istatiklerin geliştirilmesi, nükleotid, amino asit dizilimleri, protein domainleri ve protein yapıları gibi çeşitli türde verilerin analizi ve yorumlanması, farklı türde bilginin yönetimine ve bunlara etkili erişimine olanak sağlayacan araçların geliştirilmesi ve uygunlanması bu alt-disiplinlerdir.” [2].

NIH (National Institute of Health) Biomedical Information Science and Technology Initiative Consortium’a göre ise Biyoenformatik’in tanımı biyolojik, tıbbi, davranışsal ya da sağlık verilerinin, ve bu verilerin alınması, saklanması, organize edilmesi, arşivlenmesi, analiz edilmesi ve görselleştirilmesini içeren, bilgisayar araçlarının ve yaklaşımlarının araştırılması, geliştirilmesi ya da uygulanmasıdır [3].

Kaynaklar

  1. Definition of Bioinformatics http://www.roseindia.net/bioinformatics/definition_of_bioinformatics.shtml
  2. Bioinformatics http://www.ncbi.nlm.nih.gov/Class/MLACourse/Modules/MolBioReview/bioinformatics.html
  3. NIH WORKING DEFINITION OF BIOINFORMATICS AND COMPUTATIONAL BIOLOGY http://www.bisti.nih.gov/docs/CompuBioDef.pdf

Hoş Geldim! Hoş Geldiniz!

Merhabalar,

Biyoloji alanında özel olarak ilgi alanım olan ve daha fazla keşfetmem, üzerine çok şey öğrenmem gereken Biyoenformatik’i, bu blog aracılığıyla (olası ziyaretçilerimle birlikte) öğreneceğim. İlk yazımı biraz önce Biyoenformatik’in çeşitli otoriteler tarafından yapılan tanımları ile tamamladım. Daha sonra, Biyoenformatik’te geçen birçok ilkelerin tanımlarından da bahsetmek istiyorum. Ayrıca, Biyoenformatik hakkında yazılım dilleri, istatiksel yöntemler de yazılarımın konularını oluşturacak. Aynı zamanda Biyoenformatik ile ilgili haberlere de yer vermek ve bu haberlerle en son gelişmeleri takip etmeyi (ettirmeyi) planlıyorum.

Umuyorum, yeterli zamanı ve gücü bulacağım ve elimden geldiğince dolu dolu, güncel bir blog yaratabileceğim. Ve umarım bu blog, Biyoenformatik ile ilgilenen diğer arkadaşlarım için de yol gösterici olacaktır.

Giriş yazım da bu olsun. :)

Tekrar görüşmek üzere!