/// <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_copyConstructor() { UnitDefinition o1 = new UnitDefinition(2, 4); o1.setId("c"); assertTrue(o1.getId() == "c"); UnitDefinition o2 = new UnitDefinition(o1); assertTrue(o2.getId() == "c"); assertTrue(o2.getParentSBMLObject() == o1.getParentSBMLObject()); o2 = null; o1 = null; }
public void test_UnitDefinition_setId1() { int i = UD.setId("mmls"); assertTrue(i == libsbml.LIBSBML_OPERATION_SUCCESS); assertTrue(("mmls" == UD.getId())); assertEquals(true, UD.isSetId()); i = UD.setId(""); assertTrue(i == libsbml.LIBSBML_OPERATION_SUCCESS); assertEquals(false, UD.isSetId()); i = UD.setId("123"); assertTrue(i == libsbml.LIBSBML_INVALID_ATTRIBUTE_VALUE); assertEquals(false, UD.isSetId()); }
public void test_UnitDefinition_assignmentOperator() { UnitDefinition o1 = new UnitDefinition(2, 4); o1.setId("c"); assertTrue(o1.getId() == "c"); UnitDefinition o2 = new UnitDefinition(2, 4); o2 = o1; assertTrue(o2.getId() == "c"); assertTrue(o2.getParentSBMLObject() == o1.getParentSBMLObject()); o2 = null; o1 = 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_Model_getUnitDefinition() { UnitDefinition ud1 = new UnitDefinition(2, 4); UnitDefinition ud2 = new UnitDefinition(2, 4); ud1.setId("mmls"); ud2.setId("volume"); ud1.createUnit(); ud2.createUnit(); M.addUnitDefinition(ud1); M.addUnitDefinition(ud2); assertTrue(M.getNumUnitDefinitions() == 2); ud1 = M.getUnitDefinition(0); ud2 = M.getUnitDefinition(1); assertTrue(("mmls" == ud1.getId())); assertTrue(("volume" == ud2.getId())); }
public void test_UnitDefinition_create() { assertTrue(UD.getTypeCode() == libsbml.SBML_UNIT_DEFINITION); assertTrue(UD.getMetaId() == ""); assertTrue(UD.getNotes() == null); assertTrue(UD.getAnnotation() == null); assertTrue(UD.getId() == ""); assertTrue(UD.getName() == ""); assertEquals(false, UD.isSetId()); assertEquals(false, UD.isSetName()); assertTrue(UD.getNumUnits() == 0); }