Spørgsmål:
Hvordan sammenkædes "af kromosom" -VCF'er?
ShanZhengYang
2018-01-15 03:38:51 UTC
view on stackexchange narkive permalink

Jeg har flere VCF'er, som er VCF'er, som kun indeholder information fra kromosom. Der er et kromosom 1 VCF (med kun chr1), et kromosom 2 VCF (med kun chr2) osv.

Jeg kontrollerede for at sikre, at disse VCF'er var gyldige via VCFtools kode>, dvs.

  $ vcf-validator chr1.vcf  

som fungerer --- disse er gyldige VCF'er, jeg fik.

Nu vil jeg gerne kombinere disse VCF'er til en VCF.

Jeg prøvede naivt følgende kat operation:

  $ cat chr1.vcf chr2.vcf chr3.vcf ... chrX.vcf > total_chroms.vcf  

Dette fungerer dog ikke korrekt

  $ vcf-validator total_chroms.vcfThe header tag 'contig' not present for CHROM = chr1. (Ikke påkrævet men stærkt anbefalet.) Kunne ikke analysere linjen, forkert antal kolonner: [## fileformat = VCFv4.2 \ n] på /path/vcftools-0.1.14/perl/Vcf.pm linje 172, <__ANONIO__> linje 191016. Vcf :: throw ('Vcf4_2 = HASH (0x1ae7208)', 'Kunne ikke analysere linjen, forkert antal kolonner: [## filefor ...') kaldet på /path/vcftools-0.1.14/perl/ Vcf.pm linje 335 Vcf :: next_data_array ('Vcf4_2 = HASH (0x1ae7208)') kaldet på /path/vcftools-0.1.14/perl/Vcf.pm line 3457 Vcf4_1 :: next_data_array ('Vcf4_2 = HASH (0x1ae7208) ) kaldes på /path/vcftools-0.1.14/perl/Vcf.pm linje 2574 VcfReader :: run_validation ('Vcf4_2 = HASH (0x1ae7208)') kaldet på /path/vcftools-0.1.14//bin/vcf-validator linje 60 hoved :: do_validation ('HASH (0x16ada68)') kaldet til /path/vcftools-0.1.14//bin/vcf-validator line 14 $  

Hvilke værktøjer er tilgængelige for flette disse VCF'er sammen til en samlet VCF?

Tre svar:
Bioathlete
2018-01-15 05:25:11 UTC
view on stackexchange narkive permalink

Jeg vil anbefale bcftools concat. Du kan ikke bare kat dem sammen, fordi hver fil har et overskriftsafsnit. Kommandoen bcftools håndterer alt det for dig. Hver vcf-fil skal sorteres, inden du ringer til concat

bcftools concat -o total_chroms.vcf chr1.vcf chr2.vcf chr3.vcf ... chrX.vcf

Det er lidt underligt. `vcf-validator chr1.vcf` viser ingen problemer. Jeg tror, ​​at output fra `bcftools concat -o chroms12.vcf chr1.vcf chr2.vcf` viser en fejl:` FIXME: sekvensnavn chr1 i chr1.vcf`
@ShanZhengYang fejlene synes at indikere, at du har `chr1` i CHROM-feltet i nogle rækker, men ingen tilsvarende linje i overskriften. Kan du kontrollere, om det er sandt i filen `chr1.vcf`? Måske mangler validatoren på en eller anden måde denne fejl?
@juod VCF-headeren ser rigtig ud for mig. `#CHROM POS ID REF ALT KVAL FILTERINFO`
@juod "men ingen tilsvarende linje i overskriften" Måske forstår jeg ikke dette. Udover koden, der er indsat ovenfor, er der ingen andre "chrom" -oplysninger i overskriften
I henhold til VCF-spec https://samtools.github.io/hts-specs/VCFv4.1.pdf skal der være overskriftslinjer for hvert kromosom, dette er fra det første eksempel i de sammenkædede dokumenter - `## contig = `
@Bioathlete kan jeg se. Jeg tror jeg forstår det nu --- dette spørgsmål er blevet diskuteret før: https://github.com/samtools/bcftools/issues/326 Jeg ved, at disse VCF'er er fra hg38. Kunne jeg blot tilføje linjen '## contig = ' osv. Til de pågældende VCF'er? Jeg ville bare tage kromosomlængderne fra hg38
@ShanZhengYang prøv det - det skal fungere. Jeg tror ikke engang, at det er nødvendigt at give længden, men du kan eksperimentere og fortælle os.
@juod Ovenstående fungerede! Tak for hjælpen!
terdon
2018-01-15 21:13:06 UTC
view on stackexchange narkive permalink

Det bedste værktøj til jobbet er sandsynligvis bcftools som foreslået af Bioathlete, men du kan også gøre dette manuelt. Du skal bare samle alle overskriftslinjer fra alle vcf-filer, fjerne eventuelle dubletter og derefter udskrive alle overskrifter + de faktiske data i den nye:

  grep '^ ##' chr * vcf | sorter | uniq > all.vcfgrep -m1 '^ # CHR' chr1.vcf >> all.vcf ## Få chr headerlinjen grep -v '^ #' chr * vcf >> all.vcf
Det ser ud til, at jeg får en misdannet VCF-header med ovenstående kommandoer
@ShanZhengYang misdannet hvordan? Kan du redigere dit spørgsmål og vise os et eksempel på dine filer?
Så jeg ser de ovenstående 'grep'-kommandoer giver den samme adfærd med alle mine standard VCF'er. Jeg får noget som dette i `all.vcf`:` chr10.vcf: ## contig = chr10.vcf: ## fileDate = 20121011chr10.vcf: ## fileformat = VCFv4. 2chr10.vcf: ## reference = sti / reference.fachr10.vcf: ## kilde = foobarchr11.vcf: ## contig = chr11.vcf: ## fileDate = 20121011chr11.vcf: # # fileformat = VCFv4.2chr11.vcf: ## reference = sti / reference.fachr11.vcf: ## kilde = foobar .... `
Pierre
2018-01-16 00:30:09 UTC
view on stackexchange narkive permalink

brug picard GatherVcf : http://broadinstitute.github.io/picard/command-line-overview.html#GatherVcfs

Samler flere VCF-filer fra en scatter-operation i en enkelt VCF-fil. Inputfiler skal leveres i genomisk rækkefølge og må ikke have begivenheder i overlappende positioner.

Den fejl, jeg får her, er 'Undtagelse i tråd "main" picard.PicardException: For at indeksere de resulterende VCF-input skal VCF'er indeholde ## contig linjer. Det er rigtigt, min "af kromosom" -VCF'er indeholder ikke en '## contig' linje i overskriften ... men jeg er ikke sikker på, at det ville betyde noget
Rediger ovenfor: Dette problem er tilsyneladende blevet diskuteret før: github.com/samtools/bcftools/issues/326 Spørgsmål: Hvordan kunne jeg tilføje disse konturlinjer, hvis jeg ikke kender disse oplysninger? Jeg ved, at disse VCF'er er fra hg38. Kunne jeg blot tilføje linjen '## contig = ' osv. Til de pågældende VCF'er? Jeg ville bare tage kromosomlængderne fra hg38
"men jeg er ikke sikker på, at det ville betyde noget" det kontrollerer rækkefølgen af ​​kontigene ved hjælp af diktatet. brug UpdateVcfSequenceDictionary https://broadinstitute.github.io/picard/command-line-overview.html
"det kontrollerer rækkefølgen af ​​kontigerne ved hjælp af dikt. brug UpdateVcfSequenceDictionary". Ah, jeg forstår det nu. Tak for hjælpen!


Denne spørgsmål og svar blev automatisk oversat fra det engelske sprog.Det originale indhold er tilgængeligt på stackexchange, som vi takker for den cc by-sa 3.0-licens, den distribueres under.
Loading...