Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Parsing improvements - merge improve-parsing into master #114

Merged
merged 116 commits into from
May 9, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
116 commits
Select commit Hold shift + click to select a range
7985a8b
Added tests for insert_atomic_to_complex case
xtrojak May 17, 2023
26fcd65
Created requirements.txt file
xtrojak May 19, 2023
474c1c3
Parametrise tests, add case when left atomic is unspecified
xtrojak May 19, 2023
cc010b4
Merge pull request #77 from xtrojak/create-pip-requirements
xtrojak May 19, 2023
dae301f
More insert_atomic_to_complex cases
xtrojak May 19, 2023
7bf7b91
Added tests for insert_struct_to_complex
xtrojak May 19, 2023
5de64c6
Add tests for insert_atomic_to_struct
xtrojak May 19, 2023
5754e4b
Merge pull request #74 from xtrojak/72-write-tests
xtrojak May 23, 2023
734311f
parsing tests refactoring
Jun 1, 2023
449a42e
extracting parsing tests
Jun 2, 2023
cbc7706
parsing tests relocated
Jun 2, 2023
733b2f9
unnecessary parsing models deleted
Jun 2, 2023
78e74d9
Merge pull request #78 from mopichalova/75-separate-test-folders
xtrojak Jun 2, 2023
02b3b76
parsing test - atomic
Nov 7, 2023
95d02e8
parsing test - struct
Nov 7, 2023
9a4e652
parsing test - complex
Nov 7, 2023
e5d1dba
add parsing test objects
Nov 7, 2023
1379c20
parsing - test side
Nov 14, 2023
c08082f
parsing - test objects
Nov 14, 2023
57f052a
test parsing - rate
Nov 14, 2023
5ae0821
parsing rate - negative cases added
Dec 5, 2023
f15ec68
parsing rate - negative cases added
Dec 5, 2023
ddcd7a9
parsing atomic - negative cases added
Dec 5, 2023
123f495
parsing complex - negative cases added
Dec 5, 2023
18ecb17
parsing - negative cases added
Dec 7, 2023
a982d4d
Add build section to .readthedocs.yaml configuration
xtrojak Dec 7, 2023
e0aa3f5
Update .readthedocs.yaml
xtrojak Dec 7, 2023
4925c47
Update test_rate.py
mopichalova Dec 11, 2023
7819243
Merge pull request #85 from mopichalova/79-core-tests
xtrojak Dec 17, 2023
2c54060
testing objects reorganization
Jan 3, 2024
68d7883
refactor parsing tests and update object references
Jan 3, 2024
e3b11de
object creation clean up
Jan 4, 2024
d164b25
move txt models to dedicated files
Jan 4, 2024
8af17f2
rate test correction
Jan 8, 2024
7944c7e
test_vector_model objects creation cleanup
Jan 8, 2024
773bc49
object testing remove duplicities
Jan 8, 2024
32cbbcd
Merge pull request #90 from mopichalova/80-testing-objects
xtrojak Jan 9, 2024
490c4a2
fix insert parsing logic
Jan 24, 2024
ee35442
comments and docstrings added
Jan 29, 2024
734fdfb
Merge pull request #91 from mopichalova/72-improve-insert-handling
xtrojak Jan 30, 2024
e1fb066
enable direct usage of complexes
Jan 31, 2024
c6ddf6a
newline enforcement and ban
Feb 7, 2024
1c7c442
sections order is arbitrary
Feb 8, 2024
f260725
newlines removed after loading lines from file
Feb 8, 2024
03bb890
regulations ending
Feb 8, 2024
1f9bf7e
arbitrary order of sections - permutations loaded from txt file
Feb 12, 2024
cb5e670
arbitrary order of sections enabled
Feb 12, 2024
04c3ab5
remove txt file loading
Feb 12, 2024
dcd488a
zooming inserting
Feb 13, 2024
7432dd5
test cases for complexes in abstract sequence
Feb 13, 2024
c2b9589
Merge branch 'improve-parsing' into 89-complexes-in-abstr-seq
mopichalova Feb 19, 2024
b622050
test rule object correction
Feb 21, 2024
1bce72e
test correction - wrong parser for comparing complex objects
Feb 21, 2024
8546c4e
refactor model processing to aggregate section's data instead of over…
Feb 22, 2024
c96a4ae
correction - allow only one regulation
Feb 22, 2024
1ba38d2
multiple regulation defintions handeled with exception
Feb 26, 2024
b446b2a
error import correction
Feb 26, 2024
a3eca18
remove duplicity in TreeToObjects model
Feb 26, 2024
230b374
Merge pull request #94 from mopichalova/93-improve-grammar-syntax
xtrojak Feb 26, 2024
3e7b944
Merge branch 'improve-parsing' into 89-complexes-in-abstr-seq
xtrojak Feb 26, 2024
ef609a7
fix incorrect parsed object comparison in TransformAbstractSyntax
Feb 26, 2024
52f30b5
Merge pull request #92 from mopichalova/89-complexes-in-abstr-seq
xtrojak Feb 26, 2024
a954518
tests for bidirectional rules
Feb 27, 2024
2649431
bidirectional rules enabled
Feb 27, 2024
f648027
bidirectional rules extended
Feb 27, 2024
ee00206
bidirectional rules with two rates allowed
Feb 27, 2024
a9cc4b9
disallow one rate for bidirectional rules
Mar 4, 2024
b365368
check if regular label is valid regex and labels in regulation exist
Mar 5, 2024
cdb010a
check all possible permutations of the labels in the regex
Mar 6, 2024
2e41d82
new error class for regulation errors
Mar 6, 2024
e8c8823
update test data to reflect syntax change from ':' to '::'
Mar 11, 2024
528e6a4
switch parser to from lalr to earley and update grammar for original …
Mar 11, 2024
dffaea0
refactor rate assignment logic for clarity
Mar 11, 2024
8f6600a
Merge pull request #96 from mopichalova/30-bidirectional-rules
xtrojak Mar 11, 2024
ab5c655
refactor check_labels in Programmed for clarity and correct subset logic
Mar 11, 2024
80e3b1f
moved raising RegulationParsingError to individual check_labels metho…
Mar 11, 2024
76c63b2
delimiter for regular regulation introduced
Mar 11, 2024
128b096
Merge branch 'improve-parsing' into 98-zooming-syntax
mopichalova Mar 11, 2024
152831a
merged define rule correction
Mar 12, 2024
82a5ebc
rate tests extended
Mar 12, 2024
46183bf
allow nested fractions
Mar 12, 2024
fde9ea9
Update Testing/parsing/test_rate.py
xtrojak Mar 13, 2024
3dbeeb4
Update Testing/parsing/test_rate.py
xtrojak Mar 13, 2024
0caa5e5
Merge pull request #99 from mopichalova/98-zooming-syntax
xtrojak Mar 14, 2024
4450e42
regex pattern to subpattern correction
Mar 15, 2024
ddd26fe
regex grammar extended
Mar 15, 2024
bb8edf5
Merge branch 'improve-parsing' into 88-regex-labels
mopichalova Mar 15, 2024
0b3ccae
Merge pull request #100 from mopichalova/87-robust-rate-expr
xtrojak Mar 17, 2024
3ca20b3
remove tree_to_string duplicity by moving tree_to_string to utils.py
Mar 18, 2024
567edc2
Merge branch '88-regex-labels' of github.com:makikeo/eBCSgen into 88-…
Mar 18, 2024
2e3b301
Merge pull request #97 from mopichalova/88-regex-labels
xtrojak Mar 20, 2024
dc0c94c
implement only unique name atomics in struct
Mar 20, 2024
be91482
test correction - non-unique atomics
Mar 21, 2024
e4760a9
raise ComplexParsingError when the alias is not defined
Mar 21, 2024
49b36b0
test extended - (non)unique atomics in struct
Mar 21, 2024
b6e1566
Merge pull request #104 from mopichalova/103-undefined-complex-alias
xtrojak Mar 26, 2024
902a02b
Merge pull request #105 from mopichalova/102-unique-atomic-agents
xtrojak Mar 26, 2024
cb83606
replication rule tests
Apr 15, 2024
690d8b0
replication rules added
Apr 15, 2024
d85f339
tests for observables
Apr 16, 2024
8722fcc
observable grammar added
Apr 16, 2024
8b509d0
observable tests extended
Apr 16, 2024
11aebbb
observables extended and scaling implemented
Apr 23, 2024
23e1f27
rule arrows simplified
Apr 23, 2024
796b970
test replication rule objects
Apr 23, 2024
6da78d9
scaling complexes with compartments corrected
Apr 23, 2024
fde3ff9
observables - remove modifiers, quantifiers and stoichiometry
Apr 24, 2024
b5a809c
Merge pull request #107 from mopichalova/106-replication-rules
xtrojak Apr 24, 2024
19117fd
Merge pull request #109 from mopichalova/108-observables
xtrojak Apr 26, 2024
dd27e2b
Update deps
xtrojak Apr 29, 2024
b466f22
Update python-package-conda.yml
xtrojak Apr 29, 2024
7f46456
Update python-package-conda.yml
xtrojak Apr 29, 2024
4b242da
Update python-package-conda.yml
xtrojak Apr 29, 2024
f87c1ce
Merge pull request #111 from sybila/fix-ci
xtrojak Apr 29, 2024
ebddf56
pin libsbml version
xtrojak Apr 29, 2024
20de063
Merge pull request #113 from sybila/fix-tests
xtrojak Apr 29, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 6 additions & 5 deletions .github/workflows/python-package-conda.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,19 +12,20 @@ jobs:
max-parallel: 5

