From d1f1115b7498cb8a3383b85defc49dfacb48e4bf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20Kusalananda=20K=C3=A4h=C3=A4ri?= <ak4@sanger.ac.uk> Date: Thu, 10 Feb 2011 09:54:08 +0000 Subject: [PATCH] Remove accidentally re-added new() and ontology() methods. Make fetch_by_name() take an optional second argument (ontology name). Make fetch_by_name() also look at synonyms. --- .../Bio/EnsEMBL/DBSQL/OntologyTermAdaptor.pm | 127 ++++++------------ 1 file changed, 38 insertions(+), 89 deletions(-) diff --git a/modules/Bio/EnsEMBL/DBSQL/OntologyTermAdaptor.pm b/modules/Bio/EnsEMBL/DBSQL/OntologyTermAdaptor.pm index 180990c079..4fa253839d 100644 --- a/modules/Bio/EnsEMBL/DBSQL/OntologyTermAdaptor.pm +++ b/modules/Bio/EnsEMBL/DBSQL/OntologyTermAdaptor.pm @@ -60,82 +60,25 @@ use Bio::EnsEMBL::OntologyTerm; use base qw( Bio::EnsEMBL::DBSQL::BaseAdaptor ); -=head2 new - - Arg [1] : Bio::EnsEMBL::DBSQL::DBAdaptor - Argument required for parent class - Bio::EnsEMBL::DBSQL::BaseAdaptor. - - Arg [2] : String - The particular ontology that this ontology adaptor - deals with. - - Caller : Bio::EnsEMBL::DBSQL::GOTermAdaptor - Bio::EnsEMBL::DBSQL::SOTermAdaptor - - Description : Creates an ontology term adaptor. - - Example : - - my $ot_adaptor = - Bio::EnsEMBL::DBSQL::OntologyTermAdaptor->new( $dba, 'GO' ); - - Return type : Bio::EnsEMBL::DBSQL::OntologyTermAdaptor - -=cut - -sub new { - my ( $proto, $dba, $ontology ) = @_; - - if ( !ref($dba) || !$dba->isa('Bio::EnsEMBL::DBSQL::DBAdaptor') ) { - throw('First argument needs to be a ' - . 'Bio::EnsEMBL::DBSQL::DBAdaptor object' ); - } - - my $this = $proto->SUPER::new($dba); - - $this->{'ontology'} = $ontology; - - return $this; -} - -=head2 ontology - - Arg : None - - Description : Returns the name of the ontology which this - adaptor is used to retrieve terms for. - - Example : - - my $ontology = $ot_adaptor->ontology(); - - Return type : String - -=cut - -sub ontology { - my ($this) = @_; - return $this->{'ontology'}; -} - =head2 fetch_all_by_name - Arg [1] : String - Name of term + Arg [1] : String, name of term, or SQL pattern + Arg [2] : (optional) String, name of ontology - Description : Fetches an ontology term(s) given a name, which may - contain MySQL wildcards i.e. _ or % + Description : Fetches ontology term(s) given a name, a synonym, or a + SQL pattern like "%splice_site" Example : - my ($term) = @{$ot_adaptor->fetch_by_name('DNA_binding_site')}; + my ($term) = + @{ $ot_adaptor->fetch_by_name( 'DNA_binding_site', 'SO' ) }; - Return type : ARRAYREF of Bio::EnsEMBL::OntologyTerm Objects + Return type : listref of Bio::EnsEMBL::OntologyTerm =cut sub fetch_all_by_name { - my ( $this, $name) = @_; + my ( $this, $pattern, $ontology ) = @_; my $statement = q( SELECT term.term_id, @@ -145,43 +88,49 @@ SELECT term.term_id, term.subsets, ontology.namespace FROM ontology, - term -WHERE ontology.name = ? - AND ontology.ontology_id = term.ontology_id - AND term.name like ?); + term, + synonym +WHERE ontology.ontology_id = term.ontology_id + AND synonym.term_id = term.term_id + AND ( term.name LIKE ? OR synonym.name LIKE ? ) + ); + + if ( defined($ontology) ) { + $statement .= "AND ontology.name = ?"; + } my $sth = $this->prepare($statement); - $sth->bind_param( 1, $this->{'ontology'}, SQL_VARCHAR ); - $sth->bind_param( 2, $name, SQL_VARCHAR ); + $sth->bind_param( 1, $pattern, SQL_VARCHAR ); + $sth->bind_param( 2, $pattern, SQL_VARCHAR ); + + if ( defined($ontology) ) { + $sth->bind_param( 3, $this->{'ontology'}, SQL_VARCHAR ); + } $sth->execute(); - my ( $dbid, $accession, $term_name, $definition, $subsets, $namespace ); + my ( $dbid, $accession, $name, $definition, $subsets, $namespace ); $sth->bind_columns( - \( $dbid, $accession, $term_name, $definition, $subsets, $namespace ) ); + \( $dbid, $accession, $name, $definition, $subsets, $namespace ) ); my @terms; + while ( $sth->fetch ) { + $subsets ||= ''; - while($sth->fetch){ - - $subsets ||= ''; - push @terms, Bio::EnsEMBL::OntologyTerm->new - ( - '-dbid' => $dbid, - '-adaptor' => $this, - '-accession' => $accession, - '-namespace' => $namespace, - '-subsets' => [ split( /,/, $subsets ) ], - '-name' => $term_name, - '-definition' => $definition - ); + push @terms, + Bio::EnsEMBL::OntologyTerm->new( + '-dbid' => $dbid, + '-adaptor' => $this, + '-accession' => $accession, + '-namespace' => $namespace, + '-subsets' => [ split( /,/, $subsets ) ], + '-name' => $name, + '-definition' => $definition ); } - $sth->finish(); - return \@terms; -} ## end sub fetch_by_name +} ## end sub fetch_all_by_name =head2 fetch_by_accession -- GitLab