Giter Club home page Giter Club logo

informationgeometry.jl's Introduction

InformationGeometry.jl

A Julia package for differential-geometric analyses of parameter inference problems.

Documentation Build Status DOI

In essence, the functionality provided by InformationGeometry.jl revolves around analyzing the parameter space associated with mathematical models, given observed data. In particular, it employs novel methods to quantify and visualize the exact uncertainties in the best fit parameter configuration. That is, the confidence regions around the best fit parameters can be constructed without resorting to any approximations of their shape (e.g. as ellipsoids by assuming linear covariance between the parameters). Moreover, the utilized schemes are highly efficient since they do not require one to sample large domains of the parameter space either on a grid or stochastically in order to find said confidence regions, which constitutes a significant improvement over previously established methods.

For example, given two different parametrizations of the same linear relationship between observed x and y-data, one finds the following confidence regions:

y(x, θ) = θ[1] * x + θ[2] y(x, θ) = θ[1]^3 * x + exp(θ[1] + θ[2])

In addition, this package also allows for computations of

  • likelihoods,
  • confidence bands,
  • the Fisher metric, geodesics,
  • Riemann and Ricci curvature tensors

and more. With its unique features and great performance, the toolkit of InformationGeometry.jl offers valuable insights into complicated modeling problems from various areas of science and engineering. Examples detailing how to use this package can be found in the documentation.

Further reading

A preprint discussing the mathematical ideas underlying the methods employed by InformationGeometry.jl can be found in 2211.03421.

If InformationGeometry.jl was helpful in your own work, please consider citing https://doi.org/10.48550/arXiv.2211.03421 and https://doi.org/10.5281/zenodo.5530660.

informationgeometry.jl's People

Contributors

github-actions[bot] avatar rafaelarutjunjan avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

informationgeometry.jl's Issues

Not compatible with [email protected]

Hello, thank you for your excellent work. InformationGeometry include compat for [email protected]. However, libGeos.jl has changes may break InformationGeometry . AbstractPolygon was removed in libGeos.jl but used in InformationGeometry.

Error building model

Hello,
I am using the InformationGeometry.jl package for a project and am encountering an issue at the data model building step. I followed along with the "ODE-based models" advanced example. My project consists of using MLE to model the output from an immune system pathway. The output consists of 5 time points, and the pathway is described by a system of 9 ODEs. I am including my code below. The error given is:

┌ Warning: Interrupted. Larger maxiters is needed.
└ @ SciMLBase C:\Users\lou-i.julia\packages\SciMLBase\OHiiA\src\integrator_interface.jl:331
ERROR: "ODE integration failed, maybe try using a lower tolerance value. θ=[0.1, 0.02, 0.02, 0.02, 1.0, 1.0, 0.05, 0.05, 0.05, 0.1]."

I have tried different tol values but keep getting the same error. The AMPs values I've put in are theoretical and should fit the model quite well. Could you please advise? Thank you in advance!

using InformationGeometry, ModelingToolkit, Plots
@parameters t DP cP cI cB cN cNb phiP phiG phiI phiR
@variables P(t) Pb(t) Ib(t) RB(t) RP(t) RN(t) RNb(t) H(t) A(t)
Dt = Differential(t)

V = 1
VN = 0.1
G = 5
m = 2
k = 2
deltaP = 0.01
deltaPb = 0.02
deltaR = 0.01
deltaN = 0.01
cH = 0.05
cA = 0.1
deltaH = 0.05
deltaA = 0.05
rhoIb = 0.01
KR = 2

QP = deltaP
IT = 1
QR = deltaR/V
QH = deltaH/V
QA = deltaA/V

IMDeqs = [ Dt(P) ~ QP - m * cP * exp(-phiP*H) * P^k * G * exp(-phiG*A) - deltaP * P,
        Dt(Pb) ~  cP * exp(-phiP*H) * P^k * G * exp(-phiG*A) - deltaPb + Pb,
        Dt(Ib) ~ cI * exp(-phiI*H) * (IT - Ib) * Pb - rhoIb * Ib,
        Dt(RB) ~  QR/V + (phiR*RNb)/(KR+RNb) - cB * Ib * RB - deltaR*RB,
        Dt(RP) ~ cB * Ib * RB - DP * RP - deltaR * RP,
        Dt(RN) ~ DP * RP / VN - cN * RN + cN * RNb - deltaN * RN,
        Dt(RNb) ~ cN * RN - cNb * RNb,
        Dt(H) ~ QH / V + cH * RNb - deltaH * H,
        Dt(A) ~ QA / V + cA * RNb - deltaA * A]

IMDstates = [P, Pb, Ib, RB, RP, RN, RNb, H, A]
IMDparams = [DP, cP, cI, cB, cN, cNb, phiP, phiG, phiI, phiR]
@named IMDsys = ODESystem(IMDeqs, t, IMDstates, IMDparams)

P0 = 1.0
Pb0 = 0.0
Ib0 = 0.0
RB0 = 1.0
RP0 = 0.0
RN0 = 0.0
RNb0 = 0.0
H0 = 1.0
A0 = 1.0
IMDinitial = [P0, Pb0, Ib0, RB0, RP0, RN0, RNb0, H0, A0]

hours = [0, 120, 240, 480, 720]
AMPs = [0, 2, 7.5, 15, 14]
confInts = [0.5, 0.5, 0.5, 0.5, 0.5]
IMDdataSet = DataSet(hours, AMPs, confInts)

IMDobservables = [7]
IMDdataModel = DataModel(IMDdataSet, IMDsys, IMDinitial, IMDobservables, [0.10, 0.02, 0.02, 0.02, 1, 1, 0.05, 0.05, 0.05, 0.10]; tol=0.1)

TagBot trigger issue

This issue is used to trigger TagBot; feel free to unsubscribe.

If you haven't already, you should update your TagBot.yml to include issue comment triggers.
Please see this post on Discourse for instructions and more details.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.