Search in sources :

Example 6 with RbmObservable

use of cbit.vcell.model.RbmObservable in project vcell by virtualcell.

the class SpeciesPatternRoundShape method paintCompartment.

public void paintCompartment(Graphics g) {
    Color structureColor = Color.black;
    Structure structure = null;
    if (owner instanceof ReactionRule && !speciesShapes.isEmpty()) {
        ReactionRule rr = (ReactionRule) owner;
        ReactantPattern rp = rr.getReactantPattern(sp);
        ProductPattern pp = rr.getProductPattern(sp);
        if (rp != null) {
            structure = rp.getStructure();
        } else if (pp != null) {
            structure = pp.getStructure();
        } else {
            structure = ((ReactionRule) owner).getStructure();
        }
    } else if (owner instanceof SpeciesContext && ((SpeciesContext) owner).hasSpeciesPattern()) {
        structure = ((SpeciesContext) owner).getStructure();
        structureColor = Color.gray;
    } else if (owner instanceof RbmObservable && !speciesShapes.isEmpty()) {
        structure = ((RbmObservable) owner).getStructure();
    } else {
        // other things don't have structure
        return;
    }
    if (structure == null) {
        return;
    }
    // don't have a real structure, so we show them structureless (for now)
    if (structure.getName() == null) {
        return;
    }
    Graphics2D g2 = (Graphics2D) g;
    Color colorOld = g2.getColor();
    Paint paintOld = g2.getPaint();
    Font fontOld = g2.getFont();
    Font font;
    // width of compartment shape, adjusted continuously based on zoom factor
    int w;
    String name = structure.getName();
    int z = shapePanel.getZoomFactor();
    if (z > -3) {
        font = fontOld.deriveFont(Font.BOLD);
        g.setFont(font);
        w = 46 + 3 * z;
        name = buildCompartmentName(g, name, "..", w);
    } else if (z < LargeShapeCanvas.SmallestZoomFactorWithText) {
        font = fontOld.deriveFont(fontOld.getSize2D() * 0.8f);
        g.setFont(font);
        w = 20;
        name = buildCompartmentName(g, name, ".", w);
    } else {
        font = fontOld;
        g.setFont(font);
        w = 44 + 3 * z;
        name = buildCompartmentName(g, name, "..", w);
    }
    // a bit darker for border
    Color darker = Color.gray;
    Rectangle2D border = new Rectangle2D.Double(xPos - 9, yPos - 4, w, 58);
    g2.setColor(darker);
    g2.draw(border);
    Color lighter = new Color(224, 224, 224);
    Rectangle2D filling = new Rectangle2D.Double(xPos - 9, yPos - 3, w, 57);
    g2.setPaint(lighter);
    g2.fill(filling);
    g.setColor(structureColor);
    g2.drawString(name, xPos - 4, yPos + 48);
    g2.setFont(fontOld);
    g2.setPaint(paintOld);
    g2.setColor(colorOld);
}
Also used : ReactionRule(cbit.vcell.model.ReactionRule) ProductPattern(cbit.vcell.model.ProductPattern) Color(java.awt.Color) RbmObservable(cbit.vcell.model.RbmObservable) Rectangle2D(java.awt.geom.Rectangle2D) SpeciesContext(cbit.vcell.model.SpeciesContext) RadialGradientPaint(java.awt.RadialGradientPaint) Paint(java.awt.Paint) Font(java.awt.Font) RadialGradientPaint(java.awt.RadialGradientPaint) Paint(java.awt.Paint) Graphics2D(java.awt.Graphics2D) Structure(cbit.vcell.model.Structure) ReactantPattern(cbit.vcell.model.ReactantPattern)

Example 7 with RbmObservable

use of cbit.vcell.model.RbmObservable in project vcell by virtualcell.

the class IssueTableModel method getSourceObjectPathDescription.

