[Bioperl-l] Building biosql database errors

Hilmar Lapp hlapp at gnf.org
Wed Feb 11 14:15:38 EST 2004

This could have multiple reasons. Generally speaking, in an ideal world 
the unique key constraint is on the tuple (name, ontology), and given 
the error message this seems to be the constraint you're violating, 

	- you may have loaded GO before and did not specify --lookup or 
similar options that let the script deal with pre-existing content to 
be updated according to one of different policies (check out the 
load_ontology.pl POD for a more elaborate discussion of update options)

	- the term that appears to violate the constraint exists also as an 
obsoleted term with the same name, but a different GO identifier, and 
you did not choose to ignore and delete obsoleted terms

The latter is particularly nasty and a reflection of the fact that the 
world we live in is not ideal. If you are going to always purge 
existing terms from the database and then reload GO then you can keep 
the unique key constraint the way it is, and just need to make sure 
that this strategy is reflected in the options (--noobsolete). The 
downside of doing so (and of using --delobsolete, too) is that deleting 
the terms will remove their associations to bioentries and features as 
well, i.e., if any bioentry or feature was annotated with either any GO 
term (if reload from scratch) or a GO term that is being obsoleted (if 
using --delobsolete) then obviously you lose that annotation when 
deleting the term(s). If you'll reload those associations right 
afterwards, then there's no problem with this.

Alternatively, if you want to keep GO in the database and then update 
it with a new release, then apart from choosing what to do with terms 
that are obsolete (see the load_ontology.pl POD for the choices you 
have) you need to change the unique key constraint to the tuple of 
(name, ontology, is_obsolete). This should be a commented-out option in 
the schema DDL file.



On Tuesday, February 10, 2004, at 09:02  AM, Sean Davis wrote:

> I am trying to build a biosql database on a mysql database.  I have 
> mysql
> and biosql schema running and can successfully load some data, but for 
> a
> proportion of the data when loading ontology or locuslink, I get the
> following (many times).  Am I doing something wrong, or is this to be
> expected?  I would just push on with --safe (as given below), but 
> clearly
> part of the data is not loaded correctly after looking at the result.  
> I
> have the same problem when loading locuslink.  Any input is 
> appreciated.
> Thanks,
> Sean
> % perl ../../../bioperl-db/scripts/biosql/load_ontology.pl --safe 
> --fmtargs
> "-defs_file,GO.defs" --dbuser sdavis --dbpass mic2222 --namespace "Gene
> Ontology" --format goflat component.ontology.2004-02-01
> process.ontology.2004-02-01 function.ontology.2004-02-01
> -------------------- WARNING ---------------------
> MSG: insert in Bio::DB::BioSQL::TermAdaptor (driver) failed, values 
> were
> ("GO:0042597","periplasmic space","The region between the inner
> (cytoplasmic) and outer membrane (Gram-negative bacteria) or inner 
> membrane
> and cell wall (fungi).","") FKs (84)
> Duplicate entry 'periplasmic space-84' for key 2
> ---------------------------------------------------
> Could not store term relationship (periplasmic space (sensu
> Fungi),IS_A,periplasmic space):
> ------------- EXCEPTION  -------------
> MSG: create: object (Bio::Ontology::GOterm) failed to insert or to be 
> found
> by unique key
> STACK Bio::DB::BioSQL::BasePersistenceAdaptor::create
> /Library/Perl/5.8.1/Bio/DB/BioSQL/BasePersistenceAdaptor.pm:207
> STACK Bio::DB::Persistent::PersistentObject::create
> /Library/Perl/5.8.1/Bio/DB/Persistent/PersistentObject.pm:243
> STACK Bio::DB::BioSQL::BasePersistenceAdaptor::create
> /Library/Perl/5.8.1/Bio/DB/BioSQL/BasePersistenceAdaptor.pm:170
> STACK Bio::DB::Persistent::PersistentObject::create
> /Library/Perl/5.8.1/Bio/DB/Persistent/PersistentObject.pm:243
> STACK (eval) ../../../bioperl-db/scripts/biosql/load_ontology.pl:548
> STACK toplevel ../../../bioperl-db/scripts/biosql/load_ontology.pl:547
> --------------------------------------
> _______________________________________________
> Bioperl-l mailing list
> Bioperl-l at portal.open-bio.org
> http://portal.open-bio.org/mailman/listinfo/bioperl-l
Hilmar Lapp                            email: lapp at gnf.org
GNF, San Diego, Ca. 92121              phone: +1-858-812-1757

More information about the Bioperl-l mailing list