steps:
- uses: actions/checkout@v2
- name: Set up Python 3.8
uses: actions/setup-python@v2
- uses: actions/checkout@v4
- name: Set up Python 3.11
uses: actions/setup-python@v5
with:
python-version: 3.8
python-version: 3.11
- name: Add conda to system path
run: |
# $CONDA is an environment variable pointing to the root of the miniconda directory
echo $CONDA/bin >> $GITHUB_PATH
- name: Install dependencies
run: |
conda install -y python=3.11
conda env update --file conda/environment.yml --name base
- name: Test with pytest
run: |
conda install pytest pytest-cov
pytest --cov --cov-report term --cov-report xml --junitxml=xunit-result.xml --ignore='Testing/test_formal_methods.py'
pytest --cov --cov-report term --cov-report xml --junitxml=xunit-result.xml --ignore='Testing/test_formal_methods.py' --ignore='Testing/parsing/test_remote_parsing.py'
7 changes: 6 additions & 1 deletion .readthedocs.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,17 @@
# Required
version: 2

# Set the version of Python and other tools you might need
build:
os: ubuntu-22.04
tools:
python: "3.8"

# Build documentation in the docs/ directory with Sphinx
sphinx:
builder: html
configuration: docs/source/conf.py

python:
version: "3.8"
install:
- requirements: docs/requirements.txt
15 changes: 15 additions & 0 deletions Testing/models/get_model_str.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
import os

