Spørsmål:
Noen raske alternativer for å spørre om store VCF-sengintervaller?
andremrsantos
2017-09-21 18:49:44 UTC
view on stackexchange narkive permalink

Jeg gjør noen analyser, og jeg må dele en stor VCF-fil (~ 8 GB gziped) gitt et sengintervall og identifisere i en delmengde av rsid.

Dessverre tar begge de vanlige valgene mine for å gjøre denne analysen ( snpSift og bedtools ) langt eller mislykkes på grunn av minneproblemer i min lokale datamaskin og en ekstern server.

Kjenner dere noen andre alternativer eller forslag for å øke hastigheten på denne prosessen?

Følg kommandoene jeg bruker:

  sengeverktøy krysser -a <myvcf>.vcf.gz -b <myinterval>.bed -wa | \ java -Xmx10g -jar snpSift.jar filter - sett <myrsid>.txt "ID i SET [0]"  

eller

  gzcat <myvcf>. .gz | \ java -Xmx10g -jar snpSift.jar intervaller <mybed>.bed | \ java -Xmx10g -jar snpSift.jar filter - sett <myrsid>.txt "ID i SET [0]"  

Kommandoen bedtools mislykkes vanligvis på grunn av ukjent grunn og SnpSift løper over 6 timer til og med gitt 10 GB ram. Min lokale maskin har 8 GB RAM, men serveren har 32 GB.

Jeg glemte å spørre om versjoner. Kanskje en nyere versjon er raskere? Hva er de "ukjente årsakene", er det noen feil eller melding eller bare en frysende datamaskin? (Kanskje det er en feil). I den andre kommandoen kan du ikke kombinere de to snpSift-kommandoene i en? Hvor stor er regionen du vil ha?
@Llopis Jeg bruker de nyeste versjonene av begge programmene. Bedtools-feilen er vanligvis ukjent format, og kommandoen mislykkes. Så vidt jeg vet kan jeg ikke kombinere kommandoene, men jeg har aldri hatt problemer med denne ordningen. Og regionen var omtrent 32-40Mb
Fire svar:
Pierre
2017-09-21 20:20:23 UTC
view on stackexchange narkive permalink

dette :

  sengetøy krysser -a <myvcf>.vcf.gz -b <myinterval>.bed -wa | \ java -Xmx10g -jar snpSift.jar filter - sett <myrsid>.txt "ID i SET [0]"  

kan erstattes med en GATK SelectVariants https: // programvare .broadinstitute.org / gatk / documentation / tooldocs / current / org_broadinstitute_gatk_tools_walkers_variantutils_SelectVariants.php

  java -jar gatk.jar -T SelectVariants -R ref.fa \ -L myinterval.bed --keepIDs myrsid.txt -V myvcf.vcf.gz -o out.vcf  

og dessuten kan du også jobbe parallelt ved å dele sengefilen din (f.eks. av kromosomer), og slå sammen resultatene.

takk for forslaget, men etter min erfaring tar GATK vanligvis lenger tid å kjøre denne typen prosesser. Jeg har også vært i stand til å fullføre filtreringen ved å invertere snpSift-valgrekkefølgen.
@andre hvis du kan legge løsningen, kan det hjelpe andre mennesker
@Llopis sikkert, vær så snill å finne den nedenfor
Alex Reynolds
2017-09-21 22:52:45 UTC
view on stackexchange narkive permalink

Generelt, med BEDOPS:

  $ vcf2bed < < (gunzip -c snps.vcf) | bedops -e 1 - myRegions.bed > answer.bed  

Eller:

  $ vcf2bed < < (gunzip -c snps.vcf) | bedmap --echo --echo-map-id --delim '\ t' myRegions.bed - > answer.bed  

Etc.

BEDOPS støtter inngangsstrømmer ; bruk dem der du kan.

Når det er sagt, hvis du skal spørre om VCF-dataene ofte, kan du konvertere en gang og bruke dem i nedstrømsoperasjoner.

  $ vcf2bed < < (gunzip -c snps.vcf) > snps.bed  

Deretter:

  $ bedops -e 1 snps.bed myRegions.bed > svar. seng  

Etc.

Hvis du har en beregningsklynge, kan du ytterligere parallellisere arbeidet ved å dele SNPs på kromosomer med bedextract :

  $ for chr i `bedextract --list-chr snps.bed`; gjør ekko $ {chr}; bedextract $ {chr} snps.bed > snps. $ {chr} .bed; ferdig  

Send deretter inn en batchjobb for hvert kromosom:

  $ bedmap --chrom $ {chr} --echo --echo-map-id --delim '\ t' myRegions.bed snps. $ {chr}. bed > svar. $ {chr}. bed  

Bruk bedextract og legg til - krom $ {chr} til sengekartet -anropet ditt vil gi store hastighetsforbedringer i forhold til andre verktøy, da disse alternativene fokuserer på kromosomet av interesse og ingenting annet.

andremrsantos
2017-09-22 16:01:53 UTC
view on stackexchange narkive permalink

Jeg fiklet med kommandoen og var i stand til å fullføre utførelsen ved å invertere rekkefølgen på rsid og sengintervallfiltrering. Kommandoen er som følger:

  gzcat <myvcf>.vcf.gz | \ java -Xmx10g -jar snpSift.jar filter - sett <myrsid>.txt "ID i SET [0]" | \ java -Xmx10g -jar snpSift.jar intervaller <mybed>.bed  

Kanskje er min rsid-delmengde mindre enn BED-intervallene mine, og dermed er prosessen raskere og mer effektiv.

Uansett takk alle

finswimmer
2019-01-31 11:04:07 UTC
view on stackexchange narkive permalink

Her er en annen måte å gjøre det i 2019:

  $ bcftools view -T regions.bed -i 'ID=@<myrsid>.txt' input.vcf > output.vcf  kode> 

Ting kan økes hvis vi komprimerer og indekserer input.vcf . Da vil bcftools ha umiddelbar tilfeldig tilgang til posisjonen.

   $ bgzip -c input.vcf > input. vcf.gz $  tabix input.vcf.gz $ bcftools view -T regions.bed -i 'ID=@<myrsid>.txt' input.vcf.gz > output.vcf  

Internt fungerer bcftools med bcf . Når input og output er vcf konverterer den vcf>bcf> vcf . Når du arbeider med store filer, gir dette en stor overhead. Å konvertere vcf til bcf først kan redusere kjøretiden for videre nedstrømsanalyser dramatisk. Etter min erfaring 2-3 ganger raskere.

   $ bcftools view -Ob input.vcf > input.bcf $  bcftools index input.bcf $ bcftools view -Ob -T regions.bed -i 'ID=@<myrsid>.txt' input.bcf > output.bcf  
Nyttig kommentar om VCF> BCF> VCF-konvertering!


Denne spørsmålet ble automatisk oversatt fra engelsk.Det opprinnelige innholdet er tilgjengelig på stackexchange, som vi takker for cc by-sa 3.0-lisensen den distribueres under.
Loading...