Difference between revisions of "PSU Presentation"
(→GeneDB) |
(→Technical - Transactions) |
||
Line 43: | Line 43: | ||
* Transactions are fully supported | * Transactions are fully supported | ||
− | |||
=====Problems 1, 2, & 3===== | =====Problems 1, 2, & 3===== |
Revision as of 16:11, 7 February 2007
This Wiki page is an edited version of Chinmay's presentation.
Contents
Sanger Pathogen Sequencing Unit (PSU)
- GeneDB is the organism data and annotation database for the Pathogen Sequencing Unit (PSU) at the Sanger Institute, UK
- Contains 37 organisms, which is expected to grow to 62
- Artemis is an annotation/DNA graphical interface
- PSU is currently migrating to chado schema
- We've implemented a common interface with the two leading open source frameworks: Hibernate and iBatis
Technical - Connections
Connections for the Hibernate engine are configured in the Spring configuration file <xml> <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="org.postgresql.Driver" /> <property name="url" value="jdbc:postgresql://holly.sanger.ac.uk:5432/chado" /> <property name="username" value="DELIBERATELY_BOGUS_NAME"/> <property name="password" value="WIBBLE" />
</bean> </xml>
- Uses a connection pool
- Connection to the database is specified graphically, so the iBatis configuration file has variables for the location:
<xml> <property name="JDBC.Driver" value="org.postgresql.Driver"/>
<property name="JDBC.ConnectionURL” value="jdbc:postgresql://${chado}"/>
<property name="JDBC.Username" value="${username}"/>
<property name="JDBC.Password" value="${password}"/> </xml>
- provide database location, username & password
- select from scrollable list of feature with residues (organisms in separate Postgres schemas) what to open in Artemis
Technical - Code Generation
- The shared interface and hibernate implementation were originally generated
- There’s no explicit code generation (although the Spring and Hibernate runtimes may use them behinds the scenes)
Technical - Transactions
- Transactions are fully supported
Problems 1, 2, & 3
Creating a gene <java> genes[0] = new Feature(ORG, GENE, "xfile", false, false, now, now);
genes[0].setSeqLen(1029); sequenceDao.persist(genes[0]);
FeatureLoc loc = new FeatureLoc(SOURCE_FEATURE, genes[0], 13691, false, 14720, false, (short)1, 0, 0 ,0);
sequenceDao.persist(loc);
addFeatureProp(genes[0], "description", "A test gene for GMOD meeting");
addSynonymsToFeature(genes[0], "mulder", "scully");
createExon("exon1", genes[0], 13691, 13767, now, 0);
createExon("exon2", genes[0], 14687, 14720, now, 1); </java>
Retrieve a gene <java> Feature f = sequenceDao.getFeatureByUniqueName("xfile"); displayGene(f); </java>
Update a gene <java> genes[0].setUniqueName("x-file");
sequenceDao.merge(genes[0]); </java>
Demo – Sample Problem
<java> private Feature createExon(String name, Feature gene, int min, int max, Timestamp now, int rank) {
Feature exon = new Feature(ORG, EXON, name, false, false, now, now); exon.setSeqLen(max-min); sequenceDao.persist(exon);
FeatureLoc loc = new FeatureLoc(SOURCE_FEATURE, exon, min, false, max, false, (short)1, 0, 0 ,0); sequenceDao.persist(loc);
return exon;
} </java>
Demo – Sample Problem
<xml> <st:section name="Naming" id="gene_naming" collapsed="false" collapsible="false" hideIfEmpty="true">
- symbol:
- ${feature.uniqueName}
<db:synonym name="synonym" var="name" collection="${feature.featureSynonyms}">
Synonym: <db:list-string collection="${name}" /> </db:synonym>
<st:section name="Exons" collapsed="false" collapsible="true" hideIfEmpty="true">
<display:table name="exons" uid="tmp" pagesize="30" class="simple" cellspacing="0"
cellpadding="4">
<display:column property="uniqueName" title="Exon"/> <display:column property="featureLocsForSrcFeatureId.fmin" title="Start"/> <display:column property="featureLocsForSrcFeatureId.fmax" title="end"/> </display:table>
</st:section>
<st:section name="cds" collapsible="true">
${feature.residues}
</st:section> </xml>
Specialized functionality like a cascading delete are handled by the database