Bio::EnsEMBL::Variation::DBSQL PopulationAdaptor
SummaryIncluded librariesPackage variablesSynopsisDescriptionGeneral documentationMethods
Toolbar
WebCvsRaw content
Summary
Bio::EnsEMBL::Variation::DBSQL::PopulationAdaptor
Package variables
No package variables defined.
Included modules
Bio::EnsEMBL::Utils::Exception qw ( throw warning )
Bio::EnsEMBL::Variation::DBSQL::SampleAdaptor
Bio::EnsEMBL::Variation::Population
Inherit
Bio::EnsEMBL::Variation::DBSQL::SampleAdaptor
Synopsis
  $db = Bio::EnsEMBL::Variation::DBSQL::DBAdaptor->new(...);
$pa = $db->get_PopulationAdaptor(); # Get a Population by its internal identifier $pop = $pa->fetch_by_dbID(145); # fetch a population by its name $pop = $pa->fetch_by_name('PACIFIC'); # fetch all sub populations of a population foreach $sub_pop (@{$pa->fetch_all_by_super_Population($pop)}) { print $sub_pop->name(), " is a sub population of ", $pop->name(), "\n"; } # fetch all super populations foreach $super_pop (@{$pa->fetch_all_by_sub_Population($pop)}) { print $pop->name(), " is a sub population of ", $super_pop->name(), "\n"; }
Description
This adaptor provides database connectivity for Population objects.
Populations may be retrieved from the Ensembl variation database by
several means using this module.
Methods
_columns
No description
Code
_default_where_clause
No description
Code
_objs_from_sth
No description
Code
_tables{return
No description
Code
fetch_all_by_IndividualDescriptionCode
fetch_all_by_sub_PopulationDescriptionCode
fetch_all_by_super_PopulationDescriptionCode
fetch_by_nameDescriptionCode
fetch_default_LDPopulationDescriptionCode
fetch_population_by_synonymDescriptionCode
fetch_tagged_PopulationDescriptionCode
Methods description
fetch_all_by_Individualcode    nextTop
  Arg [1]     : Bio::EnsEMBL::Variation::Individual $ind
Example : my $ind = $ind_adaptor->fetch_by_name('NA12004');
foreach my $pop (@{$pop_adaptor->fetch_all_by_Individual($ind)}){
print $pop->name,"\n";
}
Description : Retrieves all populations from a specified individual
ReturnType : reference to list of Bio::EnsEMBL::Variation::Population objects
Exceptions : throw if incorrect argument is passed
warning if provided individual does not have a dbID
Caller : general
Status : At Risk
fetch_all_by_sub_PopulationcodeprevnextTop
  Arg [1]    : Bio::EnsEMBL::Variation::Population $pop
Example : foreach $super_pop (@{$pa->fetch_all_by_sub_Population($pop)}) {
print $super_pop->name(), "\n";
}
Description: Retrieves all super populations for a provided population
Returntype : Bio::EnsEMBL::Population
Exceptions : throw on bad argument
Caller : general
Status : At Risk
fetch_all_by_super_PopulationcodeprevnextTop
  Arg [1]    : Bio::EnsEMBL::Variation::Population $pop
Example : foreach $sub_pop (@{$pa->fetch_all_by_super_Population($pop)}) {
print $sub_pop->name(), "\n";
}
Description: Retrieves all sub populations of a provided population.
Returntype : Bio::EnsEMBL::Population
Exceptions : throw on bad argument
Caller : general
Status : At Risk
fetch_by_namecodeprevnextTop
  Arg [1]    : string $name
Example : $pop = $pop_adaptor->fetch_by_name('NUSPAE:Singapore_HDL');
Description: Retrieves a population object via its name
Returntype : Bio::EnsEMBL::Variation::Population
Exceptions : throw if name argument is not defined
Caller : general
Status : At Risk
fetch_default_LDPopulationcodeprevnextTop
    Args        : none
Example : $population = $pop_adaptor->fetch_default_LDPopulation();
Description : Obtains the population it is used as a default in the LD display of the pairwise LD data
ReturnType : Bio::EnsEMBL::Variation::Population
Exceptions : none
Caller : general
Status : At Risk
fetch_population_by_synonymcodeprevnextTop
    Arg [1]              : $population_synonym
Example : my $pop = $pop_adaptor->fetch_population_by_synonym($population_synonym,$source);
Description : Retrieves populations for the synonym given in the source. If no source is provided, retrieves all the synonyms
Returntype : list of Bio::EnsEMBL::Variation::Population
Exceptions : none
Caller : general
Status : At Risk
fetch_tagged_PopulationcodeprevnextTop
  Arg [1]     : Bio::EnsEMBL::Variation::VariationFeature $vf
Example : my $vf = $vf_adaptor->fetch_by_name('rs205621');
my $populations_tagged = $vf->is_tagged();
foreach my $pop (@{$vf_adaptor->is_tagged}){
print $pop->name," has been tagged using a 0.99 r2 criteria\n";
}
Description : Retrieves all populations from a specified variation feature that have been tagged
ReturnType : reference to list of Bio::EnsEMBL::Variation::Population objects
Exceptions : throw if incorrect argument is passed
warning if provided variation feature does not have a dbID
Caller : general
Status : At Risk
Methods code
_columnsdescriptionprevnextTop
sub _columns {
    return qw(s.sample_id s.name s.size s.description);
}
_default_where_clausedescriptionprevnextTop
sub _default_where_clause {
    return 's.sample_id = p.sample_id';
}

1;
}
_objs_from_sthdescriptionprevnextTop
sub _objs_from_sth {
  my $self = shift;
  my $sth  = shift;

  my @pops;

  my ($pop_id, $name, $size, $desc);

  $sth->bind_columns(\$pop_id,\$ name,\$ size,\$ desc);

  while($sth->fetch()) {
    push @pops, Bio::EnsEMBL::Variation::Population->new
      (-dbID => $pop_id,
       -ADAPTOR => $self,
       -NAME => $name,
       -DESCRIPTION => $desc,
       -SIZE => $size);
  }

  return\@ pops;
}
_tables{returndescriptionprevnextTop
sub _tables{return {
(['population','p'],		    ['sample','s']);
}
fetch_all_by_IndividualdescriptionprevnextTop
sub fetch_all_by_Individual {
    my $self = shift;
    my $ind = shift;

    if(!ref($ind) || !$ind->isa('Bio::EnsEMBL::Variation::Individual')) {
	throw("Bio::EnsEMBL::Variation::Individual arg expected");
    }
    
    if(!$ind->dbID()) {
	warning("Individual does not have dbID, cannot retrieve Individuals");
	return [];
  } 

    my $sth = $self->prepare(qq{SELECT p.sample_id, s.name, s.size, s.description
				FROM population p, individual_population ip, sample s
				WHERE s.sample_id = ip.population_sample_id
				AND s.sample_id = p.sample_id
                                AND ip.individual_sample_id = ?
			    });
    $sth->bind_param(1,$ind->dbID,SQL_INTEGER);
    $sth->execute();

    my $results = $self->_objs_from_sth($sth);

    $sth->finish();

    return $results;
}
fetch_all_by_sub_PopulationdescriptionprevnextTop
sub fetch_all_by_sub_Population {
  my $self = shift;
  my $pop  = shift;

  if(!ref($pop) || !$pop->isa('Bio::EnsEMBL::Variation::Population')) {
    throw('Bio::EnsEMBL::Variation::Population argument expected');
  }

  if(!$pop->dbID()) {
    warning("Cannot retrieve super populations for population without dbID");
    return [];
  }

  my $sth = $self->prepare(q{SELECT p.sample_id, s.name, s.size,
s.description
FROM population p, population_structure ps, sample s
WHERE p.sample_id = ps.super_population_sample_id
AND ps.sub_population_sample_id = ?
AND p.sample_id = s.sample_id}
); $sth->bind_param(1,$pop->dbID,SQL_INTEGER); $sth->execute(); my $result = $self->_objs_from_sth($sth); $sth->finish(); return $result;
}
fetch_all_by_super_PopulationdescriptionprevnextTop
sub fetch_all_by_super_Population {
  my $self = shift;
  my $pop  = shift;

  if(!ref($pop) || !$pop->isa('Bio::EnsEMBL::Variation::Population')) {
    throw('Bio::EnsEMBL::Variation::Population argument expected');
  }

  if(!$pop->dbID()) {
    warning("Cannot retrieve sub populations for population without dbID");
    return [];
  }

  my $sth = $self->prepare(q{SELECT p.sample_id, s.name, s.size,
s.description
FROM population p, population_structure ps, sample s
WHERE p.sample_id = ps.sub_population_sample_id
AND ps.super_population_sample_id = ?
AND p.sample_id = s.sample_id}
); $sth->bind_param(1,$pop->dbID,SQL_INTEGER); $sth->execute(); my $result = $self->_objs_from_sth($sth); $sth->finish(); return $result;
}
fetch_by_namedescriptionprevnextTop
sub fetch_by_name {
  my $self = shift;
  my $name = shift;

  throw('name argument expected') if(!defined($name));

  my $sth = $self->prepare(q{SELECT p.sample_id, s.name, s.size, s.description
FROM population p, sample s
WHERE s.name = ?
AND s.sample_id = p.sample_id}
); $sth->bind_param(1,$name,SQL_VARCHAR); $sth->execute(); my $result = $self->_objs_from_sth($sth); $sth->finish(); return undef if(!@$result); return $result->[0];
}
fetch_default_LDPopulationdescriptionprevnextTop
sub fetch_default_LDPopulation {
    my $self = shift;
    my $population_id;
    
    my $sth = $self->prepare(qq{SELECT meta_value from meta where meta_key = ?});

    $sth->bind_param(1,'pairwise_ld.default_population',SQL_VARCHAR);
    $sth->execute();
    $sth->bind_columns(\$population_id);
    $sth->fetch();
    $sth->finish;

    if (defined $population_id){
	return $self->fetch_by_dbID($population_id);
    }
    else{
	return undef;
    }
}
fetch_population_by_synonymdescriptionprevnextTop
sub fetch_population_by_synonym {
    my $self = shift;
    my $synonym_name = shift;
    my $source = shift;
    my $pops;
    my $pop;
    #return all sample_id from the database
my $samples = $self->SUPER::fetch_sample_by_synonym($synonym_name, $source); foreach my $sample_id (@{$samples}){ #get the ones that are individuals
$pop = $self->fetch_by_dbID($sample_id); push @{$pops}, $pop if (defined $pop); } return $pops;
}
fetch_tagged_PopulationdescriptionprevnextTop
sub fetch_tagged_Population {
    my $self = shift;
    my $variation_feature = shift;

    if(!ref($variation_feature) || !$variation_feature->isa('Bio::EnsEMBL::Variation::VariationFeature')) {
	throw("Bio::EnsEMBL::Variation::VariationFeature arg expected");
    }
    
    if(!$variation_feature->dbID()) {
	warning("Variation feature does not have dbID, cannot retrieve tagged populations");
	return [];
  } 

    my $sth = $self->prepare(qq{SELECT p.sample_id, s.name, s.size, s.description
				FROM population p, tagged_variation_feature tvf, sample s
				WHERE p.sample_id = tvf.sample_id
				AND   s.sample_id = p.sample_id
                                AND   tvf.variation_feature_id = ?
			    });
    $sth->bind_param(1,$variation_feature->dbID,SQL_INTEGER);
    $sth->execute();
    my $results = $self->_objs_from_sth($sth);

    $sth->finish();

    return $results;
}

#
# private method, creates population objects from an executed statement handle
# ordering of columns must be consistant
#
}
General documentation
AUTHOR - Graham McVickerTop
CONTACTTop
Post questions to the Ensembl development list ensembl-dev@ebi.ac.uk