Commit d900e68e authored by FAGES Francois's avatar FAGES Francois
Browse files

cours2

parent 815e296a
......@@ -47,9 +47,9 @@ Rq: The distinction between pivp_string and pivp_list is not always obvious.
:- use_module(reaction_rules).
:- use_module(util).
:- doc('Biocham can also compile mathematical expressions and solutions of polynomial differential equations into biochemical reaction networks using only positive concentration values.').
:- doc('The Turing completeness of continuous CRNs \\cite{FLBP17cmsb} states that any computable function over the reals can be computed by a CRN over a finite set of molecular species. Biocham uses the proof of that result to compile any computable real function presented as the solution of a polynomial differential equation system into a finite CRN. The restriction to reactions with at most two reactants is an option.').
:- devdoc('\\begin{todo} Implement the decomposition into at most binary reactions as an option.\\end{todo}').
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
......
......@@ -21,7 +21,7 @@
:- doc('BIOCHAM models can also be defined by influence systems with forces, possibly mixed to reactions with rates.').
:- doc('In the syntax described by the grammar below, one influence rule (either positive "->" or negative "-<") expresses that a conjunction of sources (or their negation after the separator "/" for inhibitors) has an influence on a target molecular species. This syntax necessitates to write the Boolean activation (resp. deactivation) functions of the molecular species in Disjunctive Normal Form, i.e. with several positive (resp. negative) influences in which the sources are interpreted by a conjunction \\cite{FMRS16cmsb}.').
:- doc('In the syntax described by the grammar below, one influence rule (either positive "->" or negative "-<") expresses that a conjunction of sources (or their negation after the separator "/" for inhibitors) has an influence on a target molecular species. This syntax necessitates to write the Boolean activation (resp. deactivation) functions of the molecular species in Disjunctive Normal Form, i.e. with several positive (resp. negative) influences in which the sources are interpreted by a conjunction \\cite{FMRS18tcbb}.').
:- devdoc('\\section{Grammars}').
......
This source diff could not be displayed because it is too large. You can view the blob instead.
......@@ -422,7 +422,7 @@ add_edge_to_multistability_graph(VertexAId, VertexBId, Species_Sorted, Reactions
%%%%% Generate the influence graph with the reactions as labels
multistability_graph :-
biocham_command,
doc("Creates the influence graph of the current model (same as \\command{influence_graph/1}) with the arcs labelled with the reactions they originate from"),
doc("Creates the influence graph of the current model (same as \\command{influence_graph/1}) with the arcs labelled with the reactions they originate from \\cite{BFS18jtb}"),
option(force_graph, yesno, ForceMultistabilityGraph, 'Force the creation of the graph'),
all_items([kind: graph], AllGraphs),
(
......@@ -931,8 +931,8 @@ check_acyclicity :-
check_multistability :-
biocham_command,
doc('Check the multistability of the current model by reducing the multistability graph and finding positive feedback loops that can lead to multistability.
Graphs that do not contain any positve feedback loop cannot exhibit multiple steady states.
doc('Check the multistationarity of the current model by reducing the multistability graph and searching positive feedback loops that can lead to multistability.
Models that do not contain any positive feedback loop cannot exhibit multiple steady states \\cite{BFS18jtb}.
\\begin{example}
'),
biocham_silent(clear_model),
......@@ -942,7 +942,7 @@ biocham(draw_graph(left_to_right: yes)),
biocham(check_multistability),
biocham(check_multistability(test_transpositions: yes)),
doc('\\end{example}
This model therefore cannot exhibit multistationarity'),
'),
option(test_permutations, yesno, _TestSwaps, 'Test with all possible permutations between species (This option highly increases computation time)'),
option(test_transpositions, yesno, _TestTranspo, 'Test with possible swap between two species only'),
multistability_graph,
......@@ -961,14 +961,14 @@ doc('\\end{example}
),
get_current_graph(GraphId),
get_attribute(GraphId, swaps_used=Swaps),
write('Graph does not contain any positive cycle\n'),
write('There is no multistationarity, no positive circuit\n'),
(
identity_swap(Swaps)
->
true
;
(
write('Permutation Used: '),
write('Permutation used: '),
write(Swaps),
write('\n')
)
......@@ -1005,7 +1005,7 @@ doc('\\end{example}
;
true
),
write('Positive loops cannot be removed'),
write('There may be multistationarity, positive circuit detected'),
debug(multistability, "~nDone in ~ws", [Diff_time]),
write('\n')
)
......
......@@ -14,13 +14,13 @@ test('acyclic_multi_graph') :-
test('multistability_fail') :-
with_output_to(atom(Output), check_multistability),
sub_atom(Output, 0, _, _, 'Positive loops cannot be removed').
sub_atom(Output, 0, _, _, 'There may be multistationarity, positive circuit detected').
test('multistability_success') :-
with_output_to(
atom(Output),
with_option(test_transpositions: yes, check_multistability)
),
sub_atom(Output, 0, _, _, 'Graph does not contain any positive cycle').
sub_atom(Output, 0, _, _, 'There is no multistationarity, no positive circuit').
:- end_tests(multistability).
......@@ -24,13 +24,14 @@
% end compilation flow
% program syntax
:- doc( "\\section{Program Syntax}" ).
%:- doc( "\\section{Program Syntax}" ).
:- doc( "\\begin{itemize}" ).
:- doc( "\\item compile_program" ).
%:- doc( "\\begin{itemize}" ).
%:- doc( "\\item compile_program" ).
:- doc( "This function views each prolog term as a statement.
This means a statement end with ',' or '.'." ).
%:- doc( "This function views each prolog term as a statement.
% This means a statement end with ',' or '.'." ).
:- doc("In this simple program syntax each statement must be terminated by ',' or '.'." ).
:- devdoc( "Internally, it uses prolog 'read' to parse the file." ).
......@@ -75,9 +76,9 @@ control_flow_statement( 'else' ).
control_flow_statement( 'endif' ).
control_flow_statement( 'endwhile' ).
:- doc( "\\item add_function" ).
%:- doc( "\\item add_function" ).
:- doc( "This function only accepts input list with each element of this form: <lhs> = <rhs>." ).
%:- doc( "This function only accepts input list with each element of this form: <lhs> = <rhs>." ).
:- devdoc( "It is the backend of 'compile_program'." ).
......@@ -125,7 +126,7 @@ control_flow_keyword( 'endwhile' ).
Theoretically, 'if_tag' and 'while' keyrword should also handle the problem,
since these two keywords can appear in the first statement." ).
:- doc( "\\end{itemize}" ).
%:- doc( "\\end{itemize}" ).
% end program syntax
% interface
......@@ -137,6 +138,7 @@ add_function(FunctionList) :-
devdoc( "Compile the statement into chemical reactions." ),
doc('
adds reactions to compute the result of a function of the current variables in the concentration of a new variable, at steady state.
This command only accepts input list with each element of this form: <lhs> = <rhs>.
\\begin{example}
'),
biocham_silent(clear_model),
......@@ -165,12 +167,11 @@ compile_program( InputFile ) :-
doc( "Compile the high-level language program from file.
\\begin{example}" ),
doc( "We can write the following program in file 'compile_program_example.bc' and compile it." ),
doc( "\\begin{itemize}
\\item z = 2.
\\item x = z + 1.
\\item y = 4.
\\end{itemize}" ),
doc( "This is equivalent to add_funtion( z = ( 2 post ),
doc(" z = 2.\\n
x = z + 1.\\n
y = 4.\\n
" ),
doc( "This is equivalent to add_function( z = ( 2 post ),
x = ( pre z + 1 post ),
y = ( pre 4 ) )." ),
biocham_silent(
......
......@@ -3,4 +3,4 @@
\\item reaction networks (i.e. Feinberg's Chemical Reaction Networks, CRNs, compatible with SBML)
\\item influence networks (variant of Thomas's regulatory networks, compatible with qualSBML).
\\end{itemize}
Both types of models can be combined and interpreted in a hierarchy of semantics, including the differential semantics (Ordinary Differential Equations), stochastic semantics (Continuous-time Markov Chain), Petri net semantics, and Boolean semantics including several variants defined by options \\cite{FMRS16cmsb}.").
Both types of models can be combined and interpreted in a hierarchy of semantics, including the differential semantics (Ordinary Differential Equations), stochastic semantics (Continuous-time Markov Chain), Petri net semantics, and Boolean semantics including several variants defined by options \\cite{FMRS18tcbb}.").
......@@ -105,12 +105,12 @@
- foltl.pl
** Parameter sensitivity, robustness and parameter search w.r.t. FO-LTL(Rlin) properties
- search.pl
* Reaction Network Synthesis from Input/Output Functions
** Synthesis from mathematical expressions
* Reaction Network Synthesis
** Synthesis from mathematical expressions and simple programs
- odefunction.pl
** Synthesis from GPAC circuits
- wgpac.pl
** Synthesis from PIVP solutions
** Synthesis from mathematical functions solutions of PIVPs
- gpac.pl
- lazy_negation.pl
** Synthesis from transfer functions
......
......@@ -12,7 +12,7 @@
compile_wgpac/1
]).
:- doc('Biocham can compile a GPAC circuit (Shannon\'s General Purpose Analog Computer) into an abstract reaction network using positive as well as negative concentration values. Only weak GPACs, in which the integration gate is with respect to time and not a variable, are considered. The variables associated to the different points of the circuits can be named with the "::" operator. Dy default they are named x0, x1,... The syntax of weak GPAC circuits is as follows:').
:- doc('Biocham can compile a GPAC circuit (Shannon\'s General Purpose Analog Computer) into an abstract CRN using positive as well as negative concentration values. Only weak GPACs, in which the integration gate is with respect to time and not a variable, are considered. The variables associated to the different points of the circuits can be named with the "::" operator. Dy default they are named x0, x1,... The syntax of weak GPAC circuits is as follows:').
:- grammar(wgpac).
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment