Skip to main content

Crate cobre_io

Crate cobre_io 

Source
Expand description

§cobre-io

Case directory loading, validation, and result writing for the Cobre power systems ecosystem.

This crate provides two top-level entry points:

  • load_case — reads a case directory and produces a fully-validated cobre_core::System ready for use by the solver.
  • write_results — accepts aggregate result types and writes all output artifacts to a specified root directory.

§Loading pipeline

load_case executes a six-layer validation pipeline:

  1. Structural validation — checks that required files exist on disk and records which optional files are present (validation::structural).
  2. Schema validation — verifies required fields, types, and value ranges.
  3. Referential integrity — checks all entity ID cross-references are resolvable.
  4. Dimensional consistency — cross-file coverage checks (e.g., inflow params cover all hydros).
  5. Semantic validation — domain business rules (acyclic cascade, penalty ordering, PAR stationarity, etc.).
  6. Cross-file resolution and cross-validation — multi-file consistency checks that span the parsed data assembled by earlier layers (productivity source conflict detection, scalar-parameter hydro-ID existence, per-stage length checks).

All validation diagnostics are collected by validation::ValidationContext before failing, so users see every problem in a single report. Final errors are reported via LoadError, which carries enough context for diagnostic messages without re-reading input files.

§Status

This crate is in early development. The API will change.

See the repository for the current status.

Re-exports§

