Soru:
Yüzlerce küçük BAM dosyasını tek bir BAM dosyasında birleştirin
Scott Gigante
2017-05-19 10:50:24 UTC
view on stackexchange narkive permalink

Bir milyondan fazla (uzun) okuma üzerinde çalışıyorum ve bunları büyük bir genomla uyumlu hale getiriyorum. Düzinelerce çekirdekli tek bir işi çalıştırmaya çalışmak yerine, hizalama işlerimi paralel olarak çalıştırmayı, yüzlerce düğüme yatay olarak dağıtmayı düşünüyorum.

Daha fazla aşağı akış analizi için sıralanmış BAM dosyalarını birleştirmek istiyorum . Geçerli bir dosya başlığını korurken ve girdi bam dosyalarının halihazırda sıralanmış olmasından yararlanarak bunu yapmanın en etkili yolu nedir?

Iki yanıtlar:
#1
+13
Devon Ryan
2017-05-19 12:06:36 UTC
view on stackexchange narkive permalink

samtools merge merged.bam * .bam , girdi dosyaları sıralandığı için yeterince etkilidir. Samambamba ve / veya biobambam ile biraz daha hızlı olabilirsiniz, ancak bunlar genellikle önceden kurulu değildir ve IO, yine de hızla bir darboğaz haline gelir.

Bunun bamtoollerin nasıl birleştiğine dair bir fikriniz var mı?
Samtools, referans uygulaması olduğu için diğer araçlardan biraz daha yavaş olma eğilimindedir, bu nedenle bamtools'un biraz daha hızlı olmasını beklerim.
Bamtools genellikle daha yavaştır çünkü optimize edilmemiştir ve artık bakımı yapılmamıştır. Sambamba vb. Daha hızlı olmak için belirli bir amaç ile geliştirilmiştir.
#2
+8
John Marshall
2017-05-19 12:18:49 UTC
view on stackexchange narkive permalink

Sıralanmış dosyaları birleştirmek doğrusal bir işlemdir, dolayısıyla bunu yapan iyi uygulanmış araçlar bunu yaklaşık olarak aynı verimlilikle yapar. Dolayısıyla samtools birleşir (1.3.x ve 1.4.x sürümlerinde birleştirme başlığı işlemede iyileştirmeler olduğu için en güncel sürümü kullanın), picard MergeSamFiles , vb.

Bu araçların tüm girdi BAM dosyalarını aynı anda açık tutması gerekir, bu nedenle kaç yüz girdi dosyanız olduğuna bağlı olarak, açık dosya tanımlayıcılar için sistem sınırına girebilirsiniz. Önce bunu maksimize etmek için ulimit kullanın; hala çok fazla varsa, ilk 500 dosyayı birleştirmeniz, ardından sonraki 500 dosyayı bununla birleştirmeniz gerekebilir, vb. Samtools bunu dahili olarak yapmaz; Diğer birleştirme uygulamalarının işe yarayıp yaramadığından emin değilim.

Belki ikinci paragrafınızda bahsettiğiniz gibi adım adım birleştirmek işleri hızlandırabilir ve biri IO sınırlamalarına uymaz?
Hayır, verilerin bir kısmı şu anda birden fazla kez yazılıyor ve okunuyor, bu yüzden daha yavaş olmalı. Kurnazca boru kullanımı ve işlem ikamesi ile ("samtools birleştirme… <(samtools birleştirme…)…") bu en aza indirilebilir ve diske çarpmaktan kaçınabilir, böylece yavaşlama önemsiz olabilir (birkaç çekirdek daha kullanmak pahasına).


Bu Soru-Cevap, otomatik olarak İngilizce dilinden çevrilmiştir.Orijinal içerik, dağıtıldığı cc by-sa 3.0 lisansı için teşekkür ettiğimiz stackexchange'ta mevcuttur.
Loading...