pharmsol 0.27.0

Rust library for solving analytic and ode-defined pharmacometric models.
Documentation
pub(crate) const STRUCTURED_BLOCK_CORPUS: &str = r#"model one_cmt_oral_iv {
  kind ode
  parameters {
    ka,
    cl,
    v,
    tlag,
    f_oral,
  }
  covariates {
    wt @linear,
  }
  states {
    depot,
    central,
  }
  routes {
    oral -> depot {
      lag = tlag
      bioavailability = f_oral
    }

    iv -> central
  }
  derive {
    cl_i = cl * pow(wt / 70.0, 0.75)
    if wt > 120.0 {
      v_i = v * 1.15
    } else {
      v_i = v
    }
    ke = cl_i / v_i
  }
  dynamics {
    ddt(depot) = -ka * depot
    ddt(central) = ka * depot - ke * central
  }
  outputs {
    cp = central / v_i
  }
}


model transit_absorption {
  kind ode
  parameters {
    ktr,
    ke,
    v,
  }
  states {
    transit[4],
    central,
  }
  routes {
    oral -> transit[0]
  }
  dynamics {
    ddt(transit[0]) = -ktr * transit[0]
    for stage in 1..4 {
      ddt(transit[stage]) = ktr * transit[stage - 1] - ktr * transit[stage]
    }
    ddt(central) = ktr * transit[3] - ke * central
  }
  outputs {
    cp = central / v
  }
}


model one_cmt_abs {
  kind analytical
  parameters {
    ka,
    ke,
    v,
  }
  states {
    depot,
    central,
  }
  routes {
    oral -> depot
  }
  analytical {
    structure = one_compartment_with_absorption
  }
  outputs {
    cp = central / v
  }
}


model vanco_sde {
  kind sde
  parameters {
    ka,
    ke0,
    kcp,
    kpc,
    vol,
    ske,
  }
  covariates {
    wt @locf,
  }
  states {
    depot,
    central,
    peripheral,
    ke_latent,
  }
  routes {
    oral -> depot
  }
  particles 1000
  init {
    ke_latent = ke0
  }
  drift {
    ddt(depot) = -ka * depot
    ddt(central) = ka * depot - (ke_latent + kcp) * central + kpc * peripheral
    ddt(peripheral) = kcp * central - kpc * peripheral
    ddt(ke_latent) = -ke_latent + ke0
  }
  diffusion {
    noise(ke_latent) = ske
  }
  outputs {
    cp = central / (vol * wt)
  }
}
"#;