Search in sources :

Example 6 with BioPaxObject

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

the class BioModelEditorPathwayDiagramPanel method importIntoModel.

public void importIntoModel() {
    if (bioModel == null) {
        return;
    }
    String warningMessage = "";
    String warningMessage2 = "";
    int warningCount = 0;
    int warningCount2 = 0;
    String infoMessage = "";
    ArrayList<BioPaxObject> importedBPObjects = new ArrayList<BioPaxObject>();
    warningMessage = "The following pathway object(s) have been associated with object(s) in the physiology model:\n";
    warningMessage2 = "The following transport reaction(s) will NOT be converted to the physiology model:\n";
    warningCount = 0;
    warningCount2 = 0;
    infoMessage = "The following pathway object(s) have been coverted in the physiology model:\n\n";
    boolean hasMembrane = false;
    if (bioModel.getModel().getMembranes().size() > 0)
        hasMembrane = true;
    HashSet<BioPaxObject> selected = new HashSet<BioPaxObject>();
    // convert group Object to regular biopaxObjects
    for (BioPaxObject bpo : getSelectedBioPaxObjects()) {
        if (bpo instanceof GroupObject) {
            selected.addAll(((GroupObject) bpo).computeGroupedBioPaxObjects());
        } else {
            selected.add(bpo);
        }
    }
    for (BioPaxObject bpo : selected) {
        if (bpo instanceof Conversion) {
            if (bpo instanceof Transport && !hasMembrane) {
                warningCount2++;
                if (((Conversion) bpo).getName().size() > 0)
                    warningMessage2 += "\nTransport: \'" + ((Conversion) bpo).getName().get(0) + "\'\n";
                else
                    warningMessage2 += "\nTransport: \'" + ((Conversion) bpo).getIDShort() + "\'\n";
            } else if (bioModel.getRelationshipModel().getRelationshipObjects(bpo).size() == 0) {
                importedBPObjects.add(bpo);
            } else {
                warningCount++;
                if (((Conversion) bpo).getName().size() > 0)
                    warningMessage += "\nReaction: \'" + ((Conversion) bpo).getName().get(0) + "\' =>\n";
                else
                    warningMessage += "\nReaction: \'" + ((Conversion) bpo).getIDShort() + "\' =>\n";
                for (RelationshipObject r : bioModel.getRelationshipModel().getRelationshipObjects(bpo)) {
                    warningMessage += "\t=> \'" + r.getBioModelEntityObject().getName() + "\'\n";
                }
            }
        } else if (bpo instanceof PhysicalEntity) {
            if (bioModel.getRelationshipModel().getRelationshipObjects(bpo).size() == 0) {
                importedBPObjects.add(bpo);
            } else {
                warningCount++;
                if (((PhysicalEntity) bpo).getName().size() > 0)
                    warningMessage += "\nSpecies: \'" + ((PhysicalEntity) bpo).getName().get(0) + "\' =>\n";
                else
                    warningMessage += "\nSpecies: \'" + ((PhysicalEntity) bpo).getIDShort() + "\' =>\n";
                for (RelationshipObject r : bioModel.getRelationshipModel().getRelationshipObjects(bpo)) {
                    warningMessage += "\t=> \'" + r.getBioModelEntityObject().getName() + "\'\n";
                }
            }
        }
    }
    // create import panel
    conversionPanel = new ConversionPanel();
    conversionPanel.setBioModel(bioModel);
    conversionPanel.setSelectionManager(getSelectionManager());
    // show warning message
    warningMessage2 += "\nNO membrane structures available in the physiology model.\n";
    if (warningCount2 > 0) {
        DialogUtils.showWarningDialog(conversionPanel, warningMessage2);
    }
    warningMessage += "\nThey will NOT be converted to the physiology model.\n";
    if (warningCount > 0) {
        DialogUtils.showWarningDialog(conversionPanel, warningMessage);
    }
    if (importedBPObjects.size() == 0) {
        return;
    }
    // set the selected objects to be the validly imported biopaxObject set
    conversionPanel.setBioPaxObjects(importedBPObjects);
    int returnCode = DialogUtils.showComponentOKCancelDialog(this, conversionPanel, "Import into Physiology");
    if (returnCode == JOptionPane.OK_OPTION) {
        PathwayMapping pathwayMapping = new PathwayMapping();
        try {
            // function I:
            // pass the table rows that contains user edited values to create Vcell object
            pathwayMapping.createBioModelEntitiesFromBioPaxObjects(bioModel, conversionPanel.getTableRows(), conversionPanel.isAddSubunits());
            for (BioPaxObject bpo : importedBPObjects) {
                if (bpo instanceof Conversion) {
                    infoMessage += "Reaction: \t\'";
                    for (RelationshipObject r : bioModel.getRelationshipModel().getRelationshipObjects(bpo)) {
                        infoMessage += r.getBioModelEntityObject().getName() + "\'\n";
                    }
                    infoMessage += "\n";
                } else if (bpo instanceof PhysicalEntity) {
                    infoMessage += "Species: \t\'";
                    for (RelationshipObject r : bioModel.getRelationshipModel().getRelationshipObjects(bpo)) {
                        infoMessage += r.getBioModelEntityObject().getName() + "\'\n";
                    }
                    infoMessage += "\n";
                }
            }
            DialogUtils.showInfoDialog(this, infoMessage);
            // jump the view to reaction diagram panel
            if (selectionManager != null) {
                selectionManager.setActiveView(new ActiveView(null, DocumentEditorTreeFolderClass.REACTION_DIAGRAM_NODE, ActiveViewID.reaction_diagram));
            }
        } catch (Exception e) {
            e.printStackTrace(System.out);
            DialogUtils.showErrorDialog(this, "Errors occur when converting pathway objects to VCell bioModel objects.\n" + e.getMessage());
        }
    }
}
Also used : PathwayMapping(org.vcell.relationship.PathwayMapping) BioPaxObject(org.vcell.pathway.BioPaxObject) ArrayList(java.util.ArrayList) GroupObject(org.vcell.pathway.GroupObject) ActiveView(cbit.vcell.client.desktop.biomodel.SelectionManager.ActiveView) Conversion(org.vcell.pathway.Conversion) RelationshipObject(org.vcell.relationship.RelationshipObject) ZoomRangeException(cbit.gui.graph.GraphResizeManager.ZoomRangeException) UtilCancelException(org.vcell.util.UtilCancelException) PhysicalEntity(org.vcell.pathway.PhysicalEntity) Transport(org.vcell.pathway.Transport) HashSet(java.util.HashSet)

