Exemplo n.º 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);
        }
Exemplo n.º 2
0
        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;
        }
Exemplo n.º 3
0
        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;
        }
Exemplo n.º 6
0
        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;
        }
Exemplo n.º 7
0
        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;
        }
Exemplo n.º 10
0
        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;
        }
Exemplo n.º 11
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;
        }
Exemplo n.º 12
0
        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;
        }
Exemplo n.º 13
0
        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;
        }