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)
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)
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)
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')
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])