Search in sources :

Example 1 with PublicationXref

use of org.vcell.pathway.PublicationXref in project vcell by virtualcell.

the class BioPaxObjectPropertiesPanel method refreshInterface.

protected void refreshInterface() {
    if (bioPaxObject == null) {
        // sanity check
        return;
    }
    ArrayList<BioPaxObjectProperty> propertyList = new ArrayList<BioPaxObjectProperty>();
    if (!(bioPaxObject instanceof SBEntity)) {
        tableModel.setData(propertyList);
        return;
    }
    SBEntity sbEntity = (SBEntity) bioPaxObject;
    if (!(sbEntity instanceof Entity)) {
        tableModel.setData(propertyList);
        return;
    }
    Entity entity = (Entity) sbEntity;
    // entity::type
    propertyList.add(new BioPaxObjectProperty("Type", bioPaxObject.getTypeLabel()));
    if (lookupContains(entity)) {
        propertyList.add(new BioPaxObjectProperty("Name", entity.getName().get(0) + " (looking...)"));
    } else if (entity.getFormalNames() != null && entity.getFormalNames().size() != 0) {
        propertyList.add(new BioPaxObjectProperty("Name", entity.getName().get(0) + " (" + entity.getFormalNames().get(0) + ")"));
    } else if (entity.getName() != null && entity.getName().size() > 0) {
        String displayName = entity.getName().get(0);
        if (entity.getxRef() != null && entity.getxRef().size() > 0) {
            displayName = displayName + " (double-click lookup)";
        }
        // entity::name
        propertyList.add(new BioPaxObjectProperty("Name", displayName));
    }
    // entity::Link
    for (RelationshipObject rObject : bioModel.getRelationshipModel().getRelationshipObjects(bioPaxObject)) {
        BioModelEntityObject beObject = rObject.getBioModelEntityObject();
        String sType = beObject.getDisplayType();
        propertyList.add(new BioPaxObjectProperty("Linked physiology object (" + sType + ")", beObject.getName(), beObject));
    }
    if (entity instanceof PhysicalEntity) {
        // ------------------------ PHYSICAL ENTITY -----------------------
        PhysicalEntity physicalEntity = (PhysicalEntity) entity;
        // physicalEntity::feature (***ignored***)
        // physicalEntity::memberPhysicalEntity (***ignored***)
        // physicalEntity::notFeature (***ignored***)
        // TODO:  extract the kinetic law, then the SBEntities, then the measurables, units, aso
        boolean isReactionParticipant = BioPAXUtil.isReactionParticipant(physicalEntity, bioModel.getPathwayModel());
        String role = "";
        if (BioPAXUtil.isController(physicalEntity, bioModel.getPathwayModel())) {
            role += "Controller";
            if (isReactionParticipant) {
                role += ", Participant";
            }
        } else if (isReactionParticipant) {
            role += "Participant";
        }
        if (!role.isEmpty()) {
            propertyList.add(new BioPaxObjectProperty("Role(s)", role));
        }
        if (!(physicalEntity instanceof SmallMolecule)) {
            // physicalEntity::cellular location
            CellularLocationVocabulary cellularLocation = physicalEntity.getCellularLocation();
            if (cellularLocation != null && cellularLocation.getTerm() != null && cellularLocation.getTerm().size() > 0) {
                propertyList.add(new BioPaxObjectProperty("Cellular Location", cellularLocation.getTerm().get(0), cellularLocation));
            } else if (entity.getName() != null && entity.getName().size() > 1) {
                String location = entity.getName().get(1);
                if (location.contains("[") && location.contains("]")) {
                    location = location.substring(location.indexOf("[") + 1, location.indexOf("]"));
                    propertyList.add(new BioPaxObjectProperty("Cellular Location", location));
                }
            }
        }
        if (physicalEntity instanceof Complex) {
            Complex complex = (Complex) physicalEntity;
            // complex::components
            for (PhysicalEntity pe : complex.getComponents()) {
                propertyList.add(new BioPaxObjectProperty("Component", getEntityName(pe), pe));
            }
        } else if (physicalEntity instanceof Protein) {
        // Protein protein = (Protein)entity;
        // protein::entity reference (***ignored***)
        } else if (physicalEntity instanceof SmallMolecule) {
            SmallMolecule sm = (SmallMolecule) physicalEntity;
            EntityReference er = sm.getEntityReference();
            if (er != null && !er.getName().isEmpty() && er.getName().get(0) != null && !er.getName().get(0).isEmpty()) {
                propertyList.add(new BioPaxObjectProperty("Entity Reference", er.getName().get(0)));
                ArrayList<Xref> xrefList = er.getxRef();
                for (Xref xref : xrefList) {
                    propertyList.add(new BioPaxObjectProperty("   Xref", xref.getDb() + ":" + xref.getId(), xref));
                }
            }
        } else if (physicalEntity instanceof Dna) {
        // dna::entityReference (***ignored***)
        } else if (physicalEntity instanceof DnaRegion) {
        // dnaRegion::entityReference (***ignored***)
        } else if (physicalEntity instanceof Rna) {
        // rna::entityReference (***ignored***)
        } else if (physicalEntity instanceof RnaRegion) {
        // rnaRegion::entityReference (***ignored***)
        }
    } else if (entity instanceof Interaction) {
        // --------------------------- INTERACTION -------------------
        Interaction interaction = (Interaction) entity;
        // interaction::interactionType
        for (InteractionVocabulary interactionVocabulary : interaction.getInteractionTypes()) {
            if (interactionVocabulary.getTerm().size() > 0) {
                propertyList.add(new BioPaxObjectProperty("Interaction Type", interactionVocabulary.getTerm().get(0), interactionVocabulary));
            }
        }
        // interaction::participants
        for (InteractionParticipant interactionParticipant : interaction.getParticipants()) {
            PhysicalEntity physicalEntity = interactionParticipant.getPhysicalEntity();
            String physicalEntityName = physicalEntity.getName().size() > 0 ? physicalEntity.getName().get(0) : physicalEntity.getIDShort();
            String cellularLocation = "";
            if (physicalEntity.getCellularLocation() != null) {
                cellularLocation = physicalEntity.getCellularLocation().getTerm().size() > 0 ? " [" + physicalEntity.getCellularLocation().getTerm().get(0) + "]" : "";
            }
            propertyList.add(new BioPaxObjectProperty(interactionParticipant.getLevel3PropertyName(), physicalEntityName + cellularLocation, physicalEntity));
        }
        // get the controllers for interactions
        // we always need this because there's no guarantee we'll have kinetic laws
        // for instance pathway commons doesn't have quantitative information
        Set<String> controllersNames = getControllersNames(interaction);
        if (controllersNames.size() > 0) {
            for (String str : controllersNames) {
                // String tooltip = "<html>how many of these 12 M <br>average size  1.12345*E12 nm <br>temperature 37 degrees Celsius</html>";
                String tooltip = "";
                propertyList.add(new BioPaxObjectProperty("Controlled by", str, interaction, tooltip));
            }
        }
        // get the kinetic laws (if any)
        Set<Control> controls = BioPAXUtil.getControlsOfInteraction(interaction, bioModel.getPathwayModel());
        for (Control control : controls) {
            ArrayList<SBEntity> sbEntities = control.getSBSubEntity();
            for (SBEntity sbE : sbEntities) {
                // the only SBSubEntities allowed in a control are kinetic laws
                if (sbE.getID().contains("kineticLaw")) {
                    String str = new String();
                    if (control.getPhysicalControllers() != null) {
                        str += " for Controller(s): ";
                        for (PhysicalEntity ep : control.getPhysicalControllers()) {
                            if (ep.getName().size() > 0) {
                                str += ep.getName().get(0);
                            } else {
                                str += ep.getIDShort();
                            }
                            str += " ";
                        }
                    }
                    String sDetails = "";
                    ArrayList<SBVocabulary> sbTerms = sbE.getSBTerm();
                    for (SBVocabulary sbv : sbTerms) {
                        // type of kinetic law
                        String str1 = sbv.getID();
                        str1 = str1.substring(str1.lastIndexOf('#') + 1);
                        System.out.println(str1);
                        SBOTerm sboT = SBOListEx.sboMap.get(str1);
                        sDetails += "<font color=\"#660000\"><b>" + sboT.getName() + "</b></font>" + "  " + "<font color=\"#006600\">" + sboT.getDescription() + "</font>";
                        sDetails += "<br>";
                    }
                    ArrayList<SBEntity> klProperties = sbE.getSBSubEntity();
                    for (SBEntity klProperty : klProperties) {
                        if (klProperty instanceof SBMeasurable) {
                            SBMeasurable m = (SBMeasurable) klProperty;
                            String str1 = "";
                            String str2 = "";
                            String str3 = "";
                            if (m.hasTerm()) {
                                str1 += m.extractSBOTermAsString();
                            }
                            if (m.hasNumber()) {
                                str2 += m.getNumber().get(0);
                            }
                            if (m.hasUnit()) {
                                str3 += m.extractSBOUnitAsString();
                            }
                            // str1 is an SBO id, for example "SBO:0000064"
                            SBOTerm sboT = SBOListEx.sboMap.get(str1);
                            sDetails += sboT.getSymbol() + "   (" + sboT.getName() + ")" + "<font color=\"#660000\"><b>" + str2 + str3 + "</b></font>" + "  " + "<font color=\"#006600\">" + sboT.getDescription() + "</font>";
                        } else {
                            sDetails = klProperty.getIDShort() + "  " + klProperty.getTypeLabel();
                        }
                        sDetails += "<br>";
                    }
                    // String tooltip = "<html>how many of these 12 M <br>average size  1.12345*E12 nm <br>temperature 37 degrees Celsius</html>";
                    String tooltip = "";
                    BioPaxObjectProperty bpop = new BioPaxObjectProperty("Kinetic Law" + str, sbE.getID(), sbE, tooltip);
                    bpop.setDetails(sDetails);
                    propertyList.add(bpop);
                }
            }
        }
        if (interaction instanceof Control) {
            // TODO: is this ever being called?
            Control c = (Control) interaction;
            // catalysis::controlled
            Interaction controlledInteraction = c.getControlledInteraction();
            if (controlledInteraction != null) {
                String controlledName = controlledInteraction.getIDShort();
                if (controlledInteraction.getName().size() > 0) {
                    controlledName = controlledInteraction.getName().get(0);
                }
                propertyList.add(new BioPaxObjectProperty("Controlled Interaction", controlledName, controlledInteraction));
            }
        }
    } else if (entity instanceof GroupObject) {
        // ---------------------- GROUP OBJECT ------------------
        GroupObject groupObject = (GroupObject) entity;
        for (BioPaxObject bpo : groupObject.getGroupedObjects()) {
            propertyList.add(new BioPaxObjectProperty("Element::" + bpo.getTypeLabel(), getEntityName((Entity) bpo), bpo));
        }
    }
    // entity::comments
    for (String comment : entity.getComments()) {
        propertyList.add(new BioPaxObjectProperty("Comment", comment));
    }
    // entity::xRef
    ArrayList<Xref> xrefList = ((Entity) bioPaxObject).getxRef();
    for (Xref xref : xrefList) {
        if (xref instanceof UnificationXref) {
            propertyList.add(new BioPaxObjectProperty("Xref", xref.getDb() + ":" + xref.getId(), xref));
        }
    }
    for (Xref xref : xrefList) {
        if (xref instanceof RelationshipXref) {
            propertyList.add(new BioPaxObjectProperty("Xref (related)", xref.getDb() + ":" + xref.getId(), xref));
        }
    }
    for (Xref xref : xrefList) {
        if (xref instanceof PublicationXref) {
            propertyList.add(new BioPaxObjectProperty("Publication", xref.getDb() + ":" + xref.getId(), xref));
        }
    }
    // for(SBVocabulary sbVocab : sbEntity.getSBTerm()) {
    // propertyList.add(new BioPaxObjectProperty("SBO Term", SBPAXLabelUtil.makeLabel(sbVocab)));
    // }
    // if(sbEntity instanceof Interaction) {
    // // TODO: this goes away
    // Interaction interaction = (Interaction) sbEntity;
    // Set<SBEntity> subEntities = new HashSet<SBEntity>();
    // subEntities.add(interaction);
    // Set<Control> controls = BioPAXUtil.findAllControls(interaction, bioModel.getPathwayModel());
    // subEntities.addAll(controls);
    // subEntities = SBPAX3Util.extractAllEntities(subEntities);
    // for(SBEntity subEntity : subEntities) {
    // if(subEntity instanceof SBMeasurable) {
    // propertyList.add(new BioPaxObjectProperty("Measured quantity", SBPAXLabelUtil.makeLabel(subEntity)));
    // }
    // }
    // }
    tableModel.setData(propertyList);
}
Also used : SBVocabulary(org.vcell.pathway.sbpax.SBVocabulary) SBEntity(org.vcell.pathway.sbpax.SBEntity) PhysicalEntity(org.vcell.pathway.PhysicalEntity) Entity(org.vcell.pathway.Entity) Set(java.util.Set) TreeSet(java.util.TreeSet) HashSet(java.util.HashSet) Rna(org.vcell.pathway.Rna) PublicationXref(org.vcell.pathway.PublicationXref) InteractionVocabulary(org.vcell.pathway.InteractionVocabulary) BioPaxObject(org.vcell.pathway.BioPaxObject) ArrayList(java.util.ArrayList) CellularLocationVocabulary(org.vcell.pathway.CellularLocationVocabulary) SBEntity(org.vcell.pathway.sbpax.SBEntity) RelationshipObject(org.vcell.relationship.RelationshipObject) Complex(org.vcell.pathway.Complex) RnaRegion(org.vcell.pathway.RnaRegion) SBMeasurable(org.vcell.pathway.sbpax.SBMeasurable) Xref(org.vcell.pathway.Xref) UnificationXref(org.vcell.pathway.UnificationXref) RelationshipXref(org.vcell.pathway.RelationshipXref) PublicationXref(org.vcell.pathway.PublicationXref) Control(org.vcell.pathway.Control) DnaRegion(org.vcell.pathway.DnaRegion) EntityReference(org.vcell.pathway.EntityReference) Interaction(org.vcell.pathway.Interaction) UnificationXref(org.vcell.pathway.UnificationXref) GroupObject(org.vcell.pathway.GroupObject) SBOTerm(org.vcell.pathway.sbo.SBOTerm) BioModelEntityObject(cbit.vcell.model.BioModelEntityObject) Protein(org.vcell.pathway.Protein) RelationshipXref(org.vcell.pathway.RelationshipXref) PhysicalEntity(org.vcell.pathway.PhysicalEntity) SmallMolecule(org.vcell.pathway.SmallMolecule) Dna(org.vcell.pathway.Dna) InteractionParticipant(org.vcell.pathway.InteractionParticipant)

