hetalang / heta-compiler Goto Github PK
View Code? Open in Web Editor NEWSoftware tool for the compilation of Heta-based QSP modeling platform
Home Page: https://hetalang.github.io/#/heta-compiler/
License: Apache License 2.0
Software tool for the compilation of Heta-based QSP modeling platform
Home Page: https://hetalang.github.io/#/heta-compiler/
License: Apache License 2.0
Colleagues and I at the Dutch National Institute for Public Health and the Environment are working on developing a workflow to automatically convert ODE-models developed in various software environments (e.g. Mrgsolve) to the SBML format. We came across your heta package and were very interested since it already supports the conversion in the opposite direction, from SBML to various software environment. Thus, we were wondering if there are any future plans to extend the heta compiler to also support the conversion from the various software environments, in particular Mrgsolve, to SBML. If not, do you have maybe have any suggestions of existing packages that support the conversion from Mrgsolve to SBML?
Best,
Jordi
Hello!
I am following instructions from this page. I created this file:
comp1 @Compartment;
s1 @Species { compartment: comp1 };
r1 @Reaction { actors: s1 => };
comp1 .= 1;
s1 .= 10;
r1 := k1*s1*comp1;
k1 @Const = 1e-2;
#export {
format: 'SBML',
filepath: model
};
And I named it index.heta
. After command heta build
I got this:
No declaration file, running with defaults...
[info] Builder initialized in directory "/home/alyferryhalo/Documents/code/2021/heta_tests".
[info] Compilation of module "index.heta" of type "heta"...
[info] Reading module of type "heta" from file "/home/alyferryhalo/Documents/code/2021/heta_tests/index.heta"...
[error] Unknown format "'SBML'" in #export action.
[info] Setting references in elements, total length 41
[info] Checking for circular references in Records.
[warn] Units checking and export were skipped because of errors in compilation.
Compilation ERROR! See logs.
Moreover, there is no .log file in my directory.
I use this:
What is the problem?
I took the model at https://github.com/hetalang/qsp-benchmark/tree/master/jak2stat5/src, compiled it and tried to run it with mrgsolve
. Unfortunately, I get an error.
I was able to run the simple example model from readme via mrgsolve, so it presumably isn't just an installation issue.
The error I get is:
> nameless_model <- mrgsolve::mread(model = 'nameless', file = 'model.cpp')
Building nameless ... error.
---:: stderr ::---------------------------------------------
In file included from nameless-mread-source.cpp:3:
nameless-mread-header.h:25:10: error: expected unqualified-id before 'default'
double default;
^~~~~~~
7:1: error: case label not within a switch statement
default = 1.0;
^~~~~~~
7:8: error: expected ':' before '=' token
default = 1.0;
^~
:
7:9: error: expected primary-expression before '=' token
default = 1.0;
^
14:37: error: expected primary-expression before 'default'
EpoRJAK2_amt__0 = (init_EpoRJAK2) * default;
^~~~~~~
15:24: error: expected primary-expression before 'default'
SOCS3_amt__0 = (0.0) * default;
^~~~~~~
16:28: error: expected primary-expression before 'default'
EpoRpJAK2_amt__0 = (0.0) * default;
^~~~~~~
17:26: error: expected primary-expression before 'default'
SHP1Act_amt__0 = (0.0) * default;
^~~~~~~
18:31: error: expected primary-expression before 'default'
EpoRJAK2_CIS_amt__0 = (0.0) * default;
^~~~~~~
19:30: error: expected primary-expression before 'default'
p1EpoRpJAK2_amt__0 = (0.0) * default;
^~~~~~~
20:30: error: expected primary-expression before 'default'
p2EpoRpJAK2_amt__0 = (0.0) * default;
^~~~~~~
21:31: error: expected primary-expression before 'default'
p12EpoRpJAK2_amt__0 = (0.0) * default;
^~~~~~~
22:29: error: expected primary-expression before 'default'
SHP1_amt__0 = (init_SHP1) * default;
^~~~~~~
24:22: error: expected primary-expression before 'default'
CIS_amt__0 = (0.0) * default;
^~~~~~~
In file included from nameless-mread-source.cpp:3:
nameless-mread-header.h:89:35: error: expected primary-expression before 'default'
#define EpoRJAK2 (EpoRJAK2_amt_ / default)
^~~~~~~
44:13: note: in expansion of macro 'EpoRJAK2'
v1 = (Epo * EpoRJAK2 * JAK2ActEpo) / (SOCS3 * (SOCS3Inh / SOCS3Eqc) + 1.0);
^~~~~~~~
nameless-mread-header.h:89:35: error: expected ')' before 'default'
#define EpoRJAK2 (EpoRJAK2_amt_ / default)
~ ^~~~~~~
44:13: note: in expansion of macro 'EpoRJAK2'
v1 = (Epo * EpoRJAK2 * JAK2ActEpo) / (SOCS3 * (SOCS3Inh / SOCS3Eqc) + 1.0);
^~~~~~~~
44:75: error: expected ')' before ';' token
v1 = (Epo * EpoRJAK2 * JAK2ActEpo) / (SOCS3 * (SOCS3Inh / SOCS3Eqc) + 1.0);
~ ^
)
In file included from nameless-mread-source.cpp:3:
nameless-mread-header.h:90:37: error: expected primary-expression before 'default'
#define EpoRpJAK2 (EpoRpJAK2_amt_ / default)
^~~~~~~
45:6: note: in expansion of macro 'EpoRpJAK2'
v2 = EpoRpJAK2 * (JAK2EpoRDeaSHP1 / init_SHP1) * SHP1Act;
^~~~~~~~~
nameless-mread-header.h:90:37: error: expected ')' before 'default'
#define EpoRpJAK2 (EpoRpJAK2_amt_ / default)
~ ^~~~~~~
45:6: note: in expansion of macro 'EpoRpJAK2'
v2 = EpoRpJAK2 * (JAK2EpoRDeaSHP1 / init_SHP1) * SHP1Act;
^~~~~~~~~
nameless-mread-header.h:90:37: error: expected primary-expression before 'default'
#define EpoRpJAK2 (EpoRpJAK2_amt_ / default)
^~~~~~~
46:7: note: in expansion of macro 'EpoRpJAK2'
v3 = (EpoRpJAK2 * EpoRActJAK2) / (SOCS3 * (SOCS3Inh / SOCS3Eqc) + 1.0);
^~~~~~~~~
nameless-mread-header.h:90:37: error: expected ')' before 'default'
#define EpoRpJAK2 (EpoRpJAK2_amt_ / default)
~ ^~~~~~~
46:7: note: in expansion of macro 'EpoRpJAK2'
v3 = (EpoRpJAK2 * EpoRActJAK2) / (SOCS3 * (SOCS3Inh / SOCS3Eqc) + 1.0);
^~~~~~~~~
46:71: error: expected ')' before ';' token
v3 = (EpoRpJAK2 * EpoRActJAK2) / (SOCS3 * (SOCS3Inh / SOCS3Eqc) + 1.0);
~ ^
)
In file included from nameless-mread-source.cpp:3:
nameless-mread-header.h:90:37: error: expected primary-expression before 'default'
#define EpoRpJAK2 (EpoRpJAK2_amt_ / default)
^~~~~~~
47:13: note: in expansion of macro 'EpoRpJAK2'
v4 = (3.0 * EpoRpJAK2 * EpoRActJAK2) / ((EpoRCISInh * EpoRJAK2_CIS + 1.0) * (SOCS3 * (SOCS3Inh / SOCS3Eqc) + 1.0));
^~~~~~~~~
nameless-mread-header.h:90:37: error: expected ')' before 'default'
#define EpoRpJAK2 (EpoRpJAK2_amt_ / default)
~ ^~~~~~~
47:13: note: in expansion of macro 'EpoRpJAK2'
v4 = (3.0 * EpoRpJAK2 * EpoRActJAK2) / ((EpoRCISInh * EpoRJAK2_CIS + 1.0) * (SOCS3 * (SOCS3Inh / SOCS3Eqc) + 1.0));
^~~~~~~~~
47:115: error: expected ')' before ';' token
v4 = (3.0 * EpoRpJAK2 * EpoRActJAK2) / ((EpoRCISInh * EpoRJAK2_CIS + 1.0) * (SOCS3 * (SOCS3Inh / SOCS3Eqc) + 1.0));
~ ^
)
In file included from nameless-mread-source.cpp:3:
nameless-mread-header.h:91:41: error: expected primary-expression before 'default'
#define p1EpoRpJAK2 (p1EpoRpJAK2_amt_ / default)
^~~~~~~
48:27: note: in expansion of macro 'p1EpoRpJAK2'
v5 = (3.0 * EpoRActJAK2 * p1EpoRpJAK2) / ((EpoRCISInh * EpoRJAK2_CIS + 1.0) * (SOCS3 * (SOCS3Inh / SOCS3Eqc) + 1.0));
^~~~~~~~~~~
nameless-mread-header.h:91:41: error: expected ')' before 'default'
#define p1EpoRpJAK2 (p1EpoRpJAK2_amt_ / default)
~ ^~~~~~~
48:27: note: in expansion of macro 'p1EpoRpJAK2'
v5 = (3.0 * EpoRActJAK2 * p1EpoRpJAK2) / ((EpoRCISInh * EpoRJAK2_CIS + 1.0) * (SOCS3 * (SOCS3Inh / SOCS3Eqc) + 1.0));
^~~~~~~~~~~
48:117: error: expected ')' before ';' token
v5 = (3.0 * EpoRActJAK2 * p1EpoRpJAK2) / ((EpoRCISInh * EpoRJAK2_CIS + 1.0) * (SOCS3 * (SOCS3Inh / SOCS3Eqc) + 1.0));
~ ^
)
In file included from nameless-mread-source.cpp:3:
nameless-mread-header.h:92:41: error: expected primary-expression before 'default'
#define p2EpoRpJAK2 (p2EpoRpJAK2_amt_ / default)
^~~~~~~
49:21: note: in expansion of macro 'p2EpoRpJAK2'
v6 = (EpoRActJAK2 * p2EpoRpJAK2) / (SOCS3 * (SOCS3Inh / SOCS3Eqc) + 1.0);
^~~~~~~~~~~
nameless-mread-header.h:92:41: error: expected ')' before 'default'
#define p2EpoRpJAK2 (p2EpoRpJAK2_amt_ / default)
~ ^~~~~~~
49:21: note: in expansion of macro 'p2EpoRpJAK2'
v6 = (EpoRActJAK2 * p2EpoRpJAK2) / (SOCS3 * (SOCS3Inh / SOCS3Eqc) + 1.0);
^~~~~~~~~~~
49:73: error: expected ')' before ';' token
v6 = (EpoRActJAK2 * p2EpoRpJAK2) / (SOCS3 * (SOCS3Inh / SOCS3Eqc) + 1.0);
~ ^
)
In file included from nameless-mread-source.cpp:3:
nameless-mread-header.h:96:33: error: expected primary-expression before 'default'
#define SHP1Act (SHP1Act_amt_ / default)
^~~~~~~
50:38: note: in expansion of macro 'SHP1Act'
v7 = (JAK2EpoRDeaSHP1 / init_SHP1) * SHP1Act * p1EpoRpJAK2;
^~~~~~~
nameless-mread-header.h:96:33: error: expected ')' before 'default'
#define SHP1Act (SHP1Act_amt_ / default)
~ ^~~~~~~
50:38: note: in expansion of macro 'SHP1Act'
v7 = (JAK2EpoRDeaSHP1 / init_SHP1) * SHP1Act * p1EpoRpJAK2;
^~~~~~~
nameless-mread-header.h:96:33: error: expected primary-expression before 'default'
#define SHP1Act (SHP1Act_amt_ / default)
^~~~~~~
51:38: note: in expansion of macro 'SHP1Act'
v8 = (JAK2EpoRDeaSHP1 / init_SHP1) * SHP1Act * p2EpoRpJAK2;
^~~~~~~
nameless-mread-header.h:96:33: error: expected ')' before 'default'
#define SHP1Act (SHP1Act_amt_ / default)
~ ^~~~~~~
51:38: note: in expansion of macro 'SHP1Act'
v8 = (JAK2EpoRDeaSHP1 / init_SHP1) * SHP1Act * p2EpoRpJAK2;
^~~~~~~
nameless-mread-header.h:96:33: error: expected primary-expression before 'default'
#define SHP1Act (SHP1Act_amt_ / default)
^~~~~~~
52:38: note: in expansion of macro 'SHP1Act'
v9 = (JAK2EpoRDeaSHP1 / init_SHP1) * SHP1Act * p12EpoRpJAK2;
^~~~~~~
nameless-mread-header.h:96:33: error: expected ')' before 'default'
#define SHP1Act (SHP1Act_amt_ / default)
~ ^~~~~~~
52:38: note: in expansion of macro 'SHP1Act'
v9 = (JAK2EpoRDeaSHP1 / init_SHP1) * SHP1Act * p12EpoRpJAK2;
^~~~~~~
nameless-mread-header.h:94:43: error: expected primary-expression before 'default'
#define EpoRJAK2_CIS (EpoRJAK2_CIS_amt_ / default)
^~~~~~~
53:7: note: in expansion of macro 'EpoRJAK2_CIS'
v10 = EpoRJAK2_CIS * (EpoRCISRemove / init_EpoRJAK2) * (p12EpoRpJAK2 + p1EpoRpJAK2);
^~~~~~~~~~~~
nameless-mread-header.h:94:43: error: expected ')' before 'default'
#define EpoRJAK2_CIS (EpoRJAK2_CIS_amt_ / default)
~ ^~~~~~~
53:7: note: in expansion of macro 'EpoRJAK2_CIS'
v10 = EpoRJAK2_CIS * (EpoRCISRemove / init_EpoRJAK2) * (p12EpoRpJAK2 + p1EpoRpJAK2);
^~~~~~~~~~~~
nameless-mread-header.h:95:27: error: expected primary-expression before 'default'
#define SHP1 (SHP1_amt_ / default)
^~~~~~~
54:7: note: in expansion of macro 'SHP1'
v11 = SHP1 * (SHP1ActEpoR / init_EpoRJAK2) * (EpoRpJAK2 + p12EpoRpJAK2 + p1EpoRpJAK2 + p2EpoRpJAK2);
^~~~
nameless-mread-header.h:95:27: error: expected ')' before 'default'
#define SHP1 (SHP1_amt_ / default)
~ ^~~~~~~
54:7: note: in expansion of macro 'SHP1'
v11 = SHP1 * (SHP1ActEpoR / init_EpoRJAK2) * (EpoRpJAK2 + p12EpoRpJAK2 + p1EpoRpJAK2 + p2EpoRpJAK2);
^~~~
nameless-mread-header.h:96:33: error: expected primary-expression before 'default'
#define SHP1Act (SHP1Act_amt_ / default)
^~~~~~~
55:17: note: in expansion of macro 'SHP1Act'
v12 = SHP1Dea * SHP1Act;
^~~~~~~
nameless-mread-header.h:96:33: error: expected ')' before 'default'
#define SHP1Act (SHP1Act_amt_ / default)
~ ^~~~~~~
55:17: note: in expansion of macro 'SHP1Act'
v12 = SHP1Dea * SHP1Act;
^~~~~~~
nameless-mread-header.h:90:37: error: expected primary-expression before 'default'
#define EpoRpJAK2 (EpoRpJAK2_amt_ / default)
^~~~~~~
56:50: note: in expansion of macro 'EpoRpJAK2'
v13 = (STAT5 * (STAT5ActJAK2 / init_EpoRJAK2) * (EpoRpJAK2 + p12EpoRpJAK2 + p1EpoRpJAK2 + p2EpoRpJAK2)) / (SOCS3 * (SOCS3Inh / SOCS3Eqc) + 1.0) * cyt;
^~~~~~~~~
nameless-mread-header.h:90:37: error: expected ')' before 'default'
#define EpoRpJAK2 (EpoRpJAK2_amt_ / default)
~ ^~~~~~~
56:50: note: in expansion of macro 'EpoRpJAK2'
v13 = (STAT5 * (STAT5ActJAK2 / init_EpoRJAK2) * (EpoRpJAK2 + p12EpoRpJAK2 + p1EpoRpJAK2 + p2EpoRpJAK2)) / (SOCS3 * (SOCS3Inh / SOCS3Eqc) + 1.0) * cyt;
^~~~~~~~~
56:150: error: expected ')' before ';' token
v13 = (STAT5 * (STAT5ActJAK2 / init_EpoRJAK2) * (EpoRpJAK2 + p12EpoRpJAK2 + p1EpoRpJAK2 + p2EpoRpJAK2)) / (SOCS3 * (SOCS3Inh / SOCS3Eqc) + 1.0) * cyt;
~ ^
)
56:150: error: expected ')' before ';' token
v13 = (STAT5 * (STAT5ActJAK2 / init_EpoRJAK2) * (EpoRpJAK2 + p12EpoRpJAK2 + p1EpoRpJAK2 + p2EpoRpJAK2)) / (SOCS3 * (SOCS3Inh / SOCS3Eqc) + 1.0) * cyt;
~ ^
)
In file included from nameless-mread-source.cpp:3:
nameless-mread-header.h:93:43: error: expected primary-expression before 'default'
#define p12EpoRpJAK2 (p12EpoRpJAK2_amt_ / default)
^~~~~~~
57:64: note: in expansion of macro 'p12EpoRpJAK2'
v14 = (STAT5 * (STAT5ActEpoR / pow(init_EpoRJAK2, 2.0)) * pow((p12EpoRpJAK2 + p1EpoRpJAK2), 2.0)) / ((CIS * (CISInh / CISEqc) + 1.0) * (SOCS3 * (SOCS3Inh / SOCS3Eqc) + 1.0)) * cyt;
^~~~~~~~~~~~
nameless-mread-header.h:93:43: error: expected ')' before 'default'
#define p12EpoRpJAK2 (p12EpoRpJAK2_amt_ / default)
~ ^~~~~~~
57:64: note: in expansion of macro 'p12EpoRpJAK2'
v14 = (STAT5 * (STAT5ActEpoR / pow(init_EpoRJAK2, 2.0)) * pow((p12EpoRpJAK2 + p1EpoRpJAK2), 2.0)) / ((CIS * (CISInh / CISEqc) + 1.0) * (SOCS3 * (SOCS3Inh / SOCS3Eqc) + 1.0)) * cyt;
^~~~~~~~~~~~
57:180: error: expected ')' before ';' token
v14 = (STAT5 * (STAT5ActEpoR / pow(init_EpoRJAK2, 2.0)) * pow((p12EpoRpJAK2 + p1EpoRpJAK2), 2.0)) / ((CIS * (CISInh / CISEqc) + 1.0) * (SOCS3 * (SOCS3Inh / SOCS3Eqc) + 1.0)) * cyt;
~ ^
)
57:180: error: expected ')' before ';' token
v14 = (STAT5 * (STAT5ActEpoR / pow(init_EpoRJAK2, 2.0)) * pow((p12EpoRpJAK2 + p1EpoRpJAK2), 2.0)) / ((CIS * (CISInh / CISEqc) + 1.0) * (SOCS3 * (SOCS3Inh / SOCS3Eqc) + 1.0)) * cyt;
~ ^
)
In file included from nameless-mread-source.cpp:3:
nameless-mread-header.h:106:25: error: expected primary-expression before 'default'
#define CIS (CIS_amt_ / default)
^~~~~~~
68:7: note: in expansion of macro 'CIS'
v25 = CIS * CISTurn;
^~~
nameless-mread-header.h:106:25: error: expected ')' before 'default'
#define CIS (CIS_amt_ / default)
~ ^~~~~~~
68:7: note: in expansion of macro 'CIS'
v25 = CIS * CISTurn;
^~~
nameless-mread-header.h:113:29: error: expected primary-expression before 'default'
#define SOCS3 (SOCS3_amt_ / default)
^~~~~~~
78:7: note: in expansion of macro 'SOCS3'
v35 = SOCS3 * SOCS3Turn;
^~~~~
nameless-mread-header.h:113:29: error: expected ')' before 'default'
#define SOCS3 (SOCS3_amt_ / default)
~ ^~~~~~~
78:7: note: in expansion of macro 'SOCS3'
v35 = SOCS3 * SOCS3Turn;
^~~~~
nameless-mread-header.h:90:37: error: expected primary-expression before 'default'
#define EpoRpJAK2 (EpoRpJAK2_amt_ / default)
^~~~~~~
81:64: note: in expansion of macro 'EpoRpJAK2'
pJAK2_au = log10(offset_pJAK2_long + 2.0 * scale_pJAK2_long * (EpoRpJAK2 + p12EpoRpJAK2 + p1EpoRpJAK2 + p2EpoRpJAK2) / init_EpoRJAK2);
^~~~~~~~~
nameless-mread-header.h:90:37: error: expected ')' before 'default'
#define EpoRpJAK2 (EpoRpJAK2_amt_ / default)
~ ^~~~~~~
81:64: note: in expansion of macro 'EpoRpJAK2'
pJAK2_au = log10(offset_pJAK2_long + 2.0 * scale_pJAK2_long * (EpoRpJAK2 + p12EpoRpJAK2 + p1EpoRpJAK2 + p2EpoRpJAK2) / init_EpoRJAK2);
^~~~~~~~~
81:134: error: expected ')' before ';' token
pJAK2_au = log10(offset_pJAK2_long + 2.0 * scale_pJAK2_long * (EpoRpJAK2 + p12EpoRpJAK2 + p1EpoRpJAK2 + p2EpoRpJAK2) / init_EpoRJAK2);
~ ^
)
In file included from nameless-mread-source.cpp:3:
nameless-mread-header.h:93:43: error: expected primary-expression before 'default'
#define p12EpoRpJAK2 (p12EpoRpJAK2_amt_ / default)
^~~~~~~
82:65: note: in expansion of macro 'p12EpoRpJAK2'
pEpoR_au = log10(offset_pEpoR_long + 16.0 * scale_pEpoR_long * (p12EpoRpJAK2 + p1EpoRpJAK2 + p2EpoRpJAK2) / init_EpoRJAK2);
^~~~~~~~~~~~
nameless-mread-header.h:93:43: error: expected ')' before 'default'
#define p12EpoRpJAK2 (p12EpoRpJAK2_amt_ / default)
~ ^~~~~~~
82:65: note: in expansion of macro 'p12EpoRpJAK2'
pEpoR_au = log10(offset_pEpoR_long + 16.0 * scale_pEpoR_long * (p12EpoRpJAK2 + p1EpoRpJAK2 + p2EpoRpJAK2) / init_EpoRJAK2);
^~~~~~~~~~~~
82:123: error: expected ')' before ';' token
pEpoR_au = log10(offset_pEpoR_long + 16.0 * scale_pEpoR_long * (p12EpoRpJAK2 + p1EpoRpJAK2 + p2EpoRpJAK2) / init_EpoRJAK2);
~ ^
)
In file included from nameless-mread-source.cpp:3:
nameless-mread-header.h:106:25: error: expected primary-expression before 'default'
#define CIS (CIS_amt_ / default)
^~~~~~~
83:34: note: in expansion of macro 'CIS'
CIS_au = log10(offset_CIS_long + CIS * scale_CIS_long / CISEqc);
^~~
nameless-mread-header.h:106:25: error: expected ')' before 'default'
#define CIS (CIS_amt_ / default)
~ ^~~~~~~
83:34: note: in expansion of macro 'CIS'
CIS_au = log10(offset_CIS_long + CIS * scale_CIS_long / CISEqc);
^~~
nameless-mread-header.h:113:29: error: expected primary-expression before 'default'
#define SOCS3 (SOCS3_amt_ / default)
^~~~~~~
84:43: note: in expansion of macro 'SOCS3'
SOCS3_au = log10(offset_SOCS3_long + fabs(SOCS3) * scale_SOCS3_long / SOCS3Eqc);
^~~~~
nameless-mread-header.h:113:29: error: expected ')' before 'default'
#define SOCS3 (SOCS3_amt_ / default)
~ ^~~~~~~
84:43: note: in expansion of macro 'SOCS3'
SOCS3_au = log10(offset_SOCS3_long + fabs(SOCS3) * scale_SOCS3_long / SOCS3Eqc);
^~~~~
nameless-mread-header.h:95:27: error: expected primary-expression before 'default'
#define SHP1 (SHP1_amt_ / default)
^~~~~~~
88:18: note: in expansion of macro 'SHP1'
SHP1_abs = log10(SHP1 + SHP1Act);
^~~~
nameless-mread-header.h:95:27: error: expected ')' before 'default'
#define SHP1 (SHP1_amt_ / default)
~ ^~~~~~~
88:18: note: in expansion of macro 'SHP1'
SHP1_abs = log10(SHP1 + SHP1Act);
^~~~
nameless-mread-header.h:106:25: error: expected primary-expression before 'default'
#define CIS (CIS_amt_ / default)
^~~~~~~
89:22: note: in expansion of macro 'CIS'
CIS_abs = log10(fabs(CIS));
^~~
nameless-mread-header.h:106:25: error: expected ')' before 'default'
#define CIS (CIS_amt_ / default)
~ ^~~~~~~
89:22: note: in expansion of macro 'CIS'
CIS_abs = log10(fabs(CIS));
^~~
nameless-mread-header.h:113:29: error: expected primary-expression before 'default'
#define SOCS3 (SOCS3_amt_ / default)
^~~~~~~
90:24: note: in expansion of macro 'SOCS3'
SOCS3_abs = log10(fabs(SOCS3));
^~~~~
nameless-mread-header.h:113:29: error: expected ')' before 'default'
#define SOCS3 (SOCS3_amt_ / default)
~ ^~~~~~~
90:24: note: in expansion of macro 'SOCS3'
SOCS3_abs = log10(fabs(SOCS3));
^~~~~
nameless-mread-header.h:95:27: error: expected primary-expression before 'default'
#define SHP1 (SHP1_amt_ / default)
^~~~~~~
98:39: note: in expansion of macro 'SHP1'
tSHP1_au = log10(scale_SHP1_shp1oe * (SHP1 + SHP1Act) / init_SHP1);
^~~~
nameless-mread-header.h:95:27: error: expected ')' before 'default'
#define SHP1 (SHP1_amt_ / default)
~ ^~~~~~~
98:39: note: in expansion of macro 'SHP1'
tSHP1_au = log10(scale_SHP1_shp1oe * (SHP1 + SHP1Act) / init_SHP1);
^~~~
98:67: error: expected ')' before ';' token
tSHP1_au = log10(scale_SHP1_shp1oe * (SHP1 + SHP1Act) / init_SHP1);
~ ^
)
In file included from nameless-mread-source.cpp:3:
nameless-mread-header.h:106:25: error: expected primary-expression before 'default'
#define CIS (CIS_amt_ / default)
^~~~~~~
99:17: note: in expansion of macro 'CIS'
CIS_au1 = log10(CIS * scale1_CIS_dr90 / CISEqc);
^~~
nameless-mread-header.h:106:25: error: expected ')' before 'default'
#define CIS (CIS_amt_ / default)
~ ^~~~~~~
99:17: note: in expansion of macro 'CIS'
CIS_au1 = log10(CIS * scale1_CIS_dr90 / CISEqc);
^~~
nameless-mread-header.h:106:25: error: expected primary-expression before 'default'
#define CIS (CIS_amt_ / default)
^~~~~~~
100:17: note: in expansion of macro 'CIS'
CIS_au2 = log10(CIS * scale2_CIS_dr90 / CISEqc);
^~~
nameless-mread-header.h:106:25: error: expected ')' before 'default'
#define CIS (CIS_amt_ / default)
~ ^~~~~~~
100:17: note: in expansion of macro 'CIS'
CIS_au2 = log10(CIS * scale2_CIS_dr90 / CISEqc);
^~~
make: *** [C:/PROGRA~1/R/R-41~1.0/etc/x64/Makeconf:245: nameless-mread-source.o] Error 1
------------------------------------------------------------
Error: the model build step failed.
I tried running the model under cases/9-c-switcher
. I modified it to export also for MgrSolve. The exported SBML model (as run at http://core.fun.bio.keio.ac.jp/SBMLWebApp/) produces results that seem to take the switcher into account:
However, the results in MgrSolve appear to ignore the switcher:
The same result for DBSolve:
However, there was no indication that CSwitcher is unsupported in either MgrSolve or DBSolve, here's the full output from the compilation:
Running compilation with declaration file "C:\Users\modrak_m\Documents\small\heta-review\heta-compiler-master\cases\9-c-switcher\platform.json"...
[info] Builder initialized in directory "C:\Users\modrak_m\Documents\small\heta-review\heta-compiler-master\cases\9-c-switcher".
[info] Platform id: "cs"
[info] Compilation of module "src/index.heta" of type "heta"...
[info] Reading module of type "heta" from file "C:\Users\modrak_m\Documents\small\heta-review\heta-compiler-master\cases\9-c-switcher\src\index.heta"...
[info] Setting references in elements, total length 51
[info] Checking for circular references in Records.
[warn] Units checking skipped. To turn it on set "unitsCheck: true" in declaration.
[info] Checking unit's terms.
[info] Start exporting to files, total: 7.
[info] Exporting to "C:\Users\modrak_m\Documents\small\heta-review\heta-compiler-master\cases\9-c-switcher\dist\sbml.xml" of format "SBML"...
[info] Exporting to "C:\Users\modrak_m\Documents\small\heta-review\heta-compiler-master\cases\9-c-switcher\dist\model" of format "SLV"...
[info] Exporting to "C:\Users\modrak_m\Documents\small\heta-review\heta-compiler-master\cases\9-c-switcher\dist\model" of format "DBSolve"...
[info] Exporting to "C:\Users\modrak_m\Documents\small\heta-review\heta-compiler-master\cases\9-c-switcher\dist\julia" of format "Julia"...
[info] Exporting to "C:\Users\modrak_m\Documents\small\heta-review\heta-compiler-master\cases\9-c-switcher\dist\matlab" of format "Matlab"...
[info] Exporting to "C:\Users\modrak_m\Documents\small\heta-review\heta-compiler-master\cases\9-c-switcher\dist\simbio" of format "Simbio"...
[warn] Cannot check units consistency for "r1" because no units found for "k1"
[warn] Cannot check units consistency for "r1" because no units found for "x1"
[warn] Cannot check units consistency for "r1" because no units found for "comp1"
[info] Exporting to "C:\Users\modrak_m\Documents\small\heta-review\heta-compiler-master\cases\9-c-switcher\dist\mrgsolve" of format "Mrgsolve"...
Compilation OK!
The issue copied from the paper discussion
openjournals/joss-reviews#3708 (comment)
@martinmodrak wrote
There is also potentially problematic design in the way the definition of export targets is part of the model specification. One could IMHO argue that there should be a separation between model definition and export targets. E.g. if I want to share my model with the community, I probably don't want to prescribe how the community will export it. Conflicting needs of different team members could lead to unnecessary version control conflicts in the export definitionsm etc. The need for --julia-only and --skip-export CLI options shows that you are struggling a bit with this design choice already.
Some (not mutually exclusive) options to consider:
Move export definitions to platform.json (presumably, I won't be sharing platform.json the same way I share model files?, i.e. two team members could share Heta code but have each their own platform?)
Allow full control of exports from the CLI (e.g. allow stuff like heta build --export "{ filepath: model, format: DBSolve }")
Keep the current system, but encourage separating export definitions and models in two files (probably by the export file including the model), codify this as a good practice (e.g. by using it in examples)
Have a make-like system, where the export definitions function as "targets" and one can specify heta build [target-list] to only build specific targets)
Generally, handling exports well seems like an important (but hard) design decision. As with the other stuff, I don't insist on this being resolved for acceptance in JOSS, just wanted to share my concerns.
It's hard for me to tell where it's hitting in the Julia stack, but I just wanted to make a note that it would be nice if this could be exporting directly to ModelingToolkit.jl's ODESystem or ReactionSystem.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.