Bio::EnsEMBL::ExternalData::SNPSQL WebAdaptor
SummaryIncluded librariesPackage variablesSynopsisDescriptionGeneral documentationMethods
Toolbar
WebCvsRaw content
Summary
Bio::EnsEMBL::ExternalData::SNPSQL::WebAdaptor - Web accelerated (light objects) for SNPs
Package variables
No package variables defined.
Included modules
Bio::EnsEMBL::ExternalData::SNPSQL::DBAdaptor
Bio::EnsEMBL::ExternalData::Variation
Bio::EnsEMBL::Utils::Eprof qw ( eprof_start eprof_end )
Inherit
Bio::EnsEMBL::ExternalData::SNPSQL::DBAdaptor
Synopsis
Give standard usage here
Description
This object is derived from SNPSQL::DBAdaptor.
Method get_Ensembl_SeqFeatures_clone_web() is there only to speed up
Web work. It loads only minimal set of sequence features into
Variation objects . To get a fullset of Variation attributes method
get_SeqFeature_by_id() is call on select objects, only. Additionally
it needs an attribute determined by the display resolution on how far
apart the features have to be to be drawn.
Methods
get_Ensembl_SeqFeatures_clone_webDescriptionCode
Methods description
get_Ensembl_SeqFeatures_clone_webcode    nextTop
 Title   : get_Ensembl_SeqFeatures_clone_web
Usage :
Function:
Example :
Returns : a list of lightweight Variation features.
Args : scalar in nucleotides (should default to 50)
array of accession.version numbers
Methods code
get_Ensembl_SeqFeatures_clone_webdescriptionprevnextTop
sub get_Ensembl_SeqFeatures_clone_web {
    my ($self,$glob,@acc) = @_;
    
    if (! defined $glob) {
        $self->throw("Need to call get_Ensembl_SeqFeatures_clone_web with a globbing parameter and a list of clones");
    }
    if (scalar(@acc) == 0) {
        $self->throw("Calling get_Ensembl_SeqFeatures_clone_web with empty list of clones!\n");
    }
    
    #lists of variations to be returned
my @variations; my %hash; my $string; foreach my $a (@acc) { $a =~ /(\S+)\.(\d+)/; $string .= "'$1',"; $hash{$1}=$2; } $string =~ s/,$//; my $inlist = "($string)"; # db query to return all variation information in current GoldenPath; confidence attribute is gone!!
# data are preprocessed to contain only relevent information (RefSNP.mapweight is not needed)
# denormalized SubSNP in
my $query = qq{ SELECT start, end, strand, acc, version, refsnpid, tcsid, hgbaseid FROM GPHit WHERE acc in $inlist ORDER BY acc,start }; &eprof_start('snp-sql-query'); my $sth = $self->prepare($query); my $res = $sth->execute(); &eprof_end('snp-sql-query'); my $snp; my $cl; &eprof_start('snp-sql-object'); SNP: while( (my $arr = $sth->fetchrow_arrayref()) ) { my ($begin, $end, $strand, $acc, $ver, $snpuid, $tscid, $hgbaseid ) = @{$arr}; my $acc_version="$acc.$ver"; if ( defined $snp && $snp->end+$glob >= $begin && $acc_version eq $cl) { #ignore snp within glob area
next SNP; } next SNP if $hash{$acc} != $ver; #
# prepare the output objects
#
### mega dodginess here: ideally, a Variation should be allowed to
### have several Locations. However, a Variation is-a SeqFeature,
### which can only have one. So instead, we'll return a list of
### Varations, each with a separate single location, but otherwise
### identical. That's clean-room engineering for you :-)
my $key=$snpuid.$acc; # for purpose of filtering duplicates
my %seen; # likewise
if ( ! $seen{$key} ) { ## we're grabbing all the necessary stuff from the db in one
## SQL statement for speed purposes, so we have to do some
## duplicate filtering here.
$seen{$key}++; #Variation
$snp = new Bio::EnsEMBL::ExternalData::Variation (-start => $begin, -end => $end, -strand => $strand, -original_strand => $strand, -score => 1, -source_tag => 'dbSNP', ); my $link = new Bio::Annotation::DBLink; $link->database('dbSNP'); $link->primary_id($snpuid); $link->optional_id($acc_version); #add dbXref to Variation
$snp->add_DBLink($link); if ($hgbaseid) { my $link2 = new Bio::Annotation::DBLink; $link2->database('HGBASE'); $link2->primary_id($hgbaseid); $link2->optional_id($acc_version); $snp->add_DBLink($link2); } if ($tscid) { my $link3 = new Bio::Annotation::DBLink; $link3->database('TSC-CSHL'); $link3->primary_id($tscid); $link3->optional_id($acc_version); #add dbXref to Variation
$snp->add_DBLink($link3); } $cl=$acc_version; # set for compatibility to Virtual Contigs
$snp->seqname($acc_version); #add SNP to the list
push(@variations, $snp); } # if ! $seen{$key}
} # while a row from select statement
&eprof_end('snp-sql-object'); return @variations;
}
General documentation
AUTHOR - Ewan BirneyTop
This modules is part of the Ensembl project
Email birney@ebi.ac.uk
Describe contact details here
APPENDIXTop
The rest of the documentation details each of the object methods. Internal methods are usually preceded with a _