Skip to content

[v14 - Ready] Fixes latexify tests #933

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

Merged
merged 1 commit into from
Jun 10, 2024
Merged
Changes from all commits
Commits
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
233 changes: 117 additions & 116 deletions test/visualisation/latexify.jl
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,8 @@ include("../test_networks.jl")
### Just be sure to remove all such macros before you commit a change since it
### will cause issues with Travis.

# Generally, for all latexify tests, the lines after `@test latexify(rn) == replace(` must
# start without any tabs, hence the somewhat weird formatting.

### Basic Tests ###

Expand All @@ -48,68 +50,68 @@ let
(d1,d2,d3,d4,d5,d6), (X1,X2,X3,X4,X5,X6) ⟶ ∅
end

# Latexify.@generate_test latexify(rn)
@test_broken latexify(rn; expand_functions = false) == replace(
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

just a simple error, expand_functions = false tested twice.
(true is the default, so don't really need it in the next one, but specified it anyway)

raw"\begin{align*}
\varnothing &\xrightarrow{\frac{X4^{n1} v1^{2} K1^{n1}}{\left( K1^{n1} + X4^{n1} \right) \left( K1^{n1} + X2^{n1} \right)}} \mathrm{X1} \\
\varnothing &\xrightarrow{\mathrm{hill}\left( X5, v2, K2, n2 \right)} \mathrm{X2} \\
\varnothing &\xrightarrow{\mathrm{hill}\left( X3, v3, K3, n3 \right)} \mathrm{X3} \\
\varnothing &\xrightarrow{\mathrm{hillr}\left( X1, v4, K4, n4 \right)} \mathrm{X4} \\
\varnothing &\xrightarrow{\mathrm{hill}\left( X2, v5, K5, n5 \right)} \mathrm{X5} \\
\varnothing &\xrightarrow{\mathrm{hillar}\left( X1, X6, v6, K6, n6 \right)} \mathrm{X6} \\
\mathrm{X2} &\xrightleftharpoons[k2]{k1} \mathrm{X1} + 2 \mathrm{X4} \\
\mathrm{X4} &\xrightleftharpoons[k4]{k3} \mathrm{X3} \\
3 \mathrm{X5} + \mathrm{X1} &\xrightleftharpoons[k6]{k5} \mathrm{X2} \\
\mathrm{X1} &\xrightarrow{d1} \varnothing \\
\mathrm{X2} &\xrightarrow{d2} \varnothing \\
\mathrm{X3} &\xrightarrow{d3} \varnothing \\
\mathrm{X4} &\xrightarrow{d4} \varnothing \\
\mathrm{X5} &\xrightarrow{d5} \varnothing \\
\mathrm{X6} &\xrightarrow{d6} \varnothing
\end{align*}
", "\r\n"=>"\n")

#Latexify.@generate_test latexify(rn; expand_functions=false)
@test_broken latexify(rn; expand_functions = false) == replace(
raw"\begin{align*}
\varnothing &\xrightarrow{\frac{X4^{n1} v1^{2} K1^{n1}}{\left( K1^{n1} + X4^{n1} \right) \left( K1^{n1} + X2^{n1} \right)}} \mathrm{X1} \\
\varnothing &\xrightarrow{\mathrm{mm}\left( X5, v2, K2 \right)} \mathrm{X2} \\
\varnothing &\xrightarrow{\mathrm{mmr}\left( X3, v3, K3 \right)} \mathrm{X3} \\
\varnothing &\xrightarrow{\mathrm{hillr}\left( X1, v4, K4, n4 \right)} \mathrm{X4} \\
\varnothing &\xrightarrow{\mathrm{hill}\left( X2, v5, K5, n5 \right)} \mathrm{X5} \\
\varnothing &\xrightarrow{\mathrm{hillar}\left( X1, X6, v6, K6, n6 \right)} \mathrm{X6} \\
\mathrm{X2} &\xrightleftharpoons[k2]{k1} \mathrm{X1} + 2 \mathrm{X4} \\
\mathrm{X4} &\xrightleftharpoons[k4]{k3} \mathrm{X3} \\
3 \mathrm{X5} + \mathrm{X1} &\xrightleftharpoons[k6]{k5} \mathrm{X2} \\
\mathrm{X1} &\xrightarrow{d1} \varnothing \\
\mathrm{X2} &\xrightarrow{d2} \varnothing \\
\mathrm{X3} &\xrightarrow{d3} \varnothing \\
\mathrm{X4} &\xrightarrow{d4} \varnothing \\
\mathrm{X5} &\xrightarrow{d5} \varnothing \\
\mathrm{X6} &\xrightarrow{d6} \varnothing
\end{align*}
", "\r\n"=>"\n")

# Latexify.@generate_test latexify(rn, mathjax=false)
@test_broken latexify(rn, mathjax = false) == replace(
raw"\begin{align*}
\varnothing &\xrightarrow{\frac{X4^{n1} v1^{2} K1^{n1}}{\left( K1^{n1} + X4^{n1} \right) \left( K1^{n1} + X2^{n1} \right)}} \mathrm{X1} \\
\varnothing &\xrightarrow{\frac{X5 v2}{K2 + X5}} \mathrm{X2} \\
\varnothing &\xrightarrow{\frac{K3 v3}{K3 + X3}} \mathrm{X3} \\
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This just seemed to be an error, not sure what's up here.

\varnothing &\xrightarrow{\frac{v4 K4^{n4}}{K4^{n4} + X1^{n4}}} \mathrm{X4} \\
\varnothing &\xrightarrow{\frac{v5 X2^{n5}}{X2^{n5} + K5^{n5}}} \mathrm{X5} \\
\varnothing &\xrightarrow{\frac{v6 X1^{n6}}{X6^{n6} + K6^{n6} + X1^{n6}}} \mathrm{X6} \\
\mathrm{X2} &\xrightleftharpoons[k2]{k1} \mathrm{X1} + 2 \mathrm{X4} \\
\mathrm{X4} &\xrightleftharpoons[k4]{k3} \mathrm{X3} \\
3 \mathrm{X5} + \mathrm{X1} &\xrightleftharpoons[k6]{k5} \mathrm{X2} \\
\mathrm{X1} &\xrightarrow{d1} \varnothing \\
\mathrm{X2} &\xrightarrow{d2} \varnothing \\
\mathrm{X3} &\xrightarrow{d3} \varnothing \\
\mathrm{X4} &\xrightarrow{d4} \varnothing \\
\mathrm{X5} &\xrightarrow{d5} \varnothing \\
\mathrm{X6} &\xrightarrow{d6} \varnothing
\end{align*}
", "\r\n"=>"\n")
# Latexify.@generate_test latexify(rn; expand_functions = false)
@test latexify(rn; expand_functions = false) == replace(
raw"\begin{align*}
\varnothing &\xrightarrow{\mathrm{hillr}\left( X2, v1, K1, n1 \right) \mathrm{hill}\left( X4, v1, K1, n1 \right)} \mathrm{X1} \\
\varnothing &\xrightarrow{\mathrm{hill}\left( X5, v2, K2, n2 \right)} \mathrm{X2} \\
\varnothing &\xrightarrow{\mathrm{hill}\left( X3, v3, K3, n3 \right)} \mathrm{X3} \\
\varnothing &\xrightarrow{\mathrm{hillr}\left( X1, v4, K4, n4 \right)} \mathrm{X4} \\
\varnothing &\xrightarrow{\mathrm{hill}\left( X2, v5, K5, n5 \right)} \mathrm{X5} \\
\varnothing &\xrightarrow{\mathrm{hillar}\left( X1, X6, v6, K6, n6 \right)} \mathrm{X6} \\
\mathrm{X2} &\xrightleftharpoons[k2]{k1} \mathrm{X1} + 2 \mathrm{X4} \\
\mathrm{X4} &\xrightleftharpoons[k4]{k3} \mathrm{X3} \\
3 \mathrm{X5} + \mathrm{X1} &\xrightleftharpoons[k6]{k5} \mathrm{X2} \\
\mathrm{X1} &\xrightarrow{d1} \varnothing \\
\mathrm{X2} &\xrightarrow{d2} \varnothing \\
\mathrm{X3} &\xrightarrow{d3} \varnothing \\
\mathrm{X4} &\xrightarrow{d4} \varnothing \\
\mathrm{X5} &\xrightarrow{d5} \varnothing \\
\mathrm{X6} &\xrightarrow{d6} \varnothing
\end{align*}
", "\r\n"=>"\n")

# Latexify.@generate_test latexify(rn; expand_functions = true)
@test latexify(rn; expand_functions = true) == replace(
raw"\begin{align*}
\varnothing &\xrightarrow{\frac{X4^{n1} v1^{2} K1^{n1}}{\left( K1^{n1} + X4^{n1} \right) \left( K1^{n1} + X2^{n1} \right)}} \mathrm{X1} \\
\varnothing &\xrightarrow{\frac{v2 X5^{n2}}{X5^{n2} + K2^{n2}}} \mathrm{X2} \\
\varnothing &\xrightarrow{\frac{v3 X3^{n3}}{X3^{n3} + K3^{n3}}} \mathrm{X3} \\
\varnothing &\xrightarrow{\frac{v4 K4^{n4}}{K4^{n4} + X1^{n4}}} \mathrm{X4} \\
\varnothing &\xrightarrow{\frac{v5 X2^{n5}}{X2^{n5} + K5^{n5}}} \mathrm{X5} \\
\varnothing &\xrightarrow{\frac{v6 X1^{n6}}{X6^{n6} + K6^{n6} + X1^{n6}}} \mathrm{X6} \\
\mathrm{X2} &\xrightleftharpoons[k2]{k1} \mathrm{X1} + 2 \mathrm{X4} \\
\mathrm{X4} &\xrightleftharpoons[k4]{k3} \mathrm{X3} \\
3 \mathrm{X5} + \mathrm{X1} &\xrightleftharpoons[k6]{k5} \mathrm{X2} \\
\mathrm{X1} &\xrightarrow{d1} \varnothing \\
\mathrm{X2} &\xrightarrow{d2} \varnothing \\
\mathrm{X3} &\xrightarrow{d3} \varnothing \\
\mathrm{X4} &\xrightarrow{d4} \varnothing \\
\mathrm{X5} &\xrightarrow{d5} \varnothing \\
\mathrm{X6} &\xrightarrow{d6} \varnothing
\end{align*}
", "\r\n"=>"\n")
# Latexify.@generate_test latexify(rn, mathjax = false)
@test latexify(rn, mathjax = false) == replace(
raw"\begin{align*}
\varnothing &\xrightarrow{\frac{X4^{n1} v1^{2} K1^{n1}}{\left( K1^{n1} + X4^{n1} \right) \left( K1^{n1} + X2^{n1} \right)}} \mathrm{X1} \\
\varnothing &\xrightarrow{\frac{v2 X5^{n2}}{X5^{n2} + K2^{n2}}} \mathrm{X2} \\
\varnothing &\xrightarrow{\frac{v3 X3^{n3}}{X3^{n3} + K3^{n3}}} \mathrm{X3} \\
\varnothing &\xrightarrow{\frac{v4 K4^{n4}}{K4^{n4} + X1^{n4}}} \mathrm{X4} \\
\varnothing &\xrightarrow{\frac{v5 X2^{n5}}{X2^{n5} + K5^{n5}}} \mathrm{X5} \\
\varnothing &\xrightarrow{\frac{v6 X1^{n6}}{X6^{n6} + K6^{n6} + X1^{n6}}} \mathrm{X6} \\
\mathrm{X2} &\xrightleftharpoons[k2]{k1} \mathrm{X1} + 2 \mathrm{X4} \\
\mathrm{X4} &\xrightleftharpoons[k4]{k3} \mathrm{X3} \\
3 \mathrm{X5} + \mathrm{X1} &\xrightleftharpoons[k6]{k5} \mathrm{X2} \\
\mathrm{X1} &\xrightarrow{d1} \varnothing \\
\mathrm{X2} &\xrightarrow{d2} \varnothing \\
\mathrm{X3} &\xrightarrow{d3} \varnothing \\
\mathrm{X4} &\xrightarrow{d4} \varnothing \\
\mathrm{X5} &\xrightarrow{d5} \varnothing \\
\mathrm{X6} &\xrightarrow{d6} \varnothing
\end{align*}
", "\r\n"=>"\n")
end

# Tests basic functions on simple network (2).
Expand All @@ -121,35 +123,49 @@ let
end

# Latexify.@generate_test latexify(rn)
@test_broken latexify(rn) == replace(
raw"\begin{align*}
\varnothing &\xrightleftharpoons[d_{a}]{\frac{p_{a} B^{n}}{k^{n} + B^{n}}} \mathrm{A} \\
\varnothing &\xrightleftharpoons[d_{b}]{p_{b}} \mathrm{B} \\
3 \mathrm{B} &\xrightleftharpoons[r_{b}]{r_{a}} \mathrm{A}
\end{align*}
", "\r\n"=>"\n")

# Latexify.@generate_test latexify(rn, mathjax=false)
@test_broken latexify(rn, mathjax = false) == replace(
raw"\begin{align*}
\varnothing &\xrightleftharpoons[d_{a}]{\frac{p_{a} B^{n}}{k^{n} + B^{n}}} \mathrm{A} \\
\varnothing &\xrightleftharpoons[d_{b}]{p_{b}} \mathrm{B} \\
3 \mathrm{B} &\xrightleftharpoons[r_{b}]{r_{a}} \mathrm{A}
\end{align*}
", "\r\n"=>"\n")
@test latexify(rn) == replace(
raw"\begin{align*}
\varnothing &\xrightleftharpoons[d_{a}]{\frac{p_{a} B^{n}}{k^{n} + B^{n}}} \mathrm{A} \\
\varnothing &\xrightleftharpoons[d_{b}]{p_{b}} \mathrm{B} \\
3 \mathrm{B} &\xrightleftharpoons[r_{b}]{r_{a}} \mathrm{A}
\end{align*}
", "\r\n"=>"\n")

# Latexify.@generate_test latexify(rn, mathjax = false)
@test latexify(rn, mathjax = false) == replace(
raw"\begin{align*}
\varnothing &\xrightleftharpoons[d_{a}]{\frac{p_{a} B^{n}}{k^{n} + B^{n}}} \mathrm{A} \\
\varnothing &\xrightleftharpoons[d_{b}]{p_{b}} \mathrm{B} \\
3 \mathrm{B} &\xrightleftharpoons[r_{b}]{r_{a}} \mathrm{A}
\end{align*}
", "\r\n"=>"\n")
end

# Tests for system with parametric stoichiometry.
let
rn = @reaction_network begin
p, 0 --> (m + n)*X
end

@test_broken latexify(rn) == replace(
raw"\begin{align*}
\varnothing &\xrightarrow{p} (m + n)\mathrm{X}
\end{align*}
", "\r\n"=>"\n")
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this just seem to be git getting confused. No tests have been moved (although tabs and empty liens were removed in places, which i presume is causing this).


# Latexify.@generate_test latexify(rn)
@test latexify(rn) == replace(
raw"\begin{align*}
\varnothing &\xrightarrow{p} (m + n)\mathrm{X}
\end{align*}
", "\r\n"=>"\n")
end

# Checks for systems with vector species/parameters.
# Technically tests would work, however, the display is non-ideal (https://github.com/SciML/Catalyst.jl/issues/932, https://github.com/JuliaSymbolics/Symbolics.jl/issues/1167).
let
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

New test for vector stuff (don't work right now).

rn = @reaction_network begin
@parameters k[1:2] x[1:2] [isconstantspecies=true]
@species (X(t))[1:2] (K(t))[1:2]
(k[1]*K[1],k[2]*K[2]), X[1] + x[1] <--> X[2] + x[2]
end

# Latexify.@generate_test latexify(rn)
@test_broken false
end

### Tests the `form` Option ###
Expand All @@ -170,21 +186,15 @@ let
end

# Latexify.@generate_test latexify(rn; form=:ode)
@test_broken latexify(rn; form = :ode) == replace(
raw"$\begin{align}
\frac{\mathrm{d} X\left( t \right)}{\mathrm{d}t} =& p - \left( X\left( t \right) \right)^{2} kB - d X\left( t \right) + 2 kD \mathrm{X2}\left( t \right) \\
\frac{\mathrm{d} \mathrm{X2}\left( t \right)}{\mathrm{d}t} =& \frac{1}{2} \left( X\left( t \right) \right)^{2} kB - kD \mathrm{X2}\left( t \right)
\end{align}
$", "\r\n"=>"\n")

# Currently latexify doesn't handle SDE systems properly, and they look identical to ode systems.
# The "==" shoudl be a "!=", but due to latexify tests not working, for the broken test to work, I changed it.
@test_broken latexify(rn; form=:sde) == replace(
raw"$\begin{align}
\frac{\mathrm{d} X\left( t \right)}{\mathrm{d}t} =& p - \left( X\left( t \right) \right)^{2} kB - d X\left( t \right) + 2 kD \mathrm{X2}\left( t \right) \\
\frac{\mathrm{d} \mathrm{X2}\left( t \right)}{\mathrm{d}t} =& \frac{1}{2} \left( X\left( t \right) \right)^{2} kB - kD \mathrm{X2}\left( t \right)
\end{align}
$", "\r\n"=>"\n")
@test latexify(rn; form = :ode) == replace(
raw"$\begin{align}
\frac{\mathrm{d} X\left( t \right)}{\mathrm{d}t} =& p - d X\left( t \right) + 2 kD \mathrm{X2}\left( t \right) - \left( X\left( t \right) \right)^{2} kB \\
\frac{\mathrm{d} \mathrm{X2}\left( t \right)}{\mathrm{d}t} =& - kD \mathrm{X2}\left( t \right) + \frac{1}{2} \left( X\left( t \right) \right)^{2} kB
\end{align}
$", "\r\n"=>"\n")

# Currently latexify doesn't handle SDE systems properly, and they look identical to ode systems (https://github.com/SciML/ModelingToolkit.jl/issues/2782).
@test_broken false
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

SDESystem latex printing is broken.


# Tests that erroneous form gives error.
@test_throws ErrorException latexify(rn; form=:xxx)
Expand Down Expand Up @@ -229,14 +239,15 @@ let
end

# Latexify.@generate_test latexify(rn)
@test_broken latexify(rn) == replace(
raw"\begin{align*}
\varnothing &\xrightarrow{p} (m + n)\mathrm{X}
\end{align*}
", "\r\n"=>"\n")
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This test seems to have used the wrong generated stuff? In source we got

let
    rn = @reaction_network begin
        k*Y, Y -->end

    # Latexify.@generate_test latexify(rn)
    @test_broken latexify(rn) == replace(
    raw"\begin{align*}
    \varnothing &\xrightarrow{p} (m + n)\mathrm{X}  
    \end{align*}
    ", "\r\n"=>"\n")
end

@test latexify(rn) == replace(
raw"\begin{align*}
\mathrm{Y} &\xrightarrow{Y k} \varnothing
\end{align*}
", "\r\n"=>"\n")
end

# Checks when combined with equations (nonlinear system).
# Technically tests would work, however, the display is non-ideal (https://github.com/SciML/Catalyst.jl/issues/927).
let
t = default_t()
base_network = @reaction_network begin
Expand All @@ -247,18 +258,8 @@ let
extended = extend(decaying_rate, base_network)

# Latexify.@generate_test latexify(extended)
@test_broken latexify(extended) == replace(
raw"\begin{align*}
\mathrm{X} &\xrightarrow{k r} \varnothing
0 &= -1 - x\left( t \right)
\end{align*}
", "\r\n"=>"\n")
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

While we could generate tests they would point towards LaTeX code we wouldn't want, so I removed it and just marked as something broken.

@test_broken false

# Latexify.@generate_test latexify(extended, mathjax=false)
@test_broken latexify(extended, mathjax = false) == replace(
raw"\begin{align*}
\mathrm{X} &\xrightarrow{k r} \varnothing
0 &= -1 - x\left( t \right)
\end{align*}
", "\r\n"=>"\n")
@test_broken false
end
Loading