pub use broadcast::BroadcastComputedParameter;
pub use broadcast::BroadcastParameterKind;
pub use broadcast::BroadcastScalarParameter;
pub use broadcast::deserialize_parameters;
pub use broadcast::deserialize_system;
pub use broadcast::serialize_parameters;
pub use broadcast::serialize_system;
pub use config::BoundaryPolicy;
pub use config::Config;
pub use config::EstimationConfig;
pub use config::OrderSelectionMethod;
pub use config::PolicyMode;
pub use config::parse_config;
pub use constraints::BusPenaltyOverrideRow;
pub use constraints::ContractBoundsRow;
pub use constraints::GenericConstraintBoundsRow;
pub use constraints::HydroBoundsRow;
pub use constraints::HydroPenaltyOverrideRow;
pub use constraints::LineBoundsRow;
pub use constraints::LineBusPairIndex;
pub use constraints::LinePenaltyOverrideRow;
pub use constraints::NcsPenaltyOverrideRow;
pub use constraints::PumpingBoundsRow;
pub use constraints::ThermalBoundsRow;
pub use constraints::build_line_bus_pair_index;
pub use constraints::load_contract_bounds;
pub use constraints::load_generic_constraint_bounds;
pub use constraints::load_generic_constraints;
pub use constraints::load_hydro_bounds;
pub use constraints::load_line_bounds;
pub use constraints::load_penalty_overrides_bus;
pub use constraints::load_penalty_overrides_hydro;
pub use constraints::load_penalty_overrides_line;
pub use constraints::load_penalty_overrides_ncs;
pub use constraints::load_pumping_bounds;
pub use constraints::load_thermal_bounds;
pub use constraints::parse_contract_bounds;
pub use constraints::parse_generic_constraint_bounds;
pub use constraints::parse_generic_constraints;
pub use constraints::parse_hydro_bounds;
pub use constraints::parse_line_bounds;
pub use constraints::parse_penalty_overrides_bus;
pub use constraints::parse_penalty_overrides_hydro;
pub use constraints::parse_penalty_overrides_line;
pub use constraints::parse_penalty_overrides_ncs;
pub use constraints::parse_pumping_bounds;
pub use constraints::parse_thermal_bounds;
pub use error::LoadError;
pub use extensions::EvaporationModelRow;
pub use extensions::FittingWindow;
pub use extensions::FphaColumnLayout;
pub use extensions::FphaDeviationPointRow;
pub use extensions::FphaHyperplaneRow;
pub use extensions::HydroEnergyProductivityRow;
pub use extensions::HydroGeometryRow;
pub use extensions::HydroReferenceVolumeFractions;
pub use extensions::PlaneReductionConfig;
pub use extensions::ProductionModelConfig;
pub use extensions::ProductionModelFile;
pub use extensions::SeasonConfig;
pub use extensions::SelectionMode;
pub use extensions::StageRange;
pub use extensions::build_hydro_reference_volumes_resolved;
pub use extensions::load_fpha_hyperplanes;
pub use extensions::load_hydro_energy_productivity;
pub use extensions::load_hydro_geometry;
pub use extensions::load_production_models;
pub use extensions::load_scalar_parameters_json;
pub use extensions::parse_evaporation_models;
pub use extensions::parse_fpha_deviation_points;
pub use extensions::parse_fpha_hyperplanes;
pub use extensions::parse_hydro_energy_productivity;
pub use extensions::parse_hydro_geometry;
pub use extensions::parse_production_models;
pub use extensions::parse_scalar_parameters_json;
pub use initial_conditions::parse_initial_conditions;
pub use output::policy::codec::deserialize_checkpoint_manifest;
pub use output::policy::codec::serialize_checkpoint_manifest;
pub use output::policy::records::CheckpointManifest;
pub use output::policy::ENTITY_SLOT_DELIVERY_DATE_SENTINEL;
pub use output::policy::EntitySlot;
pub use output::policy::FORMAT_VERSION;
pub use output::policy::GraphManifest;
pub use output::policy::ManifestEdge;
pub use output::policy::ManifestNode;
pub use output::policy::OwnedPolicyBasisRecord;
pub use output::policy::OwnedPolicyCutRecord;
pub use output::policy::PolicyBasisRecord;
pub use output::policy::PolicyCheckpoint;
pub use output::policy::PolicyCutRecord;
pub use output::policy::ProducerBlock;
pub use output::policy::STAGE_CUTS_GRAPH_STAGE_ID_SENTINEL;
pub use output::policy::STAGE_CUTS_NODE_ID_SENTINEL;
pub use output::policy::STAGE_STATES_NODE_ID_SENTINEL;
pub use output::policy::StageCutsPayload;
pub use output::policy::StageCutsReadResult;
pub use output::policy::StageStatesPayload;
pub use output::policy::StageStatesReadResult;
pub use output::policy::StateFamily;
pub use output::policy::deserialize_stage_basis;
pub use output::policy::deserialize_stage_cuts;
pub use output::policy::deserialize_stage_states;
pub use output::policy::read_policy_checkpoint;
pub use output::policy::serialize_stage_basis;
pub use output::policy::serialize_stage_cuts;
pub use output::policy::serialize_stage_states;
pub use output::policy::write_policy_checkpoint;
pub use output::ConvergenceSummary;
pub use output::DeviationSummary;
pub use output::DeviationWorstEntry;
pub use output::DistributionInfo;
pub use output::FixedDeliveryRow;
pub use output::GenericConstraintEchoRow;
pub use output::HostLayout;
pub use output::IterationRecord;
pub use output::MetadataBounds;
pub use output::MetadataConfiguration;
pub use output::MetadataConvergence;
pub use output::MetadataCost;
pub use output::MetadataIterations;
pub use output::MetadataProblemDimensions;
pub use output::MetadataRowPool;
pub use output::MetadataScenarios;
pub use output::MetadataSimulationSolveStats;
pub use output::MetadataTrainingSolveStats;
pub use output::OutputContext;
pub use output::OutputError;
pub use output::ParquetWriterConfig;
pub use output::RowPoolStatistics;
pub use output::RowSelectionRecord;
pub use output::SetupTimings;
pub use output::SimulationMetadata;
pub use output::SimulationOutput;
pub use output::SolverStatsRow;
pub use output::TrainingMetadata;
pub use output::TrainingOutput;
pub use output::TrainingParquetWriter;
pub use output::WorkerTimingRecord;
pub use output::get_hostname;
pub use output::now_iso8601;
pub use output::read_convergence_summary;
pub use output::read_hydro_model_summary;
pub use output::read_provenance_report;
pub use output::read_simulation_metadata;
pub use output::read_training_metadata;
pub use output::write_dictionaries;
pub use output::write_evaporation_models;
pub use output::write_fixed_delivery;
pub use output::write_fpha_deviation_points;
pub use output::write_fpha_hyperplanes;
pub use output::write_generic_constraint_echo;
pub use output::write_hydro_model_summary;
pub use output::write_provenance_report;
pub use output::write_results;
pub use output::write_row_selection_records;
pub use output::write_scaling_report;
pub use output::write_simulation_metadata;
pub use output::write_simulation_results;
pub use output::write_simulation_solver_stats;
pub use output::write_solver_stats;
pub use output::write_training_metadata;
pub use output::write_training_results;
pub use penalties::parse_penalties;
pub use post_study_stages::parse_post_study_stages;
pub use report::ReportEntry;
pub use report::ValidationReport;
pub use report::generate_report;
pub use resolution::resolve_bounds;
pub use resolution::resolve_penalties;
pub use scenarios::BlockFactor;
pub use scenarios::InflowArCoefficientRow;
pub use scenarios::InflowSeasonalStatsRow;
pub use scenarios::LoadFactorEntry;
pub use scenarios::LoadSeasonalStatsRow;
pub use scenarios::NoiseOpeningRow;
pub use scenarios::ScenarioData;
pub use scenarios::assemble_inflow_models;
pub use scenarios::assemble_load_models;
pub use scenarios::load_correlation;
pub use scenarios::load_external_inflow_scenarios;
pub use scenarios::load_external_load_scenarios;
pub use scenarios::load_external_ncs_scenarios;
pub use scenarios::load_inflow_ar_coefficients;
pub use scenarios::load_inflow_history;
pub use scenarios::load_inflow_seasonal_stats;
pub use scenarios::load_load_factors;
pub use scenarios::load_load_seasonal_stats;
pub use scenarios::load_noise_openings;
pub use scenarios::load_scenarios;
pub use scenarios::parse_correlation;
pub use scenarios::parse_external_inflow_scenarios;
pub use scenarios::parse_external_load_scenarios;
pub use scenarios::parse_external_ncs_scenarios;
pub use scenarios::parse_inflow_ar_coefficients;
pub use scenarios::parse_inflow_history;
pub use scenarios::parse_inflow_seasonal_stats;
pub use scenarios::parse_load_factors;
pub use scenarios::parse_load_seasonal_stats;
pub use stage_resolve::StageIdResolver;
pub use stages::StagesData;
pub use stages::build_season_stage_map;
pub use stages::parse_stages;
pub use system::load_energy_contracts;
pub use system::load_non_controllable_sources;
pub use system::load_pumping_stations;
pub use system::parse_buses;
pub use system::parse_energy_contracts;
pub use system::parse_hydros;
pub use system::parse_lines;
pub use system::parse_non_controllable_sources;
pub use system::parse_pumping_stations;
pub use system::parse_thermals;
pub use validation::scalar_parameters::validate_scalar_parameters;
pub use validation::semantic::seed_lag_state_depth;
pub use validation::structural::FileManifest;
pub use validation::structural::validate_structure;
pub use validation::ErrorKind;
pub use validation::Severity;
pub use validation::ValidationContext;
pub use validation::ValidationEntry;

