Esempio n. 1
0
    def test_remove_all_equivalences(self):
        from libcellml import Variable

        # void removeAllEquivalences()
        v1 = Variable()
        v2 = Variable()
        v3 = Variable()
        Variable.addEquivalence(v1, v2)
        Variable.addEquivalence(v1, v3)
        v2.removeAllEquivalences()
        self.assertFalse(Variable.removeEquivalence(v1, v2))
        self.assertTrue(Variable.removeEquivalence(v1, v3))
Esempio n. 2
0
    def test_equivalence(self):
        from libcellml import Variable
        from libcellml.variable import Variable_addEquivalence, Variable_removeEquivalence

        v1 = Variable()
        v2 = Variable()

        self.assertFalse(v1.hasEquivalentVariable(v2))

        Variable.addEquivalence(v1, v2)
        self.assertTrue(v1.hasEquivalentVariable(v2))

        Variable.removeEquivalence(v1, v2)
        self.assertFalse(v1.hasEquivalentVariable(v2))

        Variable_addEquivalence(v1, v2)
        self.assertTrue(v1.hasEquivalentVariable(v2))

        Variable_removeEquivalence(v1, v2)
        self.assertFalse(v1.hasEquivalentVariable(v2))
Esempio n. 3
0
    def test_remove_equivalence(self):
        from libcellml import Variable

        # static bool removeEquivalence(const VariablePtr &variable1,
        #   const VariablePtr &variable2)
        v1 = Variable()
        v2 = Variable()
        v3 = Variable()
        self.assertFalse(Variable.removeEquivalence(v1, v2))
        Variable.addEquivalence(v1, v2)
        self.assertFalse(Variable.removeEquivalence(v1, v3))
        self.assertFalse(Variable.removeEquivalence(v3, v2))
        self.assertTrue(Variable.removeEquivalence(v1, v2))
        self.assertFalse(Variable.removeEquivalence(v1, v2))
        Variable.addEquivalence(v1, v2)
        self.assertTrue(Variable.removeEquivalence(v2, v1))
    #      - illegal connections between equivalent variables, as now the environment
    #        component and the sodiumChannel component are no longer siblings.
    validator.validateModel(model)
    print_errors_to_terminal(validator)

    #  2.d Add all of the units from the sodium channel model which are not already
    #        present into the combined model.
    for u in range(0, sodium_channel_model.unitsCount()):
        unitName = sodium_channel_model.units(u).name()
        if not model.hasUnits(unitName):
            print("Adding units called {}".format(unitName))
            model.addUnits(sodium_channel_model.units(u))

    #  2.e Disconnect the sodiumChannel from its old environment component
    Variable.removeEquivalence(
        sodium_channel.variable("t"),
        sodium_channel_model.component("environment").variable("t"))
    Variable.removeEquivalence(
        sodium_channel.variable("V"),
        sodium_channel_model.component("environment").variable("V"))

    #  2.f Validate that there are no more errors in the combined model
    validator.validateModel(model)
    print_errors_to_terminal(validator)

    print("\n-----------------------------------------------")
    print("       STEP 3: Read the potassium channel")
    print("-----------------------------------------------")

    print("Opening the CellML file: 'tutorial5_PotassiumChannelModel.cellml'")
    read_file3 = open("../resources/tutorial5_PotassiumChannelModel.cellml", "r")