Soru:
Bir insan genomundan Illumina okumalarını kullanarak bir varyant listesi (yani VCF dosyası) nasıl oluşturabilirim?
gringer
2017-06-12 12:49:44 UTC
view on stackexchange narkive permalink

Bu, sık sık çözmem gereken bir sorun ve insanların aynı sorunu çözmek için başka hangi yöntemleri kullandıklarını öğrenmekle ilgileniyorum.

Yılda yaklaşık iki kez , Illumina okumalarından, genellikle fareden veya insandan varyantları belirlemem isteniyor. Bunlar, iyi referans genomlarına sahip olan şeylerdir (örneğin, topluluktan insan genomu, topluluktan fare genomu) ve sıklıkla çeşitli biyoinformatik araçlarda test edilir.

Kullanım tercihi sırasına göre elimde üç bilgisayar var: 4 işleme iş parçacığı ve 8 GB belleğe sahip bir dizüstü bilgisayar, 12 işlem iş parçacığı ve 64 GB belleğe sahip bir masaüstü ve 24 işlem iş parçacığı ve 256 GB belleğe sahip bir sunucu. Bazen çok fazla işlem yapmam veya işleri hızlı bir şekilde yapmam gerektiğinde daha iyi bilgisayarlara erişiyorum, ancak bunlar temel biyoinformatik ekibimi oluşturuyor.

Verilerin işlenmesini içeren tüm genom projelerim oldu Her biri yaklaşık 10-40 milyon eşleştirilmiş uçlu okuma (her biri 100-125bp) olan yaklaşık 120 kişiden oluşan projelere kadar 4 kişi. Bu seviyenin ötesinde, diğer araştırmacıların genellikle kendi biyoinformatik ekiplerine ve / veya yeteneklerine sahip olacağından şüpheleniyorum, bu yüzden maaşlı biyoinformatikçilerden duyduğum büyük ölçekli işlerin hiçbirini alamıyorum.

Bu okumaları, aşağı akış analiz araçlarında (ör. VEP) kullanmak üzere referans eşlemeli varyant verilerine (yani gzip ile sıkıştırılmış VCF) dönüştürmek için kullanacağınız standart yaklaşım nedir?

Iki yanıtlar:
gringer
2017-06-12 13:41:13 UTC
view on stackexchange narkive permalink

1. Bağdaştırıcı Kırpma

Bir dizi okuma ile karşılaştıktan sonra yaptığım ilk şeylerden biri, bağdaştırıcı dizilerini okumaların başından ve sonundan kaldırmaktır. Çoğu temel arama yazılımı, bir miktar yerleşik adaptör kırpma içerir, ancak neredeyse her zaman bazı adaptör sıralarının kalacağı durumdur. Bağdaştırıcıların kaldırılması eşleştirme için yararlıdır çünkü eşleştiricinin bir eşleşme yapmak için harcaması gereken çabayı azaltır (bu, bazı sınır okumalarının doğru şekilde eşleştirilmesine yardımcı olabilir).

Tercih ettiğim adaptör düzeltici Trimmomatic. Palindromik adaptörü arama yeteneğine sahiptir ve uyarlanabilir bir sürgülü pencere seçeneği içerir. Trimmomatic iş parçacıklıdır ve dosyalar arasında her seferinde bir zincir modunda çalıştırıldığında oldukça hızlı çalışıyor gibi görünüyor. İşte bazı örneklerden okumaları kırpmak için çalıştırabileceğim bir örnek komut dosyası. Bu, kırpılmış FASTQ dosyalarını bir kırpılmış alt dizine koyar:

  TRIMPATH = / data / all / program / trimmomatic / Trimmomatic-0.36; JARPATH = "$ {TRIMPATH} / trimmomatic-0.36.jar "; ADAPTfile =" $ {TRIMPATH} /adapters/TruSeq3-PE-2.fa "; CMDS =" ILLUMINACLIP: $ {ADAPTfile}: 2: 30: 10: 5: true LEADING: 3 TRAILING: 3 SLIDINGWINDOW: 10: 20 MINLEN: 40 "; mkdir -p kırpılmış; INFILE1 için * _1.fastq.gz; do base = $ (basename "$ INFILE1" _1.fastq.gz); echo $ {base}; INFILE2 = "$ {temel} _2.fastq.gz"; OUTFILE_P1 = "kırpılmış / $ {baz} _P1.fastq.gz"; OUTFILE_P2 = "kırpılmış / $ {baz} _P2.fastq.gz"; OUTFILE_U1 = "kırpılmış / $ {temel} _U1.fastq.gz"; OUTFILE_U2 = "kırpılmış / $ {baz} _U2.fastq.gz"; java -jar "$ {JARPATH}" PE -iş parçacığı 20 -phred33 \ "$ {INFILE1}" "$ {INFILE2}" \ "$ {OUTFILE_P1}" "$ {OUTFILE_U1}" "$ {OUTFILE_P2}" "$ { OUTFILE_U2} "\" $ {CMDS} "; tamamlandı;  

