Run flux variability analysis (FVA) on the `model` (of type `StandardModel`).
Optionally specifying problem modifications like in [`flux_balance_analysis`](@ref).
This algorithm runs FBA on the model to determine the optimum of the objective.
This optimum then constrains subsequent problems, where `optimum_bound` can be used to relax this constraint as a fraction of the FBA optimum.
This optimum then constrains subsequent problems, where `optimum_bound` can be used to
relax this constraint as a fraction of the FBA optimum, e.g.
Note, the `optimizer` must be set to perform the analysis, any JuMP solver will work.
Note, this function only runs serially.
Consider using a different model type for parallel implementations.
Returns two dictionaries (`fva_max` and `fva_min`) that map each reaction `id` to dictionaries of the resultant flux distributions when that `id` is optimized.
sol = pfba(model, biomass, optimizer; solver_attributes=atts)
```
"""
function parsimonious_flux_balance_analysis(model::MetabolicModel,optimizer;modifications=[(model,opt_model)->nothing],qp_solver=[(model,opt_model)->nothing],qp_solver_attributes=[(model,opt_model)->nothing])
function parsimonious_flux_balance_analysis_vec(model::StandardModel,optimizer;modifications=[(model,opt_model)->nothing],qp_solver=[(model,opt_model)->nothing],qp_solver_attributes=[(model,opt_model)->nothing])
function parsimonious_flux_balance_analysis_dict(model::StandardModel,optimizer;modifications=[(model,opt_model)->nothing],qp_solver=[(model,opt_model)->nothing],qp_solver_attributes=[(model,opt_model)->nothing])