private String getSourceObjectPathDescription(VCDocument vcDocument, Issue issue) {
    VCAssert.assertValid(issue);
    Object source = issue.getSource();
    {
        IssueOrigin io = BeanUtils.downcast(IssueOrigin.class, source);
        if (io != null) {
            return io.getDescription();
        }
    }
    if (vcDocument instanceof BioModel) {
        BioModel bioModel = (BioModel) vcDocument;
        String description = "";
        if (source instanceof SymbolTableEntry) {
            if (source instanceof SpeciesContext) {
                description = "Model / Species";
            } else if (source instanceof RbmObservable) {
                description = "Model / Observables";
            } else {
                description = ((SymbolTableEntry) source).getNameScope().getPathDescription();
            }
        } else if (source instanceof MolecularType) {
            description = "Model / Molecules";
        } else if (source instanceof ReactionStep) {
            ReactionStep reactionStep = (ReactionStep) source;
            description = ((ReactionNameScope) reactionStep.getNameScope()).getPathDescription();
        } else if (source instanceof ReactionRule) {
            ReactionRule reactionRule = (ReactionRule) source;
            description = ((ReactionRuleNameScope) reactionRule.getNameScope()).getPathDescription();
        } else if (source instanceof SpeciesPattern) {
            // if (issue.getIssueContext().hasContextType(ContextType.SpeciesContext)){
            // description = "Model / Species";
            // }else if(issue.getIssueContext().hasContextType(ContextType.ReactionRule)) {
            // ReactionRule thing = (ReactionRule)issue.getIssueContext().getContextObject(ContextType.ReactionRule);
            // description = ((ReactionRuleNameScope)thing.getNameScope()).getPathDescription();
            // }else if(issue.getIssueContext().hasContextType(ContextType.RbmObservable)) {
            // description = "Model / Observables";
            // } else {
            System.err.println("Bad issue context for " + ((SpeciesPattern) source).toString());
            description = ((SpeciesPattern) source).toString();
        // }
        } else if (source instanceof Structure) {
            Structure structure = (Structure) source;
            description = "Model / " + structure.getTypeName() + "(" + structure.getName() + ")";
        } else if (source instanceof StructureMapping) {
            StructureMapping structureMapping = (StructureMapping) source;
            description = ((StructureMappingNameScope) structureMapping.getNameScope()).getPathDescription();
        } else if (source instanceof OutputFunctionIssueSource) {
            SimulationContext simulationContext = (SimulationContext) ((OutputFunctionIssueSource) source).getOutputFunctionContext().getSimulationOwner();
            description = "App(" + simulationContext.getName() + ") / " + "Simulations" + " / " + "Output Functions";
        } else if (source instanceof Simulation) {
            Simulation simulation = (Simulation) source;
            try {
                SimulationContext simulationContext = bioModel.getSimulationContext(simulation);
                description = "App(" + simulationContext.getName() + ") / Simulations";
            } catch (ObjectNotFoundException e) {
                e.printStackTrace();
                description = "App(" + "unknown" + ") / Simulations";
            }
        } else if (source instanceof UnmappedGeometryClass) {
            UnmappedGeometryClass unmappedGC = (UnmappedGeometryClass) source;
            description = "App(" + unmappedGC.getSimulationContext().getName() + ") / Subdomain(" + unmappedGC.getGeometryClass().getName() + ")";
        } else if (source instanceof GeometryContext) {
            description = "App(" + ((GeometryContext) source).getSimulationContext().getName() + ")";
        } else if (source instanceof ModelOptimizationSpec) {
            description = "App(" + ((ModelOptimizationSpec) source).getSimulationContext().getName() + ") / Parameter Estimation";
        } else if (source instanceof MicroscopeMeasurement) {
            description = "App(" + ((MicroscopeMeasurement) source).getSimulationContext().getName() + ") / Microscope Measurements";
        } else if (source instanceof SpatialObject) {
            description = "App(" + ((SpatialObject) source).getSimulationContext().getName() + ") / Spatial Objects";
        } else if (source instanceof SpatialProcess) {
            description = "App(" + ((SpatialProcess) source).getSimulationContext().getName() + ") / Spatial Processes";
        } else if (source instanceof SpeciesContextSpec) {
            SpeciesContextSpec scs = (SpeciesContextSpec) source;
            description = "App(" + scs.getSimulationContext().getName() + ") / Specifications / Species";
        } else if (source instanceof ReactionCombo) {
            ReactionCombo rc = (ReactionCombo) source;
            description = "App(" + rc.getReactionContext().getSimulationContext().getName() + ") / Specifications / Reactions";
        } else if (source instanceof RbmModelContainer) {
            IssueCategory ic = issue.getCategory();
            switch(ic) {
                case RbmMolecularTypesTableBad:
                    description = "Model / " + MolecularType.typeName + "s";
                    break;
                case RbmReactionRulesTableBad:
                    description = "Model / Reactions";
                    break;
                case RbmObservablesTableBad:
                    description = "Model / Observables";
                    break;
                case RbmNetworkConstraintsBad:
                    description = "Network Constrains";
                    break;
                default:
                    description = "Model";
                    break;
            }
        } else if (source instanceof SimulationContext) {
            SimulationContext sc = (SimulationContext) source;
            IssueCategory ic = issue.getCategory();
            switch(ic) {
                case RbmNetworkConstraintsBad:
                    description = "Specifications / Network";
                    break;
                default:
                    description = "Application";
                    break;
            }
        } else if (source instanceof Model) {
            description = "Model";
        } else if (source instanceof BioEvent) {
            return "Protocols / Events";
        } else if (source instanceof MathDescription) {
            return "Math Description";
        } else {
            System.err.println("unknown source type in IssueTableModel.getSourceObjectPathDescription(): " + source.getClass());
        }
        return description;
    } else if (vcDocument instanceof MathModel) {
        if (source instanceof Geometry) {
            return GuiConstants.DOCUMENT_EDITOR_FOLDERNAME_MATH_GEOMETRY;
        } else if (source instanceof OutputFunctionIssueSource) {
            return GuiConstants.DOCUMENT_EDITOR_FOLDERNAME_MATH_OUTPUTFUNCTIONS;
        } else if (source instanceof Simulation) {
            return "Simulation(" + ((Simulation) source).getName() + ")";
        } else {
            return GuiConstants.DOCUMENT_EDITOR_FOLDERNAME_MATH_VCML;
        }
    } else {
        System.err.println("unknown document type in IssueTableModel.getSourceObjectPathDescription()");
        return "";
    }
}
Also used : MathModel(cbit.vcell.mathmodel.MathModel) IssueCategory(org.vcell.util.Issue.IssueCategory) MathDescription(cbit.vcell.math.MathDescription) IssueOrigin(org.vcell.util.Issue.IssueOrigin) SpeciesContext(cbit.vcell.model.SpeciesContext) SpeciesContextSpec(cbit.vcell.mapping.SpeciesContextSpec) StructureMapping(cbit.vcell.mapping.StructureMapping) SpeciesPattern(org.vcell.model.rbm.SpeciesPattern) SpatialObject(cbit.vcell.mapping.spatial.SpatialObject) SymbolTableEntry(cbit.vcell.parser.SymbolTableEntry) OutputFunctionIssueSource(cbit.vcell.solver.OutputFunctionContext.OutputFunctionIssueSource) RbmModelContainer(cbit.vcell.model.Model.RbmModelContainer) ModelOptimizationSpec(cbit.vcell.modelopt.ModelOptimizationSpec) SpatialProcess(cbit.vcell.mapping.spatial.processes.SpatialProcess) UnmappedGeometryClass(cbit.vcell.mapping.GeometryContext.UnmappedGeometryClass) MicroscopeMeasurement(cbit.vcell.mapping.MicroscopeMeasurement) GeometryContext(cbit.vcell.mapping.GeometryContext) ReactionRuleNameScope(cbit.vcell.model.ReactionRule.ReactionRuleNameScope) Structure(cbit.vcell.model.Structure) ReactionCombo(cbit.vcell.mapping.ReactionSpec.ReactionCombo) ReactionRule(cbit.vcell.model.ReactionRule) RbmObservable(cbit.vcell.model.RbmObservable) SimulationContext(cbit.vcell.mapping.SimulationContext) MolecularType(org.vcell.model.rbm.MolecularType) Geometry(cbit.vcell.geometry.Geometry) Simulation(cbit.vcell.solver.Simulation) BioModel(cbit.vcell.biomodel.BioModel) ReactionStep(cbit.vcell.model.ReactionStep) ObjectNotFoundException(org.vcell.util.ObjectNotFoundException) MathModel(cbit.vcell.mathmodel.MathModel) Model(cbit.vcell.model.Model) BioModel(cbit.vcell.biomodel.BioModel) SpatialObject(cbit.vcell.mapping.spatial.SpatialObject) BioEvent(cbit.vcell.mapping.BioEvent)