Example 2 with PublicationXref

use of org.vcell.pathway.PublicationXref in project vcell by virtualcell.

the class PathwayReader method addObjectXref.

private Xref addObjectXref(Element element) {
    Namespace bp = Namespace.getNamespace("bp", "http://www.biopax.org/release/biopax-level2.owl#");
    if (element.getChild("unificationXref", bp) != null) {
        UnificationXref xref = addObjectUnificationXref(element.getChild("unificationXref", bp));
        return xref;
    }
    if (element.getChild("relationshipXref", bp) != null) {
        RelationshipXref xref = addObjectRelationshipXref(element.getChild("relationshipXref", bp));
        return xref;
    }
    if (element.getChild("publicationXref", bp) != null) {
        PublicationXref xref = addObjectPublicationXref(element.getChild("publicationXref", bp));
        return xref;
    }
    if (element.getChildren().size() == 0) {
        XrefProxy xref = new XrefProxy();
        addAttributes(xref, element);
        pathwayModel.add(xref);
        return xref;
    } else {
        Xref xref = new Xref();
        for (Object child : element.getChildren()) {
            if (child instanceof Element) {
                Element childElement = (Element) child;
                if (!addContentXref(xref, element, childElement)) {
                    showUnexpected(childElement, xref);
                }
            }
        }
        pathwayModel.add(xref);
        System.out.println("should never happen");
        return xref;
    }
}
Also used : Xref(org.vcell.pathway.Xref) PublicationXref(org.vcell.pathway.PublicationXref) UnificationXref(org.vcell.pathway.UnificationXref) RelationshipXref(org.vcell.pathway.RelationshipXref) PublicationXref(org.vcell.pathway.PublicationXref) UnificationXref(org.vcell.pathway.UnificationXref) Element(org.jdom.Element) BioPaxObject(org.vcell.pathway.BioPaxObject) Namespace(org.jdom.Namespace) RelationshipXref(org.vcell.pathway.RelationshipXref) XrefProxy(org.vcell.pathway.persistence.BiopaxProxy.XrefProxy)

Example 3 with PublicationXref

use of org.vcell.pathway.PublicationXref in project vcell by virtualcell.

the class PathwayReader method addObjectPublicationXref.

private PublicationXref addObjectPublicationXref(Element element) {
    PublicationXref publicationXref = new PublicationXref();
    addAttributes(publicationXref, element);
    for (Object child : element.getChildren()) {
        if (child instanceof Element) {
            Element childElement = (Element) child;
            if (!addContentPublicationXref(publicationXref, element, childElement)) {
                showUnexpected(childElement, publicationXref);
            }
        }
    }
    pathwayModel.add(publicationXref);
    return publicationXref;
}
Also used : PublicationXref(org.vcell.pathway.PublicationXref) Element(org.jdom.Element) BioPaxObject(org.vcell.pathway.BioPaxObject)

Example 4 with PublicationXref

use of org.vcell.pathway.PublicationXref in project vcell by virtualcell.

the class PathwayReaderBiopax3 method addObjectXref.

private Xref addObjectXref(Element element) {
    Namespace bp = Namespace.getNamespace("bp", "http://www.biopax.org/release/biopax-level3.owl#");
    if (element.getChild("UnificationXref", bp) != null) {
        UnificationXref xref = addObjectUnificationXref(element.getChild("UnificationXref", bp));
        return xref;
    }
    if (element.getChild("RelationshipXref", bp) != null) {
        RelationshipXref xref = addObjectRelationshipXref(element.getChild("RelationshipXref", bp));
        return xref;
    }
    if (element.getChild("PublicationXref", bp) != null) {
        PublicationXref xref = addObjectPublicationXref(element.getChild("PublicationXref", bp));
        return xref;
    }
    if (element.getChildren().size() == 0) {
        XrefProxy xref = new XrefProxy();
        addAttributes(xref, element);
        pathwayModel.add(xref);
        return xref;
    } else {
        for (Object child : element.getChildren()) {
            if (child instanceof Element) {
                Element childElement = (Element) child;
                showUnexpected(childElement);
            }
        }
        Xref xref = new Xref();
        pathwayModel.add(xref);
        System.out.println("should never happen");
        return xref;
    }
}
Also used : Xref(org.vcell.pathway.Xref) PublicationXref(org.vcell.pathway.PublicationXref) UnificationXref(org.vcell.pathway.UnificationXref) RelationshipXref(org.vcell.pathway.RelationshipXref) PublicationXref(org.vcell.pathway.PublicationXref) UnificationXref(org.vcell.pathway.UnificationXref) Element(org.jdom.Element) GroupObject(org.vcell.pathway.GroupObject) BioPaxObject(org.vcell.pathway.BioPaxObject) Namespace(org.jdom.Namespace) RelationshipXref(org.vcell.pathway.RelationshipXref) XrefProxy(org.vcell.pathway.persistence.BiopaxProxy.XrefProxy)

