Fitting Functions
fit()
The primary estimation entry point. Runs FOCE, FOCEI, or SAEM depending on options.method.
#![allow(unused)] fn main() { pub fn fit( model: &CompiledModel, population: &Population, init_params: &ModelParameters, options: &FitOptions, ) -> Result<FitResult, String> }
Parameters:
model: Compiled model fromparse_model_file()orparse_full_model_file()population: Population data fromread_nonmem_csv()init_params: Initial parameter valuesoptions: Estimation configuration
Returns: FitResult with parameter estimates, standard errors, and per-subject diagnostics.
Example:
#![allow(unused)] fn main() { let model = parse_model_file(Path::new("model.ferx"))?; let population = read_nonmem_csv(Path::new("data.csv"), None)?; let options = FitOptions::default(); let result = fit(&model, &population, &model.default_params, &options)?; println!("OFV: {:.4}", result.ofv); }
fit_from_files()
Convenience wrapper that handles parsing and data reading.
#![allow(unused)] fn main() { pub fn fit_from_files( model_path: &str, data_path: &str, covariate_columns: Option<&[&str]>, options: Option<FitOptions>, ) -> Result<FitResult, String> }
Example:
#![allow(unused)] fn main() { let result = fit_from_files( "model.ferx", "data.csv", None, // Auto-detect covariates None, // Default options )?; }
run_model_with_data()
Full pipeline: parse model file, read data, fit. Returns both the fit result and the population.
#![allow(unused)] fn main() { pub fn run_model_with_data( model_path: &str, data_path: &str, ) -> Result<(FitResult, Population), String> }
Uses the [fit_options] from the model file.
run_model_simulate()
Simulation-estimation: parse model, generate data from [simulation] block, fit.
#![allow(unused)] fn main() { pub fn run_model_simulate( model_path: &str, ) -> Result<(FitResult, Population), String> }
Requires a [simulation] block in the model file.
build_fit_inputs()
Extract initial parameters and fit options from a parsed model, separating parsing from estimation for timing purposes.
#![allow(unused)] fn main() { pub fn build_fit_inputs( parsed: &ParsedModel, ) -> Result<(ModelParameters, FitOptions), String> }
Example:
#![allow(unused)] fn main() { let parsed = parse_full_model_file(Path::new("model.ferx"))?; let (init_params, options) = build_fit_inputs(&parsed)?; let population = read_nonmem_csv(Path::new("data.csv"), None)?; let result = fit(&parsed.model, &population, &init_params, &options)?; }