Thursday, June 28, 2012

MegaBLAST - Dizilerdeki Benzerlikleri Bulma Aracı

MegaBLAST, HUSAR paketinde bulunan, BLAST (Basic Local Alignment Search Tool) paketinin bir parçası. Ayrıca BLASTN'in bir değişik türü. MegaBLAST uzun dizileri BLASTN'den daha etkili bir şekilde işliyor ve hem de çok daha hızlı işlem yapiyor ancak daha az duyarlı. Bu yüzden benzer dizileri geniş veri tabanlarında aramaya çok uygun bir araç.

Yazacağım program çoklu dizilim barındıran FASTA dosyasını alacak ve megablast komutunu çalıştıracak. Daha sonra da her okuma için bir .megablast dosyası oluşturarak bir sonraki adıma hazırlayacak.

Wednesday, June 27, 2012

Kontaminant (Kirletici) Analizi Projesi

Başlangıç olarak, araçlara, programlama diline, kısacası biyoenformatiğe alışabilmem için bana verilen bu ufak projeyi ayrıntılı olarak anlatacağım.

Biliyoruz ki, laboratuvar çalışmalarımızda ne kadar önlemeye çalışsak da kontaminant riski hep bulunuyor. Bunu ne kadar aza indirsek o kadar iyi, ki daha sonra bunun miktarını bulup, bunun üzerinden sonucumuzun bir başka değerlendirmesini de yapabiliriz. İşte bunu bulmak için bir yöntem, DNA analizi. Çalıştığınız örneğinizin DNA'sı dizileniyor ve bu DNA çeşitli programlarla analiz edilip, kirleten organizmaları DNA'larından ortaya çıkarabiliyoruz.

Literatür araştırması sonrası bu tarz programlar olduğunu gördüm ancak daha farklı açıdan yaklaşmışlar. Örneğin Tel Aviv Üniversitesi'nden bir grup, benzer bir çalışmayı insanda patojen enfeksiyonlarını bulma ve buradan tedavi geliştirme konusunda gerçekleştirmişler.1

Bu proje birkaç Perl scriptinin oluşturulmasını içeriyor. Bunların ilki, DNA diziliminin bir referans genomuyla karşılaştırılarak, eşleşebilen kısmının çıkarılması ve kalan kısmın FASTQ formatında kaydedilmesi. Daha sonra bu dosya, sonraki adımlar için FASTA formatına bir başka Perl scripti ile dönüştürülecek. Ardından Bu FASTA dosyası, MegaBLAST aracı ile taranacak ve sonuçlar kaydedilecek. Ve şimdilik son olarak da bu sonuçlar değerlendirilecek.

Proje yapım aşamasında değişebiliyor, ufak eklentiler gelebiliyor. Şu an için bu şekilde planlandı. Projeyle ilgili diğer ayrıntıları, devam ederken diğer yazılarda vereceğim. Özellikle her adımlar neleri uyguladığımı yazmak ve böylece benzer işleri yapacak arkadaşlarım için bir kaynak oluşturmayı düşünüyorum.

1. Pathogen detection using short-RNA deep sequencing subtraction and assembly, http://bioinformatics.oxfordjournals.org/content/27/15/2027.full

Monday, June 25, 2012

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.

Thursday, June 21, 2012

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.

Wednesday, June 20, 2012

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.

Tuesday, June 19, 2012

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.

Monday, June 18, 2012

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.