Bio::EnsEMBL::ExternalData::SNPSQL WebAdaptor
SummaryIncluded librariesPackage variablesSynopsisDescriptionGeneral documentationMethods
WebCvsRaw content
Bio::EnsEMBL::ExternalData::SNPSQL::WebAdaptor - Web accelerated (light objects) for SNPs
Package variables
No package variables defined.
Included modules
Bio::EnsEMBL::Utils::Eprof qw ( eprof_start eprof_end )
Give standard usage here
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 description
get_Ensembl_SeqFeatures_clone_webcode    nextTop
 Title   : get_Ensembl_SeqFeatures_clone_web
Usage :
Example :
Returns : a list of lightweight Variation features.
Args : scalar in nucleotides (should default to 50)
array of accession.version numbers
Methods code
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
Describe contact details here
The rest of the documentation details each of the object methods. Internal methods are usually preceded with a _