1#[cfg(feature = "gridfm")]
5pub mod gridfm;
6pub mod meta;
7pub mod mtx;
8pub mod sensitivity;
9
10#[cfg(feature = "gridfm")]
11pub use gridfm::{
12 GridfmOptions, GridfmOutputs, GridfmRead, GridfmSnapshot, GridfmTables, gridfm_base_case,
13 gridfm_record_batches, gridfm_record_batches_batch, numbered_snapshots, read_gridfm_dataset,
14 read_gridfm_network, read_gridfm_scenarios, write_gridfm_batch, write_gridfm_dataset,
15};
16pub use meta::{CaseMetadata, MatrixMetadata, write_meta_json};
17pub use mtx::{read_mtx, read_vector_mtx, write_mtx, write_vector_mtx};
18pub use sensitivity::write_sensitivity_mtx_with_options;
19
20#[cfg(feature = "gridfm")]
31pub fn read_dataset_dir(
32 dir: impl AsRef<std::path::Path>,
33 from: &str,
34 scenario: i64,
35) -> crate::Result<GridfmRead> {
36 require_dataset_format(from)?;
37 read_gridfm_dataset(dir, scenario)
38}
39
40#[cfg(feature = "gridfm")]
47pub fn dataset_scenario_ids(
48 dir: impl AsRef<std::path::Path>,
49 from: &str,
50) -> crate::Result<Vec<i64>> {
51 require_dataset_format(from)?;
52 gridfm::gridfm_scenario_ids(dir)
53}
54
55#[cfg(feature = "gridfm")]
56fn require_dataset_format(from: &str) -> powerio::Result<()> {
57 if from.eq_ignore_ascii_case("gridfm") {
58 return Ok(());
59 }
60 Err(powerio::Error::UnknownFormat(format!(
61 "{from} is not a dataset directory format (dataset formats: gridfm); \
62 PyPSA CSV directories parse through parse_file"
63 )))
64}