Beispiel #1
0
        /// <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;
        }
Beispiel #2
0
        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;
        }
Beispiel #3
0
        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());
        }
Beispiel #4
0
        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;
        }
Beispiel #6
0
        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;
        }
Beispiel #7
0
        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);
 }