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);
}
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 "";
}
}
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();
}
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;
}
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;
}
}
};
}
Aggregations