Hi, After doing some tests with the biojava - biosql code I think there are 2 (little) bugs in there:
- when persisting a Sequence which contains a Feature with BetweenLocation this Location gets converted to a RangeLocation upon retrieval - when persisting a Sequence which contains (a) Feature(s) in 2 different biodatabases an exception is thrown in the ontology code part of biojava You can find an example for both cases below Environment: biojava.jar build from cvs, hsqldb database + biosql schema, jdk1.4 If someone with knowledge of the biosql persistence code finds some time to have a look... Dont think it's very hard to fix Ciao Frederik ######test code################################################################## import java.util.*; import org.biojava.bio.*; import org.biojava.bio.seq.*; import org.biojava.bio.seq.db.biosql.*; import org.biojava.bio.seq.impl.*; import org.biojava.bio.symbol.*; public class BioSqlTest { String driver = "org.hsqldb.jdbcDriver" ; String user = "sa"; String pass = ""; String url = "jdbc:hsqldb:file:./database/biosqldb" ; public BioSqlTest() { } /** * demonstrates the switch from between to range location after persistence code */ public void generateFeaturePersistenceProblem() throws Exception { BioSQLSequenceDB db1 = new BioSQLSequenceDB(driver, url, user, pass , "testbiosqldb_1", true); db1.addSequence(getSequence()) ; Sequence seq = db1.getSequence("test_seq") ; for (Iterator iter = seq.features(); iter.hasNext();) { StrandedFeature f = (StrandedFeature) iter.next(); Location loc = f.getLocation() ; /* * ERROR: Location is now a RangeLocation and not a BetweenLocation ! */ if(loc instanceof BetweenLocation) { // ok System.out.println("[feature] location is still a BetweenLocation: " + loc.getClass().getName()); } else { // problem System.out.println("[feature] location is now an instance of: " + loc.getClass().getName()); } } } public void generateOntolgyPersistenceProblem() throws Exception { BioSQLSequenceDB db2 = new BioSQLSequenceDB(driver, url, user, pass , "testbiosqldb_2", true); /* EXCEPTION: the second addSequence will cause a exception in the ontology persistence code Caused by: java.sql.SQLException: Failed to persist term: ATYPE from ontology: ontology: __biojava_guano with error: -9 : 23000 at org.biojava.bio.seq.db.biosql.OntologySQL.persistTerm(OntologySQL.java:5 06) at org.biojava.bio.seq.db.biosql.OntologySQL.persistTerm(OntologySQL.java:4 68) ... 12 more Caused by: java.sql.SQLException: Violation of unique index: SYS_IDX_SYS_CT_9_10 in statement [insert into term (name, definition, ontology_id) values (?, ?, ?)] at org.hsqldb.jdbcDriver.throwError(Unknown Source) at org.hsqldb.jdbcPreparedStatement.executeUpdate(Unknown Source) at org.apache.commons.dbcp.DelegatingPreparedStatement.executeUpdate(Delega tingPreparedStatement.java:233) at org.apache.commons.dbcp.DelegatingPreparedStatement.executeUpdate(Delega tingPreparedStatement.java:233) at org.biojava.bio.seq.db.biosql.OntologySQL.persistTerm(OntologySQL.java:4 98) ... 13 more */ db2.addSequence(getSequence()) ; } public static Sequence getSequence() throws Exception { SymbolList sl = DNATools.createDNA("ACTGGTGTACCCCAATGGGAATATC") ; Sequence sequence = new SimpleSequence(sl, null, "test_seq", null); sequence.createFeature(getFeature()); return sequence ; } private static StrandedFeature.Template getFeature() throws Exception { SimpleAnnotation annotation = new SimpleAnnotation(); annotation.setProperty("Comment", "comment line"); StrandedFeature.Template templ = new StrandedFeature.Template(); templ.annotation = annotation; templ.location = new BetweenLocation(new RangeLocation(3,4)); templ.strand = StrandedFeature.POSITIVE; templ.type = "ATYPE"; templ.source = "ASRC"; return templ ; } public static void main(String[] args) { BioSqlTest test = new BioSqlTest() ; try { test.generateFeaturePersistenceProblem() ; } catch(Throwable t) { t.printStackTrace(); } try { //test.generateOntolgyPersistenceProblem() ; } catch(Throwable t) { t.printStackTrace(); } finally { System.exit(0); } } } --- Outgoing mail is certified Virus Free. Checked by AVG anti-virus system (http://www.grisoft.com). Version: 6.0.569 / Virus Database: 360 - Release Date: 26/01/2004 _______________________________________________ Biojava-l mailing list - [EMAIL PROTECTED] http://biojava.org/mailman/listinfo/biojava-l