Changelog#
symident 0.9.3#
install_msolve()builds GMP and FLINT for the generic architecture instead of the CPU it runs on. The binary no longer stops with an illegal instruction on another CPU sharing the cache, or on a virtual machine that hides instruction sets its CPU model implies.The reduction report lists each section as its equation.
summary(detailed=True)explains each section.The summary no longer shows how a closed form was found.
The block lines of
summary()are aligned in columns and show the section as its equation, with the number of possible choices.
symident 0.9.2#
log(x, b)andatan2(y, x)parse: the commas between the arguments were dropped.atanh()of an argument whose logarithms cancel in part, such asatanh(x/(1 + x)), no longer stops with aKeyError.
symident 0.9.1#
Wheels for Python 3.14.
Linux wheels are built on manylinux_2_28 and need glibc 2.28 or newer; on the older manylinux2014 base, installing the wheel built SciPy from source.
The tests pass on Windows: they read their data as UTF-8, and the msolve tests that run a shell script are skipped there.
symident 0.9.0#
First release.
Model,detect()andreduce(): non-identifiable directions of ODE models with observables, conditions, events and inputs, as exact generators where they close, and the reparametrisation that removes them.Observability rank over finite fields in a C++ kernel, with a certified Lie order, exact scaling symmetries and rank proofs by scalings or invariant fields.
Elementary functions of states (logarithms, inverse trigonometric and hyperbolic functions, powers of sums, nested) recast into rational form; their transcendental initial values become generic leaves.
Steady-state constraints (
equilibrate) through the joint resting-state system. Directions that no sampling route closes are fitted along parameter lines through the continued resting state, in the parameters and, where needed, the resting states (reconst_control(homotopy=)).Switches in right-hand sides and observables:
piecewise()in SBML order,ifelse(), comparisons,&&,||,!,Heaviside(),sign(),abs(),max()andmin(), and events with aroot. A direction is reported when the observables of every regime that the declared signs do not exclude stay unchanged along it, it maps every surface of a visible switch to itself and keeps the events; a switch hidden from the observables may move.Model(regimes=)restricts the analysis to the regimes an experiment visits. The rank is certified between the stacked rows of the regimes and directions proven symbolically, and an error is raised where they do not meet.Reduction by scaling transversals, module reduction and invariants (monomial, polynomial, rational, Darboux, exponential), with positivity certificates and face sections.
reduce()returns the best admissible chart and lists the others underalternatives(reduce(alternatives=True)); dependent directions are named underdependent.install_msolve()builds msolve, used for coupled steady states, into a per-user cache.symident.rjson: JSON interface for host languages.