Implementing New Methods
This guide is for contributors adding or extending the stable core VOI methods in voiage.
Current stable method surface
Section titled “Current stable method surface”evpievppievsienbscalculate_ceafcalculate_dominancevalue_of_heterogeneity
Before you start
Section titled “Before you start”Review existing implementations before adding a new method:
voiage/methods/basic.pyfor EVPI and EVPPIvoiage/methods/sample_information.pyfor EVSI and ENBSvoiage/methods/ceaf.pyfor CEAF summariesvoiage/methods/dominance.pyfor dominance and frontier calculationsvoiage/methods/heterogeneity.pyfor subgroup-aware value calculations
Method shape
Section titled “Method shape”Keep function signatures explicit, typed, and easy to route from the analysis facade. Accept structured inputs rather than raw arrays where possible, return a dataclass or result object for multi-field summaries, and keep the public wrapper on DecisionAnalysis thin.
Implementation checklist
Section titled “Implementation checklist”- Add the method implementation under
voiage/methods/ - Use existing schema objects or add a new one in
voiage/schema.py - Add a
DecisionAnalysiswrapper if the method belongs on the main analysis surface - Export the new method from
voiage/methods/__init__.py - Add unit tests covering normal inputs, boundary conditions, and validation failures
- Add or update user-guide examples
- If CLI-visible, add the command or option wiring and test it
- Update the changelog and todo tracking entry