From 86cc021071776c42d8a07fd064091b58add6b2cd Mon Sep 17 00:00:00 2001 From: Alexander Demin <60229118+sumiya11@users.noreply.github.com> Date: Sun, 26 Jan 2025 15:03:39 +0300 Subject: [PATCH 1/2] Add two SI.jl projects for GSoC 2025 --- jsoc/gsoc/symbolics.md | 51 +++++++++++++++++++++++++++++++++++++++++- 1 file changed, 50 insertions(+), 1 deletion(-) diff --git a/jsoc/gsoc/symbolics.md b/jsoc/gsoc/symbolics.md index 3f15372a3e..8d960f78e3 100644 --- a/jsoc/gsoc/symbolics.md +++ b/jsoc/gsoc/symbolics.md @@ -36,7 +36,6 @@ Julia functions that take arrays and output arrays or scalars can be traced usin **Duration**: 175 hours - ## Automatically improving floating point accuracy (Herbie) [Herbie](https://herbie.uwplse.org/) documents a way to optimize floating point functions so as to reduce instruction count while reorganizing operations such that floating point inaccuracies do not get magnified. It would be a great addition to have this written in Julia and have it work on Symbolics.jl expressions. An ideal implementation would use the e-graph facilities of Metatheory.jl to implement this. @@ -44,3 +43,53 @@ Julia functions that take arrays and output arrays or scalars can be traced usin **Mentors**: [Shashi Gowda](https://github.com/shashi), [Alessandro Cheli](https://github.com/0x0f0f0f) **Duration**: 350 hours + +## Reparametrizing ODE models with scaling transformations + +**Project Overview:** Many ODE models appearing in applications have hidden symmetries which makes the solution of data fitting problem nonunique. [StructuralIdentifiability.jl](https://github.com/SciML/StructuralIdentifiability.jl) offers algorithms for proposing new coordinates for the model removing this redundancy. The approach used at the moment relies on heavy computations and may be very slow for larger models. Scaling is a particular type of reparametrizations which can be discovered much faster. The goal of the project would be to implement such faster algorithms (adapting them to the context of identifiability assesment) and integrate into StructuralIdentifiability.jl. + +**Mentors:** [Alexander Demin](https://github.com/sumiya11), [Gleb Pogudin](https://www.lix.polytechnique.fr/Labo/Gleb.POGUDIN/) + +**Project Difficulty**: Medium + +**Estimated Duration**: 350 hours + +**Ideal Candidate Profile:** +- Basic experience with Julia +- Knowledge of linear algebra + +**Project Goals and Deliverables:** +- Implementation of an algorithm in Julia to perform scaling reparametrization of ODEs +- Comprehensive documentation and examples +- (Bonus) Integration with [StructuralIdentifiability.jl](https://github.com/SciML/StructuralIdentifiability.jl) + +**Useful References:** +- [Paper on scaling transformations](https://journals.plos.org/ploscompbiol/article?id=10.1371/journal.pcbi.1008248) +- [More involved paper on scaling transformations](https://inria.hal.science/hal-00668882/) +- [Implementation in Python](https://desr.readthedocs.io/en/latest/intro.html) + +## Polynomialization of ordinary differential equations + +**Project Overview:** Many ODE models arising in modeling involve nonpolynomial functions (fractions, exponentials, trigonometric, etc). Polynomialization is the rewriting of nonpolynomial functions as equivalent polynomial equations. It is a necessary preprocessing step in several contexts (structural identifiability, model order reduction, reaction network synthesis). The project aims at implementing a package for polynomialization of ODEs and, potentially, adapting it for use in [StructuralIdentifiability.jl](https://github.com/SciML/StructuralIdentifiability.jl). + +**Mentors:** [Alexander Demin](https://github.com/sumiya11), [Gleb Pogudin](https://www.lix.polytechnique.fr/Labo/Gleb.POGUDIN/), [Chris Rackauckas](https://www.chrisrackauckas.com/) + +**Project Difficulty**: Medium + +**Estimated Duration**: 350 hours + +**Ideal Candidate Profile:** +- Basic experience with Julia +- Knowledge of ordinary differential equations + +**Project Goals and Deliverables:** +- Implementation of an algorithm in Julia to perform polynomialization of ODEs +- Comprehensive documentation and examples +- (Bonus) Integration with [StructuralIdentifiability.jl](https://github.com/SciML/StructuralIdentifiability.jl) + +**Useful References:** +- [Paper on polynomialization \#1](https://inria.hal.science/hal-03220725) +- [Paper on polynomialization \#2](https://dl.acm.org/doi/10.1145/1687399.1687474) +- [Relevant GitHub issue](https://github.com/SciML/StructuralIdentifiability.jl/issues/144) +- [An implementation of similar algorithms in Python](https://github.com/AndreyBychkov/QBee/blob/master/qbee/polynomialization.py) + From 4e45422c7aaf53ffbceb27f33b9aa5561f480a81 Mon Sep 17 00:00:00 2001 From: Alexander Demin <60229118+sumiya11@users.noreply.github.com> Date: Sun, 26 Jan 2025 15:09:21 +0300 Subject: [PATCH 2/2] In GSoC project for SI.jl, fix a typo --- jsoc/gsoc/symbolics.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/jsoc/gsoc/symbolics.md b/jsoc/gsoc/symbolics.md index 8d960f78e3..2eca682eed 100644 --- a/jsoc/gsoc/symbolics.md +++ b/jsoc/gsoc/symbolics.md @@ -46,7 +46,7 @@ Julia functions that take arrays and output arrays or scalars can be traced usin ## Reparametrizing ODE models with scaling transformations -**Project Overview:** Many ODE models appearing in applications have hidden symmetries which makes the solution of data fitting problem nonunique. [StructuralIdentifiability.jl](https://github.com/SciML/StructuralIdentifiability.jl) offers algorithms for proposing new coordinates for the model removing this redundancy. The approach used at the moment relies on heavy computations and may be very slow for larger models. Scaling is a particular type of reparametrizations which can be discovered much faster. The goal of the project would be to implement such faster algorithms (adapting them to the context of identifiability assesment) and integrate into StructuralIdentifiability.jl. +**Project Overview:** Many ODE models appearing in applications have hidden symmetries which makes the solution of data fitting problem nonunique. [StructuralIdentifiability.jl](https://github.com/SciML/StructuralIdentifiability.jl) offers algorithms for proposing new coordinates for the model removing this redundancy. The approach used at the moment relies on heavy computations and may be very slow for larger models. Scaling is a particular type of reparametrizations which can be discovered much faster. The goal of the project would be to implement such faster algorithms (adapting them to the context of identifiability assessment) and integrate into StructuralIdentifiability.jl. **Mentors:** [Alexander Demin](https://github.com/sumiya11), [Gleb Pogudin](https://www.lix.polytechnique.fr/Labo/Gleb.POGUDIN/)