Modules§

broadcast
Postcard serialization helpers for MPI broadcast of System and ScalarParameter collections.
config
Configuration types for config.json.
constraints
Parsers for constraint files in the constraints/ subdirectory.
error
Error types for the cobre-io loading pipeline.
extensions
Parsers for extension data files in the system/ subdirectory.
initial_conditions
Parsing for initial_conditions.json — initial system state.
output
Output writers for simulation results and policy files.
penalties
Parsing for penalties.json — global penalty defaults.
post_study_stages
Parsing for post_study_stages.json — the post-horizon boundary calendar and per-(thermal, post-study stage) cost/bounds table.
report
Structured validation report for programmatic consumption.
resolution
Resolution functions that apply the penalty and bound cascades.
scenarios
Parsers for scenario data files in the scenarios/ subdirectory.
stage_resolve
The single owner of the stage_id domain-id reading.
stages
Parsing for stages.json — temporal structure and policy graph.
system
Entity registry parsers for the system/ subdirectory.
validation
Validation infrastructure for the cobre-io loading pipeline.

Structs§

CaseArtifacts
Auxiliary rows produced by the load pipeline alongside System.
ExternalLoadRow
A single row from scenarios/external_load_scenarios.parquet.
ExternalNcsRow
A single row from scenarios/external_ncs_scenarios.parquet.
ExternalScenarioRow
A single row from scenarios/external_inflow_scenarios.parquet.
InflowHistoryRow
A single row from scenarios/inflow_history.parquet.
LoadedCase
Fully-loaded case bundle: the validated System plus the auxiliary row sets that downstream consumers need without re-reading the case directory.

Functions§

load_case
Load a case directory and return a fully-validated System.
load_case_with_artifacts
Load a case directory and return the validated System together with the CaseArtifacts bundle of pre-parsed auxiliary rows.
validate_case
Load a case directory and return both the fully-validated System and a ValidationReport containing all warnings collected during the pipeline.
validate_case_with_artifacts
Load a case directory and return the validated LoadedCase together with a ValidationReport containing all warnings collected during the pipeline.