Example 7 with BioPaxObject

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

the class BioModelEditorPathwayDiagramPanel method collapse2Complex.

private GroupObject collapse2Complex(BioPaxObject bpObject) {
    PathwayGrouping pathwayGrouping = new PathwayGrouping();
    GroupObject groupObject = null;
    HashSet<BioPaxObject> hiddenobjects = new HashSet<BioPaxObject>();
    if (bpObject instanceof Complex) {
        // collapse components
        Complex complex = (Complex) bpObject;
        Set<BioPaxObject> bioPaxObjects = new HashSet<BioPaxObject>(bioModel.getPathwayModel().getBiopaxObjects());
        for (PhysicalEntity pe : complex.getComponents()) {
            if (bioPaxObjects.contains(pe)) {
                hiddenobjects.add(pe);
            }
        }
        if (hiddenobjects.size() > 0) {
            hiddenobjects.add(bpObject);
            String id = pathwayGrouping.groupIdGenerator(bioModel.getPathwayModel());
            groupObject = pathwayGrouping.createGroupObject(bioModel.getPathwayModel(), ((Entity) bpObject).getName(), id, hiddenobjects, GroupObject.Type.GROUPEDCOMPLEX);
        } else {
            // error message
            DialogUtils.showErrorDialog(this, "No Collapse action happened because the components of the complex, " + getEntityName(complex) + ", haven't been imported to pathway model.");
        }
    } else if (bpObject instanceof Protein || bpObject instanceof SmallMolecule) {
        Set<BioPaxObject> bioPaxObjects = new HashSet<BioPaxObject>(bioModel.getPathwayModel().getBiopaxObjects());
        ArrayList<String> name = new ArrayList<String>();
        List<BioPaxObject> parents = bioModel.getPathwayModel().getParents(bpObject);
        if (parents.isEmpty()) {
            DialogUtils.showErrorDialog(this, "No Collapse action happened because protein, " + getEntityName((Entity) bpObject) + ", doesn't involve in any complexes in the pathway data.");
            return null;
        }
        for (BioPaxObject bpo : bioModel.getPathwayModel().getParents(bpObject)) {
            if (bpo instanceof Complex && bioPaxObjects.contains(bpo)) {
                hiddenobjects.add(bpo);
                name.addAll(((Complex) bpo).getName());
                for (PhysicalEntity pe : ((Complex) bpo).getComponents()) {
                    if (bioPaxObjects.contains(pe)) {
                        hiddenobjects.add(pe);
                    }
                }
            }
        }
        if (hiddenobjects.size() > 0) {
            hiddenobjects.add(bpObject);
            String id = pathwayGrouping.groupIdGenerator(bioModel.getPathwayModel());
            if (name.size() == 0) {
                name.add(id);
            }
            groupObject = pathwayGrouping.createGroupObject(bioModel.getPathwayModel(), name, id, hiddenobjects, GroupObject.Type.GROUPEDCOMPLEX);
        } else {
            // error message
            DialogUtils.showErrorDialog(this, "No Collapse action happened because complexes that relate to protein, " + getEntityName((Entity) bpObject) + ", haven't been imported to pathway model.");
        }
    }
    return groupObject;
}
Also used : PhysicalEntity(org.vcell.pathway.PhysicalEntity) Entity(org.vcell.pathway.Entity) Set(java.util.Set) HashSet(java.util.HashSet) PathwayGrouping(org.vcell.pathway.group.PathwayGrouping) BioPaxObject(org.vcell.pathway.BioPaxObject) ArrayList(java.util.ArrayList) GroupObject(org.vcell.pathway.GroupObject) Protein(org.vcell.pathway.Protein) Complex(org.vcell.pathway.Complex) PhysicalEntity(org.vcell.pathway.PhysicalEntity) SmallMolecule(org.vcell.pathway.SmallMolecule) ArrayList(java.util.ArrayList) List(java.util.List) HashSet(java.util.HashSet)

Example 8 with BioPaxObject

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

the class BioModelEditorPathwayDiagramPanel method collapseComplex.

private void collapseComplex() {
    HashSet<BioPaxObject> selected = new HashSet<BioPaxObject>(getSelectedBioPaxObjects());
    if (selected.size() != 1)
        return;
    if (bioModel == null || bioModel.getPathwayModel() == null)
        return;
    GroupObject groupObject = null;
    for (BioPaxObject bpObject : selected) {
        groupObject = collapse2Complex(bpObject);
    }
    if (groupObject != null) {
        bioModel.getPathwayModel().add(groupObject);
        bioModel.getPathwayModel().refreshGroupMap();
        // set the grouped object to be selected
        graphCartoonTool.getGraphModel().setSelectedObjects(new GroupObject[] { groupObject });
        pathwayGraphModel.refreshAll();
    }
}
Also used : BioPaxObject(org.vcell.pathway.BioPaxObject) GroupObject(org.vcell.pathway.GroupObject) HashSet(java.util.HashSet)

Example 9 with BioPaxObject

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

the class BioModelEditorPathwayDiagramPanel method ungroupBioPaxObjects.

private void ungroupBioPaxObjects() {
    HashSet<BioPaxObject> selected = new HashSet<BioPaxObject>();
    selected.addAll(getSelectedBioPaxObjects());
    if (selected.size() == 0)
        return;
    if (bioModel == null || bioModel.getPathwayModel() == null)
        return;
    for (BioPaxObject bpObject : selected) {
        if (bpObject instanceof GroupObject) {
            // remove the GroupObject from pathway model
            GroupObject group = (GroupObject) bpObject;
            ArrayList<BioPaxObject> groupElements = new ArrayList<BioPaxObject>();
            for (BioPaxObject bpo : group.getGroupedObjects()) {
                groupElements.add(bpo);
            }
            bioModel.getPathwayModel().remove(bpObject);
            // set the group elements to be selected
            graphCartoonTool.getGraphModel().setSelectedObjects(groupElements.toArray());
        }
    }
    pathwayGraphModel.refreshAll();
}
Also used : BioPaxObject(org.vcell.pathway.BioPaxObject) ArrayList(java.util.ArrayList) GroupObject(org.vcell.pathway.GroupObject) HashSet(java.util.HashSet)

Example 10 with BioPaxObject

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

the class BioModelEditorPathwayDiagramPanel method editPhysiologyLinks.

private void editPhysiologyLinks() {
    BioPaxObject selectedBioPaxObject = getSelectedBioPaxObject();
    if (selectedBioPaxObject != null) {
        BioPaxRelationshipPanel bioPaxRelationshipPanel = new BioPaxRelationshipPanel();
        bioPaxRelationshipPanel.setBioModel(bioModel);
        bioPaxRelationshipPanel.setBioPaxObject(selectedBioPaxObject);
        DialogUtils.showComponentCloseDialog(this, bioPaxRelationshipPanel, "Edit Physiology Links");
    }
    refreshButtons();
}
Also used : BioPaxObject(org.vcell.pathway.BioPaxObject)

Aggregations

BioPaxObject (org.vcell.pathway.BioPaxObject)53 GroupObject (org.vcell.pathway.GroupObject)21 ArrayList (java.util.ArrayList)15 HashSet (java.util.HashSet)14 PhysicalEntity (org.vcell.pathway.PhysicalEntity)14 RelationshipObject (org.vcell.relationship.RelationshipObject)14 ActiveView (cbit.vcell.client.desktop.biomodel.SelectionManager.ActiveView)9 Conversion (org.vcell.pathway.Conversion)9 BioModelEntityObject (cbit.vcell.model.BioModelEntityObject)8 SpeciesContext (cbit.vcell.model.SpeciesContext)7 Entity (org.vcell.pathway.Entity)7 Complex (org.vcell.pathway.Complex)6 Control (org.vcell.pathway.Control)6 InteractionParticipant (org.vcell.pathway.InteractionParticipant)6 Dimension (java.awt.Dimension)5 MouseAdapter (java.awt.event.MouseAdapter)5 MouseEvent (java.awt.event.MouseEvent)5 JLabel (javax.swing.JLabel)5 JPanel (javax.swing.JPanel)5 MolecularType (org.vcell.model.rbm.MolecularType)5