Exemplo n.º 1
0
    def test_documentation(self):
        # Tests parsing a <documentation> tag from the cellml temp doc ns

        path = os.path.join(DIR, 'documentation.cellml')
        expected = '\n'.join([
            'Article title',
            '',
            'Michael',
            'Clerx',
            '',
            'University of Oxford',
            '',
            'Model Status',
            'This model is fake.',
            '',
            'This is a paragraph.',
            '',
            'schematic diagram',
            '',
            'A schematic diagram describing the model.',
            '',
            'Here\'s some extra documentation.',
        ])
        m = v1.parse_file(path)
        self.assertEqual(m.meta['documentation'], expected)
Exemplo n.º 2
0
 def parse_in_file(self, xml):
     """
     Inserts the given ``xml`` into a <model> element, writes it to a
     temporary file, parses it, and returns the result.
     """
     with TemporaryDirectory() as d:
         path = d.path('test.cellml')
         with open(path, 'w') as f:
             f.write(self.wrap(xml))
         return v1.parse_file(path)
Exemplo n.º 3
0
    def test_write_file(self):
        # Tests write_file

        m1 = cellml.Model('ernie')
        with TemporaryDirectory() as d:
            path = d.path('test.cellml')
            cellml.write_file(path, m1)
            m2 = cellml.parse_file(path)

        self.assertEqual(m2.name(), 'ernie')
        self.assertEqual(len(m2), 0)
Exemplo n.º 4
0
    def test_cmeta_ids(self):
        # Test cmeta ids are parsed

        # Test parsing cmeta id
        path = os.path.join(DIR, 'br-1977.cellml')
        model = v1.parse_file(path)
        self.assertEqual(model.cmeta_id(), 'beeler_reuter_1977')

        # Invalid cmeta id
        self.assertBad('<component cmeta:id="" name="c" />',
                       'non-empty string')

        # Duplicate cmeta id
        self.assertBad(
            '<component cmeta:id="x" name="c" />'
            '<component cmeta:id="x" name="d" />', 'Duplicate cmeta:id')
Exemplo n.º 5
0
    def test_evaluated_derivatives(self):
        # Test parsing a simple model; compare RHS derivatives to known ones

        # Load myokit model
        org_model = myokit.load_model('example')
        org_states = [x.qname() for x in org_model.states()]
        org_values = org_model.evaluate_derivatives()

        # Load exported version
        path = os.path.join(DIR, 'lr-1991-exported-1.cellml')
        cm = v1.parse_file(path)
        new_model = cm.myokit_model()
        new_states = [x.qname() for x in new_model.states()]
        new_values = new_model.evaluate_derivatives()

        # Compare each state (loop unrolled for easier debugging)
        org_i = 0
        new_i = new_states.index(org_states[org_i])
        self.assertEqual(org_values[org_i], new_values[new_i])

        org_i = 1
        new_i = new_states.index(org_states[org_i])
        self.assertEqual(org_values[org_i], new_values[new_i])

        org_i = 2
        new_i = new_states.index(org_states[org_i])
        self.assertEqual(org_values[org_i], new_values[new_i])

        org_i = 3
        new_i = new_states.index(org_states[org_i])
        self.assertEqual(org_values[org_i], new_values[new_i])

        org_i = 4
        new_i = new_states.index(org_states[org_i])
        self.assertEqual(org_values[org_i], new_values[new_i])

        org_i = 5
        new_i = new_states.index(org_states[org_i])
        self.assertEqual(org_values[org_i], new_values[new_i])

        org_i = 6
        new_i = new_states.index(org_states[org_i])
        self.assertEqual(org_values[org_i], new_values[new_i])

        org_i = 7
        new_i = new_states.index(org_states[org_i])
        self.assertEqual(org_values[org_i], new_values[new_i])