[ensembl-dev] Input information plugin for a variation on same chromosome and position

Duarte Molha Duarte.Molha at ogt.com
Thu Jun 6 11:19:03 BST 2013


Dear Guillermo

How did you create the VCF file that produced the 2 lines that gave you the problem?

Correct me if I am wrong DEVS, but I believe the file you indicated is not following the VCF specifications... Was this 2 individuals you were trying to merge? If so the 2 variations should be merged into 1 line like so:

#CHROM    POS    ID    REF    ALT    QUAL    FILTER    INFO    FORMAT    Sample1          Sample2
chr11    123502514    .    G    A,C    1000    .        GT:GK:VS:GF:PA:F3    0/1:0:2:0:2:0     0/2:0:2:0:2:0

Use something like vcf-merge (from vcf tools to correctly merge VCF files.

If this was 1 individual then it would have become

#CHROM    POS    ID    REF    ALT    QUAL    FILTER    INFO    FORMAT    Sample1
chr11    123502514    .    G    A,C    1000    .        GT:GK:VS:GF:PA:F3    1/2:0:2:0:2:0


just concatenating and sorting 2 vcf files will not be correct.

Just to make sure your file is valid you could probably use the vcf-validator (also in vcf-tools)

Best regards

Duarte





From: dev-bounces at ensembl.org [mailto:dev-bounces at ensembl.org] On Behalf Of Guillermo Marco Puche
Sent: 06 June 2013 10:50
To: dev at ensembl.org
Subject: Re: [ensembl-dev] Input information plugin for a variation on same chromosome and position

Thanks to Duarte's code I've fixed my plugin to parse VCF input.

It's a shame all this information isn't on a devs guide for VEP. At least some information about all the available objects whould be nice.

Regards,
Guillermo.


On 06/05/2013 06:20 PM, Guillermo Marco Puche wrote:
Hello,

I've noticed that the plugin I'm using to parse my VCF is being wrong in one case.

In the case there's 2 variants in the same chromosome and the same position:

Here's the example:

Input VCF:

#CHROM    POS    ID    REF    ALT    QUAL    FILTER    INFO    FORMAT    DATA
chr11    123502514    .    G    A    1000    .        GT:GK:VS:GF:PA:F3    0/1:0:2:0:2:0
chr11    123502514    .    G    C    1000    .        GT:GK:VS:GF:PA:F3    0/1:0:2:0:2:0


The output is correct it reports all variants but the column refering to VAR ALLELE (which is parsed by my plugin) "C" allele is being reported in both cases. This is wrong. "A" and "C" alleles should be reported.

I suppose this is due because my plugin access the VCF input to parse information with Tabix.  And tabix access VCF input file with chr, start and end position. The chromosome and position being the same for both changes then the output from parse is incorrect.

I had to do this due to this because the VCF input used by my workmates is a bit weird.

The code for my vcf_input.pm parser is located here: https://github.com/guillermomarco/vep_plugins_71/blob/master/vcf_input.pm

Important lines for this problem are from line 102 to 126 (tabix related).

If accessing VCF file with tabix it's impossible to distinguish between two variations in same position, is there any other way I can access the VCF for the the current variation consequence without having to parse the whole input file?

I know Duarte Molha had a script to get VCF input information for the input line of consequence being calculated.

This must be the important line to access the input VCF line object:

my $line = $vf->{base_variation_feature_overlap}->{base_variation_feature}->{_line};

This is par of Duarte's code:

sub run {

    my $self = shift;

    my $vf = shift;

    my $line_hash = shift;

    my $config = $self->{config};

    my $ind_cols = $config->{ind_cols};

    my $line = $vf->{base_variation_feature_overlap}->{base_variation_feature}->{_line};

    my $individual = $vf->{base_variation_feature_overlap}->{base_variation_feature}->{individual};

    my @split_line = split /[\s\t]+/, $line;

    my $qual_score = $split_line[5];

    my @gt_format  = split /:/, $split_line[8];

    my @gt_data    = split /:/, $split_line[$ind_cols->{$individual}];

    my $results = {map { shift @gt_format => $_ } @gt_data};

    $results->{"quality_score"} = $qual_score;



    return $results;

}
Thank you.

Best regards,
Guillermo.




_______________________________________________

Dev mailing list    Dev at ensembl.org<mailto:Dev at ensembl.org>

Posting guidelines and subscribe/unsubscribe info: http://lists.ensembl.org/mailman/listinfo/dev

Ensembl Blog: http://www.ensembl.info/

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.ensembl.org/pipermail/dev_ensembl.org/attachments/20130606/6e1c1f92/attachment.html>


More information about the Dev mailing list