18 Şubat 2017 Cumartesi

Yeni Nesil Sekanslama Temel Veri Analizi - 1

Birçok Yeni Nesil Sekanslama (YNS) veri çeşidi mevcut ve her biri için farklı bir yaklaşım gerekiyor. Bu yazı dizisinde veriye ilişkin temel özellikleri anlamak üzere yapılabilecek çeşitli yöntemlerden bahsedeceğim. Her bir yazıda, farklı durumlara ve hatta çoğu zaman da biyolojik olmayan verilere de uygulanabilecek araçları tanıtıp örnekler vereceğim.

Biyoinformatik analizleri ve genel anlamda da veri analizini öğrenmek isteyenler UNIX işletim sistemlerini eninde sonunda öğrenmek zorunda kalıyor, eğer Windows kullanıcısı iseniz en kısa sürede bu işletim sistemlerine alışmanızı öneririm. Linux veya Mac OS X işletim sistemlerinden birini edinerek ya da bu işletim sistemlerine sahip -örneğin üniversitenizdeki- bilgisayarlarda yazılarımdaki analizleri gerçekleştirebilirsiniz. Uygulama için şu adresteki örnek FASTQ dosyasını kullanabilirsiniz: http://ahmetrasit.com/fastq/SRR1513652.fastq.gz

YNS cihazları, elde edilen okumaları FASTQ formatında sunar. Elde edilen her bir okumaya ilişkin 3 temel bilgi bulunur: 1) Okumanın elde edildiği fiziksel yüzeyin koordinatlarına işaret eden bir okuma kimliği/açıklaması, 2) İlgili bölgeden elde edilen okumanın sekansı, ve 3) Elde edilen okumadaki her bir bazın ne derece doğru okunduğunu gösteren sayısal değerler dizisi. Aşağıda FASTQ formatında 5 farklı okuma yer alıyor:

@R03011.1 6:1:204:561 length=36
CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
+
IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
@R03011.2 6:1:238:751 length=36
ATGGAGTGGACTGGTCACTCTGTAGGCACCATCAAT
+
IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
@R03011.3 6:1:426:372 length=36
ATACGACAATATTGAAACAGCCTGTAGGCACCATCA
+
III)IIIIIIIIIIIIIHIIII=IIIIIIII-,);<
@R03011.4 6:1:871:192 length=36
AGGACGGAATCTTCGAAGTCAAGTCTACCGCTGTAG
+
IIIIIIIIIIIIIIIIIIII&IIIIIIIIIIIII5I
@R03011.5 6:1:678:558 length=36
AAAAAAAAAAAAAAAAAAAAAAAAGTAGGCACCCAC
+
IIIIIIIIIIIIIIIIIIIIIIIAIIIG4(+870&0

Her bir okuma @ karakteri ile başlar, ve ilgili okumaya ilişkin bilgiler içerir. YNS cihazının markası, modeli, ya da uygulanan protokole göre farklı bilgiler burada yer alabilir. İkinci satırda elde edilen okumanın baz dizilimi yer alır, pratikte ilgilendiğimiz kısım da burasıdır. Üçüncü satırdaki + karakterinin pratikte bir anlamı yoktur ve baz dizilimi ile her bir baza ilişkin kalitenin yer aldığı farklı satırların arasını işaretlemek için konulur. Bazı dosyalarda + karakterinden sonra da bazı açıklamalar yer alır ancak bu açıklamaların baz dizilimi veya kalitesi ile ilgisi yoktur. Dördüncü satırda, okumadan elde edilen her bir bazın ne kadar güvenilir bir şekilde, veya ne kadar hata payıyla okunduğu ifade edilir. Bu değerleri göstermek için 0'dan 9'a kadar rakamlar yetersiz kaldığından bunun yerine daha geniş bir karakter yelpazesi kullanılmıştır. Örneğin yukarıda baz kalitesi satırlarında bolca gördüğünüz I karakteri, iki üst satırda kendi hizasında yer alan bazın okunmasındaki hata payının 0.0001 olduğunu belirtir. Genel olarak kabul edilen hata payı 0.001'dir. Bu konuda daha detaylı bilgi için Phred kalite skoru'nu araştırabilirsiniz.

Artık elimizdeki veri hakkında bilgi toplamaya başlayabiliriz. İlk yapacağım şey, indirmiş olduğum dosyayı doğrudan Masaüstü'ne taşımak. UNIX temelli işletim sistemlerini baz alarak ilerleyeceğimi söylemiştim, bu aşamadan itibaren her şeyi Terminal kullanarak yapacağım. Windows'ta çalışıyorsanız Cygwin programını kurup kullanabilirsiniz. Bu programın kurulup çalıştırılmasına yönelik birçok Türkçe döküman internette mevcut, bu nedenle bu kısmı ilgilenenlere bırakıyorum.

Terminal açıldığında, önceden belirlenmiş bir klasörün içerisinde çalıştığını varsayarak açılır. Bu klasör Masaüstü'nü içerir, yani aslında bilgisayarı açtığınızda karşınıza gelen ekran, size Masaüstü adlı klasörün içeriğini gösteren ekrandır. Terminal'i açtığınızda hangi klasörde olduğunuzu teyit etmek için şu komutu kullanırız: pwd. Yani klavyeyi kullanarak 'pwd' harflerini girip Enter tuşuna basarak ilgili komutu çalıştırırız. pwd, 'print working directory' ifadesinin kısaltmasıdır ve üzerinde çalışılan klasörü Terminal'e yazdırmak için kullanılır. Mac OS X işletim sistemini kullandığım bilgisayarımda bu komutu kullandığımda şöyle bir yanıt alıyorum:
/Users/ahmetrasit

Linux işletim sistemini kullandığım bilgisayarımda bu komut ile aldığım yanıt ise şu şekilde:
/home/ahmetrasit

Temel amacım Masaüstü klasörüne gitmek, bu nedenle ilk olarak Terminal'in çalıştığı klasörün içerisindeki diğer dosya ve klasörleri listelemek. Bunun için kullandığım komut ise ls. Mac OS X işletim sistemini kullandığım bilgisayarımda aldığım yanıt aşağıdaki gibi, bundan sonrasında da bu işletim sistemi üzerinden çalışmaya ve devam edeceğim: 

Applications Library
Desktop Movies
Documents Music
Downloads Pictures

Amacım Masaüstü klasörüne gidip dosyam hakkında bilgi almak, kullandığım bilgisayarın dili İngilizce olduğu için Masaüstü klasörü benim bilgisayarımda Desktop olarak adlandırılıyor. Bu klasöre gitmek için cd [change directory] komutunu kullanacağım ve komutun hemen ardından hangi klasöre gitmek istediğimi belirteceğim:

cd Desktop

İstediğim klasörde olduğumu teyit etmek için yine pwd komutunu kullanacağım, aldığım yanıt şu şekilde:

/Users/ahmetrasit/Desktop

Başardık! :) İndirip masaüstüne kopyaladığımız dosyanın burada olduğundan emin olmak için ls komutunu kullanıp bu klasördeki tüm dosya ve klasörleri listeleyeceğiz. Dosyanız burada yer alıyorsa tüm aşamaları başarılı bir şekilde tamamladınız demektir. Aksi halde lütfen buraya kadarki yönergeleri daha dikkatli bir şekilde tekrar edin.

Verilerin büyüklüğünden ötürü dosyalar genelde sıkıştırılmış bir şekilde .gz uzantılı olarak size sunulur. İndirdiğiniz dosya da sıkıştırılmış bir dosya, gelin önce bu halinin büyüklüğünü kontrol edelim. Bunun için ls komutunu, bize dosyanın büyüklüğünü de göstermesi için -lh parametresi ile birlikte kullanıyoruz (ls-lh ve dosya adı arasında en az bir boşluk olmasına dikkat etmelisiniz):

ls -lh SRR1513652.fastq.gz

Bu komutun ardından aldığım cevap şu:

-rw-r--r-- 1 ahmetrasit staff 86M Feb 17 09:59 SRR1513652.fastq.gz

Bu aşamada bizi ilgilendiren kısmı 5. sütundaki 86M değeri, yani dosyamız 86 MB (megabyte) büyüklüğünde. Bu değer, aşırı basitleştirilmiş haliyle, dosyamızda yaklaşık 86 milyon karakterin (yani bilgisayar harfinin) olduğunu ifade ediyor. Şimdi bu sıkıştırılmış dosyayı açıp kullanılır hale getirelim. Bunun için gunzip komutunu kullanacağız:

gunzip SRR1513652.fastq.gz

Kısa bir süre sonra Terminal bir alt satıra geçecek. Bu, işlemin tamamlandığını gösteriyor. ls komutu ile klasörün içeriğini görüntülediğinizde SRR1513652.fastq.gz isimli dosyanın artık orada olmadığını, ancak bunun yerine SRR1513652.fastq isimli dosyanın geldiğini göreceksiniz. Şimdi de bu dosyanın büyüklüğüne bakalım:

ls -lh SRR1513652.fastq

Bu komutu çalıştırdığımda aldığım yanıt şu:

-rw-r--r-- 1 ahmetrasit staff 364M Feb 17 09:59 SRR1513652.fastq

Dosyamızın sıkıştırılmamış hali 364 MB, yani ilk haline göre yaklaşık 4 kat büyümüş. Şimdi sırada, dosyamızın içerisinde neler olduğunu görüntülemek var. Bunun gibi büyük dosyayları MS Word gibi bir kelime işlemciyle açmaya kalktığınızda bilgisayarınızın nazlanmaya başladığını hissedersiniz çoğu zaman. Amacımız dosyanın tamamını görüntülemek değil, sadece her şeyin yolunda olduğunu anlayıp dosya içeriğinin de beklediğimiz gibi olup olmadığını kontrol etmek. Bu nedenle head komutunu kullanacağız. Bu komut bize ilgili dosyanın ilk 10 satırını görüntüler:

head SRR1513652.fastq

Bu komutu çalıştırdığımda elde ettiğim yanıt şöyle:

@SRR1513652.1 HWI-ST570:67:D10FDACXX:4:1101:1428:2373 length=50
ACTGGTCTTCATTAATCAAGAACGAAAGTCACTGTAGGCACCATCAATTG
+
@CCFFFFFHHDHHJIIGHHGI:FFCGIIHHGIIJEGIIGHIJJIIIIH##
@SRR1513652.2 HWI-ST570:67:D10FDACXX:4:1101:2008:2430 length=50
ACTGCACCGTGACTCTCCTCGAAGACAGTGTCAAGCGGCTGTAGGCACCA
+
CCCFFFFFHHHHHJIJIIJJJ1CGHIJIIHHIJJGIIJIDIHIIJJJJJJ
@SRR1513652.3 HWI-ST570:67:D10FDACXX:4:1101:2343:2302 length=50
ACTGTGTTCAGTTTATCGTACAAATCTGTAGGCACCATCAATTCGTATGC

Yukarıda anlattığıma benzer bir şekilde bir FASTQ dosyası var, ilk satırda @ karakteri ile başlayan karışık bazı ifadeler, ikinci satırda o okumaya ilişkin baz dizilimi, üçüncü satırda ayıraç olarak kullanılan + karakteri ve dördüncü satırda da okumadaki her bir baza ait kalite skoru kendi dilince ifade edilmiş bir şekilde yer alıyor. Sonraki dört satırda da aynı kurala göre başka bir sekansın yer aldığını görüyoruz.

Peki böyle kaç satır olduğunu bir şekilde öğrensek ve bunu 4'e bölsek, elimizdeki dosyada kaç okuma olduğunu bulabiliriz, öyle değil mi? Bunun için wc [word count] komutunu kullanacağız:

wc SRR1513652.fastq

Bu komutu çalıştırdıktan sonra aldığım yanıt:

 8710044 13065066 382205709 SRR1513652.fastq

İlk sütun, bu dosyada kaç satır olduğunu ifade ediyor, ikinci sütun kaç kelime olduğunu, üçüncü sütun ise kabaca kaç karakter olduğunu. Sadece satır sayısını öğrenmek için wc komutunu -l [line] parametresi ile kullanmamız yeterli olurdu:

wc -l SRR1513652.fastq

8710044'ü 4'e böldüğümüzde elde ettiğimiz değer bize kaç okumaya sahip olduğumuzu gösteriyor, yani elimizde 2.177.511 farklı okumaya ilişkin bilgiler yer alıyor. Diğer bir deyişle, bu YNS deneyinde 2,2 milyon DNA parçası sekanslanmış. Her bir okumanın 50 baz uzunluğunda olduğunu görüyoruz dosyamızda, yani toplamda yaklaşık 109 Milyon baz sekanslanmış.

Bir sonraki bölümde elimizdeki verilerin kullanılabilir hale gelmesi için nasıl temizleneceğini anlatacağım ve elimizdeki verilere ilişkin göstergelere nasıl ulaşılacağından bahsedeceğim.


Bu bölümde kullandığımız UNIX komutları: pwd, lscd, gunzip, head, ve wc.
Bu bölümde kullandığımız dosyalar: SRR1513652.fastq.gz ve SRR1513652.fastq