Example 8 with RbmObservable

use of cbit.vcell.model.RbmObservable in project vcell by virtualcell.

the class ObservablePropertiesPanel method onSelectedObjectsChange.

@Override
protected void onSelectedObjectsChange(Object[] selectedObjects) {
    RbmObservable observable = null;
    if (selectedObjects.length == 1 && selectedObjects[0] instanceof RbmObservable) {
        observable = (RbmObservable) selectedObjects[0];
    }
    setObservable(observable);
    updateSequence();
}
Also used : RbmObservable(cbit.vcell.model.RbmObservable)

Example 9 with RbmObservable

use of cbit.vcell.model.RbmObservable in project vcell by virtualcell.

the class ObservableTableModel method computeData.

@Override
protected List<RbmObservable> computeData() {
    if (getModel() == null) {
        return new ArrayList<RbmObservable>();
    }
    List<RbmObservable> oList;
    if (searchText == null || searchText.length() == 0) {
        oList = new ArrayList<RbmObservable>(getModel().getRbmModelContainer().getObservableList());
    } else {
        oList = new ArrayList<RbmObservable>();
        String lowerCaseSearchText = searchText.toLowerCase();
        for (RbmObservable o : getModel().getRbmModelContainer().getObservableList()) {
            String name = o.getName();
            String struct = o.getStructure().getName();
            String type = o.getType().name();
            if (name != null && name.toLowerCase().contains(lowerCaseSearchText)) {
                oList.add(o);
            } else if (struct != null && struct.toLowerCase().contains(lowerCaseSearchText)) {
                oList.add(o);
            } else if (type != null && type.toLowerCase().contains(lowerCaseSearchText)) {
                oList.add(o);
            } else {
                String expression = "";
                for (SpeciesPattern sp : o.getSpeciesPatternList()) {
                    expression += sp.toString() + " ";
                }
                if (expression.toLowerCase().contains(lowerCaseSearchText)) {
                    oList.add(o);
                }
            }
        }
    }
    return oList;
}
Also used : RbmObservable(cbit.vcell.model.RbmObservable) ArrayList(java.util.ArrayList) SpeciesPattern(org.vcell.model.rbm.SpeciesPattern)