def get_model_str(model_name: str) -> str:
if not os.path.splitext(model_name)[1]:
model_name += ".txt"
script_dir = os.path.dirname(os.path.abspath(__file__))
file_path = os.path.join(script_dir, model_name)

try:
with open(file_path, "r") as file:
model_str = file.read()
return model_str
except FileNotFoundError:
print(f"File {file_path} not found")
return None
12 changes: 12 additions & 0 deletions Testing/models/model1.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
#! rules
X()::rep => @ k1*[X()::rep]
Z()::rep => X()::rep
=> Y()::rep @ 1/(1+([X()::rep])**4)

#! inits
2 X()::rep
Y()::rep

#! definitions
k1 = 0.05
k2 = 0.12
12 changes: 12 additions & 0 deletions Testing/models/model2.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
#! rules
X(K{i})::rep => X(K{p})::rep @ k1*[X()::rep]
X(T{a})::rep => X(T{o})::rep @ k2*[Z()::rep]
=> Y(P{f})::rep @ 1/(1+([X()::rep])**4)

#! inits
2 X(K{c}, T{e}).X(K{c}, T{j})::rep
Y(P{g}, N{l})::rep

#! definitions
k1 = 0.05
k2 = 0.12
12 changes: 12 additions & 0 deletions Testing/models/model3.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
#! rules
Y{i}::rep => Y{a}::rep @ p*[Y{i}::rep]
Y{i}::rep => Y{-}::rep @ (1-p)*[Y{i}::rep]
X()::rep + Y{a}::rep => X().Y{a}::rep @ q*[X()::rep]*[Y{a}::rep]
X(K{i}).Y{_}::rep => X(K{p}).Y{_}::rep @ p*[X(K{i}).Y{_}::rep] // also here

#! inits
2 X(K{i})::rep
1 Y{i}::rep

#! definitions
p = 0.3
11 changes: 11 additions & 0 deletions Testing/models/model4.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
#! rules
X()::rep => @ k1*[X()::rep]
Z()::rep => X()::rep @ k2
=> Y()::rep @ 1/(1+([X()::rep])**4)

#! inits
2 X()::rep
Y()::rep

