I get differend results on differend runs. The hierachy of features changes (not only the order) - with the same code. I'm using bioJava Live.

I do:

delete(db, "AF100928");
create(db, sequence);
retrieveSeq(db, "AF100928");

and get:

deleting AF100928
adding a sequence
1
retrieving AF100928
AF100928 contains 1 features
Source: ncbi Type: gen contains: 2
Second Level: Source: AIF Type: siRNA contains: 1
Second Level: Source: AIF 5`450 / AIF 3`682 Type: Amplicon contains: 0


OR, on some runs (at least one in 10) I get:

deleting AF100928
adding a sequence
1
retrieving AF100928
AF100928 contains 2 features
Source: 1 Type: AIF-1 contains: 0
Project : [2572/73, A]
Source: ncbi Type: gen contains: 8
Second Level: Source: AIF Type: siRNA contains: 0
Second Level: Source: AIF 5`450 / AIF 3`682 Type: Amplicon contains: 0
Second Level: Source: AIF Type: siRNA contains: 0
Second Level: Source: AIF 5`450 / AIF 3`682 Type: Amplicon contains: 0
Second Level: Source: AIF Type: siRNA contains: 0
Second Level: Source: AIF 5`450 / AIF 3`682 Type: Amplicon contains: 0
Second Level: Source: AIF Type: siRNA contains: 0
Second Level: Source: AIF 5`450 / AIF 3`682 Type: Amplicon contains: 0

Just in case, I attached the source. I can see only 4 features in Table seqfeature - but that might not be the right table to look into?
Can anybody help me with this?

Thanks
Martina

import org.biojava.bio.BioException;
import org.biojava.bio.symbol.*;
import org.biojava.bio.*;
import org.biojava.bio.seq.*;
import org.biojava.utils.*;
import org.biojava.bio.seq.DNATools;
import org.biojava.bio.seq.Sequence;
import org.biojava.bio.seq.db.biosql.BioSQLSequenceDB;
import org.biojava.utils.ChangeVetoException;
import org.biojava.bio.seq.io.SeqIOTools;
import java.io.*;
import java.sql.SQLException;
import java.util.*;

/**
 * <p>
 * Tests a connection to a BioSQLSequenceDB and a simple Sequence write, read
 * and delete
 * </p>
 */