Trimmomatic kötü giriş verilerine bir şekilde duyarlıdır ve farklı uzunlukta kaliteli dizeler görürse yüksek sesle başarısız olur (yani çalışmayı durdurur) dizeleri sıralamak için:

  İstisna dizisindeki "Konu-1" java.lang.RuntimeException: Dizi ve kalite uzunluğu eşleşmiyor: 'TACATGGCCCTGAAATGACTTTCACCCAGGCAACCAGTGCCCCCTGTATAGACACATGCCTTGGGCGCTCCCCACCCTTCCTCGCGTGGCCACACCTCTGT' -AAFFJFJJ7A-FJJJFJFJFJJFFA-FFAF-<A-<FFFJA-<-A7-F<<FFJJAJJJJJJJJJ' vs 7-7AJ7<AAJA - - org.usadellab.trimmomatic.fastq.FastqParser.parseOne de org.usadellab.trimmomatic.fastq.FastqRecord.<init> (FastqRecord.java:25) de J7<ACTGCTGTGGGGCACCCAGCCCCCCAGATAGCCTGGCAGAAGGATGGGGGCACAGACTTCCCAGCTGCACGGGAGAGAC'(FastqParser.java:89) --< org.usadellab.trimmomatic.fastq.FastqParser.next (FastqParser.java:179) at org.usadellab.trimmomatic.threading.ParserWorker.run (ParserWorker.java:42) java.lang.Thread.run (Thread.java) adresinde : 745)  

2. Haritalamayı Okuyun

Okuma haritalama, bir hedef genom içindeki okuma için en olası konumu bulur. Son derece hızlı yaklaşık haritalayıcılar mevcuttur, ancak bunlar henüz varyant çağırma için çalışmaz ve tam bir haritalama yaklaşımı gereklidir . Şu anda tercih ettiğim eşleştiricim HISAT2. Bunu, çift okuma sorunu ve yerel varyant farkındalık eşleme nedeniyle BWA yerine kullanıyorum. HISAT2, Bowtie2 ve Tophat2 (JHUCCB) ile aynı bilgi işlem grubu tarafından yapılmıştır ve bu diğer programları değiştirmek için önerilen araçtır.

HISAT2, hem HISAT hem de TopHat2'nin halefidir. HISAT ve TopHat2 kullanıcılarının HISAT2'ye geçmelerini öneririz.

HISAT2 sayfası, SNP varyantları dahil olmak üzere insan genomu için bir genomik dizin dosyasına bir bağlantı içerir. İnsan okumalarını haritalandırırken kullanırım. HISAT2 de iş parçacıklıdır, bu yüzden onu dosyalar üzerinde teker teker çalıştırıyorum ve sıralı bir BAM dosyası oluşturmak için samtools içinden geçiyorum:

  mkdir mapped for r1 in trimmed / * _ P1.fastq.gz; do base = $ (temel adı "$ {x}" _P1.fastq.gz); r2 = "kırpılmış / $ {taban} _P2.fastq.gz"; echo $ {base};
hisat2 -p 20 -t -x / data / all / genomes / hsap / hisat_grch38_snp / genome_snp -1 \ "$ {r1}" -2 "$ {r2}" 2> "eşlenmiş / hisat2 _ $ {y} _vs_grch38_stderr.txt" | \ samtools sırala > "eşlenmiş / hisat2 _ $ {y} _vs_grch38.bam"; bitti  

3. Varyant Çağrısı

