Google Summer of Code: Final Results
Posted on Tue 17 August 2021 in Posts
Over the course of the summer, my work resulted in successfully ported code of StructuralIdentifiability.jl
, a package that can help researchers who use ordinary differential equations in their work. The package allows answering queries about individual identifiability of parameters and their combinations.
The StructuralIdentifiability.jl
package is ready to use! 🥳 🎊 😄
You can install from source or via registry:
using Pkg
Pkg.add("StructuralIdentifiability")
# or
Pkg.add("https://github.com/SciML/StructuralIdentifiability.jl")
You can check the documentation at this link. To get started, I recommend checking out this tutorial on local identifiability.
Contributions
My contributions ranged from adding tutorials to compatibility with broader SciML
infrastructure (ModelingToolkit.jl
, Symbolics.jl
). Here is a list of my contributions with links to relevant Pull Requests (PRs).
Closed PRs
- #13: update dependencies of the code to be compatible with
ModelingToolkit.jl
. - #17: add documentation to core functions with examples.
- #19: some small optimizations to the code
- #20: fix a small issue in matrix invertibility for a test
- #22 and #23: Adding tutorials on how to use the package.
- #25: adding
julia
to the compatibility list and finally registering the package 🎉 - #30: adding compatibility with
ODESystem
objects. Now there are two ways of runningStructuralIdenifiability.jl
: viaODE
class that comes with the package as well as theODESystem
ofModelingToolkit.jl
.
Open PRs
There are some PRs that remain open for now as of writing this. They focus on things like warnings/errors for particular input types (non-integer coefficients, special functions, etc.) for which the identifiability solution may not be defined.
- #26: this pr is part of investigation into an issue which occurs with one of our dependencies.
- #32: replacing deprecated functions from our package dependency
- #34: check for non-integer coefficients in the input system of the
ODESystem
object. This PR will also include checks for presence of special functions and functions in the numerator. The latter are, as of writing this post, only supported viaODE
class ofStructuralIdentifiability.jl
Future work
Current main focus is PR #34 after which we will release the changes as a new version.
Final Thoughts
I am extremely grateful to my mentors, Christopher Rackauckas, Yingbo Ma and to Shashi Gowda for their help during this summer.
Huge shout out and thanks to Gleb Pogudin who is the original package developer.
This was a great experience learning about Julia language and open source in general, it motivates me to contribute to open source much more!