/// <summary> /// Converts a SBML UnitDefinition into a MoBi Unit. /// </summary> public IDimension ConvertUnit(UnitDefinition unitDefinition) { var sbmlUnit = unitDefinition.getId(); var dimension = _moBiDimensionFactory.TryGetDimensionCaseInsensitive(sbmlUnit); if (dimension != Constants.Dimension.NO_DIMENSION) { _sbmlInformation.MobiDimension[sbmlUnit] = dimension; return(dimension); } var newFactor = 1.0; var unitsList = new List <Unit>(); var brList = new List <BaseDimensionRepresentation>(); for (long i = 0; i < unitDefinition.getNumUnits(); i++) { var mobiUnit = SBMLBaseUnitToMoBi(unitDefinition.getUnit(i)); if (mobiUnit == null) { continue; } var unitDimension = _moBiDimensionFactory.DimensionForUnit(mobiUnit.Name); var unitBr = unitDimension.BaseRepresentation; unitBr = SetExponents(unitDefinition, unitBr, i); brList.Add(unitBr); if (Math.Abs(newFactor) < 0.0001) { newFactor = unitDefinition.getUnit(i).getMultiplier() * Math.Pow(10, unitDefinition.getUnit(i).getScale()) * Math.Pow(mobiUnit.Factor, unitDefinition.getUnit(i).getExponent()); } else { newFactor = newFactor * unitDefinition.getUnit(i).getMultiplier() * Math.Pow(10, unitDefinition.getUnit(i).getScale()) * Math.Pow(mobiUnit.Factor, unitDefinition.getUnit(i).getExponent()); } unitsList.Add(mobiUnit); } var baseDimensionRepresentation = CreateBaseDimRepresentationExponents(brList); IDimension newDim = new Dimension(baseDimensionRepresentation, String.Format("SBML_{0}", unitDefinition.getId()), String.Format("SBML_{0}_BaseUnit", unitDefinition.getId())); var newBaseUnit = newDim.BaseUnit; newBaseUnit.Visible = false; var newUnit = new Unit(unitDefinition.getId(), newFactor, 0); newDim.AddUnit(newUnit); newDim.DefaultUnit = newUnit; _sbmlInformation.MobiDimension[sbmlUnit] = newDim; if (_moBiDimensionFactory.Dimensions.All(dim => dim.Name != newDim.Name)) { _moBiDimensionFactory.AddDimension(newDim); } return(newDim); }
public void test_UnitDefinition_createUnit() { UnitDefinition m = new UnitDefinition(2, 2); Unit p = m.createUnit(); assertTrue(m.getNumUnits() == 1); assertTrue((p).getLevel() == 2); assertTrue((p).getVersion() == 2); m = null; }
public void test_UnitDefinition_addUnit4() { UnitDefinition m = new UnitDefinition(2, 2); Unit p = null; int i = m.addUnit(p); assertTrue(i == libsbml.LIBSBML_OPERATION_FAILED); assertTrue(m.getNumUnits() == 0); m = null; }
public void test_Model_createUnit() { Model m = new Model(2, 2); UnitDefinition p = m.createUnitDefinition(); Unit u = m.createUnit(); assertTrue(p.getNumUnits() == 1); assertTrue((u).getLevel() == 2); assertTrue((u).getVersion() == 2); m = null; }
public void test_Unit_parent_create() { UnitDefinition ud = new UnitDefinition(2, 4); Unit u = ud.createUnit(); assertTrue(ud.getNumUnits() == 1); ListOf lo = ud.getListOfUnits(); assertTrue(lo == ud.getUnit(0).getParentSBMLObject()); assertTrue(lo == u.getParentSBMLObject()); assertTrue(ud == lo.getParentSBMLObject()); ud = null; }
public void test_UnitDefinition_addUnit3() { UnitDefinition m = new UnitDefinition(2, 2); Unit p = new Unit(1, 2); p.setKind(libsbml.UNIT_KIND_MOLE); int i = m.addUnit(p); assertTrue(i == libsbml.LIBSBML_LEVEL_MISMATCH); assertTrue(m.getNumUnits() == 0); p = null; m = null; }
public void test_UnitDefinition_addUnit1() { UnitDefinition m = new UnitDefinition(2, 2); Unit p = new Unit(2, 2); int i = m.addUnit(p); assertTrue(i == libsbml.LIBSBML_INVALID_OBJECT); p.setKind(libsbml.UNIT_KIND_MOLE); i = m.addUnit(p); assertTrue(i == libsbml.LIBSBML_OPERATION_SUCCESS); assertTrue(m.getNumUnits() == 1); p = null; m = null; }
public void test_UnitDefinition_addUnit() { Unit u = new Unit(2, 4); u.setKind(libsbml.UNIT_KIND_MOLE); UD.addUnit(u); assertTrue(UD.getNumUnits() == 1); u = null; }
public void test_Unit_parent_add() { UnitDefinition ud = new UnitDefinition(2, 4); Unit u = new Unit(2, 4); u.setKind(libsbml.UNIT_KIND_MOLE); ud.addUnit(u); u = null; assertTrue(ud.getNumUnits() == 1); ListOf lo = ud.getListOfUnits(); assertTrue(lo == ud.getUnit(0).getParentSBMLObject()); assertTrue(ud == lo.getParentSBMLObject()); ud = null; }
public void test_UnitDefinition_createWithName() { UnitDefinition ud = new UnitDefinition(2, 4); ud.setName("mmol_per_liter_per_sec"); assertTrue(ud.getTypeCode() == libsbml.SBML_UNIT_DEFINITION); assertTrue(ud.getMetaId() == ""); assertTrue(ud.getNotes() == null); assertTrue(ud.getAnnotation() == null); assertTrue(ud.getId() == ""); assertTrue(("mmol_per_liter_per_sec" == ud.getName())); assertEquals(true, ud.isSetName()); assertTrue(ud.getNumUnits() == 0); ud = null; }
public void test_SBMLConvert_convertToL3_defaultUnits() { SBMLDocument d = new SBMLDocument(1, 2); Model m = d.createModel(); string sid = "C"; Compartment c = m.createCompartment(); c.setId(sid); c.setSize(1.2); c.setUnits("volume"); assertTrue(m.getNumUnitDefinitions() == 0); assertTrue(d.setLevelAndVersion(3, 1, true) == true); assertTrue(m.getNumUnitDefinitions() == 2); UnitDefinition ud = m.getUnitDefinition(0); assertTrue(ud != null); assertTrue(("volume" == ud.getId())); assertTrue(ud.getNumUnits() == 1); Unit u = ud.getUnit(0); assertTrue(u.getKind() == libsbml.UNIT_KIND_LITRE); assertTrue(u.getExponent() == 1); assertTrue(u.getMultiplier() == 1); assertTrue(u.getScale() == 0); ud = m.getUnitDefinition(1); assertTrue(ud != null); assertTrue(("area" == ud.getId())); assertTrue(ud.getNumUnits() == 1); u = ud.getUnit(0); assertTrue(u.getKind() == libsbml.UNIT_KIND_METRE); assertTrue(u.getExponent() == 2); assertTrue(u.getMultiplier() == 1); assertTrue(u.getScale() == 0); assertTrue(("second" == m.getTimeUnits())); d = null; }
public void test_Unit_ancestor_add() { UnitDefinition ud = new UnitDefinition(2, 4); Unit u = new Unit(2, 4); u.setKind(libsbml.UNIT_KIND_MOLE); ud.addUnit(u); u = null; assertTrue(ud.getNumUnits() == 1); ListOf lo = ud.getListOfUnits(); Unit obj = ud.getUnit(0); assertTrue(obj.getAncestorOfType(libsbml.SBML_UNIT_DEFINITION) == ud); assertTrue(obj.getAncestorOfType(libsbml.SBML_LIST_OF) == lo); assertTrue(obj.getAncestorOfType(libsbml.SBML_DOCUMENT) == null); assertTrue(obj.getAncestorOfType(libsbml.SBML_COMPARTMENT) == null); ud = null; }
public void test_Unit_ancestor_create() { UnitDefinition ud = new UnitDefinition(2, 4); Unit u = ud.createUnit(); assertTrue(ud.getNumUnits() == 1); ListOf lo = ud.getListOfUnits(); assertTrue(u.getAncestorOfType(libsbml.SBML_UNIT_DEFINITION) == ud); assertTrue(u.getAncestorOfType(libsbml.SBML_LIST_OF) == lo); assertTrue(u.getAncestorOfType(libsbml.SBML_DOCUMENT) == null); assertTrue(u.getAncestorOfType(libsbml.SBML_COMPARTMENT) == null); Unit obj = ud.getUnit(0); assertTrue(obj.getAncestorOfType(libsbml.SBML_UNIT_DEFINITION) == ud); assertTrue(obj.getAncestorOfType(libsbml.SBML_LIST_OF) == lo); assertTrue(obj.getAncestorOfType(libsbml.SBML_DOCUMENT) == null); assertTrue(obj.getAncestorOfType(libsbml.SBML_COMPARTMENT) == null); ud = null; }