Example 5 with PublicationXref

use of org.vcell.pathway.PublicationXref in project vcell by virtualcell.

the class PathwayProducerBiopax3 method addContentPublicationXref.

private Element addContentPublicationXref(BioPaxObject bpObject, Element element) {
    element = addContentXref(bpObject, element);
    PublicationXref ob = (PublicationXref) bpObject;
    Element tmpElement = null;
    if (ob.getAuthor() != null && ob.getAuthor().size() > 0) {
        ArrayList<String> list = ob.getAuthor();
        for (String item : list) {
            tmpElement = new Element("author", bp);
            tmpElement.setAttribute("datatype", schemaString, rdf);
            tmpElement.setText(item);
            element.addContent(tmpElement);
        }
    }
    if (ob.getSource() != null && ob.getSource().size() > 0) {
        ArrayList<String> list = ob.getSource();
        for (String item : list) {
            tmpElement = new Element("source", bp);
            tmpElement.setAttribute("datatype", schemaString, rdf);
            tmpElement.setText(item);
            element.addContent(tmpElement);
        }
    }
    if (ob.getUrl() != null && ob.getUrl().size() > 0) {
        ArrayList<String> list = ob.getUrl();
        for (String item : list) {
            tmpElement = new Element("url", bp);
            tmpElement.setAttribute("datatype", schemaString, rdf);
            tmpElement.setText(item);
            element.addContent(tmpElement);
        }
    }
    if (ob.getYear() != null && ob.getYear() > 0) {
        tmpElement = new Element("year", bp);
        tmpElement.setAttribute("datatype", schemaInt, rdf);
        tmpElement.setText(ob.getYear().toString());
        element.addContent(tmpElement);
    }
    if (ob.getTitle() != null && ob.getTitle().length() > 0) {
        tmpElement = new Element("title", bp);
        tmpElement.setAttribute("datatype", schemaString, rdf);
        tmpElement.setText(ob.getTitle());
        element.addContent(tmpElement);
    }
    return element;
}
Also used : PublicationXref(org.vcell.pathway.PublicationXref) Element(org.jdom.Element) PathwayXMLHelper.schemaString(org.vcell.pathway.PathwayXMLHelper.schemaString)

Aggregations

PublicationXref (org.vcell.pathway.PublicationXref)7 Element (org.jdom.Element)5 BioPaxObject (org.vcell.pathway.BioPaxObject)5 RelationshipXref (org.vcell.pathway.RelationshipXref)4 UnificationXref (org.vcell.pathway.UnificationXref)4 Xref (org.vcell.pathway.Xref)4 GroupObject (org.vcell.pathway.GroupObject)3 ArrayList (java.util.ArrayList)2 Namespace (org.jdom.Namespace)2 XrefProxy (org.vcell.pathway.persistence.BiopaxProxy.XrefProxy)2 BioModelEntityObject (cbit.vcell.model.BioModelEntityObject)1 HashSet (java.util.HashSet)1 Set (java.util.Set)1 TreeSet (java.util.TreeSet)1 CellularLocationVocabulary (org.vcell.pathway.CellularLocationVocabulary)1 Complex (org.vcell.pathway.Complex)1 Control (org.vcell.pathway.Control)1 Dna (org.vcell.pathway.Dna)1 DnaRegion (org.vcell.pathway.DnaRegion)1 Entity (org.vcell.pathway.Entity)1