You can subscribe to this list here.
2006 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
(18) |
Aug
(33) |
Sep
(30) |
Oct
(27) |
Nov
(59) |
Dec
(30) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2007 |
Jan
(67) |
Feb
(44) |
Mar
(70) |
Apr
(73) |
May
(119) |
Jun
(31) |
Jul
(92) |
Aug
(86) |
Sep
(76) |
Oct
(152) |
Nov
(156) |
Dec
(85) |
2008 |
Jan
(111) |
Feb
(121) |
Mar
(107) |
Apr
(102) |
May
(45) |
Jun
(65) |
Jul
(62) |
Aug
(133) |
Sep
(56) |
Oct
(56) |
Nov
(17) |
Dec
(15) |
2009 |
Jan
(10) |
Feb
(5) |
Mar
(10) |
Apr
(14) |
May
(49) |
Jun
(94) |
Jul
(67) |
Aug
(23) |
Sep
(9) |
Oct
(92) |
Nov
(26) |
Dec
(51) |
2010 |
Jan
(105) |
Feb
(83) |
Mar
(52) |
Apr
(59) |
May
(68) |
Jun
(71) |
Jul
(127) |
Aug
(49) |
Sep
(91) |
Oct
(27) |
Nov
(33) |
Dec
(26) |
2011 |
Jan
(26) |
Feb
(45) |
Mar
(26) |
Apr
(28) |
May
(17) |
Jun
(15) |
Jul
(45) |
Aug
(33) |
Sep
(50) |
Oct
(22) |
Nov
(10) |
Dec
(21) |
2012 |
Jan
(33) |
Feb
(24) |
Mar
(36) |
Apr
(60) |
May
(60) |
Jun
(43) |
Jul
(114) |
Aug
(19) |
Sep
(35) |
Oct
(24) |
Nov
(64) |
Dec
(12) |
2013 |
Jan
(54) |
Feb
(58) |
Mar
(51) |
Apr
(46) |
May
(21) |
Jun
(29) |
Jul
(25) |
Aug
(25) |
Sep
(13) |
Oct
(7) |
Nov
(14) |
Dec
(27) |
2014 |
Jan
(10) |
Feb
(7) |
Mar
(16) |
Apr
(14) |
May
(19) |
Jun
(8) |
Jul
(15) |
Aug
(11) |
Sep
(5) |
Oct
(11) |
Nov
(11) |
Dec
(4) |
2015 |
Jan
(52) |
Feb
(27) |
Mar
(22) |
Apr
(17) |
May
(2) |
Jun
(2) |
Jul
(2) |
Aug
(2) |
Sep
(2) |
Oct
|
Nov
(2) |
Dec
|
2016 |
Jan
(2) |
Feb
|
Mar
|
Apr
(2) |
May
(1) |
Jun
(1) |
Jul
(3) |
Aug
(2) |
Sep
(2) |
Oct
(2) |
Nov
(2) |
Dec
|
2017 |
Jan
|
Feb
|
Mar
(1) |
Apr
(1) |
May
(4) |
Jun
|
Jul
|
Aug
(1) |
Sep
(1) |
Oct
(2) |
Nov
|
Dec
(1) |
2018 |
Jan
|
Feb
|
Mar
(4) |
Apr
|
May
(2) |
Jun
(2) |
Jul
(2) |
Aug
(2) |
Sep
(1) |
Oct
(2) |
Nov
(1) |
Dec
|
2019 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
(2) |
Aug
|
Sep
|
Oct
|
Nov
|
Dec
(3) |
2020 |
Jan
|
Feb
|
Mar
|
Apr
|
May
(2) |
Jun
(3) |
Jul
|
Aug
|
Sep
(2) |
Oct
|
Nov
|
Dec
|
From: <mg...@us...> - 2007-03-30 20:00:41
|
Revision: 440 http://svn.sourceforge.net/obo/?rev=440&view=rev Author: mgibson Date: 2007-03-30 13:00:40 -0700 (Fri, 30 Mar 2007) Log Message: ----------- well alright - so its not spiffy yet but now can do 2 differentia in post comp - its currently hard wired to allow for up to 2 - no more - can do 1 eventually i want to add a button where the user can ask for more diff fields - as many as they want also this is writing out at the moment - to syn & tab - but not reading in properly - i need johns post comp parser for that and i dont think hes at work at the moment as hes not responding to my pleas Modified Paths: -------------- phenote/trunk/conf/human.cfg phenote/trunk/src/java/phenote/datamodel/OboUtil.java phenote/trunk/src/java/phenote/datamodel/OntologyManager.java phenote/trunk/src/java/phenote/gui/field/AbstractAutoCompList.java phenote/trunk/src/java/phenote/gui/field/CharFieldGui.java phenote/trunk/src/java/phenote/gui/field/PostCompGui.java phenote/trunk/src/java/phenote/gui/field/RelationCompList.java phenote/trunk/src/java/phenote/gui/field/TermCompList.java phenote/trunk/src/java/phenote/main/PhenoteVersion.java Modified: phenote/trunk/conf/human.cfg =================================================================== --- phenote/trunk/conf/human.cfg 2007-03-30 16:24:52 UTC (rev 439) +++ phenote/trunk/conf/human.cfg 2007-03-30 20:00:40 UTC (rev 440) @@ -3,6 +3,8 @@ <dataadapter name="phenosyntax" enable="true"/> <dataadapter name="phenoxml" enable="true"/> + <dataadapter name="phenote.dataadapter.delimited.DelimitedFileAdapter" + enable="true"/> <log config-file="conf/log4j-standalone.xml" /> Modified: phenote/trunk/src/java/phenote/datamodel/OboUtil.java =================================================================== --- phenote/trunk/src/java/phenote/datamodel/OboUtil.java 2007-03-30 16:24:52 UTC (rev 439) +++ phenote/trunk/src/java/phenote/datamodel/OboUtil.java 2007-03-30 20:00:40 UTC (rev 440) @@ -8,28 +8,72 @@ import org.geneontology.oboedit.datamodel.impl.OBORestrictionImpl; -// or should this go in datamodel? +/** changing this from static to non-static so can build post comp object from + multiple rel-diffs */ public class OboUtil { + private OBOClass postCompTerm; + private String id; + private String name; + private boolean hasRelAndDiff=false; + + + /** used by OntologyManager */ public static OBOClass makePostCompTerm(OBOClass genus, OBOProperty rel, OBOClass diff) { String nm = pcString(genus.getName(),rel.getName(),diff.getName()); String id = pcString(genus.getID(),rel.getName(),diff.getID()); - OBOClass postComp = new OBOClassImpl(nm,id); + OBOClass postCompTerm = new OBOClassImpl(nm,id); OBOProperty ISA = OBOProperty.IS_A; - OBORestrictionImpl gRel = new OBORestrictionImpl(postComp,ISA,genus); + OBORestrictionImpl gRel = new OBORestrictionImpl(postCompTerm,ISA,genus); gRel.setCompletes(true); // post comp flag - postComp.addParent(gRel); - OBORestrictionImpl dRel = new OBORestrictionImpl(postComp,rel,diff); + postCompTerm.addParent(gRel); + OBORestrictionImpl dRel = new OBORestrictionImpl(postCompTerm,rel,diff); dRel.setCompletes(true); // post comp - postComp.addParent(dRel); - return postComp; + postCompTerm.addParent(dRel); + return postCompTerm; } + + public static OboUtil initPostCompTerm(OBOClass genus) { + OboUtil ou = new OboUtil(); + ou.addGenus(genus); + return ou; + } + + private void addGenus(OBOClass genus) { + id = genus.getID(); + name = genus.getName(); + postCompTerm = new OBOClassImpl(name,id); + OBOProperty ISA = OBOProperty.IS_A; + OBORestrictionImpl gRel = new OBORestrictionImpl(postCompTerm,ISA,genus); + gRel.setCompletes(true); // post comp flag + postCompTerm.addParent(gRel); + } + + public void addRelDiff(OBOProperty rel,OBOClass diff) { + OBORestrictionImpl dRel = new OBORestrictionImpl(postCompTerm,rel,diff); + dRel.setCompletes(true); // post comp + postCompTerm.addParent(dRel); + name += relDiffString(rel.getName(),diff.getName()); + postCompTerm.setName(name); + id += relDiffString(rel.getName(),diff.getID()); + // just for now + ((OBOClassImpl)postCompTerm).setID(id); + hasRelAndDiff = true; + } + + public boolean hasRelAndDiff() { return hasRelAndDiff; } + + public OBOClass getPostCompTerm() { return postCompTerm; } + private static String pcString(String g, String r, String d) { // for now hard wire to part_of - return g+"^"+r+"("+d+")"; + return g + relDiffString(r,d); } + private static String relDiffString(String r, String d) { + return "^"+r+"("+d+")"; + } } Modified: phenote/trunk/src/java/phenote/datamodel/OntologyManager.java =================================================================== --- phenote/trunk/src/java/phenote/datamodel/OntologyManager.java 2007-03-30 16:24:52 UTC (rev 439) +++ phenote/trunk/src/java/phenote/datamodel/OntologyManager.java 2007-03-30 20:00:40 UTC (rev 440) @@ -12,8 +12,8 @@ import org.geneontology.oboedit.datamodel.OBOProperty; import org.geneontology.oboedit.datamodel.impl.OBOPropertyImpl; -import phenote.datamodel.CharFieldEnum; -import phenote.datamodel.OboUtil; +//import phenote.datamodel.CharFieldEnum; +//import phenote.datamodel.OboUtil; /** Manages all of the ontology. Eventually will get config info (xml? OntologyConfig?) and set itself up from that. Should there be an ontology package - whats funny @@ -121,7 +121,8 @@ return id.contains("^"); } - /** parse string GO:123^part_of(AO:345) into post comp obo class */ + /** parse string GO:123^part_of(AO:345) into post comp obo class + This will be replaced with obo edits post comp parse utility */ OBOClass getPostComp(String id) throws TermNotFoundException { Pattern pat = Pattern.compile("([^\\^]+)\\^([^\\(]*)\\(([^\\)]*)\\)"); Matcher m = pat.matcher(id); Modified: phenote/trunk/src/java/phenote/gui/field/AbstractAutoCompList.java =================================================================== --- phenote/trunk/src/java/phenote/gui/field/AbstractAutoCompList.java 2007-03-30 16:24:52 UTC (rev 439) +++ phenote/trunk/src/java/phenote/gui/field/AbstractAutoCompList.java 2007-03-30 20:00:40 UTC (rev 440) @@ -130,6 +130,8 @@ protected CompListSearcher getCompListSearcher() { return compListSearcher; } + protected AbstractAutoCompList getCompList() { return this; } + //void setOntology(Ontology o) { ontology = o; } //void setSearchParams(SearchParamsI sp) { searchParams = sp; } Modified: phenote/trunk/src/java/phenote/gui/field/CharFieldGui.java =================================================================== --- phenote/trunk/src/java/phenote/gui/field/CharFieldGui.java 2007-03-30 16:24:52 UTC (rev 439) +++ phenote/trunk/src/java/phenote/gui/field/CharFieldGui.java 2007-03-30 20:00:40 UTC (rev 440) @@ -270,14 +270,14 @@ } /** for testing and internal use */ - AbstractAutoCompList getCompList() { - if (!isCompList()) - return null; - if (isRelationshipList()) - return getRelComp(); - return getTermComp(); - //return comboBox; - } + AbstractAutoCompList getCompList() { return null; } // overridden +// if (!isCompList()) +// return null; +// if (isRelationshipList()) +// return getRelComp(); +// return getTermComp(); +// //return comboBox; +// } // hasOntology? overridded by AbstractAutoCompList boolean isCompList() { return false; }// isCompList; } @@ -292,10 +292,10 @@ return null; // overridden by TermCompList } - private RelationCompList getRelComp() { - //return relCompList; - return null; // overridden - } +// private RelationCompList getRelComp() { +// //return relCompList; +// return null; // overridden +// } // hardwired in term & rel subclasses now // void enableTermInfoListening(boolean enable) { @@ -465,12 +465,13 @@ //else textField.setText(term.getName()); // shouldnt happen } - /** for auto combos (ontol) for relationships (post comp rel) */ - void setRel(OBOProperty rel) { - if (!isCompList() || !isRelationshipList()) return; // ex??? - getRelComp().setRel(rel); - //else textField.setText(rel.getName()); // shouldnt actually happen - } + /** for auto combos (ontol) for relationships (post comp rel) + overriddedn by RelationCompList */ + void setRel(OBOProperty rel) {} +// if (!isCompList() || !isRelationshipList()) return; // ex??? +// getRelComp().setRel(rel); +// //else textField.setText(rel.getName()); // shouldnt actually happen +// } CharFieldEnum getCharFieldEnum() { return charField.getCharFieldEnum(); } protected CharField getCharField() { return charField; } @@ -502,19 +503,25 @@ // } // } + static class CharFieldGuiEx extends Exception { + protected CharFieldGuiEx(String m) { super(m); } + } + /** should define a CharFieldGuiEx! */ - OBOClass getCurrentOboClass() throws Exception { + OBOClass getCurrentOboClass() throws CharFieldGuiEx { //if (!isCompList() || isRelationshipList) - if (!isTermCompList()) - throw new Exception("Field has no OBO Class"); - return null; // overridden by term comp list + //if (!isTermCompList()) + // overridden by term comp list + throw new CharFieldGuiEx("Field has no OBO Class"); + //return null; //return getTermComp().getCurrentOboClass(); // throws Ex } - OBOProperty getCurrentRelation() throws Exception { - if (!isCompList() || !isRelationshipList()) - throw new Exception("Field has no Relation"); - return getRelComp().getCurrentRelation(); // throws Ex + /** overridden by RelationCompList */ + OBOProperty getCurrentRelation() throws CharFieldGuiEx { + //if (!isCompList() || !isRelationshipList()) + throw new CharFieldGuiEx("Field has no Relation"); + //return getRelComp().getCurrentRelation(); // throws Ex } protected boolean isTermCompList() { Modified: phenote/trunk/src/java/phenote/gui/field/PostCompGui.java =================================================================== --- phenote/trunk/src/java/phenote/gui/field/PostCompGui.java 2007-03-30 16:24:52 UTC (rev 439) +++ phenote/trunk/src/java/phenote/gui/field/PostCompGui.java 2007-03-30 20:00:40 UTC (rev 440) @@ -1,7 +1,8 @@ package phenote.gui.field; +import java.util.ArrayList; +import java.util.List; import java.awt.Dimension; -import java.util.List; import java.awt.BorderLayout; import java.awt.Frame; import java.awt.GridBagLayout; @@ -45,45 +46,89 @@ private CharField charField; private JDialog dialog; + // eventually with embedding this will be a TermGui private CharFieldGui genusField; //private RelationshipFieldGui relField; ?? - private CharFieldGui relField; - private CharFieldGui diffField; + //private CharFieldGui relField; + //private CharFieldGui diffField; + private List<RelDiffGui> relDiffGuis = new ArrayList<RelDiffGui>(3); + private SearchParamsI searchParams; + private FieldPanel compFieldPanel; PostCompGui(CharField charField,SearchParamsI searchParams) { this.charField = charField; - init(searchParams); + this.searchParams = searchParams; + init(); } - private void init(SearchParamsI searchParams) { + private class RelDiffGui { + private CharFieldGui relField; + // with embedded/recurse this will be a TermGui... + private CharFieldGui diffField; + private RelDiffGui() { + CharField relChar = new CharField(CharFieldEnum.RELATIONSHIP); + Ontology o = charField.getPostCompRelOntol(); + relChar.addOntology(o); + relField = CharFieldGui.makeRelationList(relChar,searchParams);//"Relationship"? + compFieldPanel.addCharFieldGuiToPanel(relField); + diffField = CharFieldGui.makePostCompTermList(charField,searchParams,"Differentia"); + compFieldPanel.addCharFieldGuiToPanel(diffField); + } + private void setRelDiffModel(RelDiffModel rd) { +// try { rd.relField.setRel(getRel(currentTerm)); } catch (Exception e){} + relField.setRel(rd.rel); + diffField.setOboClass(rd.diff); + diffField.setOntologyChooserFromTerm(rd.diff); + } + } + + private class RelDiffModel { + private OBOProperty rel; + private OBOClass diff; + private RelDiffModel(OBORestriction link) { + rel = link.getType(); + diff = (OBOClass)link.getParent(); + } + } + + + private void init() { // dialog wont be focusable if owner is not showing or something like that Frame owner = Phenote.getPhenote().getFrame(); dialog = new JDialog(owner,charField.getName()+" Post Composition"); - FieldPanel compFieldPanel = new FieldPanel(false,false); // (searchParams)? + compFieldPanel = new FieldPanel(false,false); // (searchParams)? compFieldPanel.setSearchParams(searchParams); - // false - dont edit model, false - no post comp button - //genusField = new CharFieldGui(charField,compFieldPanel,"Genus",false,false); + // MAIN GENUS TERM genusField = CharFieldGui.makePostCompTermList(charField,searchParams,"Genus"); compFieldPanel.addCharFieldGuiToPanel(genusField); - // Relationship?? stripped down ontology? hmmmmmm... - CharField relChar = new CharField(CharFieldEnum.RELATIONSHIP); - // Ontology o = OntologyManager.getRelationshipOntology() ?? getRelCharField? - Ontology o = charField.getPostCompRelOntol(); - relChar.addOntology(o); - //relField = new CharFieldGui(relChar,compFieldPanel,"Relationship",false,false); - relField = CharFieldGui.makeRelationList(relChar,searchParams); // "Relationship"? - compFieldPanel.addCharFieldGuiToPanel(relField); - //relField.enableTermInfoListening(false); // turn off term info for rels - // relField = new RelFieldGui(relChar,compTermPanel,"Relationship"); - // relField = new RelationshipFieldGui(compFieldPanel); + // REL-DIFFS + addRelDiffGui(); - // when recurse put in flag for comp button - diffField = CharFieldGui.makePostCompTermList(charField,searchParams,"Differentia"); - compFieldPanel.addCharFieldGuiToPanel(diffField); - //new CharFieldGui(charField,compFieldPanel,"Differentia",false,false); + // HARDWIRE 2ND REL&DIFF FOR NOW eventually put in refine button to add more diffs + addRelDiffGui(); +// // Relationship?? stripped down ontology? hmmmmmm... +// CharField relChar = new CharField(CharFieldEnum.RELATIONSHIP); +// // Ontology o = OntologyManager.getRelationshipOntology() ?? getRelCharField? +// Ontology o = charField.getPostCompRelOntol(); +// relChar.addOntology(o); +// //relField = new CharFieldGui(relChar,compFieldPanel,"Relationship",false,false); +// relField = CharFieldGui.makeRelationList(relChar,searchParams); // "Relationship"? +// compFieldPanel.addCharFieldGuiToPanel(relField); +// //relField.enableTermInfoListening(false); // turn off term info for rels +// // relField = new RelFieldGui(relChar,compTermPanel,"Relationship"); +// // relField = new RelationshipFieldGui(compFieldPanel); + +// // when recurse put in flag for comp button +// diffField = CharFieldGui.makePostCompTermList(charField,searchParams,"Differentia"); +// compFieldPanel.addCharFieldGuiToPanel(diffField); +// //new CharFieldGui(charField,compFieldPanel,"Differentia",false,false); + + + + setGuiFromSelectedModel(); // override FieldPanel preferred size which will set window size @@ -98,6 +143,10 @@ SelectionManager.inst().addCharSelectionListener(new CompCharSelectListener()); } + private void addRelDiffGui() { + relDiffGuis.add(new RelDiffGui()); + } + private void setGuiFromSelectedModel() { OBOClass currentTerm = getModelTerm(); if (currentTerm == null) return; @@ -106,13 +155,28 @@ genusField.setOboClass(getGenusTerm(currentTerm)); // should this happen automatically from setOboClass or is that a burden/inefficiency genusField.setOntologyChooserFromTerm(getGenusTerm(currentTerm)); - //if (modelHasDiff(currentTerm)) - try { relField.setRel(getRel(currentTerm)); } catch (Exception e){} + //if (modelHasDiff(currentTerm)) // should query if temp or real post comp?? + try { - diffField.setOboClass(getDiffTerm(currentTerm)); - diffField.setOntologyChooserFromTerm(getDiffTerm(currentTerm)); - } - catch (Exception e) {} // throws if no diff term + List<RelDiffModel>diffs = getRelDiffs(currentTerm); + + for (int i=0; i<diffs.size(); i++) { + // check that have enough guis for diffs + if (i >= relDiffGuis.size()) addRelDiffGui(); + relDiffGuis.get(i).setRelDiffModel(diffs.get(i)); + } + } + catch (CompEx e) { log().debug("get rel diffs failed "+e); } + + +// for (RelDiffGui rd : relDiffGuis) { +// try { rd.relField.setRel(getRel(currentTerm)); } catch (Exception e){} +// try { +// rd.diffField.setOboClass(getDiffTerm(currentTerm)); +// rd.diffField.setOntologyChooserFromTerm(getDiffTerm(currentTerm)); +// } +// catch (Exception e) {} // throws if no diff term +// } } @@ -161,29 +225,54 @@ return term; } + private class CompEx extends Exception { + private CompEx() {} + private CompEx(String m) { super(m); } + } + + private List<RelDiffModel> getRelDiffs(OBOClass term) throws CompEx { + if (!isPostCompTerm(term)) throw new CompEx(); + List<RelDiffModel>diffs = new ArrayList<RelDiffModel>(4); + for (Object o : term.getParents()) { + OBORestriction r = (OBORestriction)o; + if (isLinkToDiff(r)) { + diffs.add(new RelDiffModel(r)); + } + //return r; + } + if (diffs.isEmpty()) throw new CompEx(); // none found + return diffs; + } + + private boolean isLinkToDiff(OBORestriction r) { + return r.completes() && r.getType() != OBOProperty.IS_A; + } + /** Throws exception if no diff term - for now only returning one diff term can there be more than one */ - private OBOClass getDiffTerm(OBOClass term) throws Exception { + private OBOClass getDiffTerm(OBOClass term) throws CompEx { OBORestriction link = getDiffLink(term); // throws Ex return (OBOClass)link.getParent(); // check downcast? } /** If term is post comp return obo property relationship for differentia otherwise thorws exception */ - private OBOProperty getRel(OBOClass term) throws Exception { - return getDiffLink(term).getType(); // thorws ex + private OBOProperty getRel(OBOClass term) throws CompEx { + return getDiffLink(term).getType(); // throws ex } /** return the oboRestriction link between term and its differentia - exception if there is none. */ - private OBORestriction getDiffLink(OBOClass term) throws Exception { - if (!isPostCompTerm(term)) throw new Exception(); + exception if there is none. + This assumes that there is only one diff - no longer true! + should make specific ex*/ + private OBORestriction getDiffLink(OBOClass term) throws CompEx { + if (!isPostCompTerm(term)) throw new CompEx(); for (Object o : term.getParents()) { OBORestriction r = (OBORestriction)o; if (r.completes() && r.getType() != OBOProperty.IS_A) return r; } - throw new Exception(); // none found + throw new CompEx(); // none found } private void addButtons() { @@ -208,7 +297,7 @@ try { OBOClass pc = makePostCompTerm(); commitTerm(pc); - } catch (Exception ex) { + } catch (CompEx ex) { String m = "Post composition not fully filled in "; if (ex.getMessage()!=null) m+=ex.getMessage(); log().debug(m); // ?? @@ -219,14 +308,28 @@ } } - private OBOClass makePostCompTerm() throws Exception { - // check that we have a valid genus & differentia - OBOClass genusTerm = genusField.getCurrentOboClass(); // throws Ex - OBOClass diffTerm = diffField.getCurrentOboClass(); // throws Ex -// // eventually get from obo relationship? - //OBOProperty partOf = new OBOPropertyImpl("OBO_REL:part_of","part_of"); - OBOProperty rel = relField.getCurrentRelation(); - return OboUtil.makePostCompTerm(genusTerm,rel,diffTerm); + private OBOClass makePostCompTerm() throws CompEx { + try { + // check that we have a valid genus & differentia + OBOClass genusTerm; + try { genusTerm = genusField.getCurrentOboClass(); } + catch (CharFieldGui.CharFieldGuiEx e) { throw new CompEx("Genus is unspecified"); } + OboUtil oboUtil = OboUtil.initPostCompTerm(genusTerm); + for (RelDiffGui rd : relDiffGuis) { + // check if filled in both rel & diff + try { + OBOProperty rel = rd.relField.getCurrentRelation(); // throws ex + OBOClass diffTerm = rd.diffField.getCurrentOboClass(); // throws Ex + oboUtil.addRelDiff(rel,diffTerm); + } + catch (CharFieldGui.CharFieldGuiEx e) {} // try next diff + } + //return OboUtil.makePostCompTerm(genusTerm,rel,diffTerm); + //if we didnt get a complete comp - genus rel diff - then throw ex + if (!oboUtil.hasRelAndDiff()) throw new CompEx("Missing relation or diff"); + return oboUtil.getPostCompTerm(); + } + catch (Exception e) { throw new CompEx(e.getMessage()); } } private void commitTerm(OBOClass postComp) { Modified: phenote/trunk/src/java/phenote/gui/field/RelationCompList.java =================================================================== --- phenote/trunk/src/java/phenote/gui/field/RelationCompList.java 2007-03-30 16:24:52 UTC (rev 439) +++ phenote/trunk/src/java/phenote/gui/field/RelationCompList.java 2007-03-30 20:00:40 UTC (rev 440) @@ -70,10 +70,10 @@ /** Throws exception if there isnt a current relation - for relation lists (post comp), if the user has typed something that isnt yet a rel - hasnt selected a rel */ - OBOProperty getCurrentRelation() throws Exception { - if (currentRel == null) throw new Exception("relation is null"); + OBOProperty getCurrentRelation() throws CharFieldGuiEx { + if (currentRel == null) throw new CharFieldGuiEx("relation is null"); if (!currentRel.getName().equals(getText())) - throw new Exception("(relation "+currentRel.getName()+" and input "+getText()+ + throw new CharFieldGuiEx("(relation "+currentRel.getName()+" and input "+getText()+ " dont match)"); return currentRel; Modified: phenote/trunk/src/java/phenote/gui/field/TermCompList.java =================================================================== --- phenote/trunk/src/java/phenote/gui/field/TermCompList.java 2007-03-30 16:24:52 UTC (rev 439) +++ phenote/trunk/src/java/phenote/gui/field/TermCompList.java 2007-03-30 20:00:40 UTC (rev 440) @@ -179,10 +179,10 @@ /** Throws exception if there isnt a current obo class, if the user has typed something that isnt yet a term - hasnt selected a term */ - OBOClass getCurrentOboClass() throws Exception { - if (currentOboClass == null) throw new Exception("term is null"); + OBOClass getCurrentOboClass() throws CharFieldGuiEx { + if (currentOboClass == null) throw new CharFieldGuiEx("term is null"); if (!currentOboClass.getName().equals(getText())) - throw new Exception("(obo class "+currentOboClass+" and input "+getText()+ + throw new CharFieldGuiEx("(obo class "+currentOboClass+" and input "+getText()+ " dont match)"); return currentOboClass; } Modified: phenote/trunk/src/java/phenote/main/PhenoteVersion.java =================================================================== --- phenote/trunk/src/java/phenote/main/PhenoteVersion.java 2007-03-30 16:24:52 UTC (rev 439) +++ phenote/trunk/src/java/phenote/main/PhenoteVersion.java 2007-03-30 20:00:40 UTC (rev 440) @@ -6,7 +6,7 @@ //private static final float MAJOR_VERSION_NUM = 0.8f; //private static final float SUB_VERSION_NUM = .3f; - private static final String VERSION = "1.1.3 release"; // ?? + private static final String VERSION = "1.2-beta1"; // ?? // type is "dev" or "release" //private static final String type = " dev"; // "release" This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <nl...@us...> - 2007-03-30 16:25:11
|
Revision: 439 http://svn.sourceforge.net/obo/?rev=439&view=rev Author: nlw Date: 2007-03-30 09:24:52 -0700 (Fri, 30 Mar 2007) Log Message: ----------- ncbo config updates...this is the new configuration that ncbo-ers will use for their annotation zfin-standalone config updates - this is the new configuration that zfin wanted to distribute to their collaborators who might make annotaions, only includes ZF anatomy and GO as ontology terms. Modified Paths: -------------- phenote/trunk/conf/ncbo.cfg phenote/trunk/conf/zfin-standalone.cfg Modified: phenote/trunk/conf/ncbo.cfg =================================================================== --- phenote/trunk/conf/ncbo.cfg 2007-03-30 00:02:52 UTC (rev 438) +++ phenote/trunk/conf/ncbo.cfg 2007-03-30 16:24:52 UTC (rev 439) @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<ns:phenote-configuration version="1.1.1" xmlns:ns="phenote/config/xml"> +<ns:phenote-configuration version="1.1.2" xmlns:ns="phenote/config/xml"> <ns:log config-file="conf/log4j-standalone.xml"/> <ns:dataadapter name="phenote.dataadapter.phenosyntax.PhenoSyntaxFileAdapter" enable="true"/> <ns:dataadapter name="phenote.dataadapter.phenoxml.PhenoXmlAdapter" enable="true"/> @@ -15,14 +15,11 @@ <ns:field name="Entity" syntax-abbrev="E" enable="true"> <ns:ontology name="Relationship" file="relationship.obo" is-postcomp-rel="true"/> <ns:ontology name="FMA" file="fma_obo.obo"/> - <ns:ontology name="EHDAA" file="human-dev-anat-abstract.obo" /> + <ns:ontology name="EHDAA" file="human-dev-anat-abstract.obo"/> <ns:ontology name="GO" file="gene_ontology.obo" repos-subdir="genomic-proteomic"/> <ns:ontology name="CL" file="cell.obo" repos-subdir="anatomy/cell_type"/> <ns:ontology name="CHEBI" file="chebi.obo" repos-subdir="chemical"/> </ns:field> - <ns:field name="Stage" syntax-abbrev="T" enable="false"> - <ns:ontology name="Stage" file="zebrafish_anatomy.obo" filter-out="ZFA:"/> - </ns:field> <ns:field name="Quality" syntax-abbrev="Q" enable="true"> <ns:ontology name="PATO" file="quality.obo" repos-subdir="phenotype"/> <ns:ontology name="MP" file="mammalian_phenotype.obo" repos-subdir="phenotype"/> @@ -30,24 +27,13 @@ <ns:field name="Add'l Entity" syntax-abbrev="E2" enable="true"> <ns:ontology name="Relationship" file="relationship.obo" is-postcomp-rel="true"/> <ns:ontology name="FMA" file="fma_obo.obo"/> - <ns:ontology name="EHDAA" file="human-dev-anat-abstract.obo" /> + <ns:ontology name="EHDAA" file="human-dev-anat-abstract.obo"/> <ns:ontology name="GO" file="gene_ontology.obo" repos-subdir="genomic-proteomic"/> <ns:ontology name="CHEBI" file="chebi.obo" repos-subdir="chemical"/> <ns:ontology name="CL" file="cell.obo" repos-subdir="anatomy/cell_type"/> </ns:field> - <ns:field name="Count" syntax-abbrev="C" enable="false"/> - <ns:field name="Measurement" syntax-abbrev="M" enable="false"/> - <ns:field name="Unit" syntax-abbrev="U" enable="false"> - <ns:ontology name="Unit" file="unit.obo" repos-subdir="phenotype"/> - </ns:field> <ns:field name="Abnormal" syntax-abbrev="Tag" enable="true"> <ns:ontology name="Abnormal" file="quality.obo" slim="abnormal_slim"/> </ns:field> <ns:field name="Description" syntax-abbrev="Desc" enable="true"/> - <ns:field name="Absent" syntax-abbrev="Tag" enable="false"> - <ns:ontology name="Absent" file="quality.obo" slim="absent_slim"/> - </ns:field> - <ns:field name="Evidence" syntax-abbrev="EV" enable="false"> - <ns:ontology name="Evidence" file="evidence_code.obo" repos-subdir="."/> - </ns:field> </ns:phenote-configuration> \ No newline at end of file Modified: phenote/trunk/conf/zfin-standalone.cfg =================================================================== --- phenote/trunk/conf/zfin-standalone.cfg 2007-03-30 00:02:52 UTC (rev 438) +++ phenote/trunk/conf/zfin-standalone.cfg 2007-03-30 16:24:52 UTC (rev 439) @@ -1,48 +1,35 @@ -<phenote-configuration version="1.0" xmlns="phenote/config/xml" xmlns:xsi="http://www.w3.org/1999/XMLSchema/instance" schemaLocation="phenote-config.xsd"> - - <dataadapter name="phenote.dataadapter.phenosyntax.PhenoSyntaxFileAdapter" - enable="true"/> - <dataadapter name="phenote.dataadapter.phenoxml.PhenoXmlAdapter" enable="true"/> - <dataadapter name="phenote.dataadapter.nexus.NEXUSAdapter" enable="true"/> - <dataadapter name="phenote.dataadapter.delimited.DelimitedFileAdapter" enable="true"/> - - <log config-file="conf/log4j-standalone.xml"/> - - <uvic-graph enable="false"/> - - <obo-repository url-dir="http://obo.cvs.sourceforge.net/*checkout*/obo/obo/ontology/"/> - - <field name="Pub" syntax-abbrev="PUB" enable="true"/> - - <field name="Genotype" syntax-abbrev="GT" enable="true"/> - - <field name="Genetic Context" file="context.obo" syntax-abbrev="GC" enable="true"/> - - <field name="Entity" syntax-abbrev="E" enable="true"> - <ontology name="Relationship" file="relationship.obo" - is-postcomp-rel="true" repos-subdir="OBO_REL"/> - <ontology name="ZF" file="zebrafish_anatomy.obo" filter-out="ZFS:" - repos-subdir="anatomy/gross_anatomy/animal_gross_anatomy/fish"/> - <ontology name="Human Anatomy" file="fma_obo.obo"/> - <ontology name="GO" file="gene_ontology.obo" repos-subdir="genomic-proteomic"/> - <ontology name="SP" file="spatial.obo"/> - </field> - - <field name="Stage" syntax-abbrev="T" enable="true"> - <ontology name="Stage" file="zebrafish_anatomy.obo" filter-out="ZFA:"/> - </field> - - <field name="Quality" file="quality.obo" syntax-abbrev="Q" repos-subdir="phenotype" - enable="true"/> - - <field name="Absent" file="quality.obo" slim="absent_slim" syntax-abbrev="Tag" - enable="true"/> - <field name="Abnormal" file="quality.obo" slim="abnormal_slim" syntax-abbrev="Tag" - enable="true"/> - - <field name="Evidence" file="evidence_code.obo" syntax-abbrev="EV" repos-subdir="." - enable="true"/> - - <field name="Description" syntax-abbrev="Desc" enable="true"/> - -</phenote-configuration> +<?xml version="1.0" encoding="UTF-8"?> +<ns:phenote-configuration version="1.1.2" xmlns:ns="phenote/config/xml"> + <ns:log config-file="conf/log4j-standalone.xml"/> + <ns:dataadapter name="phenote.dataadapter.phenosyntax.PhenoSyntaxFileAdapter" enable="true"/> + <ns:dataadapter name="phenote.dataadapter.phenoxml.PhenoXmlAdapter" enable="true"/> + <ns:dataadapter name="phenote.dataadapter.nexus.NEXUSAdapter" enable="false"/> + <ns:dataadapter name="phenote.dataadapter.delimited.DelimitedFileAdapter" enable="true"/> + <ns:uvic-graph enable="false"/> + <ns:obo-repository url-dir="http://obo.cvs.sourceforge.net/*checkout*/obo/obo/ontology/"/> + <ns:field name="Pub" syntax-abbrev="PUB" enable="true"/> + <ns:field name="Genotype" syntax-abbrev="GT" enable="true"/> + <ns:field name="Genetic Context" syntax-abbrev="GC" enable="true"> + <ns:ontology name="Genetic Context" file="context.obo"/> + </ns:field> + <ns:field name="Entity" syntax-abbrev="E" enable="true"> + <ns:ontology name="Relationship" file="relationship.obo" repos-subdir="OBO_REL" is-postcomp-rel="true"/> + <ns:ontology name="ZF" file="zebrafish_anatomy.obo" repos-subdir="anatomy/gross_anatomy/animal_gross_anatomy/fish" filter-out="ZFS:"/> + <ns:ontology name="GO" file="gene_ontology.obo" repos-subdir="genomic-proteomic"/> + </ns:field> + <ns:field name="Stage" syntax-abbrev="T" enable="true"> + <ns:ontology name="Stage" file="zebrafish_anatomy.obo" filter-out="ZFA:"/> + </ns:field> + <ns:field name="Quality" syntax-abbrev="Q" enable="true"> + <ns:ontology name="PATO" file="quality.obo" repos-subdir="phenotype"/> + </ns:field> + <ns:field name="Add'l Entity" syntax-abbrev="E2" enable="true"> + <ns:ontology name="Relationship" file="relationship.obo" repos-subdir="OBO_REL" is-postcomp-rel="true"/> + <ns:ontology name="ZF" file="zebrafish_anatomy.obo" repos-subdir="anatomy/gross_anatomy/animal_gross_anatomy/fish" filter-out="ZFS:"/> + <ns:ontology name="GO" file="gene_ontology.obo" repos-subdir="genomic-proteomic"/> + </ns:field> + <ns:field name="Abnormal" syntax-abbrev="Tag" enable="true"> + <ns:ontology name="Abnormal" file="quality.obo" slim="abnormal_slim"/> + </ns:field> + <ns:field name="Description" syntax-abbrev="Desc" enable="true"/> +</ns:phenote-configuration> \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <nl...@us...> - 2007-03-30 00:02:51
|
Revision: 438 http://svn.sourceforge.net/obo/?rev=438&view=rev Author: nlw Date: 2007-03-29 17:02:52 -0700 (Thu, 29 Mar 2007) Log Message: ----------- this is the config file to be used for OMIM curration by members of NCBO team Added Paths: ----------- phenote/trunk/conf/ncbo.cfg Added: phenote/trunk/conf/ncbo.cfg =================================================================== --- phenote/trunk/conf/ncbo.cfg (rev 0) +++ phenote/trunk/conf/ncbo.cfg 2007-03-30 00:02:52 UTC (rev 438) @@ -0,0 +1,53 @@ +<?xml version="1.0" encoding="UTF-8"?> +<ns:phenote-configuration version="1.1.1" xmlns:ns="phenote/config/xml"> + <ns:log config-file="conf/log4j-standalone.xml"/> + <ns:dataadapter name="phenote.dataadapter.phenosyntax.PhenoSyntaxFileAdapter" enable="true"/> + <ns:dataadapter name="phenote.dataadapter.phenoxml.PhenoXmlAdapter" enable="true"/> + <ns:dataadapter name="phenote.dataadapter.nexus.NEXUSAdapter" enable="false"/> + <ns:dataadapter name="phenote.dataadapter.delimited.DelimitedFileAdapter" enable="true"/> + <ns:uvic-graph enable="false"/> + <ns:obo-repository url-dir="http://obo.cvs.sourceforge.net/*checkout*/obo/obo/ontology/"/> + <ns:field name="Pub" syntax-abbrev="PUB" enable="true"/> + <ns:field name="Genotype" syntax-abbrev="GT" enable="true"/> + <ns:field name="Genetic Context" syntax-abbrev="GC" enable="true"> + <ns:ontology name="Genetic Context" file="context.obo"/> + </ns:field> + <ns:field name="Entity" syntax-abbrev="E" enable="true"> + <ns:ontology name="Relationship" file="relationship.obo" is-postcomp-rel="true"/> + <ns:ontology name="FMA" file="fma_obo.obo"/> + <ns:ontology name="EHDAA" file="human-dev-anat-abstract.obo" /> + <ns:ontology name="GO" file="gene_ontology.obo" repos-subdir="genomic-proteomic"/> + <ns:ontology name="CL" file="cell.obo" repos-subdir="anatomy/cell_type"/> + <ns:ontology name="CHEBI" file="chebi.obo" repos-subdir="chemical"/> + </ns:field> + <ns:field name="Stage" syntax-abbrev="T" enable="false"> + <ns:ontology name="Stage" file="zebrafish_anatomy.obo" filter-out="ZFA:"/> + </ns:field> + <ns:field name="Quality" syntax-abbrev="Q" enable="true"> + <ns:ontology name="PATO" file="quality.obo" repos-subdir="phenotype"/> + <ns:ontology name="MP" file="mammalian_phenotype.obo" repos-subdir="phenotype"/> + </ns:field> + <ns:field name="Add'l Entity" syntax-abbrev="E2" enable="true"> + <ns:ontology name="Relationship" file="relationship.obo" is-postcomp-rel="true"/> + <ns:ontology name="FMA" file="fma_obo.obo"/> + <ns:ontology name="EHDAA" file="human-dev-anat-abstract.obo" /> + <ns:ontology name="GO" file="gene_ontology.obo" repos-subdir="genomic-proteomic"/> + <ns:ontology name="CHEBI" file="chebi.obo" repos-subdir="chemical"/> + <ns:ontology name="CL" file="cell.obo" repos-subdir="anatomy/cell_type"/> + </ns:field> + <ns:field name="Count" syntax-abbrev="C" enable="false"/> + <ns:field name="Measurement" syntax-abbrev="M" enable="false"/> + <ns:field name="Unit" syntax-abbrev="U" enable="false"> + <ns:ontology name="Unit" file="unit.obo" repos-subdir="phenotype"/> + </ns:field> + <ns:field name="Abnormal" syntax-abbrev="Tag" enable="true"> + <ns:ontology name="Abnormal" file="quality.obo" slim="abnormal_slim"/> + </ns:field> + <ns:field name="Description" syntax-abbrev="Desc" enable="true"/> + <ns:field name="Absent" syntax-abbrev="Tag" enable="false"> + <ns:ontology name="Absent" file="quality.obo" slim="absent_slim"/> + </ns:field> + <ns:field name="Evidence" syntax-abbrev="EV" enable="false"> + <ns:ontology name="Evidence" file="evidence_code.obo" repos-subdir="."/> + </ns:field> +</ns:phenote-configuration> \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <azu...@us...> - 2007-03-29 22:20:35
|
Revision: 437 http://svn.sourceforge.net/obo/?rev=437&view=rev Author: azurebrd Date: 2007-03-29 15:20:23 -0700 (Thu, 29 Mar 2007) Log Message: ----------- Modified Paths: -------------- phenote/trunk/src/java/phenote/dataadapter/worm/WormAdapter.java Modified: phenote/trunk/src/java/phenote/dataadapter/worm/WormAdapter.java =================================================================== --- phenote/trunk/src/java/phenote/dataadapter/worm/WormAdapter.java 2007-03-29 20:45:19 UTC (rev 436) +++ phenote/trunk/src/java/phenote/dataadapter/worm/WormAdapter.java 2007-03-29 22:20:23 UTC (rev 437) @@ -1,5 +1,7 @@ package phenote.dataadapter.worm; +import java.util.regex.*; + // add http://jdbc.postgresql.org/download/postgresql-8.2-504.jdbc4.jar to trunk/jars/ directory import java.util.ArrayList; @@ -35,6 +37,15 @@ public WormAdapter() { init(); } + // Returns the first substring in input that matches the pattern. Returns null if no match found. + // lifted from http://www.exampledepot.com/egs/java.util.regex/Greedy.html?l=rel + public static String find(String patternStr, CharSequence input) { + Pattern pattern = Pattern.compile(patternStr); + Matcher matcher = pattern.matcher(input); + if (matcher.find()) { return matcher.group(); } + return null; + } + private void init() { // dont HAVE to use CharFieldEnum but it does enforce using same strings // across different data adapters which is good to enforce @@ -87,10 +98,10 @@ // get the phenotype term in timestamp order where the allele and box and column number match try { rs = s.executeQuery("SELECT * FROM "+postgres_table+" WHERE joinkey = '"+query+"' AND alp_box='"+boxI+"' AND alp_column='"+colI+"' ORDER BY alp_timestamp"); } catch (SQLException se) { - System.out.println("We got an exception while executing our query:" + "that probably means our term SQL is invalid"); se.printStackTrace(); System.exit(1); } + System.out.println("We got an exception while executing our query: that probably means our term SQL is invalid"); se.printStackTrace(); System.exit(1); } try { while (rs.next()) { default_value = rs.getString(4); } } // assign the new term value catch (SQLException se) { - System.out.println("We got an exception while getting a result:this " + "shouldn't happen: we've done something really bad."); se.printStackTrace(); System.exit(1); } + System.out.println("We got an exception while getting a "+postgres_table+" result:this shouldn't happen: we've done something really bad."); se.printStackTrace(); System.exit(1); } // System.out.println("Added in function charList term "+query+" column "+colI+" box "+boxI+"."); // comment out later return default_value; } @@ -102,65 +113,72 @@ // get the papers in timestamp order where the allele and box number match try { rs = s.executeQuery("SELECT * FROM alp_paper WHERE joinkey = '"+joinkey+"' AND alp_box='"+boxI+"' ORDER BY alp_timestamp"); } catch (SQLException se) { - System.out.println("We got an exception while executing our joinkey:" + "that probably means our pap SQL is invalid"); se.printStackTrace(); System.exit(1); } + System.out.println("We got an exception while executing our joinkey: that probably means our pap SQL is invalid"); se.printStackTrace(); System.exit(1); } try { while (rs.next()) { paper = rs.getString(3); } } // assign the paper catch (SQLException se) { - System.out.println("We got an exception while getting a result:this " + "shouldn't happen: we've done something really bad."); se.printStackTrace(); System.exit(1); } + System.out.println("We got an exception while getting a paper joinkey "+joinkey+" box "+boxI+" result:this shouldn't happen: we've done something really bad."); + se.printStackTrace(); System.exit(1); } String curator = "No Curator assigned"; rs = null; try { rs = s.executeQuery("SELECT * FROM alp_curator WHERE joinkey = '"+joinkey+"' AND alp_box='"+boxI+"' ORDER BY alp_timestamp"); } catch (SQLException se) { - System.out.println("We got an exception while executing our query:" + "that probably means our cur SQL is invalid"); se.printStackTrace(); System.exit(1); } + System.out.println("We got an exception while executing our query: that probably means our cur SQL is invalid"); se.printStackTrace(); System.exit(1); } try { while (rs.next()) { curator = rs.getString(3); } } catch (SQLException se) { - System.out.println("We got an exception while getting a result:this " + "shouldn't happen: we've done something really bad."); se.printStackTrace(); System.exit(1); } + System.out.println("We got an exception while getting a curator joinkey "+joinkey+" box "+boxI+" result:this shouldn't happen: we've done something really bad."); + se.printStackTrace(); System.exit(1); } String person = "No Person assigned"; rs = null; try { rs = s.executeQuery("SELECT * FROM alp_person WHERE joinkey = '"+joinkey+"' AND alp_box='"+boxI+"' ORDER BY alp_timestamp"); } catch (SQLException se) { - System.out.println("We got an exception while executing our query:" + "that probably means our per SQL is invalid"); se.printStackTrace(); System.exit(1); } + System.out.println("We got an exception while executing our query: that probably means our per SQL is invalid"); se.printStackTrace(); System.exit(1); } try { while (rs.next()) { person = rs.getString(3); } } catch (SQLException se) { - System.out.println("We got an exception while getting a result:this " + "shouldn't happen: we've done something really bad."); se.printStackTrace(); System.exit(1); } + System.out.println("We got an exception while getting a person joinkey "+joinkey+" box "+boxI+" result:this shouldn't happen: we've done something really bad."); + se.printStackTrace(); System.exit(1); } String phen_text_remark = "No Phenotype Text Remark assigned"; rs = null; try { rs = s.executeQuery("SELECT * FROM alp_phenotype WHERE joinkey = '"+joinkey+"' AND alp_box='"+boxI+"' ORDER BY alp_timestamp"); } catch (SQLException se) { - System.out.println("We got an exception while executing our query:" + "that probably means our ptr SQL is invalid"); se.printStackTrace(); System.exit(1); } + System.out.println("We got an exception while executing our query: that probably means our ptr SQL is invalid"); se.printStackTrace(); System.exit(1); } try { while (rs.next()) { phen_text_remark = rs.getString(3); } } catch (SQLException se) { - System.out.println("We got an exception while getting a result:this " + "shouldn't happen: we've done something really bad."); se.printStackTrace(); System.exit(1); } + System.out.println("We got an exception while getting a phenotype joinkey "+joinkey+" box "+boxI+" result:this shouldn't happen: we've done something really bad."); + se.printStackTrace(); System.exit(1); } String remark = "No Other Remark assigned"; rs = null; try { rs = s.executeQuery("SELECT * FROM alp_remark WHERE joinkey = '"+joinkey+"' AND alp_box='"+boxI+"' ORDER BY alp_timestamp"); } catch (SQLException se) { - System.out.println("We got an exception while executing our query:" + "that probably means our orem SQL is invalid"); se.printStackTrace(); System.exit(1); } + System.out.println("We got an exception while executing our query: that probably means our orem SQL is invalid"); se.printStackTrace(); System.exit(1); } try { while (rs.next()) { remark = rs.getString(3); } } catch (SQLException se) { - System.out.println("We got an exception while getting a result:this " + "shouldn't happen: we've done something really bad."); se.printStackTrace(); System.exit(1); } + System.out.println("We got an exception while getting a remark joinkey "+joinkey+" box "+boxI+" result:this shouldn't happen: we've done something really bad."); + se.printStackTrace(); System.exit(1); } String genetic_interaction = "No Genetic Interaction assigned"; rs = null; try { rs = s.executeQuery("SELECT * FROM alp_intx_desc WHERE joinkey = '"+joinkey+"' AND alp_box='"+boxI+"' ORDER BY alp_timestamp"); } catch (SQLException se) { - System.out.println("We got an exception while executing our query:" + "that probably means our gint SQL is invalid"); se.printStackTrace(); System.exit(1); } + System.out.println("We got an exception while executing our query: that probably means our gint SQL is invalid"); se.printStackTrace(); System.exit(1); } try { while (rs.next()) { genetic_interaction = rs.getString(3); } } catch (SQLException se) { - System.out.println("We got an exception while getting a result:this " + "shouldn't happen: we've done something really bad."); se.printStackTrace(); System.exit(1); } + System.out.println("We got an exception while getting a intx_desc joinkey "+joinkey+" box "+boxI+" result:this shouldn't happen: we've done something really bad."); + se.printStackTrace(); System.exit(1); } int columns = 0; // the number of columns in that box rs = null; // grab the highest number column for that box and that allele try { rs = s.executeQuery("SELECT alp_column FROM alp_term WHERE joinkey = '"+joinkey+"' AND alp_box = '"+boxI+"' ORDER BY alp_column DESC"); } catch (SQLException se) { - System.out.println("We got an exception while executing our query:" + "that probably means our column SQL is invalid"); se.printStackTrace(); System.exit(1); } - try { rs.next(); { columns = rs.getInt(1); } } // assign the highest number column for that box and that allele to the number of columns + System.out.println("We got an exception while executing our query: that probably means our column SQL is invalid"); se.printStackTrace(); System.exit(1); } + try { if (rs.next()) { { columns = rs.getInt(1); } } } // assign the highest number column for that box and that allele to the number of columns catch (SQLException se) { - System.out.println("We got an exception while getting a result:this " + "shouldn't happen: we've done something really bad."); se.printStackTrace(); System.exit(1); } + System.out.println("We got an exception while getting a column/term joinkey "+joinkey+" box "+boxI+" result:this shouldn't happen: we've done something really bad."); + se.printStackTrace(); System.exit(1); } // System.out.println("We have "+columns+" columns in box "+boxI+"."); // comment out later @@ -278,7 +296,8 @@ // System.out.println(rs.getString(1) + "\t" + rs.getString(2) + "\t" + rs.getString(3)); // comment out later foundAllele++; } } // if there's a result in postgres we have found an allele catch (SQLException se) { - System.out.println("We got an exception while getting a result:this shouldn't happen: we've done something really bad."); se.printStackTrace(); System.exit(1); } + System.out.println("We got an exception while getting a tempname joinkey "+joinkey+" result:this shouldn't happen: we've done something really bad."); + se.printStackTrace(); System.exit(1); } if (foundAllele <= 0) { throw new DataAdapterEx("Worm query of "+joinkey+" of field "+field+" has no match in postgres"); } // if there is no match for the allele in postgres else { // if there is a match @@ -286,10 +305,11 @@ rs = null; // init result from postgres query try { rs = s.executeQuery("SELECT alp_box FROM alp_curator WHERE joinkey = '"+joinkey+"' ORDER BY alp_box DESC"); } // grab the highest number box for that allele catch (SQLException se) { - System.out.println("We got an exception while executing our query:" + "that probably means our SQL is invalid"); se.printStackTrace(); System.exit(1); } + System.out.println("We got an exception while executing our query: that probably means our SQL is invalid"); se.printStackTrace(); System.exit(1); } try { rs.next(); { boxes = rs.getInt(1); } } // assign the highest number box for that joinkey to the number of boxes catch (SQLException se) { - System.out.println("We got an exception while getting a result:this " + "shouldn't happen: we've done something really bad."); se.printStackTrace(); System.exit(1); } + System.out.println("We got an exception while getting a curator joinkey "+joinkey+" result:this shouldn't happen: we've done something really bad."); + se.printStackTrace(); System.exit(1); } // System.out.println("We have "+boxes+" boxes"); // comment out later for (int boxI=1; boxI<boxes+1; boxI++) { // for each of those boxes charList = queryPostgresCharacterList(charList, s, joinkey, boxI); @@ -302,17 +322,20 @@ Statement s = null; try { s = c.createStatement(); } catch (SQLException se) { - System.out.println("We got an exception while creating a statement:" + "that probably means we're no longer connected."); se.printStackTrace(); System.exit(1); } + System.out.println("We got an exception while creating a statement: that probably means we're no longer connected."); se.printStackTrace(); System.exit(1); } Statement s2 = null; try { s2 = c.createStatement(); } catch (SQLException se) { - System.out.println("We got an exception while creating a statement:" + "that probably means we're no longer connected."); se.printStackTrace(); System.exit(1); } + System.out.println("We got an exception while creating a statement: that probably means we're no longer connected."); se.printStackTrace(); System.exit(1); } + String match = find("WBPaper[0-9]*", query); // Find a WBPaper followed by any amount of digits + if (match != null) { query = match; } // query for this, otherwise keep the default value +System.out.println("Going to query for "+query+"."); int foundPaper = 0; // flag if there are any papers in postgres that match, otherwise give an error warning ResultSet rs = null; // initialize result of query try { rs = s2.executeQuery("SELECT DISTINCT(joinkey), alp_box FROM alp_paper WHERE alp_paper ~ '"+query+"' ORDER BY joinkey;"); } // get the alleles from a paper catch (SQLException se) { - System.out.println("We got an exception while executing our query:" + "that probably means our SQL is invalid"); se.printStackTrace(); System.exit(1); } + System.out.println("We got an exception while executing our query: that probably means our SQL is invalid"); se.printStackTrace(); System.exit(1); } try { if (rs.next()) { foundPaper++; } } catch (SQLException se) { System.out.println("We got an exception while getting a publication query result:this shouldn't happen: we've done something really bad."); se.printStackTrace(); System.exit(1); } @@ -321,13 +344,13 @@ ResultSet rs2 = null; // initialize result of query try { rs2 = s2.executeQuery("SELECT DISTINCT(joinkey), alp_box FROM alp_paper WHERE alp_paper ~ '"+query+"' ORDER BY joinkey;"); } // get the alleles from a paper catch (SQLException se) { - System.out.println("We got an exception while executing our query:" + "that probably means our SQL is invalid"); se.printStackTrace(); System.exit(1); } + System.out.println("We got an exception while executing our query: that probably means our SQL is invalid"); se.printStackTrace(); System.exit(1); } try { while (rs2.next()) { // while there's data in postgres String joinkey = "No Allele assigned for Publication "+query+"."; // initialize allele in each phenote character Row int boxI = 0; joinkey = rs2.getString(1); // get the allele from postgres boxI = rs2.getInt(2); // get the big box from postgres - charList = queryPostgresCharacterList(charList, s, joinkey, boxI); + charList = queryPostgresCharacterList(charList, s, joinkey, boxI); } } catch (SQLException se) { System.out.println("We got an exception while getting a publication query result:this shouldn't happen: we've done something really bad."); se.printStackTrace(); System.exit(1); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mg...@us...> - 2007-03-29 20:45:19
|
Revision: 436 http://svn.sourceforge.net/obo/?rev=436&view=rev Author: mgibson Date: 2007-03-29 13:45:19 -0700 (Thu, 29 Mar 2007) Log Message: ----------- Tagging the 1.1 (1.1.3) release of phenote - config update,tabbed pane, delimited, query data adap... Added Paths: ----------- phenote/tags/release-1.1/ Copied: phenote/tags/release-1.1 (from rev 435, phenote/trunk) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mg...@us...> - 2007-03-29 20:41:32
|
Revision: 435 http://svn.sourceforge.net/obo/?rev=435&view=rev Author: mgibson Date: 2007-03-29 13:41:27 -0700 (Thu, 29 Mar 2007) Log Message: ----------- putting "release" in version string for release ??? Modified Paths: -------------- phenote/trunk/src/java/phenote/main/PhenoteVersion.java Modified: phenote/trunk/src/java/phenote/main/PhenoteVersion.java =================================================================== --- phenote/trunk/src/java/phenote/main/PhenoteVersion.java 2007-03-29 20:08:26 UTC (rev 434) +++ phenote/trunk/src/java/phenote/main/PhenoteVersion.java 2007-03-29 20:41:27 UTC (rev 435) @@ -6,7 +6,7 @@ //private static final float MAJOR_VERSION_NUM = 0.8f; //private static final float SUB_VERSION_NUM = .3f; - private static final String VERSION = "1.1.3"; // ?? + private static final String VERSION = "1.1.3 release"; // ?? // type is "dev" or "release" //private static final String type = " dev"; // "release" This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mg...@us...> - 2007-03-29 20:08:26
|
Revision: 434 http://svn.sourceforge.net/obo/?rev=434&view=rev Author: mgibson Date: 2007-03-29 13:08:26 -0700 (Thu, 29 Mar 2007) Log Message: ----------- fixed cut paste buttons for mac apple cvx - lost on workaround for jcombo bug using metal look and feel - now loads keymap for menu shortcut - done in free text field but could be done anywhere actually - should probably move to Phenote? Modified Paths: -------------- phenote/trunk/src/java/phenote/gui/field/FreeTextField.java phenote/trunk/src/java/phenote/main/Phenote.java phenote/trunk/src/java/phenote/main/PhenoteVersion.java Modified: phenote/trunk/src/java/phenote/gui/field/FreeTextField.java =================================================================== --- phenote/trunk/src/java/phenote/gui/field/FreeTextField.java 2007-03-29 20:01:28 UTC (rev 433) +++ phenote/trunk/src/java/phenote/gui/field/FreeTextField.java 2007-03-29 20:08:26 UTC (rev 434) @@ -10,7 +10,14 @@ import java.awt.datatransfer.Transferable; import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; + +import java.awt.event.InputEvent; +import javax.swing.KeyStroke; +import javax.swing.text.DefaultEditorKit; + +import javax.swing.text.JTextComponent; import javax.swing.JTextField; +import javax.swing.text.Keymap; import javax.swing.event.DocumentListener; import javax.swing.event.DocumentEvent; @@ -36,16 +43,40 @@ super(charField); //charFieldGui = cfg; textField = new JTextField(35); + //textField.setKeymap(phenote.main.Phenote.defaultKeymap); didnt work textField.setMinimumSize(CharFieldGui.inputSize); //textField.setPreferredSize(CharFieldGui.inputSize); textField.setEditable(true); textField.getDocument().addDocumentListener(new TextFieldDocumentListener()); textField.addFocusListener(new FreeFocusListener()); - textField.addKeyListener(new TextKeyListener()); + //textField.addKeyListener(new TextKeyListener()); + loadKeyMap(); // mac cut copy paste } - - + private static final int shortcut = + Toolkit.getDefaultToolkit().getMenuShortcutKeyMask(); + + JTextComponent.KeyBinding[] defaultBindings = { + new JTextComponent.KeyBinding( + KeyStroke.getKeyStroke(KeyEvent.VK_C, shortcut), + DefaultEditorKit.copyAction), + new JTextComponent.KeyBinding( + KeyStroke.getKeyStroke(KeyEvent.VK_V, shortcut), + DefaultEditorKit.pasteAction), + new JTextComponent.KeyBinding( + KeyStroke.getKeyStroke(KeyEvent.VK_X, shortcut), + DefaultEditorKit.cutAction), + }; + + + /** actually i think this only needs to happen once per session - this reinstates + apples apple c,v,x that gets lost in setting look & feel to metal to + alleviate jcombo apple bug */ + private void loadKeyMap() { + Keymap k = textField.getKeymap(); + JTextComponent.loadKeymap(k, defaultBindings, textField.getActions()); + } + //JTextField getComponent() { return textField; } protected Component getUserInputGui() { return textField; } Modified: phenote/trunk/src/java/phenote/main/Phenote.java =================================================================== --- phenote/trunk/src/java/phenote/main/Phenote.java 2007-03-29 20:01:28 UTC (rev 433) +++ phenote/trunk/src/java/phenote/main/Phenote.java 2007-03-29 20:08:26 UTC (rev 434) @@ -16,6 +16,9 @@ import javax.swing.plaf.metal.MetalLookAndFeel; import java.io.FileNotFoundException; +// import javax.swing.JTextField; +// import javax.swing.text.Keymap; + import org.apache.log4j.Logger; import org.apache.log4j.xml.DOMConfigurator; @@ -43,6 +46,8 @@ private SelectionHistory selectionHistory; private CommandLine commandLine = CommandLine.inst(); private JFrame frame; + + // public static Keymap defaultKeymap; public static void main(String[] args) { @@ -50,7 +55,15 @@ System.out.println("This is Phenote version "+PhenoteVersion.versionString()); // default mac look & feel is "Mac OS X", but the JComboBox is buggy try { +// JTextField t = new JTextField(); +// defaultKeymap = t.getKeymap(); +// System.out.println("default keymap "+defaultKeymap); + //System.out.println("default shortcut "+java.awt.Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()); UIManager.setLookAndFeel(new MetalLookAndFeel()); + //System.out.println("metal shortcut "+java.awt.Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()); +// t = new JTextField(); +// Keymap k = t.getKeymap(); +// System.out.println("metal keymap "+k); } catch (UnsupportedLookAndFeelException e) { System.out.println("Failed to set to Java/Metal look & feel"); Modified: phenote/trunk/src/java/phenote/main/PhenoteVersion.java =================================================================== --- phenote/trunk/src/java/phenote/main/PhenoteVersion.java 2007-03-29 20:01:28 UTC (rev 433) +++ phenote/trunk/src/java/phenote/main/PhenoteVersion.java 2007-03-29 20:08:26 UTC (rev 434) @@ -6,7 +6,7 @@ //private static final float MAJOR_VERSION_NUM = 0.8f; //private static final float SUB_VERSION_NUM = .3f; - private static final String VERSION = "1.1.2"; // ?? + private static final String VERSION = "1.1.3"; // ?? // type is "dev" or "release" //private static final String type = " dev"; // "release" This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <azu...@us...> - 2007-03-29 20:01:28
|
Revision: 433 http://svn.sourceforge.net/obo/?rev=433&view=rev Author: azurebrd Date: 2007-03-29 13:01:28 -0700 (Thu, 29 Mar 2007) Log Message: ----------- Modified Paths: -------------- phenote/trunk/src/java/phenote/dataadapter/worm/WormAdapter.java Modified: phenote/trunk/src/java/phenote/dataadapter/worm/WormAdapter.java =================================================================== --- phenote/trunk/src/java/phenote/dataadapter/worm/WormAdapter.java 2007-03-28 22:22:39 UTC (rev 432) +++ phenote/trunk/src/java/phenote/dataadapter/worm/WormAdapter.java 2007-03-29 20:01:28 UTC (rev 433) @@ -12,7 +12,7 @@ import phenote.dataadapter.DataAdapterEx; import phenote.dataadapter.QueryableDataAdapterI; -// import phenote.datamodel.CharacterI; +import phenote.datamodel.CharacterI; import phenote.datamodel.CharacterList; import phenote.datamodel.Character; import phenote.datamodel.CharFieldException; @@ -43,8 +43,46 @@ queryableFields.add(CharFieldEnum.ALLELE.getName()); // "Allele" // should their be a check that the current char fields have pub & allele? } + /** return true if data adapter can query for the char field */ + public boolean isFieldQueryable(String field) { + return queryableFields.contains(field); + } + private Connection connectToDB() { + System.out.println("Checking if Driver is registered with DriverManager."); // open postgres database connection + try { + Class.forName("org.postgresql.Driver"); + } catch (ClassNotFoundException cnfe) { + System.out.println("Couldn't find the driver!"); + System.out.println("Let's print a stack trace, and exit."); + cnfe.printStackTrace(); + System.exit(1); + } + System.out.println("Registered the driver ok, so let's make a connection."); + Connection c = null; + try { + // The second and third arguments are the username and password, + // respectively. They should be whatever is necessary to connect + // to the database. + // c = DriverManager.getConnection("jdbc:postgresql://andiamo.caltech.edu/testdb", "postgres", ""); + // c = DriverManager.getConnection("jdbc:postgresql://131.215.52.86:5432/testdb", "postgres", ""); // andiamo, if postgres is running there + c = DriverManager.getConnection("jdbc:postgresql://131.215.52.76:5432/testdb", "postgres", ""); // tazendra + // c = DriverManager.getConnection("jdbc:postgresql://localhost/testdb", "postgres", ""); // with /usr/local/pgsql/data/postgresql.conf set to localhost + //c = DriverManager.getConnection("jdbc:postgresql://localhost/booktown", "username", "password"); // sample + } catch (SQLException se) { + System.out.println("Couldn't connect: print out a stack trace and exit."); + se.printStackTrace(); + System.exit(1); + } + if (c != null) + System.out.println("Hooray! We connected to the database!"); + else + System.out.println("We should never get here."); + return c; + } // private Connection connectToDB + private String queryPostgresCharacter(Statement s, String postgres_table, String default_value, String query, int boxI, int colI) { + // get the value corresponding to a phenote cell from a postgres table by box and column ResultSet rs = null; // intialize postgres query result // get the phenotype term in timestamp order where the allele and box and column number match try { rs = s.executeQuery("SELECT * FROM "+postgres_table+" WHERE joinkey = '"+query+"' AND alp_box='"+boxI+"' AND alp_column='"+colI+"' ORDER BY alp_timestamp"); } @@ -57,10 +95,160 @@ return default_value; } - /** return true if data adapter can query for the char field */ - public boolean isFieldQueryable(String field) { - return queryableFields.contains(field); - } + private CharacterListI queryPostgresCharacterList(CharacterListI charList, Statement s, String joinkey, int boxI) { + // populate a phenote character based on postgres value by joinkey and box, then append to character list + String paper = "No Paper assigned"; // initialize paper value + ResultSet rs = null; // intialize postgres query result + // get the papers in timestamp order where the allele and box number match + try { rs = s.executeQuery("SELECT * FROM alp_paper WHERE joinkey = '"+joinkey+"' AND alp_box='"+boxI+"' ORDER BY alp_timestamp"); } + catch (SQLException se) { + System.out.println("We got an exception while executing our joinkey:" + "that probably means our pap SQL is invalid"); se.printStackTrace(); System.exit(1); } + try { while (rs.next()) { paper = rs.getString(3); } } // assign the paper + catch (SQLException se) { + System.out.println("We got an exception while getting a result:this " + "shouldn't happen: we've done something really bad."); se.printStackTrace(); System.exit(1); } + + String curator = "No Curator assigned"; + rs = null; + try { rs = s.executeQuery("SELECT * FROM alp_curator WHERE joinkey = '"+joinkey+"' AND alp_box='"+boxI+"' ORDER BY alp_timestamp"); } + catch (SQLException se) { + System.out.println("We got an exception while executing our query:" + "that probably means our cur SQL is invalid"); se.printStackTrace(); System.exit(1); } + try { while (rs.next()) { curator = rs.getString(3); } } + catch (SQLException se) { + System.out.println("We got an exception while getting a result:this " + "shouldn't happen: we've done something really bad."); se.printStackTrace(); System.exit(1); } + + String person = "No Person assigned"; + rs = null; + try { rs = s.executeQuery("SELECT * FROM alp_person WHERE joinkey = '"+joinkey+"' AND alp_box='"+boxI+"' ORDER BY alp_timestamp"); } + catch (SQLException se) { + System.out.println("We got an exception while executing our query:" + "that probably means our per SQL is invalid"); se.printStackTrace(); System.exit(1); } + try { while (rs.next()) { person = rs.getString(3); } } + catch (SQLException se) { + System.out.println("We got an exception while getting a result:this " + "shouldn't happen: we've done something really bad."); se.printStackTrace(); System.exit(1); } + + String phen_text_remark = "No Phenotype Text Remark assigned"; + rs = null; + try { rs = s.executeQuery("SELECT * FROM alp_phenotype WHERE joinkey = '"+joinkey+"' AND alp_box='"+boxI+"' ORDER BY alp_timestamp"); } + catch (SQLException se) { + System.out.println("We got an exception while executing our query:" + "that probably means our ptr SQL is invalid"); se.printStackTrace(); System.exit(1); } + try { while (rs.next()) { phen_text_remark = rs.getString(3); } } + catch (SQLException se) { + System.out.println("We got an exception while getting a result:this " + "shouldn't happen: we've done something really bad."); se.printStackTrace(); System.exit(1); } + + String remark = "No Other Remark assigned"; + rs = null; + try { rs = s.executeQuery("SELECT * FROM alp_remark WHERE joinkey = '"+joinkey+"' AND alp_box='"+boxI+"' ORDER BY alp_timestamp"); } + catch (SQLException se) { + System.out.println("We got an exception while executing our query:" + "that probably means our orem SQL is invalid"); se.printStackTrace(); System.exit(1); } + try { while (rs.next()) { remark = rs.getString(3); } } + catch (SQLException se) { + System.out.println("We got an exception while getting a result:this " + "shouldn't happen: we've done something really bad."); se.printStackTrace(); System.exit(1); } + + String genetic_interaction = "No Genetic Interaction assigned"; + rs = null; + try { rs = s.executeQuery("SELECT * FROM alp_intx_desc WHERE joinkey = '"+joinkey+"' AND alp_box='"+boxI+"' ORDER BY alp_timestamp"); } + catch (SQLException se) { + System.out.println("We got an exception while executing our query:" + "that probably means our gint SQL is invalid"); se.printStackTrace(); System.exit(1); } + try { while (rs.next()) { genetic_interaction = rs.getString(3); } } + catch (SQLException se) { + System.out.println("We got an exception while getting a result:this " + "shouldn't happen: we've done something really bad."); se.printStackTrace(); System.exit(1); } + + int columns = 0; // the number of columns in that box + rs = null; + // grab the highest number column for that box and that allele + try { rs = s.executeQuery("SELECT alp_column FROM alp_term WHERE joinkey = '"+joinkey+"' AND alp_box = '"+boxI+"' ORDER BY alp_column DESC"); } + catch (SQLException se) { + System.out.println("We got an exception while executing our query:" + "that probably means our column SQL is invalid"); se.printStackTrace(); System.exit(1); } + try { rs.next(); { columns = rs.getInt(1); } } // assign the highest number column for that box and that allele to the number of columns + catch (SQLException se) { + System.out.println("We got an exception while getting a result:this " + "shouldn't happen: we've done something really bad."); se.printStackTrace(); System.exit(1); } + +// System.out.println("We have "+columns+" columns in box "+boxI+"."); // comment out later + + try { + for (int colI=1; colI<columns+1; colI++) { // for each of those columns + Character c1 = new Character(); // create a new character for a phenote row + c1.setValue("Allele",joinkey); // assign the allele + c1.setValue("Pub",paper); + c1.setValue("Curator",curator); + c1.setValue("Person",person); + c1.setValue("Phenotype Text Remark",phen_text_remark); + c1.setValue("Other Remark",remark); + c1.setValue("Genetic Interaction",genetic_interaction); + String postgres_value = "No Phenotype assigned"; + String postgres_table = "alp_term"; + postgres_value = queryPostgresCharacter(s, postgres_table, postgres_value, joinkey, boxI, colI); + c1.setValue("Phenotype",postgres_value); // assign the queried value + postgres_table = "alp_phen_remark"; postgres_value = "No Phenotype Remark assigned"; + postgres_value = queryPostgresCharacter(s, postgres_table, postgres_value, joinkey, boxI, colI); + c1.setValue("Phenotype Remark",postgres_value); // assign the queried value + postgres_table = "alp_anat_term"; postgres_value = "No Anatomy assigned"; + postgres_value = queryPostgresCharacter(s, postgres_table, postgres_value, joinkey, boxI, colI); +// c1.setValue("Anatomy",postgres_value); // this doesn't work, assigning whatever term name(s) is in postgres +// c1.setValue("Anatomy","WBbt:0004758"); // this works, assigning a term ID + postgres_table = "alp_lifestage"; postgres_value = "No Stage assigned"; + postgres_value = queryPostgresCharacter(s, postgres_table, postgres_value, joinkey, boxI, colI); + c1.setValue("Stage",postgres_value); // assign the queried value + postgres_table = "alp_nature"; postgres_value = "No Nature of Allele assigned"; + postgres_value = queryPostgresCharacter(s, postgres_table, postgres_value, joinkey, boxI, colI); + c1.setValue("Allele Nature",postgres_value); // assign the queried value + postgres_table = "alp_func"; postgres_value = "No Functional Change assigned"; + postgres_value = queryPostgresCharacter(s, postgres_table, postgres_value, joinkey, boxI, colI); + c1.setValue("Functional Change",postgres_value); // assign the queried value + postgres_table = "alp_temperature"; postgres_value = "No Temperature assigned"; + postgres_value = queryPostgresCharacter(s, postgres_table, postgres_value, joinkey, boxI, colI); + c1.setValue("Temperature",postgres_value); // assign the queried value + postgres_table = "alp_preparation"; postgres_value = "No Preparation assigned"; + postgres_value = queryPostgresCharacter(s, postgres_table, postgres_value, joinkey, boxI, colI); + c1.setValue("Preparation",postgres_value); // assign the queried value + postgres_table = "alp_penetrance"; postgres_value = "No Penetrance assigned"; + postgres_value = queryPostgresCharacter(s, postgres_table, postgres_value, joinkey, boxI, colI); + c1.setValue("Penetrance",postgres_value); // assign the queried value + postgres_table = "alp_percent"; postgres_value = "No Penetrance Percent assigned"; + postgres_value = queryPostgresCharacter(s, postgres_table, postgres_value, joinkey, boxI, colI); + c1.setValue("Penetrance Percent",postgres_value); // assign the queried value + postgres_table = "alp_range"; postgres_value = "No Penetrance Range assigned"; + postgres_value = queryPostgresCharacter(s, postgres_table, postgres_value, joinkey, boxI, colI); + c1.setValue("Penetrance Range",postgres_value); // assign the queried value + postgres_table = "alp_quantity_remark"; postgres_value = "No Quantity Remark assigned"; + postgres_value = queryPostgresCharacter(s, postgres_table, postgres_value, joinkey, boxI, colI); + c1.setValue("Quantity Remark",postgres_value); // assign the queried value + postgres_table = "alp_heat_sens"; postgres_value = "No Heat Sensitive assigned"; + postgres_value = queryPostgresCharacter(s, postgres_table, postgres_value, joinkey, boxI, colI); + c1.setValue("Heat Sensitive",postgres_value); // assign the queried value + postgres_table = "alp_heat_degree"; postgres_value = "No Heat Sensitive Degree assigned"; + postgres_value = queryPostgresCharacter(s, postgres_table, postgres_value, joinkey, boxI, colI); + c1.setValue("Heat Sensitive Degree",postgres_value); // assign the queried value + postgres_table = "alp_cold_sens"; postgres_value = "No Cold Sensitive assigned"; + postgres_value = queryPostgresCharacter(s, postgres_table, postgres_value, joinkey, boxI, colI); + c1.setValue("Cold Sensitive",postgres_value); // assign the queried value + postgres_table = "alp_cold_degree"; postgres_value = "No Cold Sensitive Degree assigned"; + postgres_value = queryPostgresCharacter(s, postgres_table, postgres_value, joinkey, boxI, colI); + c1.setValue("Cold Sensitive Degree",postgres_value); // assign the queried value + postgres_table = "alp_mat_effect"; postgres_value = "No Maternal Effect assigned"; + postgres_value = queryPostgresCharacter(s, postgres_table, postgres_value, joinkey, boxI, colI); + c1.setValue("Maternal Effect",postgres_value); // assign the queried value + postgres_table = "alp_pat_effect"; postgres_value = "No Paternal Effect assigned"; + postgres_value = queryPostgresCharacter(s, postgres_table, postgres_value, joinkey, boxI, colI); + c1.setValue("Paternal Effect",postgres_value); // assign the queried value + postgres_table = "alp_genotype"; postgres_value = "No Genotype assigned"; + postgres_value = queryPostgresCharacter(s, postgres_table, postgres_value, joinkey, boxI, colI); + c1.setValue("Genotype",postgres_value); // assign the queried value + postgres_table = "alp_strain"; postgres_value = "No Strain assigned"; + postgres_value = queryPostgresCharacter(s, postgres_table, postgres_value, joinkey, boxI, colI); + c1.setValue("Strain",postgres_value); // assign the queried value + postgres_table = "alp_delivered"; postgres_value = "No Delivered By assigned"; + postgres_value = queryPostgresCharacter(s, postgres_table, postgres_value, joinkey, boxI, colI); + c1.setValue("Delivered By",postgres_value); // assign the queried value + charList.add(c1); // add the character to the character list + } // for (int colI=1; colI<columns; colI++) + } + catch (TermNotFoundException e) { + System.out.println("Term Not Found Exception, assigning characters by Allele."); } + catch (CharFieldException e) { + System.out.println("Char Field Exception, assigning characters by Allele."); } + return charList; + } // private CharacterListI queryPostgresCharacterList(CharacterList charList, Statement s, String joinkey, int boxI) + public CharacterListI query(String field, String query) throws DataAdapterEx { // String m = "Worm adapter query not yet implemented. field: "+field+" query: "+query; // JOptionPane.showMessageDialog(null,m,"Worm stub",JOptionPane.INFORMATION_MESSAGE); @@ -73,48 +261,15 @@ CharacterListI charList = new CharacterList(); // create the CharacterList that we will return if (field.equals(alleleString)) { // if querying the allele, get allele data - System.out.println("Checking if Driver is registered with DriverManager."); // open postgres database connection - try { - Class.forName("org.postgresql.Driver"); - } catch (ClassNotFoundException cnfe) { - System.out.println("Couldn't find the driver!"); - System.out.println("Let's print a stack trace, and exit."); - cnfe.printStackTrace(); - System.exit(1); - } - System.out.println("Registered the driver ok, so let's make a connection."); - Connection c = null; - try { - // The second and third arguments are the username and password, - // respectively. They should be whatever is necessary to connect - // to the database. - // c = DriverManager.getConnection("jdbc:postgresql://andiamo.caltech.edu/testdb", "postgres", ""); - // c = DriverManager.getConnection("jdbc:postgresql://131.215.52.86:5432/testdb", "postgres", ""); // andiamo, if postgres is running there - c = DriverManager.getConnection("jdbc:postgresql://131.215.52.76:5432/testdb", "postgres", ""); // tazendra - // c = DriverManager.getConnection("jdbc:postgresql://localhost/testdb", "postgres", ""); // with /usr/local/pgsql/data/postgresql.conf set to localhost - //c = DriverManager.getConnection("jdbc:postgresql://localhost/booktown", "username", "password"); // sample - } catch (SQLException se) { - System.out.println("Couldn't connect: print out a stack trace and exit."); - se.printStackTrace(); - System.exit(1); - } - if (c != null) - System.out.println("Hooray! We connected to the database!"); - else - System.out.println("We should never get here."); + Connection c = connectToDB(); Statement s = null; - try { - s = c.createStatement(); - } catch (SQLException se) { - System.out.println("We got an exception while creating a statement:" + - "that probably means we're no longer connected."); - se.printStackTrace(); - System.exit(1); - } // end opening postgres database connection + try { s = c.createStatement(); } + catch (SQLException se) { + System.out.println("We got an exception while creating a statement: that probably means we're no longer connected."); se.printStackTrace(); System.exit(1); } - ResultSet rs = null; // intialize postgres query result - try { rs = s.executeQuery("SELECT * FROM alp_tempname WHERE alp_tempname = '"+query+"'"); } // find the allele that matches the queried allele + String joinkey = query; + try { rs = s.executeQuery("SELECT * FROM alp_tempname WHERE alp_tempname = '"+joinkey+"'"); } // find the allele that matches the queried allele catch (SQLException se) { System.out.println("We got an exception while executing our query: that probably means our SQL is invalid"); se.printStackTrace(); System.exit(1); } int foundAllele = 0; @@ -125,183 +280,25 @@ catch (SQLException se) { System.out.println("We got an exception while getting a result:this shouldn't happen: we've done something really bad."); se.printStackTrace(); System.exit(1); } - if (foundAllele <= 0) { throw new DataAdapterEx("Worm query of "+query+" of field "+field+" has no match in postgres"); } // if there is no match for the allele in postgres - else { // if there is a match - try { + if (foundAllele <= 0) { throw new DataAdapterEx("Worm query of "+joinkey+" of field "+field+" has no match in postgres"); } // if there is no match for the allele in postgres + else { // if there is a match int boxes = 0; // the number of boxes for that allele rs = null; // init result from postgres query - try { rs = s.executeQuery("SELECT alp_box FROM alp_curator WHERE joinkey = '"+query+"' ORDER BY alp_box DESC"); } // grab the highest number box for that allele + try { rs = s.executeQuery("SELECT alp_box FROM alp_curator WHERE joinkey = '"+joinkey+"' ORDER BY alp_box DESC"); } // grab the highest number box for that allele catch (SQLException se) { System.out.println("We got an exception while executing our query:" + "that probably means our SQL is invalid"); se.printStackTrace(); System.exit(1); } - try { rs.next(); { boxes = rs.getInt(1); } } // assign the highest number box for that allele to the number of boxes + try { rs.next(); { boxes = rs.getInt(1); } } // assign the highest number box for that joinkey to the number of boxes catch (SQLException se) { System.out.println("We got an exception while getting a result:this " + "shouldn't happen: we've done something really bad."); se.printStackTrace(); System.exit(1); } // System.out.println("We have "+boxes+" boxes"); // comment out later for (int boxI=1; boxI<boxes+1; boxI++) { // for each of those boxes - String paper = "No Paper assigned"; // initialize paper value - rs = null; - // get the papers in timestamp order where the allele and box number match - try { rs = s.executeQuery("SELECT * FROM alp_paper WHERE joinkey = '"+query+"' AND alp_box='"+boxI+"' ORDER BY alp_timestamp"); } - catch (SQLException se) { - System.out.println("We got an exception while executing our query:" + "that probably means our pap SQL is invalid"); se.printStackTrace(); System.exit(1); } - try { while (rs.next()) { paper = rs.getString(3); } } // assign the paper - catch (SQLException se) { - System.out.println("We got an exception while getting a result:this " + "shouldn't happen: we've done something really bad."); se.printStackTrace(); System.exit(1); } - - String curator = "No Curator assigned"; - rs = null; - try { rs = s.executeQuery("SELECT * FROM alp_curator WHERE joinkey = '"+query+"' AND alp_box='"+boxI+"' ORDER BY alp_timestamp"); } - catch (SQLException se) { - System.out.println("We got an exception while executing our query:" + "that probably means our cur SQL is invalid"); se.printStackTrace(); System.exit(1); } - try { while (rs.next()) { curator = rs.getString(3); } } - catch (SQLException se) { - System.out.println("We got an exception while getting a result:this " + "shouldn't happen: we've done something really bad."); se.printStackTrace(); System.exit(1); } - - String person = "No Person assigned"; - rs = null; - try { rs = s.executeQuery("SELECT * FROM alp_person WHERE joinkey = '"+query+"' AND alp_box='"+boxI+"' ORDER BY alp_timestamp"); } - catch (SQLException se) { - System.out.println("We got an exception while executing our query:" + "that probably means our per SQL is invalid"); se.printStackTrace(); System.exit(1); } - try { while (rs.next()) { person = rs.getString(3); } } - catch (SQLException se) { - System.out.println("We got an exception while getting a result:this " + "shouldn't happen: we've done something really bad."); se.printStackTrace(); System.exit(1); } - - String phen_text_remark = "No Phenotype Text Remark assigned"; - rs = null; - try { rs = s.executeQuery("SELECT * FROM alp_phenotype WHERE joinkey = '"+query+"' AND alp_box='"+boxI+"' ORDER BY alp_timestamp"); } - catch (SQLException se) { - System.out.println("We got an exception while executing our query:" + "that probably means our ptr SQL is invalid"); se.printStackTrace(); System.exit(1); } - try { while (rs.next()) { phen_text_remark = rs.getString(3); } } - catch (SQLException se) { - System.out.println("We got an exception while getting a result:this " + "shouldn't happen: we've done something really bad."); se.printStackTrace(); System.exit(1); } - - String remark = "No Other Remark assigned"; - rs = null; - try { rs = s.executeQuery("SELECT * FROM alp_remark WHERE joinkey = '"+query+"' AND alp_box='"+boxI+"' ORDER BY alp_timestamp"); } - catch (SQLException se) { - System.out.println("We got an exception while executing our query:" + "that probably means our orem SQL is invalid"); se.printStackTrace(); System.exit(1); } - try { while (rs.next()) { remark = rs.getString(3); } } - catch (SQLException se) { - System.out.println("We got an exception while getting a result:this " + "shouldn't happen: we've done something really bad."); se.printStackTrace(); System.exit(1); } - - String genetic_interaction = "No Genetic Interaction assigned"; - rs = null; - try { rs = s.executeQuery("SELECT * FROM alp_intx_desc WHERE joinkey = '"+query+"' AND alp_box='"+boxI+"' ORDER BY alp_timestamp"); } - catch (SQLException se) { - System.out.println("We got an exception while executing our query:" + "that probably means our gint SQL is invalid"); se.printStackTrace(); System.exit(1); } - try { while (rs.next()) { genetic_interaction = rs.getString(3); } } - catch (SQLException se) { - System.out.println("We got an exception while getting a result:this " + "shouldn't happen: we've done something really bad."); se.printStackTrace(); System.exit(1); } - - int columns = 0; // the number of columns in that box - rs = null; - // grab the highest number column for that box and that allele - try { rs = s.executeQuery("SELECT alp_column FROM alp_term WHERE joinkey = '"+query+"' AND alp_box = '"+boxI+"' ORDER BY alp_column DESC"); } - catch (SQLException se) { - System.out.println("We got an exception while executing our query:" + "that probably means our column SQL is invalid"); se.printStackTrace(); System.exit(1); } - try { rs.next(); { columns = rs.getInt(1); } } // assign the highest number column for that box and that allele to the number of columns - catch (SQLException se) { - System.out.println("We got an exception while getting a result:this " + "shouldn't happen: we've done something really bad."); se.printStackTrace(); System.exit(1); } - -// System.out.println("We have "+columns+" columns in box "+boxI+"."); // comment out later - - - for (int colI=1; colI<columns+1; colI++) { // for each of those columns - Character c1 = new Character(); // create a new character for a phenote row - c1.setValue("Allele",query); // assign the allele - c1.setValue("Pub",paper); - c1.setValue("Curator",curator); - c1.setValue("Person",person); - c1.setValue("Phenotype Text Remark",phen_text_remark); - c1.setValue("Other Remark",remark); - c1.setValue("Genetic Interaction",genetic_interaction); - String postgres_value = "No Phenotype assigned"; - String postgres_table = "alp_term"; - postgres_value = queryPostgresCharacter(s, postgres_table, postgres_value, query, boxI, colI); - c1.setValue("Phenotype",postgres_value); // assign the queried value - postgres_table = "alp_phen_remark"; postgres_value = "No Phenotype Remark assigned"; - postgres_value = queryPostgresCharacter(s, postgres_table, postgres_value, query, boxI, colI); - c1.setValue("Phenotype Remark",postgres_value); // assign the queried value - postgres_table = "alp_anat_term"; postgres_value = "No Anatomy assigned"; - postgres_value = queryPostgresCharacter(s, postgres_table, postgres_value, query, boxI, colI); -// c1.setValue("Anatomy",postgres_value); // this doesn't work, assigning whatever term name(s) is in postgres -// c1.setValue("Anatomy","WBbt:0004758"); // this works, assigning a term ID - postgres_table = "alp_lifestage"; postgres_value = "No Stage assigned"; - postgres_value = queryPostgresCharacter(s, postgres_table, postgres_value, query, boxI, colI); - c1.setValue("Stage",postgres_value); // assign the queried value - postgres_table = "alp_nature"; postgres_value = "No Nature of Allele assigned"; - postgres_value = queryPostgresCharacter(s, postgres_table, postgres_value, query, boxI, colI); - c1.setValue("Allele Nature",postgres_value); // assign the queried value - postgres_table = "alp_func"; postgres_value = "No Functional Change assigned"; - postgres_value = queryPostgresCharacter(s, postgres_table, postgres_value, query, boxI, colI); - c1.setValue("Functional Change",postgres_value); // assign the queried value - postgres_table = "alp_temperature"; postgres_value = "No Temperature assigned"; - postgres_value = queryPostgresCharacter(s, postgres_table, postgres_value, query, boxI, colI); - c1.setValue("Temperature",postgres_value); // assign the queried value - postgres_table = "alp_preparation"; postgres_value = "No Preparation assigned"; - postgres_value = queryPostgresCharacter(s, postgres_table, postgres_value, query, boxI, colI); - c1.setValue("Preparation",postgres_value); // assign the queried value - postgres_table = "alp_penetrance"; postgres_value = "No Penetrance assigned"; - postgres_value = queryPostgresCharacter(s, postgres_table, postgres_value, query, boxI, colI); - c1.setValue("Penetrance",postgres_value); // assign the queried value - postgres_table = "alp_percent"; postgres_value = "No Penetrance Percent assigned"; - postgres_value = queryPostgresCharacter(s, postgres_table, postgres_value, query, boxI, colI); - c1.setValue("Penetrance Percent",postgres_value); // assign the queried value - postgres_table = "alp_range"; postgres_value = "No Penetrance Range assigned"; - postgres_value = queryPostgresCharacter(s, postgres_table, postgres_value, query, boxI, colI); - c1.setValue("Penetrance Range",postgres_value); // assign the queried value - postgres_table = "alp_quantity_remark"; postgres_value = "No Quantity Remark assigned"; - postgres_value = queryPostgresCharacter(s, postgres_table, postgres_value, query, boxI, colI); - c1.setValue("Quantity Remark",postgres_value); // assign the queried value - postgres_table = "alp_heat_sens"; postgres_value = "No Heat Sensitive assigned"; - postgres_value = queryPostgresCharacter(s, postgres_table, postgres_value, query, boxI, colI); - c1.setValue("Heat Sensitive",postgres_value); // assign the queried value - postgres_table = "alp_heat_degree"; postgres_value = "No Heat Sensitive Degree assigned"; - postgres_value = queryPostgresCharacter(s, postgres_table, postgres_value, query, boxI, colI); - c1.setValue("Heat Sensitive Degree",postgres_value); // assign the queried value - postgres_table = "alp_cold_sens"; postgres_value = "No Cold Sensitive assigned"; - postgres_value = queryPostgresCharacter(s, postgres_table, postgres_value, query, boxI, colI); - c1.setValue("Cold Sensitive",postgres_value); // assign the queried value - postgres_table = "alp_cold_degree"; postgres_value = "No Cold Sensitive Degree assigned"; - postgres_value = queryPostgresCharacter(s, postgres_table, postgres_value, query, boxI, colI); - c1.setValue("Cold Sensitive Degree",postgres_value); // assign the queried value - postgres_table = "alp_mat_effect"; postgres_value = "No Maternal Effect assigned"; - postgres_value = queryPostgresCharacter(s, postgres_table, postgres_value, query, boxI, colI); - c1.setValue("Maternal Effect",postgres_value); // assign the queried value - postgres_table = "alp_pat_effect"; postgres_value = "No Paternal Effect assigned"; - postgres_value = queryPostgresCharacter(s, postgres_table, postgres_value, query, boxI, colI); - c1.setValue("Paternal Effect",postgres_value); // assign the queried value - postgres_table = "alp_genotype"; postgres_value = "No Genotype assigned"; - postgres_value = queryPostgresCharacter(s, postgres_table, postgres_value, query, boxI, colI); - c1.setValue("Genotype",postgres_value); // assign the queried value - postgres_table = "alp_strain"; postgres_value = "No Strain assigned"; - postgres_value = queryPostgresCharacter(s, postgres_table, postgres_value, query, boxI, colI); - c1.setValue("Strain",postgres_value); // assign the queried value - postgres_table = "alp_delivered"; postgres_value = "No Delivered By assigned"; - postgres_value = queryPostgresCharacter(s, postgres_table, postgres_value, query, boxI, colI); - c1.setValue("Delivered By",postgres_value); // assign the queried value - charList.add(c1); // add the character to the character list - } // for (int colI=1; colI<columns; colI++) + charList = queryPostgresCharacterList(charList, s, joinkey, boxI); } // for (int boxI=1; boxI<boxes; boxI++) - } - catch (TermNotFoundException e) { - System.out.println("Term Not Found Exception, assigning characters by Allele."); } - catch (CharFieldException e) { - System.out.println("Char Field Exception, assigning characters by Allele."); } - return charList; + return charList; } // end -- if there's an allele found in postgres } else if (field.equals(pubString)) { // if querying the publication, get paper data - System.out.println("Checking if Driver is registered with DriverManager."); // open postgres database connection - try { Class.forName("org.postgresql.Driver"); } - catch (ClassNotFoundException cnfe) { - System.out.println("Couldn't find the driver!"); System.out.println("Let's print a stack trace, and exit."); cnfe.printStackTrace(); System.exit(1); } - System.out.println("Registered the driver ok, so let's make a connection."); - Connection c = null; - try { c = DriverManager.getConnection("jdbc:postgresql://131.215.52.76:5432/testdb", "postgres", ""); } // tazendra - catch (SQLException se) { System.out.println("Couldn't connect: print out a stack trace and exit."); se.printStackTrace(); System.exit(1); } - if (c != null) System.out.println("Hooray! We connected to the database!"); - else System.out.println("We should never get here."); + Connection c = connectToDB(); Statement s = null; try { s = c.createStatement(); } catch (SQLException se) { @@ -311,171 +308,41 @@ catch (SQLException se) { System.out.println("We got an exception while creating a statement:" + "that probably means we're no longer connected."); se.printStackTrace(); System.exit(1); } + int foundPaper = 0; // flag if there are any papers in postgres that match, otherwise give an error warning ResultSet rs = null; // initialize result of query - ResultSet rs2 = null; // initialize result of query - try { rs2 = s2.executeQuery("SELECT DISTINCT(joinkey), alp_box FROM alp_paper WHERE alp_paper ~ '"+query+"' ORDER BY joinkey;"); } // get the alleles from a paper + try { rs = s2.executeQuery("SELECT DISTINCT(joinkey), alp_box FROM alp_paper WHERE alp_paper ~ '"+query+"' ORDER BY joinkey;"); } // get the alleles from a paper catch (SQLException se) { System.out.println("We got an exception while executing our query:" + "that probably means our SQL is invalid"); se.printStackTrace(); System.exit(1); } - try { while (rs2.next()) { // while there's data in postgres - String allele = "No Allele assigned for Publication "+query+"."; // initialize allele in each phenote character Row - int boxI = 0; - allele = rs2.getString(1); // get the allele from postgres - boxI = rs2.getInt(2); // get the big box from postgres - try { - String paper = "No Paper assigned"; // initialize paper value - rs = null; - // get the papers in timestamp order where the allele and box number match - try { rs = s.executeQuery("SELECT * FROM alp_paper WHERE joinkey = '"+allele+"' AND alp_box='"+boxI+"' ORDER BY alp_timestamp"); } - catch (SQLException se) { - System.out.println("We got an exception while executing our query:" + "that probably means our pap SQL is invalid"); se.printStackTrace(); System.exit(1); } - try { while (rs.next()) { paper = rs.getString(3); } } // assign the paper - catch (SQLException se) { - System.out.println("We got an exception while getting a paper result:this shouldn't happen: we've done something really bad."); se.printStackTrace(); System.exit(1); } + try { if (rs.next()) { foundPaper++; } } + catch (SQLException se) { + System.out.println("We got an exception while getting a publication query result:this shouldn't happen: we've done something really bad."); se.printStackTrace(); System.exit(1); } + if (foundPaper <= 0) { throw new DataAdapterEx("Worm query of "+query+" of field "+field+" has no match in postgres"); } // if there is no match for the allele in postgres + else { + ResultSet rs2 = null; // initialize result of query + try { rs2 = s2.executeQuery("SELECT DISTINCT(joinkey), alp_box FROM alp_paper WHERE alp_paper ~ '"+query+"' ORDER BY joinkey;"); } // get the alleles from a paper + catch (SQLException se) { + System.out.println("We got an exception while executing our query:" + "that probably means our SQL is invalid"); se.printStackTrace(); System.exit(1); } + try { while (rs2.next()) { // while there's data in postgres + String joinkey = "No Allele assigned for Publication "+query+"."; // initialize allele in each phenote character Row + int boxI = 0; + joinkey = rs2.getString(1); // get the allele from postgres + boxI = rs2.getInt(2); // get the big box from postgres + charList = queryPostgresCharacterList(charList, s, joinkey, boxI); + } } + catch (SQLException se) { + System.out.println("We got an exception while getting a publication query result:this shouldn't happen: we've done something really bad."); se.printStackTrace(); System.exit(1); } + return charList; + } // end -- if there's a publication found in postgres - String curator = "No Curator assigned"; - rs = null; - try { rs = s.executeQuery("SELECT * FROM alp_curator WHERE joinkey = '"+allele+"' AND alp_box='"+boxI+"' ORDER BY alp_timestamp"); } - catch (SQLException se) { - System.out.println("We got an exception while executing our query:" + "that probably means our cur SQL is invalid"); se.printStackTrace(); System.exit(1); } - try { while (rs.next()) { curator = rs.getString(3); } } - catch (SQLException se) { - System.out.println("We got an exception while getting a curator result:this shouldn't happen: we've done something really bad."); se.printStackTrace(); System.exit(1); } + } else { + // if query has failed... + throw new DataAdapterEx("Worm query of "+query+" of field "+field+" failed"); + } + } // public CharacterListI query(String field, String query) throws DataAdapterEx - String person = "No Person assigned"; - rs = null; - try { rs = s.executeQuery("SELECT * FROM alp_person WHERE joinkey = '"+allele+"' AND alp_box='"+boxI+"' ORDER BY alp_timestamp"); } - catch (SQLException se) { - System.out.println("We got an exception while executing our query:" + "that probably means our per SQL is invalid"); se.printStackTrace(); System.exit(1); } - try { while (rs.next()) { person = rs.getString(3); } } - catch (SQLException se) { - System.out.println("We got an exception while getting a person result:this shouldn't happen: we've done something really bad."); se.printStackTrace(); System.exit(1); } +} - String phen_text_remark = "No Phenotype Text Remark assigned"; - rs = null; - try { rs = s.executeQuery("SELECT * FROM alp_phenotype WHERE joinkey = '"+allele+"' AND alp_box='"+boxI+"' ORDER BY alp_timestamp"); } - catch (SQLException se) { - System.out.println("We got an exception while executing our query:" + "that probably means our ptr SQL is invalid"); se.printStackTrace(); System.exit(1); } - try { while (rs.next()) { phen_text_remark = rs.getString(3); } } - catch (SQLException se) { - System.out.println("We got an exception while getting a phenotype result:this shouldn't happen: we've done something really bad."); se.printStackTrace(); System.exit(1); } - String remark = "No Other Remark assigned"; - rs = null; - try { rs = s.executeQuery("SELECT * FROM alp_remark WHERE joinkey = '"+allele+"' AND alp_box='"+boxI+"' ORDER BY alp_timestamp"); } - catch (SQLException se) { - System.out.println("We got an exception while executing our query:" + "that probably means our orem SQL is invalid"); se.printStackTrace(); System.exit(1); } - try { while (rs.next()) { remark = rs.getString(3); } } - catch (SQLException se) { - System.out.println("We got an exception while getting a remark result:this shouldn't happen: we've done something really bad."); se.printStackTrace(); System.exit(1); } - - String genetic_interaction = "No Genetic Interaction assigned"; - rs = null; - try { rs = s.executeQuery("SELECT * FROM alp_intx_desc WHERE joinkey = '"+allele+"' AND alp_box='"+boxI+"' ORDER BY alp_timestamp"); } - catch (SQLException se) { - System.out.println("We got an exception while executing our query:" + "that probably means our gint SQL is invalid"); se.printStackTrace(); System.exit(1); } - try { while (rs.next()) { genetic_interaction = rs.getString(3); } } - catch (SQLException se) { - System.out.println("We got an exception while getting a intx_desc result:this shouldn't happen: we've done something really bad."); se.printStackTrace(); System.exit(1); } - - int columns = 0; // the number of columns in that box - rs = null; - // grab the highest number column for that box and that allele - try { rs = s.executeQuery("SELECT alp_column FROM alp_term WHERE joinkey = '"+allele+"' AND alp_box = '"+boxI+"' ORDER BY alp_column DESC"); } - catch (SQLException se) { - System.out.println("We got an exception while executing our query:" + "that probably means our column SQL is invalid"); se.printStackTrace(); System.exit(1); } - try { rs.next(); { columns = rs.getInt(1); } } // assign the highest number column for that box and that allele to the number of columns - catch (SQLException se) { - System.out.println("We got an exception while getting a term/column result:this shouldn't happen: we've done something really bad."); se.printStackTrace(); System.exit(1); } - -// System.out.println("We have "+columns+" columns in box "+boxI+"."); // comment out later - - - for (int colI=1; colI<columns+1; colI++) { // for each of those columns - Character c1 = new Character(); // create a new character for a phenote row - c1.setValue("Allele",allele); // assign the allele - c1.setValue("Pub",paper); - c1.setValue("Curator",curator); - c1.setValue("Person",person); - c1.setValue("Phenotype Text Remark",phen_text_remark); - c1.setValue("Other Remark",remark); - c1.setValue("Genetic Interaction",genetic_interaction); - String postgres_value = "No Phenotype assigned"; - String postgres_table = "alp_term"; - postgres_value = queryPostgresCharacter(s, postgres_table, postgres_value, allele, boxI, colI); - c1.setValue("Phenotype",postgres_value); // assign the queried value - postgres_table = "alp_phen_remark"; postgres_value = "No Phenotype Remark assigned"; - postgres_value = queryPostgresCharacter(s, postgres_table, postgres_value, allele, boxI, colI); - c1.setValue("Phenotype Remark",postgres_value); // assign the queried value - postgres_table = "alp_anat_term"; postgres_value = "No Anatomy assigned"; - postgres_value = queryPostgresCharacter(s, postgres_table, postgres_value, allele, boxI, colI); -// c1.setValue("Anatomy",postgres_value); // this doesn't work, assigning whatever term name(s) is in postgres -// c1.setValue("Anatomy","WBbt:0004758"); // this works, assigning a term ID - postgres_table = "alp_lifestage"; postgres_value = "No Stage assigned"; - postgres_value = queryPostgresCharacter(s, postgres_table, postgres_value, allele, boxI, colI); - c1.setValue("Stage",postgres_value); // assign the queried value - postgres_table = "alp_nature"; postgres_value = "No Nature of Allele assigned"; - postgres_value = queryPostgresCharacter(s, postgres_table, postgres_value, allele, boxI, colI); - c1.setValue("Allele Nature",postgres_value); // assign the queried value - postgres_table = "alp_func"; postgres_value = "No Functional Change assigned"; - postgres_value = queryPostgresCharacter(s, postgres_table, postgres_value, allele, boxI, colI); - c1.setValue("Functional Change",postgres_value); // assign the queried value - postgres_table = "alp_temperature"; postgres_value = "No Temperature assigned"; - postgres_value = queryPostgresCharacter(s, postgres_table, postgres_value, allele, boxI, colI); - c1.setValue("Temperature",postgres_value); // assign the queried value - postgres_table = "alp_preparation"; postgres_value = "No Preparation assigned"; - postgres_value = queryPostgresCharacter(s, postgres_table, postgres_value, allele, boxI, colI); - c1.setValue("Preparation",postgres_value); // assign the queried value - postgres_table = "alp_penetrance"; postgres_value = "No Penetrance assigned"; - postgres_value = queryPostgresCharacter(s, postgres_table, postgres_value, allele, boxI, colI); - c1.setValue("Penetrance",postgres_value); // assign the queried value - postgres_table = "alp_percent"; postgres_value = "No Penetrance Percent assigned"; - postgres_value = queryPostgresCharacter(s, postgres_table, postgres_value, allele, boxI, colI); - c1.setValue("Penetrance Percent",postgres_value); // assign the queried value - postgres_table = "alp_range"; postgres_value = "No Penetrance Range assigned"; - postgres_value = queryPostgresCharacter(s, postgres_table, postgres_value, allele, boxI, colI); - c1.setValue("Penetrance Range",postgres_value); // assign the queried value - postgres_table = "alp_quantity_remark"; postgres_value = "No Quantity Remark assigned"; - postgres_value = queryPostgresCharacter(s, postgres_table, postgres_value, allele, boxI, colI); - c1.setValue("Quantity Remark",postgres_value); // assign the queried value - postgres_table = "alp_heat_sens"; postgres_value = "No Heat Sensitive assigned"; - postgres_value = queryPostgresCharacter(s, postgres_table, postgres_value, allele, boxI, colI); - c1.setValue("Heat Sensitive",postgres_value); // assign the queried value - postgres_table = "alp_heat_degree"; postgres_value = "No Heat Sensitive Degree assigned"; - postgres_value = queryPostgresCharacter(s, postgres_table, postgres_value, allele, boxI, colI); - c1.setValue("Heat Sensitive Degree",postgres_value); // assign the queried value - postgres_table = "alp_cold_sens"; postgres_value = "No Cold Sensitive assigned"; - postgres_value = queryPostgresCharacter(s, postgres_table, postgres_value, allele, boxI, colI); - c1.setValue("Cold Sensitive",postgres_value); // assign the queried value - postgres_table = "alp_cold_degree"; postgres_value = "No Cold Sensitive Degree assigned"; - postgres_value = queryPostgresCharacter(s, postgres_table, postgres_value, allele, boxI, colI); - c1.setValue("Cold Sensitive Degree",postgres_value); // assign the queried value - postgres_table = "alp_mat_effect"; postgres_value = "No Maternal Effect assigned"; - postgres_value = queryPostgresCharacter(s, postgres_table, postgres_value, allele, boxI, colI); - c1.setValue("Maternal Effect",postgres_value); // assign the queried value - postgres_table = "alp_pat_effect"; postgres_value = "No Paternal Effect assigned"; - postgres_value = queryPostgresCharacter(s, postgres_table, postgres_value, allele, boxI, colI); - c1.setValue("Paternal Effect",postgres_value); // assign the queried value - postgres_table = "alp_genotype"; postgres_value = "No Genotype assigned"; - postgres_value = queryPostgresCharacter(s, postgres_table, postgres_value, allele, boxI, colI); - c1.setValue("Genotype",postgres_value); // assign the queried value - postgres_table = "alp_strain"; postgres_value = "No Strain assigned"; - postgres_value = queryPostgresCharacter(s, postgres_table, postgres_value, allele, boxI, colI); - c1.setValue("Strain",postgres_value); // assign the queried value - postgres_table = "alp_delivered"; postgres_value = "No Delivered By assigned"; - postgres_value = queryPostgresCharacter(s, postgres_table, postgres_value, allele, boxI, colI); - c1.setValue("Delivered By",postgres_value); // assign the queried value - charList.add(c1); // add the character to the character list - } // for (int colI=1; colI<columns; colI++) - } - catch (TermNotFoundException e) { - System.out.println("Term Not Found Exception, assigning characters by Publication."); } - catch (CharFieldException e) { - System.out.println("Char Field Exception, assigning characters by Publication."); } - } } - catch (SQLException se) { - System.out.println("We got an exception while getting a publication query result:this shouldn't happen: we've done something really bad."); se.printStackTrace(); System.exit(1); } - return charList; - // for (CharacterI chr : charList.getList()) { // System.out.println("Chr "+chr+" Phenoset "+phenoset+" end"); // @@ -483,11 +350,4 @@ // addCharAndGenotypeToPhenoset(chr,phenoset); // } - - } else { - // if query has failed... - throw new DataAdapterEx("Worm query of "+query+" of field "+field+" failed"); - } - - } // public CharacterListI query(String field, String query) throws DataAdapterEx -} // public class WormAdapter implements QueryableDataAdapterI + // public class WormAdapter implements QueryableDataAdapterI This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <azu...@us...> - 2007-03-28 22:23:36
|
Revision: 432 http://svn.sourceforge.net/obo/?rev=432&view=rev Author: azurebrd Date: 2007-03-28 15:22:39 -0700 (Wed, 28 Mar 2007) Log Message: ----------- Modified Paths: -------------- phenote/trunk/src/java/phenote/dataadapter/worm/WormAdapter.java Modified: phenote/trunk/src/java/phenote/dataadapter/worm/WormAdapter.java =================================================================== --- phenote/trunk/src/java/phenote/dataadapter/worm/WormAdapter.java 2007-03-28 21:06:22 UTC (rev 431) +++ phenote/trunk/src/java/phenote/dataadapter/worm/WormAdapter.java 2007-03-28 22:22:39 UTC (rev 432) @@ -53,7 +53,7 @@ try { while (rs.next()) { default_value = rs.getString(4); } } // assign the new term value catch (SQLException se) { System.out.println("We got an exception while getting a result:this " + "shouldn't happen: we've done something really bad."); se.printStackTrace(); System.exit(1); } - System.out.println("Added in function charList term "+query+" column "+colI+" box "+boxI+"."); // comment out later +// System.out.println("Added in function charList term "+query+" column "+colI+" box "+boxI+"."); // comment out later return default_value; } @@ -120,7 +120,7 @@ int foundAllele = 0; try { while (rs.next()) { - System.out.println(rs.getString(1) + "\t" + rs.getString(2) + "\t" + rs.getString(3)); // comment out later +// System.out.println(rs.getString(1) + "\t" + rs.getString(2) + "\t" + rs.getString(3)); // comment out later foundAllele++; } } // if there's a result in postgres we have found an allele catch (SQLException se) { System.out.println("We got an exception while getting a result:this shouldn't happen: we've done something really bad."); se.printStackTrace(); System.exit(1); } @@ -136,7 +136,7 @@ try { rs.next(); { boxes = rs.getInt(1); } } // assign the highest number box for that allele to the number of boxes catch (SQLException se) { System.out.println("We got an exception while getting a result:this " + "shouldn't happen: we've done something really bad."); se.printStackTrace(); System.exit(1); } - System.out.println("We have "+boxes+" boxes"); // comment out later +// System.out.println("We have "+boxes+" boxes"); // comment out later for (int boxI=1; boxI<boxes+1; boxI++) { // for each of those boxes String paper = "No Paper assigned"; // initialize paper value rs = null; @@ -203,7 +203,7 @@ catch (SQLException se) { System.out.println("We got an exception while getting a result:this " + "shouldn't happen: we've done something really bad."); se.printStackTrace(); System.exit(1); } - System.out.println("We have "+columns+" columns in box "+boxI+"."); // comment out later +// System.out.println("We have "+columns+" columns in box "+boxI+"."); // comment out later for (int colI=1; colI<columns+1; colI++) { // for each of those columns @@ -224,7 +224,8 @@ c1.setValue("Phenotype Remark",postgres_value); // assign the queried value postgres_table = "alp_anat_term"; postgres_value = "No Anatomy assigned"; postgres_value = queryPostgresCharacter(s, postgres_table, postgres_value, query, boxI, colI); -// c1.setValue("Anatomy",postgres_value); // assign the queried value +// c1.setValue("Anatomy",postgres_value); // this doesn't work, assigning whatever term name(s) is in postgres +// c1.setValue("Anatomy","WBbt:0004758"); // this works, assigning a term ID postgres_table = "alp_lifestage"; postgres_value = "No Stage assigned"; postgres_value = queryPostgresCharacter(s, postgres_table, postgres_value, query, boxI, colI); c1.setValue("Stage",postgres_value); // assign the queried value @@ -280,62 +281,13 @@ postgres_value = queryPostgresCharacter(s, postgres_table, postgres_value, query, boxI, colI); c1.setValue("Delivered By",postgres_value); // assign the queried value charList.add(c1); // add the character to the character list -// -// String phenotype = "No Phenotype assigned"; -// rs = null; -// // get the phenotype term in timestamp order where the allele and box and column number match -// try { rs = s.executeQuery("SELECT * FROM alp_term WHERE joinkey = '"+query+"' AND alp_box='"+boxI+"' AND alp_column='"+colI+"' ORDER BY alp_timestamp"); } -// catch (SQLException se) { -// System.out.println("We got an exception while executing our query:" + "that probably means our term SQL is invalid"); se.printStackTrace(); System.exit(1); } -// try { while (rs.next()) { phenotype = rs.getString(4); } } // assign the phenotype term value -// catch (SQLException se) { -// System.out.println("We got an exception while getting a result:this " + "shouldn't happen: we've done something really bad."); se.printStackTrace(); System.exit(1); } -// -// String phen_remark = "No Phenotype Remark assigned"; -// rs = null; -// try { rs = s.executeQuery("SELECT * FROM alp_phen_remark WHERE joinkey = '"+query+"' AND alp_box='"+boxI+"' AND alp_column='"+colI+"' ORDER BY alp_timestamp"); } -// catch (SQLException se) { -// System.out.println("We got an exception while executing our query:" + "that probably means our phen_rem SQL is invalid"); se.printStackTrace(); System.exit(1); } -// try { while (rs.next()) { phen_remark = rs.getString(4); } } -// catch (SQLException se) { -// System.out.println("We got an exception while getting a result:this " + "shouldn't happen: we've done something really bad."); se.printStackTrace(); System.exit(1); } -// -// String anatomy = "No anatomy assigned"; -// rs = null; -// try { rs = s.executeQuery("SELECT * FROM alp_anat_term WHERE joinkey = '"+query+"' AND alp_box='"+boxI+"' AND alp_column='"+colI+"' ORDER BY alp_timestamp"); } -// catch (SQLException se) { -// System.out.println("We got an exception while executing our query:" + "that probably means our anaterm SQL is invalid"); se.printStackTrace(); System.exit(1); } -// try { while (rs.next()) { anatomy = rs.getString(4); } } -// catch (SQLException se) { -// System.out.println("We got an exception while getting a result:this " + "shouldn't happen: we've done something really bad."); se.printStackTrace(); System.exit(1); } -// -// String stage = "No Stage assigned"; -// rs = null; -// try { rs = s.executeQuery("SELECT * FROM alp_lifestage WHERE joinkey = '"+query+"' AND alp_box='"+boxI+"' AND alp_column='"+colI+"' ORDER BY alp_timestamp"); } -// catch (SQLException se) { -// System.out.println("We got an exception while executing our query:" + "that probably means our stage SQL is invalid"); se.printStackTrace(); System.exit(1); } -// try { while (rs.next()) { stage = rs.getString(4); } } -// catch (SQLException se) { -// System.out.println("We got an exception while getting a result:this " + "shouldn't happen: we've done something really bad."); se.printStackTrace(); System.exit(1); } -// -// c1.setValue("Allele",query); // assign the allele -// c1.setValue("Pub",paper); -// c1.setValue("Curator",curator); -// c1.setValue("Person",person); -// c1.setValue("Phenotype Text Remark",phen_text_remark); -// c1.setValue("Other Remark",remark); -// c1.setValue("Genetic Interaction",genetic_interaction); -// c1.setValue("Phenotype",phenotype); -// c1.setValue("Phenotype Remark",phen_remark); -// // c1.setValue("Anatomy",anatomy); -// c1.setValue("Stage",stage); -// charList.add(c1); // add the character to the character list -// System.out.println("Added to charList term "+phenotype+" column "+colI+" box "+boxI+"."); // comment out later } // for (int colI=1; colI<columns; colI++) } // for (int boxI=1; boxI<boxes; boxI++) } - catch (TermNotFoundException e) {} // do nothing - try next char field - catch (CharFieldException e) {} // do nothing - try next char field + catch (TermNotFoundException e) { + System.out.println("Term Not Found Exception, assigning characters by Allele."); } + catch (CharFieldException e) { + System.out.println("Char Field Exception, assigning characters by Allele."); } return charList; } // end -- if there's an allele found in postgres @@ -354,24 +306,174 @@ try { s = c.createStatement(); } catch (SQLException se) { System.out.println("We got an exception while creating a statement:" + "that probably means we're no longer connected."); se.printStackTrace(); System.exit(1); } + Statement s2 = null; + try { s2 = c.createStatement(); } + catch (SQLException se) { + System.out.println("We got an exception while creating a statement:" + "that probably means we're no longer connected."); se.printStackTrace(); System.exit(1); } ResultSet rs = null; // initialize result of query - try { rs = s.executeQuery("SELECT DISTINCT(joinkey) FROM alp_paper WHERE alp_paper ~ '"+query+"' ORDER BY joinkey;"); } // get the alleles from a paper + ResultSet rs2 = null; // initialize result of query + try { rs2 = s2.executeQuery("SELECT DISTINCT(joinkey), alp_box FROM alp_paper WHERE alp_paper ~ '"+query+"' ORDER BY joinkey;"); } // get the alleles from a paper catch (SQLException se) { System.out.println("We got an exception while executing our query:" + "that probably means our SQL is invalid"); se.printStackTrace(); System.exit(1); } - String allele = "No Allele assigned for Publication "+query+"."; // initialize allele in each phenote character Row - try { while (rs.next()) { // while there's data in postgres - allele = rs.getString(1); // get the allele from postgres + try { while (rs2.next()) { // while there's data in postgres + String allele = "No Allele assigned for Publication "+query+"."; // initialize allele in each phenote character Row + int boxI = 0; + allele = rs2.getString(1); // get the allele from postgres + boxI = rs2.getInt(2); // get the big box from postgres try { - Character c1 = new Character(); // make a new character - c1.setValue("Allele",allele); // assign the allele - charList.add(c1); // add the character to the character list + String paper = "No Paper assigned"; // initialize paper value + rs = null; + // get the papers in timestamp order where the allele and box number match + try { rs = s.executeQuery("SELECT * FROM alp_paper WHERE joinkey = '"+allele+"' AND alp_box='"+boxI+"' ORDER BY alp_timestamp"); } + catch (SQLException se) { + System.out.println("We got an exception while executing our query:" + "that probably means our pap SQL is invalid"); se.printStackTrace(); System.exit(1); } + try { while (rs.next()) { paper = rs.getString(3); } } // assign the paper + catch (SQLException se) { + System.out.println("We got an exception while getting a paper result:this shouldn't happen: we've done something really bad."); se.printStackTrace(); System.exit(1); } + + String curator = "No Curator assigned"; + rs = null; + try { rs = s.executeQuery("SELECT * FROM alp_curator WHERE joinkey = '"+allele+"' AND alp_box='"+boxI+"' ORDER BY alp_timestamp"); } + catch (SQLException se) { + System.out.println("We got an exception while executing our query:" + "that probably means our cur SQL is invalid"); se.printStackTrace(); System.exit(1); } + try { while (rs.next()) { curator = rs.getString(3); } } + catch (SQLException se) { + System.out.println("We got an exception while getting a curator result:this shouldn't happen: we've done something really bad."); se.printStackTrace(); System.exit(1); } + + String person = "No Person assigned"; + rs = null; + try { rs = s.executeQuery("SELECT * FROM alp_person WHERE joinkey = '"+allele+"' AND alp_box='"+boxI+"' ORDER BY alp_timestamp"); } + catch (SQLException se) { + System.out.println("We got an exception while executing our query:" + "that probably means our per SQL is invalid"); se.printStackTrace(); System.exit(1); } + try { while (rs.next()) { person = rs.getString(3); } } + catch (SQLException se) { + System.out.println("We got an exception while getting a person result:this shouldn't happen: we've done something really bad."); se.printStackTrace(); System.exit(1); } + + String phen_text_remark = "No Phenotype Text Remark assigned"; + rs = null; + try { rs = s.executeQuery("SELECT * FROM alp_phenotype WHERE joinkey = '"+allele+"' AND alp_box='"+boxI+"' ORDER BY alp_timestamp"); } + catch (SQLException se) { + System.out.println("We got an exception while executing our query:" + "that probably means our ptr SQL is invalid"); se.printStackTrace(); System.exit(1); } + try { while (rs.next()) { phen_text_remark = rs.getString(3); } } + catch (SQLException se) { + System.out.println("We got an exception while getting a phenotype result:this shouldn't happen: we've done something really bad."); se.printStackTrace(); System.exit(1); } + + String remark = "No Other Remark assigned"; + rs = null; + try { rs = s.executeQuery("SELECT * FROM alp_remark WHERE joinkey = '"+allele+"' AND alp_box='"+boxI+"' ORDER BY alp_timestamp"); } + catch (SQLException se) { + System.out.println("We got an exception while executing our query:" + "that probably means our orem SQL is invalid"); se.printStackTrace(); System.exit(1); } + try { while (rs.next()) { remark = rs.getString(3); } } + catch (SQLException se) { + System.out.println("We got an exception while getting a remark result:this shouldn't happen: we've done something really bad."); se.printStackTrace(); System.exit(1); } + + String genetic_interaction = "No Genetic Interaction assigned"; + rs = null; + try { rs = s.executeQuery("SELECT * FROM alp_intx_desc WHERE joinkey = '"+allele+"' AND alp_box='"+boxI+"' ORDER BY alp_timestamp"); } + catch (SQLException se) { + System.out.println("We got an exception while executing our query:" + "that probably means our gint SQL is invalid"); se.printStackTrace(); System.exit(1); } + try { while (rs.next()) { genetic_interaction = rs.getString(3); } } + catch (SQLException se) { + System.out.println("We got an exception while getting a intx_desc result:this shouldn't happen: we've done something really bad."); se.printStackTrace(); System.exit(1); } + + int columns = 0; // the number of columns in that box + rs = null; + // grab the highest number column for that box and that allele + try { rs = s.executeQuery("SELECT alp_column FROM alp_term WHERE joinkey = '"+allele+"' AND alp_box = '"+boxI+"' ORDER BY alp_column DESC"); } + catch (SQLException se) { + System.out.println("We got an exception while executing our query:" + "that probably means our column SQL is invalid"); se.printStackTrace(); System.exit(1); } + try { rs.next(); { columns = rs.getInt(1); } } // assign the highest number column for that box and that allele to the number of columns + catch (SQLException se) { + System.out.println("We got an exception while getting a term/column result:this shouldn't happen: we've done something really bad."); se.printStackTrace(); System.exit(1); } + +// System.out.println("We have "+columns+" columns in box "+boxI+"."); // comment out later + + + for (int colI=1; colI<columns+1; colI++) { // for each of those columns + Character c1 = new Character(); // create a new character for a phenote row + c1.setValue("Allele",allele); // assign the allele + c1.setValue("Pub",paper); + c1.setValue("Curator",curator); + c1.setValue("Person",person); + c1.setValue("Phenotype Text Remark",phen_text_remark); + c1.setValue("Other Remark",remark); + c1.setValue("Genetic Interaction",genetic_interaction); + String postgres_value = "No Phenotype assigned"; + String postgres_table = "alp_term"; + postgres_value = queryPostgresCharacter(s, postgres_table, postgres_value, allele, boxI, colI); + c1.setValue("Phenotype",postgres_value); // assign the queried value + postgres_table = "alp_phen_remark"; postgres_value = "No Phenotype Remark assigned"; + postgres_value = queryPostgresCharacter(s, postgres_table, postgres_value, allele, boxI, colI); + c1.setValue("Phenotype Remark",postgres_value); // assign the queried value + postgres_table = "alp_anat_term"; postgres_value = "No Anatomy assigned"; + postgres_value = queryPostgresCharacter(s, postgres_table, postgres_value, allele, boxI, colI); +// c1.setValue("Anatomy",postgres_value); // this doesn't work, assigning whatever term name(s) is in postgres +// c1.setValue("Anatomy","WBbt:0004758"); // this works, assigning a term ID + postgres_table = "alp_lifestage"; postgres_value = "No Stage assigned"; + postgres_value = queryPostgresCharacter(s, postgres_table, postgres_value, allele, boxI, colI); + c1.setValue("Stage",postgres_value); // assign the queried value + postgres_table = "alp_nature"; postgres_value = "No Nature of Allele assigned"; + postgres_value = queryPostgresCharacter(s, postgres_table, postgres_value, allele, boxI, colI); + c1.setValue("Allele Nature",postgres_value); // assign the queried value + postgres_table = "alp_func"; postgres_value = "No Functional Change assigned"; + postgres_value = queryPostgresCharacter(s, postgres_table, postgres_value, allele, boxI, colI); + c1.setValue("Functional Change",postgres_value); // assign the queried value + postgres_table = "alp_temperature"; postgres_value = "No Temperature assigned"; + postgres_value = queryPostgresCharacter(s, postgres_table, postgres_value, allele, boxI, colI); + c1.setValue("Temperature",postgres_value); // assign the queried value + postgres_table = "alp_preparation"; postgres_value = "No Preparation assigned"; + postgres_value = queryPostgresCharacter(s, postgres_table, postgres_value, allele, boxI, colI); + c1.setValue("Preparation",postgres_value); // assign the queried value + postgres_table = "alp_penetrance"; postgres_value = "No Penetrance assigned"; + postgres_value = queryPostgresCharacter(s, postgres_table, postgres_value, allele, boxI, colI); + c1.setValue("Penetrance",postgres_value); // assign the queried value + postgres_table = "alp_percent"; postgres_value = "No Penetrance Percent assigned"; + postgres_value = queryPostgresCharacter(s, postgres_table, postgres_value, allele, boxI, colI); + c1.setValue("Penetrance Percent",postgres_value); // assign the queried value + postgres_table = "alp_range"; postgres_value = "No Penetrance Range assigned"; + postgres_value = queryPostgresCharacter(s, postgres_table, postgres_value, allele, boxI, colI); + c1.setValue("Penetrance Range",postgres_value); // assign the queried value + postgres_table = "alp_quantity_remark"; postgres_value = "No Quantity Remark assigned"; + postgres_value = queryPostgresCharacter(s, postgres_table, postgres_value, allele, boxI, colI); + c1.setValue("Quantity Remark",postgres_value); // assign the queried value + postgres_table = "alp_heat_sens"; postgres_value = "No Heat Sensitive assigned"; + postgres_value = queryPostgresCharacter(s, postgres_table, postgres_value, allele, boxI, colI); + c1.setValue("Heat Sensitive",postgres_value); // assign the queried value + postgres_table = "alp_heat_degree"; postgres_value = "No Heat Sensitive Degree assigned"; + postgres_value = queryPostgresCharacter(s, postgres_table, postgres_value, allele, boxI, colI); + c1.setValue("Heat Sensitive Degree",postgres_value); // assign the queried value + postgres_table = "alp_cold_sens"; postgres_value = "No Cold Sensitive assigned"; + postgres_value = queryPostgresCharacter(s, postgres_table, postgres_value, allele, boxI, colI); + c1.setValue("Cold Sensitive",postgres_value); // assign the queried value + postgres_table = "alp_cold_degree"; postgres_value = "No Cold Sensitive Degree assigned"; + postgres_value = queryPostgresCharacter(s, postgres_table, postgres_value, allele, boxI, colI); + c1.setValue("Cold Sensitive Degree",postgres_value); // assign the queried value + postgres_table = "alp_mat_effect"; postgres_value = "No Maternal Effect assigned"; + postgres_value = queryPostgresCharacter(s, postgres_table, postgres_value, allele, boxI, colI); + c1.setValue("Maternal Effect",postgres_value); // assign the queried value + postgres_table = "alp_pat_effect"; postgres_value = "No Paternal Effect assigned"; + postgres_value = queryPostgresCharacter(s, postgres_table, postgres_value, allele, boxI, colI); + c1.setValue("Paternal Effect",postgres_value); // assign the queried value + postgres_table = "alp_genotype"; postgres_value = "No Genotype assigned"; + postgres_value = queryPostgresCharacter(s, postgres_table, postgres_value, allele, boxI, colI); + c1.setValue("Genotype",postgres_value); // assign the queried value + postgres_table = "alp_strain"; postgres_value = "No Strain assigned"; + postgres_value = queryPostgresCharacter(s, postgres_table, postgres_value, allele, boxI, colI); + c1.setValue("Strain",postgres_value); // assign the queried value + postgres_table = "alp_delivered"; postgres_value = "No Delivered By assigned"; + postgres_value = queryPostgresCharacter(s, postgres_table, postgres_value, allele, boxI, colI); + c1.setValue("Delivered By",postgres_value); // assign the queried value + charList.add(c1); // add the character to the character list + } // for (int colI=1; colI<columns; colI++) } - catch (TermNotFoundException e) {} // do nothing - try next char field - catch (CharFieldException e) {} // do nothing - try next char field + catch (TermNotFoundException e) { + System.out.println("Term Not Found Exception, assigning characters by Publication."); } + catch (CharFieldException e) { + System.out.println("Char Field Exception, assigning characters by Publication."); } } } catch (SQLException se) { - System.out.println("We got an exception while getting a result:this " + "shouldn't happen: we've done something really bad."); se.printStackTrace(); System.exit(1); } + System.out.println("We got an exception while getting a publication query result:this shouldn't happen: we've done something really bad."); se.printStackTrace(); System.exit(1); } return charList; // for (CharacterI chr : charList.getList()) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <azu...@us...> - 2007-03-28 21:06:21
|
Revision: 431 http://svn.sourceforge.net/obo/?rev=431&view=rev Author: azurebrd Date: 2007-03-28 14:06:22 -0700 (Wed, 28 Mar 2007) Log Message: ----------- Modified Paths: -------------- phenote/trunk/conf/worm.cfg phenote/trunk/src/java/phenote/dataadapter/worm/WormAdapter.java Modified: phenote/trunk/conf/worm.cfg =================================================================== --- phenote/trunk/conf/worm.cfg 2007-03-28 19:53:07 UTC (rev 430) +++ phenote/trunk/conf/worm.cfg 2007-03-28 21:06:22 UTC (rev 431) @@ -58,16 +58,19 @@ <field name="Allele Nature" enable="true"/> <field name="Functional Change" enable="true"/> - <field name="Temperature" enable="true"/> <!-- type=INT contraint=? --> + <field name="Temperature" enable="true"/> <field name="Preparation" enable="true"/> <field name="Penetrance" enable="true"/> - <field name="Penetrance Remark" enable="true"/> - <field name="Penetrance Range" enable="true"/> <!-- INT --> - <field name="Quantity Remark" enable="true"/> <!-- INT? --> - <field name="Heat Sensitive" enable="true"/> <!-- INT? --> - <field name="Cold Sensitive" enable="true"/> <!-- INT? --> + <field name="Penetrance Percent" enable="true"/> + <field name="Penetrance Range" enable="true"/> + <field name="Quantity" enable="true"/> + <field name="Quantity Remark" enable="true"/> + <field name="Heat Sensitive" enable="true"/> <!-- Boolean --> + <field name="Heat Sensitive Degree" enable="true"/> + <field name="Cold Sensitive" enable="true"/> <!-- Boolean --> + <field name="Cold Sensitive Degree" enable="true"/> <field name="Maternal Effect" enable="true"/> - <field name="Paternal Effect" enable="true"/> <!-- BOOLEAN? --> + <field name="Paternal Effect" enable="true"/> <!-- BOOLEAN --> <field name="Genotype" enable="true"/> <field name="Strain" enable="true"/> <field name="Delivered By" enable="true"/> Modified: phenote/trunk/src/java/phenote/dataadapter/worm/WormAdapter.java =================================================================== --- phenote/trunk/src/java/phenote/dataadapter/worm/WormAdapter.java 2007-03-28 19:53:07 UTC (rev 430) +++ phenote/trunk/src/java/phenote/dataadapter/worm/WormAdapter.java 2007-03-28 21:06:22 UTC (rev 431) @@ -245,7 +245,7 @@ c1.setValue("Penetrance",postgres_value); // assign the queried value postgres_table = "alp_percent"; postgres_value = "No Penetrance Percent assigned"; postgres_value = queryPostgresCharacter(s, postgres_table, postgres_value, query, boxI, colI); - c1.setValue("Penetrance Remark",postgres_value); // assign the queried value + c1.setValue("Penetrance Percent",postgres_value); // assign the queried value postgres_table = "alp_range"; postgres_value = "No Penetrance Range assigned"; postgres_value = queryPostgresCharacter(s, postgres_table, postgres_value, query, boxI, colI); c1.setValue("Penetrance Range",postgres_value); // assign the queried value @@ -255,9 +255,15 @@ postgres_table = "alp_heat_sens"; postgres_value = "No Heat Sensitive assigned"; postgres_value = queryPostgresCharacter(s, postgres_table, postgres_value, query, boxI, colI); c1.setValue("Heat Sensitive",postgres_value); // assign the queried value + postgres_table = "alp_heat_degree"; postgres_value = "No Heat Sensitive Degree assigned"; + postgres_value = queryPostgresCharacter(s, postgres_table, postgres_value, query, boxI, colI); + c1.setValue("Heat Sensitive Degree",postgres_value); // assign the queried value postgres_table = "alp_cold_sens"; postgres_value = "No Cold Sensitive assigned"; postgres_value = queryPostgresCharacter(s, postgres_table, postgres_value, query, boxI, colI); c1.setValue("Cold Sensitive",postgres_value); // assign the queried value + postgres_table = "alp_cold_degree"; postgres_value = "No Cold Sensitive Degree assigned"; + postgres_value = queryPostgresCharacter(s, postgres_table, postgres_value, query, boxI, colI); + c1.setValue("Cold Sensitive Degree",postgres_value); // assign the queried value postgres_table = "alp_mat_effect"; postgres_value = "No Maternal Effect assigned"; postgres_value = queryPostgresCharacter(s, postgres_table, postgres_value, query, boxI, colI); c1.setValue("Maternal Effect",postgres_value); // assign the queried value This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <azu...@us...> - 2007-03-28 19:53:12
|
Revision: 430 http://svn.sourceforge.net/obo/?rev=430&view=rev Author: azurebrd Date: 2007-03-28 12:53:07 -0700 (Wed, 28 Mar 2007) Log Message: ----------- Modified Paths: -------------- phenote/trunk/conf/worm.cfg phenote/trunk/src/java/phenote/dataadapter/worm/WormAdapter.java Modified: phenote/trunk/conf/worm.cfg =================================================================== --- phenote/trunk/conf/worm.cfg 2007-03-28 19:49:48 UTC (rev 429) +++ phenote/trunk/conf/worm.cfg 2007-03-28 19:53:07 UTC (rev 430) @@ -60,6 +60,7 @@ <field name="Functional Change" enable="true"/> <field name="Temperature" enable="true"/> <!-- type=INT contraint=? --> <field name="Preparation" enable="true"/> + <field name="Penetrance" enable="true"/> <field name="Penetrance Remark" enable="true"/> <field name="Penetrance Range" enable="true"/> <!-- INT --> <field name="Quantity Remark" enable="true"/> <!-- INT? --> Modified: phenote/trunk/src/java/phenote/dataadapter/worm/WormAdapter.java =================================================================== --- phenote/trunk/src/java/phenote/dataadapter/worm/WormAdapter.java 2007-03-28 19:49:48 UTC (rev 429) +++ phenote/trunk/src/java/phenote/dataadapter/worm/WormAdapter.java 2007-03-28 19:53:07 UTC (rev 430) @@ -240,6 +240,9 @@ postgres_table = "alp_preparation"; postgres_value = "No Preparation assigned"; postgres_value = queryPostgresCharacter(s, postgres_table, postgres_value, query, boxI, colI); c1.setValue("Preparation",postgres_value); // assign the queried value + postgres_table = "alp_penetrance"; postgres_value = "No Penetrance assigned"; + postgres_value = queryPostgresCharacter(s, postgres_table, postgres_value, query, boxI, colI); + c1.setValue("Penetrance",postgres_value); // assign the queried value postgres_table = "alp_percent"; postgres_value = "No Penetrance Percent assigned"; postgres_value = queryPostgresCharacter(s, postgres_table, postgres_value, query, boxI, colI); c1.setValue("Penetrance Remark",postgres_value); // assign the queried value This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <azu...@us...> - 2007-03-28 19:49:48
|
Revision: 429 http://svn.sourceforge.net/obo/?rev=429&view=rev Author: azurebrd Date: 2007-03-28 12:49:48 -0700 (Wed, 28 Mar 2007) Log Message: ----------- Modified Paths: -------------- phenote/trunk/conf/worm.cfg phenote/trunk/src/java/phenote/dataadapter/worm/WormAdapter.java Modified: phenote/trunk/conf/worm.cfg =================================================================== --- phenote/trunk/conf/worm.cfg 2007-03-28 17:04:05 UTC (rev 428) +++ phenote/trunk/conf/worm.cfg 2007-03-28 19:49:48 UTC (rev 429) @@ -59,7 +59,7 @@ <field name="Functional Change" enable="true"/> <field name="Temperature" enable="true"/> <!-- type=INT contraint=? --> - <field name="Preperation" enable="true"/> + <field name="Preparation" enable="true"/> <field name="Penetrance Remark" enable="true"/> <field name="Penetrance Range" enable="true"/> <!-- INT --> <field name="Quantity Remark" enable="true"/> <!-- INT? --> Modified: phenote/trunk/src/java/phenote/dataadapter/worm/WormAdapter.java =================================================================== --- phenote/trunk/src/java/phenote/dataadapter/worm/WormAdapter.java 2007-03-28 17:04:05 UTC (rev 428) +++ phenote/trunk/src/java/phenote/dataadapter/worm/WormAdapter.java 2007-03-28 19:49:48 UTC (rev 429) @@ -44,6 +44,19 @@ // should their be a check that the current char fields have pub & allele? } + private String queryPostgresCharacter(Statement s, String postgres_table, String default_value, String query, int boxI, int colI) { + ResultSet rs = null; // intialize postgres query result + // get the phenotype term in timestamp order where the allele and box and column number match + try { rs = s.executeQuery("SELECT * FROM "+postgres_table+" WHERE joinkey = '"+query+"' AND alp_box='"+boxI+"' AND alp_column='"+colI+"' ORDER BY alp_timestamp"); } + catch (SQLException se) { + System.out.println("We got an exception while executing our query:" + "that probably means our term SQL is invalid"); se.printStackTrace(); System.exit(1); } + try { while (rs.next()) { default_value = rs.getString(4); } } // assign the new term value + catch (SQLException se) { + System.out.println("We got an exception while getting a result:this " + "shouldn't happen: we've done something really bad."); se.printStackTrace(); System.exit(1); } + System.out.println("Added in function charList term "+query+" column "+colI+" box "+boxI+"."); // comment out later + return default_value; + } + /** return true if data adapter can query for the char field */ public boolean isFieldQueryable(String field) { return queryableFields.contains(field); @@ -191,46 +204,10 @@ System.out.println("We got an exception while getting a result:this " + "shouldn't happen: we've done something really bad."); se.printStackTrace(); System.exit(1); } System.out.println("We have "+columns+" columns in box "+boxI+"."); // comment out later + + for (int colI=1; colI<columns+1; colI++) { // for each of those columns Character c1 = new Character(); // create a new character for a phenote row - - String phenotype = "No Phenotype assigned"; - rs = null; - // get the phenotype term in timestamp order where the allele and box and column number match - try { rs = s.executeQuery("SELECT * FROM alp_term WHERE joinkey = '"+query+"' AND alp_box='"+boxI+"' AND alp_column='"+colI+"' ORDER BY alp_timestamp"); } - catch (SQLException se) { - System.out.println("We got an exception while executing our query:" + "that probably means our term SQL is invalid"); se.printStackTrace(); System.exit(1); } - try { while (rs.next()) { phenotype = rs.getString(4); } } // assign the phenotype term value - catch (SQLException se) { - System.out.println("We got an exception while getting a result:this " + "shouldn't happen: we've done something really bad."); se.printStackTrace(); System.exit(1); } - - String phen_remark = "No Phenotype Remark assigned"; - rs = null; - try { rs = s.executeQuery("SELECT * FROM alp_phen_remark WHERE joinkey = '"+query+"' AND alp_box='"+boxI+"' AND alp_column='"+colI+"' ORDER BY alp_timestamp"); } - catch (SQLException se) { - System.out.println("We got an exception while executing our query:" + "that probably means our phen_rem SQL is invalid"); se.printStackTrace(); System.exit(1); } - try { while (rs.next()) { phen_remark = rs.getString(4); } } - catch (SQLException se) { - System.out.println("We got an exception while getting a result:this " + "shouldn't happen: we've done something really bad."); se.printStackTrace(); System.exit(1); } - - String anatomy = "No anatomy assigned"; - rs = null; - try { rs = s.executeQuery("SELECT * FROM alp_anat_term WHERE joinkey = '"+query+"' AND alp_box='"+boxI+"' AND alp_column='"+colI+"' ORDER BY alp_timestamp"); } - catch (SQLException se) { - System.out.println("We got an exception while executing our query:" + "that probably means our anaterm SQL is invalid"); se.printStackTrace(); System.exit(1); } - try { while (rs.next()) { anatomy = rs.getString(4); } } - catch (SQLException se) { - System.out.println("We got an exception while getting a result:this " + "shouldn't happen: we've done something really bad."); se.printStackTrace(); System.exit(1); } - - String stage = "No Stage assigned"; - rs = null; - try { rs = s.executeQuery("SELECT * FROM alp_lifestage WHERE joinkey = '"+query+"' AND alp_box='"+boxI+"' AND alp_column='"+colI+"' ORDER BY alp_timestamp"); } - catch (SQLException se) { - System.out.println("We got an exception while executing our query:" + "that probably means our stage SQL is invalid"); se.printStackTrace(); System.exit(1); } - try { while (rs.next()) { stage = rs.getString(4); } } - catch (SQLException se) { - System.out.println("We got an exception while getting a result:this " + "shouldn't happen: we've done something really bad."); se.printStackTrace(); System.exit(1); } - c1.setValue("Allele",query); // assign the allele c1.setValue("Pub",paper); c1.setValue("Curator",curator); @@ -238,12 +215,113 @@ c1.setValue("Phenotype Text Remark",phen_text_remark); c1.setValue("Other Remark",remark); c1.setValue("Genetic Interaction",genetic_interaction); - c1.setValue("Phenotype",phenotype); - c1.setValue("Phenotype Remark",phen_remark); -// c1.setValue("Anatomy",anatomy); - c1.setValue("Stage",stage); + String postgres_value = "No Phenotype assigned"; + String postgres_table = "alp_term"; + postgres_value = queryPostgresCharacter(s, postgres_table, postgres_value, query, boxI, colI); + c1.setValue("Phenotype",postgres_value); // assign the queried value + postgres_table = "alp_phen_remark"; postgres_value = "No Phenotype Remark assigned"; + postgres_value = queryPostgresCharacter(s, postgres_table, postgres_value, query, boxI, colI); + c1.setValue("Phenotype Remark",postgres_value); // assign the queried value + postgres_table = "alp_anat_term"; postgres_value = "No Anatomy assigned"; + postgres_value = queryPostgresCharacter(s, postgres_table, postgres_value, query, boxI, colI); +// c1.setValue("Anatomy",postgres_value); // assign the queried value + postgres_table = "alp_lifestage"; postgres_value = "No Stage assigned"; + postgres_value = queryPostgresCharacter(s, postgres_table, postgres_value, query, boxI, colI); + c1.setValue("Stage",postgres_value); // assign the queried value + postgres_table = "alp_nature"; postgres_value = "No Nature of Allele assigned"; + postgres_value = queryPostgresCharacter(s, postgres_table, postgres_value, query, boxI, colI); + c1.setValue("Allele Nature",postgres_value); // assign the queried value + postgres_table = "alp_func"; postgres_value = "No Functional Change assigned"; + postgres_value = queryPostgresCharacter(s, postgres_table, postgres_value, query, boxI, colI); + c1.setValue("Functional Change",postgres_value); // assign the queried value + postgres_table = "alp_temperature"; postgres_value = "No Temperature assigned"; + postgres_value = queryPostgresCharacter(s, postgres_table, postgres_value, query, boxI, colI); + c1.setValue("Temperature",postgres_value); // assign the queried value + postgres_table = "alp_preparation"; postgres_value = "No Preparation assigned"; + postgres_value = queryPostgresCharacter(s, postgres_table, postgres_value, query, boxI, colI); + c1.setValue("Preparation",postgres_value); // assign the queried value + postgres_table = "alp_percent"; postgres_value = "No Penetrance Percent assigned"; + postgres_value = queryPostgresCharacter(s, postgres_table, postgres_value, query, boxI, colI); + c1.setValue("Penetrance Remark",postgres_value); // assign the queried value + postgres_table = "alp_range"; postgres_value = "No Penetrance Range assigned"; + postgres_value = queryPostgresCharacter(s, postgres_table, postgres_value, query, boxI, colI); + c1.setValue("Penetrance Range",postgres_value); // assign the queried value + postgres_table = "alp_quantity_remark"; postgres_value = "No Quantity Remark assigned"; + postgres_value = queryPostgresCharacter(s, postgres_table, postgres_value, query, boxI, colI); + c1.setValue("Quantity Remark",postgres_value); // assign the queried value + postgres_table = "alp_heat_sens"; postgres_value = "No Heat Sensitive assigned"; + postgres_value = queryPostgresCharacter(s, postgres_table, postgres_value, query, boxI, colI); + c1.setValue("Heat Sensitive",postgres_value); // assign the queried value + postgres_table = "alp_cold_sens"; postgres_value = "No Cold Sensitive assigned"; + postgres_value = queryPostgresCharacter(s, postgres_table, postgres_value, query, boxI, colI); + c1.setValue("Cold Sensitive",postgres_value); // assign the queried value + postgres_table = "alp_mat_effect"; postgres_value = "No Maternal Effect assigned"; + postgres_value = queryPostgresCharacter(s, postgres_table, postgres_value, query, boxI, colI); + c1.setValue("Maternal Effect",postgres_value); // assign the queried value + postgres_table = "alp_pat_effect"; postgres_value = "No Paternal Effect assigned"; + postgres_value = queryPostgresCharacter(s, postgres_table, postgres_value, query, boxI, colI); + c1.setValue("Paternal Effect",postgres_value); // assign the queried value + postgres_table = "alp_genotype"; postgres_value = "No Genotype assigned"; + postgres_value = queryPostgresCharacter(s, postgres_table, postgres_value, query, boxI, colI); + c1.setValue("Genotype",postgres_value); // assign the queried value + postgres_table = "alp_strain"; postgres_value = "No Strain assigned"; + postgres_value = queryPostgresCharacter(s, postgres_table, postgres_value, query, boxI, colI); + c1.setValue("Strain",postgres_value); // assign the queried value + postgres_table = "alp_delivered"; postgres_value = "No Delivered By assigned"; + postgres_value = queryPostgresCharacter(s, postgres_table, postgres_value, query, boxI, colI); + c1.setValue("Delivered By",postgres_value); // assign the queried value charList.add(c1); // add the character to the character list - System.out.println("Added to charList term "+phenotype+" column "+colI+" box "+boxI+"."); // comment out later +// +// String phenotype = "No Phenotype assigned"; +// rs = null; +// // get the phenotype term in timestamp order where the allele and box and column number match +// try { rs = s.executeQuery("SELECT * FROM alp_term WHERE joinkey = '"+query+"' AND alp_box='"+boxI+"' AND alp_column='"+colI+"' ORDER BY alp_timestamp"); } +// catch (SQLException se) { +// System.out.println("We got an exception while executing our query:" + "that probably means our term SQL is invalid"); se.printStackTrace(); System.exit(1); } +// try { while (rs.next()) { phenotype = rs.getString(4); } } // assign the phenotype term value +// catch (SQLException se) { +// System.out.println("We got an exception while getting a result:this " + "shouldn't happen: we've done something really bad."); se.printStackTrace(); System.exit(1); } +// +// String phen_remark = "No Phenotype Remark assigned"; +// rs = null; +// try { rs = s.executeQuery("SELECT * FROM alp_phen_remark WHERE joinkey = '"+query+"' AND alp_box='"+boxI+"' AND alp_column='"+colI+"' ORDER BY alp_timestamp"); } +// catch (SQLException se) { +// System.out.println("We got an exception while executing our query:" + "that probably means our phen_rem SQL is invalid"); se.printStackTrace(); System.exit(1); } +// try { while (rs.next()) { phen_remark = rs.getString(4); } } +// catch (SQLException se) { +// System.out.println("We got an exception while getting a result:this " + "shouldn't happen: we've done something really bad."); se.printStackTrace(); System.exit(1); } +// +// String anatomy = "No anatomy assigned"; +// rs = null; +// try { rs = s.executeQuery("SELECT * FROM alp_anat_term WHERE joinkey = '"+query+"' AND alp_box='"+boxI+"' AND alp_column='"+colI+"' ORDER BY alp_timestamp"); } +// catch (SQLException se) { +// System.out.println("We got an exception while executing our query:" + "that probably means our anaterm SQL is invalid"); se.printStackTrace(); System.exit(1); } +// try { while (rs.next()) { anatomy = rs.getString(4); } } +// catch (SQLException se) { +// System.out.println("We got an exception while getting a result:this " + "shouldn't happen: we've done something really bad."); se.printStackTrace(); System.exit(1); } +// +// String stage = "No Stage assigned"; +// rs = null; +// try { rs = s.executeQuery("SELECT * FROM alp_lifestage WHERE joinkey = '"+query+"' AND alp_box='"+boxI+"' AND alp_column='"+colI+"' ORDER BY alp_timestamp"); } +// catch (SQLException se) { +// System.out.println("We got an exception while executing our query:" + "that probably means our stage SQL is invalid"); se.printStackTrace(); System.exit(1); } +// try { while (rs.next()) { stage = rs.getString(4); } } +// catch (SQLException se) { +// System.out.println("We got an exception while getting a result:this " + "shouldn't happen: we've done something really bad."); se.printStackTrace(); System.exit(1); } +// +// c1.setValue("Allele",query); // assign the allele +// c1.setValue("Pub",paper); +// c1.setValue("Curator",curator); +// c1.setValue("Person",person); +// c1.setValue("Phenotype Text Remark",phen_text_remark); +// c1.setValue("Other Remark",remark); +// c1.setValue("Genetic Interaction",genetic_interaction); +// c1.setValue("Phenotype",phenotype); +// c1.setValue("Phenotype Remark",phen_remark); +// // c1.setValue("Anatomy",anatomy); +// c1.setValue("Stage",stage); +// charList.add(c1); // add the character to the character list +// System.out.println("Added to charList term "+phenotype+" column "+colI+" box "+boxI+"."); // comment out later } // for (int colI=1; colI<columns; colI++) } // for (int boxI=1; boxI<boxes; boxI++) } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <azu...@us...> - 2007-03-28 17:04:08
|
Revision: 428 http://svn.sourceforge.net/obo/?rev=428&view=rev Author: azurebrd Date: 2007-03-28 10:04:05 -0700 (Wed, 28 Mar 2007) Log Message: ----------- Modified Paths: -------------- phenote/trunk/src/java/phenote/dataadapter/worm/WormAdapter.java Added Paths: ----------- phenote/trunk/jars/postgresql-8.2-504.jdbc4.jar Added: phenote/trunk/jars/postgresql-8.2-504.jdbc4.jar =================================================================== (Binary files differ) Property changes on: phenote/trunk/jars/postgresql-8.2-504.jdbc4.jar ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Modified: phenote/trunk/src/java/phenote/dataadapter/worm/WormAdapter.java =================================================================== --- phenote/trunk/src/java/phenote/dataadapter/worm/WormAdapter.java 2007-03-28 16:39:45 UTC (rev 427) +++ phenote/trunk/src/java/phenote/dataadapter/worm/WormAdapter.java 2007-03-28 17:04:05 UTC (rev 428) @@ -1,5 +1,7 @@ package phenote.dataadapter.worm; +// add http://jdbc.postgresql.org/download/postgresql-8.2-504.jdbc4.jar to trunk/jars/ directory + import java.util.ArrayList; import java.util.List; @@ -10,6 +12,23 @@ import phenote.dataadapter.DataAdapterEx; import phenote.dataadapter.QueryableDataAdapterI; +// import phenote.datamodel.CharacterI; +import phenote.datamodel.CharacterList; +import phenote.datamodel.Character; +import phenote.datamodel.CharFieldException; +import phenote.datamodel.TermNotFoundException; +import phenote.datamodel.CharField; + +import java.sql.DriverManager; +import java.sql.Connection; +import java.sql.SQLException; +import java.sql.Statement; +import java.sql.ResultSet; + + + + + public class WormAdapter implements QueryableDataAdapterI { private List<String> queryableFields = new ArrayList<String>(2); @@ -30,11 +49,256 @@ return queryableFields.contains(field); } public CharacterListI query(String field, String query) throws DataAdapterEx { - String m = "Worm adapter query not yet implemented. field: "+field+" query: "+query; - JOptionPane.showMessageDialog(null,m,"Worm stub",JOptionPane.INFORMATION_MESSAGE); +// String m = "Worm adapter query not yet implemented. field: "+field+" query: "+query; +// JOptionPane.showMessageDialog(null,m,"Worm stub",JOptionPane.INFORMATION_MESSAGE); + + String alleleString = "Allele"; // the query could be for Allele or Pub + String pubString = "Pub"; +// System.out.println("Querying field "+field+" query "+query+" end"); +// if (field.equals(alleleString)) { System.out.println("Yes Allele"); } else { System.out.println("Not Allele"); } + + CharacterListI charList = new CharacterList(); // create the CharacterList that we will return + + if (field.equals(alleleString)) { // if querying the allele, get allele data + System.out.println("Checking if Driver is registered with DriverManager."); // open postgres database connection + try { + Class.forName("org.postgresql.Driver"); + } catch (ClassNotFoundException cnfe) { + System.out.println("Couldn't find the driver!"); + System.out.println("Let's print a stack trace, and exit."); + cnfe.printStackTrace(); + System.exit(1); + } + System.out.println("Registered the driver ok, so let's make a connection."); + Connection c = null; + try { + // The second and third arguments are the username and password, + // respectively. They should be whatever is necessary to connect + // to the database. + // c = DriverManager.getConnection("jdbc:postgresql://andiamo.caltech.edu/testdb", "postgres", ""); + // c = DriverManager.getConnection("jdbc:postgresql://131.215.52.86:5432/testdb", "postgres", ""); // andiamo, if postgres is running there + c = DriverManager.getConnection("jdbc:postgresql://131.215.52.76:5432/testdb", "postgres", ""); // tazendra + // c = DriverManager.getConnection("jdbc:postgresql://localhost/testdb", "postgres", ""); // with /usr/local/pgsql/data/postgresql.conf set to localhost + //c = DriverManager.getConnection("jdbc:postgresql://localhost/booktown", "username", "password"); // sample + } catch (SQLException se) { + System.out.println("Couldn't connect: print out a stack trace and exit."); + se.printStackTrace(); + System.exit(1); + } + if (c != null) + System.out.println("Hooray! We connected to the database!"); + else + System.out.println("We should never get here."); + Statement s = null; + try { + s = c.createStatement(); + } catch (SQLException se) { + System.out.println("We got an exception while creating a statement:" + + "that probably means we're no longer connected."); + se.printStackTrace(); + System.exit(1); + } // end opening postgres database connection + + + ResultSet rs = null; // intialize postgres query result + try { rs = s.executeQuery("SELECT * FROM alp_tempname WHERE alp_tempname = '"+query+"'"); } // find the allele that matches the queried allele + catch (SQLException se) { + System.out.println("We got an exception while executing our query: that probably means our SQL is invalid"); se.printStackTrace(); System.exit(1); } + int foundAllele = 0; + try { + while (rs.next()) { + System.out.println(rs.getString(1) + "\t" + rs.getString(2) + "\t" + rs.getString(3)); // comment out later + foundAllele++; } } // if there's a result in postgres we have found an allele + catch (SQLException se) { + System.out.println("We got an exception while getting a result:this shouldn't happen: we've done something really bad."); se.printStackTrace(); System.exit(1); } + + if (foundAllele <= 0) { throw new DataAdapterEx("Worm query of "+query+" of field "+field+" has no match in postgres"); } // if there is no match for the allele in postgres + else { // if there is a match + try { + int boxes = 0; // the number of boxes for that allele + rs = null; // init result from postgres query + try { rs = s.executeQuery("SELECT alp_box FROM alp_curator WHERE joinkey = '"+query+"' ORDER BY alp_box DESC"); } // grab the highest number box for that allele + catch (SQLException se) { + System.out.println("We got an exception while executing our query:" + "that probably means our SQL is invalid"); se.printStackTrace(); System.exit(1); } + try { rs.next(); { boxes = rs.getInt(1); } } // assign the highest number box for that allele to the number of boxes + catch (SQLException se) { + System.out.println("We got an exception while getting a result:this " + "shouldn't happen: we've done something really bad."); se.printStackTrace(); System.exit(1); } + System.out.println("We have "+boxes+" boxes"); // comment out later + for (int boxI=1; boxI<boxes+1; boxI++) { // for each of those boxes + String paper = "No Paper assigned"; // initialize paper value + rs = null; + // get the papers in timestamp order where the allele and box number match + try { rs = s.executeQuery("SELECT * FROM alp_paper WHERE joinkey = '"+query+"' AND alp_box='"+boxI+"' ORDER BY alp_timestamp"); } + catch (SQLException se) { + System.out.println("We got an exception while executing our query:" + "that probably means our pap SQL is invalid"); se.printStackTrace(); System.exit(1); } + try { while (rs.next()) { paper = rs.getString(3); } } // assign the paper + catch (SQLException se) { + System.out.println("We got an exception while getting a result:this " + "shouldn't happen: we've done something really bad."); se.printStackTrace(); System.exit(1); } + + String curator = "No Curator assigned"; + rs = null; + try { rs = s.executeQuery("SELECT * FROM alp_curator WHERE joinkey = '"+query+"' AND alp_box='"+boxI+"' ORDER BY alp_timestamp"); } + catch (SQLException se) { + System.out.println("We got an exception while executing our query:" + "that probably means our cur SQL is invalid"); se.printStackTrace(); System.exit(1); } + try { while (rs.next()) { curator = rs.getString(3); } } + catch (SQLException se) { + System.out.println("We got an exception while getting a result:this " + "shouldn't happen: we've done something really bad."); se.printStackTrace(); System.exit(1); } + + String person = "No Person assigned"; + rs = null; + try { rs = s.executeQuery("SELECT * FROM alp_person WHERE joinkey = '"+query+"' AND alp_box='"+boxI+"' ORDER BY alp_timestamp"); } + catch (SQLException se) { + System.out.println("We got an exception while executing our query:" + "that probably means our per SQL is invalid"); se.printStackTrace(); System.exit(1); } + try { while (rs.next()) { person = rs.getString(3); } } + catch (SQLException se) { + System.out.println("We got an exception while getting a result:this " + "shouldn't happen: we've done something really bad."); se.printStackTrace(); System.exit(1); } + + String phen_text_remark = "No Phenotype Text Remark assigned"; + rs = null; + try { rs = s.executeQuery("SELECT * FROM alp_phenotype WHERE joinkey = '"+query+"' AND alp_box='"+boxI+"' ORDER BY alp_timestamp"); } + catch (SQLException se) { + System.out.println("We got an exception while executing our query:" + "that probably means our ptr SQL is invalid"); se.printStackTrace(); System.exit(1); } + try { while (rs.next()) { phen_text_remark = rs.getString(3); } } + catch (SQLException se) { + System.out.println("We got an exception while getting a result:this " + "shouldn't happen: we've done something really bad."); se.printStackTrace(); System.exit(1); } + + String remark = "No Other Remark assigned"; + rs = null; + try { rs = s.executeQuery("SELECT * FROM alp_remark WHERE joinkey = '"+query+"' AND alp_box='"+boxI+"' ORDER BY alp_timestamp"); } + catch (SQLException se) { + System.out.println("We got an exception while executing our query:" + "that probably means our orem SQL is invalid"); se.printStackTrace(); System.exit(1); } + try { while (rs.next()) { remark = rs.getString(3); } } + catch (SQLException se) { + System.out.println("We got an exception while getting a result:this " + "shouldn't happen: we've done something really bad."); se.printStackTrace(); System.exit(1); } + + String genetic_interaction = "No Genetic Interaction assigned"; + rs = null; + try { rs = s.executeQuery("SELECT * FROM alp_intx_desc WHERE joinkey = '"+query+"' AND alp_box='"+boxI+"' ORDER BY alp_timestamp"); } + catch (SQLException se) { + System.out.println("We got an exception while executing our query:" + "that probably means our gint SQL is invalid"); se.printStackTrace(); System.exit(1); } + try { while (rs.next()) { genetic_interaction = rs.getString(3); } } + catch (SQLException se) { + System.out.println("We got an exception while getting a result:this " + "shouldn't happen: we've done something really bad."); se.printStackTrace(); System.exit(1); } + + int columns = 0; // the number of columns in that box + rs = null; + // grab the highest number column for that box and that allele + try { rs = s.executeQuery("SELECT alp_column FROM alp_term WHERE joinkey = '"+query+"' AND alp_box = '"+boxI+"' ORDER BY alp_column DESC"); } + catch (SQLException se) { + System.out.println("We got an exception while executing our query:" + "that probably means our column SQL is invalid"); se.printStackTrace(); System.exit(1); } + try { rs.next(); { columns = rs.getInt(1); } } // assign the highest number column for that box and that allele to the number of columns + catch (SQLException se) { + System.out.println("We got an exception while getting a result:this " + "shouldn't happen: we've done something really bad."); se.printStackTrace(); System.exit(1); } + + System.out.println("We have "+columns+" columns in box "+boxI+"."); // comment out later + for (int colI=1; colI<columns+1; colI++) { // for each of those columns + Character c1 = new Character(); // create a new character for a phenote row + + String phenotype = "No Phenotype assigned"; + rs = null; + // get the phenotype term in timestamp order where the allele and box and column number match + try { rs = s.executeQuery("SELECT * FROM alp_term WHERE joinkey = '"+query+"' AND alp_box='"+boxI+"' AND alp_column='"+colI+"' ORDER BY alp_timestamp"); } + catch (SQLException se) { + System.out.println("We got an exception while executing our query:" + "that probably means our term SQL is invalid"); se.printStackTrace(); System.exit(1); } + try { while (rs.next()) { phenotype = rs.getString(4); } } // assign the phenotype term value + catch (SQLException se) { + System.out.println("We got an exception while getting a result:this " + "shouldn't happen: we've done something really bad."); se.printStackTrace(); System.exit(1); } + + String phen_remark = "No Phenotype Remark assigned"; + rs = null; + try { rs = s.executeQuery("SELECT * FROM alp_phen_remark WHERE joinkey = '"+query+"' AND alp_box='"+boxI+"' AND alp_column='"+colI+"' ORDER BY alp_timestamp"); } + catch (SQLException se) { + System.out.println("We got an exception while executing our query:" + "that probably means our phen_rem SQL is invalid"); se.printStackTrace(); System.exit(1); } + try { while (rs.next()) { phen_remark = rs.getString(4); } } + catch (SQLException se) { + System.out.println("We got an exception while getting a result:this " + "shouldn't happen: we've done something really bad."); se.printStackTrace(); System.exit(1); } + + String anatomy = "No anatomy assigned"; + rs = null; + try { rs = s.executeQuery("SELECT * FROM alp_anat_term WHERE joinkey = '"+query+"' AND alp_box='"+boxI+"' AND alp_column='"+colI+"' ORDER BY alp_timestamp"); } + catch (SQLException se) { + System.out.println("We got an exception while executing our query:" + "that probably means our anaterm SQL is invalid"); se.printStackTrace(); System.exit(1); } + try { while (rs.next()) { anatomy = rs.getString(4); } } + catch (SQLException se) { + System.out.println("We got an exception while getting a result:this " + "shouldn't happen: we've done something really bad."); se.printStackTrace(); System.exit(1); } + + String stage = "No Stage assigned"; + rs = null; + try { rs = s.executeQuery("SELECT * FROM alp_lifestage WHERE joinkey = '"+query+"' AND alp_box='"+boxI+"' AND alp_column='"+colI+"' ORDER BY alp_timestamp"); } + catch (SQLException se) { + System.out.println("We got an exception while executing our query:" + "that probably means our stage SQL is invalid"); se.printStackTrace(); System.exit(1); } + try { while (rs.next()) { stage = rs.getString(4); } } + catch (SQLException se) { + System.out.println("We got an exception while getting a result:this " + "shouldn't happen: we've done something really bad."); se.printStackTrace(); System.exit(1); } + + c1.setValue("Allele",query); // assign the allele + c1.setValue("Pub",paper); + c1.setValue("Curator",curator); + c1.setValue("Person",person); + c1.setValue("Phenotype Text Remark",phen_text_remark); + c1.setValue("Other Remark",remark); + c1.setValue("Genetic Interaction",genetic_interaction); + c1.setValue("Phenotype",phenotype); + c1.setValue("Phenotype Remark",phen_remark); +// c1.setValue("Anatomy",anatomy); + c1.setValue("Stage",stage); + charList.add(c1); // add the character to the character list + System.out.println("Added to charList term "+phenotype+" column "+colI+" box "+boxI+"."); // comment out later + } // for (int colI=1; colI<columns; colI++) + } // for (int boxI=1; boxI<boxes; boxI++) + } + catch (TermNotFoundException e) {} // do nothing - try next char field + catch (CharFieldException e) {} // do nothing - try next char field + return charList; + } // end -- if there's an allele found in postgres + + } else if (field.equals(pubString)) { // if querying the publication, get paper data + System.out.println("Checking if Driver is registered with DriverManager."); // open postgres database connection + try { Class.forName("org.postgresql.Driver"); } + catch (ClassNotFoundException cnfe) { + System.out.println("Couldn't find the driver!"); System.out.println("Let's print a stack trace, and exit."); cnfe.printStackTrace(); System.exit(1); } + System.out.println("Registered the driver ok, so let's make a connection."); + Connection c = null; + try { c = DriverManager.getConnection("jdbc:postgresql://131.215.52.76:5432/testdb", "postgres", ""); } // tazendra + catch (SQLException se) { System.out.println("Couldn't connect: print out a stack trace and exit."); se.printStackTrace(); System.exit(1); } + if (c != null) System.out.println("Hooray! We connected to the database!"); + else System.out.println("We should never get here."); + Statement s = null; + try { s = c.createStatement(); } + catch (SQLException se) { + System.out.println("We got an exception while creating a statement:" + "that probably means we're no longer connected."); se.printStackTrace(); System.exit(1); } + + ResultSet rs = null; // initialize result of query + try { rs = s.executeQuery("SELECT DISTINCT(joinkey) FROM alp_paper WHERE alp_paper ~ '"+query+"' ORDER BY joinkey;"); } // get the alleles from a paper + catch (SQLException se) { + System.out.println("We got an exception while executing our query:" + "that probably means our SQL is invalid"); se.printStackTrace(); System.exit(1); } + String allele = "No Allele assigned for Publication "+query+"."; // initialize allele in each phenote character Row + try { while (rs.next()) { // while there's data in postgres + allele = rs.getString(1); // get the allele from postgres + try { + Character c1 = new Character(); // make a new character + c1.setValue("Allele",allele); // assign the allele + charList.add(c1); // add the character to the character list + } + catch (TermNotFoundException e) {} // do nothing - try next char field + catch (CharFieldException e) {} // do nothing - try next char field + } } + catch (SQLException se) { + System.out.println("We got an exception while getting a result:this " + "shouldn't happen: we've done something really bad."); se.printStackTrace(); System.exit(1); } + return charList; + +// for (CharacterI chr : charList.getList()) { +// System.out.println("Chr "+chr+" Phenoset "+phenoset+" end"); +// +// // builds Phenoset from characters +// addCharAndGenotypeToPhenoset(chr,phenoset); +// } + - // if query has failed... - throw new DataAdapterEx("Worm query of "+query+" of field "+field+" failed"); - } + } else { + // if query has failed... + throw new DataAdapterEx("Worm query of "+query+" of field "+field+" failed"); + } -} + } // public CharacterListI query(String field, String query) throws DataAdapterEx +} // public class WormAdapter implements QueryableDataAdapterI This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mg...@us...> - 2007-03-28 16:39:46
|
Revision: 427 http://svn.sourceforge.net/obo/?rev=427&view=rev Author: mgibson Date: 2007-03-28 09:39:45 -0700 (Wed, 28 Mar 2007) Log Message: ----------- 1.1 docs Modified Paths: -------------- phenote/trunk/doc/phenote-website/phenote-release-notes.html phenote/trunk/doc/phenote-website/phenote.html Modified: phenote/trunk/doc/phenote-website/phenote-release-notes.html =================================================================== --- phenote/trunk/doc/phenote-website/phenote-release-notes.html 2007-03-28 16:34:06 UTC (rev 426) +++ phenote/trunk/doc/phenote-website/phenote-release-notes.html 2007-03-28 16:39:45 UTC (rev 427) @@ -36,7 +36,7 @@ (currently requires phenote restart).<br> Tab delimited data adapter - thank you nicole!<br> Beginnings of term history - thank you nicole!<br> -Tabbed main panel if more than 12 fields.<br> +Tabbed main field panel if more than 12 fields.<br> QueryableDataAdapter interface for adding a database data adapter that can be queried. The data adapter specifies queryable fields, which get a retrieve button.<br> Modified: phenote/trunk/doc/phenote-website/phenote.html =================================================================== --- phenote/trunk/doc/phenote-website/phenote.html 2007-03-28 16:34:06 UTC (rev 426) +++ phenote/trunk/doc/phenote-website/phenote.html 2007-03-28 16:39:45 UTC (rev 427) @@ -76,7 +76,7 @@ <a href="1.1/phenote.jnlp">Phenote 1.1</a><br> <br> -After phenote downloads the java jar files (takes a while) it wil ask +After phenote downloads the java jar files (takes a while) it will ask you what configuration you would like to use, fly, zfin, human,worm....<br> @@ -85,13 +85,10 @@ <br> - - - - - - -Recent addditions include the ability to add any field you like, post compose terms, bulk +Recent addditions include the ability to update config while preserving +your changes, change config, tab delimited format, tabbed field panel, +retrieve ontologies from web, retrieve from field to database, search +ALL ontols, add any field you like, post compose terms, bulk update, undo, spring framework, and synonyms now are shown in the completion list.<br> @@ -188,21 +185,13 @@ <br> +[In development - the bleeding edge if you will:<a href="1.1/phenote.jnlp"> Phenote 1.2</a> coming soon]<br> -In development - the bleeding edge if you will:<br> -<br> -<a href="1.1/phenote.jnlp">Phenote 1.2</a><br> - - - - - - <h4>Phenote links:<br> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mg...@us...> - 2007-03-28 16:34:12
|
Revision: 426 http://svn.sourceforge.net/obo/?rev=426&view=rev Author: mgibson Date: 2007-03-28 09:34:06 -0700 (Wed, 28 Mar 2007) Log Message: ----------- 1.1 notes & webstart Modified Paths: -------------- phenote/trunk/doc/phenote-website/phenote-release-notes.html phenote/trunk/doc/phenote-website/phenote.html Modified: phenote/trunk/doc/phenote-website/phenote-release-notes.html =================================================================== --- phenote/trunk/doc/phenote-website/phenote-release-notes.html 2007-03-28 16:07:26 UTC (rev 425) +++ phenote/trunk/doc/phenote-website/phenote-release-notes.html 2007-03-28 16:34:06 UTC (rev 426) @@ -2,159 +2,247 @@ <html> <head> + + <meta content="text/html; charset=ISO-8859-1" http-equiv="content-type"> + + <title>Phenote Release Notes</title> </head> <body> + <h1>Phenote Release Notes</h1> -1.1 -will probably come out in February<br> + +1.2 +will probably come out in May<br> + +<h2><span style="text-decoration: underline;">1.1</span></h2> +<a href="1.1/phenote.jnlp">Phenote 1.1</a><br> <br> +March 28, 2007<br> +<br> +Phenote will merge its default configuration with users configuration, +preserving users changes as well as adding anything new from phenote +upgrade.<br> +User can select configuration they want to use at initialization or +subsequently from file menu + (currently requires phenote restart).<br> +Tab delimited data adapter - thank you nicole!<br> +Beginnings of term history - thank you nicole!<br> +Tabbed main panel if more than 12 fields.<br> +QueryableDataAdapter interface for adding a database data adapter that +can be queried. The data adapter specifies queryable fields, which get +a retrieve button.<br> +Improvements to uvic graphics (still not ready for prime time)<br> +Layout improved<br> +Can now search ALL ontologies of a field<br> +Retrieve obo from web if more up to date or no local found<br> +Refactored code for field guis<br> +Ontology chooser reflects current term (bug fix) <h2><span style="text-decoration: underline;">1.0</span></h2> + <a href="1.0/phenote-flybase.jnlp">Phenote 1.0 for fly</a><br> + <a href="1.0/phenote-zfin.jnlp">Phenote 1.0 for zfin</a><br> + <a href="http://165.124.152.194/db/cgi-bin/dictyBase/curation/phenotypeCuration.pl">DichtyBase webby phenote</a><br> + <a href="http://reaper.lbl.gov/phenote/html/ncbo.html">Webby Phenote(components used by Zfin)</a><br> + <br> + January 12, 2007<br> + <br> + The main improvement here is the ability to add any field you like, not just E,Q,GC,GT,Pub. In the configured webstarts Stage, Evidence, Description, Abnormal, and Absent have been added through this new mechanism. This entailed a refactoring of the datamodel.<br> + <br> + Webby phenote is now using JSP and Spring.<br> + <br> + There has been some recent work with UVictoria for ontology graph visualization. This is coming along well and hopefully will be seen in the next release. <h2><span style="text-decoration: underline;">0.9</span></h2> + <a href="0.9/phenote-flybase.jnlp">Phenote 0.9 for fly</a><br> + <a href="0.9/phenote-zfin.jnlp">Phenote (standalone) 0.9 for zfin</a><br> + <a href="http://165.124.152.194/web/html/interface.html">DichtyBase webby phenote</a><br> + <br> + mid November 2006<br> + <br> + Undo<br> + Christian Pich(Zfin) has added a Quartz scheduler to phenote, which zfin takes advantage of, to schedule when to check for new obo files.<br> + Also Christian Pich upgraded the PhenoteServlet to the Spring framework - much nicer!<br> + Synonyms are now returned from auto complete with [syn] and when selected the term goes in the field (webby & standalone), obsoletes hits with [obs]<br> + Bulk update & copy in standalone.<br> + Jim Balhoff(Nescent) changed radio buttons to checkboxes, and file saver says save not load and recognizes adapter by file extensions, psx->phenosyntax, .xml -> phenoxml <br> + Single quotes escaped for javascript fns.<br> + <h2><span style="text-decoration: underline;">0.8</span></h2> + <a href="0.8/phenote-flybase.jnlp">Phenote 0.8 for fly.</a><br> + <a href="0.8/phenote-zfin.jnlp">Phenote (standalone) 0.8 for zfin</a><br> + <a href="http://165.124.152.194/web/html/interface.html">DichtyBase webby phenote</a><br> + <br> + 10/2/06<br> + Added post composition to standalone phenote. Logging for both webby/servlet & standalone.<br> + Pheno-xml reader (thanks to Jim Balhoff) and improvements to pheno-xml writer (does pub & genetic context)<br> + Command line reading & writing of phenoxml & phenosyntax.<br> + Application exits on window exit (unless servlet)<br> + Can filter out stage terms from zfin anatomy<br> + <h2><span style="text-decoration: underline;">0.7</span></h2> + <a href="0.7/phenote-flybase.jnlp">Phenote 0.7 for fly.</a><br> + <a href="0.7/phenote-zfin.jnlp">Phenote (standalone) 0.7 for zfin</a><br> + <a href="http://165.124.152.194/web/html/interface.html">DichtyBase webby phenote</a><br> + <br> + Web: entity chooser, can configure to check for new obo files and load them. (These are installed at zfin, if anyone would like to see them publicly let me know). Entity field and term info installed into zfin phenotype site. term info & completion are scrollable.<br> + Standalone: can read & write pheno-syntax with ids & term names in comments, entity chooser, pub field, use button in term info, sort table by clicking on headers, personal config file gets copied out of jar, paste mac bug fixed, file load/save remembered,layout fixed<br> + <br> + <h2><span style="font-weight: bold;"><span style="text-decoration: underline;">0.6</span></span></h2> + <a href="http://reaper.lbl.gov/phenote/html/ncbo.html">Webby Phenote (0.6)</a><br> + <a href="0.6/phenote-flybase.jnlp">Phenote 0.6 with fly anatomy</a><br> + <a href="0.6/phenote-zfin.jnlp">Phenote 0.6 with zebrafish anatomy</a><br> + <br> + The main feature of release 0.6 is a webby phenote. This is in its extremely early stages (very little functionality and buggy). At this point it only does Entity and Quality fields and term info and thats it, and even thats buggy, but more coming soon! <br> + <br> + Not much new in the stand alone phenote (as Ive been working on the webby phenote). Mainly it can write pheno-xml, and it uses the latest pato (as of July 28, 2006).<br> + <h2><span style="font-weight: bold;"><span style="text-decoration: underline;">0.5</span></span></h2> + <br> + <a href="0.5/phenote-flybase.jnlp">Phenote 0.5 webstart for FlyBase</a><br> + <a href="0.5/phenote-zfin.jnlp">Phenote 0.5 webstart for ZFIN</a><br> + <br> + 5/12/06<br> + No new additions to the gui here. In preparation for my visit to Cambridge/FlyBase, I worked on a FlyBase dataadapter. This is phenote first data adapter so I also laid down the foundations for data @@ -167,22 +255,31 @@ FlyBase character wrappers that do the parsing and creating of Proforma character strings.<br> + <h2><span style="text-decoration: underline;">0.4</span></h2> + <a href="0.4/phenote-flybase.jnlp">0.4 flybase webstart</a><br> + <a href="0.4/phenote-zfin.jnlp">0.4 zfin webstart</a><br> + <br> + 4/26/06<br> + Added Genetic Context field.<br> + Parent & child terms in term info are now clickable/navigable.<br> + Links in descriptions are clickable (should bring up default browser)<br> + Added configuration to configure ontologies & fields. This is currently at a devloper level (xml file) not a user level(gui - todo). There is a command line argument for which configuration file to use. @@ -191,13 +288,17 @@ configuration for now is for developers (internal xml file), on the todo is to have a gui configuration for users.<br> + Minor bugs: cant delete to 0 rows anymore, synonym search duplicates taken out<br> + <br> + Dev stuff:<br> + Refactored for configuration & adding field. Made the internal code much more generic for adding new fields from configuration, got rid of a lot of hard wiring. Part of this was instituring @@ -205,131 +306,188 @@ talking to other views. In theory this should also make it easier to plop a web gui on top of the current phenote model & controller.<br> + Renamed Phenotype to Character. Added Character interface CharacterI.<br> + Added tests to test suite.<br> + <br> + <h2><span style="text-decoration: underline;">0.3.1 (CToL)<br> + </span></h2> + <a href="0.3.1/phenote-webstart.jnlp">0.3.1 phenote webstart (for CToL)</a><br> + <br> + 4/7/06<br> + 0.3.1 is identical to 0.3 except that it has ontologies for CToL (fish evolution group). In particular it uses a fish taxonomy<br> + ontology for the id (in this taxonomy) choosing. On the todo is the ability to configure ontologies, but not there yet, so for now need to hardwire with seaparate jar file. This clearly makes the todo item a bit more pressing.<br> + <h2><span style="text-decoration: underline;">0.3</span></h2> + <a href="0.3/phenote-webstart.jnlp">0.3 phenote webstart</a><br> + <br> + 4/7/06<br> + Release for NESCent fish eveolution meeting. No major new functionality here. Cleaned up and fixed a lot of the bugs in 0.2, which was rather buggy.<br> + <br> + Completion terms now sorted alphabeitcally.<br> + Obsolete is now in addition to regular terms, not in lieu of.<br> + Filtering out attribute values (todo: change to actually filter in values)<br> + Html formatting of term info (todo: make terms selectable)<br> + Children relations are in term info<br> + Term info layout greatly improved<br> + Term info in scroller<br> + Border with label around term info<br> + Put definition at end of term info<br> + <br> + Fixed bugs:<br> + Backspace in ontology combo box<br> + Selection of item in comp list causing exception, not going in term box<br> + No terms with just 1 char<br> + Popup was staying up after selection<br> + <br> + Dev stuff:<br> + Test suite added! (todo: add more tests)<br> + Migrated to jdk 1.5 (which caused some of the bugs above)<br> + Ant file made build.xml.<br> + CompletionList refactored into Ontology (prompted by sorting)<br> + <br> + <br> + <h2><span style="text-decoration: underline;">0.2</span></h2> + <a href="0.2/phenote-webstart.jnlp">0.2 phenote webstart</a><br> + <br> + 3/27/06<br> + Added the ability to do term completion on Synonyms, Definitions, and Obsoletes. Also can mouse over a term in a completion list and get information about it in the term info text area. <br> + <br> + The term info area needs a lot of work.<br> + TODO:<br> + layout, scrollbar, border w title, ordering & lumping parents & children, formatting. <br> + Also perhaps have children & parents be clickable in some fashion either html-like clickable text or as buttons.<br> + Theres also bugs in term completion boxes. If you start backspacing it gets wacky for instance.<br> + <br> + <a href="0.2/phenote-webstart.jnlp"><br> + </a> <h2><span style="text-decoration: underline;">0.1</span></h2> + <a href="0.1/phenote-webstart.jnlp">0.1 phenote webstart</a><br> + <br> + 3/1/06<br> + 0.1 was the initial phenote release (known briefly as the plumper at the time). It just had a genotype, anatomy and pato fields, where anatomy and pato did term completion (just on term names) with there @@ -337,15 +495,21 @@ tracked phenotype instances being edited in the above fields. This very limited functionality was demo'd at the cbio meeting 3/3/06 at Stanford.<br> + <br> + <a href="0.2/phenote-webstart.jnlp"></a><br> + <br> + <br> + <a href="phenote.html">Phenote main page</a><br> + </body> </html> Modified: phenote/trunk/doc/phenote-website/phenote.html =================================================================== --- phenote/trunk/doc/phenote-website/phenote.html 2007-03-28 16:07:26 UTC (rev 425) +++ phenote/trunk/doc/phenote-website/phenote.html 2007-03-28 16:34:06 UTC (rev 426) @@ -6,22 +6,26 @@ + + <meta content="text/html; charset=ISO-8859-1" http-equiv="content-type"> + + <title>Phenote</title> </head> @@ -32,24 +36,28 @@ + <h1 style="text-align: left;"><span style="font-weight: bold;"></span>Phenote<br> + </h1> + <br> + Phenote is a tool to annotate phenotypes using the Entity Quality paradigm. It takes advantage of ontologies. It uses term completion to allow curators quick access to @@ -59,59 +67,30 @@ -<br> - - - -<a href="1.0/phenote-flybase.jnlp">Phenote 1.0 for fly</a><br> - - - - - <br> -<a href="1.0/phenote-zfin.jnlp">Phenote 1.0 for zfin</a><br> - - - - - +<a href="1.1/phenote.jnlp">Phenote 1.1</a><br> <br> +After phenote downloads the java jar files (takes a while) it wil ask +you what configuration you would like to use, fly, zfin, human,worm....<br> -<a href="1.0/phenote-zfin.jnlp"></a><a href="1.0/phenote-human.jnlp">Phenote 1.0 for human</a><br> - - <br> -To be clear the above webstart links for zfin & fly were made via -configuration not hard wired code. Thus one could in theory configure -phenote for ones own purposes.<br> - - - - -<br> - - - - - Recent addditions include the ability to add any field you like, post compose terms, bulk update, undo, spring framework, and synonyms now are shown in the completion list.<br> @@ -120,12 +99,14 @@ + <br> + Zebrafish requires components of phenote(to plug into their non-public website), not a full web app. Here is a proof of concept of some of @@ -136,12 +117,14 @@ + <br> + <a href="http://reaper.lbl.gov/phenote/html/ncbo.html">Webby Phenote(components used by Zfin)</a><br> @@ -149,12 +132,14 @@ + <br> + Webby phenote is a collaboration with Sohel Merchant at dictyBase. Here is what they have done:<br> @@ -162,12 +147,14 @@ + <br> + <a href="http://165.124.152.194/db/cgi-bin/dictyBase/curation/phenotypeCuration.pl">DictyBase webby phenote</a><br> @@ -175,18 +162,21 @@ + <br> + <br> + We are doing these releases to get feedback. Please report any bugs (ideally through the <a href="https://sourceforge.net/tracker/?group_id=76834&atid=887913">bug tracker</a>) and let us know what you @@ -196,30 +186,37 @@ + <br> + In development - the bleeding edge if you will:<br> + <br> -<a href="1.1/phenote.jnlp">Phenote 1.1</a><br> +<a href="1.1/phenote.jnlp">Phenote 1.2</a><br> + + <h4>Phenote links:<br> + </h4> + <a href="https://lists.sourceforge.net/lists/listinfo/obo-phenote">Phenote email list</a><br> @@ -227,6 +224,7 @@ + <a href="https://sourceforge.net/tracker/?group_id=76834&atid=887913">Phenote bug tracker</a><br> @@ -234,6 +232,7 @@ + <a href="https://lists.sourceforge.net/lists/listinfo/obo-phenote-bug-tracker">Bug tracker email list</a><br> @@ -241,6 +240,7 @@ + <a href="https://sourceforge.net/svn/?group_id=76834">Phenote source code (obo sourceforge svn)</a><br> @@ -248,6 +248,7 @@ + <a href="https://lists.sourceforge.net/lists/listinfo/obo-svn-commit">Phenote svn commit email list</a><br> @@ -255,6 +256,7 @@ + <a href="http://wiki.dictybase.org/dictywiki/index.php/Phenotype_Curation_Tool_Documentation#Usage">Dicty webby phenote wiki developer docs</a><br> @@ -262,20 +264,24 @@ + <a href="http://www.bioontology.org/wiki-internal/index.php/Phenotype_Annotation_Tool">Phenote ncbo internal wiki (ncbo folk only)</a><br> + <a href="developer-docs/dataadapter.html">Phenote dataadapter developer doc</a><br> + <br> + <a href="phenote-release-notes.html">Phenote Release Notes and old webstart releases</a><br> @@ -283,12 +289,14 @@ + <br> + If the Phenote webstart link fails to do anything, then there are probably problems with webstart and/or java(has to be jdk 1.5). Take a look at the <a href="webstart-troubleshooting.html">webstart troubleshooting</a><br> @@ -297,18 +305,21 @@ + page.<br> + <br> + Click here for <a href="phenote-java-requirements.html">phenote java requirements</a><br> @@ -316,160 +327,204 @@ + <br> + <br> + <br> + Old releases: <br> + +<a href="1.0/phenote-flybase.jnlp">Phenote 1.0 for fly</a><br> + + + + + + +<a href="1.0/phenote-zfin.jnlp">Phenote 1.0 for zfin</a><br> + + + + + +<a href="1.0/phenote-human.jnlp">Phenote 1.0 for human</a><br> + + + <br> + <a href="0.9/phenote-flybase.jnlp">Phenote 0.9 for fly</a><br> + <a href="0.9/phenote-zfin.jnlp">Phenote (standalone) 0.9 for zfin</a><br> + <br> + <a href="0.8/phenote-flybase.jnlp">Phenote 0.8 for fly.</a><br> + <a href="0.8/phenote-zfin.jnlp">Phenote (standalone) 0.8 for zfin</a><br> + <br> + <a href="0.7/phenote-flybase.jnlp">Phenote 0.7 for fly.</a><br> + <a href="0.7/phenote-zfin.jnlp">Phenote (standalone) 0.7 for zfin</a><br> + <br> + <a href="0.6/phenote-flybase.jnlp">Phenote 0.6 with fly anatomy</a><br> + <br> + <a href="0.6/phenote-zfin.jnlp">Phenote 0.6 with zebrafish anatomy</a><br> + <br> + <a href="0.5/phenote-flybase.jnlp">Phenote 0.5 webstart for FlyBase</a><br> + <br> + <a href="0.5/phenote-zfin.jnlp">Phenote 0.5 webstart for ZFIN</a><br> + <br> + <a href="0.4/phenote-flybase.jnlp">Phenote 0.4 webstart for FlyBase</a><br> + <br> + <a href="0.4/phenote-zfin.jnlp">Phenote 0.4 webstart for ZFIN</a><br> + <br> + <a href="0.3.1/phenote-webstart.jnlp">Phenote for CToL group (0.3.1)</a> (a special release for the CToL group that uses fish taxonomy)<br> @@ -478,53 +533,62 @@ + <br> + <a href="0.3/phenote-webstart.jnlp">Phenote 0.3</a><br> + <br> + <a href="0.2/phenote-webstart.jnlp">Phenote 0.2</a><br> + <br> + <a href="0.1/phenote-webstart.jnlp">Phenote 0.1</a><br> + <br> + <br> + </body> </html> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mg...@us...> - 2007-03-28 16:07:25
|
Revision: 425 http://svn.sourceforge.net/obo/?rev=425&view=rev Author: mgibson Date: 2007-03-28 09:07:26 -0700 (Wed, 28 Mar 2007) Log Message: ----------- if no cmd line argument is given - as is now true from webstart as it just queries the user now for the config they want to use rather than getting from cmd line - then phenote will do update of configs by default - before it was just reading config by default no update - update default is needed as otherwise webstart users will never get their config files updated with new config options of course updating config still needs improvement also eventually maybe have more sophisticated options like revert to default, and usePersonal/dontUpdateFromNewDefault or something like that but for now i think best default is update even though it still needs a little work Modified Paths: -------------- phenote/trunk/conf/worm.cfg phenote/trunk/src/java/phenote/config/Config.java phenote/trunk/src/java/phenote/main/Phenote.java Modified: phenote/trunk/conf/worm.cfg =================================================================== --- phenote/trunk/conf/worm.cfg 2007-03-28 15:18:39 UTC (rev 424) +++ phenote/trunk/conf/worm.cfg 2007-03-28 16:07:26 UTC (rev 425) @@ -3,7 +3,7 @@ <dataadapter name="phenote.dataadapter.phenosyntax.PhenoSyntaxFileAdapter" enable="true"/> <dataadapter name="phenote.dataadapter.phenoxml.PhenoXmlAdapter" enable="true"/> - <dataadapter name="phenote.dataadatper.delimited.DelimitedFileAdapter" enable="true"/> + <dataadapter name="phenote.dataadapter.delimited.DelimitedFileAdapter" enable="true"/> <dataadapter name="phenote.dataadapter.nexus.NEXUSAdapter" enable="false"/> <queryable-dataadapter name="phenote.dataadapter.worm.WormAdapter" enable="true"/> Modified: phenote/trunk/src/java/phenote/config/Config.java =================================================================== --- phenote/trunk/src/java/phenote/config/Config.java 2007-03-28 15:18:39 UTC (rev 424) +++ phenote/trunk/src/java/phenote/config/Config.java 2007-03-28 16:07:26 UTC (rev 425) @@ -86,8 +86,13 @@ setConfigFile(configFile,true,true,false); } + /** Changed this to actually do updating of config file by default given that this + is now the route in from webstart, without this users will never get config + updates - eventually get more sophisticated - give user options of + updateFromDefault, revertToMain/Default or personal/ignoreMain/dontupdate */ public void loadDefaultConfigFile() throws ConfigException { - setConfigFile(getDefaultFile(),true,false,false); + boolean updatePersonalFromMainCfg = true; //false; + setConfigFile(getDefaultFile(),true,false,updatePersonalFromMainCfg); } /** if all else fails revert to flybase which should be there */ Modified: phenote/trunk/src/java/phenote/main/Phenote.java =================================================================== --- phenote/trunk/src/java/phenote/main/Phenote.java 2007-03-28 15:18:39 UTC (rev 424) +++ phenote/trunk/src/java/phenote/main/Phenote.java 2007-03-28 16:07:26 UTC (rev 425) @@ -103,7 +103,7 @@ } private void doCommandLine(String[] args) { - //doCommandLineOld(args); // -c -i --> move to CommandLine! + //doCommandLineOld(args); // -c -u --> move to CommandLine! try { commandLine.setArgs(args); } // no log yet - sys.out catch (Exception e) { System.out.println("Command line read failed"+e); } // no config set from command line use default This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mg...@us...> - 2007-03-28 15:20:08
|
Revision: 424 http://svn.sourceforge.net/obo/?rev=424&view=rev Author: mgibson Date: 2007-03-28 08:18:39 -0700 (Wed, 28 Mar 2007) Log Message: ----------- window close in config list is now a cancel not an OK just ignored in the case of initialization/startup - should phenote exit at that point? or would that be unexpected? Modified Paths: -------------- phenote/trunk/src/java/phenote/config/ConfigFileQueryGui.java Modified: phenote/trunk/src/java/phenote/config/ConfigFileQueryGui.java =================================================================== --- phenote/trunk/src/java/phenote/config/ConfigFileQueryGui.java 2007-03-28 14:39:32 UTC (rev 423) +++ phenote/trunk/src/java/phenote/config/ConfigFileQueryGui.java 2007-03-28 15:18:39 UTC (rev 424) @@ -15,8 +15,6 @@ import java.net.JarURLConnection; import java.awt.Component; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; import java.awt.Dimension; import java.awt.Point; //import java.awt.BorderLayout; @@ -24,6 +22,10 @@ import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import java.awt.Toolkit; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.awt.event.WindowAdapter; +import java.awt.event.WindowEvent; import javax.swing.AbstractAction; import javax.swing.BoxLayout; import javax.swing.JDialog; @@ -117,6 +119,7 @@ } dialog.pack(); centerOnScreen(dialog); + dialog.addWindowListener(new WindowCancel()); dialog.setVisible(true); } @@ -135,6 +138,14 @@ dialog.dispose(); } } + private class WindowCancel extends WindowAdapter { + public void windowClosing(WindowEvent e) { + // should this do a System.exit if we are at startup? + if (hasCancelButton) + isCancelled = true; + dialog.dispose(); + } + } private class BtnAction extends AbstractAction { private String configFilename; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mg...@us...> - 2007-03-28 14:39:36
|
Revision: 423 http://svn.sourceforge.net/obo/?rev=423&view=rev Author: mgibson Date: 2007-03-28 07:39:32 -0700 (Wed, 28 Mar 2007) Log Message: ----------- now brings up config picker with currently configged selected if there is a currently configged (not so initially) Modified Paths: -------------- phenote/trunk/src/java/phenote/config/Config.java phenote/trunk/src/java/phenote/config/ConfigFileQueryGui.java Modified: phenote/trunk/src/java/phenote/config/Config.java =================================================================== --- phenote/trunk/src/java/phenote/config/Config.java 2007-03-28 14:21:50 UTC (rev 422) +++ phenote/trunk/src/java/phenote/config/Config.java 2007-03-28 14:39:32 UTC (rev 423) @@ -49,6 +49,9 @@ private boolean configInitialized = false; private final static String myphenoteFile = "my-phenote"; + public static Config inst() { + return singleton; + } /** singleton */ private Config() {} @@ -97,8 +100,9 @@ private String getDefaultFile() { String file=null; try { - LineNumberReader r = new LineNumberReader(new FileReader(getMyPhenoteFile())); - file = r.readLine(); +// LineNumberReader r = new LineNumberReader(new FileReader(getMyPhenoteFile())); +// file = r.readLine(); + file = getMyPhenoteConfigString(); } catch (IOException e) {} if (file == null || file.equals("")) { //file = FLYBASE_DEFAULT_CONFIG_FILE; @@ -106,6 +110,14 @@ } return file; } + + /** Get config file string that is in my-phenote file - throw io exception if file + doesnt exist. todo: should also throw ex if doesnt have a valid file in it? */ + String getMyPhenoteConfigString() throws IOException { + LineNumberReader r = new LineNumberReader(new FileReader(getMyPhenoteFile())); + String configFile = r.readLine(); + return configFile; + } private String queryUserForConfigFile() { return ConfigFileQueryGui.queryUserForConfigFile(); @@ -267,9 +279,6 @@ // } - public static Config inst() { - return singleton; - } // --> hasFileDataAdapters public boolean hasDataAdapters() { Modified: phenote/trunk/src/java/phenote/config/ConfigFileQueryGui.java =================================================================== --- phenote/trunk/src/java/phenote/config/ConfigFileQueryGui.java 2007-03-28 14:21:50 UTC (rev 422) +++ phenote/trunk/src/java/phenote/config/ConfigFileQueryGui.java 2007-03-28 14:39:32 UTC (rev 423) @@ -86,14 +86,19 @@ JPanel buttonPanel = new JPanel(); buttonPanel.setLayout(new BoxLayout(buttonPanel,BoxLayout.Y_AXIS)); buttonGroup = new ButtonGroup(); - boolean first = true; + boolean doFirst = false; + String currentConfig = null; + try { currentConfig = Config.inst().getMyPhenoteConfigString(); } + catch (IOException e) { doFirst = true; } for (String cfg : getConfigNames()) { JRadioButton b = new JRadioButton(new BtnAction(cfg)); buttonPanel.add(b); - if (first) { + // select current myphenote if exists, else select first + if ( (currentConfig != null && cfg.equals(currentConfig)) + || (currentConfig == null && doFirst) ) { b.setSelected(true); selectedFile = cfg; - first = false; + doFirst = false; } buttonGroup.add(b); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mg...@us...> - 2007-03-28 14:21:49
|
Revision: 422 http://svn.sourceforge.net/obo/?rev=422&view=rev Author: mgibson Date: 2007-03-28 07:21:50 -0700 (Wed, 28 Mar 2007) Log Message: ----------- changed my-phenote.cfg to just my-phenote - its not a config file its a pointer to a config file - was showing up in config list as a valid config file Modified Paths: -------------- phenote/trunk/src/java/phenote/config/Config.java Modified: phenote/trunk/src/java/phenote/config/Config.java =================================================================== --- phenote/trunk/src/java/phenote/config/Config.java 2007-03-27 23:45:07 UTC (rev 421) +++ phenote/trunk/src/java/phenote/config/Config.java 2007-03-28 14:21:50 UTC (rev 422) @@ -47,6 +47,7 @@ private String reposUrlDir; private String version; private boolean configInitialized = false; + private final static String myphenoteFile = "my-phenote"; /** singleton */ private Config() {} @@ -187,7 +188,7 @@ } private static File getMyPhenoteFile() { - return new File(getDotPhenoteConfDir(),"my-phenote.cfg"); + return new File(getDotPhenoteConfDir(),myphenoteFile); } /** Write name of config file loaded out to .phenote/conf/my-phenote.cfg for use This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <nl...@us...> - 2007-03-27 23:45:09
|
Revision: 421 http://svn.sourceforge.net/obo/?rev=421&view=rev Author: nlw Date: 2007-03-27 16:45:07 -0700 (Tue, 27 Mar 2007) Log Message: ----------- took out links in the history window. left window in tact/visible for demo purposes. Modified Paths: -------------- phenote/trunk/src/java/phenote/gui/SelectionHistory.java Modified: phenote/trunk/src/java/phenote/gui/SelectionHistory.java =================================================================== --- phenote/trunk/src/java/phenote/gui/SelectionHistory.java 2007-03-27 22:20:14 UTC (rev 420) +++ phenote/trunk/src/java/phenote/gui/SelectionHistory.java 2007-03-27 23:45:07 UTC (rev 421) @@ -69,7 +69,7 @@ public JComponent getComponent() { JPanel termHistoryPanel = new JPanel(new BorderLayout(0,0)); // hgap,vgap termHistoryPanel.setPreferredSize(new Dimension(200,100)); - //termHistoryPanel.setMinimumSize(new Dimension(100,100)); +// termHistoryPanel.setMinimumSize(new Dimension(200,100)); if (DO_HTML) { JEditorPane editorPane = new JEditorPane(); editorPane.setContentType("text/html"); // sets up HTMLEditorKit @@ -85,7 +85,7 @@ } textArea.setEditable(false); JScrollPane scrollPane = new JScrollPane(textArea); - scrollPane.setPreferredSize(new Dimension(400,300)); + scrollPane.setPreferredSize(new Dimension(200,100)); scrollPane.setMaximumSize(new Dimension(400,300)); // border - make JPanel for it (there is a disclaimer about non JPanel) //scrollPane.setBorder(BorderFactory.createTitledBorder("Term Info")); @@ -120,7 +120,8 @@ { OBOClass term = transList.get(i-1).getNewTerm(); if (term!=null) - html = html + "<br>"+HtmlUtil.termLink(term); + html = html + "<br> *"+term.getName(); +// html = html + "<br>"+HtmlUtil.termLink(term); } textArea.setText(html); textArea.setCaretPosition(0); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mg...@us...> - 2007-03-27 22:20:13
|
Revision: 420 http://svn.sourceforge.net/obo/?rev=420&view=rev Author: mgibson Date: 2007-03-27 15:20:14 -0700 (Tue, 27 Mar 2007) Log Message: ----------- added cancel button for config window from file menu - not for initial startup as then phenote would die Modified Paths: -------------- phenote/trunk/src/java/phenote/config/ConfigFileQueryGui.java phenote/trunk/src/java/phenote/gui/FileMenu.java Modified: phenote/trunk/src/java/phenote/config/ConfigFileQueryGui.java =================================================================== --- phenote/trunk/src/java/phenote/config/ConfigFileQueryGui.java 2007-03-27 19:12:18 UTC (rev 419) +++ phenote/trunk/src/java/phenote/config/ConfigFileQueryGui.java 2007-03-27 22:20:14 UTC (rev 420) @@ -44,20 +44,32 @@ //private String selection; private String selectedFile; private JDialog dialog; - private boolean okPressed = false; + //private boolean okPressed = false; private ButtonGroup buttonGroup; + private boolean hasCancelButton = false; + private boolean isCancelled = false; public static String queryUserForConfigFile() { - ConfigFileQueryGui c = new ConfigFileQueryGui(); + try { return queryUserForConfigFile(false); } + catch (CancelEx e) {return null;} // shouldnt happen with cancel false + } + + public static String queryUserForConfigFile(boolean doCancel) throws CancelEx { + ConfigFileQueryGui c = new ConfigFileQueryGui(doCancel); return c.queryUser(); } + private ConfigFileQueryGui(boolean hasCancelButton) { + this.hasCancelButton = hasCancelButton; + } - private String queryUser() { + private String queryUser() throws CancelEx { makeQueryDialog(); + if (isCancelled) throw new CancelEx(); return selectedFile; } + public static class CancelEx extends Exception {} private void makeQueryDialog() { java.awt.Frame f = phenote.main.Phenote.getPhenote().getFrame(); @@ -68,6 +80,7 @@ JLabel text = new JLabel("Please pick a configuration for Phenote: "); int center = GridBagConstraints.CENTER; GridBagConstraints gbc = GridBagUtil.makeAnchorConstraint(0,0,center); + gbc.gridwidth=2; dialog.add(text,gbc); JPanel buttonPanel = new JPanel(); @@ -87,9 +100,16 @@ ++gbc.gridy; dialog.add(buttonPanel,gbc); JButton ok = new JButton("OK"); + gbc.gridwidth=1; ++gbc.gridy; dialog.add(ok,gbc); ok.addActionListener(new OkActionListener()); + if (hasCancelButton) { + JButton cancel = new JButton("Cancel"); + cancel.addActionListener(new CancelActionListener()); + ++gbc.gridx; + dialog.add(cancel,gbc); + } dialog.pack(); centerOnScreen(dialog); dialog.setVisible(true); @@ -99,11 +119,17 @@ public void actionPerformed(ActionEvent e) { //selection = g.getSelection().getActionCommand(); //String selectedFile = (String)(buttonGroup.getSelection().getValue("filename")); - okPressed = true; + //okPressed = true; //System.out.println("ok pressed in ok action listener "+okPressed); dialog.dispose(); } } + private class CancelActionListener implements ActionListener { + public void actionPerformed(ActionEvent e) { + isCancelled = true; + dialog.dispose(); + } + } private class BtnAction extends AbstractAction { private String configFilename; Modified: phenote/trunk/src/java/phenote/gui/FileMenu.java =================================================================== --- phenote/trunk/src/java/phenote/gui/FileMenu.java 2007-03-27 19:12:18 UTC (rev 419) +++ phenote/trunk/src/java/phenote/gui/FileMenu.java 2007-03-27 22:20:14 UTC (rev 420) @@ -61,14 +61,16 @@ public void actionPerformed(ActionEvent e) { // 1st step just set my-phenote.cfg & user restart phenote // eventually reconfigure phenote in same session, cfg,obo,gui - String cfg = ConfigFileQueryGui.queryUserForConfigFile(); + boolean showCancel = true; try { + String cfg = ConfigFileQueryGui.queryUserForConfigFile(showCancel); if (cfg != null && !cfg.equals("")) Config.writeMyPhenoteDefaultFile(cfg); String m = "You must restart phenote for new config to take effect"; JOptionPane.showMessageDialog(null,m,"Please restart", JOptionPane.INFORMATION_MESSAGE); } + catch (ConfigFileQueryGui.CancelEx ex) {} // its cancelled do nothing catch (ConfigException x) { String m = "Failed to change configuration "+x.getMessage(); JOptionPane.showMessageDialog(null,m,"Config error", This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mg...@us...> - 2007-03-27 19:12:21
|
Revision: 419 http://svn.sourceforge.net/obo/?rev=419&view=rev Author: mgibson Date: 2007-03-27 12:12:18 -0700 (Tue, 27 Mar 2007) Log Message: ----------- put stage later so E & Q on same tab in worm.cfg made version 1.1.2 Modified Paths: -------------- phenote/trunk/conf/worm.cfg phenote/trunk/src/java/phenote/main/PhenoteVersion.java Modified: phenote/trunk/conf/worm.cfg =================================================================== --- phenote/trunk/conf/worm.cfg 2007-03-27 18:54:56 UTC (rev 418) +++ phenote/trunk/conf/worm.cfg 2007-03-27 19:12:18 UTC (rev 419) @@ -39,23 +39,22 @@ <ontology name="Worm" file="worm_anatomy.obo" repos-subdir="worm_anatomy"/> </field> - <field name="Stage" syntax-abbrev="T" enable="true"> - <!-- ontology name="Stage" file="stage.obo" --> - </field> - - <field name="Entity" syntax-abbrev="E" enable="true"> <ontology name="Relationship" file="rex.obo" is-postcomp-rel="true" repos-subdir="rex"/> <ontology name="GO" file="gene_ontology.obo"/> <ontology name="CHEBI" file="chebi.obo" repos-subdir="chebi"/> - <ontology name="Worm" file="worm-anatomy.obo" repos-subdir="worm_anatomy"/> + <ontology name="Worm" file="worm_anatomy.obo" repos-subdir="worm_anatomy"/> <!-- stage?? --> </field> <field name="Quality" file="quality.obo" syntax-abbrev="Q" repos-subdir="phenotype" enable="true"/> + <field name="Stage" syntax-abbrev="T" enable="true"> + <!-- ontology name="Stage" file="stage.obo" --> + </field> + <field name="Allele Nature" enable="true"/> <field name="Functional Change" enable="true"/> Modified: phenote/trunk/src/java/phenote/main/PhenoteVersion.java =================================================================== --- phenote/trunk/src/java/phenote/main/PhenoteVersion.java 2007-03-27 18:54:56 UTC (rev 418) +++ phenote/trunk/src/java/phenote/main/PhenoteVersion.java 2007-03-27 19:12:18 UTC (rev 419) @@ -6,7 +6,7 @@ //private static final float MAJOR_VERSION_NUM = 0.8f; //private static final float SUB_VERSION_NUM = .3f; - private static final String VERSION = "1.1.1"; // ?? + private static final String VERSION = "1.1.2"; // ?? // type is "dev" or "release" //private static final String type = " dev"; // "release" This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mg...@us...> - 2007-03-27 18:54:58
|
Revision: 418 http://svn.sourceforge.net/obo/?rev=418&view=rev Author: mgibson Date: 2007-03-27 11:54:56 -0700 (Tue, 27 Mar 2007) Log Message: ----------- put all of carols fields into worm.cfg now that we have tabbed panels that can hold all of them field config now puts in underscores for spaces in labels used for tags in syntax/tag-value adapter - thus ya dont hafta enter syntax specification for fields with spaces in their labels - just uses labels with underscores - convenience Modified Paths: -------------- phenote/trunk/conf/worm.cfg phenote/trunk/src/java/phenote/config/FieldConfig.java Modified: phenote/trunk/conf/worm.cfg =================================================================== --- phenote/trunk/conf/worm.cfg 2007-03-26 23:23:02 UTC (rev 417) +++ phenote/trunk/conf/worm.cfg 2007-03-27 18:54:56 UTC (rev 418) @@ -3,6 +3,7 @@ <dataadapter name="phenote.dataadapter.phenosyntax.PhenoSyntaxFileAdapter" enable="true"/> <dataadapter name="phenote.dataadapter.phenoxml.PhenoXmlAdapter" enable="true"/> + <dataadapter name="phenote.dataadatper.delimited.DelimitedFileAdapter" enable="true"/> <dataadapter name="phenote.dataadapter.nexus.NEXUSAdapter" enable="false"/> <queryable-dataadapter name="phenote.dataadapter.worm.WormAdapter" enable="true"/> @@ -35,23 +36,40 @@ <field name="Phenotype Remark" syntax-abbrev="PhenotypeRemark" enable="true"/> <field name="Anatomy" enable="true"> - <ontology name="Worm" file="worm-anatomy.obo" repos-subdir="worm_anatomy"/> + <ontology name="Worm" file="worm_anatomy.obo" repos-subdir="worm_anatomy"/> </field> - <field name="Entity" syntax-abbrev="E" enable="true"> - <ontology name="Relationship" file="relationship.obo" - is-postcomp-rel="true" repos-subdir="OBO_REL"/> - <ontology name="GO" file="gene_ontology.obo" repos-subdir="genomic-proteomic"/> - <ontology name="SP" file="spatial.obo"/> + <field name="Stage" syntax-abbrev="T" enable="true"> + <!-- ontology name="Stage" file="stage.obo" --> </field> - <field name="Stage" syntax-abbrev="T" enable="true"> + + <field name="Entity" syntax-abbrev="E" enable="true"> + <ontology name="Relationship" file="rex.obo" + is-postcomp-rel="true" repos-subdir="rex"/> + <ontology name="GO" file="gene_ontology.obo"/> + <ontology name="CHEBI" file="chebi.obo" repos-subdir="chebi"/> + <ontology name="Worm" file="worm-anatomy.obo" repos-subdir="worm_anatomy"/> + <!-- stage?? --> </field> <field name="Quality" file="quality.obo" syntax-abbrev="Q" repos-subdir="phenotype" enable="true"/> - <field name="Remark" syntax-abbrev="Desc" enable="true"/> + <field name="Allele Nature" enable="true"/> + <field name="Functional Change" enable="true"/> + <field name="Temperature" enable="true"/> <!-- type=INT contraint=? --> + <field name="Preperation" enable="true"/> + <field name="Penetrance Remark" enable="true"/> + <field name="Penetrance Range" enable="true"/> <!-- INT --> + <field name="Quantity Remark" enable="true"/> <!-- INT? --> + <field name="Heat Sensitive" enable="true"/> <!-- INT? --> + <field name="Cold Sensitive" enable="true"/> <!-- INT? --> + <field name="Maternal Effect" enable="true"/> + <field name="Paternal Effect" enable="true"/> <!-- BOOLEAN? --> + <field name="Genotype" enable="true"/> + <field name="Strain" enable="true"/> + <field name="Delivered By" enable="true"/> </phenote-configuration> Modified: phenote/trunk/src/java/phenote/config/FieldConfig.java =================================================================== --- phenote/trunk/src/java/phenote/config/FieldConfig.java 2007-03-26 23:23:02 UTC (rev 417) +++ phenote/trunk/src/java/phenote/config/FieldConfig.java 2007-03-27 18:54:56 UTC (rev 418) @@ -129,13 +129,29 @@ void setSyntaxAbbrev(String syn) { this.syntaxAbbrev = syn; } + /** gets from label if no syntax abbrev explicitly set, replaces spaces with underscores + as pheno syntax is sensitive to spaces (in theory at least) */ String getSyntaxAbbrev() { - if (syntaxAbbrev == null) return getLabel(); - return syntaxAbbrev; + String s = (syntaxAbbrev == null) ? getLabel() : syntaxAbbrev; + s = s.replace(' ','_'); + return s; } //void String getSyntaxAbbrev() { return syntaxAbbrev; } - boolean hasSyntaxAbbrev(String abb) { return abb.equals(syntaxAbbrev); } + /** Test both syntaxAbbrev & label - also test for replacing spaces with underscores */ + boolean hasSyntaxAbbrev(String abb) { + if (equalsWithSpaceUnderscore(abb,syntaxAbbrev)) return true; + return equalsWithSpaceUnderscore(abb,label); + } + /** returns true if strings equal or if strings equal after replacing space with + underscore */ + private boolean equalsWithSpaceUnderscore(String abbrev,String s) { + if (abbrev==null || s==null) return false; + if (abbrev.equalsIgnoreCase(s)) return true; + String underForSpace = s.replace(' ','_'); + return abbrev.equalsIgnoreCase(underForSpace); + } + public boolean isEnabled() { return enabled; } public void setCharField(CharField cf) { charField = cf; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mg...@us...> - 2007-03-26 23:23:21
|
Revision: 417 http://svn.sourceforge.net/obo/?rev=417&view=rev Author: mgibson Date: 2007-03-26 16:23:02 -0700 (Mon, 26 Mar 2007) Log Message: ----------- fixed null pointer bug in post comp field panel added more fields to worm.cfg added worm_anatomy.obo Modified Paths: -------------- phenote/trunk/conf/worm.cfg phenote/trunk/src/java/phenote/dataadapter/phenosyntax/PhenoSyntaxChar.java phenote/trunk/src/java/phenote/gui/field/FieldPanel.java phenote/trunk/src/java/phenote/gui/field/PostCompGui.java Added Paths: ----------- phenote/trunk/obo-files/worm_anatomy.obo Modified: phenote/trunk/conf/worm.cfg =================================================================== --- phenote/trunk/conf/worm.cfg 2007-03-26 09:56:03 UTC (rev 416) +++ phenote/trunk/conf/worm.cfg 2007-03-26 23:23:02 UTC (rev 417) @@ -11,17 +11,33 @@ <uvic-graph enable="false"/> - <obo-repository url-dir="http://obo.cvs.sourceforge.net/*checkout*/obo/obo/ontology/"/> + <obo-repository url-dir="http://www.berkeleybop.org/ontologies/obo-all/"/> + <field name="Allele" syntax-abbrev="Allele" enable="true"/> <field name="Pub" syntax-abbrev="PUB" enable="true"/> <field name="Curator" syntax-abbrev="Curator" enable="true"/> + <field name="Person" syntax-abbrev="Person" enable="true"/> + + <field name="Phenotype Text Remark" syntax-abbrev="PhenotypeTextRemark" enable="true"/> - <field name="Genetic Context" file="context.obo" syntax-abbrev="GC" enable="true"/> + <field name="Other Remark" syntax-abbrev="OtherRemark" enable="true"/> + <field name="Genetic Interaction" syntax-abbrev="GeneticInteraction" enable="true"/> + + <field name="Phenotype" syntax-abbrev="GeneticInteraction" enable="true"> + <!-- ontology name="Pheno" file="pheno.obo" --> + </field> + + <field name="Phenotype Remark" syntax-abbrev="PhenotypeRemark" enable="true"/> + + <field name="Anatomy" enable="true"> + <ontology name="Worm" file="worm-anatomy.obo" repos-subdir="worm_anatomy"/> + </field> + <field name="Entity" syntax-abbrev="E" enable="true"> <ontology name="Relationship" file="relationship.obo" is-postcomp-rel="true" repos-subdir="OBO_REL"/> @@ -37,6 +53,5 @@ <field name="Remark" syntax-abbrev="Desc" enable="true"/> - <field name="Genetic Interaction" syntax-abbrev="GeneticInteraction" enable="true"/> </phenote-configuration> Added: phenote/trunk/obo-files/worm_anatomy.obo =================================================================== --- phenote/trunk/obo-files/worm_anatomy.obo (rev 0) +++ phenote/trunk/obo-files/worm_anatomy.obo 2007-03-26 23:23:02 UTC (rev 417) @@ -0,0 +1,37046 @@ +format-version: 1.0 +date: 26:02:2007 17:08 +saved-by: raymond +auto-generated-by: DAG-Edit 1.417 +default-namespace: WORManat1_1417 +remark: autogenerated-by 1.1 $ + +[Term] +id: WBbt:0001001 +name: AB +def: "nucleus of embryonic cell AB." [WB:rynl] +relationship: DESCENDENTOF WBbt:0000102 + +[Term] +id: WBbt:0004015 +name: AB +def: "Embryonic founder cell" [ISBN:0-87969-307-X] +synonym: "AB blastomere" [] +synonym: "lineage name\: P0.a" [] +is_a: WBbt:0007028 + +[Term] +id: WBbt:0005434 +name: AB lineage +alt_id: WBbt:0005436 +synonym: "AB cells" [] +is_obsolete: true + +[Term] +id: WBbt:0001002 +name: AB.a +relationship: DESCENDENTOF WBbt:0001001 + +[Term] +id: WBbt:0005432 +name: AB.a lineage +def: "cells in the AB.a lineage" [WB:rynl] +is_obsolete: true + +[Term] +id: WBbt:0001003 +name: AB.al +relationship: DESCENDENTOF WBbt:0001002 + +[Term] +id: WBbt:0001004 +name: AB.ala +relationship: DESCENDENTOF WBbt:0001003 + +[Term] +id: WBbt:0001005 +name: AB.alaa +relationship: DESCENDENTOF WBbt:0001004 + +[Term] +id: WBbt:0001006 +name: AB.alaaa +relationship: DESCENDENTOF WBbt:0001005 + +[Term] +id: WBbt:0001007 +name: AB.alaaaa +relationship: DESCENDENTOF WBbt:0001006 + +[Term] +id: WBbt:0001008 +name: AB.alaaaal +relationship: DESCENDENTOF WBbt:0001007 + +[Term] +id: WBbt:0001009 +name: AB.alaaaala +relationship: DESCENDENTOF WBbt:0001008 + +[Term] +id: WBbt:0001641 +name: AB.alaaaalal +relationship: DESCENDENTOF WBbt:0001009 + +[Term] +id: WBbt:0001010 +name: AB.alaaaalar +relationship: DESCENDENTOF WBbt:0001009 + +[Term] +id: WBbt:0001011 +name: AB.alaaaalp +relationship: DESCENDENTOF WBbt:0001008 + +[Term] +id: WBbt:0001012 +name: AB.alaaaalpa +relationship: DESCENDENTOF WBbt:0001011 + +[Term] +id: WBbt:0002119 +name: AB.alaaaalpp +relationship: DESCENDENTOF WBbt:0001011 + +[Term] +id: WBbt:0001013 +name: AB.alaaaar +relationship: DESCENDENTOF WBbt:0001007 + +[Term] +id: WBbt:0001014 +name: AB.alaaaarl +relationship: DESCENDENTOF WBbt:0001013 + +[Term] +id: WBbt:0001015 +name: AB.alaaaarla +relationship: DESCENDENTOF WBbt:0001014 + +[Term] +id: WBbt:0002728 +name: AB.alaaaarlp +relationship: DESCENDENTOF WBbt:0001014 + +[Term] +id: WBbt:0001016 +name: AB.alaaaarr +relationship: DESCENDENTOF WBbt:0001013 + +[Term] +id: WBbt:0001017 +name: AB.alaaaarra +relationship: DESCENDENTOF WBbt:0001016 + +[Term] +id: WBbt:0002729 +name: AB.alaaaarrp +relationship: DESCENDENTOF WBbt:0001016 + +[Term] +id: WBbt:0001018 +name: AB.alaaap +relationship: DESCENDENTOF WBbt:0001006 + +[Term] +id: WBbt:0001019 +name: AB.alaaapa +relationship: DESCENDENTOF WBbt:0001018 + +[Term] +id: WBbt:0001020 +name: AB.alaaapal +relationship: DESCENDENTOF WBbt:0001019 + +[Term] +id: WBbt:0002125 +name: AB.alaaapall +relationship: DESCENDENTOF WBbt:0001020 + +[Term] +id: WBbt:0001695 +name: AB.alaaapalr +relationship: DESCENDENTOF WBbt:0001020 + +[Term] +id: WBbt:0001021 +name: AB.alaaapar +relationship: DESCENDENTOF WBbt:0001019 + +[Term] +id: WBbt:0001022 +name: AB.alaaaparl +relationship: DESCENDENTOF WBbt:0001021 + +[Term] +id: WBbt:0002117 +name: AB.alaaaparr +relationship: DESCENDENTOF WBbt:0001021 + +[Term] +id: WBbt:0001023 +name: AB.alaaapp +relationship: DESCENDENTOF WBbt:0001018 + +[Term] +id: WBbt:0001024 +name: AB.alaaappl +relationship: DESCENDENTOF WBbt:0001023 + +[Term] +id: WBbt:0002118 +name: AB.alaaappll +relationship: DESCENDENTOF WBbt:0001024 + +[Term] +id: WBbt:0001025 +name: AB.alaaapplr +relationship: DESCENDENTOF WBbt:0001024 + +[Term] +id: WBbt:0001026 +name: AB.alaaappr +relationship: DESCENDENTOF WBbt:0001023 + +[Term] +id: WBbt:0001696 +name: AB.alaaapprl +relationship: DESCENDENTOF WBbt:0001026 + +[Term] +id: WBbt:0002126 +name: AB.alaaapprr +relationship: DESCENDENTOF WBbt:0001026 + +[Term] +id: WBbt:0001027 +name: AB.alaap +relationship: DESCENDENTOF WBbt:0001005 + +[Term] +id: WBbt:0001028 +name: AB.alaapa +relationship: DESCENDENTOF WBbt:0001027 + +[Term] +id: WBbt:0001029 +name: AB.alaapaa +relationship: DESCENDENTOF WBbt:0001028 + +[Term] +id: WBbt:0001030 +name: AB.alaapaaa +relationship: DESCENDENTOF WBbt:0001029 + +[Term] +id: WBbt:0001031 +name: AB.alaapaaal +relationship: DESCENDENTOF WBbt:0001030 + +[Term] +id: WBbt:0001642 +name: AB.alaapaaar +relationship: DESCENDENTOF WBbt:0001030 + +[Term] +id: WBbt:0001032 +name: AB.alaapaap +relationship: DESCENDENTOF WBbt:0001029 + +[Term] +id: WBbt:0001033 +name: AB.alaapaapa +relationship: DESCENDENTOF WBbt:0001032 + +[Term] +id: WBbt:0002120 +name: AB.alaapaapp +relationship: DESCENDENTOF WBbt:0001032 + +[Term] +id: WBbt:0001034 +name: AB.alaapap +relationship: DESCENDENTOF WBbt:0001028 + +[Term] +id: WBbt:0001035 +name: AB.alaapapa +relationship: DESCENDENTOF WBbt:0001034 + +[Term] +id: WBbt:0001036 +name: AB.alaapapp +relationship: DESCENDENTOF WBbt:0001034 + +[Term] +id: WBbt:0001037 +name: AB.alaapappa +relationship: DESCENDENTOF WBbt:0001036 + +[Term] +id: WBbt:0001898 +name: AB.alaapappp +relationship: DESCENDENTOF WBbt:0001036 + +[Term] +id: WBbt:0001038 +name: AB.alaapp +relationship: DESCENDENTOF WBbt:0001027 + +[Term] +id: WBbt:0001039 +name: AB.alaappa +relationship: DESCENDENTOF WBbt:0001038 + +[Term] +id: WBbt:0001040 +name: AB.alaappaa +relationship: DESCENDENTOF WBbt:0001039 + +[Term] +id: WBbt:0001041 +name: AB.alaappap +relationship: DESCENDENTOF WBbt:0001039 + +[Term] +id: WBbt:0001692 +name: AB.alaappapa +relationship: DESCENDENTOF WBbt:0001041 + +[Term] +id: WBbt:0002456 +name: AB.alaappapp +relationship: DESCENDENTOF WBbt:0001041 + +[Term] +id: WBbt:0001042 +name: AB.alaappp +relationship: DESCENDENTOF WBbt:0001038 + +[Term] +id: WBbt:0001043 +name: AB.alaapppa +relationship: DESCENDENTOF WBbt:0001042 + +[Term] +id: WBbt:0002702 +name: AB.alaapppaa +relationship: DESCENDENTOF WBbt:0001043 + +[Term] +id: WBbt:0001044 +name: AB.alaapppap +relationship: DESCENDENTOF WBbt:0001043 + +[Term] +id: WBbt:0001045 +name: AB.alaapppp +relationship: DESCENDENTOF WBbt:0001042 + +[Term] +id: WBbt:0001046 +name: AB.alaappppa +relationship: DESCENDENTOF WBbt:0001045 + +[Term] +id: WBbt:0002108 +name: AB.alaappppaa +relationship: DESCENDENTOF WBbt:0001046 + +[Term] +id: WBbt:0001047 +name: AB.alaappppap +relationship: DESCENDENTOF WBbt:0001046 + +[Term] +id: WBbt:0002114 +name: AB.alaappppp +relationship: DESCENDENTOF WBbt:0001045 + +[Term] +id: WBbt:0001048 +name: AB.alap +relationship: DESCENDENTOF WBbt:0001004 + +[Term] +id: WBbt:0001049 +name: AB.alapa +relationship: DESCENDENTOF WBbt:0001048 + +[Term] +id: WBbt:0001050 +name: AB.alapaa +relationship: DESCENDENTOF WBbt:0001049 + +[Term] +id: WBbt:0001051 +name: AB.alapaaa +relationship: DESCENDENTOF WBbt:0001050 + +[Term] +id: WBbt:0001052 +name: AB.alapaaaa +relationship: DESCENDENTOF WBbt:0001051 + +[Term] +id: WBbt:0001700 +name: AB.alapaaaaa +relationship: DESCENDENTOF WBbt:0001052 + +[Term] +id: WBbt:0001053 +name: AB.alapaaaap +relationship: DESCENDENTOF WBbt:0001052 + +[Term] +id: WBbt:0001054 +name: AB.alapaaap +relationship: DESCENDENTOF WBbt:0001051 + +[Term] +id: WBbt:0001881 +name: AB.alapaaapa +relationship: DESCENDENTOF WBbt:0001054 + +[Term] +id: WBbt:0002445 +name: AB.alapaaapp +relationship: DESCENDENTOF WBbt:0001054 + +[Term] +id: WBbt:0001055 +name: AB.alapaap +relationship: DESCENDENTOF WBbt:0001050 + +[Term] +id: WBbt:0001056 +name: AB.alapaapa +relationship: DESCENDENTOF WBbt:0001055 + +[Term] +id: WBbt:0002701 +name: AB.alapaapaa +relationship: DESCENDENTOF WBbt:0001056 + +[Term] +id: WBbt:0001057 +name: AB.alapaapap +relationship: DESCENDENTOF WBbt:0001056 + +[Term] +id: WBbt:0001058 +name: AB.alapaapp +relationship: DESCENDENTOF WBbt:0001055 + +[Term] +id: WBbt:0001059 +name: AB.alapaappa +relationship: DESCENDENTOF WBbt:0001058 + +[Term] +id: WBbt:0002107 +name: AB.alapaappaa +relationship: DESCENDENTOF WBbt:0001059 + +[Term] +id: WBbt:0001060 +name: AB.alapaappap +relationship: DESCENDENTOF WBbt:0001059 + +[Term] +id: WBbt:0002113 +name: AB.alapaappp +relationship: DESCENDENTOF WBbt:0001058 + +[Term] +id: WBbt:0001061 +name: AB.alapap +relationship: DESCENDENTOF WBbt:0001049 + +[Term] +id: WBbt:0001062 +name: AB.alapapa +relationship: DESCENDENTOF WBbt:0001061 + +[Term] +id: WBbt:0001063 +name: AB.alapapaa +relationship: DESCENDENTOF WBbt:0001062 + +[Term] +id: WBbt:0001064 +name: AB.alapapap +relationship: DESCENDENTOF WBbt:0001062 + +[Term] +id: WBbt:0001065 +name: AB.alapapapa +relationship: DESCENDENTOF WBbt:0001064 + +[Term] +id: WBbt:0002447 +name: AB.alapapapaa +relationship: DESCENDENTOF WBbt:0001065 + +[Term] +id: WBbt:0001066 +name: AB.alapapapap +relationship: DESCENDENTOF WBbt:0001065 + +[Term] +id: WBbt:0002926 +name: AB.alapapapp +relationship: DESCENDENTOF WBbt:0001064 + +[Term] +id: WBbt:0001067 +name: AB.alapapp +relationship: DESCENDENTOF WBbt:0001061 + +[Term] +id: WBbt:0001068 +name: AB.alapappa +relationship: DESCENDENTOF WBbt:0001067 + +[Term] +id: WBbt:0001069 +name: AB.alapappaa +relationship: DESCENDENTOF WBbt:0001068 + +[Term] +id: WBbt:0002105 +name: AB.alapappaaa +relationship: DESCENDENTOF WBbt:0001069 + +[Term] +id: WBbt:0001070 +name: AB.alapappaap +relationship: DESCENDENTOF WBbt:0001069 + +[Term] +id: WBbt:0002111 +name: AB.alapappap +relationship: DESCENDENTOF WBbt:0001068 + +[Term] +id: WBbt:0001071 +name: AB.alapappp +relationship: DESCENDENTOF WBbt:0001067 + +[Term] +id: WBbt:0001702 +name: AB.alapapppa +relationship: DESCENDENTOF WBbt:0001071 + +[Term] +id: WBbt:0001895 +name: AB.alapapppp +relationship: DESCENDENTOF WBbt:0001071 + +[Term] +id: WBbt:0001072 +name: AB.alapp +relationship: DESCENDENTOF WBbt:0001048 + +[Term] +id: WBbt:0001073 +name: AB.alappa +relationship: DESCENDENTOF WBbt:0001072 + +[Term] +id: WBbt:0001074 +name: AB.alappaa +relationship: DESCENDENTOF WBbt:0001073 + +[Term] +id: WBbt:0001075 +name: AB.alappaaa +relationship: DESCENDENTOF WBbt:0001074 + +[Term] +id: WBbt:0001076 +name: AB.alappaap +relationship: DESCENDENTOF WBbt:0001074 + +[Term] +id: WBbt:0002707 +name: AB.alappaapa +relationship: DESCENDENTOF WBbt:0001076 + +[Term] +id: WBbt:0001077 +name: AB.alappaapp +relationship: DESCENDENTOF WBbt:0001076 + +[Term] +id: WBbt:0001078 +name: AB.alappap +relationship: DESCENDENTOF WBbt:0001073 + +[Term] +id: WBbt:0001079 +name: AB.alappapa +relationship: DESCENDENTOF WBbt:0001078 + +[Term] +id: WBbt:0001701 +name: AB.alappapaa +relationship: DESCENDENTOF WBbt:0001079 + +[Term] +id: WBbt:0001080 +name: AB.alappapap +relationship: DESCENDENTOF WBbt:0001079 + +[Term] +id: WBbt:0001081 +name: AB.alappapp +relationship: DESCENDENTOF WBbt:0001078 + +[Term] +id: WBbt:0001882 +name: AB.alappappa +relationship: DESCENDENTOF WBbt:0001081 + +[Term] +id: WBbt:0002446 +name: AB.alappappp +relationship: DESCENDENTOF WBbt:0001081 + +[Term] +id: WBbt:0001082 +name: AB.alappp +relationship: DESCENDENTOF WBbt:0001072 + +[Term] +id: WBbt:0001083 +name: AB.alapppa +relationship: DESCENDENTOF WBbt:0001082 + +[Term] +id: WBbt:0001084 +name: AB.alapppaa +relationship: DESCENDENTOF WBbt:0001083 + +[Term] +id: WBbt:0001647 +name: AB.alapppaaa +relationship: DESCENDENTOF WBbt:0001084 + +[Term] +id: WBbt:0002727 +name: AB.alapppaap +relationship: DESCENDENTOF WBbt:0001084 + +[Term] +id: WBbt:0001085 +name: AB.alapppap +relationship: DESCENDENTOF WBbt:0001083 + +[Term] +id: WBbt:0001086 +name: AB.alapppapa +relationship: DESCENDENTOF WBbt:0001085 + +[Term] +id: WBbt:0002448 +name: AB.alapppapaa +relationship: DESCENDENTOF WBbt:0001086 + +[Term] +id: WBbt:0001087 +name: AB.alapppapap +relationship: DESCENDENTOF WBbt:0001086 + +[Term] +id: WBbt:0002927 +name: AB.alapppapp +relationship: DESCENDENTOF WBbt:0001085 + +[Term] +id: WBbt:0001088 +name: AB.alapppp +relationship: DESCENDENTOF WBbt:0001082 + +[Term] +id: WBbt:0001089 +name: AB.alappppa +relationship: DESCENDENTOF WBbt:0001088 + +[Term] +id: WBbt:0001090 +name: AB.alappppaa +relationship: DESCENDENTOF WBbt:0001089 + +[Term] +id: WBbt:0002106 +name: AB.alappppaaa +relationship: DESCENDENTOF WBbt:0001090 + +[Term] +id: WBbt:0001091 +name: AB.alappppaap +relationship: DESCENDENTOF WBbt:0001090 + +[Term] +id: WBbt:0002112 +name: AB.alappppap +relationship: DESCENDENTOF WBbt:0001089 + +[Term] +id: WBbt:0001092 +name: AB.alappppp +relationship: DESCENDENTOF WBbt:0001088 + +[Term] +id: WBbt:0001703 +name: AB.alapppppa +relationship: DESCENDENTOF WBbt:0001092 + +[Term] +id: WBbt:0001896 +name: AB.alapppppp +relationship: DESCENDENTOF WBbt:0001092 + +[Term] +id: WBbt:0001093 +name: AB.alp +relationship: DESCENDENTOF WBbt:0001003 + +[Term] +id: WBbt:0001094 +name: AB.alpa +relationship: DESCENDENTOF WBbt:0001093 + +[Term] +id: WBbt:0001095 +name: AB.alpaa +relationship: DESCENDENTOF WBbt:0001094 + +[Term] +id: WBbt:0001096 +name: AB.alpaaa +relationship: DESCENDENTOF WBbt:0001095 + +[Term] +id: WBbt:0001097 +name: AB.alpaaaa +relationship: DESCENDENTOF WBbt:0001096 + +[Term] +id: WBbt:0001098 +name: AB.alpaaaaa +relationship: DESCENDENTOF WBbt:0001097 + +[Term] +id: WBbt:0002001 +name: AB.alpaaaaaa +relationship: DESCENDENTOF WBbt:0001098 +relationship: part_of WBbt:0004546 + +[Term] +id: WBbt:0002257 +name: AB.alpaaaaap +relationship: DESCENDENTOF WBbt:0001098 + +[Term] +id: WBbt:0001099 +name: AB.alpaaaap +relationship: DESCENDENTOF WBbt:0001097 + +[Term] +id: WBbt:0002249 +name: AB.alpaaaapa +relationship: DESCENDENTOF WBbt:0001099 +relationship: part_of WBbt:0004334 + +[Term] +id: WBbt:0001100 +name: AB.alpaaaapp +relationship: DESCENDENTOF WBbt:0001099 + +[Term] +id: WBbt:0001101 +name: AB.alpaaap +relationship: DESCENDENTOF WBbt:0001096 + +[Term] +id: WBbt:0001102 +name: AB.alpaaapa +relationship: DESCENDENTOF WBbt:0001101 + +[Term] +id: WBbt:0002253 +name: AB.alpaaapaa +relationship: DESCENDENTOF WBbt:0001102 + +[Term] +id: WBbt:0001103 +name: AB.alpaaapap +relationship: DESCENDENTOF WBbt:0001102 + +[Term] +id: WBbt:0001104 +name: AB.alpaaapp +relationship: DESCENDENTOF WBbt:0001101 + +[Term] +id: WBbt:0001105 +name: AB.alpaaappa +relationship: DESCENDENTOF WBbt:0001104 + +[Term] +id: WBbt:0002297 +name: AB.alpaaappp +relationship: DESCENDENTOF WBbt:0001104 + +[Term] +id: WBbt:0001106 +name: AB.alpaap +relationship: DESCENDENTOF WBbt:0001095 + +[Term] +id: WBbt:0001107 +name: AB.alpaapa +relationship: DESCENDENTOF WBbt:0001106 + +[Term] +id: WBbt:0001108 +name: AB.alpaapaa +relationship: DESCENDENTOF WBbt:0001107 + +[Term] +id: WBbt:0001661 +name: AB.alpaapaaa +relationship: DESCENDENTOF WBbt:0001108 + +[Term] +id: WBbt:0001997 +name: AB.alpaapaap +relationship: DESCENDENTOF WBbt:0001108 +relationship: part_of WBbt:0004554 + +[Term] +id: WBbt:0001109 +name: AB.alpaapap +relationship: DESCENDENTOF WBbt:0001107 + +[Term] +id: WBbt:0002288 +name: AB.alpaapapa +relationship: DESCENDENTOF WBbt:0001109 +relationship: part_of WBbt:0004301 + +[Term] +id: WBbt:0002261 +name: AB.alpaapapp +relationship: DESCENDENTOF WBbt:0001109 + +[Term] +id: WBbt:0001110 +name: AB.alpaapp +relationship: DESCENDENTOF WBbt:0001106 + +[Term] +id: WBbt:0001111 +name: AB.alpaappa +relationship: DESCENDENTOF WBbt:0001110 + +[Term] +id: WBbt:0001657 +name: AB.alpaappaa +relationship: DESCENDENTOF WBbt:0001111 + +[Term] +id: WBbt:0001664 +name: AB.alpaappap +relationship: DESCENDENTOF WBbt:0001111 + +[Term] +id: WBbt:0001112 +name: AB.alpaappp +relationship: DESCENDENTOF WBbt:0001110 + +[Term] +id: WBbt:0002090 +name: AB.alpaapppa +relationship: DESCENDENTOF WBbt:0001112 + +[Term] +id: WBbt:0002093 +name: AB.alpaapppp +relationship: DESCENDENTOF WBbt:0001112 + +[Term] +id: WBbt:0001113 +name: AB.alpap +relationship: DESCENDENTOF WBbt:0001094 + +[Term] +id: WBbt:0001114 +name: AB.alpapa +relationship: DESCENDENTOF WBbt:0001113 + +[Term] +id: WBbt:0001115 +name: AB.alpapaa +relationship: DESCENDENTOF WBbt:0001114 + +[Term] +id: WBbt:0001116 +name: AB.alpapaaa +relationship: DESCENDENTOF WBbt:0001115 + +[Term] +id: WBbt:0002715 +name: AB.alpapaaaa +relationship: DESCENDENTOF WBbt:0001116 + +[Term] +id: WBbt:0002094 +name: AB.alpapaaap +relationship: DESCENDENTOF WBbt:0001116 + +[Term] +id: WBbt:0001117 +name: AB.alpapaap +relationship: DESCENDENTOF WBbt:0001115 + +[Term] +id: WBbt:0001659 +name: AB.alpapaapa +relationship: DESCENDENTOF WBbt:0001117 + +[Term] +id: WBbt:0001118 +name: AB.alpapaapp +relationship: DESCENDENTOF WBbt:0001117 + +[Term] +id: WBbt:0001119 +name: AB.alpapap +relationship: DESCENDENTOF WBbt:0001114 + +[Term] +id: WBbt:0001120 +name: AB.alpapapa +relationship: DESCENDENTOF WBbt:0001119 + +[Term] +id: WBbt:0002721 +name: AB.alpapapaa +relationship: DESCENDENTOF WBbt:0001120 + +[Term] +id: WBbt:0001121 +name: AB.alpapapap +relationship: DESCENDENTOF WBbt:0001120 + +[Term] +id: WBbt:0001122 +name: AB.alpapapapa +relationship: DESCENDENTOF WBbt:0001121 + +[Term] +id: WBbt:0002829 +name: AB.alpapapapp +relationship: DESCENDENTOF WBbt:0001121 + +[Term] +id: WBbt:0001123 +name: AB.alpapapp +relationship: DESCENDENTOF WBbt:0001119 + +[Term] +id: WBbt:0001124 +name: AB.alpapappa +relationship: DESCENDENTOF WBbt:0001123 + +[Term] +id: WBbt:0002831 +name: AB.alpapappp +relationship: DESCENDENTOF WBbt:0001123 + +[Term] +id: WBbt:0001125 +name: AB.alpapp +relationship: DESCENDENTOF WBbt:0001113 + +[Term] +id: WBbt:0001126 +name: AB.alpappa +relationship: DESCENDENTOF WBbt:0001125 + +[Term] +id: WBbt:0001127 +name: AB.alpappaa +relationship: DESCENDENTOF WBbt:0001126 + +[Term] +id: WBbt:0001128 +name: AB.alpappaaa +relationship: DESCENDENTOF WBbt:0001127 + +[Term] +id: WBbt:0001129 +name: AB.alpappaap +relationship: DESCENDENTOF WBbt:0001127 + +[Term] +id: WBbt:0002099 +name: AB.alpappaapa +relationship: DESCENDENTOF WBbt:0001129 + +[Term] +id: WBbt:0001130 +name: AB.alpappaapp +relationship: DESCENDENTOF WBbt:0001129 + +[Term] +id: WBbt:0001131 +name: AB.alpappap +relationship: DESCENDENTOF WBbt:0001126 + +[Term] +id: WBbt:0001999 +name: AB.alpappapa +relationship: DESCENDENTOF WBbt:0001131 +relationship: part_of WBbt:0004550 + +[Term] +id: WBbt:0002296 +name: AB.alpappapp +relationship: DESCENDENTOF WBbt:0001131 +relationship: part_of WBbt:0004293 + +[Term] +id: WBbt:0001132 +name: AB.alpappp +relationship: DESCENDENTOF WBbt:0001125 + +[Term] +id: WBbt:0001133 +name: AB.alpapppa +relationship: DESCENDENTOF WBbt:0001132 + +[Term] +id: WBbt:0002097 +name: AB.alpapppaa +relationship: DESCENDENTOF WBbt:0001133 + +[Term] +id: WBbt:0001134 +name: AB.alpapppap +relationship: DESCENDENTOF WBbt:0001133 + +[Term] +id: WBbt:0001135 +name: AB.alpapppp +relationship: DESCENDENTOF WBbt:0001132 + +[Term] +id: WBbt:0002290 +name: AB.alpappppa +relationship: DESCENDENTOF WBbt:0001135 +relationship: part_of WBbt:0004299 + +[Term] +id: WBbt:0002265 +name: AB.alpappppp +relationship: DESCENDENTOF WBbt:0001135 + +[Term] +id: WBbt:0001136 +name: AB.alpp +relationship: DESCENDENTOF WBbt:0001093 + +[Term] +id: WBbt:0001137 +name: AB.alppa +relationship: DESCENDENTOF WBbt:0001136 + +[Term] +id: WBbt:0001138 +name: AB.alppaa +relationship: DESCENDENTOF WBbt:0001137 + +[Term] +id: WBbt:0001139 +name: AB.alppaaa +relationship: DESCENDENTOF WBbt:0001138 + +[Term] +id: WBbt:0001140 +name: AB.alppaaaa +relationship: DESCENDENTOF WBbt:0001139 + +[Term] +id: WBbt:0001141 +name: AB.alppaaap +relationship: DESCENDENTOF WBbt:0001139 + +[Term] +id: WBbt:0001691 +name: AB.alppaaapa +relationship: DESCENDENTOF WBbt:0001141 + +[Term] +id: WBbt:0002455 +name: AB.alppaaapp +relationship: DESCENDENTOF WBbt:0001141 + +[Term] +id: WBbt:0001142 +name: AB.alppaap +relationship: DESCENDENTOF WBbt:0001138 + +[Term] +id: WBbt:0001143 +name: AB.alppaapa +relationship: DESCENDENTOF WBbt:0001142 + +[Term] +id: WBbt:0001144 +name: AB.alppaapp +relationship: DESCENDENTOF WBbt:0001142 + +[Term] +id: WBbt:0001145 +name: AB.alppaappa +relationship: DESCENDENTOF WBbt:0001144 + +[Term] +id: WBbt:0001897 +name: AB.alppaappp +relationship: DESCENDENTOF WBbt:0001144 + +[Term] +id: WBbt:0001146 +name: AB.alppap +relationship: DESCENDENTOF WBbt:0001137 + +[Term] +id: WBbt:0001147 +name: AB.alppapa +relationship: DESCENDENTOF WBbt:0001146 + +[Term] +id: WBbt:0001148 +name: AB.alppapaa +relationship: DESCENDENTOF WBbt:0001147 + +[Term] +id: WBbt:0002725 +name: AB.alppapaaa +relationship: DESCENDENTOF WBbt:0001148 + +[Term] +id: WBbt:0002121 +name: AB.alppapaap +relationship: DESCENDENTOF WBbt:0001148 + +[Term] +id: WBbt:0001149 +name: AB.alppapap +relationship: DESCENDENTOF WBbt:0001147 + +[Term] +id: WBbt:0002737 +name: AB.alppapapa +relationship: DESCENDENTOF WBbt:0001149 + +[Term] +id: WBbt:0002127 +name: AB.alppapapp +relationship: DESCENDENTOF WBbt:0001149 + +[Term] +id: WBbt:0001150 +name: AB.alppapp +relationship: DESCENDENTOF WBbt:0001146 + +[Term] +id: WBbt:0001151 +name: AB.alppappa +relationship: DESCENDENTOF WBbt:0001150 + +[Term] +id: WBbt:0002835 +name: AB.alppappaa +relationship: DESCENDENTOF WBbt:0001151 + +[Term] +id: WBbt:0001761 +name: AB.alppappap +relationship: DESCENDENTOF WBbt:0001151 + +[Term] +id: WBbt:0001152 +name: AB.alppappp +relationship: DESCENDENTOF WBbt:0001150 + +[Term] +id: WBbt:0001153 +name: AB.alppapppa +relationship: DESCENDENTOF WBbt:0001152 + +[Term] +id: WBbt:0002109 +name: AB.alppapppaa +relationship: DESCENDENTOF WBbt:0001153 + +[Term] +id: WBbt:0001154 +name: AB.alppapppap +relationship: DESCENDENTOF WBbt:0001153 + +[Term] +id: WBbt:0002115 +name: AB.alppapppp +relationship: DESCENDENTOF WBbt:0001152 + +[Term] +id: WBbt:0001155 +name: AB.alppp +relationship: DESCENDENTOF WBbt:0001136 + +[Term] +id: WBbt:0001156 +name: AB.alpppa +relationship: DESCENDENTOF WBbt:0001155 + +[Term] +id: WBbt:0001157 +name: AB.alpppaa +relationship: DESCENDENTOF WBbt:0001156 + +[Term] +id: WBbt:0001158 +name: AB.alpppaaa +relationship: DESCENDENTOF WBbt:0001157 + +[Term] +id: WBbt:0001697 +name: AB.alpppaaaa +relationship: DESCENDENTOF WBbt:0001158 + +[Term] +id: WBbt:0002451 +name: AB.alpppaaap +relationship: DESCENDENTOF WBbt:0001158 + +[Term] +id: WBbt:0001159 +name: AB.alpppaap +relationship: DESCENDENTOF WBbt:0001157 + +[Term] +id: WBbt:0002443 +name: AB.alpppaapd +relationship: DESCENDENTOF WBbt:0001159 + +[Term] +id: WBbt:0001160 +name: AB.alpppaapv +relationship: DESCENDENTOF WBbt:0001159 + +[Term] +id: WBbt:0001161 +name: AB.alpppap +relationship: DESCENDENTOF WBbt:0001156 + +[Term] +id: WBbt:0001162 +name: AB.alpppapa +relationship: DESCENDENTOF WBbt:0001161 + +[Term] +id: WBbt:0002723 +name: AB.alpppapad +relationship: DESCENDENTOF WBbt:0001162 + +[Term] +id: WBbt:0001633 +name: AB.alpppapav +relationship: DESCENDENTOF WBbt:0001162 + +[Term] +id: WBbt:0001163 +name: AB.alpppapp +relationship: DESCENDENTOF WBbt:0001161 + +[Term] +id: WBbt:0001164 +name: AB.alpppappa +relationship: DESCENDENTOF WBbt:0001163 + +[Term] +id: WBbt:0001165 +name: AB.alpppappp +relationship: DESCENDENTOF WBbt:0001163 + +[Term] +id: WBbt:0001687 +name: AB.alpppapppa +relationship: DESCENDENTOF WBbt:0001165 + +[Term] +id: WBbt:0001166 +name: AB.alpppapppp +relationship: DESCENDENTOF WBbt:0001165 + +[Term] +id: WBbt:0001167 +name: AB.alpppp +relationship: DESCENDENTOF WBbt:0001155 + +[Term] +id: WBbt:0001168 +name: AB.alppppa +relationship: DESCENDENTOF WBbt:0001167 + +[Term] +id: WBbt:0001169 +name: AB.alppppaa +relationship: DESCENDENTOF WBbt:0001168 + +[Term] +id: WBbt:0001631 +name: AB.alppppaad +relationship: DESCENDENTOF WBbt:0001169 + +[Term] +id: WBbt:0001170 +name: AB.alppppaav +relationship: DESCENDENTOF WBbt:0001169 + +[Term] +id: WBbt:0001171 +name: AB.alppppap +relationship: DESCENDENTOF WBbt:0001168 + +[Term] +id: WBbt:0001172 +name: AB.alppppapa +relationship: DESCENDENTOF WBbt:0001171 + +[Term] +id: WBbt:0002441 +name: AB.alppppapaa +relationship: DESCENDENTOF WBbt:0001172 + +[Term] +id: WBbt:0001173 +name: AB.alppppapap +relationship: DESCENDENTOF WBbt:0001172 + +[Term] +id: WBbt:0001174 +name: AB.alppppapp +relationship: DESCENDENTOF WBbt:0001171 + +[Term] +id: WBbt:0001175 +name: AB.alppppp +relationship: DESCENDENTOF WBbt:0001167 + +[Term] +id: WBbt:0001176 +name: AB.alpppppa +relationship: DESCENDENTOF WBbt:0001175 + +[Term] +id: WBbt:0001629 +name: AB.alpppppaa +relationship: DESCENDENTOF WBbt:0001176 + +[Term] +id: WBbt:0001710 +name: AB.alpppppap +relationship: DESCENDENTOF WBbt:0001176 + +[Term] +id: WBbt:0001177 +name: AB.alpppppp +relationship: DESCENDENTOF WBbt:0001175 + +[Term] +id: WBbt:0001178 +name: AB.alppppppa +relationship: DESCENDENTOF WBbt:0001177 + +[Term] +id: WBbt:0001677 +name: AB.alppppppaa +relationship: DESCENDENTOF WBbt:0001178 + +[Term] +id: WBbt:0001179 +name: AB.alppppppap +relationship: DESCENDENTOF WBbt:0001178 + +[Term] +id: WBbt:0001180 +name: AB.alppppppp +relationship: DESCENDENTOF WBbt:0001177 + +[Term] +id: WBbt:0001685 +name: AB.alpppppppa +relationship: DESCENDENTOF WBbt:0001180 + +[Term] +id: WBbt:0001689 +name: AB.alpppppppp +relationship: DESCENDENTOF WBbt:0001180 + +[Term] +id: WBbt:0001181 +name: AB.ar +relationship: DESCENDENTOF WBbt:0001002 + +[Term] +id: WBbt:0001182 +name: AB.ara +relationship: DESCENDENTOF WBbt:0001181 + +[Term] +id: WBbt:0001183 +name: AB.araa +relationship: DESCENDENTOF WBbt:0001182 + +[Term] +id: WBbt:0001184 +name: AB.araaa +relationship: DESCENDENTOF WBbt:0001183 + +[Term] +id: WBbt:0001185 +name: AB.araaaa +relationship: DESCENDENTOF WBbt:0001184 + +[Term] +id: WBbt:0001186 +name: AB.araaaaa +relationship: DESCENDENTOF WBbt:0001185 + +[Term] +id: WBbt:0001187 +name: AB.araaaaaa +relationship: DESCENDENTOF WBbt:0001186 + +[Term] +id: WBbt:0001995 +name: AB.araaaaaaa +relationship: DESCENDENTOF WBbt:0001187 +relationship: part_of WBbt:0004556 + +[Term] +id: WBbt:0002247 +name: AB.araaaaaap +relationship: DESCENDENTOF WBbt:0001187 +relationship: part_of WBbt:0004336 + +[Term] +id: WBbt:0001188 +name: AB.araaaaap +relationship: DESCENDENTOF WBbt:0001186 + +[Term] +id: WBbt:0001996 +name: AB.araaaaapa +relationship: DESCENDENTOF WBbt:0001188 +relationship: part_of WBbt:0004333 +relationship: part_of WBbt:0004555 + +[Term] +id: WBbt:0002248 +name: AB.araaaaapp +relationship: DESCENDENTOF WBbt:0001188 +relationship: part_of WBbt:0004335 + +[Term] +id: WBbt:0001189 +name: AB.araaaap +relationship: DESCENDENTOF WBbt:0001185 + +[Term] +id: WBbt:0001190 +name: AB.araaaapa +relationship: DESCENDENTOF WBbt:0001189 + +[Term] +id: WBbt:0001191 +name: AB.araaaapaa +relationship: DESCENDENTOF WBbt:0001190 + +[Term] +id: WBbt:0001994 +name: AB.araaaapap +relationship: DESCENDENTOF WBbt:0001190 +relationship: part_of WBbt:0003701 + +[Term] +id: WBbt:0001192 +name: AB.araaaapp +relationship: DESCENDENTOF WBbt:0001189 + +[Term] +id: WBbt:0001193 +name: AB.araaap +relationship: DESCENDENTOF WBbt:0001184 + +[Term] +id: WBbt:0001194 +name: AB.araaapa +relationship: DESCENDENTOF WBbt:0001193 + +[Term] +id: WBbt:0001195 +name: AB.araaapaa +relationship: DESCENDENTOF WBbt:0001194 + +[Term] +id: WBbt:0001662 +name: AB.araaapaaa +relationship: DESCENDENTOF WBbt:0001195 + +[Term] +id: WBbt:0001998 +name: AB.araaapaap +relationship: DESCENDENTOF WBbt:0001195 +relationship: part_of WBbt:0004552 + +[Term] +id: WBbt:0001196 +name: AB.araaapap +relationship: DESCENDENTOF WBbt:0001194 + +[Term] +id: WBbt:0002289 +name: AB.araaapapa +relationship: DESCENDENTOF WBbt:0001196 +relationship: part_of WBbt:0004300 + +[Term] +id: WBbt:0002271 +name: AB.araaapapp +relationship: DESCENDENTOF WBbt:0001196 + +[Term] +id: WBbt:0001197 +name: AB.araaapp +relationship: DESCENDENTOF WBbt:0001193 + +[Term] +id: WBbt:0001198 +name: AB.araaappa +relationship: DESCENDENTOF WBbt:0001197 + +[Term] +id: WBbt:0001660 +name: AB.araaappaa +relationship: DESCENDENTOF WBbt:0001198 + +[Term] +id: WBbt:0001665 +name: AB.araaappap +relationship: DESCENDENTOF WBbt:0001198 + +[Term] +id: WBbt:0001199 +name: AB.araaappp +relationship: DESCENDENTOF WBbt:0001197 + +[Term] +id: WBbt:0001658 +name: AB.araaapppa +relationship: DESCENDENTOF WBbt:0001199 + +[Term] +id: WBbt:0002091 +name: AB.araaapppp +relationship: DESCENDENTOF WBbt:0001199 + +[Term] +id: WBbt:0001200 +name: AB.araap +relationship: DESCENDENTOF WBbt:0001183 + +[Term] +id: WBbt:0001201 +name: AB.araapa +relationship: DESCENDENTOF WBbt:0001200 + +[Term] +id: WBbt:0001202 +name: AB.araapaa +relationship: DESCENDENTOF WBbt:0001201 + +[Term] +id: WBbt:0001203 +name: AB.araapaaa +relationship: DESCENDENTOF WBbt:0001202 + +[Term] +id: WBbt:0002000 +name: AB.araapaaaa +relationship: DESCENDENTOF WBbt:0001203 +relationship: part_of WBbt:0004548 + +[Term] +id: WBbt:0002245 +name: AB.araapaaap +relationship: DESCENDENTOF WBbt:0001203 +relationship: part_of WBbt:0004338 + +[Term] +id: WBbt:0001204 +name: AB.araapaap +relationship: DESCENDENTOF WBbt:0001202 + +[Term] +id: WBbt:0002251 +name: AB.araapaapa +relationship: DESCENDENTOF WBbt:0001204 + +[Term] +id: WBbt:0002291 +name: AB.araapaapp +relationship: DESCENDENTOF WBbt:0001204 +relationship: part_of WBbt:0004298 + +[Term] +id: WBbt:0001205 +name: AB.araapap +relationship: DESCENDENTOF WBbt:0001201 + +[Term] +id: WBbt:0001206 +name: AB.araapapa +relationship: DESCENDENTOF WBbt:0001205 + +[Term] +id: WBbt:0001207 +name: AB.araapapaa +relationship: DESCENDENTOF WBbt:0001206 + +[Term] +id: WBbt:0001208 +name: AB.araapapaad +relationship: DESCENDENTOF WBbt:0001207 + +[Term] +id: WBbt:0002439 +name: AB.araapapaav +relationship: DESCENDENTOF WBbt:0001207 + +[Term] +id: WBbt:0002277 +name: AB.araapapap +relationship: DESCENDENTOF WBbt:0001206 + +[Term] +id: WBbt:0001209 +name: AB.araapapp +relationship: DESCENDENTOF WBbt:0001205 + +[Term] +id: WBbt:0002254 +name: AB.araapappa +relationship: DESCENDENTOF WBbt:0001209 + +[Term] +id: WBbt:0002262 +name: AB.araapappp +relationship: DESCENDENTOF WBbt:0001209 + +[Term] +id: WBbt:0001210 +name: AB.araapp +relationship: DESCENDENTOF WBbt:0001200 + +[Term] +id: WBbt:0001211 +name: AB.araappa +relationship: DESCENDENTOF WBbt:0001210 + +[Term] +id: WBbt:0001212 +name: AB.araappaa +relationship: DESCENDENTOF WBbt:0001211 + +[Term] +id: WBbt:0002299 +name: AB.araappaaa +relationship: DESCENDENTOF WBbt:0001212 + +[Term] +id: WBbt:0002246 +name: AB.araappaap +relationship: DESCENDENTOF WBbt:0001212 +relationship: part_of WBbt:0004337 + +[Term] +id: WBbt:0001213 +name: AB.araappap +relationship: DESCENDENTOF WBbt:0001211 + +[Term] +id: WBbt:0002252 +name: AB.araappapa +relationship: DESCENDENTOF WBbt:0001213 + +[Term] +id: WBbt:0002292 +name: AB.araappapp +relationship: DESCENDENTOF WBbt:0001213 +relationship: part_of WBbt:0004297 + +[Term] +id: WBbt:0001214 +name: AB.araappp +relationship: DESCENDENTOF WBbt:0001210 + +[Term] +id: WBbt:0001215 +name: AB.araapppa +relationship: DESCENDENTOF WBbt:0001214 + +[Term] +id: WBbt:0001216 +name: AB.araapppaa +relationship: DESCENDENTOF WBbt:0001215 + +[Term] +id: WBbt:0001217 +name: AB.araapppaad +relationship: DESCENDENTOF WBbt:0001216 + +[Term] +id: WBbt:0002440 +name: AB.araapppaav +relationship: DESCENDENTOF WBbt:0001216 + +[Term] +id: WBbt:0002278 +name: AB.araapppap +relationship: DESCENDENTOF WBbt:0001215 + +[Term] +id: WBbt:0001218 +name: AB.araapppp +relationship: DESCENDENTOF WBbt:0001214 + +[Term] +id: WBbt:0002256 +name: AB.araappppa +relationship: DESCENDENTOF WBbt:0001218 + +[Term] +id: WBbt:0002264 +name: AB.araappppp +relationship: DESCENDENTOF WBbt:0001218 + +[Term] +id: WBbt:0001219 +name: AB.arap +relationship: DESCENDENTOF WBbt:0001182 + +[Term] +id: WBbt:0001220 +name: AB.arapa +relationship: DESCENDENTOF WBbt:0001219 + +[Term] +id: WBbt:0001221 +name: AB.arapaa +relationship: DESCENDENTOF WBbt:0001220 + +[Term] +id: WBbt:0001222 +name: AB.arapaaa +relationship: DESCENDENTOF WBbt:0001221 + +[Term] +id: WBbt:0001223 +name: AB.arapaaaa +relationship: DESCENDENTOF WBbt:0001222 + +[Term] +id: WBbt:0002002 +name: AB.arapaaaaa +relationship: DESCENDENTOF WBbt:0001223 +relationship: part_of WBbt:0004544 + +[Term] +id: WBbt:0002258 +name: AB.arapaaaap +relationship: DESCENDENTOF WBbt:0001223 + +[Term] +id: WBbt:0001224 +name: AB.arapaaap +relationship: DESCENDENTOF WBbt:0001222 + +[Term] +id: WBbt:0002250 +name: AB.arapaaapa +relationship: DESCENDENTOF WBbt:0001224 + +[Term] +id: WBbt:0001225 +name: AB.arapaaapp +relationship: DESCENDENTOF WBbt:0001224 + +[Term] +id: WBbt:0001226 +name: AB.arapaap +relationship: DESCENDENTOF WBbt:0001221 + +[Term] +id: WBbt:0001227 +name: AB.arapaapa +relationship: DESCENDENTOF WBbt:0001226 + +[Term] +id: WBbt:0002255 +name: AB.arapaapaa +relationship: DESCENDENTOF WBbt:0001227 + +[Term] +id: WBbt:0001228 +name: AB.arapaapap +relationship: DESCENDENTOF WBbt:0001227 + +[Term] +id: WBbt:0001229 +name: AB.arapaapp +relationship: DESCENDENTOF WBbt:0001226 + +[Term] +id: WBbt:0002263 +name: AB.arapaappa +relationship: DESCENDENTOF WBbt:0001229 + +[Term] +id: WBbt:0002298 +name: AB.arapaappp +relationship: DESCENDENTOF WBbt:0001229 + +[Term] +id: WBbt:0001230 +name: AB.arapap +relationship: DESCENDENTOF WBbt:0001220 + +[Term] +id: WBbt:0001231 +name: AB.arapapa +relationship: DESCENDENTOF WBbt:0001230 + +[Term] +id: WBbt:0001232 +name: AB.arapapaa +relationship: DESCENDENTOF WBbt:0001231 + +[Term] +id: WBbt:0001233 +name: AB.arapapaaa +relationship: DESCENDENTOF WBbt:0001232 + +[Term] +id: WBbt:0001234 +name: AB.arapapaap +relationship: DESCENDENTOF WBbt:0001232 + +[Term] +id: WBbt:0002100 +name: AB.arapapaapa +relationship: DESCENDENTOF WBbt:0001234 + +[Term] +id: WBbt:0001235 +name: AB.arapapaapp +relationship: DESCENDENTOF WBbt:0001234 + +[Term] +id: WBbt:0001236 +name: AB.arapapap +relationship: DESCENDENTOF WBbt:0001231 + +[Term] +id: WBbt:0001663 +name: AB.arapapapa +relationship: DESCENDENTOF WBbt:0001236 + +[Term] +id: WBbt:0002103 +name: AB.arapapapp +relationship: DESCENDENTOF WBbt:0001236 + +[Term] +id: WBbt:0001237 +name: AB.arapapp +relationship: DESCENDENTOF WBbt:0001230 + +[Term] +id: WBbt:0001238 +name: AB.arapappa +relationship: DESCENDENTOF WBbt:0001237 + +[Term] +id: WBbt:0002098 +name: AB.arapappaa +relationship: DESCENDENTOF WBbt:0001238 + +[Term] +id: WBbt:0001239 +name: AB.arapappap +relationship: DESCENDENTOF WBbt:0001238 + +[Term] +id: WBbt:0001240 +name: AB.arapappp +relationship: DESCENDENTOF WBbt:0001237 + +[Term] +id: WBbt:0002293 +name: AB.arapapppa +relationship: DESCENDENTOF WBbt:0001240 +relationship: part_of WBbt:0004296 + +[Term] +id: WBbt:0002266 +name: AB.arapapppp +relationship: DESCENDENTOF WBbt:0001240 + +[Term] +id: WBbt:0001241 +name: AB.arapp +relationship: DESCENDENTOF WBbt:0001219 + +[Term] +id: WBbt:0001242 +name: AB.arappa +relationship: DESCENDENTOF WBbt:0001241 + +[Term] +id: WBbt:0001243 +name: AB.arappaa +relationship: DESCENDENTOF WBbt:0001242 + +[Term] +id: WBbt:0001244 +name: AB.arappaaa +relationship: DESCENDENTOF WBbt:0001243 + +[Term] +id: WBbt:0002716 +name: AB.arappaaaa +relationship: DESCENDENTOF WBbt:0001244 + +[Term] +id: WBbt:0001245 +name: AB.arappaaap +relationship: DESCENDENTOF WBbt:0001244 + +[Term] +id: WBbt:0001246 +name: AB.arappaap +relationship: DESCENDENTOF WBbt:0001243 + +[Term] +id: WBbt:0002092 +name: AB.arappaapa +relationship: DESCENDENTOF WBbt:0001246 + +[Term] +id: WBbt:0001247 +name: AB.arappaapp +relationship: DESCENDENTOF WBbt:0001246 + +[Term] +id: WBbt:0001248 +name: AB.arappap +relationship: DESCENDENTOF WBbt:0001242 + +[Term] +id: WBbt:0001249 +name: AB.arappapa +relationship: DESCENDENTOF WBbt:0001248 + +[Term] +id: WBbt:0002722 +name: AB.arappapaa +relationship: DESCENDENTOF WBbt:0001249 + +[Term] +id: WBbt:0001250 +name: AB.arappapap +relationship: DESCENDENTOF WBbt:0001249 + +[Term] +id: WBbt:0001251 +name: AB.arappapapa +relationship: DESCENDENTOF WBbt:0001250 + +[Term] +id: WBbt:0002830 +name: AB.arappapapp +relationship: DESCENDENTOF WBbt:0001250 + +[Term] +id: WBbt:0001252 +name: AB.arappapp +relationship: DESCENDENTOF WBbt:0001248 + +[Term] +id: WBbt:0001958 +name: AB.arappappa +relationship: DESCENDENTOF WBbt:0001252 + +[Term] +id: WBbt:0002832 +name: AB.arappappp +relationship: DESCENDENTOF WBbt:0001252 + +[Term] +id: WBbt:0001253 +name: AB.arappp +relationship: DESCENDENTOF WBbt:0001241 + +[Term] +id: WBbt:0001254 +name: AB.arapppa +relationship: DESCENDENTOF WBbt:0001253 + +[Term] +id: WBbt:0001255 +name: AB.arapppaa +relationship: DESCENDENTOF WBbt:0001254 + +[Term] +id: WBbt:0002726 +name: AB.arapppaaa +relationship: DESCENDENTOF WBbt:0001255 + +[Term] +id: WBbt:0002122 +name: AB.arapppaap +relationship: DESCENDENTOF WBbt:0001255 + +[Term] +id: WBbt:0001256 +name: AB.arapppap +relationship: DESCENDENTOF WBbt:0001254 + +[Term] +id: WBbt:0002738 +name: AB.arapppapa +relationship: DESCENDENTOF WBbt:0001256 + +[Term] +id: WBbt:0002128 +name: AB.arapppapp +relationship: DESCENDENTOF WBbt:0001256 + +[Term] +id: WBbt:0001257 +name: AB.arapppp +relationship: DESCENDENTOF WBbt:0001253 + +[Term] +id: WBbt:0001258 +name: AB.arappppa +relationship: DESCENDENTOF WBbt:0001257 + +[Term] +id: WBbt:0002836 +name: AB.arappppaa +relationship: DESCENDENTOF WBbt:0001258 + +[Term] +id: WBbt:0001762 +name: AB.arappppap +relationship: DESCENDENTOF WBbt:0001258 + +[Term] +id: WBbt:0001259 +name: AB.arappppp +relationship: DESCENDENTOF WBbt:0001257 + +[Term] +id: WBbt:0001260 +name: AB.arapppppa +relationship: DESCENDENTOF WBbt:0001259 + +[Term] +id: WBbt:0002110 +name: AB.arapppppaa +relationship: DESCENDENTOF WBbt:0001260 + +[Term] +id: WBbt:0001261 +name: AB.arapppppap +relationship: DESCENDENTOF WBbt:0001260 + +[Term] +id: WBbt:0002116 +name: AB.arapppppp +relationship: DESCENDENTOF WBbt:0001259 + +[Term] +id: WBbt:0001262 +name: AB.arp +relationship: DESCENDENTOF WBbt:0001181 + +[Term] +id: WBbt:0001263 +name: AB.arpa +relationship: DESCENDENTOF WBbt:0001262 + +[Term] +id: WBbt:0001264 +name: AB.arpaa +relationship: DESCENDENTOF WBbt:0001263 + +[Term] +id: WBbt:0001265 +name: AB.arpaaa +relationship: DESCENDENTOF WBbt:0001264 + +[Term] +id: WBbt:0001266 +name: AB.arpaaaa +relationship: DESCENDENTOF WBbt:0001265 + +[Term] +id: WBbt:0001267 +name: AB.arpaaaaa +relationship: DESCENDENTOF WBbt:0001266 + +[Term] +id: WBbt:0002453 +name: AB.arpaaaaal +relationship: DESCENDENTOF WBbt:0001267 + +[Term] +id: WBbt:0002454 +name: AB.arpaaaaar +relationship: DESCENDENTOF WBbt:0001267 + +[Term] +id: WBbt:0001268 +name: AB.arpaaaap +relationship: DESCENDENTOF WBbt:0001266 + +[Term] +id: WBbt:0002449 +name: AB.arpaaaapa +relationship: DESCENDENTOF WBbt:0001268 + +[Term] +id: WBbt:0001891 +name: AB.arpaaaapp +relationship: DESCENDENTOF WBbt:0001268 + +[Term] +id: WBbt:0001269 +name: AB.arpaaap +relationship: DESCENDENTOF WBbt:0001265 + +[Term] +id: WBbt:0001270 +name: AB.arpaaapa +relationship: DESCENDENTOF WBbt:0001269 + +[Term] +id: WBbt:0002450 +name: AB.arpaaapaa +relationship: DESCENDENTOF WBbt:0001270 + +[Term] +id: WBbt:0001892 +name: AB.arpaaapap +relationship: DESCENDENTOF WBbt:0001270 + +[Term] +id: WBbt:0001271 +name: AB.arpaaapp +relationship: DESCENDENTOF WBbt:0001269 + +[Term] +id: WBbt:0001272 +name: AB.arpaap +relationship: DESCENDENTOF WBbt:0001264 + +[Term] +id: WBbt:0001273 +name: AB.arpaapa +relationship: DESCENDENTOF WBbt:0001272 + +[Term] +id: WBbt:0001274 +name: AB.arpaapaa +relationship: DESCENDENTOF WBbt:0001273 + +[Term] +id: WBbt:0001275 +name: AB.arpaapap +relationship: DESCENDENTOF WBbt:0001273 + +[Term] +id: WBbt:0001276 +name: AB.arpaapp +relationship: DESCENDENTOF WBbt:0001272 + +[Term] +id: WBbt:0001277 +name: AB.arpaappa +relationship: DESCENDENTOF WBbt:0001276 + +[Term] +id: WBbt:0001278 +name: AB.arpaappp +relationship: DESCENDENTOF WBbt:0001276 + +[Term] +id: WBbt:0001279 +name: AB.arpap +relationship: DESCENDENTOF WBbt:0001263 + +[Term] +id: WBbt:0001280 +name: AB.arpapa +relationship: DESCENDENTOF WBbt:0001279 + +[Term] +id: WBbt:0001281 +name: AB.arpapaa +relationship: DESCENDENTOF WBbt:0001280 + +[Term] +id: WBbt:0001282 +name: AB.arpapaaa +relationship: DESCENDENTOF WBbt:0001281 + +[Term] +id: WBbt:0002919 +name: AB.arpapaaaa +relationship: DESCENDENTOF WBbt:0001282 + +[Term] +id: WBbt:0001283 +name: AB.arpapaaap +relationship: DESCENDENTOF WBbt:0001282 + +[Term] +id: WBbt:0001284 +name: AB.arpapaap +relationship: DESCENDENTOF WBbt:0001281 + +[Term] +id: WBbt:0001285 +name: AB.arpapaapa +relationship: DESCENDENTOF WBbt:0001284 + +[Term] +id: WBbt:0001286 +name: AB.arpapaapp +relationship: DESCENDENTOF WBbt:0001284 + +[Term] +id: WBbt:0001890 +name: AB.arpapaappa +relationship: DESCENDENTOF WBbt:0001286 + +[Term] +id: WBbt:0002925 +name: AB.arpapaappp +relationship: DESCENDENTOF WBbt:0001286 + +[Term] +id: WBbt:0001287 +name: AB.arpapap +relationship: DESCENDENTOF WBbt:0001280 + +[Term] +id: WBbt:0001288 +name: AB.arpapapa +relationship: DESCENDENTOF WBbt:0001287 + +[Term] +id: WBbt:0001289 +name: AB.arpapapp +relationship: DESCENDENTOF WBbt:0001287 + +[Term] +id: WBbt:0001290 +name: AB.arpapp +relationship: DESCENDENTOF WBbt:0001279 + +[Term] +id: WBbt:0001291 +name: AB.arpappa +relationship: DESCENDENTOF WBbt:0001290 + +[Term] +id: WBbt:0003258 +name: AB.arpappaa +relationship: DESCENDENTOF WBbt:0001291 + +[Term] +id: WBbt:0001292 +name: AB.arpappap +relationship: DESCENDENTOF WBbt:0001291 + +[Term] +id: WBbt:0001293 +name: AB.arpappp +relationship: DESCENDENTOF WBbt:0001290 + +[Term] +id: WBbt:0002044 +name: AB.arpapppa +relationship: DESCENDENTOF WBbt:0001293 + +[Term] +id: WBbt:0002054 +name: AB.arpapppp +relationship: DESCENDENTOF WBbt:0001293 + +[Term] +id: WBbt:0001294 +name: AB.arpp +relationship: DESCENDENTOF WBbt:0001262 + +[Term] +id: WBbt:0001295 +name: AB.arppa +relationship: DESCENDENTOF WBbt:0001294 + +[Term] +id: WBbt:0001296 +name: AB.arppaa +relationship: DESCENDENTOF WBbt:0001295 + +[Term] +id: WBbt:0001297 +name: AB.arppaaa +relationship: DESCENDENTOF WBbt:0001296 + +[Term] +id: WBbt:0001625 +name: AB.arppaaaa +relationship: DESCENDENTOF WBbt:0001297 + +[Term] +id: WBbt:0002063 +name: AB.arppaaap +relationship: DESCENDENTOF WBbt:0001297 + +[Term] +id: WBbt:0001298 +name: AB.arppaap +relationship: DESCENDENTOF WBbt:0001296 + +[Term] +id: WBbt:0001299 +name: AB.arppaapa +relationship: DESCENDENTOF WBbt:0001298 + +[Term] +id: WBbt:0001300 +name: AB.arppaapp +relationship: DESCENDENTOF WBbt:0001298 + +[Term] +id: WBbt:0001648 +name: AB.arppaappa +relationship: DESCENDENTOF WBbt:0001300 + +[Term] +id: WBbt:0001763 +name: AB.arppaappp +relationship: DESCENDENTOF WBbt:0001300 + +[Term] +id: WBbt:0001301 +name: AB.arppap +relationship: DESCENDENTOF WBbt:0001295 + +[Term] +id: WBbt:0001302 +name: AB.arppapa +relationship: DESCENDENTOF WBbt:0001301 + +[Term] +id: WBbt:0002930 +name: AB.arppapaa +relationship: DESCENDENTOF WBbt:0001302 + +[Term] +id: WBbt:0002964 +name: AB.arppapap +relationship: DESCENDENTOF WBbt:0001302 + +[Term] +id: WBbt:0001303 +name: AB.arppapp +relationship: DESCENDENTOF WBbt:0001301 + +[Term] +id: WBbt:0003032 +name: AB.arppappa +relationship: DESCENDENTOF WBbt:0001303 + +[Term] +id: WBbt:0003114 +name: AB.arppappp +relationship: DESCENDENTOF WBbt:0001303 + +[Term] +id: WBbt:0001304 +name: AB.arppp +relationship: DESCENDENTOF WBbt:0001294 + +[Term] +id: WBbt:0001305 +name: AB.arpppa +relationship: DESCENDENTOF WBbt:0001304 + +[Term] +id: WBbt:0001306 +name: AB.arpppaa +relationship: DESCENDENTOF WBbt:0001305 + +[Term] +id: WBbt:0001626 +name: AB.arpppaaa +relationship: DESCENDENTOF WBbt:0001306 + +[Term] +id: WBbt:0002073 +name: AB.arpppaap +relationship: DESCENDENTOF WBbt:0001306 + +[Term] +id: WBbt:0001307 +name: AB.arpppap +relationship: DESCENDENTOF WBbt:0001305 + +[Term] +id: WBbt:0001308 +name: AB.arpppapa +relationship: DESCENDENTOF WBbt:0001307 + +[Term] +id: WBbt:0001309 +name: AB.arpppapp +relationship: DESCENDENTOF WBbt:0001307 + +[Term] +id: WBbt:0001649 +name: AB.arpppappa +relationship: DESCENDENTOF WBbt:0001309 + +[Term] +id: WBbt:0001764 +name: AB.arpppappp +relationship: DESCENDENTOF WBbt:0001309 + +[Term] +id: WBbt:0001310 +name: AB.arpppp +relationship: DESCENDENTOF WBbt:0001304 + +[Term] +id: WBbt:0001311 +name: AB.arppppa +relationship: DESCENDENTOF WBbt:0001310 + +[Term] +id: WBbt:0002947 +name: AB.arppppaa +relationship: DESCENDENTOF WBbt:0001311 + +[Term] +id: WBbt:0002981 +name: AB.arppppap +relationship: DESCENDENTOF WBbt:0001311 + +[Term] +id: WBbt:0001312 +name: AB.arppppp +relationship: DESCENDENTOF WBbt:0001310 + +[Term] +id: WBbt:0003049 +name: AB.arpppppa +relationship: DESCENDENTOF WBbt:0001312 + +[Term] +id: WBbt:0003160 +name: AB.arpppppp +relationship: DESCENDENTOF WBbt:0001312 + +[Term] +id: WBbt:0001313 +name: AB.p +relationship: DESCENDENTOF WBbt:0001001 + +[Term] +id: WBbt:0005430 +name: AB.p lineage +def: "cells in the AB.p lineage" [WB:rynl] +is_obsolete: true + +[Term] +id: WBbt:0001314 +name: AB.pl +relationship: DESCENDENTOF WBbt:0001313 + +[Term] +id: WBbt:0001315 +name: AB.pla +relationship: DESCENDENTOF WBbt:0001314 + +[Term] +id: WBbt:0001316 +name: AB.plaa +relationship: DESCENDENTOF WBbt:0001315 + +[Term] +id: WBbt:0001317 +name: AB.plaaa +relationship: DESCENDENTOF WBbt:0001316 + +[Term] +id: WBbt:0001318 +name: AB.plaaaa +relationship: DESCENDENTOF WBbt:0001317 + +[Term] +id: WBbt:0001319 +name: AB.plaaaaa +relationship: DESCENDENTOF WBbt:0001318 + +[Term] +id: WBbt:0001320 +name: AB.plaaaaaa +relationship: DESCENDENTOF WBbt:0001319 + +[Term] +id: WBbt:0002918 +name: AB.plaaaaaaa +relationship: DESCENDENTOF WBbt:0001320 + +[Term] +id: WBbt:0001321 +name: AB.plaaaaaap +relationship: DESCENDENTOF WBbt:0001320 + +[Term] +id: WBbt:0001322 +name: AB.plaaaaap +relationship: DESCENDENTOF WBbt:0001319 + +[Term] +id: WBbt:0001323 +name: AB.plaaaaapa +relationship: DESCENDENTOF WBbt:0001322 + +[Term] +id: WBbt:0001324 +name: AB.plaaaaapp +relationship: DESCENDENTOF WBbt:0001322 + +[Term] +id: WBbt:0001889 +name: AB.plaaaaappa +relationship: DESCENDENTOF WBbt:0001324 + +[Term] +id: WBbt:0002924 +name: AB.plaaaaappp +relationship: DESCENDENTOF WBbt:0001324 + +[Term] +id: WBbt:0001325 +name: AB.plaaaap +relationship: DESCENDENTOF WBbt:0001318 + +[Term] +id: WBbt:0001326 +name: AB.plaaaapa +relationship: DESCENDENTOF WBbt:0001325 + +[Term] +id: WBbt:0001327 +name: AB.plaaaapp +relationship: DESCENDENTOF WBbt:0001325 + +[Term] +id: WBbt:0001328 +name: AB.plaaap +relationship: DESCENDENTOF WBbt:0001317 + +[Term] +id: WBbt:0001329 +name: AB.plaaapa +relationship: DESCENDENTOF WBbt:0001328 + +[Term] +id: WBbt:0003257 +name: AB.plaaapaa +relationship: DESCENDENTOF WBbt:0001329 + +[Term] +id: WBbt:0001330 +name: AB.plaaapap +relationship: DESCENDENTOF WBbt:0001329 + +[Term] +id: WBbt:0001331 +name: AB.plaaapp +relationship: DESCENDENTOF WBbt:0001328 + +[Term] +id: WBbt:0002043 +name: AB.plaaappa +relationship: DESCENDENTOF WBbt:0001331 + +[Term] +id: WBbt:0002045 +name: AB.plaaappp +relationship: DESCENDENTOF WBbt:0001331 + +[Term] +id: WBbt:0001332 +name: AB.plaap +relationship: DESCENDENTOF WBbt:0001316 + +[Term] +id: WBbt:0001333 +name: AB.plaapa +relationship: DESCENDENTOF WBbt:0001332 + +[Term] +id: WBbt:0001334 +name: AB.plaapaa +relationship: DESCENDENTOF WBbt:0001333 + +[Term] +id: WBbt:0001335 +name: AB.plaapaaa +relationship: DESCENDENTOF WBbt:0001334 + +[Term] +id: WBbt:0001336 +name: AB.plaapaaaa +relationship: DESCENDENTOF WBbt:0001335 + +[Term] +id: WBbt:0002123 +name: AB.plaapaaap +relationship: DESCENDENTOF WBbt:0001335 + +[Term] +id: WBbt:0001337 +name: AB.plaapaap +relationship: DESCENDENTOF WBbt:0001334 + +[Term] +id: WBbt:0002922 +name: AB.plaapaapa +relationship: DESCENDENTOF WBbt:0001337 + +[Term] +id: WBbt:0001652 +name: AB.plaapaapp +relationship: DESCENDENTOF WBbt:0001337 + +[Term] +id: WBbt:0001338 +name: AB.plaapap +relationship: DESCENDENTOF WBbt:0001333 + +[Term] +id: WBbt:0001339 +name: AB.plaapapa +relationship: DESCENDENTOF WBbt:0001338 + +[Term] +id: WBbt:0001708 +name: AB.plaapapaa +relationship: DESCENDENTOF WBbt:0001339 + +[Term] +id: WBbt:0001679 +name: AB.plaapapap +relationship: DESCENDENTOF WBbt:0001339 + +[Term] +id: WBbt:0001340 +name: AB.plaapapp +relationship: DESCENDENTOF WBbt:0001338 + +[Term] +id: WBbt:0001637 +name: AB.plaapappa +relationship: DESCENDENTOF WBbt:0001340 + +[Term] +id: WBbt:0001341 +name: AB.plaapappp +relationship: DESCENDENTOF WBbt:0001340 + +[Term] +id: WBbt:0001683 +name: AB.plaapapppa +relationship: DESCENDENTOF WBbt:0001341 + +[Term] +id: WBbt:0001342 +name: AB.plaapapppp +relationship: DESCENDENTOF WBbt:0001341 + +[Term] +id: WBbt:0001343 +name: AB.plaapp +relationship: DESCENDENTOF WBbt:0001332 + +[Term] +id: WBbt:0001344 +name: AB.plaappa +relationship: DESCENDENTOF WBbt:0001343 + +[Term] +id: WBbt:0001345 +name: AB.plaappaa +relationship: DESCENDENTOF WBbt:0001344 + +[Term] +id: WBbt:0001346 +name: AB.plaappap +relationship: DESCENDENTOF WBbt:0001344 + +[Term] +id: WBbt:0001347 +name: AB.plaappp +relationship: DESCENDENTOF WBbt:0001343 + +[Term] +id: WBbt:0001348 +name: AB.plaapppa +relationship: DESCENDENTOF WBbt:0001347 + +[Term] +id: WBbt:0001349 +name: AB.plaapppp +relationship: DESCENDENTOF WBbt:0001347 + +[Term] +id: WBbt:0001350 +name: AB.plap +relationship: DESCENDENTOF WBbt:0001315 + +[Term] +id: WBbt:0001351 +name: AB.plapa +relationship: DESCENDENTOF WBbt:0001350 + +[Term] +id: WBbt:0001352 +name: AB.plapaa +relationship: DESCENDENTOF WBbt:0001351 + +[Term] +id: WBbt:0001353 +name: AB.plapaaa +relationship: DESCENDENTOF WBbt:0001352 + +[Term] +id: WBbt:0001354 +name: AB.plapaaaa +relationship: DESCENDENTOF WBbt:0001353 + +[Term] +id: WBbt:0001355 +name: AB.plapaaaaa +relationship: DESCENDENTOF WBbt:0001354 + +[Term] +id: WBbt:0001356 +name: AB.plapaaaap +relationship: DESCENDENTOF WBbt:0001354 + +[Term] +id: WBbt:0001623 +name: AB.plapaaaapa +relationship: DESCENDENTOF WBbt:0001356 + +[Term] +id: WBbt:0001621 +name: AB.plapaaaapp +relationship: DESCENDENTOF WBbt:0001356 + +[Term] +id: WBbt:0001357 +name: AB.plapaaap +relationship: DESCENDENTOF WBbt:0001353 + +[Term] +id: WBbt:0001358 +name: AB.plapaaapa +relationship: DESCENDENTOF WBbt:0001357 + +[Term] +id: WBbt:0002024 +name: AB.plapaaapad +relationship: DESCENDENTOF WBbt:0001358 + +[Term] +id: WBbt:0001645 +name: AB.plapaaapav +relationship: DESCENDENTOF WBbt:0001358 + +[Term] +id: WBbt:0002733 +name: AB.plapaaapp +relationship: DESCENDENTOF WBbt:0001357 + +[Term] +id: WBbt:0001359 +name: AB.plapaap +relationship: DESCENDENTOF WBbt:0001352 + +[Term] +id: WBbt:0002030 +name: AB.plapaapa +relationship: DESCENDENTOF WBbt:0001359 + +[Term] +id: WBbt:0001360 +name: AB.plapaapp +relationship: DESCENDENTOF WBbt:0001359 + +[Term] +id: WBbt:0001361 +name: AB.plapap +relationship: DESCENDENTOF WBbt:0001351 + +[Term] +id: WBbt:0001362 +name: AB.plapapa +relationship: DESCENDENTOF WBbt:0001361 + +[Term] +id: WBbt:0001363 +name: AB.plapapaa +relationship: DESCENDENTOF WBbt:0001362 + +[Term] +id: WBbt:0002641 +name: AB.plapapaaa +relationship: DESCENDENTOF WBbt:0001363 + +[Term] +id: WBbt:0003066 +name: AB.plapapaap +relationship: DESCENDENTOF WBbt:0001363 + +[Term] +id: WBbt:0001364 +name: AB.plapapap +relationship: DESCENDENTOF WBbt:0001362 + +[Term] +id: WBbt:0001365 +name: AB.plapapp +relationship: DESCENDENTOF WBbt:0001361 + +[Term] +id: WBbt:0002578 +name: AB.plapappa +relationship: DESCENDENTOF WBbt:0001365 + +[Term] +id: WBbt:0001366 +name: AB.plapappp +relationship: DESCENDENTOF WBbt:0001365 + +[Term] +id: WBbt:0001367 +name: AB.plapapppa +relationship: DESCENDENTOF WBbt:0001366 + +[Term] +id: WBbt:0001368 +name: AB.plapapppp +relationship: DESCENDENTOF WBbt:0001366 + +[Term] +id: WBbt:0001369 +name: AB.plapappppa +relationship: DESCENDENTOF WBbt:0001368 + +[Term] +id: WBbt:0002618 +name: AB.plapappppaa +relationship: DESCENDENTOF WBbt:0001369 + +[Term] +id: WBbt:0001650 +name: AB.plapappppap +relationship: DESCENDENTOF WBbt:0001369 + +[Term] +id: WBbt:0001370 +name: AB.plapappppp +relationship: DESCENDENTOF WBbt:0001368 + +[Term] +id: WBbt:0001371 +name: AB.plapp +relationship: DESCENDENTOF WBbt:0001350 + +[Term] +id: WBbt:0001372 +name: AB.plappa +relationship: DESCENDENTOF WBbt:0001371 + +[Term] +id: WBbt:0001373 +name: AB.plappaa +relationship: DESCENDENTOF WBbt:0001372 + +[Term] +id: WBbt:0001374 +name: AB.plappaaa +relationship: DESCENDENTOF WBbt:0001373 + +[Term] +id: WBbt:0001375 +name: AB.plappaap +relationship: DESCENDENTOF WBbt:0001373 + +[Term] +id: WBbt:0001376 +name: AB.plappap +relationship: DESCENDENTOF WBbt:0001372 + +[Term] +id: WBbt:0002998 +name: AB.plappapa +relationship: DESCENDENTOF WBbt:0001376 + +[Term] +id: WBbt:0001377 +name: AB.plappapp +relationship: DESCENDENTOF WBbt:0001376 + +[Term] +id: WBbt:0001378 +name: AB.plappp +relationship: DESCENDENTOF WBbt:0001371 + +[Term] +id: WBbt:0001379 +name: AB.plapppa +relationship: DESCENDENTOF WBbt:0001378 + +[Term] +id: WBbt:0001380 +name: AB.plapppaa +relationship: DESCENDENTOF WBbt:0001379 + +[Term] +id: WBbt:0002632 +name: AB.plapppaaa +relationship: DESCENDENTOF WBbt:0001380 + +[Term] +id: WBbt:0001381 +name: AB.plapppaap +relationship: DESCENDENTOF WBbt:0001380 + +[Term] +id: WBbt:0001382 +name: AB.plapppap +relationship: DESCENDENTOF WBbt:0001379 + +[Term] +id: WBbt:0001383 +name: AB.plapppapa +relationship: DESCENDENTOF WBbt:0001382 + +[Term] +id: WBbt:0001384 +name: AB.plapppapp +relationship: DESCENDENTOF WBbt:0001382 + +[Term] +id: WBbt:0002088 +name: AB.plapppappa +relationship: DESCENDENTOF WBbt:0001384 + +[Term] +id: WBbt:0002608 +name: AB.plapppappp +relationship: DESCENDENTOF WBbt:0001384 + +[Term] +id: WBbt:0001385 +name: AB.plapppp +relationship: DESCENDENTOF WBbt:0001378 + +[Term] +id: WBbt:0001386 +name: AB.plappppa +relationship: DESCENDENTOF WBbt:0001385 + +[Term] +id: WBbt:0002856 +name: AB.plappppp +relationship: DESCENDENTOF WBbt:0001385 + +[Term] +id: WBbt:0001387 +name: AB.plp +relationship: DESCENDENTOF WBbt:0001314 + +[Term] +id: WBbt:0001388 +name: AB.plpa +relationship: DESCENDENTOF WBbt:0001387 + +[Term] +id: WBbt:0001389 +name: AB.plpaa +relationship: DESCENDENTOF WBbt:0001388 + +[Term] +id: WBbt:0001390 +name: AB.plpaaa +relationship: DESCENDENTOF WBbt:0001389 + +[Term] +id: WBbt:0001391 +name: AB.plpaaaa +relationship: DESCENDENTOF WBbt:0001390 + +[Term] +id: WBbt:0001392 +name: AB.plpaaaaa +relationship: DESCENDENTOF WBbt:0001391 + +[Term] +id: WBbt:0002739 +name: AB.plpaaaaaa +relationship: DESCENDENTOF WBbt:0001392 + +[Term] +id: WBbt:0001712 +name: AB.plpaaaaap +relationship: DESCENDENTOF WBbt:0001392 + +[Term] +id: WBbt:0001393 +name: AB.plpaaaap +relationship: DESCENDENTOF WBbt:0001391 + +[Term] +id: WBbt:0002005 +name: AB.plpaaaapa +relationship: DESCENDENTOF WBbt:0001393 + +[Term] +id: WBbt:0001957 +name: AB.plpaaaapp +relationship: DESCENDENTOF WBbt:0001393 + +[Term] +id: WBbt:0001394 +name: AB.plpaaap +relationship: DESCENDENTOF WBbt:0001390 + +[Term] +id: WBbt:0001395 +name: AB.plpaaapa +relationship: DESCENDENTOF WBbt:0001394 + +[Term] +id: WBbt:0002920 +name: AB.plpaaapaa +relationship: DESCENDENTOF WBbt:0001395 + +[Term] +id: WBbt:0001893 +name: AB.plpaaapap +relationship: DESCENDENTOF WBbt:0001395 + +[Term] +id: WBbt:0001396 +name: AB.plpaaapp +relationship: DESCENDENTOF WBbt:0001394 + +[Term] +id: WBbt:0001397 +name: AB.plpaaappa +relationship: DESCENDENTOF WBbt:0001396 + +[Term] +id: WBbt:0002457 +name: AB.plpaaappaa +relationship: DESCENDENTOF WBbt:0001397 + +[Term] +id: WBbt:0001398 +name: AB.plpaaappap +relationship: DESCENDENTOF WBbt:0001397 + +[Term] +id: WBbt:0002928 +name: AB.plpaaappp +relationship: DESCENDENTOF WBbt:0001396 + +[Term] +id: WBbt:0001399 +name: AB.plpaap +relationship: DESCENDENTOF WBbt:0001389 + +[Term] +id: WBbt:0001400 +name: AB.plpaapa +relationship: DESCENDENTOF WBbt:0001399 + +[Term] +id: WBbt:0001401 +name: AB.plpaapaa +relationship: DESCENDENTOF WBbt:0001400 + +[Term] +id: WBbt:0002719 +name: AB.plpaapaaa +relationship: DESCENDENTOF WBbt:0001401 + +[Term] +id: WBbt:0001693 +name: AB.plpaapaap +relationship: DESCENDENTOF WBbt:0001401 + +[Term] +id: WBbt:0001402 +name: AB.plpaapap +relationship: DESCENDENTOF WBbt:0001400 + +[Term] +id: WBbt:0001654 +name: AB.plpaapapa +relationship: DESCENDENTOF WBbt:0001402 + +[Term] +id: WBbt:0001888 +name: AB.plpaapapp +relationship: DESCENDENTOF WBbt:0001402 + +[Term] +id: WBbt:0001403 +name: AB.plpaapp +relationship: DESCENDENTOF WBbt:0001399 + +[Term] +id: WBbt:0001404 +name: AB.plpaappa +relationship: DESCENDENTOF WBbt:0001403 + +[Term] +id: WBbt:0001681 +name: AB.plpaappaa +relationship: DESCENDENTOF WBbt:0001404 + +[Term] +id: WBbt:0002703 +name: AB.plpaappap +relationship: DESCENDENTOF WBbt:0001404 + +[Term] +id: WBbt:0001405 +name: AB.plpaappp +relationship: DESCENDENTOF WBbt:0001403 + +[Term] +id: WBbt:0001639 +name: AB.plpaapppa +relationship: DESCENDENTOF WBbt:0001405 + +[Term] +id: WBbt:0001406 +name: AB.plpaapppp +relationship: DESCENDENTOF WBbt:0001405 + +[Term] +id: WBbt:0001899 +name: AB.plpaappppa +relationship: DESCENDENTOF WBbt:0001406 + +[Term] +id: WBbt:0001407 +name: AB.plpaappppp +relationship: DESCENDENTOF WBbt:0001406 + +[Term] +id: WBbt:0001408 +name: AB.plpap +relationship: DESCENDENTOF WBbt:0001388 + +[Term] +id: WBbt:0001409 +name: AB.plpapa +relationship: DESCENDENTOF WBbt:0001408 + +[Term] +id: WBbt:0001410 +name: AB.plpapaa +relationship: DESCENDENTOF WBbt:0001409 + +[Term] +id: WBbt:0001411 +name: AB.plpapaaa +relationship: DESCENDENTOF WBbt:0001410 + +[Term] +id: WBbt:0002833 +name: AB.plpapaaaa +relationship: DESCENDENTOF WBbt:0001411 + +[Term] +id: WBbt:0001643 +name: AB.plpapaaap +relationship: DESCENDENTOF WBbt:0001411 + +[Term] +id: WBbt:0001412 +name: AB.plpapaap +relationship: DESCENDENTOF WBbt:0001410 + +[Term] +id: WBbt:0002746 +name: AB.plpapaapa +relationship: DESCENDENTOF WBbt:0001412 + +[Term] +id: WBbt:0002752 +name: AB.plpapaapp +relationship: DESCENDENTOF WBbt:0001412 + +[Term] +id: WBbt:0001413 +name: AB.plpapap +relationship: DESCENDENTOF WBbt:0001409 + +[Term] +id: WBbt:0001414 +name: AB.plpapapa +relationship: DESCENDENTOF WBbt:0001413 + +[Term] +id: WBbt:0002006 +name: AB.plpapapaa +relationship: DESCENDENTOF WBbt:0001414 + +[Term] +id: WBbt:0001704 +name: AB.plpapapap +relationship: DESCENDENTOF WBbt:0001414 + +[Term] +id: WBbt:0001415 +name: AB.plpapapp +relationship: DESCENDENTOF WBbt:0001413 + +[Term] +id: WBbt:0002748 +name: AB.plpapappa +relationship: DESCENDENTOF WBbt:0001415 + +[Term] +id: WBbt:0001961 +name: AB.plpapa... [truncated message content] |
From: <cmu...@us...> - 2007-03-26 09:56:21
|
Revision: 416 http://svn.sourceforge.net/obo/?rev=416&view=rev Author: cmungall Date: 2007-03-26 02:56:03 -0700 (Mon, 26 Mar 2007) Log Message: ----------- Modified Paths: -------------- obo-database/trunk/bin/obd-load-db-from-obo.pl obo-database/trunk/sql/obd-core-schema.sql obo-database/trunk/sql/obd-core-views.sql Modified: obo-database/trunk/bin/obd-load-db-from-obo.pl =================================================================== --- obo-database/trunk/bin/obd-load-db-from-obo.pl 2007-03-23 20:02:12 UTC (rev 415) +++ obo-database/trunk/bin/obd-load-db-from-obo.pl 2007-03-26 09:56:03 UTC (rev 416) @@ -8,6 +8,7 @@ my $dump; my $split; my $nodelete; +my @parse_args = (); while ($ARGV[0] =~ /^\-/) { my $opt = shift @ARGV; if ($opt eq '-d' || $opt eq '--database') { @@ -25,6 +26,9 @@ elsif ($opt eq '--split') { $split = shift @ARGV; } + elsif ($opt eq '--parg' || $opt eq '-p') { + push(@parse_args, shift @ARGV); + } else { die $opt; } @@ -52,7 +56,7 @@ run("obo-split.pl -s $split -x go2fmt.pl -x 'oboxml_to_obd_prestore - | stag-storenode.pl -p xml -cache node=1 -d $d -' \\; $ifile"); } else { - run("go2fmt.pl -x oboxml_to_obd_prestore $ifile | stag-storenode.pl -p xml -cache node=1 -d $d -"); + run("go2fmt.pl @parse_args -x oboxml_to_obd_prestore $ifile | stag-storenode.pl -p xml -cache node=1 -d $d -"); } print STDERR "Loaded File: $ifile\n"; } Modified: obo-database/trunk/sql/obd-core-schema.sql =================================================================== --- obo-database/trunk/sql/obd-core-schema.sql 2007-03-23 20:02:12 UTC (rev 415) +++ obo-database/trunk/sql/obd-core-schema.sql 2007-03-26 09:56:03 UTC (rev 416) @@ -197,7 +197,15 @@ source_id INTEGER REFERENCES node(node_id) ON DELETE CASCADE ); -COMMENT ON TABLE node_audit IS 'An load/update operation on a node that happened at some point in human existence'; +COMMENT ON TABLE node_audit IS 'An load/update operation on a node +table in this database. Note that this is essentially an internal +book-keeping table, using auto-tmestamps. Other time events, be it +events in nature (such as an occurrence of a biological process) or +events at the data level (eg update time of an annotation) are +considered part of the model, and are represented elsewhere. If the +distinction here seems subtle consider - OBD is a data warehouse; it +is necessary to track timestamps of curator edits independently of +database updates at any one nide'; CREATE TABLE link_audit ( link_id INTEGER NOT NULL, @@ -207,5 +215,5 @@ loadtime TIMESTAMP default 'now', source_id INTEGER REFERENCES node(node_id) ON DELETE CASCADE ); -COMMENT ON TABLE link_audit IS 'An load/update operation on a node that happened at some point in human existence'; +COMMENT ON TABLE link_audit IS 'An load/update operation on a link table. See: node_audit'; Modified: obo-database/trunk/sql/obd-core-views.sql =================================================================== --- obo-database/trunk/sql/obd-core-views.sql 2007-03-23 20:02:12 UTC (rev 415) +++ obo-database/trunk/sql/obd-core-views.sql 2007-03-26 09:56:03 UTC (rev 416) @@ -54,6 +54,23 @@ -- %% link %% +CREATE OR REPLACE VIEW revlink AS + SELECT + link_id, + reiflink_node_id, + object_id AS node_id, + predicate_id, + node_id AS object_id, + when_id, + is_inferred, + is_negated, + combinator, + source_id + FROM link; +COMMENT ON VIEW 'A link in the reverse direction. Example_of_use: +SELECT * FROM node INNER JOIN revlink USING (node_id). May be useful +for inverse DAG traversal. Has no real-world semantics'; + CREATE OR REPLACE VIEW implied_link AS SELECT * FROM link WHERE is_inferred='t'; COMMENT ON VIEW implied_link IS 'A link that has been inferred; inferred links are created by deductive reasoning. Examples: X part_of @@ -100,6 +117,11 @@ SELECT link.* FROM link INNER JOIN instance_of_relation ON (predicate_id=instance_of_relation.node_id); COMMENT ON VIEW instantiation_link IS 'A link of type "instance_of" between an instance and a class'; +-- DUPLCATE; TODO: dereprecate one +CREATE OR REPLACE VIEW instance_of_link AS + SELECT link.* + FROM link INNER JOIN instance_of_relation ON (predicate_id=instance_of_relation.node_id) + WHERE combinator=''; CREATE OR REPLACE VIEW asserted_instantiation_link AS SELECT * FROM instantiation_link WHERE is_inferred='f'; COMMENT ON VIEW asserted_instantiation_link IS 'An instantiation link that is asserted (not implied/inferred)'; @@ -109,30 +131,47 @@ -- is_a CREATE OR REPLACE VIEW is_a_relation AS SELECT * FROM relation_node WHERE uid='OBO_REL:is_a'; -COMMENT ON VIEW is_a_relation IS 'the relation_node for the OBO_REL relation "is_a"'; +COMMENT ON VIEW is_a_relation IS 'relation_node for the OBO_REL relation "is_a"'; CREATE OR REPLACE VIEW non_is_a_relation AS SELECT * FROM relation_node WHERE uid!='OBO_REL:is_a'; +COMMENT ON VIEW non_is_a_relation IS 'relation_node NOT corresponding to the OBO_REL relation "is_a"'; + CREATE OR REPLACE VIEW is_a_link AS SELECT link.* FROM link INNER JOIN is_a_relation ON (predicate_id=is_a_relation.node_id) WHERE combinator=''; -CREATE OR REPLACE VIEW instance_of_link AS - SELECT link.* - FROM link INNER JOIN instance_of_relation ON (predicate_id=instance_of_relation.node_id) - WHERE combinator=''; +COMMENT ON VIEW is_a_link IS 'A link of type "is_a" that is not a combinator/union'; + CREATE OR REPLACE VIEW asserted_is_a_link AS SELECT * FROM is_a_link WHERE is_inferred='f'; +COMMENT ON VIEW asserted_is_a_link IS 'An is_a_link that is not inferred (ie it is asserted)'; + CREATE OR REPLACE VIEW implied_is_a_link AS SELECT * FROM is_a_link WHERE is_inferred='t'; +COMMENT ON VIEW implied_is_a_link IS 'An is_a_link that is inferred (ie it is not directly asserted)'; CREATE OR REPLACE VIEW genus_link AS SELECT link.* FROM link INNER JOIN is_a_relation ON (predicate_id=is_a_relation.node_id) WHERE combinator='I'; +COMMENT ON VIEW genus_link IS 'A link between a class_node and its +genus_node (a component of a logical definition). The genus link is an +is_a link to the parent class that is refined by some differentia. A +logical def can be written as "a C is_a G that D", where C is the +class being defined, G is the genus, and D are the discriminating +features (differentia). Genus-diff definitions are stored as +intersection links; the genus is any link that goes to an is_a +parent. Good genus-differentia definitions have a single genus and 1 +or more differentia, although if an intersection consists of >1 is_a +link then all will be treated as genus'; CREATE OR REPLACE VIEW differentium_link AS SELECT link.* FROM link WHERE combinator='I' AND predicate_id NOT IN (SELECT node_id FROM is_a_relation); +COMMENT ON VIEW differentium_link IS 'A link between a class_node and its +differentium (a component of a logical definition). The differentia +are links to other classes or nodes that serve to differentiae this +class from its genus'; CREATE OR REPLACE VIEW genus_link_to_node AS SELECT genus_link.*, @@ -142,6 +181,7 @@ obj.metatype AS object_metatype FROM genus_link INNER JOIN node AS obj ON (genus_link.object_id=obj.node_id); +COMMENT ON VIEW genus_link_to_node IS 'A genus_link joined to the corresponding genus class_node'; CREATE OR REPLACE VIEW differentium_link_to_node AS SELECT differentium_link.*, @@ -151,6 +191,11 @@ obj.metatype AS object_metatype FROM differentium_link INNER JOIN node AS obj ON (differentium_link.object_id=obj.node_id); +COMMENT ON VIEW differentium_link_to_node IS 'A differentium_link joined to the +corresponding differentia relatum class_node. Example: if the class is +defined as "a nucleus that is part_of an astrocyte", there would be a +differentium_link_to_node that joined both the differentium_link +(part_of) and the relatum class node (nucleus)'; CREATE OR REPLACE VIEW differentium_link_to_label AS SELECT @@ -161,9 +206,23 @@ FROM differentium_link_to_node AS dl INNER JOIN node AS pred ON (dl.predicate_id=pred.node_id); - +COMMENT ON VIEW differentium_link_to_label IS 'A differentium_link +with a human-readable label for the link; substitutes the ID of the +predicate and the ID of the object/relatum with their labels. Example: +"part_of nucleus"'; -- ************************************************************ +-- OBO METAMODEL +-- ************************************************************ + +CREATE OR REPLACE VIEW in_subset_link AS + SELECT * + FROM + link_J_predicate + WHERE + predicate_uid='oboMetaModel:inSubset'; + +-- ************************************************************ -- JOINS -- ************************************************************ @@ -178,15 +237,25 @@ node.source_id AS node_source_id, node.metatype AS node_metatype FROM link INNER JOIN node USING (node_id); +COMMENT ON VIEW node_link IS 'Link joined to node'; CREATE OR REPLACE VIEW instance_link AS SELECT * FROM node_link WHERE node_metatype='I'; +COMMENT ON VIEW instance_link IS 'Link between an instance_node and some +other node. Examples: a link between two instances; a link between an +instance and a class'; + CREATE OR REPLACE VIEW class_link AS SELECT * FROM node_link WHERE node_metatype='C'; +COMMENT ON VIEW class_link IS 'Link between an class_node and some +other node. Examples: a class-class link (nucleus part_of cell); a +class-instance link (eg metadata)'; + CREATE OR REPLACE VIEW relation_link AS SELECT * FROM node_link WHERE node_metatype='R'; +COMMENT ON VIEW relation_link IS 'Link between an relation_node and some +other node. Examples: a relation to a super-relation'; - -- %% link * node %% CREATE OR REPLACE VIEW link_to_node AS @@ -260,7 +329,7 @@ linked_link.* FROM link AS link_in INNER JOIN link AS linked_link ON (link_in.object_id = linked_link.reiflink_node_id); --- instance of an annotation +-- instance of an annotation. TODO: treat all reiflinks as annotations? CREATE OR REPLACE VIEW annotation_node AS SELECT * FROM node WHERE node_id IN @@ -268,6 +337,10 @@ FROM instance_of_link INNER JOIN node AS c ON (c.node_id=instance_of_link.object_id) WHERE c.uid='oban:Annotation'); +CREATE OR REPLACE VIEW annotated_entity AS + SELECT * FROM node + WHERE node_id IN (SELECT node_id FROM link WHERE reiflink_node_id IS NOT NULL); + -- instance of an annotation and the statement posited in the annotation CREATE OR REPLACE VIEW annotation_node_J_link AS SELECT @@ -306,47 +379,30 @@ CREATE OR REPLACE VIEW link_J_predicate AS SELECT link.*, - node.uid AS node_uid, - node.label AS node_label, - node.source_id AS node_source_id + node.uid AS predicate_uid, + node.label AS predicate_label, + node.source_id AS predicate_source_id FROM link INNER JOIN node ON (predicate_id=node.node_id); +CREATE OR REPLACE VIEW annotation_evidence AS + SELECT + annotation.*, + has_evidence.object_id AS evidence_id, + has_evidence.is_inferred + FROM annotation + INNER JOIN link_J_predicate AS has_evidence ON (node_id) + WHERE + has_evidence.predicate_uid='oban:has_evidence'; +-- annotation aggregate queries +CREATE OR REPLACE VIEW annotated_entity_count_by_source AS + SELECT source.uid,source.label, count(annotated_entity.node_id) + FROM annotated_entity LEFT OUTER JOIN node AS source ON (annotated_entity.source_id=source.node_id) + GROUP BY source.uid,source.label; --- deprecated? ----use plural to avoid our user type defined for function and easy to remember it is a view ----using views write query to get pheno data is much slower (18 sec) compared with using functions (8 sec) ----however, using view we could write where-clause like in template where-element ----in case when you have to use where-clause from function result, it is slower than using view -CREATE OR REPLACE VIEW linkers AS - SELECT DISTINCT link.node_id AS subject_id, link.predicate_id, r.uid AS predicate, link.object_id - FROM link INNER JOIN node r ON (r.node_id=link.predicate_id); - -CREATE OR REPLACE VIEW statements AS - SELECT DISTINCT - subj.node_id AS subject_id, subj.uid AS subject_uid, subj.label AS subject_label, subjt.uid AS subject_type, - link.predicate_id, r.uid AS predicate, - obj.node_id AS object_id, obj.uid AS object_uid, obj.label AS object_label, objt.uid AS object_type - FROM node subj INNER JOIN link ON (subj.node_id=link.node_id) - INNER JOIN node subjt ON (subj.metatype_id=subjt.node_id) - INNER JOIN node obj ON (obj.node_id=link.object_id) - INNER JOIN node objt ON (obj.metatype_id=objt.node_id) - INNER JOIN node r ON (r.node_id=link.predicate_id); - -CREATE OR REPLACE VIEW descendants AS - SELECT DISTINCT - subj.node_id AS subject_id, subj.uid AS subject_uid, subj.label AS subject_label,subjt.uid AS subject_type, - link.predicate_id, r.uid AS predicate, - obj.node_id AS object_id, obj.uid AS object_uid, obj.label AS object_label, objt.uid AS object_type - FROM node subj INNER JOIN link_path link ON (subj.node_id=link.node_id) - INNER JOIN node subjt ON (subj.metatype_id=subjt.node_id) - INNER JOIN node obj ON (obj.node_id=link.object_id) - INNER JOIN node objt ON (obj.metatype_id=objt.node_id) - INNER JOIN node r ON (r.node_id=link.predicate_id); - -- ************************************************************ -- AGGREGATE QUERIES -- ************************************************************ @@ -464,7 +520,6 @@ implied_annotation_link AS ial GROUP BY ial.object_id; --- I(Cn) = -log2 p(Cn) CREATE OR REPLACE VIEW class_node_entropy_by_evidence AS SELECT node_id, @@ -473,8 +528,8 @@ FROM count_of_annotated_entity_by_class_node_and_evidence AS tbc, count_of_annotated_entity AS t; +COMMENT ON VIEW class_node_entropy_by_evidence IS 'I(Cn) = -log2 p(Cn)'; - CREATE OR REPLACE VIEW class_node_entropy_by_evidence_with_auto_label AS SELECT *, This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |