[Bioperl-l] Bio::Annotation issues with BioSQL
Mark Johnson
johnsonm at gmail.com
Mon Aug 18 16:53:48 EDT 2008
I'm presently refactoring an in-house protein annotation pipeline
and converting it to use BioSQL as a data store. I've noticed some
slightly screwy behavior with regard to how some of the
Bio::Annotation classes are handled:
-Instances of Bio::Annotation::SimpleValue and
Bio::Annotation::StructuredValue attached to the annotation collection
for a sequence feature (Bio::SeqFeature::Generic) are converted to
tags/values on the feature.
-Instances of Bio::AnnotationDBLink with attached comments loose the comment.
I'm storing and retrieving things thusly:
my $dbadp = Bio::DB::BioDB->new(
-database => 'biosql',
-user => $user',
-pass => $pass,
-dbname => $ora_instance,
-driver => 'Oracle'
);
my $adp = $dbadp->get_object_adaptor("Bio::SeqI");
my $seq = Bio::Seq->new(
-id => 'DEBUG001',
-accession_number => 'DBG001',
-desc => 'Debug Sequence',
-seq => 'GATTACA',
-namespace => 'DEBUG',
);
my $feature = Bio::SeqFeature::Generic->new(
-seq_id => 'DEBUG001',
-display_name => 'FEAT0001',
-primary => 'debug',
-source => 'test',
-start => 3,
-end => 5,
-strand => 1,
);
my $dblink = Bio::Annotation::DBLink->new(
-database => 'FAKE001',
-primary_id => 'FK1234567890'',
-comment => 'This is a fake comment',
);
$feature->annotation->add_Annotation('ANNO0001, $dblink);
$seq->add_SeqFeature($feature);
my $pseq = $dbadp->create_persistent($seq);
$pseq->store();
$adp->commit();
my $dbadp = Bio::DB::BioDB->new(
...
);
my $adp = $dbadp->get_object_adaptor("Bio::SeqI");
my $query = Bio::DB::Query::BioQuery->new();
$query->datacollections([
"Bio::PrimarySeqI s",
]);
$query->where(["s.display_id like DEBUG%'"]);
my $result = $adp->find_by_query($query);
while (my $seq = $result->next_object()) {
my @features = $seq->get_SeqFeatures();
foreach my $feature (@features) {
## Contents of Bio::Annotation::SimpleValue and
Bio::Annotation::StructeredValue have
## migrated to tag/value pairs on $feature and are missing
from $annotation_collection.
##
## Comments have gone missing from Bio::Annotation::DBLink,
but DBLinks are otherwise intact and present.
my $annotation_collection = $feature->annotation();
...
...
}
}
Is bioperl-db / BioSQL trying to tell me that I shouldn't be using
Bio::Annotation::SimpleValue and Bio::Annotation::StructuredValue? Is
there even a place in the BioSQL schema for a comment to be attached
to a DBLink?
More information about the Bioperl-l
mailing list