Google Summer of Code: Final Results

Posted on Tue 17 August 2021 in Posts

GitHub release GitHub stars

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 running StructuralIdenifiability.jl: via ODE class that comes with the package as well as the ODESystem of ModelingToolkit.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 via ODE class of StructuralIdentifiability.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!