Skip to content

Commit 25411be

Browse files
authored
Merge pull request #115 from SED-ML/create-dae-solver
Create new 'DAE Solver' category; put IDA-like things in it.
2 parents 8e6817c + ba189f1 commit 25411be

File tree

9 files changed

+196
-28
lines changed

9 files changed

+196
-28
lines changed

.github/workflows/BioPortal-submission.json

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
{
22
"ontology": "https://data.bioontology.org/ontologies/KISAO",
3-
"pullLocation": "https://raw.githubusercontent.com/SED-ML/KiSAO/2.32/kisao.owl",
3+
"pullLocation": "https://raw.githubusercontent.com/SED-ML/KiSAO/2.34/kisao.owl",
44
"hasOntologyLanguage": "OWL",
55
"description": "The Kinetic Simulation Algorithm Ontology (KiSAO) is an ontology of algorithms for simulating and analyzing biological models, as well as the characteristics of these algorithms, their input parameters, and their outputs. In addition, KiSAO captures relationships among algorithms, their parameters, and their outputs.",
6-
"version": "2.32",
6+
"version": "2.34",
77
"released": "2023-05-24T02:54:00-00:00",
88
"status": "production",
99
"homepage": "http://biomodels.net/kisao/",

CHANGELOG.md

+8
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,13 @@
11
# Changelog
22

3+
## 2.34 (OWL 2)
4+
- Added organizational 'DAE solver' (`KISAO_0000699`) for collecting solvers that can solve DAE problems.
5+
- Removed 'has characteristic' some 'differential-algebraic equation problem' from KINSOL and from 'method for solving a system of linear equations'.
6+
- The characteristics 'differential-algebraic equation problem' and ''ordinary differential equation problem' are no longer disjoint (and in fact the former are a complete subset of the latter).
7+
8+
## 2.33 (OWL 2)
9+
- Reorganized the steady state algorithms: moved flux balance and steady state to 'general steady state method' (`KISAO_0000630`), and others to the 'steady state root-finding method' (`KISAO_0000407`)
10+
311
## 2.32 (OWL 2)
412
- Added algorithm concepts for eQuilibrator.
513
- Added organizational 'ODE solver' (`KISAO_0000694`) for noting in SED-ML that some solver should be used, but which is not important.

kisao.owl

+137-21
Large diffs are not rendered by default.

kisao_full.owl

+1-1
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
<rdfs:comment xml:lang="en">Kinetic Simulation Algorithm Ontology (full version, containing deprecated classes)</rdfs:comment>
2020
<rdfs:seeAlso rdf:datatype="http://www.w3.org/2001/XMLSchema#anyURI">http://co.mbine.org/standards/kisao</rdfs:seeAlso>
2121
<rdfs:seeAlso rdf:datatype="http://www.w3.org/2001/XMLSchema#anyURI">http://identifiers.org/pubmed/22027554</rdfs:seeAlso>
22-
<owl:versionInfo rdf:datatype="http://www.w3.org/2001/XMLSchema#decimal">2.33</owl:versionInfo>
22+
<owl:versionInfo rdf:datatype="http://www.w3.org/2001/XMLSchema#decimal">2.34</owl:versionInfo>
2323
<skos:definition xml:lang="en">The Kinetic Simulation Algorithm Ontology (KiSAO) classifies algorithms available for the simulation and analysis of models in biology, and their characteristics and the parameters required for their use.</skos:definition>
2424
</owl:Ontology>
2525

libkisao/python/kisao/_version.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
__version__ = '2.33'
1+
__version__ = '2.34'

libkisao/python/kisao/data_model.py

+3-2
Original file line numberDiff line numberDiff line change
@@ -35,10 +35,11 @@
3535

3636
ID_HAS_CHARACTERISTIC_RELATIONSHIP = 'KISAO_0000245' # has characteristic
3737

38-
ID_ODE_PROBLEM_CHARACTERISTIC = 'KISAO_0000374' # ordinary differential equation problem
3938
ID_SDE_PROBLEM_CHARACTERISTIC = 'KISAO_0000371' # stochastic differential equation problem
40-
ID_STEADYSTATE_PROBLEM_CHARACTERISTIC = 'KISAO_0000696' # steady state root-finding problem
4139
ID_PDE_PROBLEM_CHARACTERISTIC = 'KISAO_0000372' # partial differential equation problem
40+
ID_DAE_PROBLEM_CHARACTERISTIC = 'KISAO_0000373' # differential algebraic equation problem
41+
ID_ODE_PROBLEM_CHARACTERISTIC = 'KISAO_0000374' # ordinary differential equation problem
42+
ID_STEADYSTATE_PROBLEM_CHARACTERISTIC = 'KISAO_0000696' # steady state root-finding problem
4243
ID_EXACT_SOLUTION_CHARACTERISTIC = 'KISAO_0000236' # exact solution
4344
ID_APPROXIMATE_SOLUTION_CHARACTERISTIC = 'KISAO_0000237' # approximate solution
4445

libkisao/python/kisao/utils.py

+14
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
ID_SDE_PROBLEM_CHARACTERISTIC,
1414
ID_STEADYSTATE_PROBLEM_CHARACTERISTIC,
1515
ID_PDE_PROBLEM_CHARACTERISTIC,
16+
ID_DAE_PROBLEM_CHARACTERISTIC,
1617
ID_EXACT_SOLUTION_CHARACTERISTIC,
1718
ID_APPROXIMATE_SOLUTION_CHARACTERISTIC,
1819
ID_ALGORITHM,
@@ -45,6 +46,7 @@
4546
'get_rule_based_algorithms',
4647
'get_sde_algorithms',
4748
'get_pde_algorithms',
49+
'get_dae_algorithms',
4850
'get_flux_balance_algorithms',
4951
'get_logical_simulation_algorithms',
5052
'get_logical_stable_state_search_algorithms',
@@ -140,6 +142,18 @@ def get_ode_algorithms():
140142
return get_terms_with_characteristics([ID_ALGORITHM], [ID_ODE_PROBLEM_CHARACTERISTIC])
141143

142144

145+
@ functools.lru_cache(maxsize=None)
146+
def get_dae_algorithms():
147+
""" Get the terms for DAE integration algorithms::
148+
149+
'modelling simulation algorithm' and 'has characteristic' some 'differential algebraic equation problem'
150+
151+
Returns:
152+
:obj:`set` of :obj:`pronto.Term`: terms
153+
"""
154+
return get_terms_with_characteristics([ID_ALGORITHM], [ID_DAE_PROBLEM_CHARACTERISTIC])
155+
156+
143157
@ functools.lru_cache(maxsize=None)
144158
def get_gillespie_like_algorithms(exact=True, approximate=False):
145159
""" Get the terms for algorithms that execute similar simulations to Gillespie's

libkisao/python/tests/test_utils.py

+20-1
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,8 @@ def test_ode_algorithms(self):
7373
self.assertIn(kisao.get_term('KISAO_0000086'), terms) # Fehlberg method
7474
self.assertIn(kisao.get_term('KISAO_0000088'), terms) # LSODA
7575
self.assertIn(kisao.get_term('KISAO_0000560'), terms) # LSODA/LSODAR hybrid method
76+
self.assertIn(kisao.get_term('KISAO_0000355'), terms) # DASPK
77+
self.assertIn(kisao.get_term('KISAO_0000283'), terms) # IDA
7678

7779
self.assertNotIn(kisao.get_term('KISAO_0000499'), terms) # DFBA
7880

@@ -145,14 +147,31 @@ def test_sde_algorithms(self):
145147
self.assertEqual(sdes.intersection(odes), set())
146148
self.assertEqual(sdes.intersection(pdes), set())
147149

150+
def test_dae_algorithms(self):
151+
kisao = Kisao()
152+
daes = utils.get_dae_algorithms()
153+
odes = utils.get_ode_algorithms()
154+
155+
self.assertNotIn(kisao.get_term('KISAO_0000019'), daes) # CVODE
156+
self.assertNotIn(kisao.get_term('KISAO_0000030'), daes) # Euler forward
157+
self.assertIn(kisao.get_term('KISAO_0000355'), daes) # DASPK
158+
self.assertIn(kisao.get_term('KISAO_0000283'), daes) # IDA
159+
160+
self.assertNotIn(kisao.get_term('KISAO_0000499'), daes) # DFBA
161+
162+
self.assertEqual(daes.intersection(odes), daes) # subset of ODE algorithms
163+
self.assertEqual(daes.intersection(utils.get_gillespie_like_algorithms(
164+
exact=True, approximate=False)), set()) # disjoint from Gillespie-like terms
165+
self.assertEqual(daes.intersection(utils.get_gillespie_like_algorithms(
166+
exact=False, approximate=True)), set()) # disjoint from Gillespie-like terms
167+
148168
def test_steadystate_algorithms(self):
149169
kisao = Kisao()
150170
terms = utils.get_steadystate_algorithms()
151171

152172
self.assertIn(kisao.get_term('KISAO_0000407'), terms) # steady state root-finding algorithm
153173
self.assertIn(kisao.get_term('KISAO_0000568'), terms) # NLEQ1
154174
self.assertIn(kisao.get_term('KISAO_0000569'), terms) # NLEQ2
155-
self.assertIn(kisao.get_term('KISAO_0000355'), terms) # DASPK
156175
self.assertIn(kisao.get_term('KISAO_0000413'), terms) # Exact Newton Method
157176

158177
self.assertNotIn(kisao.get_term('KISAO_0000499'), terms) # DFBA

updating.md

+10
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
# What needs to be updated when making a new release
2+
3+
Put new version into:
4+
* libkisao/python/kisao/_version.py
5+
* kisao.owl (i.e. <owl:versionInfo rdf:datatype="http://www.w3.org/2001/XMLSchema#decimal">2.34</owl:versionInfo>)
6+
* kisao_full.owl (i.e. <owl:versionInfo rdf:datatype="http://www.w3.org/2001/XMLSchema#decimal">2.34</owl:versionInfo>)
7+
* .github/workflows/BioPortal-submission.json
8+
9+
Summarize changes in:
10+
* CHANGELOG.md

0 commit comments

Comments
 (0)