Example 10 with RbmObservable

use of cbit.vcell.model.RbmObservable in project vcell by virtualcell.

the class ObservableTableModel method getComparator.

@Override
protected Comparator<RbmObservable> getComparator(final int columnIndex, final boolean ascending) {
    return new Comparator<RbmObservable>() {

        int scale = ascending ? 1 : -1;

        Column col = Column.values()[columnIndex];

        public int compare(RbmObservable o1, RbmObservable o2) {
            switch(col) {
                case name:
                    return scale * o1.getName().compareToIgnoreCase(o2.getName());
                case structure:
                    return scale * o1.getStructure().getName().compareToIgnoreCase(o2.getStructure().getName());
                case species_pattern:
                    return scale * RbmUtils.toBnglString(o1.getSpeciesPattern(0), null, CompartmentMode.hide, 0).compareToIgnoreCase(RbmUtils.toBnglString(o2.getSpeciesPattern(0), null, CompartmentMode.hide, 0));
                case type:
                    return scale * o1.getType().name().compareToIgnoreCase(o2.getType().name());
                case depiction:
                    // the sp list is always allocated even though it may be empty
                    Integer s1 = o1.getSpeciesPatternList().size();
                    Integer s2 = o2.getSpeciesPatternList().size();
                    if (s1 != s2) {
                        // different number of species patterns, sort by number of patterns
                        return scale * s1.compareTo(s2);
                    // this includes the case when one list is empty
                    }
                    if (s1 > 1 && s2 > 1) {
                        // same number of species patterns, more than one - we don't bother to sort
                        return 0;
                    // TODO: add functionality to sort by total number of molecules / sites
                    }
                    // one pattern each, sort by number of molecules, if that equal sort by total number of sites
                    if (s1 == 1 && s2 == 1) {
                        Integer i1 = o1.getSpeciesPattern(0).getMolecularTypePatterns().size();
                        Integer i2 = o2.getSpeciesPattern(0).getMolecularTypePatterns().size();
                        if (scale * i1.compareTo(i2) == 0) {
                            // if same number of molecule we try to sort by number of sites of the mt
                            i1 = 0;
                            i2 = 0;
                            for (MolecularTypePattern mtp : o1.getSpeciesPattern(0).getMolecularTypePatterns()) {
                                i1 += mtp.getMolecularType().getComponentList().size();
                            }
                            for (MolecularTypePattern mtp : o2.getSpeciesPattern(0).getMolecularTypePatterns()) {
                                i2 += mtp.getMolecularType().getComponentList().size();
                            }
                            return scale * i1.compareTo(i2);
                        } else {
                            return scale * i1.compareTo(i2);
                        }
                    }
                    return 0;
                default:
                    return 0;
            }
        }
    };
}
Also used : RbmObservable(cbit.vcell.model.RbmObservable) MolecularTypePattern(org.vcell.model.rbm.MolecularTypePattern) Comparator(java.util.Comparator)

Aggregations

RbmObservable (cbit.vcell.model.RbmObservable)50 SpeciesPattern (org.vcell.model.rbm.SpeciesPattern)22 ReactionRule (cbit.vcell.model.ReactionRule)20 SpeciesContext (cbit.vcell.model.SpeciesContext)18 Structure (cbit.vcell.model.Structure)16 ArrayList (java.util.ArrayList)15 MolecularType (org.vcell.model.rbm.MolecularType)14 MolecularTypePattern (org.vcell.model.rbm.MolecularTypePattern)10 ReactionStep (cbit.vcell.model.ReactionStep)9 PropertyVetoException (java.beans.PropertyVetoException)8 SimulationContext (cbit.vcell.mapping.SimulationContext)7 Model (cbit.vcell.model.Model)7 BioModel (cbit.vcell.biomodel.BioModel)6 ModelException (cbit.vcell.model.ModelException)6 RbmModelContainer (cbit.vcell.model.Model.RbmModelContainer)5 ProductPattern (cbit.vcell.model.ProductPattern)5 ReactantPattern (cbit.vcell.model.ReactantPattern)5 BioModelNode (cbit.vcell.desktop.BioModelNode)4 BioPaxObject (org.vcell.pathway.BioPaxObject)4 StructureToolShapeIcon (cbit.vcell.graph.gui.StructureToolShapeIcon)3