[BioSQL-l] Adding qualifers to features on a stored sequence
Tim Henderson
tjh@alodar.com
Sat, 19 Oct 2002 23:20:53 -0700
I've got a sequence stored in a mysql based BioSQL database, and I want
to add a qualifier to one of the features on it.
By looking at the code in bioperl-db/t/seqfeature.t I was able to figure
out how to add a new feature to an existing sequence; however, when I
tried to do a similar thing to add a new qualifier to an existing
feature, I got an error. What I tried was this:
# Assume these exist
my $pseq; # Sequence of interest, fetched from the database.
my $cds; # CDS feature on $pseq, got by searching
# $pseq->top_SeqFeatures().
$cds->add_tag_value('foo', 'This is an added qualifier');
$cds->store;
I've included the debug output from my script below. The problem seems
to be that insert statements are being generated for feature qualifiers
that are already in the database. The new qualifier does make it into
the database, but the errors leave the feature in an inconsistent state.
When I look in the database, its row in the seqfeature table has its
ontology_term_id field set to NULL.
I'm using the main trunk of bioperl-db. If this is one of those things
that is broken for the time being, I'll jury rig something to do what I
want by talking directly to the underlying tables. I just wanted to use
the BioPerl API if I could.
-- Tim
attempting to load adaptor class for Bio::Location::Split
attempting to load module Bio::DB::BioSQL::SplitAdaptor
attempting to load adaptor class for Bio::Location::Atomic
attempting to load module Bio::DB::BioSQL::AtomicAdaptor
attempting to load adaptor class for Bio::Root::Root
attempting to load module Bio::DB::BioSQL::RootAdaptor
attempting to load adaptor class for Bio::Root::RootI
attempting to load module Bio::DB::BioSQL::RootIAdaptor
attempting to load module Bio::DB::BioSQL::RootAdaptor
attempting to load adaptor class for Bio::Ontology::Term
attempting to load module Bio::DB::BioSQL::TermAdaptor
attempting to load adaptor class for Bio::Ontology::Term
attempting to load module Bio::DB::BioSQL::TermAdaptor
attempting to load adaptor class for Bio::Ontology::Term
attempting to load module Bio::DB::BioSQL::TermAdaptor
attempting to load adaptor class for Bio::Ontology::Term
attempting to load module Bio::DB::BioSQL::TermAdaptor
preparing UPDATE statement: UPDATE seqfeature SET seqfeature_rank = ?,
bioentry_id = ?, ontology_term_id = ?, seqfeature_source_id = ?
WHERE seqfeature_id = ?
binding column 1 to "6" (rank)
binding column 2 to "1" (FK to bioentry)
binding column 3 to "" (FK to ontology_term)
binding column 4 to "" (FK to ontology_term)
preparing UPDATE statement: UPDATE seqfeature_location SET seq_start =
?, seq_end = ?, seq_strand = ?, location_rank = ?, seqfeature_id = ?
WHERE seqfeature_location_id = ?
binding column 1 to "796" (start)
binding column 2 to "981" (end)
binding column 3 to "1" (strand)
binding column 4 to "1" (rank)
binding column 5 to "6" (FK to seqfeature)
binding column 1 to "1589" (start)
binding column 2 to "1634" (end)
binding column 3 to "1" (strand)
binding column 4 to "2" (rank)
binding column 5 to "6" (FK to seqfeature)
binding column 1 to "1822" (start)
binding column 2 to "1869" (end)
binding column 3 to "1" (strand)
binding column 4 to "3" (rank)
binding column 5 to "6" (FK to seqfeature)
binding column 1 to "2171" (start)
binding column 2 to "2592" (end)
binding column 3 to "1" (strand)
binding column 4 to "4" (rank)
binding column 5 to "6" (FK to seqfeature)
attempting to load adaptor class for Bio::Annotation::Collection
attempting to load module Bio::DB::BioSQL::CollectionAdaptor
attempting to load adaptor class for Bio::Annotation::TypeManager
attempting to load module Bio::DB::BioSQL::TypeManagerAdaptor
no adaptor found for class Bio::Annotation::TypeManager
attempting to load adaptor class for
Bio::DB::Persistent::PersistentObjectFactory
attempting to load module
Bio::DB::BioSQL::PersistentObjectFactoryAdaptor
attempting to load adaptor class for Bio::Factory::ObjectFactoryI
attempting to load module Bio::DB::BioSQL::ObjectFactoryIAdaptor
attempting to load module Bio::DB::BioSQL::ObjectFactoryAdaptor
no adaptor found for class Bio::DB::Persistent::PersistentObjectFactory
attempting to load driver for adaptor class
Bio::DB::BioSQL::AnnotationCollectionAdaptor
Using Bio::DB::BioSQL::mysql::AnnotationCollectionAdaptorDriver as
driver peer for Bio::DB::BioSQL::AnnotationCollectionAdaptor
attempting to load adaptor class for Bio::Ontology::Term
attempting to load module Bio::DB::BioSQL::TermAdaptor
preparing UK select statement: SELECT ontology_term.ontology_term_id,
ontology_term.term_identifier, ontology_term.term_name,
ontology_term.term_definition, ontology_term.category_id FROM
ontology_term WHERE term_name = ?
binding UK column 1 to "Annotation Tags" (name)
preparing UK select statement: SELECT ontology_term.ontology_term_id,
ontology_term.term_name, NULL, ontology_term.category_id FROM
ontology_term WHERE category_id = ? AND term_name = ?
binding UK column 1 to "5" (category)
binding UK column 2 to "db_xref" (tagname)
binding UK column 1 to "5" (category)
binding UK column 2 to "codon_start" (tagname)
binding UK column 1 to "5" (category)
binding UK column 2 to "protein_id" (tagname)
binding UK column 1 to "5" (category)
binding UK column 2 to "foo" (tagname)
preparing INSERT statement: INSERT INTO ontology_term (term_name,
category_id) VALUES (?, ?)
binding column 1 to "foo" (tagname)
binding column 2 to "5" (FK to Bio::Ontology::Term)
binding UK column 1 to "5" (category)
binding UK column 2 to "translation" (tagname)
binding UK column 1 to "5" (category)
binding UK column 2 to "product" (tagname)
preparing INSERT statement: INSERT INTO seqfeature_qualifier_value
(seqfeature_id, ontology_term_id, qualifier_value, qualifier_rank)
VALUES (?, ?, ?, ?)
binding column 1 to "6" (FK to Bio::SeqFeature::Generic)
binding column 2 to "6" (FK to Bio::Annotation::SimpleValue)
binding column 3 to "GI:37210" (value)
binding column 4 to "1" (rank)
DBD::mysql::st execute failed: Duplicate entry '6-6-1' for key 1 at
/usr/people/sealsa/bioperl-dev/lib/perl5/site_perl/Bio/DB/BioSQL/BasePersistenceAdaptor.pm
line 366.
binding column 1 to "6" (FK to Bio::SeqFeature::Generic)
binding column 2 to "6" (FK to Bio::Annotation::SimpleValue)
binding column 3 to "SWISS-PROT:P01375" (value)
binding column 4 to "2" (rank)
DBD::mysql::st execute failed: Duplicate entry '6-6-2' for key 1 at
/usr/people/sealsa/bioperl-dev/lib/perl5/site_perl/Bio/DB/BioSQL/BasePersistenceAdaptor.pm
line 366.
binding column 1 to "6" (FK to Bio::SeqFeature::Generic)
binding column 2 to "17" (FK to Bio::Annotation::SimpleValue)
binding column 3 to "1" (value)
binding column 4 to "1" (rank)
DBD::mysql::st execute failed: Duplicate entry '6-17-1' for key 1 at
/usr/people/sealsa/bioperl-dev/lib/perl5/site_perl/Bio/DB/BioSQL/BasePersistenceAdaptor.pm
line 366.
binding column 1 to "6" (FK to Bio::SeqFeature::Generic)
binding column 2 to "18" (FK to Bio::Annotation::SimpleValue)
binding column 3 to "CAA26669.1" (value)
binding column 4 to "1" (rank)
DBD::mysql::st execute failed: Duplicate entry '6-18-1' for key 1 at
/usr/people/sealsa/bioperl-dev/lib/perl5/site_perl/Bio/DB/BioSQL/BasePersistenceAdaptor.pm
line 366.
binding UK column 1 to "5" (category)
binding UK column 2 to "foo" (tagname)
binding column 1 to "6" (FK to Bio::SeqFeature::Generic)
binding column 2 to "27" (FK to Bio::Annotation::SimpleValue)
binding column 3 to "This is an added qualifier" (value)
binding column 4 to "1" (rank)
binding column 1 to "6" (FK to Bio::SeqFeature::Generic)
binding column 2 to "20" (FK to Bio::Annotation::SimpleValue)
binding column 3 to
"MSTESMIRDVELAEEALPKKTGGPQGSRRCLFLSLFSFLIVAGATTLFCLLHFGVIGPQREEFPRDLSLISPLAQAVRSSSRTPSDKPVAHVVANPQAEGQLQWLNRRANALLANGVELRDNQLVVPSEGLYLIYSQVLFKGQGCPSTHVLLTHTISRIAVSYQTKVNLLSAIKSPCQRETPEGAEAKPWYEPIYLGGVFQLEKGDRLSAEINRPDYLDFAESGQVYFGIIAL"
(value)
binding column 4 to "1" (rank)
DBD::mysql::st execute failed: Duplicate entry '6-20-1' for key 1 at
/usr/people/sealsa/bioperl-dev/lib/perl5/site_perl/Bio/DB/BioSQL/BasePersistenceAdaptor.pm
line 366.
binding column 1 to "6" (FK to Bio::SeqFeature::Generic)
binding column 2 to "19" (FK to Bio::Annotation::SimpleValue)
binding column 3 to "TNF-alpha" (value)
binding column 4 to "1" (rank)
DBD::mysql::st execute failed: Duplicate entry '6-19-1' for key 1 at
/usr/people/sealsa/bioperl-dev/lib/perl5/site_perl/Bio/DB/BioSQL/BasePersistenceAdaptor.pm
line 366.
------------- EXCEPTION -------------
MSG: failed to store one or more child objects for an instance of class
Bio::SeqFeature::Generic (PK=6)
STACK Bio::Root::RootI::warn
/usr/people/sealsa/bioperl-dev/lib/perl5/site_perl/Bio/Root/RootI.pm:182
STACK Bio::DB::BioSQL::BasePersistenceAdaptor::store
/usr/people/sealsa/bioperl-dev/lib/perl5/site_perl/Bio/DB/BioSQL/BasePersistenceAdaptor.pm:237
STACK Bio::DB::Persistent::PersistentObject::store
/usr/people/sealsa/bioperl-dev/lib/perl5/site_perl/Bio/DB/Persistent/PersistentObject.pm:266
STACK (eval) ./add_feat_qual.pl:101
STACK toplevel ./add_feat_qual.pl:100
--------------------------------------