# My Google Summer of Code Project

Posted on Tue 08 June 2021 in Posts

## Problem Formulation

The problem of parameter identifiability is one of the most crucial issues arising in systems biology. To take a look at a problem of identifiability, we must first describe a setting in which it arises. Systems biology deals with biological processes that are described by ordinary differential equations (ODEs). These equations, in essence, describe mathematically the model’s evolution through time. Each such theoretical model can have dedicated inputs and outputs. An example of an input is a catalyst for chemical reaction. An example of an output could be a measurement done by the chemist.

In addition to input and output, the model has states and parameters. States are quantities whose time evolution is being considered, while parameters are values that come from intrinsic properties of the system. For example, in a model of population growth such as the Lotka-Volterra model, a species’ intrinsic growth rate is a parameter but the population density is a state.

Now we are ready to pose the identifiability question: given an input and an output as functions of time, can we recover information about states and parameters?

The answer to that question can be one of three kinds:

1. No, the parameters or states of the system cannot be recovered from given inputs or outputs
2. Yes, we can uniquely recover parameters and states
3. Yes, we can recover parameters and states but up to finitely many values.

Point 1 corresponds to non-identifiability. This means that an experiment with given inputs outputs cannot help the researcher recover the parameters or states. Answers 2 and 3 correspond to two kinds of identifiability: global and local respectively.

The above problem formulation refers to structural identifiability, which is a theoretical property. Another type of identifiability is practical which studies recovery of parameters from given data.

## The Project

This summer I will be working on an implementation of an algorithm for testing local (see part 3 above) identifiability which will become part of the `ModelingToolkit.jl` package.

`ModelingToolkit.jl` and `Symbolics.jl` make a significant contribution to the area of symbolic computation for Julia language. It is currently an open problem to enhance these packages with the capabilities of structural identifiability analysis. This project consists of coding the algorithms for local and global identifiability problems using Julia Programming Language and `Symbolics.jl` with `ModelingToolkit.jl`.

The general direction of solving this problem is to begin with fast and efficient (polynomial time) algorithm implementation. A good starting point is this algorithm for local identifiability tests that relies on power series solutions.

Later on (and, more importantly, with enough time) we can enhance the functionality to allow tests for global identifiability checking.