public class bioSqlTest {
        public static void main(String[] args) {
                // url format depends on your jdbc driver
                String dbURL = "jdbc:mysql://somnus/test";
                String dbUser = "xxxxxxx";
                String dbPass = "xxxxx";
                // we will connect to a biodatabase called test
                String biodatabase = "test";
                // or create one if it doesn't exist
                boolean createIfMissing = true;
                try {
                        // load a JDBC driver
                        Class.forName("com.mysql.jdbc.Driver");
                } catch (ClassNotFoundException ex) {
                        System.out
                                        .println("Cannot find DB driver, is it 
on your classpath?");
                }
                try {
                        // create a connection
                        BioSQLSequenceDB db = new BioSQLSequenceDB(dbURL, 
dbUser, dbPass,
                                        biodatabase, createIfMissing);
                        String sequence = 
"agaggaaagggaaggaggaggtcccgaatagcggtcgccgaaatgttccggtgtggaggcctggcggcgggtgctttgaagcagaagctggtgcccttggtgcggaccgtgtgcgtccgaagcccgaggcagaggaaccggctcccaggcaacttgttccagcgatggcatgttcctctagaactccagatgacaagacaaatggctagctctggtgcatcagggggcaaaatcgataattctgtgttagtccttattgtgggcttatcaacagtaggagctggtgcctatgcctacaagactatgaaagaggacgaaaaaagatacaatgaaagaatttcagggttagggctgacaccagaacagaaacagaaaaaggccgcgttatctgcttcagaaggagaggaagttcctcaagacaaggcgccaagtcatgttcctttcctgctaattggtggaggcacagctgcttttgctgcagccagatccatccgggctcgggatcctggggccagggtactgattgtatctgaagatcctgagctgccgtacatgcgacctcctctttcaaaagaactgtggttttcagatgacccaaatgtcacaaagacactgcgattcaaacagtggaatggaaaagagagaagcatatatttccagccaccttctttctatgtctctgctcaggacctgcctcatattgagaatggtggtgtggctgtcctcactgggaagaaggtagtacagctggatgtgagagacaacatggtgaaacttaatgatggctctcaaataacctatgaaaagtgcttgattgcaacaggaggtactccaagaagtctgtctgccattgatagggctggagcagaggtgaagagtagaacaacgcttttcagaaagattggagactttagaagcttggagaagatttcacgggaagtcaaatcaattacgattatcggtgggggcttccttggtagcgaactggcctgtgctcttggcagaaaggctcgagccttgggcacagaagtgattcaactcttccccgagaaaggaaatatgggaaagatcctccccgaatacctcagcaactggaccatggaaaaagtcagacgagagggggttaaggtgatgcccaatgctattgtgcaatccgttggagtcagcagtggcaagttacttatcaagctgaaagacggcaggaaggtagaaactgaccacatagtggcagctgtgggcctggagcccaatgttgagttggccaagactggtggcctggaaatagactcagattttggtggcttccgggtaaatgcagagctacaagcacgctctaacatctgggtggcaggagatgctgcatgcttctacgatataaagttgggaaggaggcgggtagagcaccatgatcacgctgttgtgagtggaagattggctggagaaaatatgactggagctgctaagccgtactggcatcagtcaatgttctggagtgatttgggccccgatgttggctatgaagctattggtcttgtggacagtagtttgcccacagttggtgtttttgcaaaagcaactgcacaagacaaccccaaatctgccacagagcagtcaggaactggtatccgatcagagagtgagacagagtccgaggcctcagaaattactattcctcccagcaccccggcagttccacaggctcccgtccagggggaggactacggcaaaggtgtcatcttctacctcagggacaaagtggtcgtggggattgtgctatggaacatctttaaccgaatgccaatagcaaggaagatcattaaggacggtgagcagcatgaagatctcaatgaagtagccaaactattcaacattcatgaagactgaagccccacagtggaattggcaa";
                        sequence = sequence.replace(" ", "");
                        delete(db, "AF100928");
                        create(db, sequence);
                        retrieveSeq(db, "AF100928");

                }
                // } catch (ChangeVetoException ex) {
                // System.err.println("Cannot add Sequence, is the DB locked?");
                // System.exit(1);
                //
                // }

                catch (Exception ex) {
                        ex.printStackTrace();
                        System.exit(1);
                }
        }

        private static void create(BioSQLSequenceDB db, String sequence)
                        throws IllegalSymbolException, IllegalArgumentException,
                        ChangeVetoException, IndexOutOfBoundsException, 
BioException {
                Sequence seq = DNATools.createDNASequence(sequence, "AF100928");
                // add annotation
                seq.getAnnotation().setProperty("Lab-Genname", "AIF");
                seq.getAnnotation().setProperty("gi", "4323586");
                seq.getAnnotation()
                                .setProperty("genename", "apoptosis-inducing 
factor");
                seq.getAnnotation().setProperty("organism", "Homo sapiens");
                seq.getAnnotation().setProperty("protein-id", "AAD16436.1");
                // fill the template
                Feature.Template templSeq = new Feature.Template();
                templSeq.source = "ncbi";
                // templSeq.strand = StrandedFeature.UNKNOWN;
                templSeq.type = "gen";
                templSeq.location = Location.empty;
                Feature seqF = seq.createFeature(templSeq);
                // create siRNA
                StrandedFeature.Template templSt = new 
StrandedFeature.Template();
                templSt.location = new RangeLocation(201, 221);
                templSt.strand = StrandedFeature.POSITIVE;
                templSt.source = "AIF"; // =>id
                templSt.type = "siRNA"; // oder shRNA oder cellline?
                Annotation annoSiRNA = new SimpleAnnotation();
                annoSiRNA.setProperty("abbreviation", "AIF");
                annoSiRNA.setProperty("no", 3);
                templSt.annotation = annoSiRNA;
                Feature sf = seqF.createFeature(templSt);
                // create charge
                Feature.Template charge = new Feature.Template();
                charge.type = "AIF-1"; // Name, so wie er in der siRNA Liste 
steht
                charge.source = "1"; // Erste Synthese
                charge.location = Location.empty;
                Annotation chargeAnno = new SmallAnnotation();
                chargeAnno.setProperty("Batchno", "2572/73");
                chargeAnno.setProperty("Project", "A");
                charge.annotation = chargeAnno;
                Feature cf = sf.createFeature(charge);
                // create Amplicon
                StrandedFeature.Template templ = new StrandedFeature.Template();
                templ.location = new RangeLocation(72, 92);
                templ.source = "AIF 5`450 / AIF 3`682";
                templ.type = "Amplicon";
                templ.strand = StrandedFeature.UNKNOWN;
                Annotation annoAmplicon = new SimpleAnnotation();
                annoAmplicon.setProperty("Provider", "Invitrogen");
                annoAmplicon.setProperty("designed by", "Chris");
                annoAmplicon.setProperty("Stock-Box/Position", "rtS-A3/A5 + 
rtS-A3/A6");
                annoAmplicon.setProperty("Arbeitslösung", "rtArb-A1/C3");
                // templ.annotation = annoAmplicon;
                Feature af = seqF.createFeature(templ);

                System.out.println("adding a sequence");
                System.out.println(seq.countFeatures());
                db.addSequence(seq);
                // seq = null; //cannot remove unless there are no references 
to the
                // sequence
        }

        private static void delete(BioSQLSequenceDB db, String name) {

                try {
                        // delete the record

                        System.out.println("deleting " + name);
                        db.removeSequence(name);
                } catch (Exception ex) {
                        System.err.println("Cannot remove " + name + " is the 
DB locked?");
                }
        }

        private static void retrieveSeq(BioSQLSequenceDB db, String seqName)
                        throws BioException, NoSuchElementException {
                Sequence seq;
                System.out.println("retrieving " + seqName);
                seq = db.getSequence(seqName);
                // try {

                System.out.println(seq.getName() + " contains " + 
seq.countFeatures()
                                + " features");
                for (Iterator<Feature> i = seq.features(); i.hasNext();) {
                        Feature f = (Feature) i.next();
                        /* Print only 'toplevel' features  */
                        System.out.println("Source: " + f.getSource() + " Type: 
"
                                        + f.getType() + " contains: " + 
f.countFeatures());

                        Annotation anno = f.getAnnotation();

                        // print each key value pair
                        for (Iterator it = anno.keys().iterator(); 
it.hasNext();) {
                                Object key = it.next();
                                System.out.println(key + " : " + 
anno.getProperty(key));
                        }

                        for (Iterator<Feature> it = f.features(); 
it.hasNext();) {
                                Feature fs = (Feature) it.next();
                                // print second level features
                                System.out.println("Second Level: Source: " + 
fs.getSource()
                                                + " Type: " + fs.getType() + " 
contains: "
                                                + fs.countFeatures());
                        }
                }

        }
}
_______________________________________________
Biojava-l mailing list  -  Biojava-l@biojava.org
http://biojava.org/mailman/listinfo/biojava-l

Reply via email to