Bunu yapmak için şu anda samtools / bcftools kullanıyorum, ancak yakın zamanda samtools'un bir dinozor programı olduğuna ve daha iyi yaklaşımların mevcut olduğuna dair bir hibe gözden geçiren yanıtı aldığımız için diğer fikirlerle ilgilenebilirim. Samtools şu anda varyant çağrısı için evreler ile çalışmıyor, bu yüzden komutları bir metin dosyasına kaydedip GNU Parallel üzerinden çalıştırıyorum. Bu, genom dosyalarının ilk önce samtools faidx aracılığıyla indirilmesini ve dizine eklenmesini gerektirir. Bu, varyantlar dizininde bir dizi gzipli VCF dosyası oluşturur:

  mkdir -p varyantları; (eşlenmiş / *. Bam içindeki x için; do echo samtools mpileup - v -f /data/all/genomes/hsap/hisat_grch38_snp/Homo_sapiens.GRCh38.dna.primary_assembly.fa "$ {x}" \ | \ bcftools call --ploidy GRCh38 -v -m -O z -o varyantları / $ (temel adı "$ {x}" .bam) .vcf.gz; tamamlandı) > call_jobs.txtcat call_jobs.txt | paralel -u;  

Yavaş, ancak daha doğru bir alternatif olarak, tüm örnekler için aynı anda varyantlar çağrılabilir:

  samtools mpileup -v -f /data/all/genomes/hsap/hisat_grch38_snp/Homo_sapiens.GRCh38.dna.primary_assembly.fa eşlenmiş / *. bam | \ bcftools call --ploidy GRCh38 -v -m -O z -o varyantları / hisat2_allCalled_vs_grch38.vcf.gz  

Daha hızlı bir işlem isteniyorsa, varyant çağırma kromozomlar arasında paralelleştirilebilir paralel kullanarak ve daha sonra bcftools norm kullanılarak birleştirildi. Bunun uygulanması okuyucuya bir alıştırma olarak bırakılmıştır.

HaplotypeCaller ile GATK'ın en iyi uygulama kılavuzlarının [https://software.broadinstitute.org/gatk/best-practices/workflow?id=11145] örnek başına arama yaptığını, ardından bu VCF dosyalarını toplanmış veriler olarak işlediğini görüyorum. Birkaç yüz yerine aynı anda binlerce örnekle çalıştıkları için pratiklik amacıyla bu şekilde yapıyor olabilirler.
GATK En İyi Uygulamaları tarafından önerilen iki aşamalı ortak çağrı iş akışı gerçekten de her boyuttaki kohort için ölçeklenebilir olacak şekilde tasarlanmıştır, böylece iki veya yirmi bin örneğiniz olsun, hemen hemen aynı şekilde uygulayabilirsiniz. Bundan daha yükseğe çıktığınızda, ölçeklendirmeye devam etmek için bazı ek ince ayarlar vardır.
Geraldine_VdAuwera
2020-04-23 22:17:06 UTC
view on stackexchange narkive permalink

GATK, muhtemelen bunun için en yaygın kullanılan programdır. İlgilendiğiniz varyant türlerine (germ hattı veya somatik, kısa varyantlar, kopya numarası, yapısal) bağlı olarak kullanabileceğiniz birkaç iş akışı vardır. En yaygın kullanım örneği, genel iş akışının burada açıklandığı Germline kısa varyant keşfidir (SNP'ler ve Indels):

https://gatk.broadinstitute.org/hc/en-us / makaleler / 360035535932

Broad Institute'taki GATK ekibi artık, Cromwell motoruyla hemen hemen her platformda çalıştırılabilen WDL (Worfklow Açıklama Dili) ile yazılmış iş akışı komut dosyaları sağlıyor. İş akışları, eşleme (hizalama) ve bazı önemli temizleme işlemlerinin yanı sıra varyant çağırma ve filtreleme dahil olmak üzere veri ön işlemeyi içerir.

Bu iş akışlarını kullanmanın avantajlarından biri, Broad'un bunları sıraladıkları tüm veriler için üretimde kullanmasıdır; bu, günümüzde her beş dakikada bir yeni bir insan tüm genomuna denk geliyor. Bu, araçların güvenilir ve verimli olmasını sağlamak için çok fazla baskı olduğu anlamına gelir çünkü boru hattı işlemlerinin herhangi bir şekilde kesintiye uğraması büyük bir sorun olacaktır. Ayrıca, çıktıların diğer veri kümeleri ve araçlarla uyumlu olması için oldukça standart hale getirilmiştir.

Açıklama: Broad Institute'da çalışıyorum ve GATK kullanımı hakkında bir kitap yazdım ( https://oreil.ly/genomics-cloud).



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