|
6 | 6 | [](https://codecov.io/gh/JuliaDynamics/ProcessBasedModelling.jl)
|
7 | 7 | [](https://pkgs.genieframework.com?packages=ProcessBasedModelling)
|
8 | 8 |
|
9 |
| -ProcessBasedModelling.jl is an extension to [ModelingToolkit.jl](https://docs.sciml.ai/ModelingToolkit/stable/) (MTK). |
10 |
| -It is an alternative framework to MTK's |
11 |
| -native component-based modelling, but, instead of components, there are "processes". |
12 |
| -This modelling approach is useful in the modelling of physical/biological/whatever systems, where each variable corresponds to particular physical concept or observable and there are few (or any) duplicate variables to make the definition of MTK "factories" worthwhile. |
13 |
| -In many modelling scenarios this follows the line of reasoning in the researcher's head. |
| 9 | +ProcessBasedModelling.jl is an extension to [ModelingToolkit.jl](https://docs.sciml.ai/ModelingToolkit/stable/) (MTK) for building a model of equations using symbolic expressions. |
| 10 | +It is an alternative framework to MTK's [native component-based modelling](https://docs.sciml.ai/ModelingToolkit/stable/tutorials/acausal_components/), but, instead of components, there are "processes". |
| 11 | +This approach is useful in the modelling of physical/biological/whatever systems, where each variable corresponds to particular physical concept or observable and there are few (or any) duplicate variables to make the definition of MTK "factories" worthwhile, while, there plenty of different physical representations, or _processes_ to represent the given physical concept. |
| 12 | +In many fields this approach parallels modelling reasoning line of the researcher more closely than the "components" approach. |
14 | 13 |
|
15 |
| -Beyond this reasoning style, the biggest strength of ProcessBasedModelling.jl is the informative errors it provides regarding incorrect/incomplete equations. When building the MTK model via ProcessBasedModelling.jl the user provides a vector of "processes": equations or custom types that have a well defined and single left-hand-side variable. |
16 |
| -This allows ProcessBasedModelling.jl to achieve the following: |
| 14 | +Beyond this reasoning style, the biggest strength of ProcessBasedModelling.jl is the **informative errors and automation** it provides regarding incorrect/incomplete equations. When building the MTK model via ProcessBasedModelling.jl the user provides a vector of "processes": equations or custom types that have a well defined and single left-hand-side variable. |
| 15 | +This allows ProcessBasedModelling.jl to: |
17 | 16 |
|
18 |
| -1. Iterates over the processes and collects _new_ variables that have been introduced by a provided process but do not themselves have a process assigned to them. |
| 17 | +1. Iterate over the processes and collect _new_ variables that have been introduced by a provided process but do not themselves have a process assigned to them. |
19 | 18 | 2. For these collected "process-less" variables:
|
20 |
| - - If there is a default process defined, it incorporates this one into the model |
21 |
| - - If there is no default process but the variable has a default value, it equates the variable to a _parameter_ that has the same default value and throws an informative warning. |
22 |
| - - Else, it throws an informative error saying exactly which originally provided variable introduced this new "process-less" variable. |
23 |
| -3. Also throws an informative error if a variable has two processes assigned to it (by mistake). |
| 19 | + - If there is a default process defined, incorporate this one into the model |
| 20 | + - If there is no default process but the variable has a default value, equate the variable to a _parameter_ that has the same default value and throw an informative warning. |
| 21 | + - Else, throw an informative error saying exactly which originally provided variable introduced this new "process-less" variable. |
| 22 | +3. Throw an informative error if a variable has two processes assigned to it (by mistake). |
24 | 23 |
|
25 |
| -In our experience, and as we also highlight explicitly in the online documentation, this approach typically yields simpler, less ambiguous and more targeted warning/error messages than the native MTK one's, leading to faster identification and resolution of the problems with the composed equations. |
| 24 | +In our experience, and as we also highlight explicitly in the online documentation, this approach typically yields simpler, less ambiguous and more targeted warning or error messages than the native MTK one's, leading to faster identification and resolution of the problems with the composed equations. |
26 | 25 |
|
27 | 26 | ProcessBasedModelling.jl is particularly suited for developing a model about a physical/biological/whatever system and being able to try various physical "rules" (couplings, feedbacks, mechanisms, ...) for a given physical observable efficiently.
|
28 | 27 | This means switching arbitrarily between different processes that correspond to the same variable.
|
|
0 commit comments