#! definitions
k2 = 5
12 changes: 12 additions & 0 deletions Testing/models/model5.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
#! rules
// commenting
X(K{i})::rep => X(K{p})::rep @ k1*[X()::rep] // also here
X(T{a})::rep => X(T{o})::rep @ k2*[Z()::rep]
=> Y(P{f})::rep @ 1/(1+([X()::rep])**4) // ** means power (^)

#! inits
2 X(K{c}, T{e})::rep
Y(P{g}, N{l})::rep

#! definitions
k2 = 0.05 // also comment
12 changes: 12 additions & 0 deletions Testing/models/model6.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
#! rules
X()::rep => @ k1*[X()::rep]
Z()::rep => X()::rep @ k2
=> Y()::rep @ 1/(1+([X()::rep])**4)

#! inits
2 X()::rep
Y()::rep

#! definitions
k2 = 5
k1 = 2
13 changes: 13 additions & 0 deletions Testing/models/model7.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
#! rules
// commenting
X(K{i})::rep => X(K{p})::rep @ k1*[X()::rep] // also here
X(T{a})::rep => X(T{o})::rep @ k2*[Z()::rep]
=> Y(P{f})::rep @ 1/(1+([X()::rep])**4) // ** means power (^)

#! inits
2 X(K{c}, T{e}).X(K{c}, T{j})::rep
Y(P{g}, N{l})::rep

#! definitions
k2 = 0.05 // also comment
k1 = 2
15 changes: 15 additions & 0 deletions Testing/models/model_TS.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
#! rules
=> K(S{u},T{i})::cyt @ omega
K(S{u})::cyt => K(S{p})::cyt @ alpha*[K(S{u})::cyt]
K(S{p})::cyt + B{a}::cyt => K(S{p}).B{a}::cyt @ beta*[K(S{p})::cyt]*[B{a}::cyt]
B{_}::cyt => @ gamma*[B{_}::cyt]
K(S{u},T{i}).B{a}::cyt => @ 5

#! inits
1 B{a}::cyt

#! definitions
alpha = 10
beta = 5
gamma = 2
omega = 3
10 changes: 10 additions & 0 deletions Testing/models/model_abstract.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
#! rules
=> X()::rep @ k2*[T{_}::rep]
T{a}::rep => T{i}::rep @ k1*[T{_}::rep]

#! inits
10 T{a}::rep

#! definitions
k1 = 0.05
k2 = 0.12
15 changes: 15 additions & 0 deletions Testing/models/model_bigger_TS.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
#! rules
=> 2 K(S{u},T{i})::cyt @ omega
K(S{u})::cyt => K(S{p})::cyt @ alpha*[K(S{u})::cyt]
K(S{p})::cyt + B{a}::cyt => K(S{p}).B{a}::cyt @ beta*[K(S{p})::cyt]*[B{a}::cyt]
B{_}::cyt => @ gamma*[B{_}::cyt]
K(S{u},T{i}).B{a}::cyt => @ 5

#! inits
6 B{a}::cyt

#! definitions
alpha = 10
beta = 5
gamma = 2
omega = 3
5 changes: 5 additions & 0 deletions Testing/models/model_cmplx_in_abstr_seq1.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
#! rules
S{i}::A()::A2::cell => A()::cell

#! complexes
A2 = A().A()
2 changes: 2 additions & 0 deletions Testing/models/model_cmplx_in_abstr_seq2.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
#! rules
S{i}::A()::A().A()::cell => A()::cell
15 changes: 15 additions & 0 deletions Testing/models/model_even_bigger_TS.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
#! rules
=> K(S{u},T{i})::cyt @ omega
K(S{u})::cyt => K(S{p})::cyt @ alpha*[K(S{u})::cyt]
K(S{p})::cyt + B{a}::cyt => K(S{p}).B{a}::cyt @ beta*[K(S{p})::cyt]*[B{a}::cyt]
B{_}::cyt => @ gamma*[B{_}::cyt]
K(S{u},T{i}).B{a}::cyt => @ 5

#! inits
10 B{a}::cyt

#! definitions
alpha = 10
beta = 5
gamma = 2
omega = 3
9 changes: 9 additions & 0 deletions Testing/models/model_for_bound.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
#! rules
=> A{i}::cyt @ k
=> C{i}::cyt @ k

#! inits
2 B{i}::cyt

