Skip to content
Snippets Groups Projects
Commit f68718eb authored by tjc's avatar tjc
Browse files

intial implementation for GO and controlled curation

git-svn-id: svn+ssh://svn.internal.sanger.ac.uk/repos/svn/pathsoft/artemis/trunk@4890 ee4ac58c-ac51-4696-9907-e4b3aa274f04
parent f506b76b
No related branches found
No related tags found
No related merge requests found
...@@ -33,6 +33,7 @@ import java.util.Vector; ...@@ -33,6 +33,7 @@ import java.util.Vector;
import org.gmod.schema.sequence.Feature; import org.gmod.schema.sequence.Feature;
import org.gmod.schema.sequence.FeatureCvTerm; import org.gmod.schema.sequence.FeatureCvTerm;
import org.gmod.schema.sequence.FeatureCvTermProp;
import org.gmod.schema.sequence.FeatureDbXRef; import org.gmod.schema.sequence.FeatureDbXRef;
import org.gmod.schema.sequence.FeatureProp; import org.gmod.schema.sequence.FeatureProp;
import org.gmod.schema.sequence.Synonym; import org.gmod.schema.sequence.Synonym;
...@@ -42,6 +43,7 @@ import org.gmod.schema.sequence.FeatureSynonym; ...@@ -42,6 +43,7 @@ import org.gmod.schema.sequence.FeatureSynonym;
import org.gmod.schema.general.DbXRef; import org.gmod.schema.general.DbXRef;
import org.gmod.schema.organism.Organism; import org.gmod.schema.organism.Organism;
import org.gmod.schema.cv.CvTerm; import org.gmod.schema.cv.CvTerm;
import org.gmod.schema.cv.Cv;
import org.gmod.schema.general.Db; import org.gmod.schema.general.Db;
import org.gmod.schema.pub.Pub; import org.gmod.schema.pub.Pub;
...@@ -186,7 +188,7 @@ public class JdbcDAO extends GmodDAO ...@@ -186,7 +188,7 @@ public class JdbcDAO extends GmodDAO
String sql = String sql =
"SELECT feature_id, fc.feature_cvterm_id, is_not AS not, "+ "SELECT feature_id, fc.feature_cvterm_id, is_not AS not, "+
"pub_id, fc.cvterm_id, fcp.type_id, fcp.value, fcp.rank, "+ "pub_id, fc.cvterm_id, fcp.type_id, fcp.value, fcp.rank, "+
"db.name, dbxref.accession "+ "c.name AS cvterm_name, db.name, dbxref.accession "+
"FROM feature_cvterm fc "+ "FROM feature_cvterm fc "+
"LEFT JOIN feature_cvtermprop fcp ON fc.feature_cvterm_id=fcp.feature_cvterm_id " + "LEFT JOIN feature_cvtermprop fcp ON fc.feature_cvterm_id=fcp.feature_cvterm_id " +
"LEFT JOIN cvterm c ON fc.cvterm_id=c.cvterm_id " + "LEFT JOIN cvterm c ON fc.cvterm_id=c.cvterm_id " +
...@@ -197,6 +199,8 @@ public class JdbcDAO extends GmodDAO ...@@ -197,6 +199,8 @@ public class JdbcDAO extends GmodDAO
sql = sql + " WHERE "+ sql = sql + " WHERE "+
"feature_id=(SELECT feature_id FROM feature WHERE uniquename=#uniqueName#)"; "feature_id=(SELECT feature_id FROM feature WHERE uniquename=#uniqueName#)";
sql = sql + " ORDER BY fcp.feature_cvterm_id, fcp.rank";
appendToLogFile(sql, sqlLog); appendToLogFile(sql, sqlLog);
try try
...@@ -220,6 +224,7 @@ public class JdbcDAO extends GmodDAO ...@@ -220,6 +224,7 @@ public class JdbcDAO extends GmodDAO
CvTerm cvterm = new CvTerm(); CvTerm cvterm = new CvTerm();
cvterm.setCvTermId(rs.getInt("cvterm_id")); cvterm.setCvTermId(rs.getInt("cvterm_id"));
cvterm.setName(rs.getString("cvterm_name"));
DbXRef dbxref = new DbXRef(); DbXRef dbxref = new DbXRef();
dbxref.setAccession(rs.getString("accession")); dbxref.setAccession(rs.getString("accession"));
...@@ -235,28 +240,34 @@ public class JdbcDAO extends GmodDAO ...@@ -235,28 +240,34 @@ public class JdbcDAO extends GmodDAO
List featureCvTermProps = new Vector(); List featureCvTermProps = new Vector();
int next_feature_cvterm_id = -1; int next_feature_cvterm_id = -1;
int rank;
int next_rank = -1;
int feature_cvterm_id = rs.getInt("feature_cvterm_id"); int feature_cvterm_id = rs.getInt("feature_cvterm_id");
do do
{ {
FeatureProp featureProp = new FeatureProp(); rank = rs.getInt("rank");
FeatureCvTermProp featureProp = new FeatureCvTermProp();
CvTerm featurePropCvTerm = new CvTerm(); CvTerm featurePropCvTerm = new CvTerm();
featurePropCvTerm.setCvTermId(rs.getInt("type_id")); featurePropCvTerm.setCvTermId(rs.getInt("type_id"));
featureProp.setCvTerm(featurePropCvTerm); featureProp.setCvTerm(featurePropCvTerm);
featureProp.setValue(rs.getString("value")); featureProp.setValue(rs.getString("value"));
featureProp.setRank(rs.getInt("rank")); featureProp.setRank(rank);
featureCvTermProps.add(featureProp); featureCvTermProps.add(featureProp);
if(rs.next()) if(rs.next())
{ {
next_feature_cvterm_id = rs.getInt("feature_cvterm_id"); next_feature_cvterm_id = rs.getInt("feature_cvterm_id");
if(feature_cvterm_id != next_feature_cvterm_id) next_rank = rs.getInt("rank");
if(feature_cvterm_id != next_feature_cvterm_id ||
next_rank != rank)
rs.previous(); rs.previous();
} }
else else
next_feature_cvterm_id = -1; next_feature_cvterm_id = -1;
} while(feature_cvterm_id == next_feature_cvterm_id); } while(feature_cvterm_id == next_feature_cvterm_id && rank == next_rank);
feature_cvterm.setFeatureCvTermProps(featureCvTermProps); feature_cvterm.setFeatureCvTermProps(featureCvTermProps);
featureCvTerms.add(feature_cvterm); featureCvTerms.add(feature_cvterm);
...@@ -305,7 +316,8 @@ public class JdbcDAO extends GmodDAO ...@@ -305,7 +316,8 @@ public class JdbcDAO extends GmodDAO
*/ */
public List getFeatureDbXRefsByFeatureUniquename(final String uniqueName) public List getFeatureDbXRefsByFeatureUniquename(final String uniqueName)
{ {
String sql = "SELECT db.name, dbx.accession, f.feature_id FROM " String sql = "SELECT db.name, dbx.accession, dbx.version, dbx.description, "
+ "dbx_f.feature_id, dbx_f.is_current FROM "
+ "feature_dbxref dbx_f " + "feature_dbxref dbx_f "
+ "LEFT JOIN dbxref dbx ON dbx.dbxref_id=dbx_f.dbxref_id " + "LEFT JOIN dbxref dbx ON dbx.dbxref_id=dbx_f.dbxref_id "
+ "LEFT JOIN db ON db.db_id=dbx.db_id " + "LEFT JOIN db ON db.db_id=dbx.db_id "
...@@ -314,6 +326,8 @@ public class JdbcDAO extends GmodDAO ...@@ -314,6 +326,8 @@ public class JdbcDAO extends GmodDAO
if(uniqueName != null) if(uniqueName != null)
sql = sql + "WHERE f.uniquename='" + uniqueName + "'"; sql = sql + "WHERE f.uniquename='" + uniqueName + "'";
sql = sql + " ORDER BY f.type_id, uniquename";
appendToLogFile(sql, sqlLog); appendToLogFile(sql, sqlLog);
try try
...@@ -329,11 +343,14 @@ public class JdbcDAO extends GmodDAO ...@@ -329,11 +343,14 @@ public class JdbcDAO extends GmodDAO
Db db = new Db(); Db db = new Db();
db.setName(rs.getString("name")); db.setName(rs.getString("name"));
dbxref.setAccession(rs.getString("accession")); dbxref.setAccession(rs.getString("accession"));
dbxref.setVersion(rs.getString("version"));
dbxref.setDescription(rs.getString("description"));
dbxref.setDb(db); dbxref.setDb(db);
Feature feat = new Feature(); Feature feat = new Feature();
feat.setFeatureId(rs.getInt("feature_id")); feat.setFeatureId(rs.getInt("feature_id"));
feature_dbxref.setDbXRef(dbxref); feature_dbxref.setDbXRef(dbxref);
feature_dbxref.setFeature(feat); feature_dbxref.setFeature(feat);
feature_dbxref.setCurrent(rs.getBoolean("is_current"));
dbxrefs.add(feature_dbxref); dbxrefs.add(feature_dbxref);
} }
...@@ -586,33 +603,43 @@ public class JdbcDAO extends GmodDAO ...@@ -586,33 +603,43 @@ public class JdbcDAO extends GmodDAO
do do
{ {
// feature properties // feature properties
FeatureProp featureprop = new FeatureProp(); int prop_type_id = rs.getInt("prop_type_id");
CvTerm cvterm = new CvTerm();
cvterm.setCvTermId(rs.getInt("prop_type_id")); if(prop_type_id != 0)
featureprop.setCvTerm(cvterm); {
featureprop.setValue(rs.getString("value")); FeatureProp featureprop = new FeatureProp();
CvTerm cvterm = new CvTerm();
cvterm.setCvTermId(prop_type_id);
featureprop.setCvTerm(cvterm);
featureprop.setValue(rs.getString("value"));
if(feature.getFeatureProps() == null
|| feature.getFeatureProps().size() == 0)
feature.setFeatureProps(new Vector());
feature.addFeatureProp(featureprop);
}
if(feature.getFeatureProps() == null ||
feature.getFeatureProps().size() == 0)
feature.setFeatureProps(new Vector());
feature.addFeatureProp(featureprop);
// feature relationship // feature relationship
FeatureRelationship feature_relationship = new FeatureRelationship(); FeatureRelationship feature_relationship = new FeatureRelationship();
cvterm = new CvTerm(); CvTerm cvterm = new CvTerm();
cvterm.setCvTermId(rs.getInt("relation_type_id")); cvterm.setCvTermId(rs.getInt("relation_type_id"));
feature_relationship.setCvTerm(cvterm); feature_relationship.setCvTerm(cvterm);
Feature object = new Feature(); int obj_id = rs.getInt("object_id");
object.setFeatureId(rs.getInt("object_id"));
feature_relationship.setFeatureByObjectId(object);
if(feature.getFeatureRelationshipsForSubjectId() == null || if(obj_id != 0)
feature.getFeatureRelationshipsForSubjectId().size() == 0) {
feature.setFeatureRelationshipsForSubjectId(new Vector()); Feature object = new Feature();
object.setFeatureId(obj_id);
feature_relationship.setFeatureByObjectId(object);
if(feature.getFeatureRelationshipsForSubjectId() == null
|| feature.getFeatureRelationshipsForSubjectId().size() == 0)
feature.setFeatureRelationshipsForSubjectId(new Vector());
feature.addFeatureRelationshipsForSubjectId(feature_relationship);
}
feature.addFeatureRelationshipsForSubjectId(feature_relationship);
if(!rs.isLast()) if(!rs.isLast())
{ {
rs.next(); rs.next();
...@@ -787,7 +814,7 @@ public class JdbcDAO extends GmodDAO ...@@ -787,7 +814,7 @@ public class JdbcDAO extends GmodDAO
*/ */
public List getCvTerms() public List getCvTerms()
{ {
String sql = "SELECT cvterm.cvterm_id, cvterm.name " + String sql = "SELECT cvterm.cvterm_id, cvterm.name as cvterm_name, cv.NAME as cv_name " +
"FROM cvterm, cv WHERE cv.cv_id = cvterm.cv_id"; "FROM cvterm, cv WHERE cv.cv_id = cvterm.cv_id";
appendToLogFile(sql, sqlLog); appendToLogFile(sql, sqlLog);
...@@ -802,7 +829,10 @@ public class JdbcDAO extends GmodDAO ...@@ -802,7 +829,10 @@ public class JdbcDAO extends GmodDAO
{ {
CvTerm cvterm = new CvTerm(); CvTerm cvterm = new CvTerm();
cvterm.setCvTermId(rs.getInt("cvterm_id")); cvterm.setCvTermId(rs.getInt("cvterm_id"));
cvterm.setName(rs.getString("name")); cvterm.setName(rs.getString("cvterm_name"));
Cv cv = new Cv();
cv.setName(rs.getString("cv_name"));
cvterm.setCv(cv);
cvterms.add(cvterm); cvterms.add(cvterm);
} }
return cvterms; return cvterms;
......
...@@ -40,6 +40,7 @@ import org.gmod.schema.sequence.FeatureLoc; ...@@ -40,6 +40,7 @@ import org.gmod.schema.sequence.FeatureLoc;
import org.gmod.schema.sequence.FeatureRelationship; import org.gmod.schema.sequence.FeatureRelationship;
import org.gmod.schema.sequence.FeatureSynonym; import org.gmod.schema.sequence.FeatureSynonym;
import org.gmod.schema.sequence.FeatureCvTerm; import org.gmod.schema.sequence.FeatureCvTerm;
import org.gmod.schema.sequence.FeatureCvTermProp;
import org.gmod.schema.cv.CvTerm; import org.gmod.schema.cv.CvTerm;
import org.gmod.schema.general.DbXRef; import org.gmod.schema.general.DbXRef;
import org.gmod.schema.organism.Organism; import org.gmod.schema.organism.Organism;
...@@ -797,7 +798,8 @@ public class DatabaseDocument extends Document ...@@ -797,7 +798,8 @@ public class DatabaseDocument extends Document
//this_buff.append("feature_id="+feature_id+";"); //this_buff.append("feature_id="+feature_id+";");
// attributes // attributes
if(feat.getFeatureProps() != null) if(feat.getFeatureProps() != null &&
feat.getFeatureProps().size() > 0)
{ {
List featureprops = (List)feat.getFeatureProps(); List featureprops = (List)feat.getFeatureProps();
for(int j=0; j<featureprops.size(); j++) for(int j=0; j<featureprops.size(); j++)
...@@ -853,12 +855,49 @@ public class DatabaseDocument extends Document ...@@ -853,12 +855,49 @@ public class DatabaseDocument extends Document
{ {
feature_cvterm = (FeatureCvTerm)v_feature_cvterms.get(j); feature_cvterm = (FeatureCvTerm)v_feature_cvterms.get(j);
CvTerm cvterm = getCvTerm( feature_cvterm.getCvTerm().getCvTermId(), dao);
DbXRef dbXRef = feature_cvterm.getCvTerm().getDbXRef(); DbXRef dbXRef = feature_cvterm.getCvTerm().getDbXRef();
this_buff.append("GO="); if(cvterm.getCv().getName().equals("genedb_controlledcuration"))
if(feature_cvterm.isNot()) {
this_buff.append("qualifier=NOT;"); int cvtermId = feature_cvterm.getCvTerm().getCvTermId();
this_buff.append(dbXRef.getDb().getName()+":"+dbXRef.getAccession()+";"); String cvName = getCvTerm(cvtermId, dao).getCv().getName();
this_buff.append("controlled_curation=");
this_buff.append("cv="+cvName+"%3B");
this_buff.append("term="+feature_cvterm.getCvTerm().getName()+"%3B");
this_buff.append("db_xref="+dbXRef.getDb().getName() + ":"
+ dbXRef.getAccession() + "%3B");
List feature_cvtermprops = (List)feature_cvterm.getFeatureCvTermProps();
for(int i=0; i<feature_cvtermprops.size(); i++)
{
FeatureCvTermProp feature_cvtermprop = (FeatureCvTermProp)feature_cvtermprops.get(i);
this_buff.append(getCvtermName(feature_cvtermprop.getCvTerm().getCvTermId(), dao));
this_buff.append("=");
this_buff.append(feature_cvtermprop.getValue());
if(i<feature_cvtermprops.size())
this_buff.append("%3B");
}
this_buff.append(";");
}
else
{
this_buff.append("GO=");
if(cvterm.getCv().getName().equals("molecular_function"))
this_buff.append("aspect=F%3B");
else if(cvterm.getCv().getName().equals("cellular_component"))
this_buff.append("aspect=C%3B");
else if(cvterm.getCv().getName().equals("biological_process"))
this_buff.append("aspect=P%3B");
if(feature_cvterm.isNot())
this_buff.append("qualifier=NOT%3B");
this_buff.append("GOid="+dbXRef.getDb().getName() + ":"
+ dbXRef.getAccession() + ";");
}
} }
//System.out.println(new String(this_buff.getBytes())); //System.out.println(new String(this_buff.getBytes()));
} }
...@@ -890,11 +929,16 @@ public class DatabaseDocument extends Document ...@@ -890,11 +929,16 @@ public class DatabaseDocument extends Document
* @return the cvterm name * @return the cvterm name
*/ */
private static String getCvtermName(long id, GmodDAO dao) private static String getCvtermName(long id, GmodDAO dao)
{
return getCvTerm(id, dao).getName();
}
private static CvTerm getCvTerm(long id, GmodDAO dao)
{ {
if(cvterms == null) if(cvterms == null)
getCvterm(dao); getCvterms(dao);
return ((CvTerm)cvterms.get(new Long(id))).getName(); return (CvTerm)cvterms.get(new Long(id));
} }
/** /**
...@@ -902,7 +946,7 @@ public class DatabaseDocument extends Document ...@@ -902,7 +946,7 @@ public class DatabaseDocument extends Document
* @param dao the data access object * @param dao the data access object
* @return the cvterm <code>Hashtable</code> * @return the cvterm <code>Hashtable</code>
*/ */
private static Hashtable getCvterm(GmodDAO dao) private static Hashtable getCvterms(GmodDAO dao)
{ {
cvterms = new Hashtable(); cvterms = new Hashtable();
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment