powergrid_synth.distribution.distribution_analysis

Distribution analysis: fit Schweitzer parameters from reference feeders.

Provides routines to extract empirical distributions from a collection of real feeders and fit the parametric families used in the Schweitzer model (via MLE / method-of-moments / KL minimization).

Module Contents

powergrid_synth.distribution.distribution_analysis._cable_lengths(feeders)[source]

Collect all cable lengths in km.

Parameters:

feeders (Sequence[networkx.Graph])

Return type:

numpy.ndarray

powergrid_synth.distribution.distribution_analysis._degrees(feeders)[source]

Collect all node degrees (excluding source/leaf fixed degrees).

Parameters:

feeders (Sequence[networkx.Graph])

Return type:

numpy.ndarray

powergrid_synth.distribution.distribution_analysis._hop_distances(feeders)[source]

Collect all hop distances (excluding source h=0 and root h=1).

Parameters:

feeders (Sequence[networkx.Graph])

Return type:

numpy.ndarray

powergrid_synth.distribution.distribution_analysis._injection_fractions(feeders)[source]

Fraction of nodes that are injection, per feeder.

Parameters:

feeders (Sequence[networkx.Graph])

Return type:

numpy.ndarray

powergrid_synth.distribution.distribution_analysis._intermediate_fractions(feeders)[source]

Fraction of nodes that are intermediate, per feeder.

Parameters:

feeders (Sequence[networkx.Graph])

Return type:

numpy.ndarray

powergrid_synth.distribution.distribution_analysis._load_deviations(feeders)[source]

Per-feeder deviations of load from uniform share.

Parameters:

feeders (Sequence[networkx.Graph])

Return type:

numpy.ndarray

powergrid_synth.distribution.distribution_analysis.fit_beta(data)[source]

Fit Beta distribution to fraction data in (0, 1).

Parameters:

data (numpy.ndarray)

Return type:

powergrid_synth.distribution.distribution_params.BetaParams

powergrid_synth.distribution.distribution_analysis.fit_exponential_clip(feeders)[source]

Fit exponential clipping g_max(h) = a * exp(b*h) from max lengths per hop.

Parameters:

feeders (Sequence[networkx.Graph])

Return type:

powergrid_synth.distribution.distribution_params.ExponentialClip

powergrid_synth.distribution.distribution_analysis.fit_mixture_gamma(data)[source]

Fit a two-component Gamma mixture via EM (simplified).

Uses a basic EM iteration (50 steps) with Gamma MLE per component. Falls back to defaults if the data is insufficient.

Parameters:

data (numpy.ndarray)

Return type:

powergrid_synth.distribution.distribution_params.MixtureGammaParams

powergrid_synth.distribution.distribution_analysis.fit_modified_cauchy(data)[source]

Fit positive-support Cauchy (x0, gamma) to cable-length data.

Parameters:

data (numpy.ndarray)

Return type:

powergrid_synth.distribution.distribution_params.ModifiedCauchyParams

powergrid_synth.distribution.distribution_analysis.fit_neg_binomial(data)[source]

Fit Negative Binomial to hop-distance data (0-shifted).

Parameters:

data (numpy.ndarray)

Return type:

powergrid_synth.distribution.distribution_params.NegBinomParams

powergrid_synth.distribution.distribution_analysis.fit_params_from_feeders(feeders)[source]

Fit all Schweitzer parameters from a collection of reference feeders.

Parameters:

feeders (sequence of nx.Graph) – Reference distribution feeder graphs, each annotated with h, P_mw, node_type, length_km attributes.

Returns:

Fitted parameter set ready for SchweetzerFeederGenerator.

Return type:

DistributionSynthParams

powergrid_synth.distribution.distribution_analysis.fit_power_law_clip(feeders)[source]

Fit power-law clipping g_dmax(h) = a * h^b from max degrees per hop.

Parameters:

feeders (Sequence[networkx.Graph])

Return type:

powergrid_synth.distribution.distribution_params.PowerLawClip

powergrid_synth.distribution.distribution_analysis.fit_t_location_scale(data)[source]

Fit t-Location-Scale distribution via MLE.

Parameters:

data (numpy.ndarray)

Return type:

powergrid_synth.distribution.distribution_params.TLocationScaleParams