#! definitions
k = 1
16 changes: 16 additions & 0 deletions Testing/models/model_for_matching.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
#! rules
K(S{i}).B()::cyt + C{_}::cell => K(S{i})::cyt + B()::cyt + C{_}::cell @ 3*[K(S{i}).B()::cyt]/2*v_1
A{p}.K(S{i})::cyt => A{i}::cyt + K(S{a})::cyt + C{a}::cyt @ 0.3*[A{p}.K(S{i})::cyt]
K(S{i},T{i})::cyt + C{_}::cell => K(S{a},T{i})::cyt @ k2*[K(S{i},T{i})::cyt]
C{_}::cell + C{_}::cell => C{_}.C{_}::cell @ v_1*[C{_}::cell]**2
C{_}::cell + K()::cell => C{_}.K()::cell @ v_1*[C{_}::cell]**2

#! inits
2 K(S{i},T{i}).B(T{a})::cyt
1 A{p}.K(S{i},T{i})::cyt
2 C{i}::cell
1 C{a}::cell

#! definitions
v_1 = 0.05
k2 = 0.12
28 changes: 28 additions & 0 deletions Testing/models/model_miyoshi.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
#! rules
S{u}::KaiC()::KaiC6::cyt => S{p}::KaiC()::KaiC6::cyt @ (kcat1*[KaiA2()::cyt]*[KaiC6::cyt])/(Km + [KaiC6::cyt])
S{p}::KaiC()::KaiC6::cyt => S{u}::KaiC()::KaiC6::cyt @ (kcat2*[KaiB4{a}.KaiA2()::cyt]*[KaiC6::cyt])/(Km + [KaiC6::cyt])
T{u}::KaiC()::KaiC6::cyt => T{p}::KaiC()::KaiC6::cyt @ (kcat3*[KaiA2()::cyt]*[KaiC6::cyt])/(Km + [KaiC6::cyt])
T{p}::KaiC()::KaiC6::cyt => T{u}::KaiC()::KaiC6::cyt @ (kcat4*[KaiB4{a}.KaiA2()::cyt]*[KaiC6::cyt])/(Km + [KaiC6::cyt])
KaiB4{i}::cyt => KaiB4{a}::cyt @ (kcatb2*[KaiB4{i}::cyt])/(Kmb2 + [KaiB4{i}::cyt])
KaiB4{a}::cyt => KaiB4{i}::cyt @ (kcatb1*[KaiB4{a}::cyt])/(Kmb1 + [KaiB4{a}::cyt])
KaiB4{a}.KaiA2()::cyt => KaiB4{a}::cyt + KaiA2()::cyt @ k12*[KaiB4{a}.KaiA2()::cyt]
KaiC6::cyt => 6 KaiC()::cyt @ kdimer*[KaiC6::cyt]
6 KaiC()::cyt => KaiC6::cyt @ kdimer*[KaiC()::cyt]*([KaiC()::cyt] - 1)*([KaiC()::cyt] - 2)*([KaiC()::cyt] - 3)*([KaiC()::cyt] - 4)*([KaiC()::cyt] - 5)

#! inits
6 KaiC(S{p},T{p})::cyt
1 KaiB4{a}.KaiA2()::cyt

#! definitions
kcat1 = 0.539
kcat3 = 0.89
Km = 0.602
kcatb2 = 0.346
kcatb1 = 0.602
Kmb2 = 66.75
Kmb1 = 2.423
k12 = 0.0008756
kdimer = 1.77

#! complexes
KaiC6 = KaiC().KaiC().KaiC().KaiC().KaiC().KaiC()
33 changes: 33 additions & 0 deletions Testing/models/model_miyoshi_non_param.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
#! rules
S{u}:KaiC():KaiC6::cyt => S{p}:KaiC():KaiC6::cyt @ (kcat1*[KaiA2()::cyt]*[KaiC6::cyt])/(Km + [KaiC6::cyt])
S{p}:KaiC():KaiC6::cyt => S{u}:KaiC():KaiC6::cyt @ (kcat2*[KaiB4{a}.KaiA2()::cyt]*[KaiC6::cyt])/(Km + [KaiC6::cyt])
T{u}:KaiC():KaiC6::cyt => T{p}:KaiC():KaiC6::cyt @ (kcat3*[KaiA2()::cyt]*[KaiC6::cyt])/(Km + [KaiC6::cyt])
T{p}:KaiC():KaiC6::cyt => T{u}:KaiC():KaiC6::cyt @ (kcat4*[KaiB4{a}.KaiA2()::cyt]*[KaiC6::cyt])/(Km + [KaiC6::cyt])
KaiB4{i}::cyt => KaiB4{a}::cyt @ (kcatb2*[KaiB4{i}::cyt])/(Kmb2 + [KaiB4{i}::cyt])
KaiB4{a}::cyt => KaiB4{i}::cyt @ (kcatb1*[KaiB4{a}::cyt])/(Kmb1 + [KaiB4{a}::cyt])
KaiB4{a}.KaiA2()::cyt => KaiB4{a}::cyt + KaiA2()::cyt @ k12*[KaiB4{a}.KaiA2()::cyt]
KaiC6::cyt => 6 KaiC()::cyt @ kdimer*[KaiC6::cyt]
6 KaiC()::cyt => KaiC6::cyt @ kdimer*[KaiC()::cyt]
KaiC().KaiC()::cyt => KaiC()::cyt + KaiC()::cyt @ kcat1

#! inits
6 KaiC(S{p},T{p})::cyt
1 KaiB4{a}.KaiA2()::cyt
1 KaiC(S{u},T{p})::cyt
1 KaiC(S{u},T{p}).KaiC(S{p},T{p})::cyt

#! definitions
kcat2 = 0.539
kcat4 = 0.89
kcat1 = 0.539
kcat3 = 0.89
Km = 0.602
kcatb2 = 0.346
kcatb1 = 0.602
Kmb2 = 66.75
Kmb1 = 2.423
k12 = 0.0008756
kdimer = 1.77

#! complexes
KaiC6 = KaiC().KaiC().KaiC().KaiC().KaiC().KaiC()
11 changes: 11 additions & 0 deletions Testing/models/model_nonreachable.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
#! rules
K(S{i}).B()::cyt => K(S{a})::cyt + B()::cyt @ 3*[K(S{i}).B()::cyt]/2*v_1
K(S{a})::cyt + A{i}::cyt => K(S{a}).A{i}::cyt

#! inits
2 K(S{i}).B()::cyt
1 A{i}::cyt

#! definitions
v_1 = 0.05
k2 = 0.12
12 changes: 12 additions & 0 deletions Testing/models/model_parametrised.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
#! rules
// commenting
X(K{i})::rep => X(K{p})::rep @ k1*[X()::rep] // also here
X(T{a})::rep => X(T{o})::rep @ k2*[Z()::rep]
=> Y(P{f})::rep @ 1/(v_3+([X()::rep])**4) // ** means power (^)

#! inits
2 X(K{c}, T{e}).X(K{c}, T{j})::rep
Y(P{g}, N{l})::rep // comment just 1 item

#! definitions
k1 = 0.05
15 changes: 15 additions & 0 deletions Testing/models/model_parametrised2.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
#! rules
=> K(S{u},T{i})::cyt @ omega
K(S{u})::cyt => K(S{p})::cyt @ alpha*[K(S{u})::cyt]
K(S{p})::cyt + B{a}::cyt => K(S{p}).B{a}::cyt @ beta*[K(S{p})::cyt]*[B{a}::cyt]
B{_}::cyt => @ gamma*[B{_}::cyt]
K(S{u},T{i}).B{a}::cyt => @ 5

#! inits
1 B{a}::cyt

#! definitions
alpha = 10
beta = 5
//gamma = 2
omega = 3
12 changes: 12 additions & 0 deletions Testing/models/model_reachable.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
#! rules
K(S{i}).B()::cyt => K(S{a})::cyt + B()::cyt @ 3*[K(S{i}).B()::cyt]/2*v_1
K(S{a})::cyt + A{i}::cyt => K(S{a}).A{i}::cyt
K().A{i}::cyt => K().A{a}::cyt

#! inits
2 K(S{i}).B()::cyt
1 A{i}::cyt

#! definitions
v_1 = 0.05
k2 = 0.12
15 changes: 15 additions & 0 deletions Testing/models/model_with_comments.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
#! rules
// commenting
X(K{i})::rep => X(K{p})::rep @ k1*[X()::rep] // also here
X(T{a})::rep => X(T{o})::rep @ k2*[Z()::rep]
=> Y(P{f})::rep @ 1/(1+([X()::rep])**4) // ** means power (^)

#! inits
// here
2 X(K{c}, T{e}).X(K{c}, T{j})::rep
Y(P{g}, N{l})::rep // comment just 1 item

#! definitions
// and
k1 = 0.05 // also
k2 = 0.12
Loading