[Bioperl-l] Bio::Ontology help solicited
Govind Chandra
govind.chandra at bbsrc.ac.uk
Thu Jun 19 15:54:20 UTC 2008
Hi Hilmar,
Below is an extract from perldoc Bio::Ontology::Ontology from which I
_wrongly_ concluded that -identifier and -name do the same thing.
find_terms
Title : find_terms
Usage : ($term) = $oe->find_terms(-identifier => "SO:0000263");
Function: Find term instances matching queries for their attributes.
An implementation may not support querying for arbitrary
attributes, but can generally be expected to accept
-identifier and -name as queries. If both are provided,
they are implicitly intersected.
Example :
Returns : an array of zero or more Bio::Ontology::TermI objects
Args : Named parameters. The following parameters should be recognized
by any implementations:
-identifier query by the given identifier
-name query by the given name
I had been messing with this script for a few hours before posting for
help and had tried various combinations of -identifier and -name. But
neither -identifier => "GO:0000072" nor -name => "M phase specific
microtubule process" work. I know that the GOid exists because I can
find it in the obo file. There is something more fundamentally wrong in
my script than just the syntax. Like you suggested, below, I
get_all_terms() but the list @allterms is empty.
### code begins ###
use strict;
use Bio::OntologyIO;
my $file='gene_ontology.1_2.obo';
my $parser = Bio::OntologyIO->new(
-format => "obo",
-file => $file
);
my $ontology = $parser->next_ontology();
print(ref($ontology), "\n");
my @allterms = $ontology->get_all_terms();
print(scalar(@allterms), "\n");
my $limiter;
foreach my $term (@allterms) {
print($term->name(),"\n");
print($term->definition(),"\n");
if($limiter++ > 30) {last;}
}
exit;
### code ends ###
### output begins ###
Bio::Ontology::Ontology
0
### output ends ###
Given that the script works with the "go" format files (except
process.ontology in which case it complains and exits) I suspect the obo
file but am surprised that Bio::OntologyIO->next_ontology() does not
complain. Will it be asking for too much to request you to get the obo
file I am trying to parse from
ftp.geneontology.org/pub/go/ontology/obo_format_1_2/gene_ontology.1_2.obo
and see if it works for you?
Thanks
Govind
On Thu, 2008-06-19 at 10:50 -0400, Hilmar Lapp wrote:
> On Jun 19, 2008, at 10:27 AM, Govind Chandra wrote:
>
> > I changed the line below
> >
> > my ($term)=$ontology->find_terms(-name => "GO:0000072");
> >
> > to
> >
> > my ($term)=$ontology->find_terms(-identifier => "GO:0000072");
>
> That's odd. Did you convince yourself that a term with this identifier
> is indeed in the ontology? If you iterate over all terms (using e.g.
> $ontology->get_all_terms()), is there a term with this identifier?
>
> E.g.: print join("\n", map { $_->identifier; }
> (grep { $_->identifier =~ /0000072/; }
> $ontology->get_all_terms())),"\n";
>
> Does this print anything?
>
> > but it does not make any difference. From perldoc I gathered that -
> > name
> > and -identifier should do the same thing anyway.
>
>
> I'm not sure where you gathered that from. Could you point me to the
> location that says that?
>
> -hilmar
More information about the Bioperl-l
mailing list