From 7960855727689d342db06ae38e6b0bd55d6d3561 Mon Sep 17 00:00:00 2001 From: "Documenter.jl" Date: Tue, 29 Oct 2024 19:59:12 +0000 Subject: [PATCH] build based on 8c4d57d --- dev/.documenter-siteinfo.json | 2 +- dev/InfrastructureSystems/index.html | 874 +++++++++--------- dev/dev_guide/auto_generation/index.html | 2 +- .../components_and_container/index.html | 2 +- dev/dev_guide/logging/index.html | 2 +- dev/dev_guide/recorder/index.html | 2 +- dev/dev_guide/tests/index.html | 2 +- dev/dev_guide/time_series/index.html | 2 +- dev/index.html | 2 +- dev/search_index.js | 2 +- dev/style/index.html | 2 +- 11 files changed, 447 insertions(+), 447 deletions(-) diff --git a/dev/.documenter-siteinfo.json b/dev/.documenter-siteinfo.json index 7af3d4d60..24064f045 100644 --- a/dev/.documenter-siteinfo.json +++ b/dev/.documenter-siteinfo.json @@ -1 +1 @@ -{"documenter":{"julia_version":"1.11.1","generation_timestamp":"2024-10-28T14:48:43","documenter_version":"1.7.0"}} \ No newline at end of file +{"documenter":{"julia_version":"1.11.1","generation_timestamp":"2024-10-29T19:59:05","documenter_version":"1.7.0"}} \ No newline at end of file diff --git a/dev/InfrastructureSystems/index.html b/dev/InfrastructureSystems/index.html index 3f6681b0e..f4b55be32 100644 --- a/dev/InfrastructureSystems/index.html +++ b/dev/InfrastructureSystems/index.html @@ -1,23 +1,23 @@ -API · InfrastructureSystems.jl

InfrastructureSystems API Reference

InfrastructureSystems.AverageRateCurveType

An average rate curve, relating the production quantity to the average cost rate from the origin: y = f(x)/x. Can be used, for instance, in the representation of a CostCurve where x is MW and y is currency/MWh, or in the representation of a FuelCurve where x is MW and y is fuel/MWh. Typically calculated by dividing absolute values of cost rate or fuel input rate by absolute values of electric power.

source
InfrastructureSystems.CompressionSettingsType
CompressionSettings(enabled, type, level, shuffle)

Provides customization of HDF5 compression settings.

  • enabled::Bool: Controls whether compression is enabled.

  • type::InfrastructureSystems.CompressionTypesModule.CompressionTypes: Specifies the type of compression to use.

  • level::Int64: Supported values are 0-9. Higher values deliver better compression ratios but take longer.

  • shuffle::Bool: Controls whether to enable the shuffle filter. Used with DEFLATE.

Refer to the HDF5.jl and HDF5 documentation for more details on the options.

Example

settings = CompressionSettings(
+API · InfrastructureSystems.jl

InfrastructureSystems API Reference

InfrastructureSystems.AverageRateCurveType

An average rate curve, relating the production quantity to the average cost rate from the origin: y = f(x)/x. Can be used, for instance, in the representation of a CostCurve where x is MW and y is currency/MWh, or in the representation of a FuelCurve where x is MW and y is fuel/MWh. Typically calculated by dividing absolute values of cost rate or fuel input rate by absolute values of electric power.

source
InfrastructureSystems.CompressionSettingsType
CompressionSettings(enabled, type, level, shuffle)

Provides customization of HDF5 compression settings.

  • enabled::Bool: Controls whether compression is enabled.

  • type::InfrastructureSystems.CompressionTypesModule.CompressionTypes: Specifies the type of compression to use.

  • level::Int64: Supported values are 0-9. Higher values deliver better compression ratios but take longer.

  • shuffle::Bool: Controls whether to enable the shuffle filter. Used with DEFLATE.

Refer to the HDF5.jl and HDF5 documentation for more details on the options.

Example

settings = CompressionSettings(
     enabled = true,
     type = CompressionTypes.DEFLATE,  # BLOSC is also supported
     level = 3,
     shuffle = true,
-)
source
InfrastructureSystems.CostCurveType
struct CostCurve{T<:InfrastructureSystems.ValueCurve} <: InfrastructureSystems.ProductionVariableCostCurve{T<:InfrastructureSystems.ValueCurve}
  • value_curve::InfrastructureSystems.ValueCurve: The underlying ValueCurve representation of this ProductionVariableCostCurve

  • power_units::InfrastructureSystems.UnitSystemModule.UnitSystem: (default: natural units (MW)) The units for the x-axis of the curve

  • vom_cost::LinearCurve: (default of 0) Additional proportional Variable Operation and Maintenance Cost in /(power_unit h), represented as a LinearCurve

CostCurve(value_curve, power_units, vom_cost)
-CostCurve(; value_curve, power_units, vom_cost)

Direct representation of the variable operation cost of a power plant in currency. Composed of a ValueCurve that may represent input-output, incremental, or average rate data. The default units for the x-axis are MW and can be specified with power_units.

source
InfrastructureSystems.CostCurveType
struct CostCurve{T<:InfrastructureSystems.ValueCurve} <: InfrastructureSystems.ProductionVariableCostCurve{T<:InfrastructureSystems.ValueCurve}
  • value_curve::InfrastructureSystems.ValueCurve: The underlying ValueCurve representation of this ProductionVariableCostCurve

  • power_units::InfrastructureSystems.UnitSystemModule.UnitSystem: (default: natural units (MW)) The units for the x-axis of the curve

  • vom_cost::LinearCurve: (default of 0) Additional proportional Variable Operation and Maintenance Cost in /(power_unit h), represented as a LinearCurve

CostCurve(value_curve, power_units, vom_cost)
+CostCurve(; value_curve, power_units, vom_cost)

Direct representation of the variable operation cost of a power plant in currency. Composed of a ValueCurve that may represent input-output, incremental, or average rate data. The default units for the x-axis are MW and can be specified with power_units.

source
InfrastructureSystems.DeterministicType
mutable struct Deterministic <: AbstractDeterministic
     name::String
     data::SortedDict
     resolution::Dates.Period
     scaling_factor_multiplier::Union{Nothing, Function}
     internal::InfrastructureSystemsInternal
-end

A deterministic forecast for a particular data field in a Component.

Arguments

  • name::String: user-defined name
  • data::SortedDict: timestamp - scalingfactor
  • resolution::Dates.Period: forecast resolution
  • scaling_factor_multiplier::Union{Nothing, Function}: Applicable when the time series data are scaling factors. Called on the associated component to convert the values.
  • internal::InfrastructureSystemsInternal
source
InfrastructureSystems.DeterministicMethod
Deterministic(
+end

A deterministic forecast for a particular data field in a Component.

Arguments

  • name::String: user-defined name
  • data::SortedDict: timestamp - scalingfactor
  • resolution::Dates.Period: forecast resolution
  • scaling_factor_multiplier::Union{Nothing, Function}: Applicable when the time series data are scaling factors. Called on the associated component to convert the values.
  • internal::InfrastructureSystemsInternal
source
InfrastructureSystems.DeterministicMethod
Deterministic(
     name::AbstractString,
     input_data::AbstractDict{Dates.DateTime, <:TimeSeries.TimeArray};
     normalization_factor,
     scaling_factor_multiplier
 ) -> InfrastructureSystems.Deterministic
-

Construct Deterministic from a Dict of TimeArrays.

Arguments

  • name::AbstractString: user-defined name
  • input_data::AbstractDict{Dates.DateTime, TimeSeries.TimeArray}: time series data.
  • normalization_factor::NormalizationFactor = 1.0: optional normalization factor to apply to each data entry
  • scaling_factor_multiplier::Union{Nothing, Function} = nothing: If the data are scaling factors then this function will be called on the component and applied to the data when get_time_series_array is called.
  • timestamp = :timestamp: If the values are DataFrames is passed then this must be the column name that contains timestamps.
source
InfrastructureSystems.DeterministicMethod
Deterministic(
+

Construct Deterministic from a Dict of TimeArrays.

Arguments

  • name::AbstractString: user-defined name
  • input_data::AbstractDict{Dates.DateTime, TimeSeries.TimeArray}: time series data.
  • normalization_factor::NormalizationFactor = 1.0: optional normalization factor to apply to each data entry
  • scaling_factor_multiplier::Union{Nothing, Function} = nothing: If the data are scaling factors then this function will be called on the component and applied to the data when get_time_series_array is called.
  • timestamp = :timestamp: If the values are DataFrames is passed then this must be the column name that contains timestamps.
source
InfrastructureSystems.DeterministicMethod
Deterministic(
     name::AbstractString,
     filename::AbstractString,
     component::InfrastructureSystems.InfrastructureSystemsComponent,
@@ -25,14 +25,14 @@
     normalization_factor,
     scaling_factor_multiplier
 ) -> InfrastructureSystems.Deterministic
-

Construct Deterministic from a CSV file. The first column must be a timestamp in DateTime format and the columns the values in the forecast window.

Arguments

  • name::AbstractString: user-defined name
  • filename::AbstractString: name of CSV file containing data
  • component::InfrastructureSystemsComponent: component associated with the data
  • normalization_factor::NormalizationFactor = 1.0: optional normalization factor to apply to each data entry
  • scaling_factor_multiplier::Union{Nothing, Function} = nothing: If the data are scaling factors then this function will be called on the component and applied to the data when get_time_series_array is called.
source
InfrastructureSystems.DeterministicMethod
Deterministic(
+

Construct Deterministic from a CSV file. The first column must be a timestamp in DateTime format and the columns the values in the forecast window.

Arguments

  • name::AbstractString: user-defined name
  • filename::AbstractString: name of CSV file containing data
  • component::InfrastructureSystemsComponent: component associated with the data
  • normalization_factor::NormalizationFactor = 1.0: optional normalization factor to apply to each data entry
  • scaling_factor_multiplier::Union{Nothing, Function} = nothing: If the data are scaling factors then this function will be called on the component and applied to the data when get_time_series_array is called.
source
InfrastructureSystems.DeterministicMethod
Deterministic(
     name::AbstractString,
     series_data::InfrastructureSystems.RawTimeSeries,
     resolution::Dates.Period;
     normalization_factor,
     scaling_factor_multiplier
 ) -> InfrastructureSystems.Deterministic
-

Construct Deterministic from RawTimeSeries.

source
InfrastructureSystems.DeterministicMethod
Deterministic(
     src::InfrastructureSystems.Deterministic,
     name::AbstractString;
     scaling_factor_multiplier
@@ -56,11 +56,11 @@
     "max_reactive_power"
     scaling_factor_multiplier = get_max_reactive_power,
 )
-add_time_series!(sys, generator, forecast_max_reactive_power)
source
InfrastructureSystems.DeterministicMethod
Deterministic(
     forecast::InfrastructureSystems.Deterministic,
     data
 ) -> InfrastructureSystems.Deterministic
-

Construct a new Deterministic from an existing instance and a subset of data.

source
InfrastructureSystems.DeterministicMetadataType
mutable struct DeterministicMetadata <: ForecastMetadata
     name::String
     resolution::Dates.Period
     initial_timestamp::Dates.DateTime
@@ -72,56 +72,56 @@
     scaling_factor_multiplier::Union{Nothing, Function}
     features::Dict{String, Union{Bool, Int, String}}
     internal::InfrastructureSystemsInternal
-end

A deterministic forecast for a particular data field in a Component.

Arguments

  • name::String: user-defined name
  • resolution::Dates.Period:
  • initial_timestamp::Dates.DateTime: time series availability time
  • interval::Dates.Period: time step between forecast windows
  • count::Int: number of forecast windows
  • time_series_uuid::UUIDs.UUID: reference to time series data
  • horizon::Dates.Period: length of this time series
  • time_series_type::Type{<:AbstractDeterministic}: Type of the time series data associated with this metadata.
  • scaling_factor_multiplier::Union{Nothing, Function}: (default: nothing) Applicable when the time series data are scaling factors. Called on the associated component to convert the values.
  • features::Dict{String, Union{Bool, Int, String}}: (default: Dict{String, Any}()) User-defined tags that differentiate multiple time series arrays that represent the same component attribute, such as different arrays for different scenarios or years.
  • internal::InfrastructureSystemsInternal:
source
InfrastructureSystems.DeterministicSingleTimeSeriesType
mutable struct DeterministicSingleTimeSeries <: AbstractDeterministic
+end

A deterministic forecast for a particular data field in a Component.

Arguments

  • name::String: user-defined name
  • resolution::Dates.Period:
  • initial_timestamp::Dates.DateTime: time series availability time
  • interval::Dates.Period: time step between forecast windows
  • count::Int: number of forecast windows
  • time_series_uuid::UUIDs.UUID: reference to time series data
  • horizon::Dates.Period: length of this time series
  • time_series_type::Type{<:AbstractDeterministic}: Type of the time series data associated with this metadata.
  • scaling_factor_multiplier::Union{Nothing, Function}: (default: nothing) Applicable when the time series data are scaling factors. Called on the associated component to convert the values.
  • features::Dict{String, Union{Bool, Int, String}}: (default: Dict{String, Any}()) User-defined tags that differentiate multiple time series arrays that represent the same component attribute, such as different arrays for different scenarios or years.
  • internal::InfrastructureSystemsInternal:
source
InfrastructureSystems.DeterministicSingleTimeSeriesType
mutable struct DeterministicSingleTimeSeries <: AbstractDeterministic
     single_time_series::SingleTimeSeries
     initial_timestamp::Dates.DateTime
     interval::Dates.Period
     count::Int
     horizon::Int
-end

A deterministic forecast that wraps a SingleTimeSeries

DeterministicSingleTimeSeries behaves exactly like a Deterministic, but instead of storing windows at each initial time it provides a view into the existing SingleTimeSeries at incrementing offsets. This avoids large data duplications when there are the overlapping windows between forecasts.

Can be used as a perfect forecast based on historical data when real forecast data is unavailable.

Arguments

  • single_time_series::SingleTimeSeries: wrapped SingleTimeSeries object
  • initial_timestamp::Dates.DateTime: time series availability time
  • interval::Dates.Period: time step between forecast windows
  • count::Int: number of forecast windows
  • horizon::Int: length of this time series
source
InfrastructureSystems.ForecastCacheMethod

Construct ForecastCache to automatically control caching of forecast data. Maintains some count of forecast windows in memory based on cache_size_bytes.

Call Base.iterate or get_next_time_series_array! to retrieve data. Each iteration will return a TimeSeries.TimeArray covering one forecast window of length horizon_count.

Arguments

  • ::Type{T}: subtype of Forecast
  • component::InfrastructureSystemsComponent: component
  • name::AbstractString: forecast name
  • start_time::Union{Nothing, Dates.DateTime} = nothing: forecast start time
  • horizon_count::Union{Nothing, Int} = nothing: forecast horizon count
  • cache_size_bytes = TIME_SERIES_CACHE_SIZE_BYTES: maximum size of data to keep in memory
  • ignore_scaling_factors = false: controls whether to ignore scaling_factor_multiplier in the time series instance
source
InfrastructureSystems.FuelCurveType
struct FuelCurve{T<:InfrastructureSystems.ValueCurve} <: InfrastructureSystems.ProductionVariableCostCurve{T<:InfrastructureSystems.ValueCurve}
  • value_curve::InfrastructureSystems.ValueCurve: The underlying ValueCurve representation of this ProductionVariableCostCurve

  • power_units::InfrastructureSystems.UnitSystemModule.UnitSystem: (default: natural units (MW)) The units for the x-axis of the curve

  • fuel_cost::Union{Float64, InfrastructureSystems.TimeSeriesKey}: Either a fixed value for fuel cost or the TimeSeriesKey to a fuel cost time series

  • vom_cost::LinearCurve: (default of 0) Additional proportional Variable Operation and Maintenance Cost in /(power_unit h) represented as a LinearCurve

FuelCurve(value_curve, power_units, fuel_cost, vom_cost)
+end

A deterministic forecast that wraps a SingleTimeSeries

DeterministicSingleTimeSeries behaves exactly like a Deterministic, but instead of storing windows at each initial time it provides a view into the existing SingleTimeSeries at incrementing offsets. This avoids large data duplications when there are the overlapping windows between forecasts.

Can be used as a perfect forecast based on historical data when real forecast data is unavailable.

Arguments

  • single_time_series::SingleTimeSeries: wrapped SingleTimeSeries object
  • initial_timestamp::Dates.DateTime: time series availability time
  • interval::Dates.Period: time step between forecast windows
  • count::Int: number of forecast windows
  • horizon::Int: length of this time series
source
InfrastructureSystems.ForecastCacheMethod

Construct ForecastCache to automatically control caching of forecast data. Maintains some count of forecast windows in memory based on cache_size_bytes.

Call Base.iterate or get_next_time_series_array! to retrieve data. Each iteration will return a TimeSeries.TimeArray covering one forecast window of length horizon_count.

Arguments

  • ::Type{T}: subtype of Forecast
  • component::InfrastructureSystemsComponent: component
  • name::AbstractString: forecast name
  • start_time::Union{Nothing, Dates.DateTime} = nothing: forecast start time
  • horizon_count::Union{Nothing, Int} = nothing: forecast horizon count
  • cache_size_bytes = TIME_SERIES_CACHE_SIZE_BYTES: maximum size of data to keep in memory
  • ignore_scaling_factors = false: controls whether to ignore scaling_factor_multiplier in the time series instance
source
InfrastructureSystems.FuelCurveType
struct FuelCurve{T<:InfrastructureSystems.ValueCurve} <: InfrastructureSystems.ProductionVariableCostCurve{T<:InfrastructureSystems.ValueCurve}
  • value_curve::InfrastructureSystems.ValueCurve: The underlying ValueCurve representation of this ProductionVariableCostCurve

  • power_units::InfrastructureSystems.UnitSystemModule.UnitSystem: (default: natural units (MW)) The units for the x-axis of the curve

  • fuel_cost::Union{Float64, InfrastructureSystems.TimeSeriesKey}: Either a fixed value for fuel cost or the TimeSeriesKey to a fuel cost time series

  • vom_cost::LinearCurve: (default of 0) Additional proportional Variable Operation and Maintenance Cost in /(power_unit h) represented as a LinearCurve

FuelCurve(value_curve, power_units, fuel_cost, vom_cost)
 FuelCurve(value_curve, fuel_cost)
 FuelCurve(value_curve, fuel_cost, vom_cost)
 FuelCurve(value_curve, power_units, fuel_cost)
-FuelCurve(; value_curve, power_units, fuel_cost, vom_cost)

Representation of the variable operation cost of a power plant in terms of fuel (MBTU, liters, m^3, etc.), coupled with a conversion factor between fuel and currency. Composed of a ValueCurve that may represent input-output, incremental, or average rate data. The default units for the x-axis are MW and can be specified with power_units.

source
InfrastructureSystems.Hdf5TimeSeriesStorageMethod
Hdf5TimeSeriesStorage(
+FuelCurve(; value_curve, power_units, fuel_cost, vom_cost)

Representation of the variable operation cost of a power plant in terms of fuel (MBTU, liters, m^3, etc.), coupled with a conversion factor between fuel and currency. Composed of a ValueCurve that may represent input-output, incremental, or average rate data. The default units for the x-axis are MW and can be specified with power_units.

source
InfrastructureSystems.Hdf5TimeSeriesStorageMethod
Hdf5TimeSeriesStorage(
     create_file::Bool;
     filename,
     directory,
     compression
 ) -> InfrastructureSystems.Hdf5TimeSeriesStorage
-

Constructs Hdf5TimeSeriesStorage.

Arguments

  • create_file::Bool: create new file
  • filename=nothing: if nothing, create a temp file, else use this name.
  • directory=nothing: if set and filename is nothing, create a temp file in this directory. If it is not set, use the environment variable SIENNATIMESERIES_DIRECTORY. If that is not set, use tempdir(). This should be set if the time series data is larger than the tmp filesystem can hold.
source
InfrastructureSystems.Hdf5TimeSeriesStorageMethod
Hdf5TimeSeriesStorage(
+

Constructs Hdf5TimeSeriesStorage.

Arguments

  • create_file::Bool: create new file
  • filename=nothing: if nothing, create a temp file, else use this name.
  • directory=nothing: if set and filename is nothing, create a temp file in this directory. If it is not set, use the environment variable SIENNATIMESERIES_DIRECTORY. If that is not set, use tempdir(). This should be set if the time series data is larger than the tmp filesystem can hold.
source
InfrastructureSystems.InMemoryTimeSeriesStorageMethod
InMemoryTimeSeriesStorage(
     hdf5_storage::InfrastructureSystems.Hdf5TimeSeriesStorage
 ) -> InfrastructureSystems.InMemoryTimeSeriesStorage
-

Constructs InMemoryTimeSeriesStorage from an instance of Hdf5TimeSeriesStorage.

source
InfrastructureSystems.IncrementalCurveType

An incremental (or 'marginal') curve, relating the production quantity to the derivative of cost: y = f'(x). Can be used, for instance, in the representation of a CostCurve where x is MW and y is currency/MWh, or in the representation of a FuelCurve where x is MW and y is fuel/MWh.

source
InfrastructureSystems.IncrementalCurveType

An incremental (or 'marginal') curve, relating the production quantity to the derivative of cost: y = f'(x). Can be used, for instance, in the representation of a CostCurve where x is MW and y is currency/MWh, or in the representation of a FuelCurve where x is MW and y is fuel/MWh.

source
InfrastructureSystems.InputOutputCurveType

An input-output curve, directly relating the production quantity to the cost: y = f(x). Can be used, for instance, in the representation of a CostCurve where x is MW and y is currency/hr, or in the representation of a FuelCurve where x is MW and y is fuel/hr.

source
InfrastructureSystems.LazyDictFromIteratorMethod

LazyDictFromIterator creates a dictionary from an iterator, but only increments the iterator and adds items to the dictionary as it needs them. In the worst case it is identical to creating a dictionary by iterating over the entire list. Each V should have a K member.

Arguments

  • K: type of the dictionary keys
  • V: type of the dictionary values
  • iter: any object implementing the Iterator interface
  • getter::Function: method to call on V to get its K
source
InfrastructureSystems.LinearCurveType
LinearCurve(proportional_term::Float64)
-LinearCurve(proportional_term::Float64, constant_term::Float64)

A linear input-output curve, representing a constant marginal rate. May have zero no-load cost (i.e., constant average rate) or not.

Arguments

  • proportional_term::Float64: marginal rate
  • constant_term::Float64: optional, cost at zero production, defaults to 0.0
source
InfrastructureSystems.LinearFunctionDataType

Structure to represent the underlying data of linear functions. Principally used for the representation of cost functions f(x) = proportional_term*x + constant_term.

Arguments

  • proportional_term::Float64: the proportional term in the represented function
  • constant_term::Float64: the constant term in the represented function
source
InfrastructureSystems.InputOutputCurveType

An input-output curve, directly relating the production quantity to the cost: y = f(x). Can be used, for instance, in the representation of a CostCurve where x is MW and y is currency/hr, or in the representation of a FuelCurve where x is MW and y is fuel/hr.

source
InfrastructureSystems.LazyDictFromIteratorMethod

LazyDictFromIterator creates a dictionary from an iterator, but only increments the iterator and adds items to the dictionary as it needs them. In the worst case it is identical to creating a dictionary by iterating over the entire list. Each V should have a K member.

Arguments

  • K: type of the dictionary keys
  • V: type of the dictionary values
  • iter: any object implementing the Iterator interface
  • getter::Function: method to call on V to get its K
source
InfrastructureSystems.LinearCurveType
LinearCurve(proportional_term::Float64)
+LinearCurve(proportional_term::Float64, constant_term::Float64)

A linear input-output curve, representing a constant marginal rate. May have zero no-load cost (i.e., constant average rate) or not.

Arguments

  • proportional_term::Float64: marginal rate
  • constant_term::Float64: optional, cost at zero production, defaults to 0.0
source
InfrastructureSystems.LinearFunctionDataType

Structure to represent the underlying data of linear functions. Principally used for the representation of cost functions f(x) = proportional_term*x + constant_term.

Arguments

  • proportional_term::Float64: the proportional term in the represented function
  • constant_term::Float64: the constant term in the represented function
source
InfrastructureSystems.LogEventTrackerType
LogEventTracker() -> InfrastructureSystems.LogEventTracker
 LogEventTracker(
     levels
 ) -> InfrastructureSystems.LogEventTracker
 

Tracks counts of all log events by level.

Examples

LogEventTracker()
-LogEventTracker((Logging.Info, Logging.Warn, Logging.Error))
source
InfrastructureSystems.MultiLoggerType

Redirects log events to multiple loggers. The primary use case is to allow logging to both a file and the console. Secondarily, it can track the counts of all log messages.

Example

MultiLogger([TerminalLogger(stderr), SimpleLogger(stream)], LogEventTracker())
source
InfrastructureSystems.MultiLoggerType

Redirects log events to multiple loggers. The primary use case is to allow logging to both a file and the console. Secondarily, it can track the counts of all log messages.

Example

MultiLogger([TerminalLogger(stderr), SimpleLogger(stream)], LogEventTracker())
source
InfrastructureSystems.MultiLoggerMethod
MultiLogger(
     loggers::Array{T<:Base.CoreLogging.AbstractLogger}
 ) -> InfrastructureSystems.MultiLogger
-

Creates a MultiLogger with no event tracking.

Example

MultiLogger([TerminalLogger(stderr), SimpleLogger(stream)])
source
InfrastructureSystems.NotImplementedErrorType

Indicate that the feature at hand happens to not be implemented for the given data even though it could be. If it is a category mistake to imagine this feature defined on that data, use another exception, like TypeError or ArgumentError.

source
InfrastructureSystems.PiecewiseAverageCurveType
PiecewiseAverageCurve(initial_input::Union{Float64, Nothing}, x_coords::Vector{Float64}, slopes::Vector{Float64})

A piecewise linear curve specified by average rates between production points. May have nonzero initial value.

Arguments

  • initial_input::Union{Float64, Nothing}: cost at minimum production point first(x_coords) (NOT at zero production), defines the start of the curve
  • x_coords::Vector{Float64}: vector of n production points
  • slopes::Vector{Float64}: vector of n-1 average rates/slopes of the curve segments between the points
source
InfrastructureSystems.PiecewiseIncrementalCurveType
PiecewiseIncrementalCurve(initial_input::Union{Float64, Nothing}, x_coords::Vector{Float64}, slopes::Vector{Float64})
-PiecewiseIncrementalCurve(input_at_zero::Union{Nothing, Float64}, initial_input::Union{Float64, Nothing}, x_coords::Vector{Float64}, slopes::Vector{Float64})

A piecewise linear curve specified by marginal rates (slopes) between production points. May have nonzero initial value.

Arguments

  • input_at_zero::Union{Nothing, Float64}: (optional, defaults to nothing) cost at zero production, does NOT represent a part of the curve
  • initial_input::Union{Float64, Nothing}: cost at minimum production point first(x_coords) (NOT at zero production), defines the start of the curve
  • x_coords::Vector{Float64}: vector of n production points
  • slopes::Vector{Float64}: vector of n-1 marginal rates/slopes of the curve segments between the points
source
InfrastructureSystems.PiecewiseLinearDataType

Structure to represent piecewise linear data as a series of points: two points define one segment, three points define two segments, etc. The curve starts at the first point given, not the origin. Principally used for the representation of cost functions where the points store quantities (x, y), such as (MW, /h).

Arguments

  • points::Vector{@NamedTuple{x::Float64, y::Float64}}: the points that define the function
source
InfrastructureSystems.PiecewisePointCurveType
PiecewisePointCurve(points::Vector{Tuple{Float64, Float64}})

A piecewise linear curve specified by cost values at production points.

Arguments

  • points::Vector{Tuple{Float64, Float64}} or similar: vector of (production, cost) pairs
source
InfrastructureSystems.PiecewiseStepDataType

Structure to represent a step function as a series of endpoint x-coordinates and segment y-coordinates: two x-coordinates and one y-coordinate defines a single segment, three x-coordinates and two y-coordinates define two segments, etc. This can be useful to represent the derivative of a PiecewiseLinearData, where the y-coordinates of this step function represent the slopes of that piecewise linear function, so there is also an optional field c that can be used to store the initial y-value of that piecewise linear function. Principally used for the representation of cost functions where the points store quantities (x, dy/dx), such as (MW, /MWh).

Arguments

  • x_coords::Vector{Float64}: the x-coordinates of the endpoints of the segments
  • y_coords::Vector{Float64}: the y-coordinates of the segments: y_coords[1] is the y-value between

x_coords[1] and x_coords[2], etc. Must have one fewer elements than x_coords.

  • c::Union{Nothing, Float64}: optional, the value to use for the integral from 0 to x_coords[1] of this function
source
InfrastructureSystems.NotImplementedErrorType

Indicate that the feature at hand happens to not be implemented for the given data even though it could be. If it is a category mistake to imagine this feature defined on that data, use another exception, like TypeError or ArgumentError.

source
InfrastructureSystems.PiecewiseAverageCurveType
PiecewiseAverageCurve(initial_input::Union{Float64, Nothing}, x_coords::Vector{Float64}, slopes::Vector{Float64})

A piecewise linear curve specified by average rates between production points. May have nonzero initial value.

Arguments

  • initial_input::Union{Float64, Nothing}: cost at minimum production point first(x_coords) (NOT at zero production), defines the start of the curve
  • x_coords::Vector{Float64}: vector of n production points
  • slopes::Vector{Float64}: vector of n-1 average rates/slopes of the curve segments between the points
source
InfrastructureSystems.PiecewiseIncrementalCurveType
PiecewiseIncrementalCurve(initial_input::Union{Float64, Nothing}, x_coords::Vector{Float64}, slopes::Vector{Float64})
+PiecewiseIncrementalCurve(input_at_zero::Union{Nothing, Float64}, initial_input::Union{Float64, Nothing}, x_coords::Vector{Float64}, slopes::Vector{Float64})

A piecewise linear curve specified by marginal rates (slopes) between production points. May have nonzero initial value.

Arguments

  • input_at_zero::Union{Nothing, Float64}: (optional, defaults to nothing) cost at zero production, does NOT represent a part of the curve
  • initial_input::Union{Float64, Nothing}: cost at minimum production point first(x_coords) (NOT at zero production), defines the start of the curve
  • x_coords::Vector{Float64}: vector of n production points
  • slopes::Vector{Float64}: vector of n-1 marginal rates/slopes of the curve segments between the points
source
InfrastructureSystems.PiecewiseLinearDataType

Structure to represent piecewise linear data as a series of points: two points define one segment, three points define two segments, etc. The curve starts at the first point given, not the origin. Principally used for the representation of cost functions where the points store quantities (x, y), such as (MW, /h).

Arguments

  • points::Vector{@NamedTuple{x::Float64, y::Float64}}: the points that define the function
source
InfrastructureSystems.PiecewisePointCurveType
PiecewisePointCurve(points::Vector{Tuple{Float64, Float64}})

A piecewise linear curve specified by cost values at production points.

Arguments

  • points::Vector{Tuple{Float64, Float64}} or similar: vector of (production, cost) pairs
source
InfrastructureSystems.PiecewiseStepDataType

Structure to represent a step function as a series of endpoint x-coordinates and segment y-coordinates: two x-coordinates and one y-coordinate defines a single segment, three x-coordinates and two y-coordinates define two segments, etc. This can be useful to represent the derivative of a PiecewiseLinearData, where the y-coordinates of this step function represent the slopes of that piecewise linear function, so there is also an optional field c that can be used to store the initial y-value of that piecewise linear function. Principally used for the representation of cost functions where the points store quantities (x, dy/dx), such as (MW, /MWh).

Arguments

  • x_coords::Vector{Float64}: the x-coordinates of the endpoints of the segments
  • y_coords::Vector{Float64}: the y-coordinates of the segments: y_coords[1] is the y-value between

x_coords[1] and x_coords[2], etc. Must have one fewer elements than x_coords.

  • c::Union{Nothing, Float64}: optional, the value to use for the integral from 0 to x_coords[1] of this function
source
InfrastructureSystems.ProbabilisticType
mutable struct Probabilistic <: Forecast
     name::String
     resolution::Dates.Period
     percentiles::Vector{Float64}
     data::SortedDict
     scaling_factor_multiplier::Union{Nothing, Function}
     internal::InfrastructureSystemsInternal
-end

A Probabilistic forecast for a particular data field in a Component.

Arguments

  • name::String: user-defined name
  • resolution::Dates.Period: forecast resolution
  • percentiles::Vector{Float64}: Percentiles for the probabilistic forecast
  • data::SortedDict: timestamp - scalingfactor
  • scaling_factor_multiplier::Union{Nothing, Function}: Applicable when the time series data are scaling factors. Called on the associated component to convert the values.
  • internal::InfrastructureSystemsInternal
source
InfrastructureSystems.ProbabilisticMethod
Probabilistic(
+end

A Probabilistic forecast for a particular data field in a Component.

Arguments

  • name::String: user-defined name
  • resolution::Dates.Period: forecast resolution
  • percentiles::Vector{Float64}: Percentiles for the probabilistic forecast
  • data::SortedDict: timestamp - scalingfactor
  • scaling_factor_multiplier::Union{Nothing, Function}: Applicable when the time series data are scaling factors. Called on the associated component to convert the values.
  • internal::InfrastructureSystemsInternal
source
InfrastructureSystems.ProbabilisticMethod
Probabilistic(
     name::AbstractString,
     input_data::AbstractDict,
     percentiles::Vector,
@@ -129,14 +129,14 @@
     normalization_factor,
     scaling_factor_multiplier
 ) -> InfrastructureSystems.Probabilistic
-

Construct Probabilistic from a SortedDict of Arrays.

Arguments

  • name::AbstractString: user-defined name
  • input_data::AbstractDict{Dates.DateTime, Matrix{Float64}}: time series data.
  • percentiles: Percentiles represented in the probabilistic forecast
  • resolution::Dates.Period: The resolution of the forecast in Dates.Period`
  • normalization_factor::NormalizationFactor = 1.0: optional normalization factor to apply to each data entry
  • scaling_factor_multiplier::Union{Nothing, Function} = nothing: If the data are scaling factors then this function will be called on the component and applied to the data when get_time_series_array is called.
source
InfrastructureSystems.ProbabilisticMethod
Probabilistic(
+

Construct Probabilistic from a SortedDict of Arrays.

Arguments

  • name::AbstractString: user-defined name
  • input_data::AbstractDict{Dates.DateTime, Matrix{Float64}}: time series data.
  • percentiles: Percentiles represented in the probabilistic forecast
  • resolution::Dates.Period: The resolution of the forecast in Dates.Period`
  • normalization_factor::NormalizationFactor = 1.0: optional normalization factor to apply to each data entry
  • scaling_factor_multiplier::Union{Nothing, Function} = nothing: If the data are scaling factors then this function will be called on the component and applied to the data when get_time_series_array is called.
source
InfrastructureSystems.ProbabilisticMethod
Probabilistic(
     name::AbstractString,
     input_data::AbstractDict{Dates.DateTime, <:TimeSeries.TimeArray},
     percentiles::Vector{Float64};
     normalization_factor,
     scaling_factor_multiplier
 ) -> InfrastructureSystems.Probabilistic
-

Construct Probabilistic from a Dict of TimeArrays.

Arguments

  • name::AbstractString: user-defined name
  • input_data::AbstractDict{Dates.DateTime, TimeSeries.TimeArray}: time series data.
  • percentiles: Percentiles represented in the probabilistic forecast
  • normalization_factor::NormalizationFactor = 1.0: optional normalization factor to apply to each data entry
  • scaling_factor_multiplier::Union{Nothing, Function} = nothing: If the data are scaling factors then this function will be called on the component and applied to the data when get_time_series_array is called.
  • timestamp = :timestamp: If the values are DataFrames is passed then this must be the column name that contains timestamps.
source
InfrastructureSystems.ProbabilisticMethod
Probabilistic(
+

Construct Probabilistic from a Dict of TimeArrays.

Arguments

  • name::AbstractString: user-defined name
  • input_data::AbstractDict{Dates.DateTime, TimeSeries.TimeArray}: time series data.
  • percentiles: Percentiles represented in the probabilistic forecast
  • normalization_factor::NormalizationFactor = 1.0: optional normalization factor to apply to each data entry
  • scaling_factor_multiplier::Union{Nothing, Function} = nothing: If the data are scaling factors then this function will be called on the component and applied to the data when get_time_series_array is called.
  • timestamp = :timestamp: If the values are DataFrames is passed then this must be the column name that contains timestamps.
source
InfrastructureSystems.ProbabilisticMethod
Probabilistic(
     name::AbstractString,
     series_data::InfrastructureSystems.RawTimeSeries,
     percentiles::Vector,
@@ -144,12 +144,12 @@
     normalization_factor,
     scaling_factor_multiplier
 ) -> InfrastructureSystems.Probabilistic
-

Construct Deterministic from RawTimeSeries.

source
InfrastructureSystems.ProbabilisticMethod
Probabilistic(
     src::InfrastructureSystems.Probabilistic,
     name::AbstractString;
     scaling_factor_multiplier
 ) -> InfrastructureSystems.Probabilistic
-

Construct a Probabilistic that shares the data from an existing instance.

This is useful in cases where you want a component to use the same time series data for two different attributes.

source
InfrastructureSystems.ProbabilisticMetadataType
mutable struct ProbabilisticMetadata <: ForecastMetadata
+

Construct a Probabilistic that shares the data from an existing instance.

This is useful in cases where you want a component to use the same time series data for two different attributes.

source
InfrastructureSystems.ProbabilisticMetadataType
mutable struct ProbabilisticMetadata <: ForecastMetadata
     name::String
     initial_timestamp::Dates.DateTime
     resolution::Dates.Period
@@ -161,41 +161,41 @@
     scaling_factor_multiplier::Union{Nothing, Function}
     features::Dict{String, Union{Bool, Int, String}}
     internal::InfrastructureSystemsInternal
-end

A Probabilistic forecast for a particular data field in a Component.

Arguments

  • name::String: user-defined name
  • initial_timestamp::Dates.DateTime: time series availability time
  • resolution::Dates.Period:
  • interval::Dates.Period: time step between forecast windows
  • count::Int: number of forecast windows
  • percentiles::Vector{Float64}: Percentiles for the probabilistic forecast
  • time_series_uuid::UUIDs.UUID: reference to time series data
  • horizon::Dates.Period: length of this time series
  • scaling_factor_multiplier::Union{Nothing, Function}: (default: nothing) Applicable when the time series data are scaling factors. Called on the associated component to convert the values.
  • features::Dict{String, Union{Bool, Int, String}}: (default: Dict{String, Any}()) User-defined tags that differentiate multiple time series arrays that represent the same component attribute, such as different arrays for different scenarios or years.
  • internal::InfrastructureSystemsInternal:
source
InfrastructureSystems.QuadraticCurveType
QuadraticCurve(quadratic_term::Float64, proportional_term::Float64, constant_term::Float64)

A quadratic input-output curve, may have nonzero no-load cost.

Arguments

  • quadratic_term::Float64: quadratic term of the curve
  • proportional_term::Float64: proportional term of the curve
  • constant_term::Float64: constant term of the curve
source
InfrastructureSystems.QuadraticFunctionDataType

Structure to represent the underlying data of quadratic functions. Principally used for the representation of cost functions f(x) = quadratic_term*x^2 + proportional_term*x + constant_term.

Arguments

  • quadratic_term::Float64: the quadratic term in the represented function
  • proportional_term::Float64: the proportional term in the represented function
  • constant_term::Float64: the constant term in the represented function
source
InfrastructureSystems.QuadraticFunctionDataMethod
QuadraticFunctionData(
+end

A Probabilistic forecast for a particular data field in a Component.

Arguments

  • name::String: user-defined name
  • initial_timestamp::Dates.DateTime: time series availability time
  • resolution::Dates.Period:
  • interval::Dates.Period: time step between forecast windows
  • count::Int: number of forecast windows
  • percentiles::Vector{Float64}: Percentiles for the probabilistic forecast
  • time_series_uuid::UUIDs.UUID: reference to time series data
  • horizon::Dates.Period: length of this time series
  • scaling_factor_multiplier::Union{Nothing, Function}: (default: nothing) Applicable when the time series data are scaling factors. Called on the associated component to convert the values.
  • features::Dict{String, Union{Bool, Int, String}}: (default: Dict{String, Any}()) User-defined tags that differentiate multiple time series arrays that represent the same component attribute, such as different arrays for different scenarios or years.
  • internal::InfrastructureSystemsInternal:
source
InfrastructureSystems.QuadraticCurveType
QuadraticCurve(quadratic_term::Float64, proportional_term::Float64, constant_term::Float64)

A quadratic input-output curve, may have nonzero no-load cost.

Arguments

  • quadratic_term::Float64: quadratic term of the curve
  • proportional_term::Float64: proportional term of the curve
  • constant_term::Float64: constant term of the curve
source
InfrastructureSystems.QuadraticFunctionDataType

Structure to represent the underlying data of quadratic functions. Principally used for the representation of cost functions f(x) = quadratic_term*x^2 + proportional_term*x + constant_term.

Arguments

  • quadratic_term::Float64: the quadratic term in the represented function
  • proportional_term::Float64: the proportional term in the represented function
  • constant_term::Float64: the constant term in the represented function
source
InfrastructureSystems.RecorderMethod
Recorder(
     name::Symbol;
     io,
     mode,
     directory
 ) -> InfrastructureSystems.Recorder
-

Construct a Recorder.

Arguments

  • name::Symbol: name of recorder
  • io::Union{Nothing, IO}: If nothing, record events in a file using name.
  • mode = "w": Only used when io is nothing.
  • directory = ".": Only used when io is nothing.
source
InfrastructureSystems.ScenariosType
mutable struct Scenarios <: Forecast
+

Construct a Recorder.

Arguments

  • name::Symbol: name of recorder
  • io::Union{Nothing, IO}: If nothing, record events in a file using name.
  • mode = "w": Only used when io is nothing.
  • directory = ".": Only used when io is nothing.
source
InfrastructureSystems.ScenariosType
mutable struct Scenarios <: Forecast
     name::String
     resolution::Dates.Period
     scenario_count::Int64
     data::SortedDict
     scaling_factor_multiplier::Union{Nothing, Function}
     internal::InfrastructureSystemsInternal
-end

A Discrete Scenario Based time series for a particular data field in a Component.

Arguments

  • name::String: user-defined name
  • resolution::Dates.Period: forecast resolution
  • scenario_count::Int64: Number of scenarios
  • data::SortedDict: timestamp - scalingfactor
  • scaling_factor_multiplier::Union{Nothing, Function}: Applicable when the time series data are scaling factors. Called on the associated component to convert the values.
  • internal::InfrastructureSystemsInternal
source
InfrastructureSystems.ScenariosMethod
Scenarios(
+end

A Discrete Scenario Based time series for a particular data field in a Component.

Arguments

  • name::String: user-defined name
  • resolution::Dates.Period: forecast resolution
  • scenario_count::Int64: Number of scenarios
  • data::SortedDict: timestamp - scalingfactor
  • scaling_factor_multiplier::Union{Nothing, Function}: Applicable when the time series data are scaling factors. Called on the associated component to convert the values.
  • internal::InfrastructureSystemsInternal
source
InfrastructureSystems.ScenariosMethod
Scenarios(
     name::AbstractString,
     input_data::AbstractDict,
     resolution::Dates.Period;
     normalization_factor,
     scaling_factor_multiplier
 ) -> InfrastructureSystems.Scenarios
-

Construct Scenarios from a SortedDict of Arrays.

Arguments

  • name::AbstractString: user-defined name
  • input_data::AbstractDict{Dates.DateTime, Matrix{Float64}}: time series data.
  • resolution::Dates.Period: The resolution of the forecast in Dates.Period`
  • normalization_factor::NormalizationFactor = 1.0: optional normalization factor to apply to each data entry
  • scaling_factor_multiplier::Union{Nothing, Function} = nothing: If the data are scaling factors then this function will be called on the component and applied to the data when get_time_series_array is called.
source
InfrastructureSystems.ScenariosMethod
Scenarios(
+

Construct Scenarios from a SortedDict of Arrays.

Arguments

  • name::AbstractString: user-defined name
  • input_data::AbstractDict{Dates.DateTime, Matrix{Float64}}: time series data.
  • resolution::Dates.Period: The resolution of the forecast in Dates.Period`
  • normalization_factor::NormalizationFactor = 1.0: optional normalization factor to apply to each data entry
  • scaling_factor_multiplier::Union{Nothing, Function} = nothing: If the data are scaling factors then this function will be called on the component and applied to the data when get_time_series_array is called.
source
InfrastructureSystems.ScenariosMethod
Scenarios(
     name::AbstractString,
     input_data::AbstractDict{Dates.DateTime, <:TimeSeries.TimeArray};
     normalization_factor,
     scaling_factor_multiplier
 ) -> InfrastructureSystems.Scenarios
-

Construct Scenarios from a Dict of TimeArrays.

Arguments

  • name::AbstractString: user-defined name
  • input_data::AbstractDict{Dates.DateTime, TimeSeries.TimeArray}: time series data.
  • normalization_factor::NormalizationFactor = 1.0: optional normalization factor to apply to each data entry
  • scaling_factor_multiplier::Union{Nothing, Function} = nothing: If the data are scaling factors then this function will be called on the component and applied to the data when get_time_series_array is called.
  • timestamp = :timestamp: If the values are DataFrames is passed then this must be the column name that contains timestamps.
source
InfrastructureSystems.ScenariosMethod
Scenarios(
+

Construct Scenarios from a Dict of TimeArrays.

Arguments

  • name::AbstractString: user-defined name
  • input_data::AbstractDict{Dates.DateTime, TimeSeries.TimeArray}: time series data.
  • normalization_factor::NormalizationFactor = 1.0: optional normalization factor to apply to each data entry
  • scaling_factor_multiplier::Union{Nothing, Function} = nothing: If the data are scaling factors then this function will be called on the component and applied to the data when get_time_series_array is called.
  • timestamp = :timestamp: If the values are DataFrames is passed then this must be the column name that contains timestamps.
source
InfrastructureSystems.ScenariosMethod
Scenarios(
     src::InfrastructureSystems.Scenarios,
     name::AbstractString;
     scaling_factor_multiplier
 ) -> InfrastructureSystems.Scenarios
-

Construct Scenarios that shares the data from an existing instance.

This is useful in cases where you want a component to use the same time series data for two different attributes.

source
InfrastructureSystems.ScenariosMetadataType
mutable struct ScenariosMetadata <: ForecastMetadata
+

Construct Scenarios that shares the data from an existing instance.

This is useful in cases where you want a component to use the same time series data for two different attributes.

source
InfrastructureSystems.ScenariosMetadataType
mutable struct ScenariosMetadata <: ForecastMetadata
     name::String
     resolution::Dates.Period
     initial_timestamp::Dates.DateTime
@@ -207,12 +207,12 @@
     scaling_factor_multiplier::Union{Nothing, Function}
     features::Dict{String, Union{Bool, Int, String}}
     internal::InfrastructureSystemsInternal
-end

A Discrete Scenario Based time series for a particular data field in a Component.

Arguments

  • name::String: user-defined name
  • resolution::Dates.Period:
  • initial_timestamp::Dates.DateTime: time series availability time
  • interval::Dates.Period: time step between forecast windows
  • scenario_count::Int64: Number of scenarios
  • count::Int: number of forecast windows
  • time_series_uuid::UUIDs.UUID: reference to time series data
  • horizon::Dates.Period: length of this time series
  • scaling_factor_multiplier::Union{Nothing, Function}: (default: nothing) Applicable when the time series data are scaling factors. Called on the associated component to convert the values.
  • features::Dict{String, Union{Bool, Int, String}}: (default: Dict{String, Any}()) User-defined tags that differentiate multiple time series arrays that represent the same component attribute, such as different arrays for different scenarios or years.
  • internal::InfrastructureSystemsInternal:
source
InfrastructureSystems.SingleTimeSeriesType
mutable struct SingleTimeSeries <: StaticTimeSeries
+end

A Discrete Scenario Based time series for a particular data field in a Component.

Arguments

  • name::String: user-defined name
  • resolution::Dates.Period:
  • initial_timestamp::Dates.DateTime: time series availability time
  • interval::Dates.Period: time step between forecast windows
  • scenario_count::Int64: Number of scenarios
  • count::Int: number of forecast windows
  • time_series_uuid::UUIDs.UUID: reference to time series data
  • horizon::Dates.Period: length of this time series
  • scaling_factor_multiplier::Union{Nothing, Function}: (default: nothing) Applicable when the time series data are scaling factors. Called on the associated component to convert the values.
  • features::Dict{String, Union{Bool, Int, String}}: (default: Dict{String, Any}()) User-defined tags that differentiate multiple time series arrays that represent the same component attribute, such as different arrays for different scenarios or years.
  • internal::InfrastructureSystemsInternal:
source
InfrastructureSystems.SingleTimeSeriesType
mutable struct SingleTimeSeries <: StaticTimeSeries
     name::String
     data::TimeSeries.TimeArray
     scaling_factor_multiplier::Union{Nothing, Function}
     internal::InfrastructureSystemsInternal
-end

A single column of time series data for a particular data field in a Component.

In contrast with a forecast, this can represent one continual time series, such as a series of historical measurements or realizations or a single scenario (e.g. a weather year or different input assumptions).

Arguments

  • name::String: user-defined name
  • data::TimeSeries.TimeArray: timestamp - scalingfactor
  • resolution::Dates.Period: Time duration between steps in the time series. The resolution must be the same throughout the time series
  • scaling_factor_multiplier::Union{Nothing, Function}: Applicable when the time series data are scaling factors. Called on the associated component to convert the values.
  • internal::InfrastructureSystemsInternal
source
InfrastructureSystems.SingleTimeSeriesMethod
SingleTimeSeries(
+end

A single column of time series data for a particular data field in a Component.

In contrast with a forecast, this can represent one continual time series, such as a series of historical measurements or realizations or a single scenario (e.g. a weather year or different input assumptions).

Arguments

  • name::String: user-defined name
  • data::TimeSeries.TimeArray: timestamp - scalingfactor
  • resolution::Dates.Period: Time duration between steps in the time series. The resolution must be the same throughout the time series
  • scaling_factor_multiplier::Union{Nothing, Function}: Applicable when the time series data are scaling factors. Called on the associated component to convert the values.
  • internal::InfrastructureSystemsInternal
source
InfrastructureSystems.SingleTimeSeriesMethod
SingleTimeSeries(
     name::AbstractString,
     filename::AbstractString,
     component::InfrastructureSystems.InfrastructureSystemsComponent,
@@ -220,29 +220,29 @@
     normalization_factor,
     scaling_factor_multiplier
 ) -> InfrastructureSystems.SingleTimeSeries
-

Construct SingleTimeSeries from a CSV file. The file must have a column that is the name of the component.

Arguments

  • name::AbstractString: user-defined name
  • filename::AbstractString: name of CSV file containing data
  • component::InfrastructureSystemsComponent: component associated with the data
  • resolution::Dates.Period: resolution of the time series
  • normalization_factor::NormalizationFactor = 1.0: optional normalization factor to apply to each data entry
  • scaling_factor_multiplier::Union{Nothing, Function} = nothing: If the data are scaling factors then this function will be called on the component and applied to the data when get_time_series_array is called.
source
InfrastructureSystems.SingleTimeSeriesMethod
SingleTimeSeries(
+

Construct SingleTimeSeries from a CSV file. The file must have a column that is the name of the component.

Arguments

  • name::AbstractString: user-defined name
  • filename::AbstractString: name of CSV file containing data
  • component::InfrastructureSystemsComponent: component associated with the data
  • resolution::Dates.Period: resolution of the time series
  • normalization_factor::NormalizationFactor = 1.0: optional normalization factor to apply to each data entry
  • scaling_factor_multiplier::Union{Nothing, Function} = nothing: If the data are scaling factors then this function will be called on the component and applied to the data when get_time_series_array is called.
source
InfrastructureSystems.SingleTimeSeriesMethod
SingleTimeSeries(
     name::AbstractString,
     data::Union{DataFrames.DataFrame, TimeSeries.TimeArray};
     normalization_factor,
     scaling_factor_multiplier,
     timestamp
 ) -> InfrastructureSystems.SingleTimeSeries
-

Construct SingleTimeSeries from a TimeArray or DataFrame.

Arguments

  • name::AbstractString: user-defined name
  • data::Union{TimeSeries.TimeArray, DataFrames.DataFrame}: time series data
  • normalization_factor::NormalizationFactor = 1.0: optional normalization factor to apply to each data entry
  • scaling_factor_multiplier::Union{Nothing, Function} = nothing: If the data are scaling factors then this function will be called on the component and applied to the data when get_time_series_array is called.
  • timestamp = :timestamp: If a DataFrame is passed then this must be the column name that contains timestamps.
source
InfrastructureSystems.SingleTimeSeriesMethod
SingleTimeSeries(
+

Construct SingleTimeSeries from a TimeArray or DataFrame.

Arguments

  • name::AbstractString: user-defined name
  • data::Union{TimeSeries.TimeArray, DataFrames.DataFrame}: time series data
  • normalization_factor::NormalizationFactor = 1.0: optional normalization factor to apply to each data entry
  • scaling_factor_multiplier::Union{Nothing, Function} = nothing: If the data are scaling factors then this function will be called on the component and applied to the data when get_time_series_array is called.
  • timestamp = :timestamp: If a DataFrame is passed then this must be the column name that contains timestamps.
source
InfrastructureSystems.SingleTimeSeriesMethod
SingleTimeSeries(
     src::InfrastructureSystems.SingleTimeSeries,
     name::AbstractString;
     scaling_factor_multiplier
 ) -> InfrastructureSystems.SingleTimeSeries
-

Construct SingleTimeSeries that shares the data from an existing instance.

This is useful in cases where you want a component to use the same time series data for two different attribtues.

source
InfrastructureSystems.SingleTimeSeriesMethod
SingleTimeSeries(
+

Construct SingleTimeSeries that shares the data from an existing instance.

This is useful in cases where you want a component to use the same time series data for two different attribtues.

source
InfrastructureSystems.SingleTimeSeriesMethod
SingleTimeSeries(
     time_series::InfrastructureSystems.SingleTimeSeries,
     data::TimeSeries.TimeArray
 ) -> Any
-

Creates a new SingleTimeSeries from an existing instance and a subset of data.

source
InfrastructureSystems.SingleTimeSeriesMethod
SingleTimeSeries(
     name::String,
     resolution::Dates.Period,
     initial_time::Dates.DateTime,
     time_steps::Int64
 ) -> InfrastructureSystems.SingleTimeSeries
-

Construct SingleTimeSeries after constructing a TimeArray from initial_time and time_steps.

source
InfrastructureSystems.SingleTimeSeriesMetadataType
mutable struct SingleTimeSeriesMetadata <: StaticTimeSeriesMetadata
     name::String
     resolution::Dates.Period
     initial_timestamp::Dates.DateTime
@@ -251,7 +251,7 @@
     scaling_factor_multiplier::Union{Nothing, Function}
     features::Dict{String, Union{Bool, Int, String}}
     internal::InfrastructureSystemsInternal
-end

A TimeSeries Data object in contigous form.

Arguments

  • name::String: user-defined name
  • resolution::Dates.Period:
  • initial_timestamp::Dates.DateTime: time series availability time
  • time_series_uuid::UUIDs.UUID: reference to time series data
  • length::Int: length of this time series
  • scaling_factor_multiplier::Union{Nothing, Function}: (default: nothing) Applicable when the time series data are scaling factors. Called on the associated component to convert the values.
  • features::Dict{String, Union{Bool, Int, String}}: (default: Dict{String, Any}()) User-defined tags that differentiate multiple time series arrays that represent the same component attribute, such as different arrays for different scenarios or years.
  • internal::InfrastructureSystemsInternal:
source
InfrastructureSystems.StaticTimeSeriesCacheMethod

Construct StaticTimeSeriesCache to automatically control caching of time series data. Maintains rows of data in memory based on cache_size_bytes.

Call Base.iterate or get_time_series_array to retrieve data. Each iteration will return a TimeSeries.TimeArray of size 1.

Arguments

  • ::Type{T}: subtype of StaticTimeSeries
  • component::InfrastructureSystemsComponent: component
  • name::AbstractString: time series name
  • cache_size_bytes = TIME_SERIES_CACHE_SIZE_BYTES: maximum size of data to keep in memory
  • ignore_scaling_factors = false: controls whether to ignore scalingfactormultiplier in the time series instance
source
InfrastructureSystems.StructDefinitionMethod
StructDefinition(
+end

A TimeSeries Data object in contigous form.

Arguments

  • name::String: user-defined name
  • resolution::Dates.Period:
  • initial_timestamp::Dates.DateTime: time series availability time
  • time_series_uuid::UUIDs.UUID: reference to time series data
  • length::Int: length of this time series
  • scaling_factor_multiplier::Union{Nothing, Function}: (default: nothing) Applicable when the time series data are scaling factors. Called on the associated component to convert the values.
  • features::Dict{String, Union{Bool, Int, String}}: (default: Dict{String, Any}()) User-defined tags that differentiate multiple time series arrays that represent the same component attribute, such as different arrays for different scenarios or years.
  • internal::InfrastructureSystemsInternal:
source
InfrastructureSystems.StaticTimeSeriesCacheMethod

Construct StaticTimeSeriesCache to automatically control caching of time series data. Maintains rows of data in memory based on cache_size_bytes.

Call Base.iterate or get_time_series_array to retrieve data. Each iteration will return a TimeSeries.TimeArray of size 1.

Arguments

  • ::Type{T}: subtype of StaticTimeSeries
  • component::InfrastructureSystemsComponent: component
  • name::AbstractString: time series name
  • cache_size_bytes = TIME_SERIES_CACHE_SIZE_BYTES: maximum size of data to keep in memory
  • ignore_scaling_factors = false: controls whether to ignore scalingfactormultiplier in the time series instance
source
InfrastructureSystems.StructDefinitionMethod
StructDefinition(
 ;
     struct_name,
     fields,
@@ -259,7 +259,7 @@
     docstring,
     is_component
 )
-

Construct a StructDefinition for code auto-generation purposes.

Arguments

  • struct_name::AbstractString: Struct name
  • fields::Vector{StructField}: Struct fields. Refer to StructField.
  • docstring::AbstractString: Struct docstring. Defaults to an empty string.
  • supertype::Union{String, DataType}: Struct supertype. Defaults to no supertype.
  • is_component::Bool: Set to true for component types that will be attached to a system. Do not set to Default to true.
source
InfrastructureSystems.StructFieldMethod
StructField(
+

Construct a StructDefinition for code auto-generation purposes.

Arguments

  • struct_name::AbstractString: Struct name
  • fields::Vector{StructField}: Struct fields. Refer to StructField.
  • docstring::AbstractString: Struct docstring. Defaults to an empty string.
  • supertype::Union{String, DataType}: Struct supertype. Defaults to no supertype.
  • is_component::Bool: Set to true for component types that will be attached to a system. Do not set to Default to true.
source
InfrastructureSystems.StructFieldMethod
StructField(
 ;
     name,
     data_type,
@@ -272,10 +272,10 @@
     null_value,
     internal_default
 )
-

Construct a StructField for code auto-generation purposes.

Arguments

  • name::String: Field name
  • data_type::Union{DataType, String}: Field type
  • default::Any: The generated constructors will define this as a default value.
  • comment::String: Include this comment above the field name. Defaults to empty string.
  • needs_conversion::Bool: Set to true if the getter and setter functions need to apply unit conversion. The type must implement get_value(::Component, ::Type) and set_value(::Component, ::Type) for this combination of component type and field type.
  • exclude_setter::Bool: Do not generate a setter function for this field. Defaults to false.
  • valid_range::Union{Nothing, String, Dict}: Enables range validation when the component is added to a system. Define this as a Dict with "min" and "max" or as a String with the field name in the struct that defines this field's valid range and InfrastructureSystems will validate any value against that range. Use nothing if one doesn't apply, such as if there is no max limit.
  • validation_action: Define this as "error" or "warn". If it is "error" then InfrastructureSystems will throw an exception if the validation code detects a problem. Otherwise, it will log a warning.
  • null_value::Any: Value to indicate the field is zero or empty, such as 0.0 for Float64. If all members in the struct define this field then a "demo" constructor will be generated. This allows entering val = MyType(nothing) in the REPL to see the layout of a struct without worrying about valid values.
  • internal_default: Set to true for non-user-facing fields like InfrastructureSystemsInternal that have default values.
source
InfrastructureSystems.SupplementalAttributeType

Base type for structs that store supplemental attributes

Required interface functions for subtypes:

  • get_internal()

Optional interface functions:

  • get_uuid()

Subtypes may contain time series. Which requires

  • supportstimeseries(::SupplementalAttribute)

All subtypes must include an instance of ComponentUUIDs in order to track components attached to each attribute.

source
InfrastructureSystems.SupplementalAttributeAssociationsMethod
SupplementalAttributeAssociations(
+

Construct a StructField for code auto-generation purposes.

Arguments

  • name::String: Field name
  • data_type::Union{DataType, String}: Field type
  • default::Any: The generated constructors will define this as a default value.
  • comment::String: Include this comment above the field name. Defaults to empty string.
  • needs_conversion::Bool: Set to true if the getter and setter functions need to apply unit conversion. The type must implement get_value(::Component, ::Type) and set_value(::Component, ::Type) for this combination of component type and field type.
  • exclude_setter::Bool: Do not generate a setter function for this field. Defaults to false.
  • valid_range::Union{Nothing, String, Dict}: Enables range validation when the component is added to a system. Define this as a Dict with "min" and "max" or as a String with the field name in the struct that defines this field's valid range and InfrastructureSystems will validate any value against that range. Use nothing if one doesn't apply, such as if there is no max limit.
  • validation_action: Define this as "error" or "warn". If it is "error" then InfrastructureSystems will throw an exception if the validation code detects a problem. Otherwise, it will log a warning.
  • null_value::Any: Value to indicate the field is zero or empty, such as 0.0 for Float64. If all members in the struct define this field then a "demo" constructor will be generated. This allows entering val = MyType(nothing) in the REPL to see the layout of a struct without worrying about valid values.
  • internal_default: Set to true for non-user-facing fields like InfrastructureSystemsInternal that have default values.
source
InfrastructureSystems.SupplementalAttributeType

Base type for structs that store supplemental attributes

Required interface functions for subtypes:

  • get_internal()

Optional interface functions:

  • get_uuid()

Subtypes may contain time series. Which requires

  • supportstimeseries(::SupplementalAttribute)

All subtypes must include an instance of ComponentUUIDs in order to track components attached to each attribute.

source
InfrastructureSystems.SystemDataType
mutable struct SystemData <: InfrastructureSystemsType
     components::Components
     "Masked components are attached to the system for overall management purposes but
     are not exposed in the standard library calls like [`get_components`](@ref).
@@ -283,155 +283,155 @@
     masked_components::Components
     validation_descriptors::Vector
     internal::InfrastructureSystemsInternal
-end

Container for system components and time series data

source
InfrastructureSystems.SystemDataMethod
SystemData(
 ;
     validation_descriptor_file,
     time_series_in_memory,
     time_series_directory,
     compression
 ) -> InfrastructureSystems.SystemData
-

Construct SystemData to store components and time series data.

Arguments

  • validation_descriptor_file = nothing: Optionally, a file defining component validation descriptors.
  • time_series_in_memory = false: Controls whether time series data is stored in memory or in a file.
  • time_series_directory = nothing: Controls what directory time series data is stored in. Default is the environment variable SIENNATIMESERIES_DIRECTORY or tempdir() if that isn't set.
  • compression = CompressionSettings(): Controls compression of time series data.
source
InfrastructureSystems.TimeSeriesAssociationType

Defines an association between a time series owner (component or supplemental attribute) and the time series metadata.

Examples

association1 = TimeSeriesAssociation(component, time_series)
-association2 = TimeSeriesAssociation(component, time_series, scenario = "high")
source
InfrastructureSystems.TimeSeriesDataType

Abstract type for time series stored in the system. Components store references to these through TimeSeriesMetadata values so that data can reside on storage media instead of memory.

source
InfrastructureSystems.TimeSeriesMetadataStoreMethod
TimeSeriesMetadataStore(
+

Construct SystemData to store components and time series data.

Arguments

  • validation_descriptor_file = nothing: Optionally, a file defining component validation descriptors.
  • time_series_in_memory = false: Controls whether time series data is stored in memory or in a file.
  • time_series_directory = nothing: Controls what directory time series data is stored in. Default is the environment variable SIENNATIMESERIES_DIRECTORY or tempdir() if that isn't set.
  • compression = CompressionSettings(): Controls compression of time series data.
source
InfrastructureSystems.TimeSeriesAssociationType

Defines an association between a time series owner (component or supplemental attribute) and the time series metadata.

Examples

association1 = TimeSeriesAssociation(component, time_series)
+association2 = TimeSeriesAssociation(component, time_series, scenario = "high")
source
InfrastructureSystems.TimeSeriesDataType

Abstract type for time series stored in the system. Components store references to these through TimeSeriesMetadata values so that data can reside on storage media instead of memory.

source
InfrastructureSystems.TimeSeriesStorageType

Abstract type for time series storage implementations.

All subtypes must implement:

  • clear_time_series!
  • deserialize_time_series
  • get_compression_settings
  • get_num_time_series
  • remove_time_series!
  • serialize_time_series!
  • Base.isempty
source
Base.closeMethod
close(logger::InfrastructureSystems.MultiLogger)
-

Ensures that any file streams are flushed and closed.

source
Base.convertMethod
convert(
+

Construct a new TimeSeriesMetadataStore with an in-memory database.

source
InfrastructureSystems.TimeSeriesStorageType

Abstract type for time series storage implementations.

All subtypes must implement:

  • clear_time_series!
  • deserialize_time_series
  • get_compression_settings
  • get_num_time_series
  • remove_time_series!
  • serialize_time_series!
  • Base.isempty
source
Base.closeMethod
close(logger::InfrastructureSystems.MultiLogger)
+

Ensures that any file streams are flushed and closed.

source
Base.convertMethod
convert(
     _::Type{InfrastructureSystems.QuadraticFunctionData},
     data::InfrastructureSystems.LinearFunctionData
 ) -> InfrastructureSystems.QuadraticFunctionData
-

Losslessly convert LinearFunctionData to QuadraticFunctionData

source
Base.flushMethod
flush(logger::InfrastructureSystems.MultiLogger)
-

Flush any file streams.

source
Base.getMethod
get(
+

Losslessly convert LinearFunctionData to QuadraticFunctionData

source
Base.flushMethod
flush(logger::InfrastructureSystems.MultiLogger)
+

Flush any file streams.

source
Base.getMethod
get(
     container::InfrastructureSystems.LazyDictFromIterator,
     key
 ) -> Any
-

Returns the item mapped to key. If the key is already stored then it will be returned with a dictionary lookup. If it has not been stored then iterate over the list until it is found.

Returns nothing if key is not found.

source
Base.zeroMethod
zero(
+

Returns the item mapped to key. If the key is already stored then it will be returned with a dictionary lookup. If it has not been stored then iterate over the list until it is found.

Returns nothing if key is not found.

source
Base.zeroMethod
zero(
     _::Type{InfrastructureSystems.FunctionData}
 ) -> InfrastructureSystems.LinearFunctionData
-

Get a FunctionData representing the function f(x) = 0

source
Base.zeroMethod
zero(
+

Get a FunctionData representing the function f(x) = 0

source
Base.zeroMethod
zero(
     _::Union{InfrastructureSystems.LinearFunctionData, Type{InfrastructureSystems.LinearFunctionData}}
 ) -> InfrastructureSystems.LinearFunctionData
-

Get a LinearFunctionData representing the function f(x) = 0

source
Base.zeroMethod
zero(
+

Get a LinearFunctionData representing the function f(x) = 0

source
Base.zeroMethod
zero(
     _::Union{Type{InfrastructureSystems.AverageRateCurve}, InfrastructureSystems.AverageRateCurve}
 ) -> InfrastructureSystems.AverageRateCurve{InfrastructureSystems.LinearFunctionData}
-

Get an AverageRateCurve representing f(x)/x = 0 with zero initial_input

source
Base.zeroMethod
zero(
+

Get an AverageRateCurve representing f(x)/x = 0 with zero initial_input

source
Base.zeroMethod
zero(
     _::Union{Type{InfrastructureSystems.CostCurve}, InfrastructureSystems.CostCurve}
 ) -> InfrastructureSystems.CostCurve{LinearCurve}
-

Get a CostCurve representing zero variable cost

source
Base.zeroMethod
zero(
+

Get a CostCurve representing zero variable cost

source
Base.zeroMethod
zero(
     _::Union{Type{InfrastructureSystems.FuelCurve}, InfrastructureSystems.FuelCurve}
 ) -> InfrastructureSystems.FuelCurve{LinearCurve}
-

Get a FuelCurve representing zero fuel usage and zero fuel cost

source
Base.zeroMethod
zero(
+

Get a FuelCurve representing zero fuel usage and zero fuel cost

source
Base.zeroMethod
zero(
     _::Union{Type{InfrastructureSystems.IncrementalCurve}, InfrastructureSystems.IncrementalCurve}
 ) -> InfrastructureSystems.IncrementalCurve{InfrastructureSystems.LinearFunctionData}
-

Get an IncrementalCurve representing f'(x) = 0 with zero initial_input

source
Base.zeroMethod
zero(
+

Get an IncrementalCurve representing f'(x) = 0 with zero initial_input

source
Base.zeroMethod
zero(
     _::Union{Type{InfrastructureSystems.InputOutputCurve}, InfrastructureSystems.InputOutputCurve}
 ) -> LinearCurve
-

Get an InputOutputCurve representing f(x) = 0

source
Base.zeroMethod
zero(
+

Get an InputOutputCurve representing f(x) = 0

source
Base.zeroMethod
zero(
     _::Union{Type{InfrastructureSystems.ValueCurve}, InfrastructureSystems.ValueCurve}
 ) -> LinearCurve
-

Get a ValueCurve representing zero variable cost

source
InfrastructureSystems._check_transform_single_time_seriesMethod
_check_transform_single_time_series(
     data::InfrastructureSystems.SystemData,
     _::Type{InfrastructureSystems.DeterministicSingleTimeSeries},
     horizon::Dates.Period,
     interval::Dates.Period
 ) -> Vector{Any}
-

Check that all existing SingleTimeSeries can be converted to DeterministicSingleTimeSeries with the given horizon and interval.

Throw ConflictingInputsError if any time series cannot be converted.

Return a Vector of NamedTuple of component, time series metadata, and forecast parameters for all matches.

source
InfrastructureSystems._get_all_concrete_subtypesMethod
_get_all_concrete_subtypes(
+

Check that all existing SingleTimeSeries can be converted to DeterministicSingleTimeSeries with the given horizon and interval.

Throw ConflictingInputsError if any time series cannot be converted.

Return a Vector of NamedTuple of component, time series metadata, and forecast parameters for all matches.

source
InfrastructureSystems._validateMethod
_validate(
     data::InfrastructureSystems.SystemData,
     component::InfrastructureSystems.InfrastructureSystemsComponent
 )
-

Checks that the component exists in data and is the same object.

source
InfrastructureSystems.add_association!Method
add_association!(
     associations::InfrastructureSystems.SupplementalAttributeAssociations,
     component::InfrastructureSystems.InfrastructureSystemsComponent,
     attribute::InfrastructureSystems.SupplementalAttribute
 )
-

Add a supplemental attribute association to the associations. The caller must check for duplicates.

source
InfrastructureSystems.add_component!Method
add_component!(
     components::InfrastructureSystems.Components,
     component::InfrastructureSystems.InfrastructureSystemsComponent;
     kwargs...
 )
-

Add a component.

Throws ArgumentError if the component's name is already stored for its concrete type.

Throws InvalidRange if any of the component's field values are outside of defined valid range.

source
InfrastructureSystems.add_component_to_subsystem!Method
add_component_to_subsystem!(
+

Add a component.

Throws ArgumentError if the component's name is already stored for its concrete type.

Throws InvalidRange if any of the component's field values are outside of defined valid range.

source
InfrastructureSystems.add_metadata!Method
add_metadata!(
     store::InfrastructureSystems.TimeSeriesMetadataStore,
     owner::Union{InfrastructureSystems.InfrastructureSystemsComponent, InfrastructureSystems.SupplementalAttribute},
     metadata::InfrastructureSystems.TimeSeriesMetadata
 )
-

Add metadata to the store. The caller must check if there are duplicates.

source
InfrastructureSystems.add_time_series!Method
add_time_series!(
     data::InfrastructureSystems.SystemData,
     components,
     time_series::InfrastructureSystems.TimeSeriesData;
     features...
 ) -> InfrastructureSystems.TimeSeriesKey
-

Add the same time series data to multiple components.

Arguments

  • data::SystemData: SystemData
  • components: iterable of components that will store the same time series reference
  • time_series::TimeSeriesData: Any object of subtype TimeSeriesData

This is significantly more efficent than calling add_time_series! for each component individually with the same data because in this case, only one time series array is stored.

Throws ArgumentError if a component is not stored in the system.

source
InfrastructureSystems.add_time_series!Method
add_time_series!(
+

Add the same time series data to multiple components.

Arguments

  • data::SystemData: SystemData
  • components: iterable of components that will store the same time series reference
  • time_series::TimeSeriesData: Any object of subtype TimeSeriesData

This is significantly more efficent than calling add_time_series! for each component individually with the same data because in this case, only one time series array is stored.

Throws ArgumentError if a component is not stored in the system.

source
InfrastructureSystems.add_time_series!Method
add_time_series!(
     data::InfrastructureSystems.SystemData,
     owner::Union{InfrastructureSystems.InfrastructureSystemsComponent, InfrastructureSystems.SupplementalAttribute},
     time_series::InfrastructureSystems.TimeSeriesData;
     features...
 ) -> InfrastructureSystems.TimeSeriesKey
-

Add time series data to a component or supplemental attribute.

Arguments

  • data::SystemData: SystemData
  • owner::InfrastructureSystemsComponent: will store the time series reference
  • time_series::TimeSeriesData: Any object of subtype TimeSeriesData

Throws ArgumentError if the owner is not stored in the system.

source
InfrastructureSystems.add_time_series_from_file_metadata!Method
add_time_series_from_file_metadata!(
+

Add time series data to a component or supplemental attribute.

Arguments

  • data::SystemData: SystemData
  • owner::InfrastructureSystemsComponent: will store the time series reference
  • time_series::TimeSeriesData: Any object of subtype TimeSeriesData

Throws ArgumentError if the owner is not stored in the system.

source
InfrastructureSystems.add_time_series_from_file_metadata!Method
add_time_series_from_file_metadata!(
     data::InfrastructureSystems.SystemData,
     component_type::Type{<:InfrastructureSystems.InfrastructureSystemsComponent},
     file_metadata::Vector{InfrastructureSystems.TimeSeriesFileMetadata};
     resolution
 ) -> Vector{InfrastructureSystems.TimeSeriesKey}
-

Adds time series data from a metadata file or metadata descriptors.

Arguments

  • data::SystemData: system
  • file_metadata::Vector{TimeSeriesFileMetadata}: metadata for time series
  • resolution::DateTime.Period=nothing: skip time_series that don't match this resolution.
source
InfrastructureSystems.add_time_series_from_file_metadata!Method
add_time_series_from_file_metadata!(
+

Adds time series data from a metadata file or metadata descriptors.

Arguments

  • data::SystemData: system
  • file_metadata::Vector{TimeSeriesFileMetadata}: metadata for time series
  • resolution::DateTime.Period=nothing: skip time_series that don't match this resolution.
source
InfrastructureSystems.add_time_series_from_file_metadata!Method
add_time_series_from_file_metadata!(
     data::InfrastructureSystems.SystemData,
     ::Type{T<:InfrastructureSystems.InfrastructureSystemsComponent},
     metadata_file::AbstractString;
     resolution
 ) -> Vector{InfrastructureSystems.TimeSeriesKey}
-

Adds time_series from a metadata file or metadata descriptors.

Arguments

  • data::SystemData: system
  • ::Type{T}: type of the component associated with time series data; may be abstract
  • metadata_file::AbstractString: metadata file for time series that includes an array of TimeSeriesFileMetadata instances or a vector.
  • resolution::DateTime.Period=nothing: skip time_series that don't match this resolution.
source
InfrastructureSystems.assign_new_uuid_internal!Method
assign_new_uuid_internal!(
+

Adds time_series from a metadata file or metadata descriptors.

Arguments

  • data::SystemData: system
  • ::Type{T}: type of the component associated with time series data; may be abstract
  • metadata_file::AbstractString: metadata file for time series that includes an array of TimeSeriesFileMetadata instances or a vector.
  • resolution::DateTime.Period=nothing: skip time_series that don't match this resolution.
source
InfrastructureSystems.assign_new_uuid_internal!Method
assign_new_uuid_internal!(
     component::InfrastructureSystems.InfrastructureSystemsComponent
 )
-

Return an instance of ForecastParameters for the given inputs.

Throws ConflictingInputsError if horizon and interval are incompatible with the metadata.

source
InfrastructureSystems.backup_to_tempMethod
backup_to_temp(
     store::InfrastructureSystems.TimeSeriesMetadataStore
 ) -> String
-

Backup the database to a file on the temporary filesystem and return that filename.

source
InfrastructureSystems.check_consistencyMethod
check_consistency(
     store::InfrastructureSystems.TimeSeriesMetadataStore,
     _::Type{InfrastructureSystems.SingleTimeSeries}
 ) -> Tuple{Any, Any}
-

Throw InvalidValue if the SingleTimeSeries arrays have different initial times or lengths. Return the initial timestamp and length as a tuple.

source
InfrastructureSystems.compare_over_fieldsMethod
compare_over_fields(cmp_op, reduce_op, init, a, b) -> Any
-

For a and b, instances of the same concrete type, iterate over all the fields, compare a's value to b's using cmp_op, and reduce to one value using reduce_op with an initialization value of init.

source
InfrastructureSystems.compare_over_fieldsMethod
compare_over_fields(cmp_op, reduce_op, init, a, b) -> Any
+

For a and b, instances of the same concrete type, iterate over all the fields, compare a's value to b's using cmp_op, and reduce to one value using reduce_op with an initialization value of init.

source
InfrastructureSystems.compare_valuesMethod
compare_values(
     match_fn::Union{Nothing, Function},
     x,
     y;
     compare_uuids,
     exclude
 ) -> Bool
-

Recursively compares struct values. Prints all mismatched values to stdout.

Arguments

  • match_fn: optional, a function used to determine whether two values match in the base case of the recursion. If nothing or not specified, the default implementation uses IS.isequivalent.
  • x::T: First value
  • y::U: Second value
  • compare_uuids::Bool = false: Compare any UUID in the object or composed objects.
  • `exclude::Set{Symbol} = Set{Symbol}(): Fields to exclude from comparison. Passed on recursively and so applied per type.
source
InfrastructureSystems.configure_loggingMethod
configure_logging(
+

Recursively compares struct values. Prints all mismatched values to stdout.

Arguments

  • match_fn: optional, a function used to determine whether two values match in the base case of the recursion. If nothing or not specified, the default implementation uses IS.isequivalent.
  • x::T: First value
  • y::U: Second value
  • compare_uuids::Bool = false: Compare any UUID in the object or composed objects.
  • `exclude::Set{Symbol} = Set{Symbol}(): Fields to exclude from comparison. Passed on recursively and so applied per type.
source
InfrastructureSystems.configure_loggingMethod
configure_logging(
 ;
     console,
     console_stream,
@@ -446,409 +446,409 @@
 ) -> InfrastructureSystems.MultiLogger
 

Creates console and file loggers per caller specification and returns a MultiLogger.

Suppress noisy events by specifying per-event values of maxlog = X and _suppression_period = Y where X is the max number of events that can occur in Y seconds. After the period ends, messages will no longer be suppressed. Note that if you don't specify _suppression_period then maxlog applies for the for the duration of your process (standard Julia logging behavior).

Note: Use of log message suppression and the LogEventTracker are not thread-safe. Please contact the package developers if you need this functionality.

Note: If logging to a file users must call Base.close() on the returned MultiLogger to ensure that all events get flushed.

Arguments

  • console::Bool=true: create console logger
  • console_stream::IOStream=stderr: stream for console logger
  • console_level::Logging.LogLevel=Logging.Error: level for console messages
  • progress::Bool=true: enable progress logger
  • file::Bool=true: create file logger
  • filename::Union{Nothing, String}=log.txt: log file
  • file_level::Logging.LogLevel=Logging.Info: level for file messages
  • file_mode::String=w+: mode used when opening log file
  • tracker::Union{LogEventTracker, Nothing}=LogEventTracker(): optionally track log events
  • set_global::Bool=true: set the created logger as the global logger

Example

logger = configure_logging(filename="mylog.txt")
 @info "hello world"
-@info "hello world" maxlog = 5 _suppression_period = 10
source
InfrastructureSystems.copy_h5_fileMethod
copy_h5_file(src::AbstractString, dst::AbstractString)
-

Copies an HDF5 file to a new file. This should be used instead of a system call to copy because it won't copy unused space that results from deleting datasets.

source
InfrastructureSystems.copy_h5_fileMethod
copy_h5_file(src::AbstractString, dst::AbstractString)
+

Copies an HDF5 file to a new file. This should be used instead of a system call to copy because it won't copy unused space that results from deleting datasets.

source
InfrastructureSystems.copy_time_series!Method
copy_time_series!(
     dst::Union{InfrastructureSystems.InfrastructureSystemsComponent, InfrastructureSystems.SupplementalAttribute},
     src::Union{InfrastructureSystems.InfrastructureSystemsComponent, InfrastructureSystems.SupplementalAttribute};
     name_mapping,
     scaling_factor_multiplier_mapping
 )
-

Efficiently add all time_series in one component to another by copying the underlying references.

Arguments

  • dst::TimeSeriesOwners: Destination owner
  • src::TimeSeriesOwners: Source owner
  • name_mapping::Dict = nothing: Optionally map src names to different dst names. If provided and src has a timeseries with a name not present in namemapping, that timeseries will not copied. If namemapping is nothing then all time_series will be copied with src's names.
  • scaling_factor_multiplier_mapping::Dict = nothing: Optionally map src multipliers to different dst multipliers. If provided and src has a timeseries with a multiplier not present in scalingfactormultipliermapping, that timeseries will not copied. If scalingfactormultipliermapping is nothing then all time_series will be copied with src's multipliers.
source
InfrastructureSystems.deserializeMethod
deserialize(
+

Efficiently add all time_series in one component to another by copying the underlying references.

Arguments

  • dst::TimeSeriesOwners: Destination owner
  • src::TimeSeriesOwners: Source owner
  • name_mapping::Dict = nothing: Optionally map src names to different dst names. If provided and src has a timeseries with a name not present in namemapping, that timeseries will not copied. If namemapping is nothing then all time_series will be copied with src's names.
  • scaling_factor_multiplier_mapping::Dict = nothing: Optionally map src multipliers to different dst multipliers. If provided and src has a timeseries with a multiplier not present in scalingfactormultipliermapping, that timeseries will not copied. If scalingfactormultipliermapping is nothing then all time_series will be copied with src's multipliers.
source
InfrastructureSystems.deserializeMethod
deserialize(
     _::Type{T<:InfrastructureSystems.InfrastructureSystemsType},
     data::Dict
-) -> InfrastructureSystems.ComponentUUIDs
-

Deserialize an object from standard types stored in non-Julia formats, such as JSON, into Julia types.

source
InfrastructureSystems.drop_tableMethod
drop_table(
+) -> InfrastructureSystems.TestComponent
+

Deserialize an object from standard types stored in non-Julia formats, such as JSON, into Julia types.

source
InfrastructureSystems.executeMethod
execute(
     db::SQLite.DB,
     query::AbstractString,
     params::Union{Nothing, Vector},
     log_group::Symbol
 ) -> SQLite.Query
-

Wrapper around SQLite.DBInterface.execute to provide log messages.

source
InfrastructureSystems.execute_countMethod
execute_count(
     db::SQLite.DB,
     query::AbstractString,
     params::Union{Nothing, Vector},
     log_group::Symbol
 ) -> Any
-

Run a query to find a count. The query must produce a column called count with one row.

source
InfrastructureSystems.fromMethod
from(
     time_series::InfrastructureSystems.SingleTimeSeries,
     timestamp
 ) -> InfrastructureSystems.SingleTimeSeries
-

Return a time_series truncated starting with timestamp.

source
InfrastructureSystems.from_fileMethod
from_file(
     ::Type{InfrastructureSystems.Hdf5TimeSeriesStorage},
     filename::AbstractString;
     read_only,
     directory
 ) -> InfrastructureSystems.Hdf5TimeSeriesStorage
-

Constructs Hdf5TimeSeriesStorage from an existing file.

source
InfrastructureSystems.from_h5_fileMethod
from_h5_file(
     _::Type{InfrastructureSystems.TimeSeriesMetadataStore},
     src::AbstractString,
     directory
 ) -> InfrastructureSystems.TimeSeriesMetadataStore
-

Load a TimeSeriesMetadataStore from an HDF5 file into an in-memory database.

source
InfrastructureSystems.from_jsonMethod
from_json(
     _::Type{T<:InfrastructureSystems.InfrastructureSystemsType},
     filename::String
 ) -> Any
-

Deserializes a InfrastructureSystemsType from a JSON filename.

source
InfrastructureSystems.from_jsonMethod
from_json(
     io::Union{IO, String},
     _::Type{T<:InfrastructureSystems.InfrastructureSystemsType}
 ) -> InfrastructureSystems.TestComponent
-

Deserializes a InfrastructureSystemsType from String or IO.

source
InfrastructureSystems.generate_struct_fileMethod
generate_struct_file(
     definition::InfrastructureSystems.StructDefinition;
     filename,
     output_directory
 )
-

Generate a Julia source code file for one struct from a StructDefinition.

Refer to StructDefinition and StructField for descriptions of the available fields.

Arguments

  • definition::StructDefinition: Defines the struct and all fields.
  • filename::AbstractString: Add the struct definition to this JSON file. Defaults to src/descriptors/structs.json
  • output_directory::AbstractString: Generate the files in this directory. Defaults to src/generated
source
InfrastructureSystems.generate_struct_filesMethod
generate_struct_files(
+

Generate a Julia source code file for one struct from a StructDefinition.

Refer to StructDefinition and StructField for descriptions of the available fields.

Arguments

  • definition::StructDefinition: Defines the struct and all fields.
  • filename::AbstractString: Add the struct definition to this JSON file. Defaults to src/descriptors/structs.json
  • output_directory::AbstractString: Generate the files in this directory. Defaults to src/generated
source
InfrastructureSystems.generate_struct_filesMethod
generate_struct_files(
     definitions;
     filename,
     output_directory
 )
-

Generate Julia source code files for multiple structs from a iterable of StructDefinition instances.

Refer to StructDefinition and StructField for descriptions of the available fields.

Arguments

  • definitions: Defines the structs and all fields.
  • filename::AbstractString: Add the struct definition to this JSON file. Defaults to src/descriptors/power_system_structs.json
  • output_directory::AbstractString: Generate the files in this directory. Defaults to src/generated
source
InfrastructureSystems.get_all_concrete_subtypesMethod
get_all_concrete_subtypes(_::Type{T}) -> Any
-

Returns an array of all concrete subtypes of T. Caches the values for faster lookup on repeated calls.

Note that this does not find parameterized types. It will also not find types dynamically added after the first call of given type.

source
InfrastructureSystems.get_assigned_subsystemsMethod
get_assigned_subsystems(
+

Generate Julia source code files for multiple structs from a iterable of StructDefinition instances.

Refer to StructDefinition and StructField for descriptions of the available fields.

Arguments

  • definitions: Defines the structs and all fields.
  • filename::AbstractString: Add the struct definition to this JSON file. Defaults to src/descriptors/power_system_structs.json
  • output_directory::AbstractString: Generate the files in this directory. Defaults to src/generated
source
InfrastructureSystems.get_all_concrete_subtypesMethod
get_all_concrete_subtypes(_::Type{T}) -> Any
+

Returns an array of all concrete subtypes of T. Caches the values for faster lookup on repeated calls.

Note that this does not find parameterized types. It will also not find types dynamically added after the first call of given type.

source
InfrastructureSystems.get_assigned_subsystemsMethod
get_assigned_subsystems(
     data::InfrastructureSystems.SystemData,
     component::InfrastructureSystems.InfrastructureSystemsComponent
 ) -> Vector
-

Return a Vector of subsystem names that contain the component.

source
InfrastructureSystems.get_attribute_summary_tableMethod
get_attribute_summary_table(
     associations::InfrastructureSystems.SupplementalAttributeAssociations
 ) -> DataFrames.DataFrame
-

Return a DataFrame with the number of supplemental attributes by type for components.

source
InfrastructureSystems.get_componentMethod
get_component(
     _::Type{T<:InfrastructureSystems.InfrastructureSystemsComponent},
     components::InfrastructureSystems.Components,
     name::AbstractString
 ) -> Union{Nothing, InfrastructureSystems.InfrastructureSystemsComponent}
-

Get the component of type T with name. Returns nothing if no component matches. If T is an abstract type then the names of components across all subtypes of T must be unique.

See get_components_by_name for abstract types with non-unique names across subtypes.

Throws ArgumentError if T is not a concrete type and there is more than one component with requested name

source
InfrastructureSystems.get_componentsMethod
get_components(
+

Get the component of type T with name. Returns nothing if no component matches. If T is an abstract type then the names of components across all subtypes of T must be unique.

See get_components_by_name for abstract types with non-unique names across subtypes.

Throws ArgumentError if T is not a concrete type and there is more than one component with requested name

source
InfrastructureSystems.get_componentsMethod
get_components(
     ::Type{T<:InfrastructureSystems.InfrastructureSystemsComponent},
     components::InfrastructureSystems.Components;
     component_uuids
 ) -> InfrastructureSystems.FlattenIteratorWrapper{T, I} where {T<:InfrastructureSystems.InfrastructureSystemsComponent, I<:(Vector)}
-

Returns an iterator of components. T can be concrete or abstract. Call collect on the result if an array is desired.

Arguments

  • T: component type
  • components::Components: Components of the system
  • filter_func::Union{Nothing, Function} = nothing: Optional function that accepts a component of type T and returns a Bool. Apply this function to each component and only return components where the result is true.

See also: iterate_components

source
InfrastructureSystems.get_components_by_nameMethod
get_components_by_name(
+

Returns an iterator of components. T can be concrete or abstract. Call collect on the result if an array is desired.

Arguments

  • T: component type
  • components::Components: Components of the system
  • filter_func::Union{Nothing, Function} = nothing: Optional function that accepts a component of type T and returns a Bool. Apply this function to each component and only return components where the result is true.

See also: iterate_components

source
InfrastructureSystems.get_components_by_nameMethod
get_components_by_name(
     _::Type{T<:InfrastructureSystems.InfrastructureSystemsComponent},
     components::InfrastructureSystems.Components,
     name::AbstractString
 ) -> Vector{<:InfrastructureSystems.InfrastructureSystemsComponent}
-

Get the components of abstract type T with name. Note that InfrastructureSystems enforces unique names on each concrete type but not across concrete types.

See get_component if the concrete type is known.

Throws ArgumentError if T is not an abstract type.

source
InfrastructureSystems.get_countMethod
get_count(
+

Get the components of abstract type T with name. Note that InfrastructureSystems enforces unique names on each concrete type but not across concrete types.

See get_component if the concrete type is known.

Throws ArgumentError if T is not an abstract type.

source
InfrastructureSystems.get_data_typeMethod
get_data_type(
     ts::InfrastructureSystems.TimeSeriesData
 ) -> Any
-

Return a String for the data type of the forecast data, this implementation avoids the use of eval on arbitrary code stored in HDF dataset.

source
InfrastructureSystems.get_extMethod
get_ext(
+

Return a String for the data type of the forecast data, this implementation avoids the use of eval on arbitrary code stored in HDF dataset.

source
InfrastructureSystems.get_extMethod
get_ext(
     obj::InfrastructureSystems.InfrastructureSystemsInternal
 ) -> Union{Nothing, Dict{String, Any}}
-

Return a user-modifiable dictionary to store extra information.

source
InfrastructureSystems.get_fuel_costMethod
get_fuel_cost(
     cost::InfrastructureSystems.FuelCurve
 ) -> Union{Float64, InfrastructureSystems.TimeSeriesKey}
-

Get the fuel cost or the name of the fuel cost time series

source
InfrastructureSystems.get_function_dataMethod
get_function_data(
     cost::InfrastructureSystems.ProductionVariableCostCurve
 ) -> Any
-

Get the FunctionData representation of this ProductionVariableCostCurve's ValueCurve

source
InfrastructureSystems.get_group_levelMethod
get_group_level(
     logger::InfrastructureSystems.MultiLogger,
     group::Symbol
 ) -> Union{Nothing, Base.CoreLogging.LogLevel}
-

Return the minimum logging level for a group or nothing if group is not stored.

source
InfrastructureSystems.get_group_levelsMethod
get_group_levels(
     logger::InfrastructureSystems.MultiLogger
 ) -> Dict{Symbol, Base.CoreLogging.LogLevel}
-

Return the minimum logging levels for groups that have been stored.

source
InfrastructureSystems.get_initial_inputMethod
get_initial_input(
     cost::InfrastructureSystems.ProductionVariableCostCurve
 ) -> Union{Nothing, Float64}
-

Get the initial_input field of this ProductionVariableCostCurve's ValueCurve (not defined for input-output data)

source
InfrastructureSystems.get_initial_inputMethod
get_initial_input(
     curve::Union{InfrastructureSystems.AverageRateCurve, InfrastructureSystems.IncrementalCurve}
 ) -> Union{Nothing, Float64}
-

Get the initial_input field of this ValueCurve (not defined for InputOutputCurve)

source
InfrastructureSystems.get_initial_timesMethod
get_initial_times(
     f::InfrastructureSystems.Forecast
 ) -> DataStructures.SDMKeyIteration{T} where T<:DataStructures.SortedDict
-

Return the initial times in the forecast.

source
InfrastructureSystems.get_log_eventsMethod
get_log_events(
     tracker::InfrastructureSystems.LogEventTracker,
     level::Base.CoreLogging.LogLevel
 ) -> Union{Base.ValueIterator{Dict{Symbol, InfrastructureSystems.LogEvent}}, Vector{Any}}
-

Returns an iterable of log events for a level.

source
InfrastructureSystems.get_metadataMethod
get_metadata(
     store::InfrastructureSystems.TimeSeriesMetadataStore,
     owner::Union{InfrastructureSystems.InfrastructureSystemsComponent, InfrastructureSystems.SupplementalAttribute},
     time_series_type::Type{<:InfrastructureSystems.TimeSeriesData},
     name::String;
     features...
 ) -> Any
-

Return the metadata matching the inputs. Throw an exception if there is more than one matching input.

source
InfrastructureSystems.get_next_time_series_array!Method
get_next_time_series_array!(
     cache::InfrastructureSystems.TimeSeriesCache
 ) -> Any
 

Return the next TimeSeries.TimeArray.

Returns nothing when all data has been read. Call reset! to restart. Call get_next_time to check the start time.

Reads from storage if the data is not already in cache.

Arguments

  • cache::StaticTimeSeriesCache: cached instance

Examples

cache = ForecastCache(Deterministic, component, "max_active_power")
 window1 = get_next_time_series_array!(cache)
-window2 = get_next_time_series_array!(cache)
source
InfrastructureSystems.get_num_stepsMethod
get_num_steps(
     _::Type{T<:InfrastructureSystems.TimeSeriesFileFormat},
     file::CSV.File,
     period::AbstractArray
 ) -> Any
-

Return the number of steps specified by the period in the file.

source
InfrastructureSystems.get_num_stepsMethod
get_num_steps(
     _::Type{T<:InfrastructureSystems.TimeSeriesFormatPeriodAsHeader},
     file::CSV.File,
     period::AbstractArray
 ) -> Any
-

Return the number of steps specified by the period in the file.

source
InfrastructureSystems.get_num_stepsMethod
get_num_steps(
     _::Type{T<:Union{InfrastructureSystems.TimeSeriesFormatDateTimeAsColumn, InfrastructureSystems.TimeSeriesFormatPeriodAsColumn}},
     file::CSV.File,
     period::AbstractArray
 ) -> Any
-

Return the number of steps specified by the period in the file.

source
InfrastructureSystems.get_pointsMethod
get_points(
     data::InfrastructureSystems.PiecewiseLinearData
 ) -> Vector{@NamedTuple{x::Float64, y::Float64}}
-

Get the points that define the piecewise data

source
InfrastructureSystems.get_slopesMethod
get_slopes(
     pwl::InfrastructureSystems.PiecewiseLinearData
 ) -> Vector{Float64}
-

Calculates the slopes of the line segments defined by the PiecewiseLinearData, returning one fewer slope than the number of underlying points.

source
InfrastructureSystems.get_subsystem_componentsMethod
get_subsystem_components(
     data::InfrastructureSystems.SystemData,
     subsystem_name::AbstractString
 ) -> Base.Generator{Set{Base.UUID}, InfrastructureSystems.var"#419#420"{InfrastructureSystems.SystemData}}
-

Return a Generator of all components in the subsystem.

Throws ArgumentError if the subsystem name is not stored.

source
InfrastructureSystems.get_subsystemsMethod
get_subsystems(
     data::InfrastructureSystems.SystemData
 ) -> Base.KeySet{String, Dict{String, Set{Base.UUID}}}
-

Return an iterator of all subsystem names in the system.

source
InfrastructureSystems.get_supplemental_attributesMethod
get_supplemental_attributes(
     filter_func::Function,
     _::Type{T<:InfrastructureSystems.SupplementalAttribute},
     mgr::InfrastructureSystems.SupplementalAttributeManager
 ) -> InfrastructureSystems.FlattenIteratorWrapper{T, I} where {T<:InfrastructureSystems.SupplementalAttribute, I<:(Vector)}
-

Returns an iterator of supplemental_attributes. T can be concrete or abstract. Call collect on the result if an array is desired.

Arguments

  • T: supplemental_attribute type
  • mgr::SupplementalAttributeManager: SupplementalAttributeManager in the system
  • filter_func::Union{Nothing, Function} = nothing: Optional function that accepts a component of type T and returns a Bool. Apply this function to each component and only return components where the result is true.
source
InfrastructureSystems.get_supplemental_attributesMethod
get_supplemental_attributes(
+

Returns an iterator of supplemental_attributes. T can be concrete or abstract. Call collect on the result if an array is desired.

Arguments

  • T: supplemental_attribute type
  • mgr::SupplementalAttributeManager: SupplementalAttributeManager in the system
  • filter_func::Union{Nothing, Function} = nothing: Optional function that accepts a component of type T and returns a Bool. Apply this function to each component and only return components where the result is true.
source
InfrastructureSystems.get_supplemental_attributesMethod
get_supplemental_attributes(
     _::Type{T<:InfrastructureSystems.SupplementalAttribute},
     component::InfrastructureSystems.InfrastructureSystemsComponent
 ) -> Any
-

Return a Vector of supplemental_attributes. T can be concrete or abstract.

Arguments

  • T: supplemental_attribute type
  • supplemental_attributes::SupplementalAttributes: SupplementalAttributes in the system
  • filter_func::Union{Nothing, Function} = nothing: Optional function that accepts a component of type T and returns a Bool. Apply this function to each component and only return components where the result is true.
source
InfrastructureSystems.get_time_seriesFunction
get_time_series(
+

Return a Vector of supplemental_attributes. T can be concrete or abstract.

Arguments

  • T: supplemental_attribute type
  • supplemental_attributes::SupplementalAttributes: SupplementalAttributes in the system
  • filter_func::Union{Nothing, Function} = nothing: Optional function that accepts a component of type T and returns a Bool. Apply this function to each component and only return components where the result is true.
source
InfrastructureSystems.get_time_seriesFunction
get_time_series(
     owner::Union{InfrastructureSystems.InfrastructureSystemsComponent, InfrastructureSystems.SupplementalAttribute},
     key::InfrastructureSystems.TimeSeriesKey
 ) -> Any
@@ -870,7 +870,7 @@
     len::Union{Nothing, Int64},
     count::Union{Nothing, Int64}
 ) -> Any
-

Return the exact stored data in a time series, using a time series key look up

This will load all forecast windows into memory by default. Be aware of how much data is stored.

Specify start_time and len if you only need a subset of data.

Does not apply a scaling factor multiplier.

Arguments

  • owner::TimeSeriesOwners: Component or attribute containing the time series
  • key::TimeSeriesKey: the time series' key
  • start_time::Union{Nothing, Dates.DateTime} = nothing: If nothing, use the initial_timestamp of the time series. If the time series is a subtype of Forecast then start_time must be the first timestamp of a window.
  • len::Union{Nothing, Int} = nothing: Length in the time dimension. If nothing, use the entire length.
  • count::Union{Nothing, Int} = nothing: Only applicable to subtypes of Forecast. Number of forecast windows starting at start_time to return. Defaults to all available.
  • features...: User-defined tags that differentiate multiple time series arrays for the same component attribute, such as different arrays for different scenarios or years

See also: get_time_series by name

source
InfrastructureSystems.get_time_seriesMethod
get_time_series(
+

Return the exact stored data in a time series, using a time series key look up

This will load all forecast windows into memory by default. Be aware of how much data is stored.

Specify start_time and len if you only need a subset of data.

Does not apply a scaling factor multiplier.

Arguments

  • owner::TimeSeriesOwners: Component or attribute containing the time series
  • key::TimeSeriesKey: the time series' key
  • start_time::Union{Nothing, Dates.DateTime} = nothing: If nothing, use the initial_timestamp of the time series. If the time series is a subtype of Forecast then start_time must be the first timestamp of a window.
  • len::Union{Nothing, Int} = nothing: Length in the time dimension. If nothing, use the entire length.
  • count::Union{Nothing, Int} = nothing: Only applicable to subtypes of Forecast. Number of forecast windows starting at start_time to return. Defaults to all available.
  • features...: User-defined tags that differentiate multiple time series arrays for the same component attribute, such as different arrays for different scenarios or years

See also: get_time_series by name

source
InfrastructureSystems.get_time_seriesMethod
get_time_series(
     ::Type{T<:InfrastructureSystems.TimeSeriesData},
     owner::Union{InfrastructureSystems.InfrastructureSystemsComponent, InfrastructureSystems.SupplementalAttribute},
     name::AbstractString;
@@ -879,7 +879,7 @@
     count,
     features...
 ) -> Any
-

Return the exact stored data in a time series

This will load all forecast windows into memory by default. Be aware of how much data is stored.

Specify start_time and len if you only need a subset of data.

Does not apply a scaling factor multiplier.

Arguments

  • ::Type{T}: Concrete subtype of TimeSeriesData to return
  • owner::TimeSeriesOwners: Component or attribute containing the time series
  • name::AbstractString: name of time series
  • start_time::Union{Nothing, Dates.DateTime} = nothing: If nothing, use the initial_timestamp of the time series. If T is a subtype of Forecast then start_time must be the first timestamp of a window.
  • len::Union{Nothing, Int} = nothing: Length in the time dimension. If nothing, use the entire length.
  • count::Union{Nothing, Int} = nothing: Only applicable to subtypes of Forecast. Number of forecast windows starting at start_time to return. Defaults to all available.
  • features...: User-defined tags that differentiate multiple time series arrays for the same component attribute, such as different arrays for different scenarios or years

See also: get_time_series_array, get_time_series_values, get_time_series by key

source
InfrastructureSystems.get_time_series_arrayFunction
get_time_series_array(
+

Return the exact stored data in a time series

This will load all forecast windows into memory by default. Be aware of how much data is stored.

Specify start_time and len if you only need a subset of data.

Does not apply a scaling factor multiplier.

Arguments

  • ::Type{T}: Concrete subtype of TimeSeriesData to return
  • owner::TimeSeriesOwners: Component or attribute containing the time series
  • name::AbstractString: name of time series
  • start_time::Union{Nothing, Dates.DateTime} = nothing: If nothing, use the initial_timestamp of the time series. If T is a subtype of Forecast then start_time must be the first timestamp of a window.
  • len::Union{Nothing, Int} = nothing: Length in the time dimension. If nothing, use the entire length.
  • count::Union{Nothing, Int} = nothing: Only applicable to subtypes of Forecast. Number of forecast windows starting at start_time to return. Defaults to all available.
  • features...: User-defined tags that differentiate multiple time series arrays for the same component attribute, such as different arrays for different scenarios or years

See also: get_time_series_array, get_time_series_values, get_time_series by key

source
InfrastructureSystems.get_time_series_arrayFunction
get_time_series_array(
     owner::Union{InfrastructureSystems.InfrastructureSystemsComponent, InfrastructureSystems.SupplementalAttribute},
     time_series::InfrastructureSystems.StaticTimeSeries;
     ...
@@ -891,18 +891,18 @@
     len,
     ignore_scaling_factors
 ) -> Any
-

Return a TimeSeries.TimeArray from a cached StaticTimeSeries instance.

If the time series data are scaling factors, the returned data will be scaled by the scaling factor multiplier by default.

Arguments

  • owner::TimeSeriesOwners: Component or attribute containing the time series
  • time_series::StaticTimeSeries: subtype of StaticTimeSeries (e.g., SingleTimeSeries)
  • start_time::Union{Nothing, Dates.DateTime} = nothing: the first timestamp to retrieve. If nothing, use the initial_timestamp of the time series.
  • len::Union{Nothing, Int} = nothing: Length of time-series to retrieve (i.e. number of timestamps). If nothing, use the entire length
  • ignore_scaling_factors = false: If true, the time-series data will be multiplied by the result of calling the stored scaling_factor_multiplier function on the owner

See also: get_time_series_values, get_time_series_timestamps, StaticTimeSeriesCache, get_time_series_array by name from storage, get_time_series_array from a ForecastCache

source
InfrastructureSystems.get_time_series_array!Method
get_time_series_array!(
+

Return a TimeSeries.TimeArray from a cached StaticTimeSeries instance.

If the time series data are scaling factors, the returned data will be scaled by the scaling factor multiplier by default.

Arguments

  • owner::TimeSeriesOwners: Component or attribute containing the time series
  • time_series::StaticTimeSeries: subtype of StaticTimeSeries (e.g., SingleTimeSeries)
  • start_time::Union{Nothing, Dates.DateTime} = nothing: the first timestamp to retrieve. If nothing, use the initial_timestamp of the time series.
  • len::Union{Nothing, Int} = nothing: Length of time-series to retrieve (i.e. number of timestamps). If nothing, use the entire length
  • ignore_scaling_factors = false: If true, the time-series data will be multiplied by the result of calling the stored scaling_factor_multiplier function on the owner

See also: get_time_series_values, get_time_series_timestamps, StaticTimeSeriesCache, get_time_series_array by name from storage, get_time_series_array from a ForecastCache

source
InfrastructureSystems.get_time_series_array!Method
get_time_series_array!(
     cache::InfrastructureSystems.TimeSeriesCache,
     timestamp::Dates.DateTime
 ) -> Any
-

Return the TimeSeries.TimeArray starting at timestamp. Reads from storage if the data is not already in cache.

Timestamps must be read sequentially. Repeated reads are allowed. Random access may be added in the future.

Arguments

  • cache::StaticTimeSeriesCache: cached instance
  • timestamp::Dates.DateTime: starting timestamp for the time series array
source
InfrastructureSystems.get_time_series_arrayMethod
get_time_series_array(
+

Return the TimeSeries.TimeArray starting at timestamp. Reads from storage if the data is not already in cache.

Timestamps must be read sequentially. Repeated reads are allowed. Random access may be added in the future.

Arguments

  • cache::StaticTimeSeriesCache: cached instance
  • timestamp::Dates.DateTime: starting timestamp for the time series array
source
InfrastructureSystems.get_time_series_arrayMethod
get_time_series_array(
     owner::Union{InfrastructureSystems.InfrastructureSystemsComponent, InfrastructureSystems.SupplementalAttribute},
     forecast::InfrastructureSystems.Forecast,
     start_time::Dates.DateTime;
     len,
     ignore_scaling_factors
 ) -> Any
-

Return a TimeSeries.TimeArray for one forecast window from a cached Forecast instance

If the time series data are scaling factors, the returned data will be scaled by the scaling factor multiplier by default.

Arguments

  • owner::TimeSeriesOwners: Component or attribute containing the time series
  • forecast::Forecast: a concrete subtype of Forecast
  • start_time::Union{Nothing, Dates.DateTime} = nothing: the first timestamp of one of the forecast windows
  • len::Union{Nothing, Int} = nothing: Length of time-series to retrieve (i.e. number of timestamps). If nothing, use the entire length.
  • ignore_scaling_factors = false: If true, the time-series data will be multiplied by the result of calling the stored scaling_factor_multiplier function on the owner

See also get_time_series_values, get_time_series_timestamps, ForecastCache, get_time_series_array by name from storage, get_time_series_array from a StaticTimeSeriesCache

source
InfrastructureSystems.get_time_series_arrayMethod
get_time_series_array(
+

Return a TimeSeries.TimeArray for one forecast window from a cached Forecast instance

If the time series data are scaling factors, the returned data will be scaled by the scaling factor multiplier by default.

Arguments

  • owner::TimeSeriesOwners: Component or attribute containing the time series
  • forecast::Forecast: a concrete subtype of Forecast
  • start_time::Union{Nothing, Dates.DateTime} = nothing: the first timestamp of one of the forecast windows
  • len::Union{Nothing, Int} = nothing: Length of time-series to retrieve (i.e. number of timestamps). If nothing, use the entire length.
  • ignore_scaling_factors = false: If true, the time-series data will be multiplied by the result of calling the stored scaling_factor_multiplier function on the owner

See also get_time_series_values, get_time_series_timestamps, ForecastCache, get_time_series_array by name from storage, get_time_series_array from a StaticTimeSeriesCache

source
InfrastructureSystems.get_time_series_arrayMethod
get_time_series_array(
     ::Type{T<:InfrastructureSystems.TimeSeriesData},
     owner::Union{InfrastructureSystems.InfrastructureSystemsComponent, InfrastructureSystems.SupplementalAttribute},
     name::AbstractString;
@@ -911,51 +911,51 @@
     ignore_scaling_factors,
     features...
 ) -> Any
-

Return a TimeSeries.TimeArray from storage for the given time series parameters.

If the time series data are scaling factors, the returned data will be scaled by the scaling factor multiplier by default.

This will load all forecast windows into memory by default. Be aware of how much data is stored.

Specify start_time and len if you only need a subset of data.

Arguments

  • ::Type{T}: the type of time series (a concrete subtype of TimeSeriesData)
  • owner::TimeSeriesOwners: Component or attribute containing the time series
  • name::AbstractString: name of time series
  • start_time::Union{Nothing, Dates.DateTime} = nothing: If nothing, use the initial_timestamp of the time series. If T is a subtype of Forecast then start_time must be the first timestamp of a window.
  • len::Union{Nothing, Int} = nothing: Length of time-series to retrieve (i.e. number of timestamps). If nothing, use the entire length.
  • ignore_scaling_factors = false: If true, the time-series data will be multiplied by the result of calling the stored scaling_factor_multiplier function on the owner
  • features...: User-defined tags that differentiate multiple time series arrays for the same component attribute, such as different arrays for different scenarios or years

See also: get_time_series_values, get_time_series_timestamps, get_time_series_array from a StaticTimeSeriesCache, get_time_series_array from a ForecastCache

source
InfrastructureSystems.get_time_series_countsMethod
get_time_series_counts(
+

Return a TimeSeries.TimeArray from storage for the given time series parameters.

If the time series data are scaling factors, the returned data will be scaled by the scaling factor multiplier by default.

This will load all forecast windows into memory by default. Be aware of how much data is stored.

Specify start_time and len if you only need a subset of data.

Arguments

  • ::Type{T}: the type of time series (a concrete subtype of TimeSeriesData)
  • owner::TimeSeriesOwners: Component or attribute containing the time series
  • name::AbstractString: name of time series
  • start_time::Union{Nothing, Dates.DateTime} = nothing: If nothing, use the initial_timestamp of the time series. If T is a subtype of Forecast then start_time must be the first timestamp of a window.
  • len::Union{Nothing, Int} = nothing: Length of time-series to retrieve (i.e. number of timestamps). If nothing, use the entire length.
  • ignore_scaling_factors = false: If true, the time-series data will be multiplied by the result of calling the stored scaling_factor_multiplier function on the owner
  • features...: User-defined tags that differentiate multiple time series arrays for the same component attribute, such as different arrays for different scenarios or years

See also: get_time_series_values, get_time_series_timestamps, get_time_series_array from a StaticTimeSeriesCache, get_time_series_array from a ForecastCache

source
InfrastructureSystems.get_time_series_keysMethod
get_time_series_keys(
     store::InfrastructureSystems.TimeSeriesMetadataStore,
     owner::Union{InfrastructureSystems.InfrastructureSystemsComponent, InfrastructureSystems.SupplementalAttribute}
 ) -> Vector
-

Return information about each time series array attached to the owner. This information can be used to call gettimeseries.

source
InfrastructureSystems.get_time_series_managerMethod
get_time_series_manager(
     owner::Union{InfrastructureSystems.InfrastructureSystemsComponent, InfrastructureSystems.SupplementalAttribute}
 ) -> Any
-

Return the TimeSeriesManager or nothing if the component/attribute does not support time series.

source
InfrastructureSystems.get_time_series_multipleFunction
get_time_series_multiple(
+    owner::Union{InfrastructureSystems.InfrastructureSystemsComponent, InfrastructureSystems.SupplementalAttribute};
     ...
-) -> Channel{Any}
+) -> Union{Tuple{}, Channel{Any}}
 get_time_series_multiple(
-    data::InfrastructureSystems.SystemData,
+    owner::Union{InfrastructureSystems.InfrastructureSystemsComponent, InfrastructureSystems.SupplementalAttribute},
     filter_func;
     type,
     name
-) -> Channel{Any}
-

Returns an iterator of TimeSeriesData instances attached to the system.

Note that passing a filter function can be much slower than the other filtering parameters because it reads time series data from media.

Call collect on the result to get an array.

Arguments

  • data::SystemData: system
  • filter_func = nothing: Only return time_series for which this returns true.
  • type = nothing: Only return time_series with this type.
  • name = nothing: Only return time_series matching this value.

See also: get_time_series_multiple from an individual component or attribute

source
InfrastructureSystems.get_time_series_multipleFunction
get_time_series_multiple(
-    owner::Union{InfrastructureSystems.InfrastructureSystemsComponent, InfrastructureSystems.SupplementalAttribute};
-    ...
 ) -> Union{Tuple{}, Channel{Any}}
+

Returns an iterator of TimeSeriesData instances attached to the component or attribute.

Note that passing a filter function can be much slower than the other filtering parameters because it reads time series data from media.

Call collect on the result to get an array.

Arguments

  • owner::TimeSeriesOwners: component or attribute from which to get time_series
  • filter_func = nothing: Only return time_series for which this returns true.
  • type = nothing: Only return time_series with this type.
  • name = nothing: Only return time_series matching this value.

See also: get_time_series_multiple from a System

source
InfrastructureSystems.get_time_series_multipleFunction
get_time_series_multiple(
+    data::InfrastructureSystems.SystemData;
+    ...
+) -> Channel{Any}
 get_time_series_multiple(
-    owner::Union{InfrastructureSystems.InfrastructureSystemsComponent, InfrastructureSystems.SupplementalAttribute},
+    data::InfrastructureSystems.SystemData,
     filter_func;
     type,
     name
-) -> Union{Tuple{}, Channel{Any}}
-

Returns an iterator of TimeSeriesData instances attached to the component or attribute.

Note that passing a filter function can be much slower than the other filtering parameters because it reads time series data from media.

Call collect on the result to get an array.

Arguments

  • owner::TimeSeriesOwners: component or attribute from which to get time_series
  • filter_func = nothing: Only return time_series for which this returns true.
  • type = nothing: Only return time_series with this type.
  • name = nothing: Only return time_series matching this value.

See also: get_time_series_multiple from a System

source
InfrastructureSystems.get_time_series_resolutionsMethod
get_time_series_resolutions(
+) -> Channel{Any}
+

Returns an iterator of TimeSeriesData instances attached to the system.

Note that passing a filter function can be much slower than the other filtering parameters because it reads time series data from media.

Call collect on the result to get an array.

Arguments

  • data::SystemData: system
  • filter_func = nothing: Only return time_series for which this returns true.
  • type = nothing: Only return time_series with this type.
  • name = nothing: Only return time_series matching this value.

See also: get_time_series_multiple from an individual component or attribute

source
InfrastructureSystems.get_time_series_resolutionsMethod
get_time_series_resolutions(
     store::InfrastructureSystems.TimeSeriesMetadataStore;
     time_series_type
 ) -> Any
-

Return a sorted Vector of distinct resolutions for all time series of the given type (or all types).

source
InfrastructureSystems.get_time_series_timestampsFunction
get_time_series_timestamps(
     owner::Union{InfrastructureSystems.InfrastructureSystemsComponent, InfrastructureSystems.SupplementalAttribute},
     forecast::InfrastructureSystems.Forecast;
     ...
@@ -966,7 +966,7 @@
     start_time::Union{Nothing, Dates.DateTime};
     len
 ) -> Vector{D} where D<:Dates.TimeType
-

Return a vector of timestamps from a cached Forecast instance.

Arguments

  • owner::TimeSeriesOwners: Component or attribute containing the time series
  • forecast::Forecast: a concrete subtype of Forecast
  • start_time::Union{Nothing, Dates.DateTime} = nothing: the first timestamp of one of the forecast windows
  • len::Union{Nothing, Int} = nothing: Length of time-series to retrieve (i.e. number of timestamps). If nothing, use the entire length.

See also: get_time_series_array, get_time_series_values, ForecastCache, get_time_series_timestamps by name from storage, get_time_series_timestamps from a StaticTimeSeriesCache

source
InfrastructureSystems.get_time_series_timestampsFunction
get_time_series_timestamps(
+

Return a vector of timestamps from a cached Forecast instance.

Arguments

  • owner::TimeSeriesOwners: Component or attribute containing the time series
  • forecast::Forecast: a concrete subtype of Forecast
  • start_time::Union{Nothing, Dates.DateTime} = nothing: the first timestamp of one of the forecast windows
  • len::Union{Nothing, Int} = nothing: Length of time-series to retrieve (i.e. number of timestamps). If nothing, use the entire length.

See also: get_time_series_array, get_time_series_values, ForecastCache, get_time_series_timestamps by name from storage, get_time_series_timestamps from a StaticTimeSeriesCache

source
InfrastructureSystems.get_time_series_timestampsFunction
get_time_series_timestamps(
     owner::Union{InfrastructureSystems.InfrastructureSystemsComponent, InfrastructureSystems.SupplementalAttribute},
     time_series::InfrastructureSystems.StaticTimeSeries;
     ...
@@ -977,7 +977,7 @@
     start_time::Union{Nothing, Dates.DateTime};
     len
 ) -> Vector{D} where D<:Dates.TimeType
-

Return a vector of timestamps from a cached StaticTimeSeries instance.

Arguments

  • owner::TimeSeriesOwners: Component or attribute containing the time series
  • time_series::StaticTimeSeries: subtype of StaticTimeSeries (e.g., SingleTimeSeries)
  • start_time::Union{Nothing, Dates.DateTime} = nothing: the first timestamp to retrieve. If nothing, use the initial_timestamp of the time series.
  • len::Union{Nothing, Int} = nothing: Length of time-series to retrieve (i.e. number of timestamps). If nothing, use the entire length

See also: get_time_series_array, get_time_series_values, StaticTimeSeriesCache, get_time_series_timestamps by name from storage, get_time_series_timestamps from a ForecastCache

source
InfrastructureSystems.get_time_series_timestampsMethod
get_time_series_timestamps(
+

Return a vector of timestamps from a cached StaticTimeSeries instance.

Arguments

  • owner::TimeSeriesOwners: Component or attribute containing the time series
  • time_series::StaticTimeSeries: subtype of StaticTimeSeries (e.g., SingleTimeSeries)
  • start_time::Union{Nothing, Dates.DateTime} = nothing: the first timestamp to retrieve. If nothing, use the initial_timestamp of the time series.
  • len::Union{Nothing, Int} = nothing: Length of time-series to retrieve (i.e. number of timestamps). If nothing, use the entire length

See also: get_time_series_array, get_time_series_values, StaticTimeSeriesCache, get_time_series_timestamps by name from storage, get_time_series_timestamps from a ForecastCache

source
InfrastructureSystems.get_time_series_timestampsMethod
get_time_series_timestamps(
     ::Type{T<:InfrastructureSystems.TimeSeriesData},
     owner::Union{InfrastructureSystems.InfrastructureSystemsComponent, InfrastructureSystems.SupplementalAttribute},
     name::AbstractString;
@@ -985,22 +985,22 @@
     len,
     features...
 ) -> Vector{D} where D<:Dates.TimeType
-

Return a vector of timestamps from storage for the given time series parameters.

Arguments

  • ::Type{T}: the type of time series (a concrete subtype of TimeSeriesData)
  • owner::TimeSeriesOwners: Component or attribute containing the time series
  • name::AbstractString: name of time series
  • start_time::Union{Nothing, Dates.DateTime} = nothing: If nothing, use the initial_timestamp of the time series. If T is a subtype of Forecast then start_time must be the first timestamp of a window.
  • len::Union{Nothing, Int} = nothing: Length of time-series to retrieve (i.e. number of timestamps). If nothing, use the entire length.
  • features...: User-defined tags that differentiate multiple time series arrays for the same component attribute, such as different arrays for different scenarios or years

See also: get_time_series_array, get_time_series_values, get_time_series_timestamps from a StaticTimeSeriesCache, get_time_series_timestamps from a ForecastCache

source
InfrastructureSystems.get_time_series_typeMethod
get_time_series_type(
+

Return a vector of timestamps from storage for the given time series parameters.

Arguments

  • ::Type{T}: the type of time series (a concrete subtype of TimeSeriesData)
  • owner::TimeSeriesOwners: Component or attribute containing the time series
  • name::AbstractString: name of time series
  • start_time::Union{Nothing, Dates.DateTime} = nothing: If nothing, use the initial_timestamp of the time series. If T is a subtype of Forecast then start_time must be the first timestamp of a window.
  • len::Union{Nothing, Int} = nothing: Length of time-series to retrieve (i.e. number of timestamps). If nothing, use the entire length.
  • features...: User-defined tags that differentiate multiple time series arrays for the same component attribute, such as different arrays for different scenarios or years

See also: get_time_series_array, get_time_series_values, get_time_series_timestamps from a StaticTimeSeriesCache, get_time_series_timestamps from a ForecastCache

source
InfrastructureSystems.get_time_series_valuesFunction
get_time_series_values(
     owner::Union{InfrastructureSystems.InfrastructureSystemsComponent, InfrastructureSystems.SupplementalAttribute},
     time_series::InfrastructureSystems.StaticTimeSeries;
     ...
@@ -1012,14 +1012,14 @@
     len,
     ignore_scaling_factors
 ) -> Any
-

Return an vector of timeseries data without timestamps from a cached StaticTimeSeries instance

Arguments

  • owner::TimeSeriesOwners: Component or attribute containing the time series
  • time_series::StaticTimeSeries: subtype of StaticTimeSeries (e.g., SingleTimeSeries)
  • start_time::Union{Nothing, Dates.DateTime} = nothing: the first timestamp to retrieve. If nothing, use the initial_timestamp of the time series.
  • len::Union{Nothing, Int} = nothing: Length of time-series to retrieve (i.e. number of timestamps). If nothing, use the entire length
  • ignore_scaling_factors = false: If true, the time-series data will be multiplied by the result of calling the stored scaling_factor_multiplier function on the owner

See also: get_time_series_array, get_time_series_timestamps, StaticTimeSeriesCache, get_time_series_values by name from storage, get_time_series_values from a ForecastCache

source
InfrastructureSystems.get_time_series_valuesMethod
get_time_series_values(
+

Return an vector of timeseries data without timestamps from a cached StaticTimeSeries instance

Arguments

  • owner::TimeSeriesOwners: Component or attribute containing the time series
  • time_series::StaticTimeSeries: subtype of StaticTimeSeries (e.g., SingleTimeSeries)
  • start_time::Union{Nothing, Dates.DateTime} = nothing: the first timestamp to retrieve. If nothing, use the initial_timestamp of the time series.
  • len::Union{Nothing, Int} = nothing: Length of time-series to retrieve (i.e. number of timestamps). If nothing, use the entire length
  • ignore_scaling_factors = false: If true, the time-series data will be multiplied by the result of calling the stored scaling_factor_multiplier function on the owner

See also: get_time_series_array, get_time_series_timestamps, StaticTimeSeriesCache, get_time_series_values by name from storage, get_time_series_values from a ForecastCache

source
InfrastructureSystems.get_time_series_valuesMethod
get_time_series_values(
     owner::Union{InfrastructureSystems.InfrastructureSystemsComponent, InfrastructureSystems.SupplementalAttribute},
     forecast::InfrastructureSystems.Forecast,
     start_time::Dates.DateTime;
     len,
     ignore_scaling_factors
 ) -> Any
-

Return an vector of timeseries data without timestamps for one forecast window from a cached Forecast instance.

Arguments

  • owner::TimeSeriesOwners: Component or attribute containing the time series
  • forecast::Forecast: a concrete subtype of Forecast
  • start_time::Union{Nothing, Dates.DateTime} = nothing: the first timestamp of one of the forecast windows
  • len::Union{Nothing, Int} = nothing: Length of time-series to retrieve (i.e. number of timestamps). If nothing, use the entire length.
  • ignore_scaling_factors = false: If true, the time-series data will be multiplied by the result of calling the stored scaling_factor_multiplier function on the owner

See also: get_time_series_array, get_time_series_timestamps, ForecastCache, get_time_series_values by name from storage, get_time_series_values from a StaticTimeSeriesCache

source
InfrastructureSystems.get_time_series_valuesMethod
get_time_series_values(
+

Return an vector of timeseries data without timestamps for one forecast window from a cached Forecast instance.

Arguments

  • owner::TimeSeriesOwners: Component or attribute containing the time series
  • forecast::Forecast: a concrete subtype of Forecast
  • start_time::Union{Nothing, Dates.DateTime} = nothing: the first timestamp of one of the forecast windows
  • len::Union{Nothing, Int} = nothing: Length of time-series to retrieve (i.e. number of timestamps). If nothing, use the entire length.
  • ignore_scaling_factors = false: If true, the time-series data will be multiplied by the result of calling the stored scaling_factor_multiplier function on the owner

See also: get_time_series_array, get_time_series_timestamps, ForecastCache, get_time_series_values by name from storage, get_time_series_values from a StaticTimeSeriesCache

source
InfrastructureSystems.get_time_series_valuesMethod
get_time_series_values(
     ::Type{T<:InfrastructureSystems.TimeSeriesData},
     owner::Union{InfrastructureSystems.InfrastructureSystemsComponent, InfrastructureSystems.SupplementalAttribute},
     name::AbstractString;
@@ -1028,205 +1028,205 @@
     ignore_scaling_factors,
     features...
 ) -> Any
-

Return an vector of timeseries data without timestamps from storage

If the data size is small and this will be called many times, consider using the version that accepts a cached TimeSeriesData instance.

Arguments

  • ::Type{T}: type of the time series (a concrete subtype of TimeSeriesData)
  • owner::TimeSeriesOwners: Component or attribute containing the time series
  • name::AbstractString: name of time series
  • start_time::Union{Nothing, Dates.DateTime} = nothing: If nothing, use the initial_timestamp of the time series. If T is a subtype of Forecast then start_time must be the first timestamp of a window.
  • len::Union{Nothing, Int} = nothing: Length of time-series to retrieve (i.e. number of timestamps). If nothing, use the entire length.
  • ignore_scaling_factors = false: If true, the time-series data will be multiplied by the result of calling the stored scaling_factor_multiplier function on the owner
  • features...: User-defined tags that differentiate multiple time series arrays for the same component attribute, such as different arrays for different scenarios or years

See also: get_time_series_array, get_time_series_timestamps, get_time_series, get_time_series_values from a StaticTimeSeriesCache, get_time_series_values from a ForecastCache

source
InfrastructureSystems.get_timestampMethod
get_timestamp(
+

Return an vector of timeseries data without timestamps from storage

If the data size is small and this will be called many times, consider using the version that accepts a cached TimeSeriesData instance.

Arguments

  • ::Type{T}: type of the time series (a concrete subtype of TimeSeriesData)
  • owner::TimeSeriesOwners: Component or attribute containing the time series
  • name::AbstractString: name of time series
  • start_time::Union{Nothing, Dates.DateTime} = nothing: If nothing, use the initial_timestamp of the time series. If T is a subtype of Forecast then start_time must be the first timestamp of a window.
  • len::Union{Nothing, Int} = nothing: Length of time-series to retrieve (i.e. number of timestamps). If nothing, use the entire length.
  • ignore_scaling_factors = false: If true, the time-series data will be multiplied by the result of calling the stored scaling_factor_multiplier function on the owner
  • features...: User-defined tags that differentiate multiple time series arrays for the same component attribute, such as different arrays for different scenarios or years

See also: get_time_series_array, get_time_series_timestamps, get_time_series, get_time_series_values from a StaticTimeSeriesCache, get_time_series_values from a ForecastCache

source
InfrastructureSystems.get_timestampMethod
get_timestamp(
     _::Type{InfrastructureSystems.TimeSeriesFormatYMDPeriodAsColumn},
     file::CSV.File,
     row_index::Int64
 ) -> Any
-

Return a Dates.DateTime for the row in the CSV file.

source
InfrastructureSystems.get_unique_timestampsMethod
get_unique_timestamps(
     _::Type{T<:InfrastructureSystems.TimeSeriesFileFormat},
     file::CSV.File
 ) -> Vector{Dict{String, Any}}
-

Return a vector of dicts of unique timestamps and their counts.

source
InfrastructureSystems.get_value_columnsMethod
get_value_columns(
     _::Type{InfrastructureSystems.TimeSeriesFormatYMDPeriodAsColumn},
     file::CSV.File
 ) -> Vector{Symbol}
-

Return the column names with values (components).

source
InfrastructureSystems.get_value_curveMethod
get_value_curve(
     cost::InfrastructureSystems.ProductionVariableCostCurve
 ) -> Any
-

Get the underlying ValueCurve representation of this ProductionVariableCostCurve

source
InfrastructureSystems.get_vom_costMethod
get_vom_cost(
     cost::InfrastructureSystems.ProductionVariableCostCurve
 ) -> Any
-

Get the variable operation and maintenance cost in currency/(power_units h)

source
InfrastructureSystems.get_windowMethod
get_window(
     forecast::InfrastructureSystems.Forecast,
     index::Int64;
     len
 ) -> Any
-

Return the forecast window corresponsing to interval index.

source
InfrastructureSystems.get_x_coordsMethod
get_x_coords(
     data::InfrastructureSystems.PiecewiseLinearData
 ) -> Vector{Float64}
-

Get the x-coordinates of the points that define the piecewise data

source
InfrastructureSystems.get_x_lengthsMethod
get_x_lengths(
     pwl::Union{InfrastructureSystems.PiecewiseLinearData, InfrastructureSystems.PiecewiseStepData}
 ) -> Vector{Float64}
-

Calculates the x-length of each segment of a piecewise curve.

source
InfrastructureSystems.get_y_coordsMethod
get_y_coords(
     data::InfrastructureSystems.PiecewiseLinearData
 ) -> Vector{Float64}
-

Get the y-coordinates of the points that define the PiecewiseLinearData

source
InfrastructureSystems.has_associationMethod
has_association(
     associations::InfrastructureSystems.SupplementalAttributeAssociations,
     attribute::InfrastructureSystems.SupplementalAttribute
 ) -> Bool
-

Return true if there is at least one association matching the inputs.

source
InfrastructureSystems.has_componentMethod
has_component(
     components::InfrastructureSystems.Components,
     T::Type{<:InfrastructureSystems.InfrastructureSystemsComponent},
     name::AbstractString
 ) -> Bool
-

Check to see if a component with name exists.

source
InfrastructureSystems.has_componentMethod
has_component(
     data::InfrastructureSystems.SystemData,
     subsystem_name::AbstractString,
     component::InfrastructureSystems.InfrastructureSystemsComponent
 ) -> Bool
-

Return true if the component is in the subsystem.

source
InfrastructureSystems.has_componentMethod
has_component(
     data::InfrastructureSystems.SystemData,
     T::Type{<:InfrastructureSystems.InfrastructureSystemsComponent},
     name::AbstractString
 ) -> Bool
-

Check to see if a component exists.

source
InfrastructureSystems.has_componentsMethod
has_components(
     components::InfrastructureSystems.Components,
     T::Type{<:InfrastructureSystems.InfrastructureSystemsComponent}
 ) -> Bool
-

Check to see if a component if the given type exists.

source
InfrastructureSystems.has_metadataMethod
has_metadata(
     store::InfrastructureSystems.TimeSeriesMetadataStore,
     owner::Union{InfrastructureSystems.InfrastructureSystemsComponent, InfrastructureSystems.SupplementalAttribute},
     metadata::InfrastructureSystems.TimeSeriesMetadata
 ) -> Bool
-

Return True if there is time series metadata matching the inputs.

source
InfrastructureSystems.has_supplemental_attributesMethod
has_supplemental_attributes(
     component::InfrastructureSystems.InfrastructureSystemsComponent,
     _::Type{T<:InfrastructureSystems.SupplementalAttribute}
 ) -> Bool
-

Return true if the component has supplemental attributes of the given type.

source
InfrastructureSystems.has_time_seriesMethod
has_time_series(
     store::InfrastructureSystems.TimeSeriesMetadataStore,
     time_series_uuid::Base.UUID
 ) -> Any
-

Return True if there is time series matching the UUID.

source
InfrastructureSystems.has_time_seriesMethod
has_time_series(
     owner::Union{InfrastructureSystems.InfrastructureSystemsComponent, InfrastructureSystems.SupplementalAttribute}
 ) -> Any
-

Return true if the component or supplemental attribute has time series data.

source
InfrastructureSystems.has_time_seriesMethod
has_time_series(
     val::Union{InfrastructureSystems.InfrastructureSystemsComponent, InfrastructureSystems.SupplementalAttribute},
     _::Type{T<:InfrastructureSystems.TimeSeriesData}
 ) -> Any
-

Return true if the component or supplemental attribute has time series data of type T.

source
InfrastructureSystems.headMethod
head(
     time_series::InfrastructureSystems.SingleTimeSeries
 ) -> Any
-

Return a time_series with only the first num values.

source
InfrastructureSystems.increment_count!Method
increment_count!(
     tracker::InfrastructureSystems.LogEventTracker,
     event::InfrastructureSystems.LogEvent,
     suppressed::Bool
 ) -> Union{Nothing, Int64, InfrastructureSystems.LogEvent}
-

Increments the count of a log event.

source
InfrastructureSystems.is_assigned_to_subsystemMethod
is_assigned_to_subsystem(
     data::InfrastructureSystems.SystemData,
     component::InfrastructureSystems.InfrastructureSystemsComponent,
     subsystem_name::AbstractString
 ) -> Bool
-

Return true if the component is assigned to the subsystem.

source
InfrastructureSystems.is_assigned_to_subsystemMethod
is_assigned_to_subsystem(
     data::InfrastructureSystems.SystemData,
     component::InfrastructureSystems.InfrastructureSystemsComponent
 ) -> Bool
-

Return true if the component is assigned to any subsystems.

source
InfrastructureSystems.is_convexMethod
is_convex(
     pwl::InfrastructureSystems.PiecewiseLinearData
 ) -> Bool
-

Returns True/False depending on the convexity of the underlying data

source
InfrastructureSystems.is_cost_aliasMethod
is_cost_alias(
     _::Union{Type{<:InfrastructureSystems.ValueCurve}, InfrastructureSystems.ValueCurve}
 ) -> Bool
-

Whether there is a cost alias for the instance or type under consideration

source
InfrastructureSystems.iterate_componentsMethod
iterate_components(
     components::InfrastructureSystems.Components
 ) -> Base.Iterators.Flatten{Base.Generator{Base.ValueIterator{Dict{DataType, Dict{String, <:InfrastructureSystems.InfrastructureSystemsComponent}}}, InfrastructureSystems.var"#110#111"}}
 

Iterates over all components.

Examples

for component in iterate_components(obj)
     @show component
-end

See also: get_components

source
InfrastructureSystems.iterate_containerMethod
iterate_container(
     container::InfrastructureSystems.InfrastructureSystemsContainer
 ) -> Base.Iterators.Flatten{I} where I<:(Base.Generator{_A, InfrastructureSystems.var"#110#111"} where _A)
-

Iterates over all data in the container.

source
InfrastructureSystems.iterate_supplemental_attributesMethod
iterate_supplemental_attributes(
     mgr::InfrastructureSystems.SupplementalAttributeManager
 ) -> Base.Iterators.Flatten{Base.Generator{Base.ValueIterator{Dict{DataType, Dict{Base.UUID, <:InfrastructureSystems.SupplementalAttribute}}}, InfrastructureSystems.var"#110#111"}}
 

Iterates over all supplemental_attributes.

Examples

for supplemental_attribute in iterate_supplemental_attributes(obj)
     @show supplemental_attribute
-end
source
InfrastructureSystems.iterate_windowsMethod
iterate_windows(
     forecast::InfrastructureSystems.DeterministicSingleTimeSeries
 ) -> Union{Tuple{Any}, Base.Generator{I, InfrastructureSystems.var"#134#135"{InfrastructureSystems.DeterministicSingleTimeSeries}} where I<:(StepRangeLen{T, R, S, Int64} where {T, R>:Dates.DateTime, S})}
 

Iterate over the windows in a forecast

Examples

for window in iterate_windows(forecast)
     @show values(maximum(window))
-end
source
InfrastructureSystems.iterate_windowsMethod
iterate_windows(
     forecast::InfrastructureSystems.Deterministic
 ) -> Base.Generator{I, InfrastructureSystems.var"#105#106"{InfrastructureSystems.Deterministic}} where I<:(DataStructures.SDMKeyIteration{T} where T<:DataStructures.SortedDict)
 

Iterate over the windows in a forecast

Examples

for window in iterate_windows(forecast)
     @show values(maximum(window))
-end
source
InfrastructureSystems.iterate_windowsMethod
iterate_windows(
     forecast::InfrastructureSystems.Probabilistic
 ) -> Base.Generator{I, InfrastructureSystems.var"#105#106"{InfrastructureSystems.Probabilistic}} where I<:(DataStructures.SDMKeyIteration{T} where T<:DataStructures.SortedDict)
 

Iterate over the windows in a forecast

Examples

for window in iterate_windows(forecast)
     @show values(maximum(window))
-end
source
InfrastructureSystems.iterate_windowsMethod
iterate_windows(
     forecast::InfrastructureSystems.Scenarios
 ) -> Base.Generator{I, InfrastructureSystems.var"#105#106"{InfrastructureSystems.Scenarios}} where I<:(DataStructures.SDMKeyIteration{T} where T<:DataStructures.SortedDict)
 

Iterate over the windows in a forecast

Examples

for window in iterate_windows(forecast)
     @show values(maximum(window))
-end
source
InfrastructureSystems.list_associated_component_uuidsMethod
list_associated_component_uuids(
     associations::InfrastructureSystems.SupplementalAttributeAssociations,
     attribute::InfrastructureSystems.SupplementalAttribute
 ) -> Any
-

Return the component UUIDs associated with the attribute.

source
InfrastructureSystems.list_associated_supplemental_attribute_uuidsMethod
list_associated_supplemental_attribute_uuids(
     associations::InfrastructureSystems.SupplementalAttributeAssociations,
     component::InfrastructureSystems.InfrastructureSystemsComponent;
     attribute_type
 ) -> Any
-

Return the supplemental attribute UUIDs associated with the component and attribute type.

source
InfrastructureSystems.list_existing_metadataMethod
list_existing_metadata(
     store::InfrastructureSystems.TimeSeriesMetadataStore,
     owners::Vector{Union{InfrastructureSystems.InfrastructureSystemsComponent, InfrastructureSystems.SupplementalAttribute}},
     metadata::Vector{InfrastructureSystems.TimeSeriesMetadata}
 ) -> Vector
-

Return the metadata specified in the passed metadata vector that are already stored.

source
InfrastructureSystems.list_metadata_with_owner_uuidMethod
list_metadata_with_owner_uuid(
     store::InfrastructureSystems.TimeSeriesMetadataStore,
     owner_type::Type{<:Union{InfrastructureSystems.InfrastructureSystemsComponent, InfrastructureSystems.SupplementalAttribute}};
     time_series_type,
     name,
     features...
 ) -> Vector
-

Return a Vector of NamedTuple of owner UUID and time series metadata matching the inputs.

source
InfrastructureSystems.list_recorder_eventsMethod
list_recorder_events(
     ::Type{T<:InfrastructureSystems.AbstractRecorderEvent},
     filename::AbstractString
 ) -> Vector{T} where T<:InfrastructureSystems.AbstractRecorderEvent
@@ -1235,25 +1235,25 @@
     filename::AbstractString,
     filter_func::Union{Nothing, Function}
 ) -> Vector{T} where T<:InfrastructureSystems.AbstractRecorderEvent
-

Return the events of type T in filename.

Arguments

  • T: event type
  • filename::AbstractString: filename containing recorder events
  • filter_func::Union{Nothing, Function} = nothing: Optional function that accepts an event of type T and returns a Bool. Apply this function to each event and only return events where the result is true.
source
InfrastructureSystems.load_records!Method
load_records!(
+

Return the events of type T in filename.

Arguments

  • T: event type
  • filename::AbstractString: filename containing recorder events
  • filter_func::Union{Nothing, Function} = nothing: Optional function that accepts an event of type T and returns a Bool. Apply this function to each event and only return events where the result is true.
source
InfrastructureSystems.make_time_series!Method
make_time_series!(
     cache::InfrastructureSystems.TimeSeriesParsingCache,
     ts_file_metadata::InfrastructureSystems.TimeSeriesFileMetadata
 ) -> Any
-

Return a time series from TimeSeriesFileMetadata.

Arguments

  • cache::TimeSeriesParsingCache: cached data
  • ts_file_metadata::TimeSeriesFileMetadata: metadata
  • resolution::{Nothing, Dates.Period}: skip any time_series that don't match this resolution
source
InfrastructureSystems.mask_component!Method
mask_component!(
+

Return a time series from TimeSeriesFileMetadata.

Arguments

  • cache::TimeSeriesParsingCache: cached data
  • ts_file_metadata::TimeSeriesFileMetadata: metadata
  • resolution::{Nothing, Dates.Period}: skip any time_series that don't match this resolution
source
InfrastructureSystems.mask_component!Method
mask_component!(
     data::InfrastructureSystems.SystemData,
     component::InfrastructureSystems.InfrastructureSystemsComponent;
     remove_time_series
 )
-

Removes the component from the main container and adds it to the masked container.

source
InfrastructureSystems.open_file_loggerFunction
open_file_logger(func::Function, filename::String) -> Any
 open_file_logger(
     func::Function,
     filename::String,
@@ -1268,15 +1268,15 @@
 

Opens a file logger using Logging.SimpleLogger.

Arguments

  • func::Function
  • filename::String: logger filename
  • level=Logging.Info: optional, to change the minimum logging level
  • mode = "w+": Optional, to designate write mode

Example

open_file_logger("log.txt", Logging.Info) do logger
     global_logger(logger)
     @info "hello world"
-end
source
InfrastructureSystems.prepare_for_removal!Method
prepare_for_removal!(
     owner::Union{InfrastructureSystems.InfrastructureSystemsComponent, InfrastructureSystems.SupplementalAttribute}
 )
-

This function must be called when a component or attribute is removed from a system.

source
InfrastructureSystems.prepare_for_serialization_to_file!Method
prepare_for_serialization_to_file!(
     data::InfrastructureSystems.SystemData,
     filename::AbstractString;
     force
 )
-

Parent object should call this prior to serialization so that SystemData can store the appropriate path information for the time series data.

source
InfrastructureSystems.read_time_seriesMethod
read_time_series(
     ::Type{T<:InfrastructureSystems.TimeSeriesData},
     data_file::AbstractString;
     ...
@@ -1287,14 +1287,14 @@
     component_name;
     kwargs...
 ) -> Any
-

Return a TimeArray from a CSV file.

Pass component_name when the file does not have the component name in a column header.

source
InfrastructureSystems.read_time_seriesMethod
read_time_series(
     ::Type{T<:InfrastructureSystems.TimeSeriesFormatPeriodAsHeader},
     ::Type{<:InfrastructureSystems.StaticTimeSeries},
     file::CSV.File,
     component_name::AbstractString;
     kwargs...
 ) -> InfrastructureSystems.RawTimeSeries
-

This version of the function supports the format where there is no column header for a component, so the component_name must be passed in.

source
InfrastructureSystems.read_time_seriesMethod
read_time_series(
     ::Type{T<:InfrastructureSystems.TimeSeriesFormatComponentsAsColumnsNoTime},
     ::Type{<:InfrastructureSystems.StaticTimeSeries},
     file::CSV.File;
@@ -1307,7 +1307,7 @@
     component_name;
     kwargs...
 ) -> InfrastructureSystems.RawTimeSeries
-

This version of the function only has component_name to match the interface. It is unused.

Set start_datetime as a keyword argument for the starting timestamp, otherwise the current day is used.

source
InfrastructureSystems.read_time_seriesMethod
read_time_series(
+

This version of the function only has component_name to match the interface. It is unused.

Set start_datetime as a keyword argument for the starting timestamp, otherwise the current day is used.

source
InfrastructureSystems.read_time_seriesMethod
read_time_series(
     ::Type{T<:Union{InfrastructureSystems.TimeSeriesFormatDateTimeAsColumn, InfrastructureSystems.TimeSeriesFormatPeriodAsColumn}},
     ::Type{<:InfrastructureSystems.StaticTimeSeries},
     file::CSV.File;
@@ -1320,7 +1320,7 @@
     component_name;
     kwargs...
 ) -> InfrastructureSystems.RawTimeSeries
-

Return a TimeSeries.TimeArray representing the CSV file.

This version of the function only has component_name to match the interface. It is unused.

source
InfrastructureSystems.read_time_seriesMethod
read_time_series(
+

Return a TimeSeries.TimeArray representing the CSV file.

This version of the function only has component_name to match the interface. It is unused.

source
InfrastructureSystems.read_time_seriesMethod
read_time_series(
     ::Type{T<:InfrastructureSystems.TimeSeriesFormatDateTimeAsColumn},
     ::Type{InfrastructureSystems.Deterministic},
     file::CSV.File;
@@ -1333,376 +1333,376 @@
     component_name;
     kwargs...
 ) -> InfrastructureSystems.RawTimeSeries
-

Return a RawTimeSeries from a CSV file.

Pass component_name when the file does not have the component name in a column header.

source
InfrastructureSystems.register_recorder!Method
register_recorder!(name::Symbol; io, mode, directory)
-

Register a recorder to log events. Afterwards, calls to @record name <event-type>() will record the event as JSON in <name>.log.

Callers should guarantee that unregister_recorder! is called to close the file handle.

Arguments

  • name::Symbol: name of recorder
  • io::Union{Nothing, IO}: If nothing, record events in a file using name.
  • mode = "w": Only used when io is nothing.
  • directory = ".": Only used when io is nothing.
source
InfrastructureSystems.register_recorder!Method
register_recorder!(name::Symbol; io, mode, directory)
+

Register a recorder to log events. Afterwards, calls to @record name <event-type>() will record the event as JSON in <name>.log.

Callers should guarantee that unregister_recorder! is called to close the file handle.

Arguments

  • name::Symbol: name of recorder
  • io::Union{Nothing, IO}: If nothing, record events in a file using name.
  • mode = "w": Only used when io is nothing.
  • directory = ".": Only used when io is nothing.
source
InfrastructureSystems.remove_association!Method
remove_association!(
     associations::InfrastructureSystems.SupplementalAttributeAssociations,
     component::InfrastructureSystems.InfrastructureSystemsComponent,
     attribute::InfrastructureSystems.SupplementalAttribute
 )
-

Remove the association between the attribute and component.

source
InfrastructureSystems.remove_associations!Method
remove_associations!(
     associations::InfrastructureSystems.SupplementalAttributeAssociations,
     type::Type{<:InfrastructureSystems.SupplementalAttribute}
 )
-

Remove all associations of the given type.

source
InfrastructureSystems.remove_component!Method
remove_component!(
     components::InfrastructureSystems.Components,
     component::InfrastructureSystems.InfrastructureSystemsComponent;
     remove_time_series
 ) -> InfrastructureSystems.InfrastructureSystemsComponent
-

Remove a component by its value.

Throws ArgumentError if the component is not stored.

source
InfrastructureSystems.remove_component!Method
remove_component!(
     ::Type{T<:InfrastructureSystems.InfrastructureSystemsComponent},
     components::InfrastructureSystems.Components,
     name::AbstractString;
     remove_time_series
 ) -> InfrastructureSystems.InfrastructureSystemsComponent
-

Remove a component by its name.

Throws ArgumentError if the component is not stored.

source
InfrastructureSystems.remove_component_from_subsystem!Method
remove_component_from_subsystem!(
     data::InfrastructureSystems.SystemData,
     subsystem_name::AbstractString,
     component::InfrastructureSystems.InfrastructureSystemsComponent
 )
-

Remove a component from a subsystem.

Throws ArgumentError if the subsystem name or component is not stored.

source
InfrastructureSystems.remove_components!Method
remove_components!(
     _::Type{T<:InfrastructureSystems.InfrastructureSystemsComponent},
     components::InfrastructureSystems.Components
 ) -> Base.ValueIterator{T} where T<:(Dict{String, <:InfrastructureSystems.InfrastructureSystemsComponent})
-

Remove all components of type T.

Throws ArgumentError if the type is not stored.

source
InfrastructureSystems.remove_metadata!Method
remove_metadata!(
     store::InfrastructureSystems.TimeSeriesMetadataStore,
     owner::Union{InfrastructureSystems.InfrastructureSystemsComponent, InfrastructureSystems.SupplementalAttribute},
     metadata::InfrastructureSystems.TimeSeriesMetadata
 )
-

Remove the matching metadata from the store.

source
InfrastructureSystems.remove_subsystem!Method
remove_subsystem!(
     data::InfrastructureSystems.SystemData,
     subsystem_name::AbstractString
 )
-

Remove a subsystem from the system.

Throws ArgumentError if the subsystem name is not stored.

source
InfrastructureSystems.remove_supplemental_attributes!Method
remove_supplemental_attributes!(
     mgr::InfrastructureSystems.SupplementalAttributeManager,
     _::Type{T<:InfrastructureSystems.SupplementalAttribute}
 ) -> Base.ValueIterator{T} where T<:(Dict{Base.UUID, <:InfrastructureSystems.SupplementalAttribute})
-

Remove all supplemental_attributes of type T.

Ignores whether attributes are attached to components.

Throws ArgumentError if the type is not stored.

source
InfrastructureSystems.remove_time_series!Method
remove_time_series!(
     mgr::InfrastructureSystems.TimeSeriesManager,
     time_series_type::Type{<:InfrastructureSystems.TimeSeriesData},
     owner::Union{InfrastructureSystems.InfrastructureSystemsComponent, InfrastructureSystems.SupplementalAttribute},
     name::String;
     features...
 )
-

Remove the time series data for a component.

source
InfrastructureSystems.remove_time_series!Method
remove_time_series!(
     data::InfrastructureSystems.SystemData,
     ::Type{T<:InfrastructureSystems.TimeSeriesData},
     component::InfrastructureSystems.InfrastructureSystemsComponent,
     name::String;
     features...
 )
-

Remove the time series data for a component.

source
InfrastructureSystems.remove_time_series!Method
remove_time_series!(
     data::InfrastructureSystems.SystemData,
     _::Type{T<:InfrastructureSystems.TimeSeriesData}
 )
-

Removes all time series of a particular type from a System.

Arguments

  • data::SystemData: system
  • type::Type{<:TimeSeriesData}: Type of time series objects to remove.
source
InfrastructureSystems.serializeMethod
serialize(
     val::InfrastructureSystems.InfrastructureSystemsType
-) -> Vector{Dict{String, Any}}
-

Serialize the Julia value into standard types that can be converted to non-Julia formats, such as JSON. In cases where val is an instance of a struct, return a Dict. In cases where val is a scalar value, return that value.

source
InfrastructureSystems.set_component!Method
set_component!(
+) -> Dict{String, Any}
+

Serialize the Julia value into standard types that can be converted to non-Julia formats, such as JSON. In cases where val is an instance of a struct, return a Dict. In cases where val is a scalar value, return that value.

source
InfrastructureSystems.set_component!Method
set_component!(
     metadata::InfrastructureSystems.TimeSeriesFileMetadata,
     data::InfrastructureSystems.SystemData,
     mod::Module
 ) -> Union{Nothing, InfrastructureSystems.InfrastructureSystemsComponent}
-

Set the component value in metadata by looking up the category in module. This requires that category be a string version of a component's abstract type. Modules can override for custom behavior.

source
InfrastructureSystems.set_count!Method
set_count!(
+

Set the component value in metadata by looking up the category in module. This requires that category be a string version of a component's abstract type. Modules can override for custom behavior.

source
InfrastructureSystems.set_group_level!Method
set_group_level!(
     logger::InfrastructureSystems.MultiLogger,
     group::Symbol,
     level::Base.CoreLogging.LogLevel
 )
-

Set the minimum log level for a group.

The group field of a log message defaults to its file's base name (no extension) as a symbol. It can be customized by setting _group = :a_group_name.

The minimum log level stored for a console or file logger supercede this setting.

source
InfrastructureSystems.set_group_levels!Method
set_group_levels!(
+

Set the minimum log level for a group.

The group field of a log message defaults to its file's base name (no extension) as a symbol. It can be customized by setting _group = :a_group_name.

The minimum log level stored for a console or file logger supercede this setting.

source
InfrastructureSystems.show_recorder_eventsMethod
show_recorder_events(
     ::Type{T<:InfrastructureSystems.AbstractRecorderEvent},
     filename::AbstractString;
     ...
@@ -1714,85 +1714,85 @@
     kwargs...
 )
 

Show the events of type T in filename in a table. Refer to PrettyTables.jl documentation for accepted kwargs.

Arguments

  • T: event type
  • filename::AbstractString: filename containing recorder events
  • filter_func::Union{Nothing, Function} = nothing: Optional function that accepts an event of type T and returns a Bool. Apply this function to each event and only return events where the result is true.
  • exclude_columns = Set{String}(): Column names to exclude from the table
  • kwargs: Passed to PrettyTables

Examples

show_recorder_events(TestEvent, test_recorder.log)
-show_recorder_events(TestEvent, test_recorder.log, x -> x.val2 > 2)
source
InfrastructureSystems.show_time_seriesMethod
show_time_series(
     owner::Union{InfrastructureSystems.InfrastructureSystemsComponent, InfrastructureSystems.SupplementalAttribute}
 )
-

Show a table with time series data attached to the component.

source
InfrastructureSystems.sqlFunction
sql(
-    associations::InfrastructureSystems.SupplementalAttributeAssociations,
+

Show a table with time series data attached to the component.

source
InfrastructureSystems.sqlFunction
sql(
+    store::InfrastructureSystems.TimeSeriesMetadataStore,
     query::String
 ) -> DataFrames.DataFrame
 sql(
-    associations::InfrastructureSystems.SupplementalAttributeAssociations,
+    store::InfrastructureSystems.TimeSeriesMetadataStore,
     query::String,
     params
 ) -> DataFrames.DataFrame
-

Run a query and return the results in a DataFrame.

source
InfrastructureSystems.sqlFunction
sql(
-    store::InfrastructureSystems.TimeSeriesMetadataStore,
+

Run a query and return the results in a DataFrame.

source
InfrastructureSystems.sqlFunction
sql(
+    associations::InfrastructureSystems.SupplementalAttributeAssociations,
     query::String
 ) -> DataFrames.DataFrame
 sql(
-    store::InfrastructureSystems.TimeSeriesMetadataStore,
+    associations::InfrastructureSystems.SupplementalAttributeAssociations,
     query::String,
     params
 ) -> DataFrames.DataFrame
-

Run a query and return the results in a DataFrame.

source
InfrastructureSystems.strip_module_nameMethod
strip_module_name(name::String) -> String
 

Strips the module name off of a type. This can be useful to print types as strings and receive consistent results regardless of whether the user used import or using to load a package.

Unlike Base.nameof, this function preserves any parametric types.

Examples

julia> strip_module_name(PowerSystems.RegulationDevice{ThermalStandard})
 "RegulationDevice{ThermalStandard}"
 julia> string(nameof(PowerSystems.RegulationDevice{ThermalStandard}))
-"RegulationDevice"
source
InfrastructureSystems.tailMethod
tail(
     time_series::InfrastructureSystems.SingleTimeSeries
 ) -> Any
-

Return a time_series with only the ending num values.

source
InfrastructureSystems.toMethod
to(
     time_series::InfrastructureSystems.SingleTimeSeries,
     timestamp
 ) -> InfrastructureSystems.SingleTimeSeries
-

Return a time_series truncated after timestamp.

source
InfrastructureSystems.to_jsonMethod
to_json(
     obj::InfrastructureSystems.InfrastructureSystemsType;
     pretty,
     indent
 ) -> Any
-

Serializes a InfrastructureSystemsType to a JSON string.

source
InfrastructureSystems.to_jsonMethod
to_json(
     obj::InfrastructureSystems.InfrastructureSystemsType;
     pretty,
     indent
 ) -> Any
-

Serializes a InfrastructureSystemsType to a JSON file.

source
InfrastructureSystems.transform_single_time_series!Method
transform_single_time_series!(
     data::InfrastructureSystems.SystemData,
     _::Type{<:InfrastructureSystems.DeterministicSingleTimeSeries},
     horizon::Dates.Period,
     interval::Dates.Period
 )
-

Transform all instances of SingleTimeSeries to DeterministicSingleTimeSeries. If all SingleTimeSeries instances cannot be transformed then none will be.

Any existing DeterministicSingleTimeSeries forecasts will be deleted even if the inputs are invalid.

source
InfrastructureSystems.validate_structMethod
validate_struct(
+

Transform all instances of SingleTimeSeries to DeterministicSingleTimeSeries. If all SingleTimeSeries instances cannot be transformed then none will be.

Any existing DeterministicSingleTimeSeries forecasts will be deleted even if the inputs are invalid.

source
InfrastructureSystems.whenMethod
when(
     time_series::InfrastructureSystems.SingleTimeSeries,
     period::Function,
     t::Integer
 ) -> Any
-

Refer to TimeSeries.when(). Underlying data is copied.

source
InfrastructureSystems.@assert_opMacro

Throw an AssertionError if conditions like op(exp1, exp2) are false, where op is a conditional infix operator.

Examples

julia> a = 3; b = 4;
+

Refer to TimeSeries.when(). Underlying data is copied.

source
InfrastructureSystems.@assert_opMacro

Throw an AssertionError if conditions like op(exp1, exp2) are false, where op is a conditional infix operator.

Examples

julia> a = 3; b = 4;
 julia> @assert_op a == b
 ERROR: AssertionError: 3 == 4
 
 julia> @assert_op a + 3 > b + 4
-ERROR: AssertionError: 6 > 8
source
InfrastructureSystems.@recordMacro

Record an event if the recorder with name is enabled.

Arguments

  • name::Symbol: name of recorder
  • event::AbstractRecorderEvent: event to record

Examples

@record simulation TestEvent("start", 1, 2.0)
source
InfrastructureSystems.@recordMacro

Record an event if the recorder with name is enabled.

Arguments

  • name::Symbol: name of recorder
  • event::AbstractRecorderEvent: event to record

Examples

@record simulation TestEvent("start", 1, 2.0)
source
InfrastructureSystems.@scoped_enumMacro

Macro to wrap Enum in a module to keep the top level scope clean.

Examples

julia> @scoped_enum Fruit APPLE = 1 ORANGE = 2
 
 julia> value = Fruit.APPLE
 Fruit.APPLE = 1
@@ -1803,4 +1803,4 @@
 julia> @scoped_enum(Fruit,
     APPLE = 1,  # comment
     ORANGE = 2,  # comment
-)
source
+)
source
diff --git a/dev/dev_guide/auto_generation/index.html b/dev/dev_guide/auto_generation/index.html index e6aaa1dee..35c6a3af6 100644 --- a/dev/dev_guide/auto_generation/index.html +++ b/dev/dev_guide/auto_generation/index.html @@ -2,4 +2,4 @@ Auto-Generation of Component Structs · InfrastructureSystems.jl

Auto-Generation of Component Structs

InfrastructureSystems.jl provides a mechanism to auto-generate Julia files containing structs and field accessor functions from JSON descriptors. Here are reasons to consider using this approach:

  • Auto-generation allows for easy refactoring of code. Adding fields to many structs can be tedious because you might have to edit many constructors. This process eliminates boiler-plate edits.
  • The JSON descriptor format includes a mechanism to define range validation on component fields. Validation can be enabled when adding components to a system.
  • Provides consistent formatting of structs, fields, and constructors.
  • Provides consistent documentation of structs and fields.

Instructions

Refer to the docstrings for generate_struct and generate_structs and generate the files from the REPL.

Or

  1. Create or modify the JSON descriptor file. Follow the PowerSystems.jl example.
  2. Run the generation script, passing your descriptor file and an output directory.
InfrastructureSystems.generate_structs(
     "./src/descriptors/power_system_structs.json",
     "./src/models/generated",
-)

Struct Descriptor Rules

Each struct descriptor must define the following fields:

  • struct_name: Name of struct
  • docstring: The docstring of the struct
  • fields: Array of struct members. See below for requirements.
  • supertype: Declare the struct with this parent type.

Required fields for each struct member:

  • name: Name of field
  • data_type: Type of field

Optional fields for each struct member:

  • accessor_module: Set this if the getter/setter functions are reimplementing a method defined in a different module.

  • comment: Field comment

  • default: The constructors will define this as a default value.

  • exclude_setter: Do not generate a setter function for this field.

  • internal_default: Set to true for non-user-facing fields like InfrastructureSystemsInternal that have default values.

  • needs_conversion: Set to true if the getter and setter function needs to apply unit conversion. The type must implement

    • get_value(::InfrastructureSystemsComponent, ::Type) and
    • set_value(::InfrastructureSystemsComponent, ::Type) for this combination of component type and member type.
  • null_value: Value to indicate the value is null, such as 0.0 for floating point numbers. If all members in the struct define this field then a "demo" constructor will be generated. This allows you to enter val = MyType(nothing) in the REPL and see the layout of a struct without worrying about valid values.

  • valid_range: Define this as a Dict with min and max and InfrastructureSystems.jl will validate any value against that range when you add the component to the system. Use null if one doesn't apply, such as if there is no max limit.

  • validation_action: Define this as error or warn. If it is error then InfrastructureSystems.jl will raise an exception if the validation code detects a problem. Otherwise, it will log a warning.

Notes:

  • You will need to decide how to manage the generated files. The Sienna packages keep the generated code in the git repository. This is not required. You could choose to generate them at startup.
  • You may need to create custom constructors and this approach will not allow you to put them in the same file as the struct definition.
+)

Struct Descriptor Rules

Each struct descriptor must define the following fields:

Required fields for each struct member:

Optional fields for each struct member:

Notes:

diff --git a/dev/dev_guide/components_and_container/index.html b/dev/dev_guide/components_and_container/index.html index d6accc411..18e0fdb35 100644 --- a/dev/dev_guide/components_and_container/index.html +++ b/dev/dev_guide/components_and_container/index.html @@ -6,4 +6,4 @@ # Optional get_ext(c::MyComponent) = InfrastructureSystems.get_ext(c.ext) clear_ext!(c::MyComponent) = InfrastructureSystems.clear_ext(c.ext)
  1. Implement this function with true or false depending on whether your component type will support time series data. The default method returns false.
supports_time_series(::MyComponent) = true
  1. Implement this function with true or false depending on whether your component type will support supplemental attributes. The default method returns true.
supports_supplemental_attributes(::MyComponent) = true

Notes:

Interface requirements

Implement these methods for every struct.

If the struct supports time series (default is false):

Component Container

InfrastructureSystems.jl provides the SystemData struct to store a collection of components.

It is recommended but not required that you include this struct within your own system struct for these reasons:

Instructions on how to use the SystemData container

  1. Add an instance of SystemData to your system struct.
  2. Optionally pass a component validation descriptor file to the constructor.
  3. Optionally pass time_series_in_memory = true to the constructor if you know that all time series data will fit in memory and want a performance boost.
  4. Redirect these function calls to your instance of SystemData.

Importing InfrastructureSystems methods

It is recommended that you perform redirection on methods that act on SystemData so that those methods don't show up in Julia help or in methods output. For example:

get_time_series_resolution(sys::MySystem) =
-    InfrastructureSystems.get_time_series_resolution(sys.data)

On the other hand, it is recommended that you import methods that act on an InfrastructureSystemsComponent into your package's namespace so that you don't have to duplicate docstrings and perform redirection. For example:

import InfrastructureSystems: get_time_series
+ InfrastructureSystems.get_time_series_resolution(sys.data)

On the other hand, it is recommended that you import methods that act on an InfrastructureSystemsComponent into your package's namespace so that you don't have to duplicate docstrings and perform redirection. For example:

import InfrastructureSystems: get_time_series
diff --git a/dev/dev_guide/logging/index.html b/dev/dev_guide/logging/index.html index 64c625ab8..4941ac4db 100644 --- a/dev/dev_guide/logging/index.html +++ b/dev/dev_guide/logging/index.html @@ -70,4 +70,4 @@ @info "hello" maxlog = 2 @warn "beware" maxlog = 2 end -@info report_log_summary(logger) +@info report_log_summary(logger) diff --git a/dev/dev_guide/recorder/index.html b/dev/dev_guide/recorder/index.html index 4cf219850..4bf8a145d 100644 --- a/dev/dev_guide/recorder/index.html +++ b/dev/dev_guide/recorder/index.html @@ -1,2 +1,2 @@ -Recorder Events · InfrastructureSystems.jl

Recorder Events

InfrastructureSystems.jl provides a mechanism to store structured data in events that get recorded in one or more files. They can be filtered and displayed in tabular form.

The primary use is to store information that can help debug problems and it is largely used in PowerSimulations.jl. For example, you may want to store all state transitions in a simulation or every update of a variable. If a problem occurs you can then display filtered tables of that data to figure out what went wrong.

Instructions

  1. Create events that are subtypes of InfrastructureSystems.AbstractRecorderEvent. Include an instance of RecorderEventCommon in each struct.

  2. Call InfrastructureSystems.register_recorder! with arguments recorder-name for each recorder object you want to create.

    • Depending on how often your code create events you may want to make this conditional. You may only need it for debug runs.
    • PowerSimulations creates one recorder for simulation step and stage start/stop events that is always enabled. It creates another that is optional but used for frequently-generated events.
  3. Call @InfrastructureSystems.record with arguments recorder-name event wherever you want to generate events in your code. The event will only get constructed if the recorder is registered.

  4. Call InfrastructureSystems.unregister_recorder! with arguments recorder-name for each registered recorder. You should guarantee this gets called, even if an exception is thrown. Otherwise, the file may not get flushed and closed.

  5. After your code runs call InfrastructureSystems.show_recorder_events to view events. Refer to the docstrings for more information.

  6. Refer to PowerSimulations.show_simulation_events for an example on how to customize this behavior for your package.

+Recorder Events · InfrastructureSystems.jl

Recorder Events

InfrastructureSystems.jl provides a mechanism to store structured data in events that get recorded in one or more files. They can be filtered and displayed in tabular form.

The primary use is to store information that can help debug problems and it is largely used in PowerSimulations.jl. For example, you may want to store all state transitions in a simulation or every update of a variable. If a problem occurs you can then display filtered tables of that data to figure out what went wrong.

Instructions

  1. Create events that are subtypes of InfrastructureSystems.AbstractRecorderEvent. Include an instance of RecorderEventCommon in each struct.

  2. Call InfrastructureSystems.register_recorder! with arguments recorder-name for each recorder object you want to create.

    • Depending on how often your code create events you may want to make this conditional. You may only need it for debug runs.
    • PowerSimulations creates one recorder for simulation step and stage start/stop events that is always enabled. It creates another that is optional but used for frequently-generated events.
  3. Call @InfrastructureSystems.record with arguments recorder-name event wherever you want to generate events in your code. The event will only get constructed if the recorder is registered.

  4. Call InfrastructureSystems.unregister_recorder! with arguments recorder-name for each registered recorder. You should guarantee this gets called, even if an exception is thrown. Otherwise, the file may not get flushed and closed.

  5. After your code runs call InfrastructureSystems.show_recorder_events to view events. Refer to the docstrings for more information.

  6. Refer to PowerSimulations.show_simulation_events for an example on how to customize this behavior for your package.

diff --git a/dev/dev_guide/tests/index.html b/dev/dev_guide/tests/index.html index 330fb6981..274afd297 100644 --- a/dev/dev_guide/tests/index.html +++ b/dev/dev_guide/tests/index.html @@ -3,4 +3,4 @@ julia> ] (@v1.10) pkg> add TestEnv Revise

Start the environment with the InfrastructureSystems.jl environment.

$ julia --project

Load the test environment.

julia> using TestEnv
 julia> TestEnv.activate()

Load the tests through ReTest.jl and Revise.jl.

julia> include("test/load_tests.jl")

Run all tests.

julia> run_tests()

Run a subset of tests with a regular expression. This pattern matches multiple testset definitions. The run_tests function forwards all arguments and keyword arguments to ReTest.retest.

julia> run_tests(r"Test.*components")

Refer to the ReTest documentation for more information.

Change logging levels

julia> InfrastructureSystems.make_logging_config_file("logging_config.toml")
-julia> ENV["SIENNA_LOGGING_CONFIG"] = "logging_config.toml"

Edit the file to suit your preferences and rerun.

julia> run_tests()

Note that you can filter out noisy log groups in this file.

Noisy log messages

The unit test module appends a summary of all log message counts to the log file. If a message is logged too frequently then consider tagging that message with maxlog=X to suppress it.

+julia> ENV["SIENNA_LOGGING_CONFIG"] = "logging_config.toml"

Edit the file to suit your preferences and rerun.

julia> run_tests()

Note that you can filter out noisy log groups in this file.

Noisy log messages

The unit test module appends a summary of all log message counts to the log file. If a message is logged too frequently then consider tagging that message with maxlog=X to suppress it.

diff --git a/dev/dev_guide/time_series/index.html b/dev/dev_guide/time_series/index.html index 9daca9316..3ce3cc343 100644 --- a/dev/dev_guide/time_series/index.html +++ b/dev/dev_guide/time_series/index.html @@ -7,4 +7,4 @@ 0b6ecb61-8e8d-4563-b795-f001246c3ea5__max_active_power 613ddbc2-b666-4c9d-adb5-fa69e7f40a95__max_active_power /data

Debugging

The HDF Group provides tools to inspect and manipulate files. Refer to their website.

HDFView is especially useful for viewing data. Note that using h5ls and h5dump in a terminal combined with UNIX tools like grep can sometimes be faster.

Maintenance

If you delete time series arrays in your system you may notice that the actual size of the HDF5 does not decrease. The only way to recover this space is to build a new file with only the active objects. The HDF5 tools package provides the tool h5repack for this purpose.

$ h5repack time_series.h5 new.h5
-$ mv new.h5 time_series.h5
+$ mv new.h5 time_series.h5 diff --git a/dev/index.html b/dev/index.html index 05083fb82..86362208b 100644 --- a/dev/index.html +++ b/dev/index.html @@ -1,2 +1,2 @@ -Welcome Page · InfrastructureSystems.jl

InfrastructureSystems.jl

Overview

InfrastructureSystems.jl is a Julia package that provides data management services and common utility software for the packages in NREL's Sienna Initiative. This package is meant for module development. It is used primarily by PowerSystems.jl and PowerSimulations.jl but is written to be extensible for other kinds of infrastructure models.

This document describes how to integrate it with other packages.

Installation

The latest stable release of InfrastructureSystems.jl can be installed using the Julia package manager with

] add InfrastructureSystems

For the current development version, "checkout" this package with

] add InfrastructureSystems#master

Usage

InfrastructureSystems.jl does not export any method or struct by design. For detailed use of InfrastructureSystems.jl visit the API section of the documentation.

InfrastructureSystems.jl provides several utilities for the development of packages, the documentation includes several guides for developers

InfrastructureSystems has been developed as part of the Scalable Integrated Infrastructure Planning (SIIP) initiative at the U.S. Department of Energy's National Renewable Energy Laboratory (NREL)

+Welcome Page · InfrastructureSystems.jl

InfrastructureSystems.jl

Overview

InfrastructureSystems.jl is a Julia package that provides data management services and common utility software for the packages in NREL's Sienna Initiative. This package is meant for module development. It is used primarily by PowerSystems.jl and PowerSimulations.jl but is written to be extensible for other kinds of infrastructure models.

This document describes how to integrate it with other packages.

Installation

The latest stable release of InfrastructureSystems.jl can be installed using the Julia package manager with

] add InfrastructureSystems

For the current development version, "checkout" this package with

] add InfrastructureSystems#master

Usage

InfrastructureSystems.jl does not export any method or struct by design. For detailed use of InfrastructureSystems.jl visit the API section of the documentation.

InfrastructureSystems.jl provides several utilities for the development of packages, the documentation includes several guides for developers

InfrastructureSystems has been developed as part of the Scalable Integrated Infrastructure Planning (SIIP) initiative at the U.S. Department of Energy's National Renewable Energy Laboratory (NREL)

diff --git a/dev/search_index.js b/dev/search_index.js index cb059b682..0a0ae6534 100644 --- a/dev/search_index.js +++ b/dev/search_index.js @@ -1,3 +1,3 @@ var documenterSearchIndex = {"docs": -[{"location":"style/#style_guide","page":"Style Guide","title":"Julia Coding Style Guide for Sienna","text":"","category":"section"},{"location":"style/#Goals","page":"Style Guide","title":"Goals","text":"","category":"section"},{"location":"style/","page":"Style Guide","title":"Style Guide","text":"Define a straightforward set of rules that lead to consistent, readable code.\nDevelopers focus on producing high quality code, not how to format it.","category":"page"},{"location":"style/#Base","page":"Style Guide","title":"Base","text":"","category":"section"},{"location":"style/","page":"Style Guide","title":"Style Guide","text":"Follow the official Julia style guide except for deviations noted here.\nFollow Julia contribution guidelines, notably its line length limit.\nFollow Julia guidelines for docstrings.\nFollow JuMP coding standards, including its deviations from the Julia style guide. In particular, note its policies on\nwhitespace\nreturn statements\nvariable names.\nRead The Zen of Python.\nConsider using a plugin that configures your text editor to use EditorConfig settings.","category":"page"},{"location":"style/#Code-Organization","page":"Style Guide","title":"Code Organization","text":"","category":"section"},{"location":"style/","page":"Style Guide","title":"Style Guide","text":"Import standard modules, then 3rd-party modules, then yours. Include a blank line between each group.","category":"page"},{"location":"style/#Module","page":"Style Guide","title":"Module","text":"","category":"section"},{"location":"style/","page":"Style Guide","title":"Style Guide","text":"When writing a module locate all the exports in the main module file.\nPlease include a copy of this .gitignore file","category":"page"},{"location":"style/#Comments","page":"Style Guide","title":"Comments","text":"","category":"section"},{"location":"style/","page":"Style Guide","title":"Style Guide","text":"Use comments to describe non-obvious or non-trivial aspects of code. Describe why something was done but not how. The \"how\" should be apparent from the code itself.\nUse complete sentences and proper grammar.\nInclude a space in between the \"#\" and the first word of the comment.\nUse these tags in comments to describe known work:\nTODO: tasks that need to be done\nFIXME: code that needs refactoring\nBUG: known bug that exists. Should include a bug ID and tracking system.\nPERF: known performance limitation that needs improvement","category":"page"},{"location":"style/#Constructors","page":"Style Guide","title":"Constructors","text":"","category":"section"},{"location":"style/","page":"Style Guide","title":"Style Guide","text":"Per guidance from Julia documentation, use inner constructors to enforce restrictions on parameters or to allow construction of self-referential objects. Use outer constructors to provide default values or to perform customization.\nDocument the reason why the outer constructor is different.\nNote that the compiler will provide a default constructor with all struct members if no inner constructor is defined.\nWhen creating a constructor use function Foo() instead of Foo() = ... One exception is the case where one file has all single-line functions.","category":"page"},{"location":"style/#Exceptions","page":"Style Guide","title":"Exceptions","text":"","category":"section"},{"location":"style/","page":"Style Guide","title":"Style Guide","text":"Use exceptions for unexpected errors and not for normal error handling.\nDetection of an unsupported data format from a user should likely throw an exception and terminate the application.\nDo not use try/catch to handle retrieving a potentially-missing key from a dictionary.","category":"page"},{"location":"style/#Asserts","page":"Style Guide","title":"Asserts","text":"","category":"section"},{"location":"style/","page":"Style Guide","title":"Style Guide","text":"Use @assert statements to guard against programming errors. Do not use them after detecting bad user input. An assert tripping should indicate that there is a bug in the code. Note that they may be compiled out in optimized builds in the future.\nConsider using InfrastructureSystems.@assert_op instead of the standard @assert because it will automatically print the value of the expression. Unlike the standard @assert the Julia compiler will never exclude @assert_op in optimized builds.","category":"page"},{"location":"style/","page":"Style Guide","title":"Style Guide","text":"julia> a = 3; b = 4;\njulia> @assert_op a == b\nERROR: AssertionError: 3 == 4","category":"page"},{"location":"style/#Globals","page":"Style Guide","title":"Globals","text":"","category":"section"},{"location":"style/","page":"Style Guide","title":"Style Guide","text":"Global constants should use UPPER_CASE and be declared const.\nIf global variables are needed, prefix them with g_.\nDon't use magic numbers. Instead, define const globals or Enums (Julia @enum).","category":"page"},{"location":"style/#One-line-Conditionals","page":"Style Guide","title":"One-line Conditionals","text":"","category":"section"},{"location":"style/","page":"Style Guide","title":"Style Guide","text":"Julia code base uses this idiom frequently: && Example:","category":"page"},{"location":"style/","page":"Style Guide","title":"Style Guide","text":" function fact(n::Int)\n n >= 0 || error(\"n must be non-negative\")\n n == 0 && return 1\n n * fact(n-1)\n end","category":"page"},{"location":"style/","page":"Style Guide","title":"Style Guide","text":"This is acceptable for simple code as in this example. However, in general, prefer to write out an entire if statement.","category":"page"},{"location":"style/","page":"Style Guide","title":"Style Guide","text":"Ternary operators provide a way to write clean, concise code. Use good judgement.","category":"page"},{"location":"style/","page":"Style Guide","title":"Style Guide","text":"Good:","category":"page"},{"location":"style/","page":"Style Guide","title":"Style Guide","text":" y = x > 0 ? x : -x","category":"page"},{"location":"style/","page":"Style Guide","title":"Style Guide","text":"There are many examples in our codebase that use the form ? : . These can be expressed much more clearly in an if/else statement.","category":"page"},{"location":"style/#Logging","page":"Style Guide","title":"Logging","text":"","category":"section"},{"location":"style/","page":"Style Guide","title":"Style Guide","text":"When adding a debug log statement consider whether it is appropriate to append _group = . The packages use this Julia feature to suppress debug logging of entire groups at once. InfrastructureSystems defines LOG_GROUPS with commonly-used group names.","category":"page"},{"location":"style/","page":"Style Guide","title":"Style Guide","text":"If you are developing a feature with functionality in a single file then you can let Julia use the default name (the base name of the file). However, if the feature spans files then you should use an existing group or add a new one. Group names should be of type Symbol and follow the PascalCase naming convention.","category":"page"},{"location":"style/","page":"Style Guide","title":"Style Guide","text":"Common group names should be defined in InfrastructureSystems but packages can add their own as needed.","category":"page"},{"location":"style/#Unit-Tests","page":"Style Guide","title":"Unit Tests","text":"","category":"section"},{"location":"style/","page":"Style Guide","title":"Style Guide","text":"All code should be tested. The packages in Sienna have a minimum of 70% coverage to be merged into master. This functionality is provided using Codecov","category":"page"},{"location":"style/#Whitespace","page":"Style Guide","title":"Whitespace","text":"","category":"section"},{"location":"style/","page":"Style Guide","title":"Style Guide","text":"If many function arguments cause the line length to be exceeded, put one argument per line. In some cases it may make sense to pair some variables on the same line.","category":"page"},{"location":"style/","page":"Style Guide","title":"Style Guide","text":" function foo(\n var1::String,\n var2::String,\n var3::String,\n var4::String,\n var5::String,\n var6::String,\n )","category":"page"},{"location":"style/","page":"Style Guide","title":"Style Guide","text":"Do not surround equal signs with spaces when passing keyword args to a function or defining default values in function declarations.\nDo not right-align equal signs when assigning groups of variables. It causes unnecessary changes whenever someone adds a new variable with a longer name.","category":"page"},{"location":"style/","page":"Style Guide","title":"Style Guide","text":"Bad:","category":"page"},{"location":"style/","page":"Style Guide","title":"Style Guide","text":" x = 1\n foo = 2","category":"page"},{"location":"style/","page":"Style Guide","title":"Style Guide","text":"Good:","category":"page"},{"location":"style/","page":"Style Guide","title":"Style Guide","text":" x = 1\n foo = 2","category":"page"},{"location":"style/","page":"Style Guide","title":"Style Guide","text":"Define abstract types on one line. Given the lack of IDE support for Julia, this makes it easier to find type definitions.","category":"page"},{"location":"style/","page":"Style Guide","title":"Style Guide","text":"Bad:","category":"page"},{"location":"style/","page":"Style Guide","title":"Style Guide","text":" abstract type\n Foo\n end","category":"page"},{"location":"style/","page":"Style Guide","title":"Style Guide","text":"Good:","category":"page"},{"location":"style/","page":"Style Guide","title":"Style Guide","text":" abstract type Foo end","category":"page"},{"location":"style/","page":"Style Guide","title":"Style Guide","text":"All Sienna packages perform tests using JuliaFormatter if you are unsure of your format, you can run julia -e 'using JuliaFormatter; include(\".github/workflows/formatter_code.jl\")' at the root of the package. Make sure to have the latest version of JuliaFormatter in your main environment","category":"page"},{"location":"InfrastructureSystems/#API_ref","page":"API","title":"InfrastructureSystems API Reference","text":"","category":"section"},{"location":"InfrastructureSystems/","page":"API","title":"API","text":"Modules = [InfrastructureSystems]","category":"page"},{"location":"InfrastructureSystems/#InfrastructureSystems.AbstractRecorderEvent","page":"API","title":"InfrastructureSystems.AbstractRecorderEvent","text":"Supertype for recorder events\n\n\n\n\n\n","category":"type"},{"location":"InfrastructureSystems/#InfrastructureSystems.AverageRateCurve","page":"API","title":"InfrastructureSystems.AverageRateCurve","text":"An average rate curve, relating the production quantity to the average cost rate from the origin: y = f(x)/x. Can be used, for instance, in the representation of a CostCurve where x is MW and y is currency/MWh, or in the representation of a FuelCurve where x is MW and y is fuel/MWh. Typically calculated by dividing absolute values of cost rate or fuel input rate by absolute values of electric power.\n\n\n\n\n\n","category":"type"},{"location":"InfrastructureSystems/#InfrastructureSystems.CompressionSettings","page":"API","title":"InfrastructureSystems.CompressionSettings","text":"CompressionSettings(enabled, type, level, shuffle)\n\nProvides customization of HDF5 compression settings.\n\nenabled::Bool: Controls whether compression is enabled.\ntype::InfrastructureSystems.CompressionTypesModule.CompressionTypes: Specifies the type of compression to use.\nlevel::Int64: Supported values are 0-9. Higher values deliver better compression ratios but take longer.\nshuffle::Bool: Controls whether to enable the shuffle filter. Used with DEFLATE.\n\nRefer to the HDF5.jl and HDF5 documentation for more details on the options.\n\nExample\n\nsettings = CompressionSettings(\n enabled = true,\n type = CompressionTypes.DEFLATE, # BLOSC is also supported\n level = 3,\n shuffle = true,\n)\n\n\n\n\n\n","category":"type"},{"location":"InfrastructureSystems/#InfrastructureSystems.CostCurve","page":"API","title":"InfrastructureSystems.CostCurve","text":"struct CostCurve{T<:InfrastructureSystems.ValueCurve} <: InfrastructureSystems.ProductionVariableCostCurve{T<:InfrastructureSystems.ValueCurve}\n\nvalue_curve::InfrastructureSystems.ValueCurve: The underlying ValueCurve representation of this ProductionVariableCostCurve\npower_units::InfrastructureSystems.UnitSystemModule.UnitSystem: (default: natural units (MW)) The units for the x-axis of the curve\nvom_cost::LinearCurve: (default of 0) Additional proportional Variable Operation and Maintenance Cost in /(power_unit h), represented as a LinearCurve\n\nCostCurve(value_curve, power_units, vom_cost)\nCostCurve(; value_curve, power_units, vom_cost)\n\nDirect representation of the variable operation cost of a power plant in currency. Composed of a ValueCurve that may represent input-output, incremental, or average rate data. The default units for the x-axis are MW and can be specified with power_units.\n\n\n\n\n\n","category":"type"},{"location":"InfrastructureSystems/#InfrastructureSystems.DataFormatError","page":"API","title":"InfrastructureSystems.DataFormatError","text":"Thrown upon detection of user data that is not supported.\n\n\n\n\n\n","category":"type"},{"location":"InfrastructureSystems/#InfrastructureSystems.Deterministic","page":"API","title":"InfrastructureSystems.Deterministic","text":"mutable struct Deterministic <: AbstractDeterministic\n name::String\n data::SortedDict\n resolution::Dates.Period\n scaling_factor_multiplier::Union{Nothing, Function}\n internal::InfrastructureSystemsInternal\nend\n\nA deterministic forecast for a particular data field in a Component.\n\nArguments\n\nname::String: user-defined name\ndata::SortedDict: timestamp - scalingfactor\nresolution::Dates.Period: forecast resolution\nscaling_factor_multiplier::Union{Nothing, Function}: Applicable when the time series data are scaling factors. Called on the associated component to convert the values.\ninternal::InfrastructureSystemsInternal\n\n\n\n\n\n","category":"type"},{"location":"InfrastructureSystems/#InfrastructureSystems.Deterministic-Tuple{AbstractString, AbstractDict{Dates.DateTime, <:TimeSeries.TimeArray}}","page":"API","title":"InfrastructureSystems.Deterministic","text":"Deterministic(\n name::AbstractString,\n input_data::AbstractDict{Dates.DateTime, <:TimeSeries.TimeArray};\n normalization_factor,\n scaling_factor_multiplier\n) -> InfrastructureSystems.Deterministic\n\n\nConstruct Deterministic from a Dict of TimeArrays.\n\nArguments\n\nname::AbstractString: user-defined name\ninput_data::AbstractDict{Dates.DateTime, TimeSeries.TimeArray}: time series data.\nnormalization_factor::NormalizationFactor = 1.0: optional normalization factor to apply to each data entry\nscaling_factor_multiplier::Union{Nothing, Function} = nothing: If the data are scaling factors then this function will be called on the component and applied to the data when get_time_series_array is called.\ntimestamp = :timestamp: If the values are DataFrames is passed then this must be the column name that contains timestamps.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.Deterministic-Tuple{AbstractString, AbstractString, InfrastructureSystems.InfrastructureSystemsComponent, Dates.Period}","page":"API","title":"InfrastructureSystems.Deterministic","text":"Deterministic(\n name::AbstractString,\n filename::AbstractString,\n component::InfrastructureSystems.InfrastructureSystemsComponent,\n resolution::Dates.Period;\n normalization_factor,\n scaling_factor_multiplier\n) -> InfrastructureSystems.Deterministic\n\n\nConstruct Deterministic from a CSV file. The first column must be a timestamp in DateTime format and the columns the values in the forecast window.\n\nArguments\n\nname::AbstractString: user-defined name\nfilename::AbstractString: name of CSV file containing data\ncomponent::InfrastructureSystemsComponent: component associated with the data\nnormalization_factor::NormalizationFactor = 1.0: optional normalization factor to apply to each data entry\nscaling_factor_multiplier::Union{Nothing, Function} = nothing: If the data are scaling factors then this function will be called on the component and applied to the data when get_time_series_array is called.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.Deterministic-Tuple{AbstractString, InfrastructureSystems.RawTimeSeries, Dates.Period}","page":"API","title":"InfrastructureSystems.Deterministic","text":"Deterministic(\n name::AbstractString,\n series_data::InfrastructureSystems.RawTimeSeries,\n resolution::Dates.Period;\n normalization_factor,\n scaling_factor_multiplier\n) -> InfrastructureSystems.Deterministic\n\n\nConstruct Deterministic from RawTimeSeries.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.Deterministic-Tuple{InfrastructureSystems.Deterministic, AbstractString}","page":"API","title":"InfrastructureSystems.Deterministic","text":"Deterministic(\n src::InfrastructureSystems.Deterministic,\n name::AbstractString;\n scaling_factor_multiplier\n) -> InfrastructureSystems.Deterministic\n\n\nConstruct Deterministic that shares the data from an existing instance.\n\nThis is useful in cases where you want a component to use the same time series data for two different attributes.\n\nExamples\n\nresolution = Dates.Hour(1)\ndata = Dict(\n DateTime(\"2020-01-01T00:00:00\") => ones(24),\n DateTime(\"2020-01-01T01:00:00\") => ones(24),\n)\n# Define a Deterministic for the first attribute\nforecast_max_active_power = Deterministic(\n \"max_active_power\",\n data,\n resolution,\n scaling_factor_multiplier = get_max_active_power,\n)\nadd_time_series!(sys, generator, forecast_max_active_power)\n# Reuse time series for second attribute\nforecast_max_reactive_power = Deterministic(\n forecast_max_active_power,\n \"max_reactive_power\"\n scaling_factor_multiplier = get_max_reactive_power,\n)\nadd_time_series!(sys, generator, forecast_max_reactive_power)\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.Deterministic-Tuple{InfrastructureSystems.Deterministic, Any}","page":"API","title":"InfrastructureSystems.Deterministic","text":"Deterministic(\n forecast::InfrastructureSystems.Deterministic,\n data\n) -> InfrastructureSystems.Deterministic\n\n\nConstruct a new Deterministic from an existing instance and a subset of data.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.DeterministicMetadata","page":"API","title":"InfrastructureSystems.DeterministicMetadata","text":"mutable struct DeterministicMetadata <: ForecastMetadata\n name::String\n resolution::Dates.Period\n initial_timestamp::Dates.DateTime\n interval::Dates.Period\n count::Int\n time_series_uuid::UUIDs.UUID\n horizon::Dates.Period\n time_series_type::Type{<:AbstractDeterministic}\n scaling_factor_multiplier::Union{Nothing, Function}\n features::Dict{String, Union{Bool, Int, String}}\n internal::InfrastructureSystemsInternal\nend\n\nA deterministic forecast for a particular data field in a Component.\n\nArguments\n\nname::String: user-defined name\nresolution::Dates.Period:\ninitial_timestamp::Dates.DateTime: time series availability time\ninterval::Dates.Period: time step between forecast windows\ncount::Int: number of forecast windows\ntime_series_uuid::UUIDs.UUID: reference to time series data\nhorizon::Dates.Period: length of this time series\ntime_series_type::Type{<:AbstractDeterministic}: Type of the time series data associated with this metadata.\nscaling_factor_multiplier::Union{Nothing, Function}: (default: nothing) Applicable when the time series data are scaling factors. Called on the associated component to convert the values.\nfeatures::Dict{String, Union{Bool, Int, String}}: (default: Dict{String, Any}()) User-defined tags that differentiate multiple time series arrays that represent the same component attribute, such as different arrays for different scenarios or years.\ninternal::InfrastructureSystemsInternal:\n\n\n\n\n\n","category":"type"},{"location":"InfrastructureSystems/#InfrastructureSystems.DeterministicSingleTimeSeries","page":"API","title":"InfrastructureSystems.DeterministicSingleTimeSeries","text":"mutable struct DeterministicSingleTimeSeries <: AbstractDeterministic\n single_time_series::SingleTimeSeries\n initial_timestamp::Dates.DateTime\n interval::Dates.Period\n count::Int\n horizon::Int\nend\n\nA deterministic forecast that wraps a SingleTimeSeries\n\nDeterministicSingleTimeSeries behaves exactly like a Deterministic, but instead of storing windows at each initial time it provides a view into the existing SingleTimeSeries at incrementing offsets. This avoids large data duplications when there are the overlapping windows between forecasts. \n\nCan be used as a perfect forecast based on historical data when real forecast data is unavailable. \n\nArguments\n\nsingle_time_series::SingleTimeSeries: wrapped SingleTimeSeries object\ninitial_timestamp::Dates.DateTime: time series availability time\ninterval::Dates.Period: time step between forecast windows\ncount::Int: number of forecast windows\nhorizon::Int: length of this time series\n\n\n\n\n\n","category":"type"},{"location":"InfrastructureSystems/#InfrastructureSystems.DeviceParameter","page":"API","title":"InfrastructureSystems.DeviceParameter","text":"Base type for auxillary structs. These should not be stored in a system.\n\n\n\n\n\n","category":"type"},{"location":"InfrastructureSystems/#InfrastructureSystems.FileLogger","page":"API","title":"InfrastructureSystems.FileLogger","text":"Specializes the behavior of SimpleLogger by adding timestamps and process and thread IDs.\n\n\n\n\n\n","category":"type"},{"location":"InfrastructureSystems/#InfrastructureSystems.FlattenIteratorWrapper","page":"API","title":"InfrastructureSystems.FlattenIteratorWrapper","text":"Wrapper around Iterators.Flatten to provide total length.\n\n\n\n\n\n","category":"type"},{"location":"InfrastructureSystems/#InfrastructureSystems.Forecast","page":"API","title":"InfrastructureSystems.Forecast","text":"Supertype for forecast time series Current concrete subtypes are:\n\nDeterministic\nDeterministicSingleTimeSeries\nScenarios\nProbabilistic\n\nSubtypes of Forecast must implement:\n\nget_horizon_count\nget_initial_times\nget_initial_timestamp\nget_name\nget_scaling_factor_multiplier\nget_window\niterate_windows\n\n\n\n\n\n","category":"type"},{"location":"InfrastructureSystems/#InfrastructureSystems.ForecastCache-Union{Tuple{T}, Tuple{Type{T}, InfrastructureSystems.InfrastructureSystemsComponent, AbstractString}} where T<:InfrastructureSystems.Forecast","page":"API","title":"InfrastructureSystems.ForecastCache","text":"Construct ForecastCache to automatically control caching of forecast data. Maintains some count of forecast windows in memory based on cache_size_bytes.\n\nCall Base.iterate or get_next_time_series_array! to retrieve data. Each iteration will return a TimeSeries.TimeArray covering one forecast window of length horizon_count.\n\nArguments\n\n::Type{T}: subtype of Forecast\ncomponent::InfrastructureSystemsComponent: component\nname::AbstractString: forecast name\nstart_time::Union{Nothing, Dates.DateTime} = nothing: forecast start time\nhorizon_count::Union{Nothing, Int} = nothing: forecast horizon count\ncache_size_bytes = TIME_SERIES_CACHE_SIZE_BYTES: maximum size of data to keep in memory\nignore_scaling_factors = false: controls whether to ignore scaling_factor_multiplier in the time series instance\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.ForecastKey","page":"API","title":"InfrastructureSystems.ForecastKey","text":"A unique key to identify and retrieve a Forecast\n\nSee: get_time_series_keys and get_time_series(::TimeSeriesOwners, ::TimeSeriesKey).\n\n\n\n\n\n","category":"type"},{"location":"InfrastructureSystems/#InfrastructureSystems.FuelCurve","page":"API","title":"InfrastructureSystems.FuelCurve","text":"struct FuelCurve{T<:InfrastructureSystems.ValueCurve} <: InfrastructureSystems.ProductionVariableCostCurve{T<:InfrastructureSystems.ValueCurve}\n\nvalue_curve::InfrastructureSystems.ValueCurve: The underlying ValueCurve representation of this ProductionVariableCostCurve\npower_units::InfrastructureSystems.UnitSystemModule.UnitSystem: (default: natural units (MW)) The units for the x-axis of the curve\nfuel_cost::Union{Float64, InfrastructureSystems.TimeSeriesKey}: Either a fixed value for fuel cost or the TimeSeriesKey to a fuel cost time series\nvom_cost::LinearCurve: (default of 0) Additional proportional Variable Operation and Maintenance Cost in /(power_unit h) represented as a LinearCurve\n\nFuelCurve(value_curve, power_units, fuel_cost, vom_cost)\nFuelCurve(value_curve, fuel_cost)\nFuelCurve(value_curve, fuel_cost, vom_cost)\nFuelCurve(value_curve, power_units, fuel_cost)\nFuelCurve(; value_curve, power_units, fuel_cost, vom_cost)\n\nRepresentation of the variable operation cost of a power plant in terms of fuel (MBTU, liters, m^3, etc.), coupled with a conversion factor between fuel and currency. Composed of a ValueCurve that may represent input-output, incremental, or average rate data. The default units for the x-axis are MW and can be specified with power_units.\n\n\n\n\n\n","category":"type"},{"location":"InfrastructureSystems/#InfrastructureSystems.GeographicInfo","page":"API","title":"InfrastructureSystems.GeographicInfo","text":"Attribute to store Geographic Information about the system components\n\n\n\n\n\n","category":"type"},{"location":"InfrastructureSystems/#InfrastructureSystems.Hdf5TimeSeriesStorage","page":"API","title":"InfrastructureSystems.Hdf5TimeSeriesStorage","text":"Stores all time series data in an HDF5 file.\n\nThe file used is assumed to be temporary and will be automatically deleted when there are no more references to the storage object.\n\n\n\n\n\n","category":"type"},{"location":"InfrastructureSystems/#InfrastructureSystems.Hdf5TimeSeriesStorage-Tuple{Bool}","page":"API","title":"InfrastructureSystems.Hdf5TimeSeriesStorage","text":"Hdf5TimeSeriesStorage(\n create_file::Bool;\n filename,\n directory,\n compression\n) -> InfrastructureSystems.Hdf5TimeSeriesStorage\n\n\nConstructs Hdf5TimeSeriesStorage.\n\nArguments\n\ncreate_file::Bool: create new file\nfilename=nothing: if nothing, create a temp file, else use this name.\ndirectory=nothing: if set and filename is nothing, create a temp file in this directory. If it is not set, use the environment variable SIENNATIMESERIES_DIRECTORY. If that is not set, use tempdir(). This should be set if the time series data is larger than the tmp filesystem can hold.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.Hdf5TimeSeriesStorage-Tuple{}","page":"API","title":"InfrastructureSystems.Hdf5TimeSeriesStorage","text":"Hdf5TimeSeriesStorage(\n\n) -> InfrastructureSystems.Hdf5TimeSeriesStorage\n\n\nConstructs Hdf5TimeSeriesStorage by creating a temp file.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.InMemoryTimeSeriesStorage","page":"API","title":"InfrastructureSystems.InMemoryTimeSeriesStorage","text":"Stores all time series data in memory.\n\n\n\n\n\n","category":"type"},{"location":"InfrastructureSystems/#InfrastructureSystems.InMemoryTimeSeriesStorage-Tuple{InfrastructureSystems.Hdf5TimeSeriesStorage}","page":"API","title":"InfrastructureSystems.InMemoryTimeSeriesStorage","text":"InMemoryTimeSeriesStorage(\n hdf5_storage::InfrastructureSystems.Hdf5TimeSeriesStorage\n) -> InfrastructureSystems.InMemoryTimeSeriesStorage\n\n\nConstructs InMemoryTimeSeriesStorage from an instance of Hdf5TimeSeriesStorage.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.IncrementalCurve","page":"API","title":"InfrastructureSystems.IncrementalCurve","text":"An incremental (or 'marginal') curve, relating the production quantity to the derivative of cost: y = f'(x). Can be used, for instance, in the representation of a CostCurve where x is MW and y is currency/MWh, or in the representation of a FuelCurve where x is MW and y is fuel/MWh.\n\n\n\n\n\n","category":"type"},{"location":"InfrastructureSystems/#InfrastructureSystems.InfrastructureSystemsComponent","page":"API","title":"InfrastructureSystems.InfrastructureSystemsComponent","text":"Base type for structs that are stored in a system.\n\nRequired interface functions for subtypes:\n\nget_name()\nget_internal()\n\nSubtypes may contain time series.\n\n\n\n\n\n","category":"type"},{"location":"InfrastructureSystems/#InfrastructureSystems.InfrastructureSystemsInternal","page":"API","title":"InfrastructureSystems.InfrastructureSystemsInternal","text":"Internal storage common to InfrastructureSystems types.\n\n\n\n\n\n","category":"type"},{"location":"InfrastructureSystems/#InfrastructureSystems.InfrastructureSystemsInternal-Tuple{Base.UUID}","page":"API","title":"InfrastructureSystems.InfrastructureSystemsInternal","text":"InfrastructureSystemsInternal(\n u::Base.UUID\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nCreates InfrastructureSystemsInternal with an existing UUID.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.InfrastructureSystemsInternal-Tuple{}","page":"API","title":"InfrastructureSystems.InfrastructureSystemsInternal","text":"InfrastructureSystemsInternal(\n;\n uuid,\n shared_system_references,\n units_info,\n ext\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nCreates InfrastructureSystemsInternal with a new UUID.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.InfrastructureSystemsType","page":"API","title":"InfrastructureSystems.InfrastructureSystemsType","text":"Base type for any struct in the Sienna packages. All structs must implement a kwarg-only constructor to allow deserializing from a Dict.\n\n\n\n\n\n","category":"type"},{"location":"InfrastructureSystems/#InfrastructureSystems.InputOutputCurve","page":"API","title":"InfrastructureSystems.InputOutputCurve","text":"An input-output curve, directly relating the production quantity to the cost: y = f(x). Can be used, for instance, in the representation of a CostCurve where x is MW and y is currency/hr, or in the representation of a FuelCurve where x is MW and y is fuel/hr.\n\n\n\n\n\n","category":"type"},{"location":"InfrastructureSystems/#InfrastructureSystems.LazyDictFromIterator-Union{Tuple{V}, Tuple{K}, Tuple{Type{K}, Type{V}, Any, Function}} where {K, V}","page":"API","title":"InfrastructureSystems.LazyDictFromIterator","text":"LazyDictFromIterator creates a dictionary from an iterator, but only increments the iterator and adds items to the dictionary as it needs them. In the worst case it is identical to creating a dictionary by iterating over the entire list. Each V should have a K member.\n\nArguments\n\nK: type of the dictionary keys\nV: type of the dictionary values\niter: any object implementing the Iterator interface\ngetter::Function: method to call on V to get its K\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.LinearCurve","page":"API","title":"InfrastructureSystems.LinearCurve","text":"LinearCurve(proportional_term::Float64)\nLinearCurve(proportional_term::Float64, constant_term::Float64)\n\nA linear input-output curve, representing a constant marginal rate. May have zero no-load cost (i.e., constant average rate) or not.\n\nArguments\n\nproportional_term::Float64: marginal rate\nconstant_term::Float64: optional, cost at zero production, defaults to 0.0\n\n\n\n\n\n","category":"type"},{"location":"InfrastructureSystems/#InfrastructureSystems.LinearFunctionData","page":"API","title":"InfrastructureSystems.LinearFunctionData","text":"Structure to represent the underlying data of linear functions. Principally used for the representation of cost functions f(x) = proportional_term*x + constant_term.\n\nArguments\n\nproportional_term::Float64: the proportional term in the represented function\nconstant_term::Float64: the constant term in the represented function\n\n\n\n\n\n","category":"type"},{"location":"InfrastructureSystems/#InfrastructureSystems.LogEvent","page":"API","title":"InfrastructureSystems.LogEvent","text":"Contains information describing a log event.\n\n\n\n\n\n","category":"type"},{"location":"InfrastructureSystems/#InfrastructureSystems.LogEventTracker","page":"API","title":"InfrastructureSystems.LogEventTracker","text":"LogEventTracker() -> InfrastructureSystems.LogEventTracker\nLogEventTracker(\n levels\n) -> InfrastructureSystems.LogEventTracker\n\n\nTracks counts of all log events by level.\n\nExamples\n\nLogEventTracker()\nLogEventTracker((Logging.Info, Logging.Warn, Logging.Error))\n\n\n\n\n\n","category":"type"},{"location":"InfrastructureSystems/#InfrastructureSystems.MultiLogger","page":"API","title":"InfrastructureSystems.MultiLogger","text":"Redirects log events to multiple loggers. The primary use case is to allow logging to both a file and the console. Secondarily, it can track the counts of all log messages.\n\nExample\n\nMultiLogger([TerminalLogger(stderr), SimpleLogger(stream)], LogEventTracker())\n\n\n\n\n\n","category":"type"},{"location":"InfrastructureSystems/#InfrastructureSystems.MultiLogger-Union{Tuple{Array{T}}, Tuple{T}} where T<:Base.CoreLogging.AbstractLogger","page":"API","title":"InfrastructureSystems.MultiLogger","text":"MultiLogger(\n loggers::Array{T<:Base.CoreLogging.AbstractLogger}\n) -> InfrastructureSystems.MultiLogger\n\n\nCreates a MultiLogger with no event tracking.\n\nExample\n\nMultiLogger([TerminalLogger(stderr), SimpleLogger(stream)])\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.NotImplementedError","page":"API","title":"InfrastructureSystems.NotImplementedError","text":"Indicate that the feature at hand happens to not be implemented for the given data even though it could be. If it is a category mistake to imagine this feature defined on that data, use another exception, like TypeError or ArgumentError.\n\n\n\n\n\n","category":"type"},{"location":"InfrastructureSystems/#InfrastructureSystems.PiecewiseAverageCurve","page":"API","title":"InfrastructureSystems.PiecewiseAverageCurve","text":"PiecewiseAverageCurve(initial_input::Union{Float64, Nothing}, x_coords::Vector{Float64}, slopes::Vector{Float64})\n\nA piecewise linear curve specified by average rates between production points. May have nonzero initial value.\n\nArguments\n\ninitial_input::Union{Float64, Nothing}: cost at minimum production point first(x_coords) (NOT at zero production), defines the start of the curve\nx_coords::Vector{Float64}: vector of n production points\nslopes::Vector{Float64}: vector of n-1 average rates/slopes of the curve segments between the points\n\n\n\n\n\n","category":"type"},{"location":"InfrastructureSystems/#InfrastructureSystems.PiecewiseIncrementalCurve","page":"API","title":"InfrastructureSystems.PiecewiseIncrementalCurve","text":"PiecewiseIncrementalCurve(initial_input::Union{Float64, Nothing}, x_coords::Vector{Float64}, slopes::Vector{Float64})\nPiecewiseIncrementalCurve(input_at_zero::Union{Nothing, Float64}, initial_input::Union{Float64, Nothing}, x_coords::Vector{Float64}, slopes::Vector{Float64})\n\nA piecewise linear curve specified by marginal rates (slopes) between production points. May have nonzero initial value.\n\nArguments\n\ninput_at_zero::Union{Nothing, Float64}: (optional, defaults to nothing) cost at zero production, does NOT represent a part of the curve\ninitial_input::Union{Float64, Nothing}: cost at minimum production point first(x_coords) (NOT at zero production), defines the start of the curve\nx_coords::Vector{Float64}: vector of n production points\nslopes::Vector{Float64}: vector of n-1 marginal rates/slopes of the curve segments between the points\n\n\n\n\n\n","category":"type"},{"location":"InfrastructureSystems/#InfrastructureSystems.PiecewiseLinearData","page":"API","title":"InfrastructureSystems.PiecewiseLinearData","text":"Structure to represent piecewise linear data as a series of points: two points define one segment, three points define two segments, etc. The curve starts at the first point given, not the origin. Principally used for the representation of cost functions where the points store quantities (x, y), such as (MW, /h).\n\nArguments\n\npoints::Vector{@NamedTuple{x::Float64, y::Float64}}: the points that define the function\n\n\n\n\n\n","category":"type"},{"location":"InfrastructureSystems/#InfrastructureSystems.PiecewisePointCurve","page":"API","title":"InfrastructureSystems.PiecewisePointCurve","text":"PiecewisePointCurve(points::Vector{Tuple{Float64, Float64}})\n\nA piecewise linear curve specified by cost values at production points.\n\nArguments\n\npoints::Vector{Tuple{Float64, Float64}} or similar: vector of (production, cost) pairs\n\n\n\n\n\n","category":"type"},{"location":"InfrastructureSystems/#InfrastructureSystems.PiecewiseStepData","page":"API","title":"InfrastructureSystems.PiecewiseStepData","text":"Structure to represent a step function as a series of endpoint x-coordinates and segment y-coordinates: two x-coordinates and one y-coordinate defines a single segment, three x-coordinates and two y-coordinates define two segments, etc. This can be useful to represent the derivative of a PiecewiseLinearData, where the y-coordinates of this step function represent the slopes of that piecewise linear function, so there is also an optional field c that can be used to store the initial y-value of that piecewise linear function. Principally used for the representation of cost functions where the points store quantities (x, dy/dx), such as (MW, /MWh).\n\nArguments\n\nx_coords::Vector{Float64}: the x-coordinates of the endpoints of the segments\ny_coords::Vector{Float64}: the y-coordinates of the segments: y_coords[1] is the y-value between\n\nx_coords[1] and x_coords[2], etc. Must have one fewer elements than x_coords.\n\nc::Union{Nothing, Float64}: optional, the value to use for the integral from 0 to x_coords[1] of this function\n\n\n\n\n\n","category":"type"},{"location":"InfrastructureSystems/#InfrastructureSystems.Probabilistic","page":"API","title":"InfrastructureSystems.Probabilistic","text":"mutable struct Probabilistic <: Forecast\n name::String\n resolution::Dates.Period\n percentiles::Vector{Float64}\n data::SortedDict\n scaling_factor_multiplier::Union{Nothing, Function}\n internal::InfrastructureSystemsInternal\nend\n\nA Probabilistic forecast for a particular data field in a Component.\n\nArguments\n\nname::String: user-defined name\nresolution::Dates.Period: forecast resolution\npercentiles::Vector{Float64}: Percentiles for the probabilistic forecast\ndata::SortedDict: timestamp - scalingfactor\nscaling_factor_multiplier::Union{Nothing, Function}: Applicable when the time series data are scaling factors. Called on the associated component to convert the values.\ninternal::InfrastructureSystemsInternal\n\n\n\n\n\n","category":"type"},{"location":"InfrastructureSystems/#InfrastructureSystems.Probabilistic-Tuple{AbstractString, AbstractDict, Vector, Dates.Period}","page":"API","title":"InfrastructureSystems.Probabilistic","text":"Probabilistic(\n name::AbstractString,\n input_data::AbstractDict,\n percentiles::Vector,\n resolution::Dates.Period;\n normalization_factor,\n scaling_factor_multiplier\n) -> InfrastructureSystems.Probabilistic\n\n\nConstruct Probabilistic from a SortedDict of Arrays.\n\nArguments\n\nname::AbstractString: user-defined name\ninput_data::AbstractDict{Dates.DateTime, Matrix{Float64}}: time series data.\npercentiles: Percentiles represented in the probabilistic forecast\nresolution::Dates.Period: The resolution of the forecast in Dates.Period`\nnormalization_factor::NormalizationFactor = 1.0: optional normalization factor to apply to each data entry\nscaling_factor_multiplier::Union{Nothing, Function} = nothing: If the data are scaling factors then this function will be called on the component and applied to the data when get_time_series_array is called.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.Probabilistic-Tuple{AbstractString, AbstractDict{Dates.DateTime, <:TimeSeries.TimeArray}, Vector{Float64}}","page":"API","title":"InfrastructureSystems.Probabilistic","text":"Probabilistic(\n name::AbstractString,\n input_data::AbstractDict{Dates.DateTime, <:TimeSeries.TimeArray},\n percentiles::Vector{Float64};\n normalization_factor,\n scaling_factor_multiplier\n) -> InfrastructureSystems.Probabilistic\n\n\nConstruct Probabilistic from a Dict of TimeArrays.\n\nArguments\n\nname::AbstractString: user-defined name\ninput_data::AbstractDict{Dates.DateTime, TimeSeries.TimeArray}: time series data.\npercentiles: Percentiles represented in the probabilistic forecast\nnormalization_factor::NormalizationFactor = 1.0: optional normalization factor to apply to each data entry\nscaling_factor_multiplier::Union{Nothing, Function} = nothing: If the data are scaling factors then this function will be called on the component and applied to the data when get_time_series_array is called.\ntimestamp = :timestamp: If the values are DataFrames is passed then this must be the column name that contains timestamps.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.Probabilistic-Tuple{AbstractString, InfrastructureSystems.RawTimeSeries, Vector, Dates.Period}","page":"API","title":"InfrastructureSystems.Probabilistic","text":"Probabilistic(\n name::AbstractString,\n series_data::InfrastructureSystems.RawTimeSeries,\n percentiles::Vector,\n resolution::Dates.Period;\n normalization_factor,\n scaling_factor_multiplier\n) -> InfrastructureSystems.Probabilistic\n\n\nConstruct Deterministic from RawTimeSeries.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.Probabilistic-Tuple{InfrastructureSystems.Probabilistic, AbstractString}","page":"API","title":"InfrastructureSystems.Probabilistic","text":"Probabilistic(\n src::InfrastructureSystems.Probabilistic,\n name::AbstractString;\n scaling_factor_multiplier\n) -> InfrastructureSystems.Probabilistic\n\n\nConstruct a Probabilistic that shares the data from an existing instance.\n\nThis is useful in cases where you want a component to use the same time series data for two different attributes.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.ProbabilisticMetadata","page":"API","title":"InfrastructureSystems.ProbabilisticMetadata","text":"mutable struct ProbabilisticMetadata <: ForecastMetadata\n name::String\n initial_timestamp::Dates.DateTime\n resolution::Dates.Period\n interval::Dates.Period\n count::Int\n percentiles::Vector{Float64}\n time_series_uuid::UUIDs.UUID\n horizon::Dates.Period\n scaling_factor_multiplier::Union{Nothing, Function}\n features::Dict{String, Union{Bool, Int, String}}\n internal::InfrastructureSystemsInternal\nend\n\nA Probabilistic forecast for a particular data field in a Component.\n\nArguments\n\nname::String: user-defined name\ninitial_timestamp::Dates.DateTime: time series availability time\nresolution::Dates.Period:\ninterval::Dates.Period: time step between forecast windows\ncount::Int: number of forecast windows\npercentiles::Vector{Float64}: Percentiles for the probabilistic forecast\ntime_series_uuid::UUIDs.UUID: reference to time series data\nhorizon::Dates.Period: length of this time series\nscaling_factor_multiplier::Union{Nothing, Function}: (default: nothing) Applicable when the time series data are scaling factors. Called on the associated component to convert the values.\nfeatures::Dict{String, Union{Bool, Int, String}}: (default: Dict{String, Any}()) User-defined tags that differentiate multiple time series arrays that represent the same component attribute, such as different arrays for different scenarios or years.\ninternal::InfrastructureSystemsInternal:\n\n\n\n\n\n","category":"type"},{"location":"InfrastructureSystems/#InfrastructureSystems.QuadraticCurve","page":"API","title":"InfrastructureSystems.QuadraticCurve","text":"QuadraticCurve(quadratic_term::Float64, proportional_term::Float64, constant_term::Float64)\n\nA quadratic input-output curve, may have nonzero no-load cost.\n\nArguments\n\nquadratic_term::Float64: quadratic term of the curve\nproportional_term::Float64: proportional term of the curve\nconstant_term::Float64: constant term of the curve\n\n\n\n\n\n","category":"type"},{"location":"InfrastructureSystems/#InfrastructureSystems.QuadraticFunctionData","page":"API","title":"InfrastructureSystems.QuadraticFunctionData","text":"Structure to represent the underlying data of quadratic functions. Principally used for the representation of cost functions f(x) = quadratic_term*x^2 + proportional_term*x + constant_term.\n\nArguments\n\nquadratic_term::Float64: the quadratic term in the represented function\nproportional_term::Float64: the proportional term in the represented function\nconstant_term::Float64: the constant term in the represented function\n\n\n\n\n\n","category":"type"},{"location":"InfrastructureSystems/#InfrastructureSystems.QuadraticFunctionData-Tuple{InfrastructureSystems.LinearFunctionData}","page":"API","title":"InfrastructureSystems.QuadraticFunctionData","text":"QuadraticFunctionData(\n data::InfrastructureSystems.LinearFunctionData\n) -> InfrastructureSystems.QuadraticFunctionData\n\n\nLosslessly convert LinearFunctionData to QuadraticFunctionData\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.RawTimeSeries","page":"API","title":"InfrastructureSystems.RawTimeSeries","text":"Wraps the data read from the text files with time series\n\n\n\n\n\n","category":"type"},{"location":"InfrastructureSystems/#InfrastructureSystems.Recorder","page":"API","title":"InfrastructureSystems.Recorder","text":"Records user-defined events in JSON format.\n\n\n\n\n\n","category":"type"},{"location":"InfrastructureSystems/#InfrastructureSystems.Recorder-Tuple{Symbol}","page":"API","title":"InfrastructureSystems.Recorder","text":"Recorder(\n name::Symbol;\n io,\n mode,\n directory\n) -> InfrastructureSystems.Recorder\n\n\nConstruct a Recorder.\n\nArguments\n\nname::Symbol: name of recorder\nio::Union{Nothing, IO}: If nothing, record events in a file using name.\nmode = \"w\": Only used when io is nothing.\ndirectory = \".\": Only used when io is nothing.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.Results","page":"API","title":"InfrastructureSystems.Results","text":"To implement a sub-type of this you need to implement the methods below.\n\n\n\n\n\n","category":"type"},{"location":"InfrastructureSystems/#InfrastructureSystems.Scenarios","page":"API","title":"InfrastructureSystems.Scenarios","text":"mutable struct Scenarios <: Forecast\n name::String\n resolution::Dates.Period\n scenario_count::Int64\n data::SortedDict\n scaling_factor_multiplier::Union{Nothing, Function}\n internal::InfrastructureSystemsInternal\nend\n\nA Discrete Scenario Based time series for a particular data field in a Component.\n\nArguments\n\nname::String: user-defined name\nresolution::Dates.Period: forecast resolution\nscenario_count::Int64: Number of scenarios\ndata::SortedDict: timestamp - scalingfactor\nscaling_factor_multiplier::Union{Nothing, Function}: Applicable when the time series data are scaling factors. Called on the associated component to convert the values.\ninternal::InfrastructureSystemsInternal\n\n\n\n\n\n","category":"type"},{"location":"InfrastructureSystems/#InfrastructureSystems.Scenarios-Tuple{AbstractString, AbstractDict, Dates.Period}","page":"API","title":"InfrastructureSystems.Scenarios","text":"Scenarios(\n name::AbstractString,\n input_data::AbstractDict,\n resolution::Dates.Period;\n normalization_factor,\n scaling_factor_multiplier\n) -> InfrastructureSystems.Scenarios\n\n\nConstruct Scenarios from a SortedDict of Arrays.\n\nArguments\n\nname::AbstractString: user-defined name\ninput_data::AbstractDict{Dates.DateTime, Matrix{Float64}}: time series data.\nresolution::Dates.Period: The resolution of the forecast in Dates.Period`\nnormalization_factor::NormalizationFactor = 1.0: optional normalization factor to apply to each data entry\nscaling_factor_multiplier::Union{Nothing, Function} = nothing: If the data are scaling factors then this function will be called on the component and applied to the data when get_time_series_array is called.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.Scenarios-Tuple{AbstractString, AbstractDict{Dates.DateTime, <:TimeSeries.TimeArray}}","page":"API","title":"InfrastructureSystems.Scenarios","text":"Scenarios(\n name::AbstractString,\n input_data::AbstractDict{Dates.DateTime, <:TimeSeries.TimeArray};\n normalization_factor,\n scaling_factor_multiplier\n) -> InfrastructureSystems.Scenarios\n\n\nConstruct Scenarios from a Dict of TimeArrays.\n\nArguments\n\nname::AbstractString: user-defined name\ninput_data::AbstractDict{Dates.DateTime, TimeSeries.TimeArray}: time series data.\nnormalization_factor::NormalizationFactor = 1.0: optional normalization factor to apply to each data entry\nscaling_factor_multiplier::Union{Nothing, Function} = nothing: If the data are scaling factors then this function will be called on the component and applied to the data when get_time_series_array is called.\ntimestamp = :timestamp: If the values are DataFrames is passed then this must be the column name that contains timestamps.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.Scenarios-Tuple{InfrastructureSystems.Scenarios, AbstractString}","page":"API","title":"InfrastructureSystems.Scenarios","text":"Scenarios(\n src::InfrastructureSystems.Scenarios,\n name::AbstractString;\n scaling_factor_multiplier\n) -> InfrastructureSystems.Scenarios\n\n\nConstruct Scenarios that shares the data from an existing instance.\n\nThis is useful in cases where you want a component to use the same time series data for two different attributes.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.ScenariosMetadata","page":"API","title":"InfrastructureSystems.ScenariosMetadata","text":"mutable struct ScenariosMetadata <: ForecastMetadata\n name::String\n resolution::Dates.Period\n initial_timestamp::Dates.DateTime\n interval::Dates.Period\n scenario_count::Int64\n count::Int\n time_series_uuid::UUIDs.UUID\n horizon::Dates.Period\n scaling_factor_multiplier::Union{Nothing, Function}\n features::Dict{String, Union{Bool, Int, String}}\n internal::InfrastructureSystemsInternal\nend\n\nA Discrete Scenario Based time series for a particular data field in a Component.\n\nArguments\n\nname::String: user-defined name\nresolution::Dates.Period:\ninitial_timestamp::Dates.DateTime: time series availability time\ninterval::Dates.Period: time step between forecast windows\nscenario_count::Int64: Number of scenarios\ncount::Int: number of forecast windows\ntime_series_uuid::UUIDs.UUID: reference to time series data\nhorizon::Dates.Period: length of this time series\nscaling_factor_multiplier::Union{Nothing, Function}: (default: nothing) Applicable when the time series data are scaling factors. Called on the associated component to convert the values.\nfeatures::Dict{String, Union{Bool, Int, String}}: (default: Dict{String, Any}()) User-defined tags that differentiate multiple time series arrays that represent the same component attribute, such as different arrays for different scenarios or years.\ninternal::InfrastructureSystemsInternal:\n\n\n\n\n\n","category":"type"},{"location":"InfrastructureSystems/#InfrastructureSystems.SingleTimeSeries","page":"API","title":"InfrastructureSystems.SingleTimeSeries","text":"mutable struct SingleTimeSeries <: StaticTimeSeries\n name::String\n data::TimeSeries.TimeArray\n scaling_factor_multiplier::Union{Nothing, Function}\n internal::InfrastructureSystemsInternal\nend\n\nA single column of time series data for a particular data field in a Component.\n\nIn contrast with a forecast, this can represent one continual time series, such as a series of historical measurements or realizations or a single scenario (e.g. a weather year or different input assumptions).\n\nArguments\n\nname::String: user-defined name\ndata::TimeSeries.TimeArray: timestamp - scalingfactor\nresolution::Dates.Period: Time duration between steps in the time series. The resolution must be the same throughout the time series\nscaling_factor_multiplier::Union{Nothing, Function}: Applicable when the time series data are scaling factors. Called on the associated component to convert the values.\ninternal::InfrastructureSystemsInternal\n\n\n\n\n\n","category":"type"},{"location":"InfrastructureSystems/#InfrastructureSystems.SingleTimeSeries-Tuple{AbstractString, AbstractString, InfrastructureSystems.InfrastructureSystemsComponent, Dates.Period}","page":"API","title":"InfrastructureSystems.SingleTimeSeries","text":"SingleTimeSeries(\n name::AbstractString,\n filename::AbstractString,\n component::InfrastructureSystems.InfrastructureSystemsComponent,\n resolution::Dates.Period;\n normalization_factor,\n scaling_factor_multiplier\n) -> InfrastructureSystems.SingleTimeSeries\n\n\nConstruct SingleTimeSeries from a CSV file. The file must have a column that is the name of the component.\n\nArguments\n\nname::AbstractString: user-defined name\nfilename::AbstractString: name of CSV file containing data\ncomponent::InfrastructureSystemsComponent: component associated with the data\nresolution::Dates.Period: resolution of the time series\nnormalization_factor::NormalizationFactor = 1.0: optional normalization factor to apply to each data entry\nscaling_factor_multiplier::Union{Nothing, Function} = nothing: If the data are scaling factors then this function will be called on the component and applied to the data when get_time_series_array is called.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.SingleTimeSeries-Tuple{AbstractString, Union{DataFrames.DataFrame, TimeSeries.TimeArray}}","page":"API","title":"InfrastructureSystems.SingleTimeSeries","text":"SingleTimeSeries(\n name::AbstractString,\n data::Union{DataFrames.DataFrame, TimeSeries.TimeArray};\n normalization_factor,\n scaling_factor_multiplier,\n timestamp\n) -> InfrastructureSystems.SingleTimeSeries\n\n\nConstruct SingleTimeSeries from a TimeArray or DataFrame.\n\nArguments\n\nname::AbstractString: user-defined name\ndata::Union{TimeSeries.TimeArray, DataFrames.DataFrame}: time series data\nnormalization_factor::NormalizationFactor = 1.0: optional normalization factor to apply to each data entry\nscaling_factor_multiplier::Union{Nothing, Function} = nothing: If the data are scaling factors then this function will be called on the component and applied to the data when get_time_series_array is called.\ntimestamp = :timestamp: If a DataFrame is passed then this must be the column name that contains timestamps.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.SingleTimeSeries-Tuple{InfrastructureSystems.SingleTimeSeries, AbstractString}","page":"API","title":"InfrastructureSystems.SingleTimeSeries","text":"SingleTimeSeries(\n src::InfrastructureSystems.SingleTimeSeries,\n name::AbstractString;\n scaling_factor_multiplier\n) -> InfrastructureSystems.SingleTimeSeries\n\n\nConstruct SingleTimeSeries that shares the data from an existing instance.\n\nThis is useful in cases where you want a component to use the same time series data for two different attribtues.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.SingleTimeSeries-Tuple{InfrastructureSystems.SingleTimeSeries, TimeSeries.TimeArray}","page":"API","title":"InfrastructureSystems.SingleTimeSeries","text":"SingleTimeSeries(\n time_series::InfrastructureSystems.SingleTimeSeries,\n data::TimeSeries.TimeArray\n) -> Any\n\n\nCreates a new SingleTimeSeries from an existing instance and a subset of data.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.SingleTimeSeries-Tuple{String, Dates.Period, Dates.DateTime, Int64}","page":"API","title":"InfrastructureSystems.SingleTimeSeries","text":"SingleTimeSeries(\n name::String,\n resolution::Dates.Period,\n initial_time::Dates.DateTime,\n time_steps::Int64\n) -> InfrastructureSystems.SingleTimeSeries\n\n\nConstruct SingleTimeSeries after constructing a TimeArray from initial_time and time_steps.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.SingleTimeSeriesMetadata","page":"API","title":"InfrastructureSystems.SingleTimeSeriesMetadata","text":"mutable struct SingleTimeSeriesMetadata <: StaticTimeSeriesMetadata\n name::String\n resolution::Dates.Period\n initial_timestamp::Dates.DateTime\n time_series_uuid::UUIDs.UUID\n length::Int\n scaling_factor_multiplier::Union{Nothing, Function}\n features::Dict{String, Union{Bool, Int, String}}\n internal::InfrastructureSystemsInternal\nend\n\nA TimeSeries Data object in contigous form.\n\nArguments\n\nname::String: user-defined name\nresolution::Dates.Period:\ninitial_timestamp::Dates.DateTime: time series availability time\ntime_series_uuid::UUIDs.UUID: reference to time series data\nlength::Int: length of this time series\nscaling_factor_multiplier::Union{Nothing, Function}: (default: nothing) Applicable when the time series data are scaling factors. Called on the associated component to convert the values.\nfeatures::Dict{String, Union{Bool, Int, String}}: (default: Dict{String, Any}()) User-defined tags that differentiate multiple time series arrays that represent the same component attribute, such as different arrays for different scenarios or years.\ninternal::InfrastructureSystemsInternal:\n\n\n\n\n\n","category":"type"},{"location":"InfrastructureSystems/#InfrastructureSystems.StaticTimeSeries","page":"API","title":"InfrastructureSystems.StaticTimeSeries","text":"Supertype for static time series, which has one value per time point\n\nCurrent concrete subtypes are:\n\nSingleTimeSeries\n\nSee also: Forecast\n\n\n\n\n\n","category":"type"},{"location":"InfrastructureSystems/#InfrastructureSystems.StaticTimeSeriesCache-Union{Tuple{T}, Tuple{Type{T}, InfrastructureSystems.InfrastructureSystemsComponent, AbstractString}} where T<:InfrastructureSystems.StaticTimeSeries","page":"API","title":"InfrastructureSystems.StaticTimeSeriesCache","text":"Construct StaticTimeSeriesCache to automatically control caching of time series data. Maintains rows of data in memory based on cache_size_bytes.\n\nCall Base.iterate or get_time_series_array to retrieve data. Each iteration will return a TimeSeries.TimeArray of size 1.\n\nArguments\n\n::Type{T}: subtype of StaticTimeSeries\ncomponent::InfrastructureSystemsComponent: component\nname::AbstractString: time series name\ncache_size_bytes = TIME_SERIES_CACHE_SIZE_BYTES: maximum size of data to keep in memory\nignore_scaling_factors = false: controls whether to ignore scalingfactormultiplier in the time series instance\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.StaticTimeSeriesKey","page":"API","title":"InfrastructureSystems.StaticTimeSeriesKey","text":"A unique key to identify and retrieve a StaticTimeSeries\n\nSee: get_time_series_keys and get_time_series(::TimeSeriesOwners, ::TimeSeriesKey).\n\n\n\n\n\n","category":"type"},{"location":"InfrastructureSystems/#InfrastructureSystems.StructDefinition-Tuple{}","page":"API","title":"InfrastructureSystems.StructDefinition","text":"StructDefinition(\n;\n struct_name,\n fields,\n supertype,\n docstring,\n is_component\n)\n\n\nConstruct a StructDefinition for code auto-generation purposes.\n\nArguments\n\nstruct_name::AbstractString: Struct name\nfields::Vector{StructField}: Struct fields. Refer to StructField.\ndocstring::AbstractString: Struct docstring. Defaults to an empty string.\nsupertype::Union{String, DataType}: Struct supertype. Defaults to no supertype.\nis_component::Bool: Set to true for component types that will be attached to a system. Do not set to Default to true.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.StructField-Tuple{}","page":"API","title":"InfrastructureSystems.StructField","text":"StructField(\n;\n name,\n data_type,\n default,\n comment,\n needs_conversion,\n exclude_setter,\n valid_range,\n validation_action,\n null_value,\n internal_default\n)\n\n\nConstruct a StructField for code auto-generation purposes.\n\nArguments\n\nname::String: Field name\ndata_type::Union{DataType, String}: Field type\ndefault::Any: The generated constructors will define this as a default value.\ncomment::String: Include this comment above the field name. Defaults to empty string.\nneeds_conversion::Bool: Set to true if the getter and setter functions need to apply unit conversion. The type must implement get_value(::Component, ::Type) and set_value(::Component, ::Type) for this combination of component type and field type.\nexclude_setter::Bool: Do not generate a setter function for this field. Defaults to false.\nvalid_range::Union{Nothing, String, Dict}: Enables range validation when the component is added to a system. Define this as a Dict with \"min\" and \"max\" or as a String with the field name in the struct that defines this field's valid range and InfrastructureSystems will validate any value against that range. Use nothing if one doesn't apply, such as if there is no max limit.\nvalidation_action: Define this as \"error\" or \"warn\". If it is \"error\" then InfrastructureSystems will throw an exception if the validation code detects a problem. Otherwise, it will log a warning.\nnull_value::Any: Value to indicate the field is zero or empty, such as 0.0 for Float64. If all members in the struct define this field then a \"demo\" constructor will be generated. This allows entering val = MyType(nothing) in the REPL to see the layout of a struct without worrying about valid values.\ninternal_default: Set to true for non-user-facing fields like InfrastructureSystemsInternal that have default values.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.SupplementalAttribute","page":"API","title":"InfrastructureSystems.SupplementalAttribute","text":"Base type for structs that store supplemental attributes\n\nRequired interface functions for subtypes:\n\nget_internal()\n\nOptional interface functions:\n\nget_uuid()\n\nSubtypes may contain time series. Which requires\n\nsupportstimeseries(::SupplementalAttribute)\n\nAll subtypes must include an instance of ComponentUUIDs in order to track components attached to each attribute.\n\n\n\n\n\n","category":"type"},{"location":"InfrastructureSystems/#InfrastructureSystems.SupplementalAttributeAssociations-Tuple{}","page":"API","title":"InfrastructureSystems.SupplementalAttributeAssociations","text":"SupplementalAttributeAssociations(\n\n) -> InfrastructureSystems.SupplementalAttributeAssociations\n\n\nConstruct a new SupplementalAttributeAssociations with an in-memory database.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.SystemData","page":"API","title":"InfrastructureSystems.SystemData","text":"mutable struct SystemData <: InfrastructureSystemsType\n components::Components\n \"Masked components are attached to the system for overall management purposes but\n are not exposed in the standard library calls like [`get_components`](@ref).\n Examples are components in a subsystem.\"\n masked_components::Components\n validation_descriptors::Vector\n internal::InfrastructureSystemsInternal\nend\n\nContainer for system components and time series data\n\n\n\n\n\n","category":"type"},{"location":"InfrastructureSystems/#InfrastructureSystems.SystemData-Tuple{}","page":"API","title":"InfrastructureSystems.SystemData","text":"SystemData(\n;\n validation_descriptor_file,\n time_series_in_memory,\n time_series_directory,\n compression\n) -> InfrastructureSystems.SystemData\n\n\nConstruct SystemData to store components and time series data.\n\nArguments\n\nvalidation_descriptor_file = nothing: Optionally, a file defining component validation descriptors.\ntime_series_in_memory = false: Controls whether time series data is stored in memory or in a file.\ntime_series_directory = nothing: Controls what directory time series data is stored in. Default is the environment variable SIENNATIMESERIES_DIRECTORY or tempdir() if that isn't set.\ncompression = CompressionSettings(): Controls compression of time series data.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.TimeSeriesAssociation","page":"API","title":"InfrastructureSystems.TimeSeriesAssociation","text":"Defines an association between a time series owner (component or supplemental attribute) and the time series metadata.\n\nExamples\n\nassociation1 = TimeSeriesAssociation(component, time_series)\nassociation2 = TimeSeriesAssociation(component, time_series, scenario = \"high\")\n\n\n\n\n\n","category":"type"},{"location":"InfrastructureSystems/#InfrastructureSystems.TimeSeriesCounts","page":"API","title":"InfrastructureSystems.TimeSeriesCounts","text":"Provides counts of time series including attachments to components and supplemental attributes.\n\n\n\n\n\n","category":"type"},{"location":"InfrastructureSystems/#InfrastructureSystems.TimeSeriesData","page":"API","title":"InfrastructureSystems.TimeSeriesData","text":"Abstract type for time series stored in the system. Components store references to these through TimeSeriesMetadata values so that data can reside on storage media instead of memory.\n\n\n\n\n\n","category":"type"},{"location":"InfrastructureSystems/#InfrastructureSystems.TimeSeriesFileMetadata","page":"API","title":"InfrastructureSystems.TimeSeriesFileMetadata","text":"Describes how to construct time_series from raw time series data files.\n\n\n\n\n\n","category":"type"},{"location":"InfrastructureSystems/#InfrastructureSystems.TimeSeriesKey","page":"API","title":"InfrastructureSystems.TimeSeriesKey","text":"Supertype for keys that can be used to access a desired time series dataset\n\nConcrete subtypes:\n\nStaticTimeSeriesKey\nForecastKey\n\nRequired methods:\n\nget_name\nget_time_series_type\n\nThe default methods rely on the field names name and time_series_type.\n\n\n\n\n\n","category":"type"},{"location":"InfrastructureSystems/#InfrastructureSystems.TimeSeriesMetadata","page":"API","title":"InfrastructureSystems.TimeSeriesMetadata","text":"Abstract type for time_series that are stored in a system. Users never create them or get access to them. Stores references to TimeSeriesData.\n\n\n\n\n\n","category":"type"},{"location":"InfrastructureSystems/#InfrastructureSystems.TimeSeriesMetadataStore-Tuple{AbstractString}","page":"API","title":"InfrastructureSystems.TimeSeriesMetadataStore","text":"TimeSeriesMetadataStore(\n filename::AbstractString\n) -> InfrastructureSystems.TimeSeriesMetadataStore\n\n\nLoad a TimeSeriesMetadataStore from a saved database into an in-memory database.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.TimeSeriesMetadataStore-Tuple{}","page":"API","title":"InfrastructureSystems.TimeSeriesMetadataStore","text":"TimeSeriesMetadataStore(\n\n) -> InfrastructureSystems.TimeSeriesMetadataStore\n\n\nConstruct a new TimeSeriesMetadataStore with an in-memory database.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.TimeSeriesStorage","page":"API","title":"InfrastructureSystems.TimeSeriesStorage","text":"Abstract type for time series storage implementations.\n\nAll subtypes must implement:\n\nclear_time_series!\ndeserialize_time_series\nget_compression_settings\nget_num_time_series\nremove_time_series!\nserialize_time_series!\nBase.isempty\n\n\n\n\n\n","category":"type"},{"location":"InfrastructureSystems/#InfrastructureSystems.ValueCurve","page":"API","title":"InfrastructureSystems.ValueCurve","text":"Supertype that represents a unitless cost curve\n\nConcrete subtypes are:\n\nLinearCurve\nQuadraticCurve\nPiecewisePointCurve\nPiecewiseIncrementalCurve\nPiecewiseAverageCurve\n\n\n\n\n\n","category":"type"},{"location":"InfrastructureSystems/#Base.close-Tuple{InfrastructureSystems.MultiLogger}","page":"API","title":"Base.close","text":"close(logger::InfrastructureSystems.MultiLogger)\n\n\nEnsures that any file streams are flushed and closed.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#Base.convert-Tuple{Type{InfrastructureSystems.QuadraticFunctionData}, InfrastructureSystems.LinearFunctionData}","page":"API","title":"Base.convert","text":"convert(\n _::Type{InfrastructureSystems.QuadraticFunctionData},\n data::InfrastructureSystems.LinearFunctionData\n) -> InfrastructureSystems.QuadraticFunctionData\n\n\nLosslessly convert LinearFunctionData to QuadraticFunctionData\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#Base.flush-Tuple{InfrastructureSystems.MultiLogger}","page":"API","title":"Base.flush","text":"flush(logger::InfrastructureSystems.MultiLogger)\n\n\nFlush any file streams.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#Base.get-Union{Tuple{K}, Tuple{InfrastructureSystems.LazyDictFromIterator, K}} where K","page":"API","title":"Base.get","text":"get(\n container::InfrastructureSystems.LazyDictFromIterator,\n key\n) -> Any\n\n\nReturns the item mapped to key. If the key is already stored then it will be returned with a dictionary lookup. If it has not been stored then iterate over the list until it is found.\n\nReturns nothing if key is not found.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#Base.zero-Tuple{Type{InfrastructureSystems.FunctionData}}","page":"API","title":"Base.zero","text":"zero(\n _::Type{InfrastructureSystems.FunctionData}\n) -> InfrastructureSystems.LinearFunctionData\n\n\nGet a FunctionData representing the function f(x) = 0\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#Base.zero-Tuple{Union{InfrastructureSystems.LinearFunctionData, Type{InfrastructureSystems.LinearFunctionData}}}","page":"API","title":"Base.zero","text":"zero(\n _::Union{InfrastructureSystems.LinearFunctionData, Type{InfrastructureSystems.LinearFunctionData}}\n) -> InfrastructureSystems.LinearFunctionData\n\n\nGet a LinearFunctionData representing the function f(x) = 0\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#Base.zero-Tuple{Union{Type{InfrastructureSystems.AverageRateCurve}, InfrastructureSystems.AverageRateCurve}}","page":"API","title":"Base.zero","text":"zero(\n _::Union{Type{InfrastructureSystems.AverageRateCurve}, InfrastructureSystems.AverageRateCurve}\n) -> InfrastructureSystems.AverageRateCurve{InfrastructureSystems.LinearFunctionData}\n\n\nGet an AverageRateCurve representing f(x)/x = 0 with zero initial_input\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#Base.zero-Tuple{Union{Type{InfrastructureSystems.CostCurve}, InfrastructureSystems.CostCurve}}","page":"API","title":"Base.zero","text":"zero(\n _::Union{Type{InfrastructureSystems.CostCurve}, InfrastructureSystems.CostCurve}\n) -> InfrastructureSystems.CostCurve{LinearCurve}\n\n\nGet a CostCurve representing zero variable cost\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#Base.zero-Tuple{Union{Type{InfrastructureSystems.FuelCurve}, InfrastructureSystems.FuelCurve}}","page":"API","title":"Base.zero","text":"zero(\n _::Union{Type{InfrastructureSystems.FuelCurve}, InfrastructureSystems.FuelCurve}\n) -> InfrastructureSystems.FuelCurve{LinearCurve}\n\n\nGet a FuelCurve representing zero fuel usage and zero fuel cost\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#Base.zero-Tuple{Union{Type{InfrastructureSystems.IncrementalCurve}, InfrastructureSystems.IncrementalCurve}}","page":"API","title":"Base.zero","text":"zero(\n _::Union{Type{InfrastructureSystems.IncrementalCurve}, InfrastructureSystems.IncrementalCurve}\n) -> InfrastructureSystems.IncrementalCurve{InfrastructureSystems.LinearFunctionData}\n\n\nGet an IncrementalCurve representing f'(x) = 0 with zero initial_input\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#Base.zero-Tuple{Union{Type{InfrastructureSystems.InputOutputCurve}, InfrastructureSystems.InputOutputCurve}}","page":"API","title":"Base.zero","text":"zero(\n _::Union{Type{InfrastructureSystems.InputOutputCurve}, InfrastructureSystems.InputOutputCurve}\n) -> LinearCurve\n\n\nGet an InputOutputCurve representing f(x) = 0\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#Base.zero-Tuple{Union{Type{InfrastructureSystems.ValueCurve}, InfrastructureSystems.ValueCurve}}","page":"API","title":"Base.zero","text":"zero(\n _::Union{Type{InfrastructureSystems.ValueCurve}, InfrastructureSystems.ValueCurve}\n) -> LinearCurve\n\n\nGet a ValueCurve representing zero variable cost\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems._check_transform_single_time_series-Tuple{InfrastructureSystems.SystemData, Type{InfrastructureSystems.DeterministicSingleTimeSeries}, Dates.Period, Dates.Period}","page":"API","title":"InfrastructureSystems._check_transform_single_time_series","text":"_check_transform_single_time_series(\n data::InfrastructureSystems.SystemData,\n _::Type{InfrastructureSystems.DeterministicSingleTimeSeries},\n horizon::Dates.Period,\n interval::Dates.Period\n) -> Vector{Any}\n\n\nCheck that all existing SingleTimeSeries can be converted to DeterministicSingleTimeSeries with the given horizon and interval.\n\nThrow ConflictingInputsError if any time series cannot be converted.\n\nReturn a Vector of NamedTuple of component, time series metadata, and forecast parameters for all matches.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems._get_all_concrete_subtypes-Union{Tuple{T}, Tuple{Type{T}, Vector{DataType}}} where T","page":"API","title":"InfrastructureSystems._get_all_concrete_subtypes","text":"_get_all_concrete_subtypes(\n _::Type{T},\n sub_types::Vector{DataType}\n)\n\n\nRecursively builds a vector of subtypes.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems._validate-Union{Tuple{T}, Tuple{InfrastructureSystems.SystemData, T}} where T<:InfrastructureSystems.InfrastructureSystemsComponent","page":"API","title":"InfrastructureSystems._validate","text":"_validate(\n data::InfrastructureSystems.SystemData,\n component::InfrastructureSystems.InfrastructureSystemsComponent\n)\n\n\nChecks that the component exists in data and is the same object.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.add_association!-Tuple{InfrastructureSystems.SupplementalAttributeAssociations, InfrastructureSystems.InfrastructureSystemsComponent, InfrastructureSystems.SupplementalAttribute}","page":"API","title":"InfrastructureSystems.add_association!","text":"add_association!(\n associations::InfrastructureSystems.SupplementalAttributeAssociations,\n component::InfrastructureSystems.InfrastructureSystemsComponent,\n attribute::InfrastructureSystems.SupplementalAttribute\n)\n\n\nAdd a supplemental attribute association to the associations. The caller must check for duplicates.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.add_component!-Union{Tuple{T}, Tuple{InfrastructureSystems.Components, T}} where T<:InfrastructureSystems.InfrastructureSystemsComponent","page":"API","title":"InfrastructureSystems.add_component!","text":"add_component!(\n components::InfrastructureSystems.Components,\n component::InfrastructureSystems.InfrastructureSystemsComponent;\n kwargs...\n)\n\n\nAdd a component.\n\nThrows ArgumentError if the component's name is already stored for its concrete type.\n\nThrows InvalidRange if any of the component's field values are outside of defined valid range.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.add_component_to_subsystem!-Tuple{InfrastructureSystems.SystemData, AbstractString, InfrastructureSystems.InfrastructureSystemsComponent}","page":"API","title":"InfrastructureSystems.add_component_to_subsystem!","text":"add_component_to_subsystem!(\n data::InfrastructureSystems.SystemData,\n subsystem_name::AbstractString,\n component::InfrastructureSystems.InfrastructureSystemsComponent\n)\n\n\nAdd a component to a subsystem.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.add_metadata!-Tuple{InfrastructureSystems.TimeSeriesMetadataStore, Union{InfrastructureSystems.InfrastructureSystemsComponent, InfrastructureSystems.SupplementalAttribute}, InfrastructureSystems.TimeSeriesMetadata}","page":"API","title":"InfrastructureSystems.add_metadata!","text":"add_metadata!(\n store::InfrastructureSystems.TimeSeriesMetadataStore,\n owner::Union{InfrastructureSystems.InfrastructureSystemsComponent, InfrastructureSystems.SupplementalAttribute},\n metadata::InfrastructureSystems.TimeSeriesMetadata\n)\n\n\nAdd metadata to the store. The caller must check if there are duplicates.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.add_serialization_metadata!-Union{Tuple{T}, Tuple{Dict, Type{T}}} where T","page":"API","title":"InfrastructureSystems.add_serialization_metadata!","text":"add_serialization_metadata!(data::Dict, _::Type{T})\n\n\nAdd type information to the dictionary that can be used to deserialize the value.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.add_subsystem!-Tuple{InfrastructureSystems.SystemData, AbstractString}","page":"API","title":"InfrastructureSystems.add_subsystem!","text":"add_subsystem!(\n data::InfrastructureSystems.SystemData,\n subsystem_name::AbstractString\n)\n\n\nAdd a new subsystem to the system.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.add_time_series!-Tuple{InfrastructureSystems.SystemData, Any, InfrastructureSystems.TimeSeriesData}","page":"API","title":"InfrastructureSystems.add_time_series!","text":"add_time_series!(\n data::InfrastructureSystems.SystemData,\n components,\n time_series::InfrastructureSystems.TimeSeriesData;\n features...\n) -> InfrastructureSystems.TimeSeriesKey\n\n\nAdd the same time series data to multiple components.\n\nArguments\n\ndata::SystemData: SystemData\ncomponents: iterable of components that will store the same time series reference\ntime_series::TimeSeriesData: Any object of subtype TimeSeriesData\n\nThis is significantly more efficent than calling add_time_series! for each component individually with the same data because in this case, only one time series array is stored.\n\nThrows ArgumentError if a component is not stored in the system.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.add_time_series!-Tuple{InfrastructureSystems.SystemData, Union{InfrastructureSystems.InfrastructureSystemsComponent, InfrastructureSystems.SupplementalAttribute}, InfrastructureSystems.TimeSeriesData}","page":"API","title":"InfrastructureSystems.add_time_series!","text":"add_time_series!(\n data::InfrastructureSystems.SystemData,\n owner::Union{InfrastructureSystems.InfrastructureSystemsComponent, InfrastructureSystems.SupplementalAttribute},\n time_series::InfrastructureSystems.TimeSeriesData;\n features...\n) -> InfrastructureSystems.TimeSeriesKey\n\n\nAdd time series data to a component or supplemental attribute.\n\nArguments\n\ndata::SystemData: SystemData\nowner::InfrastructureSystemsComponent: will store the time series reference\ntime_series::TimeSeriesData: Any object of subtype TimeSeriesData\n\nThrows ArgumentError if the owner is not stored in the system.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.add_time_series_from_file_metadata!-Tuple{InfrastructureSystems.SystemData, Type{<:InfrastructureSystems.InfrastructureSystemsComponent}, Vector{InfrastructureSystems.TimeSeriesFileMetadata}}","page":"API","title":"InfrastructureSystems.add_time_series_from_file_metadata!","text":"add_time_series_from_file_metadata!(\n data::InfrastructureSystems.SystemData,\n component_type::Type{<:InfrastructureSystems.InfrastructureSystemsComponent},\n file_metadata::Vector{InfrastructureSystems.TimeSeriesFileMetadata};\n resolution\n) -> Vector{InfrastructureSystems.TimeSeriesKey}\n\n\nAdds time series data from a metadata file or metadata descriptors.\n\nArguments\n\ndata::SystemData: system\nfile_metadata::Vector{TimeSeriesFileMetadata}: metadata for time series\nresolution::DateTime.Period=nothing: skip time_series that don't match this resolution.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.add_time_series_from_file_metadata!-Union{Tuple{T}, Tuple{InfrastructureSystems.SystemData, Type{T}, AbstractString}} where T<:InfrastructureSystems.InfrastructureSystemsComponent","page":"API","title":"InfrastructureSystems.add_time_series_from_file_metadata!","text":"add_time_series_from_file_metadata!(\n data::InfrastructureSystems.SystemData,\n ::Type{T<:InfrastructureSystems.InfrastructureSystemsComponent},\n metadata_file::AbstractString;\n resolution\n) -> Vector{InfrastructureSystems.TimeSeriesKey}\n\n\nAdds time_series from a metadata file or metadata descriptors.\n\nArguments\n\ndata::SystemData: system\n::Type{T}: type of the component associated with time series data; may be abstract\nmetadata_file::AbstractString: metadata file for time series that includes an array of TimeSeriesFileMetadata instances or a vector.\nresolution::DateTime.Period=nothing: skip time_series that don't match this resolution.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.assign_new_uuid_internal!-Tuple{InfrastructureSystems.InfrastructureSystemsComponent}","page":"API","title":"InfrastructureSystems.assign_new_uuid_internal!","text":"assign_new_uuid_internal!(\n component::InfrastructureSystems.InfrastructureSystemsComponent\n)\n\n\nReturn an instance of ForecastParameters for the given inputs.\n\nThrows ConflictingInputsError if horizon and interval are incompatible with the metadata.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.assign_new_uuid_internal!-Tuple{InfrastructureSystems.InfrastructureSystemsType}","page":"API","title":"InfrastructureSystems.assign_new_uuid_internal!","text":"assign_new_uuid_internal!(\n obj::InfrastructureSystems.InfrastructureSystemsType\n)\n\n\nAssign a new UUID.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.backup_to_temp-Tuple{InfrastructureSystems.TimeSeriesMetadataStore}","page":"API","title":"InfrastructureSystems.backup_to_temp","text":"backup_to_temp(\n store::InfrastructureSystems.TimeSeriesMetadataStore\n) -> String\n\n\nBackup the database to a file on the temporary filesystem and return that filename.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.check_consistency-Tuple{InfrastructureSystems.TimeSeriesMetadataStore, Type{InfrastructureSystems.SingleTimeSeries}}","page":"API","title":"InfrastructureSystems.check_consistency","text":"check_consistency(\n store::InfrastructureSystems.TimeSeriesMetadataStore,\n _::Type{InfrastructureSystems.SingleTimeSeries}\n) -> Tuple{Any, Any}\n\n\nThrow InvalidValue if the SingleTimeSeries arrays have different initial times or lengths. Return the initial timestamp and length as a tuple.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.clear_components!-Tuple{InfrastructureSystems.Components}","page":"API","title":"InfrastructureSystems.clear_components!","text":"clear_components!(\n components::InfrastructureSystems.Components\n)\n\n\nRemoves all components from the system.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.clear_ext!-Tuple{InfrastructureSystems.InfrastructureSystemsInternal}","page":"API","title":"InfrastructureSystems.clear_ext!","text":"clear_ext!(\n obj::InfrastructureSystems.InfrastructureSystemsInternal\n)\n\n\nClear any value stored in ext.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.clear_metadata!-Tuple{InfrastructureSystems.TimeSeriesMetadataStore}","page":"API","title":"InfrastructureSystems.clear_metadata!","text":"clear_metadata!(\n store::InfrastructureSystems.TimeSeriesMetadataStore\n) -> SQLite.Query\n\n\nClear all time series metadata from the store.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.clear_supplemental_attributes!-Tuple{InfrastructureSystems.SupplementalAttributeManager}","page":"API","title":"InfrastructureSystems.clear_supplemental_attributes!","text":"clear_supplemental_attributes!(\n mgr::InfrastructureSystems.SupplementalAttributeManager\n)\n\n\nRemoves all supplemental_attributes from the system.\n\nIgnores whether attributes are attached to components.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.clear_supplemental_attributes!-Tuple{InfrastructureSystems.SystemData}","page":"API","title":"InfrastructureSystems.clear_supplemental_attributes!","text":"clear_supplemental_attributes!(\n data::InfrastructureSystems.SystemData\n)\n\n\nRemove all supplemental attributes.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.compare_over_fields-Union{Tuple{T}, Tuple{Any, Any, Any, T, T}} where T","page":"API","title":"InfrastructureSystems.compare_over_fields","text":"compare_over_fields(cmp_op, reduce_op, init, a, b) -> Any\n\n\nFor a and b, instances of the same concrete type, iterate over all the fields, compare a's value to b's using cmp_op, and reduce to one value using reduce_op with an initialization value of init.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.compare_values-Union{Tuple{U}, Tuple{T}, Tuple{Union{Nothing, Function}, T, U}} where {T, U}","page":"API","title":"InfrastructureSystems.compare_values","text":"compare_values(\n match_fn::Union{Nothing, Function},\n x,\n y;\n compare_uuids,\n exclude\n) -> Bool\n\n\nRecursively compares struct values. Prints all mismatched values to stdout.\n\nArguments\n\nmatch_fn: optional, a function used to determine whether two values match in the base case of the recursion. If nothing or not specified, the default implementation uses IS.isequivalent.\nx::T: First value\ny::U: Second value\ncompare_uuids::Bool = false: Compare any UUID in the object or composed objects.\n`exclude::Set{Symbol} = Set{Symbol}(): Fields to exclude from comparison. Passed on recursively and so applied per type.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.compute_sha256-Tuple{AbstractString}","page":"API","title":"InfrastructureSystems.compute_sha256","text":"compute_sha256(filename::AbstractString) -> String\n\n\nReturn the SHA 256 hash of a file.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.configure_logging-Tuple{}","page":"API","title":"InfrastructureSystems.configure_logging","text":"configure_logging(\n;\n console,\n console_stream,\n console_level,\n progress,\n file,\n filename,\n file_level,\n file_mode,\n tracker,\n set_global\n) -> InfrastructureSystems.MultiLogger\n\n\nCreates console and file loggers per caller specification and returns a MultiLogger.\n\nSuppress noisy events by specifying per-event values of maxlog = X and _suppression_period = Y where X is the max number of events that can occur in Y seconds. After the period ends, messages will no longer be suppressed. Note that if you don't specify _suppression_period then maxlog applies for the for the duration of your process (standard Julia logging behavior).\n\nNote: Use of log message suppression and the LogEventTracker are not thread-safe. Please contact the package developers if you need this functionality.\n\nNote: If logging to a file users must call Base.close() on the returned MultiLogger to ensure that all events get flushed.\n\nArguments\n\nconsole::Bool=true: create console logger\nconsole_stream::IOStream=stderr: stream for console logger\nconsole_level::Logging.LogLevel=Logging.Error: level for console messages\nprogress::Bool=true: enable progress logger\nfile::Bool=true: create file logger\nfilename::Union{Nothing, String}=log.txt: log file\nfile_level::Logging.LogLevel=Logging.Info: level for file messages\nfile_mode::String=w+: mode used when opening log file\ntracker::Union{LogEventTracker, Nothing}=LogEventTracker(): optionally track log events\nset_global::Bool=true: set the created logger as the global logger\n\nExample\n\nlogger = configure_logging(filename=\"mylog.txt\")\n@info \"hello world\"\n@info \"hello world\" maxlog = 5 _suppression_period = 10\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.copy_h5_file-Tuple{AbstractString, AbstractString}","page":"API","title":"InfrastructureSystems.copy_h5_file","text":"copy_h5_file(src::AbstractString, dst::AbstractString)\n\n\nCopies an HDF5 file to a new file. This should be used instead of a system call to copy because it won't copy unused space that results from deleting datasets.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.copy_time_series!-Tuple{Union{InfrastructureSystems.InfrastructureSystemsComponent, InfrastructureSystems.SupplementalAttribute}, Union{InfrastructureSystems.InfrastructureSystemsComponent, InfrastructureSystems.SupplementalAttribute}}","page":"API","title":"InfrastructureSystems.copy_time_series!","text":"copy_time_series!(\n dst::Union{InfrastructureSystems.InfrastructureSystemsComponent, InfrastructureSystems.SupplementalAttribute},\n src::Union{InfrastructureSystems.InfrastructureSystemsComponent, InfrastructureSystems.SupplementalAttribute};\n name_mapping,\n scaling_factor_multiplier_mapping\n)\n\n\nEfficiently add all time_series in one component to another by copying the underlying references.\n\nArguments\n\ndst::TimeSeriesOwners: Destination owner\nsrc::TimeSeriesOwners: Source owner\nname_mapping::Dict = nothing: Optionally map src names to different dst names. If provided and src has a timeseries with a name not present in namemapping, that timeseries will not copied. If namemapping is nothing then all time_series will be copied with src's names.\nscaling_factor_multiplier_mapping::Dict = nothing: Optionally map src multipliers to different dst multipliers. If provided and src has a timeseries with a multiplier not present in scalingfactormultipliermapping, that timeseries will not copied. If scalingfactormultipliermapping is nothing then all time_series will be copied with src's multipliers.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.deserialize-Union{Tuple{T}, Tuple{Type{T}, Dict}} where T<:InfrastructureSystems.InfrastructureSystemsType","page":"API","title":"InfrastructureSystems.deserialize","text":"deserialize(\n _::Type{T<:InfrastructureSystems.InfrastructureSystemsType},\n data::Dict\n) -> InfrastructureSystems.ComponentUUIDs\n\n\nDeserialize an object from standard types stored in non-Julia formats, such as JSON, into Julia types.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.double_equals_from_fields-Union{Tuple{T}, Tuple{T, T}} where T","page":"API","title":"InfrastructureSystems.double_equals_from_fields","text":"double_equals_from_fields(a, b) -> Any\n\n\nCompute the conjunction of the == values of all the fields in a and b\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.drop_table-Tuple{InfrastructureSystems.SupplementalAttributeAssociations}","page":"API","title":"InfrastructureSystems.drop_table","text":"drop_table(\n associations::InfrastructureSystems.SupplementalAttributeAssociations\n)\n\n\nDrop the supplemental attribute associations table.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.empty_group_levels!-Tuple{InfrastructureSystems.MultiLogger}","page":"API","title":"InfrastructureSystems.empty_group_levels!","text":"empty_group_levels!(\n logger::InfrastructureSystems.MultiLogger\n)\n\n\nEmpty the minimum log levels stored for each group.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.execute-Tuple{SQLite.DB, AbstractString, Union{Nothing, Vector}, Symbol}","page":"API","title":"InfrastructureSystems.execute","text":"execute(\n db::SQLite.DB,\n query::AbstractString,\n params::Union{Nothing, Vector},\n log_group::Symbol\n) -> SQLite.Query\n\n\nWrapper around SQLite.DBInterface.execute to provide log messages.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.execute_count-Tuple{SQLite.DB, AbstractString, Union{Nothing, Vector}, Symbol}","page":"API","title":"InfrastructureSystems.execute_count","text":"execute_count(\n db::SQLite.DB,\n query::AbstractString,\n params::Union{Nothing, Vector},\n log_group::Symbol\n) -> Any\n\n\nRun a query to find a count. The query must produce a column called count with one row.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.from-Tuple{InfrastructureSystems.SingleTimeSeries, Any}","page":"API","title":"InfrastructureSystems.from","text":"from(\n time_series::InfrastructureSystems.SingleTimeSeries,\n timestamp\n) -> InfrastructureSystems.SingleTimeSeries\n\n\nReturn a time_series truncated starting with timestamp.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.from_file-Tuple{Type{InfrastructureSystems.Hdf5TimeSeriesStorage}, AbstractString}","page":"API","title":"InfrastructureSystems.from_file","text":"from_file(\n ::Type{InfrastructureSystems.Hdf5TimeSeriesStorage},\n filename::AbstractString;\n read_only,\n directory\n) -> InfrastructureSystems.Hdf5TimeSeriesStorage\n\n\nConstructs Hdf5TimeSeriesStorage from an existing file.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.from_h5_file-Tuple{Type{InfrastructureSystems.TimeSeriesMetadataStore}, AbstractString, Any}","page":"API","title":"InfrastructureSystems.from_h5_file","text":"from_h5_file(\n _::Type{InfrastructureSystems.TimeSeriesMetadataStore},\n src::AbstractString,\n directory\n) -> InfrastructureSystems.TimeSeriesMetadataStore\n\n\nLoad a TimeSeriesMetadataStore from an HDF5 file into an in-memory database.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.from_json-Union{Tuple{T}, Tuple{Type{T}, String}} where T<:InfrastructureSystems.InfrastructureSystemsType","page":"API","title":"InfrastructureSystems.from_json","text":"from_json(\n _::Type{T<:InfrastructureSystems.InfrastructureSystemsType},\n filename::String\n) -> Any\n\n\nDeserializes a InfrastructureSystemsType from a JSON filename.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.from_json-Union{Tuple{T}, Tuple{Union{IO, String}, Type{T}}} where T<:InfrastructureSystems.InfrastructureSystemsType","page":"API","title":"InfrastructureSystems.from_json","text":"from_json(\n io::Union{IO, String},\n _::Type{T<:InfrastructureSystems.InfrastructureSystemsType}\n) -> InfrastructureSystems.TestComponent\n\n\nDeserializes a InfrastructureSystemsType from String or IO.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.generate_struct_file-Tuple{InfrastructureSystems.StructDefinition}","page":"API","title":"InfrastructureSystems.generate_struct_file","text":"generate_struct_file(\n definition::InfrastructureSystems.StructDefinition;\n filename,\n output_directory\n)\n\n\nGenerate a Julia source code file for one struct from a StructDefinition.\n\nRefer to StructDefinition and StructField for descriptions of the available fields.\n\nArguments\n\ndefinition::StructDefinition: Defines the struct and all fields.\nfilename::AbstractString: Add the struct definition to this JSON file. Defaults to src/descriptors/structs.json\noutput_directory::AbstractString: Generate the files in this directory. Defaults to src/generated\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.generate_struct_files-Tuple{Any}","page":"API","title":"InfrastructureSystems.generate_struct_files","text":"generate_struct_files(\n definitions;\n filename,\n output_directory\n)\n\n\nGenerate Julia source code files for multiple structs from a iterable of StructDefinition instances.\n\nRefer to StructDefinition and StructField for descriptions of the available fields.\n\nArguments\n\ndefinitions: Defines the structs and all fields.\nfilename::AbstractString: Add the struct definition to this JSON file. Defaults to src/descriptors/power_system_structs.json\noutput_directory::AbstractString: Generate the files in this directory. Defaults to src/generated\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_abstract_subtypes-Union{Tuple{Type{T}}, Tuple{T}} where T","page":"API","title":"InfrastructureSystems.get_abstract_subtypes","text":"get_abstract_subtypes(_::Type{T}) -> Vector\n\n\nReturns an array of abstract types that are direct subtypes of T.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_all_concrete_subtypes-Union{Tuple{Type{T}}, Tuple{T}} where T","page":"API","title":"InfrastructureSystems.get_all_concrete_subtypes","text":"get_all_concrete_subtypes(_::Type{T}) -> Any\n\n\nReturns an array of all concrete subtypes of T. Caches the values for faster lookup on repeated calls.\n\nNote that this does not find parameterized types. It will also not find types dynamically added after the first call of given type.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_assigned_subsystems-Tuple{InfrastructureSystems.SystemData, InfrastructureSystems.InfrastructureSystemsComponent}","page":"API","title":"InfrastructureSystems.get_assigned_subsystems","text":"get_assigned_subsystems(\n data::InfrastructureSystems.SystemData,\n component::InfrastructureSystems.InfrastructureSystemsComponent\n) -> Vector\n\n\nReturn a Vector of subsystem names that contain the component.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_attribute_counts_by_type-Tuple{InfrastructureSystems.SupplementalAttributeAssociations}","page":"API","title":"InfrastructureSystems.get_attribute_counts_by_type","text":"get_attribute_counts_by_type(\n associations::InfrastructureSystems.SupplementalAttributeAssociations\n) -> Vector\n\n\nReturn a Vector of OrderedDict of stored time series counts by type.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_attribute_summary_table-Tuple{InfrastructureSystems.SupplementalAttributeAssociations}","page":"API","title":"InfrastructureSystems.get_attribute_summary_table","text":"get_attribute_summary_table(\n associations::InfrastructureSystems.SupplementalAttributeAssociations\n) -> DataFrames.DataFrame\n\n\nReturn a DataFrame with the number of supplemental attributes by type for components.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_average_rates-Tuple{PiecewiseAverageCurve}","page":"API","title":"InfrastructureSystems.get_average_rates","text":"get_average_rates(\n vc::PiecewiseAverageCurve\n) -> Vector{Float64}\n\n\nGet the average rates that define the PiecewiseAverageCurve\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_component-Union{Tuple{T}, Tuple{Type{T}, InfrastructureSystems.Components, AbstractString}} where T<:InfrastructureSystems.InfrastructureSystemsComponent","page":"API","title":"InfrastructureSystems.get_component","text":"get_component(\n _::Type{T<:InfrastructureSystems.InfrastructureSystemsComponent},\n components::InfrastructureSystems.Components,\n name::AbstractString\n) -> Union{Nothing, InfrastructureSystems.InfrastructureSystemsComponent}\n\n\nGet the component of type T with name. Returns nothing if no component matches. If T is an abstract type then the names of components across all subtypes of T must be unique.\n\nSee get_components_by_name for abstract types with non-unique names across subtypes.\n\nThrows ArgumentError if T is not a concrete type and there is more than one component with requested name\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_components-Union{Tuple{T}, Tuple{Type{T}, InfrastructureSystems.Components}} where T<:InfrastructureSystems.InfrastructureSystemsComponent","page":"API","title":"InfrastructureSystems.get_components","text":"get_components(\n ::Type{T<:InfrastructureSystems.InfrastructureSystemsComponent},\n components::InfrastructureSystems.Components;\n component_uuids\n) -> InfrastructureSystems.FlattenIteratorWrapper{T, I} where {T<:InfrastructureSystems.InfrastructureSystemsComponent, I<:(Vector)}\n\n\nReturns an iterator of components. T can be concrete or abstract. Call collect on the result if an array is desired.\n\nArguments\n\nT: component type\ncomponents::Components: Components of the system\nfilter_func::Union{Nothing, Function} = nothing: Optional function that accepts a component of type T and returns a Bool. Apply this function to each component and only return components where the result is true.\n\nSee also: iterate_components\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_components_by_name-Union{Tuple{T}, Tuple{Type{T}, InfrastructureSystems.Components, AbstractString}} where T<:InfrastructureSystems.InfrastructureSystemsComponent","page":"API","title":"InfrastructureSystems.get_components_by_name","text":"get_components_by_name(\n _::Type{T<:InfrastructureSystems.InfrastructureSystemsComponent},\n components::InfrastructureSystems.Components,\n name::AbstractString\n) -> Vector{<:InfrastructureSystems.InfrastructureSystemsComponent}\n\n\nGet the components of abstract type T with name. Note that InfrastructureSystems enforces unique names on each concrete type but not across concrete types.\n\nSee get_component if the concrete type is known.\n\nThrows ArgumentError if T is not an abstract type.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_concrete_subtypes-Union{Tuple{Type{T}}, Tuple{T}} where T","page":"API","title":"InfrastructureSystems.get_concrete_subtypes","text":"get_concrete_subtypes(_::Type{T}) -> Vector\n\n\nReturns an array of concrete types that are direct subtypes of T.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_constant_term-Tuple{LinearCurve}","page":"API","title":"InfrastructureSystems.get_constant_term","text":"get_constant_term(vc::LinearCurve) -> Float64\n\n\nGet the constant term (i.e., intercept) of the LinearCurve\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_constant_term-Tuple{QuadraticCurve}","page":"API","title":"InfrastructureSystems.get_constant_term","text":"get_constant_term(vc::QuadraticCurve) -> Float64\n\n\nGet the constant term of the QuadraticCurve\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_count-Tuple{InfrastructureSystems.DeterministicMetadata}","page":"API","title":"InfrastructureSystems.get_count","text":"get_count(\n value::InfrastructureSystems.DeterministicMetadata\n) -> Int64\n\n\nGet DeterministicMetadata count.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_count-Tuple{InfrastructureSystems.DeterministicSingleTimeSeries}","page":"API","title":"InfrastructureSystems.get_count","text":"get_count(\n value::InfrastructureSystems.DeterministicSingleTimeSeries\n) -> Int64\n\n\nGet DeterministicSingleTimeSeries count.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_count-Tuple{InfrastructureSystems.ProbabilisticMetadata}","page":"API","title":"InfrastructureSystems.get_count","text":"get_count(\n value::InfrastructureSystems.ProbabilisticMetadata\n) -> Int64\n\n\nGet ProbabilisticMetadata count.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_count-Tuple{InfrastructureSystems.ScenariosMetadata}","page":"API","title":"InfrastructureSystems.get_count","text":"get_count(\n value::InfrastructureSystems.ScenariosMetadata\n) -> Int64\n\n\nGet ScenariosMetadata count.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_data-Tuple{InfrastructureSystems.Deterministic}","page":"API","title":"InfrastructureSystems.get_data","text":"get_data(\n value::InfrastructureSystems.Deterministic\n) -> DataStructures.SortedDict\n\n\nGet Deterministic data.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_data-Tuple{InfrastructureSystems.Probabilistic}","page":"API","title":"InfrastructureSystems.get_data","text":"get_data(\n value::InfrastructureSystems.Probabilistic\n) -> DataStructures.SortedDict\n\n\nGet Probabilistic data.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_data-Tuple{InfrastructureSystems.Scenarios}","page":"API","title":"InfrastructureSystems.get_data","text":"get_data(\n value::InfrastructureSystems.Scenarios\n) -> DataStructures.SortedDict\n\n\nGet Scenarios data.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_data-Tuple{InfrastructureSystems.SingleTimeSeries}","page":"API","title":"InfrastructureSystems.get_data","text":"get_data(\n value::InfrastructureSystems.SingleTimeSeries\n) -> TimeSeries.TimeArray\n\n\nGet SingleTimeSeries data.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_data_type-Tuple{InfrastructureSystems.TimeSeriesData}","page":"API","title":"InfrastructureSystems.get_data_type","text":"get_data_type(\n ts::InfrastructureSystems.TimeSeriesData\n) -> Any\n\n\nReturn a String for the data type of the forecast data, this implementation avoids the use of eval on arbitrary code stored in HDF dataset.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_ext-Tuple{InfrastructureSystems.InfrastructureSystemsInternal}","page":"API","title":"InfrastructureSystems.get_ext","text":"get_ext(\n obj::InfrastructureSystems.InfrastructureSystemsInternal\n) -> Union{Nothing, Dict{String, Any}}\n\n\nReturn a user-modifiable dictionary to store extra information.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_features-Tuple{InfrastructureSystems.DeterministicMetadata}","page":"API","title":"InfrastructureSystems.get_features","text":"get_features(\n value::InfrastructureSystems.DeterministicMetadata\n) -> Dict{String, Union{Bool, Int64, String}}\n\n\nGet DeterministicMetadata features.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_features-Tuple{InfrastructureSystems.ProbabilisticMetadata}","page":"API","title":"InfrastructureSystems.get_features","text":"get_features(\n value::InfrastructureSystems.ProbabilisticMetadata\n) -> Dict{String, Union{Bool, Int64, String}}\n\n\nGet ProbabilisticMetadata features.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_features-Tuple{InfrastructureSystems.ScenariosMetadata}","page":"API","title":"InfrastructureSystems.get_features","text":"get_features(\n value::InfrastructureSystems.ScenariosMetadata\n) -> Dict{String, Union{Bool, Int64, String}}\n\n\nGet ScenariosMetadata features.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_features-Tuple{InfrastructureSystems.SingleTimeSeriesMetadata}","page":"API","title":"InfrastructureSystems.get_features","text":"get_features(\n value::InfrastructureSystems.SingleTimeSeriesMetadata\n) -> Dict{String, Union{Bool, Int64, String}}\n\n\nGet SingleTimeSeriesMetadata features.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_fuel_cost-Tuple{InfrastructureSystems.FuelCurve}","page":"API","title":"InfrastructureSystems.get_fuel_cost","text":"get_fuel_cost(\n cost::InfrastructureSystems.FuelCurve\n) -> Union{Float64, InfrastructureSystems.TimeSeriesKey}\n\n\nGet the fuel cost or the name of the fuel cost time series\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_function_data-Tuple{InfrastructureSystems.ProductionVariableCostCurve}","page":"API","title":"InfrastructureSystems.get_function_data","text":"get_function_data(\n cost::InfrastructureSystems.ProductionVariableCostCurve\n) -> Any\n\n\nGet the FunctionData representation of this ProductionVariableCostCurve's ValueCurve\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_function_data-Tuple{InfrastructureSystems.ValueCurve}","page":"API","title":"InfrastructureSystems.get_function_data","text":"get_function_data(\n curve::InfrastructureSystems.ValueCurve\n) -> Any\n\n\nGet the underlying FunctionData representation of this ValueCurve\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_group_level-Tuple{InfrastructureSystems.MultiLogger, Symbol}","page":"API","title":"InfrastructureSystems.get_group_level","text":"get_group_level(\n logger::InfrastructureSystems.MultiLogger,\n group::Symbol\n) -> Union{Nothing, Base.CoreLogging.LogLevel}\n\n\nReturn the minimum logging level for a group or nothing if group is not stored.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_group_levels-Tuple{InfrastructureSystems.MultiLogger}","page":"API","title":"InfrastructureSystems.get_group_levels","text":"get_group_levels(\n logger::InfrastructureSystems.MultiLogger\n) -> Dict{Symbol, Base.CoreLogging.LogLevel}\n\n\nReturn the minimum logging levels for groups that have been stored.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_horizon-Tuple{InfrastructureSystems.DeterministicMetadata}","page":"API","title":"InfrastructureSystems.get_horizon","text":"get_horizon(\n value::InfrastructureSystems.DeterministicMetadata\n) -> Dates.Period\n\n\nGet DeterministicMetadata horizon.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_horizon-Tuple{InfrastructureSystems.DeterministicSingleTimeSeries}","page":"API","title":"InfrastructureSystems.get_horizon","text":"get_horizon(\n value::InfrastructureSystems.DeterministicSingleTimeSeries\n) -> Dates.Period\n\n\nGet DeterministicSingleTimeSeries horizon.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_horizon-Tuple{InfrastructureSystems.ProbabilisticMetadata}","page":"API","title":"InfrastructureSystems.get_horizon","text":"get_horizon(\n value::InfrastructureSystems.ProbabilisticMetadata\n) -> Dates.Period\n\n\nGet ProbabilisticMetadata horizon.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_horizon-Tuple{InfrastructureSystems.ScenariosMetadata}","page":"API","title":"InfrastructureSystems.get_horizon","text":"get_horizon(\n value::InfrastructureSystems.ScenariosMetadata\n) -> Dates.Period\n\n\nGet ScenariosMetadata horizon.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_initial_input-Tuple{InfrastructureSystems.ProductionVariableCostCurve}","page":"API","title":"InfrastructureSystems.get_initial_input","text":"get_initial_input(\n cost::InfrastructureSystems.ProductionVariableCostCurve\n) -> Union{Nothing, Float64}\n\n\nGet the initial_input field of this ProductionVariableCostCurve's ValueCurve (not defined for input-output data)\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_initial_input-Tuple{Union{InfrastructureSystems.AverageRateCurve, InfrastructureSystems.IncrementalCurve}}","page":"API","title":"InfrastructureSystems.get_initial_input","text":"get_initial_input(\n curve::Union{InfrastructureSystems.AverageRateCurve, InfrastructureSystems.IncrementalCurve}\n) -> Union{Nothing, Float64}\n\n\nGet the initial_input field of this ValueCurve (not defined for InputOutputCurve)\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_initial_times-Tuple{InfrastructureSystems.Forecast}","page":"API","title":"InfrastructureSystems.get_initial_times","text":"get_initial_times(\n f::InfrastructureSystems.Forecast\n) -> DataStructures.SDMKeyIteration{T} where T<:DataStructures.SortedDict\n\n\nReturn the initial times in the forecast.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_initial_timestamp-Tuple{InfrastructureSystems.DeterministicMetadata}","page":"API","title":"InfrastructureSystems.get_initial_timestamp","text":"get_initial_timestamp(\n value::InfrastructureSystems.DeterministicMetadata\n) -> Dates.DateTime\n\n\nGet DeterministicMetadata initial_timestamp.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_initial_timestamp-Tuple{InfrastructureSystems.DeterministicSingleTimeSeries}","page":"API","title":"InfrastructureSystems.get_initial_timestamp","text":"get_initial_timestamp(\n value::InfrastructureSystems.DeterministicSingleTimeSeries\n) -> Dates.DateTime\n\n\nGet DeterministicSingleTimeSeries initial_timestamp.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_initial_timestamp-Tuple{InfrastructureSystems.ProbabilisticMetadata}","page":"API","title":"InfrastructureSystems.get_initial_timestamp","text":"get_initial_timestamp(\n value::InfrastructureSystems.ProbabilisticMetadata\n) -> Dates.DateTime\n\n\nGet ProbabilisticMetadata initial_timestamp.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_initial_timestamp-Tuple{InfrastructureSystems.ScenariosMetadata}","page":"API","title":"InfrastructureSystems.get_initial_timestamp","text":"get_initial_timestamp(\n value::InfrastructureSystems.ScenariosMetadata\n) -> Dates.DateTime\n\n\nGet ScenariosMetadata initial_timestamp.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_initial_timestamp-Tuple{InfrastructureSystems.SingleTimeSeriesMetadata}","page":"API","title":"InfrastructureSystems.get_initial_timestamp","text":"get_initial_timestamp(\n value::InfrastructureSystems.SingleTimeSeriesMetadata\n) -> Dates.DateTime\n\n\nGet SingleTimeSeriesMetadata initial_timestamp.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_input_at_zero-Tuple{InfrastructureSystems.ValueCurve}","page":"API","title":"InfrastructureSystems.get_input_at_zero","text":"get_input_at_zero(\n curve::InfrastructureSystems.ValueCurve\n) -> Any\n\n\nGet the input_at_zero field of this ValueCurve\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_internal-Tuple{InfrastructureSystems.DeterministicMetadata}","page":"API","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::InfrastructureSystems.DeterministicMetadata\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet DeterministicMetadata internal.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_internal-Tuple{InfrastructureSystems.Deterministic}","page":"API","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::InfrastructureSystems.Deterministic\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet Deterministic internal.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_internal-Tuple{InfrastructureSystems.ProbabilisticMetadata}","page":"API","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::InfrastructureSystems.ProbabilisticMetadata\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet ProbabilisticMetadata internal.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_internal-Tuple{InfrastructureSystems.Probabilistic}","page":"API","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::InfrastructureSystems.Probabilistic\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet Probabilistic internal.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_internal-Tuple{InfrastructureSystems.ScenariosMetadata}","page":"API","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::InfrastructureSystems.ScenariosMetadata\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet ScenariosMetadata internal.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_internal-Tuple{InfrastructureSystems.Scenarios}","page":"API","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::InfrastructureSystems.Scenarios\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet Scenarios internal.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_internal-Tuple{InfrastructureSystems.SingleTimeSeriesMetadata}","page":"API","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::InfrastructureSystems.SingleTimeSeriesMetadata\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet SingleTimeSeriesMetadata internal.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_internal-Tuple{InfrastructureSystems.SingleTimeSeries}","page":"API","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::InfrastructureSystems.SingleTimeSeries\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet SingleTimeSeries internal.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_interval-Tuple{InfrastructureSystems.DeterministicMetadata}","page":"API","title":"InfrastructureSystems.get_interval","text":"get_interval(\n value::InfrastructureSystems.DeterministicMetadata\n) -> Dates.Period\n\n\nGet DeterministicMetadata interval.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_interval-Tuple{InfrastructureSystems.DeterministicSingleTimeSeries}","page":"API","title":"InfrastructureSystems.get_interval","text":"get_interval(\n value::InfrastructureSystems.DeterministicSingleTimeSeries\n) -> Dates.Period\n\n\nGet DeterministicSingleTimeSeries interval.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_interval-Tuple{InfrastructureSystems.ProbabilisticMetadata}","page":"API","title":"InfrastructureSystems.get_interval","text":"get_interval(\n value::InfrastructureSystems.ProbabilisticMetadata\n) -> Dates.Period\n\n\nGet ProbabilisticMetadata interval.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_interval-Tuple{InfrastructureSystems.ScenariosMetadata}","page":"API","title":"InfrastructureSystems.get_interval","text":"get_interval(\n value::InfrastructureSystems.ScenariosMetadata\n) -> Dates.Period\n\n\nGet ScenariosMetadata interval.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_length-Tuple{InfrastructureSystems.SingleTimeSeriesMetadata}","page":"API","title":"InfrastructureSystems.get_length","text":"get_length(\n value::InfrastructureSystems.SingleTimeSeriesMetadata\n) -> Int64\n\n\nGet SingleTimeSeriesMetadata length.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_log_events-Tuple{InfrastructureSystems.LogEventTracker, Base.CoreLogging.LogLevel}","page":"API","title":"InfrastructureSystems.get_log_events","text":"get_log_events(\n tracker::InfrastructureSystems.LogEventTracker,\n level::Base.CoreLogging.LogLevel\n) -> Union{Base.ValueIterator{Dict{Symbol, InfrastructureSystems.LogEvent}}, Vector{Any}}\n\n\nReturns an iterable of log events for a level.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_metadata-Tuple{InfrastructureSystems.TimeSeriesMetadataStore, Union{InfrastructureSystems.InfrastructureSystemsComponent, InfrastructureSystems.SupplementalAttribute}, Type{<:InfrastructureSystems.TimeSeriesData}, String}","page":"API","title":"InfrastructureSystems.get_metadata","text":"get_metadata(\n store::InfrastructureSystems.TimeSeriesMetadataStore,\n owner::Union{InfrastructureSystems.InfrastructureSystemsComponent, InfrastructureSystems.SupplementalAttribute},\n time_series_type::Type{<:InfrastructureSystems.TimeSeriesData},\n name::String;\n features...\n) -> Any\n\n\nReturn the metadata matching the inputs. Throw an exception if there is more than one matching input.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_name-Tuple{InfrastructureSystems.DeterministicMetadata}","page":"API","title":"InfrastructureSystems.get_name","text":"get_name(\n value::InfrastructureSystems.DeterministicMetadata\n) -> String\n\n\nGet DeterministicMetadata name.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_name-Tuple{InfrastructureSystems.Deterministic}","page":"API","title":"InfrastructureSystems.get_name","text":"get_name(\n value::InfrastructureSystems.Deterministic\n) -> String\n\n\nGet Deterministic name.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_name-Tuple{InfrastructureSystems.ProbabilisticMetadata}","page":"API","title":"InfrastructureSystems.get_name","text":"get_name(\n value::InfrastructureSystems.ProbabilisticMetadata\n) -> String\n\n\nGet ProbabilisticMetadata name.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_name-Tuple{InfrastructureSystems.Probabilistic}","page":"API","title":"InfrastructureSystems.get_name","text":"get_name(\n value::InfrastructureSystems.Probabilistic\n) -> String\n\n\nGet Probabilistic name.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_name-Tuple{InfrastructureSystems.ScenariosMetadata}","page":"API","title":"InfrastructureSystems.get_name","text":"get_name(\n value::InfrastructureSystems.ScenariosMetadata\n) -> String\n\n\nGet ScenariosMetadata name.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_name-Tuple{InfrastructureSystems.Scenarios}","page":"API","title":"InfrastructureSystems.get_name","text":"get_name(value::InfrastructureSystems.Scenarios) -> String\n\n\nGet Scenarios name.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_name-Tuple{InfrastructureSystems.SingleTimeSeriesMetadata}","page":"API","title":"InfrastructureSystems.get_name","text":"get_name(\n value::InfrastructureSystems.SingleTimeSeriesMetadata\n) -> String\n\n\nGet SingleTimeSeriesMetadata name.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_name-Tuple{InfrastructureSystems.SingleTimeSeries}","page":"API","title":"InfrastructureSystems.get_name","text":"get_name(\n value::InfrastructureSystems.SingleTimeSeries\n) -> String\n\n\nGet SingleTimeSeries name.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_next_time-Tuple{InfrastructureSystems.TimeSeriesCache}","page":"API","title":"InfrastructureSystems.get_next_time","text":"get_next_time(\n cache::InfrastructureSystems.TimeSeriesCache\n) -> Any\n\n\nReturn the timestamp for the next read with get_next_time_series_array!.\n\nReturn nothing if all data has been read.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_next_time_series_array!-Tuple{InfrastructureSystems.TimeSeriesCache}","page":"API","title":"InfrastructureSystems.get_next_time_series_array!","text":"get_next_time_series_array!(\n cache::InfrastructureSystems.TimeSeriesCache\n) -> Any\n\n\nReturn the next TimeSeries.TimeArray.\n\nReturns nothing when all data has been read. Call reset! to restart. Call get_next_time to check the start time.\n\nReads from storage if the data is not already in cache.\n\nArguments\n\ncache::StaticTimeSeriesCache: cached instance\n\nExamples\n\ncache = ForecastCache(Deterministic, component, \"max_active_power\")\nwindow1 = get_next_time_series_array!(cache)\nwindow2 = get_next_time_series_array!(cache)\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_num_attributes-Tuple{InfrastructureSystems.SupplementalAttributeAssociations}","page":"API","title":"InfrastructureSystems.get_num_attributes","text":"get_num_attributes(\n associations::InfrastructureSystems.SupplementalAttributeAssociations\n) -> Any\n\n\nReturn the number of supplemental attributes.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_num_components_with_attributes-Tuple{InfrastructureSystems.SupplementalAttributeAssociations}","page":"API","title":"InfrastructureSystems.get_num_components_with_attributes","text":"get_num_components_with_attributes(\n associations::InfrastructureSystems.SupplementalAttributeAssociations\n) -> Any\n\n\nReturn the number of components with supplemental attributes.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_num_steps-Union{Tuple{T}, Tuple{Type{T}, CSV.File, AbstractArray}} where T<:InfrastructureSystems.TimeSeriesFileFormat","page":"API","title":"InfrastructureSystems.get_num_steps","text":"get_num_steps(\n _::Type{T<:InfrastructureSystems.TimeSeriesFileFormat},\n file::CSV.File,\n period::AbstractArray\n) -> Any\n\n\nReturn the number of steps specified by the period in the file.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_num_steps-Union{Tuple{T}, Tuple{Type{T}, CSV.File, AbstractArray}} where T<:InfrastructureSystems.TimeSeriesFormatPeriodAsHeader","page":"API","title":"InfrastructureSystems.get_num_steps","text":"get_num_steps(\n _::Type{T<:InfrastructureSystems.TimeSeriesFormatPeriodAsHeader},\n file::CSV.File,\n period::AbstractArray\n) -> Any\n\n\nReturn the number of steps specified by the period in the file.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_num_steps-Union{Tuple{T}, Tuple{Type{T}, CSV.File, AbstractArray}} where T<:Union{InfrastructureSystems.TimeSeriesFormatDateTimeAsColumn, InfrastructureSystems.TimeSeriesFormatPeriodAsColumn}","page":"API","title":"InfrastructureSystems.get_num_steps","text":"get_num_steps(\n _::Type{T<:Union{InfrastructureSystems.TimeSeriesFormatDateTimeAsColumn, InfrastructureSystems.TimeSeriesFormatPeriodAsColumn}},\n file::CSV.File,\n period::AbstractArray\n) -> Any\n\n\nReturn the number of steps specified by the period in the file.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_num_subsystems-Tuple{InfrastructureSystems.SystemData}","page":"API","title":"InfrastructureSystems.get_num_subsystems","text":"get_num_subsystems(\n data::InfrastructureSystems.SystemData\n) -> Int64\n\n\nReturn the number of subsystems in the system.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_num_time_series-Tuple{InfrastructureSystems.TimeSeriesMetadataStore}","page":"API","title":"InfrastructureSystems.get_num_time_series","text":"get_num_time_series(\n store::InfrastructureSystems.TimeSeriesMetadataStore\n) -> Any\n\n\nReturn the number of unique time series arrays.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_percentiles-Tuple{InfrastructureSystems.ProbabilisticMetadata}","page":"API","title":"InfrastructureSystems.get_percentiles","text":"get_percentiles(\n value::InfrastructureSystems.ProbabilisticMetadata\n) -> Vector{Float64}\n\n\nGet ProbabilisticMetadata percentiles.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_percentiles-Tuple{InfrastructureSystems.Probabilistic}","page":"API","title":"InfrastructureSystems.get_percentiles","text":"get_percentiles(\n value::InfrastructureSystems.Probabilistic\n) -> Vector{Float64}\n\n\nGet Probabilistic percentiles.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_period_columns-Tuple{Type{InfrastructureSystems.TimeSeriesFormatPeriodAsColumn}, CSV.File}","page":"API","title":"InfrastructureSystems.get_period_columns","text":"get_period_columns(\n _::Type{InfrastructureSystems.TimeSeriesFormatPeriodAsColumn},\n file::CSV.File\n) -> Vector{Symbol}\n\n\nReturn the column names that specify the Period.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_points-Tuple{InfrastructureSystems.PiecewiseLinearData}","page":"API","title":"InfrastructureSystems.get_points","text":"get_points(\n data::InfrastructureSystems.PiecewiseLinearData\n) -> Vector{@NamedTuple{x::Float64, y::Float64}}\n\n\nGet the points that define the piecewise data\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_points-Tuple{PiecewisePointCurve}","page":"API","title":"InfrastructureSystems.get_points","text":"get_points(\n vc::PiecewisePointCurve\n) -> Vector{@NamedTuple{x::Float64, y::Float64}}\n\n\nGet the points that define the PiecewisePointCurve\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_power_units-Tuple{InfrastructureSystems.ProductionVariableCostCurve}","page":"API","title":"InfrastructureSystems.get_power_units","text":"get_power_units(\n cost::InfrastructureSystems.ProductionVariableCostCurve\n) -> Any\n\n\nGet the units for the x-axis of the curve\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_proportional_term-Tuple{LinearCurve}","page":"API","title":"InfrastructureSystems.get_proportional_term","text":"get_proportional_term(vc::LinearCurve) -> Float64\n\n\nGet the proportional term (i.e., slope) of the LinearCurve\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_proportional_term-Tuple{QuadraticCurve}","page":"API","title":"InfrastructureSystems.get_proportional_term","text":"get_proportional_term(vc::QuadraticCurve) -> Float64\n\n\nGet the proportional (i.e., linear) term of the QuadraticCurve\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_quadratic_term-Tuple{QuadraticCurve}","page":"API","title":"InfrastructureSystems.get_quadratic_term","text":"get_quadratic_term(vc::QuadraticCurve) -> Float64\n\n\nGet the quadratic term of the QuadraticCurve\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_raw_data_type","page":"API","title":"InfrastructureSystems.get_raw_data_type","text":"Get from a subtype or instance of FunctionData the type of data its getrawdata method returns\n\n\n\n\n\n","category":"function"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_resolution-Tuple{InfrastructureSystems.DeterministicMetadata}","page":"API","title":"InfrastructureSystems.get_resolution","text":"get_resolution(\n value::InfrastructureSystems.DeterministicMetadata\n) -> Dates.Period\n\n\nGet DeterministicMetadata resolution.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_resolution-Tuple{InfrastructureSystems.Deterministic}","page":"API","title":"InfrastructureSystems.get_resolution","text":"get_resolution(\n value::InfrastructureSystems.Deterministic\n) -> Dates.Period\n\n\nGet Deterministic resolution.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_resolution-Tuple{InfrastructureSystems.ProbabilisticMetadata}","page":"API","title":"InfrastructureSystems.get_resolution","text":"get_resolution(\n value::InfrastructureSystems.ProbabilisticMetadata\n) -> Dates.Period\n\n\nGet ProbabilisticMetadata resolution.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_resolution-Tuple{InfrastructureSystems.Probabilistic}","page":"API","title":"InfrastructureSystems.get_resolution","text":"get_resolution(\n value::InfrastructureSystems.Probabilistic\n) -> Dates.Period\n\n\nGet Probabilistic resolution.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_resolution-Tuple{InfrastructureSystems.ScenariosMetadata}","page":"API","title":"InfrastructureSystems.get_resolution","text":"get_resolution(\n value::InfrastructureSystems.ScenariosMetadata\n) -> Dates.Period\n\n\nGet ScenariosMetadata resolution.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_resolution-Tuple{InfrastructureSystems.Scenarios}","page":"API","title":"InfrastructureSystems.get_resolution","text":"get_resolution(\n value::InfrastructureSystems.Scenarios\n) -> Dates.Period\n\n\nGet Scenarios resolution.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_resolution-Tuple{InfrastructureSystems.SingleTimeSeriesMetadata}","page":"API","title":"InfrastructureSystems.get_resolution","text":"get_resolution(\n value::InfrastructureSystems.SingleTimeSeriesMetadata\n) -> Dates.Period\n\n\nGet SingleTimeSeriesMetadata resolution.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_resolution-Tuple{InfrastructureSystems.SingleTimeSeries}","page":"API","title":"InfrastructureSystems.get_resolution","text":"get_resolution(\n value::InfrastructureSystems.SingleTimeSeries\n) -> Dates.Period\n\n\nGet SingleTimeSeries resolution.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_resolution-Tuple{TimeSeries.TimeArray}","page":"API","title":"InfrastructureSystems.get_resolution","text":"get_resolution(ts::TimeSeries.TimeArray) -> Any\n\n\nReturn the resolution from a TimeArray.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_scaling_factor_multiplier-Tuple{InfrastructureSystems.DeterministicMetadata}","page":"API","title":"InfrastructureSystems.get_scaling_factor_multiplier","text":"get_scaling_factor_multiplier(\n value::InfrastructureSystems.DeterministicMetadata\n) -> Union{Nothing, Function}\n\n\nGet DeterministicMetadata scaling_factor_multiplier.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_scaling_factor_multiplier-Tuple{InfrastructureSystems.Deterministic}","page":"API","title":"InfrastructureSystems.get_scaling_factor_multiplier","text":"get_scaling_factor_multiplier(\n value::InfrastructureSystems.Deterministic\n) -> Union{Nothing, Function}\n\n\nGet Deterministic scaling_factor_multiplier.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_scaling_factor_multiplier-Tuple{InfrastructureSystems.ProbabilisticMetadata}","page":"API","title":"InfrastructureSystems.get_scaling_factor_multiplier","text":"get_scaling_factor_multiplier(\n value::InfrastructureSystems.ProbabilisticMetadata\n) -> Union{Nothing, Function}\n\n\nGet ProbabilisticMetadata scaling_factor_multiplier.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_scaling_factor_multiplier-Tuple{InfrastructureSystems.Probabilistic}","page":"API","title":"InfrastructureSystems.get_scaling_factor_multiplier","text":"get_scaling_factor_multiplier(\n value::InfrastructureSystems.Probabilistic\n) -> Union{Nothing, Function}\n\n\nGet Probabilistic scaling_factor_multiplier.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_scaling_factor_multiplier-Tuple{InfrastructureSystems.ScenariosMetadata}","page":"API","title":"InfrastructureSystems.get_scaling_factor_multiplier","text":"get_scaling_factor_multiplier(\n value::InfrastructureSystems.ScenariosMetadata\n) -> Union{Nothing, Function}\n\n\nGet ScenariosMetadata scaling_factor_multiplier.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_scaling_factor_multiplier-Tuple{InfrastructureSystems.Scenarios}","page":"API","title":"InfrastructureSystems.get_scaling_factor_multiplier","text":"get_scaling_factor_multiplier(\n value::InfrastructureSystems.Scenarios\n) -> Union{Nothing, Function}\n\n\nGet Scenarios scaling_factor_multiplier.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_scaling_factor_multiplier-Tuple{InfrastructureSystems.SingleTimeSeriesMetadata}","page":"API","title":"InfrastructureSystems.get_scaling_factor_multiplier","text":"get_scaling_factor_multiplier(\n value::InfrastructureSystems.SingleTimeSeriesMetadata\n) -> Union{Nothing, Function}\n\n\nGet SingleTimeSeriesMetadata scaling_factor_multiplier.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_scaling_factor_multiplier-Tuple{InfrastructureSystems.SingleTimeSeries}","page":"API","title":"InfrastructureSystems.get_scaling_factor_multiplier","text":"get_scaling_factor_multiplier(\n value::InfrastructureSystems.SingleTimeSeries\n) -> Union{Nothing, Function}\n\n\nGet SingleTimeSeries scaling_factor_multiplier.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_scenario_count-Tuple{InfrastructureSystems.ScenariosMetadata}","page":"API","title":"InfrastructureSystems.get_scenario_count","text":"get_scenario_count(\n value::InfrastructureSystems.ScenariosMetadata\n) -> Int64\n\n\nGet ScenariosMetadata scenario_count.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_scenario_count-Tuple{InfrastructureSystems.Scenarios}","page":"API","title":"InfrastructureSystems.get_scenario_count","text":"get_scenario_count(\n value::InfrastructureSystems.Scenarios\n) -> Int64\n\n\nGet Scenarios scenario_count.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_serialization_metadata-Tuple{Dict}","page":"API","title":"InfrastructureSystems.get_serialization_metadata","text":"get_serialization_metadata(data::Dict) -> Any\n\n\nReturn the type information for the serialized struct.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_single_time_series-Tuple{InfrastructureSystems.DeterministicSingleTimeSeries}","page":"API","title":"InfrastructureSystems.get_single_time_series","text":"get_single_time_series(\n value::InfrastructureSystems.DeterministicSingleTimeSeries\n) -> InfrastructureSystems.SingleTimeSeries\n\n\nGet DeterministicSingleTimeSeries single_time_series.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_slopes-Tuple{InfrastructureSystems.PiecewiseLinearData}","page":"API","title":"InfrastructureSystems.get_slopes","text":"get_slopes(\n pwl::InfrastructureSystems.PiecewiseLinearData\n) -> Vector{Float64}\n\n\nCalculates the slopes of the line segments defined by the PiecewiseLinearData, returning one fewer slope than the number of underlying points.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_slopes-Tuple{PiecewiseIncrementalCurve}","page":"API","title":"InfrastructureSystems.get_slopes","text":"get_slopes(vc::PiecewiseIncrementalCurve) -> Vector{Float64}\n\n\nFetch the slopes that define the PiecewiseIncrementalCurve\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_slopes-Tuple{PiecewisePointCurve}","page":"API","title":"InfrastructureSystems.get_slopes","text":"get_slopes(vc::PiecewisePointCurve) -> Vector{Float64}\n\n\nCalculate the slopes of the line segments defined by the PiecewisePointCurve\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_subsystem_components-Tuple{InfrastructureSystems.SystemData, AbstractString}","page":"API","title":"InfrastructureSystems.get_subsystem_components","text":"get_subsystem_components(\n data::InfrastructureSystems.SystemData,\n subsystem_name::AbstractString\n) -> Base.Generator{Set{Base.UUID}, InfrastructureSystems.var\"#419#420\"{InfrastructureSystems.SystemData}}\n\n\nReturn a Generator of all components in the subsystem.\n\nThrows ArgumentError if the subsystem name is not stored.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_subsystems-Tuple{InfrastructureSystems.SystemData}","page":"API","title":"InfrastructureSystems.get_subsystems","text":"get_subsystems(\n data::InfrastructureSystems.SystemData\n) -> Base.KeySet{String, Dict{String, Set{Base.UUID}}}\n\n\nReturn an iterator of all subsystem names in the system.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_supplemental_attributes-Union{Tuple{T}, Tuple{Function, Type{T}, InfrastructureSystems.SupplementalAttributeManager}} where T<:InfrastructureSystems.SupplementalAttribute","page":"API","title":"InfrastructureSystems.get_supplemental_attributes","text":"get_supplemental_attributes(\n filter_func::Function,\n _::Type{T<:InfrastructureSystems.SupplementalAttribute},\n mgr::InfrastructureSystems.SupplementalAttributeManager\n) -> InfrastructureSystems.FlattenIteratorWrapper{T, I} where {T<:InfrastructureSystems.SupplementalAttribute, I<:(Vector)}\n\n\nReturns an iterator of supplemental_attributes. T can be concrete or abstract. Call collect on the result if an array is desired.\n\nArguments\n\nT: supplemental_attribute type\nmgr::SupplementalAttributeManager: SupplementalAttributeManager in the system\nfilter_func::Union{Nothing, Function} = nothing: Optional function that accepts a component of type T and returns a Bool. Apply this function to each component and only return components where the result is true.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_supplemental_attributes-Union{Tuple{T}, Tuple{Type{T}, InfrastructureSystems.InfrastructureSystemsComponent}} where T<:InfrastructureSystems.SupplementalAttribute","page":"API","title":"InfrastructureSystems.get_supplemental_attributes","text":"get_supplemental_attributes(\n _::Type{T<:InfrastructureSystems.SupplementalAttribute},\n component::InfrastructureSystems.InfrastructureSystemsComponent\n) -> Any\n\n\nReturn a Vector of supplemental_attributes. T can be concrete or abstract.\n\nArguments\n\nT: supplemental_attribute type\nsupplemental_attributes::SupplementalAttributes: SupplementalAttributes in the system\nfilter_func::Union{Nothing, Function} = nothing: Optional function that accepts a component of type T and returns a Bool. Apply this function to each component and only return components where the result is true.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_time_series","page":"API","title":"InfrastructureSystems.get_time_series","text":"get_time_series(\n owner::Union{InfrastructureSystems.InfrastructureSystemsComponent, InfrastructureSystems.SupplementalAttribute},\n key::InfrastructureSystems.TimeSeriesKey\n) -> Any\nget_time_series(\n owner::Union{InfrastructureSystems.InfrastructureSystemsComponent, InfrastructureSystems.SupplementalAttribute},\n key::InfrastructureSystems.TimeSeriesKey,\n start_time::Union{Nothing, Dates.DateTime}\n) -> Any\nget_time_series(\n owner::Union{InfrastructureSystems.InfrastructureSystemsComponent, InfrastructureSystems.SupplementalAttribute},\n key::InfrastructureSystems.TimeSeriesKey,\n start_time::Union{Nothing, Dates.DateTime},\n len::Union{Nothing, Int64}\n) -> Any\nget_time_series(\n owner::Union{InfrastructureSystems.InfrastructureSystemsComponent, InfrastructureSystems.SupplementalAttribute},\n key::InfrastructureSystems.TimeSeriesKey,\n start_time::Union{Nothing, Dates.DateTime},\n len::Union{Nothing, Int64},\n count::Union{Nothing, Int64}\n) -> Any\n\n\nReturn the exact stored data in a time series, using a time series key look up\n\nThis will load all forecast windows into memory by default. Be aware of how much data is stored.\n\nSpecify start_time and len if you only need a subset of data.\n\nDoes not apply a scaling factor multiplier.\n\nArguments\n\nowner::TimeSeriesOwners: Component or attribute containing the time series\nkey::TimeSeriesKey: the time series' key\nstart_time::Union{Nothing, Dates.DateTime} = nothing: If nothing, use the initial_timestamp of the time series. If the time series is a subtype of Forecast then start_time must be the first timestamp of a window.\nlen::Union{Nothing, Int} = nothing: Length in the time dimension. If nothing, use the entire length.\ncount::Union{Nothing, Int} = nothing: Only applicable to subtypes of Forecast. Number of forecast windows starting at start_time to return. Defaults to all available.\nfeatures...: User-defined tags that differentiate multiple time series arrays for the same component attribute, such as different arrays for different scenarios or years\n\nSee also: get_time_series by name\n\n\n\n\n\n","category":"function"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_time_series-Union{Tuple{T}, Tuple{Type{T}, Union{InfrastructureSystems.InfrastructureSystemsComponent, InfrastructureSystems.SupplementalAttribute}, AbstractString}} where T<:InfrastructureSystems.TimeSeriesData","page":"API","title":"InfrastructureSystems.get_time_series","text":"get_time_series(\n ::Type{T<:InfrastructureSystems.TimeSeriesData},\n owner::Union{InfrastructureSystems.InfrastructureSystemsComponent, InfrastructureSystems.SupplementalAttribute},\n name::AbstractString;\n start_time,\n len,\n count,\n features...\n) -> Any\n\n\nReturn the exact stored data in a time series\n\nThis will load all forecast windows into memory by default. Be aware of how much data is stored.\n\nSpecify start_time and len if you only need a subset of data.\n\nDoes not apply a scaling factor multiplier.\n\nArguments\n\n::Type{T}: Concrete subtype of TimeSeriesData to return\nowner::TimeSeriesOwners: Component or attribute containing the time series\nname::AbstractString: name of time series\nstart_time::Union{Nothing, Dates.DateTime} = nothing: If nothing, use the initial_timestamp of the time series. If T is a subtype of Forecast then start_time must be the first timestamp of a window.\nlen::Union{Nothing, Int} = nothing: Length in the time dimension. If nothing, use the entire length.\ncount::Union{Nothing, Int} = nothing: Only applicable to subtypes of Forecast. Number of forecast windows starting at start_time to return. Defaults to all available.\nfeatures...: User-defined tags that differentiate multiple time series arrays for the same component attribute, such as different arrays for different scenarios or years\n\nSee also: get_time_series_array, get_time_series_values, get_time_series by key\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_time_series_array","page":"API","title":"InfrastructureSystems.get_time_series_array","text":"get_time_series_array(\n owner::Union{InfrastructureSystems.InfrastructureSystemsComponent, InfrastructureSystems.SupplementalAttribute},\n time_series::InfrastructureSystems.StaticTimeSeries;\n ...\n) -> Any\nget_time_series_array(\n owner::Union{InfrastructureSystems.InfrastructureSystemsComponent, InfrastructureSystems.SupplementalAttribute},\n time_series::InfrastructureSystems.StaticTimeSeries,\n start_time::Union{Nothing, Dates.DateTime};\n len,\n ignore_scaling_factors\n) -> Any\n\n\nReturn a TimeSeries.TimeArray from a cached StaticTimeSeries instance.\n\nIf the time series data are scaling factors, the returned data will be scaled by the scaling factor multiplier by default.\n\nArguments\n\nowner::TimeSeriesOwners: Component or attribute containing the time series\ntime_series::StaticTimeSeries: subtype of StaticTimeSeries (e.g., SingleTimeSeries)\nstart_time::Union{Nothing, Dates.DateTime} = nothing: the first timestamp to retrieve. If nothing, use the initial_timestamp of the time series.\nlen::Union{Nothing, Int} = nothing: Length of time-series to retrieve (i.e. number of timestamps). If nothing, use the entire length\nignore_scaling_factors = false: If true, the time-series data will be multiplied by the result of calling the stored scaling_factor_multiplier function on the owner\n\nSee also: get_time_series_values, get_time_series_timestamps, StaticTimeSeriesCache, get_time_series_array by name from storage, get_time_series_array from a ForecastCache\n\n\n\n\n\n","category":"function"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_time_series_array!-Tuple{InfrastructureSystems.TimeSeriesCache, Dates.DateTime}","page":"API","title":"InfrastructureSystems.get_time_series_array!","text":"get_time_series_array!(\n cache::InfrastructureSystems.TimeSeriesCache,\n timestamp::Dates.DateTime\n) -> Any\n\n\nReturn the TimeSeries.TimeArray starting at timestamp. Reads from storage if the data is not already in cache.\n\nTimestamps must be read sequentially. Repeated reads are allowed. Random access may be added in the future.\n\nArguments\n\ncache::StaticTimeSeriesCache: cached instance\ntimestamp::Dates.DateTime: starting timestamp for the time series array\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_time_series_array-Tuple{Union{InfrastructureSystems.InfrastructureSystemsComponent, InfrastructureSystems.SupplementalAttribute}, InfrastructureSystems.Forecast, Dates.DateTime}","page":"API","title":"InfrastructureSystems.get_time_series_array","text":"get_time_series_array(\n owner::Union{InfrastructureSystems.InfrastructureSystemsComponent, InfrastructureSystems.SupplementalAttribute},\n forecast::InfrastructureSystems.Forecast,\n start_time::Dates.DateTime;\n len,\n ignore_scaling_factors\n) -> Any\n\n\nReturn a TimeSeries.TimeArray for one forecast window from a cached Forecast instance\n\nIf the time series data are scaling factors, the returned data will be scaled by the scaling factor multiplier by default.\n\nArguments\n\nowner::TimeSeriesOwners: Component or attribute containing the time series\nforecast::Forecast: a concrete subtype of Forecast\nstart_time::Union{Nothing, Dates.DateTime} = nothing: the first timestamp of one of the forecast windows\nlen::Union{Nothing, Int} = nothing: Length of time-series to retrieve (i.e. number of timestamps). If nothing, use the entire length.\nignore_scaling_factors = false: If true, the time-series data will be multiplied by the result of calling the stored scaling_factor_multiplier function on the owner\n\nSee also get_time_series_values, get_time_series_timestamps, ForecastCache, get_time_series_array by name from storage, get_time_series_array from a StaticTimeSeriesCache\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_time_series_array-Union{Tuple{T}, Tuple{Type{T}, Union{InfrastructureSystems.InfrastructureSystemsComponent, InfrastructureSystems.SupplementalAttribute}, AbstractString}} where T<:InfrastructureSystems.TimeSeriesData","page":"API","title":"InfrastructureSystems.get_time_series_array","text":"get_time_series_array(\n ::Type{T<:InfrastructureSystems.TimeSeriesData},\n owner::Union{InfrastructureSystems.InfrastructureSystemsComponent, InfrastructureSystems.SupplementalAttribute},\n name::AbstractString;\n start_time,\n len,\n ignore_scaling_factors,\n features...\n) -> Any\n\n\nReturn a TimeSeries.TimeArray from storage for the given time series parameters.\n\nIf the time series data are scaling factors, the returned data will be scaled by the scaling factor multiplier by default.\n\nThis will load all forecast windows into memory by default. Be aware of how much data is stored.\n\nSpecify start_time and len if you only need a subset of data.\n\nArguments\n\n::Type{T}: the type of time series (a concrete subtype of TimeSeriesData)\nowner::TimeSeriesOwners: Component or attribute containing the time series\nname::AbstractString: name of time series\nstart_time::Union{Nothing, Dates.DateTime} = nothing: If nothing, use the initial_timestamp of the time series. If T is a subtype of Forecast then start_time must be the first timestamp of a window.\nlen::Union{Nothing, Int} = nothing: Length of time-series to retrieve (i.e. number of timestamps). If nothing, use the entire length.\nignore_scaling_factors = false: If true, the time-series data will be multiplied by the result of calling the stored scaling_factor_multiplier function on the owner\nfeatures...: User-defined tags that differentiate multiple time series arrays for the same component attribute, such as different arrays for different scenarios or years\n\nSee also: get_time_series_values, get_time_series_timestamps, get_time_series_array from a StaticTimeSeriesCache, get_time_series_array from a ForecastCache\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_time_series_counts-Tuple{InfrastructureSystems.TimeSeriesMetadataStore}","page":"API","title":"InfrastructureSystems.get_time_series_counts","text":"get_time_series_counts(\n store::InfrastructureSystems.TimeSeriesMetadataStore\n) -> InfrastructureSystems.TimeSeriesCounts\n\n\nReturn an instance of TimeSeriesCounts.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_time_series_counts_by_type-Tuple{InfrastructureSystems.TimeSeriesMetadataStore}","page":"API","title":"InfrastructureSystems.get_time_series_counts_by_type","text":"get_time_series_counts_by_type(\n store::InfrastructureSystems.TimeSeriesMetadataStore\n) -> Vector\n\n\nReturn a Vector of OrderedDict of stored time series counts by type.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_time_series_format-Tuple{CSV.File}","page":"API","title":"InfrastructureSystems.get_time_series_format","text":"get_time_series_format(file::CSV.File) -> Type\n\n\nReturn the time series format used in the CSV file.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_time_series_keys-Tuple{InfrastructureSystems.TimeSeriesMetadataStore, Union{InfrastructureSystems.InfrastructureSystemsComponent, InfrastructureSystems.SupplementalAttribute}}","page":"API","title":"InfrastructureSystems.get_time_series_keys","text":"get_time_series_keys(\n store::InfrastructureSystems.TimeSeriesMetadataStore,\n owner::Union{InfrastructureSystems.InfrastructureSystemsComponent, InfrastructureSystems.SupplementalAttribute}\n) -> Vector\n\n\nReturn information about each time series array attached to the owner. This information can be used to call gettimeseries.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_time_series_keys-Tuple{Union{InfrastructureSystems.InfrastructureSystemsComponent, InfrastructureSystems.SupplementalAttribute}}","page":"API","title":"InfrastructureSystems.get_time_series_keys","text":"get_time_series_keys(\n owner::Union{InfrastructureSystems.InfrastructureSystemsComponent, InfrastructureSystems.SupplementalAttribute}\n) -> Vector\n\n\nReturn information about each time series array attached to the owner. This information can be used to call get_time_series(::TimeSeriesOwners, ::TimeSeriesKey).\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_time_series_manager-Tuple{Union{InfrastructureSystems.InfrastructureSystemsComponent, InfrastructureSystems.SupplementalAttribute}}","page":"API","title":"InfrastructureSystems.get_time_series_manager","text":"get_time_series_manager(\n owner::Union{InfrastructureSystems.InfrastructureSystemsComponent, InfrastructureSystems.SupplementalAttribute}\n) -> Any\n\n\nReturn the TimeSeriesManager or nothing if the component/attribute does not support time series.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_time_series_multiple","page":"API","title":"InfrastructureSystems.get_time_series_multiple","text":"get_time_series_multiple(\n data::InfrastructureSystems.SystemData;\n ...\n) -> Channel{Any}\nget_time_series_multiple(\n data::InfrastructureSystems.SystemData,\n filter_func;\n type,\n name\n) -> Channel{Any}\n\n\nReturns an iterator of TimeSeriesData instances attached to the system.\n\nNote that passing a filter function can be much slower than the other filtering parameters because it reads time series data from media.\n\nCall collect on the result to get an array.\n\nArguments\n\ndata::SystemData: system\nfilter_func = nothing: Only return time_series for which this returns true.\ntype = nothing: Only return time_series with this type.\nname = nothing: Only return time_series matching this value.\n\nSee also: get_time_series_multiple from an individual component or attribute\n\n\n\n\n\n","category":"function"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_time_series_multiple-2","page":"API","title":"InfrastructureSystems.get_time_series_multiple","text":"get_time_series_multiple(\n owner::Union{InfrastructureSystems.InfrastructureSystemsComponent, InfrastructureSystems.SupplementalAttribute};\n ...\n) -> Union{Tuple{}, Channel{Any}}\nget_time_series_multiple(\n owner::Union{InfrastructureSystems.InfrastructureSystemsComponent, InfrastructureSystems.SupplementalAttribute},\n filter_func;\n type,\n name\n) -> Union{Tuple{}, Channel{Any}}\n\n\nReturns an iterator of TimeSeriesData instances attached to the component or attribute.\n\nNote that passing a filter function can be much slower than the other filtering parameters because it reads time series data from media.\n\nCall collect on the result to get an array.\n\nArguments\n\nowner::TimeSeriesOwners: component or attribute from which to get time_series\nfilter_func = nothing: Only return time_series for which this returns true.\ntype = nothing: Only return time_series with this type.\nname = nothing: Only return time_series matching this value.\n\nSee also: get_time_series_multiple from a System\n\n\n\n\n\n","category":"function"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_time_series_resolutions-Tuple{InfrastructureSystems.TimeSeriesMetadataStore}","page":"API","title":"InfrastructureSystems.get_time_series_resolutions","text":"get_time_series_resolutions(\n store::InfrastructureSystems.TimeSeriesMetadataStore;\n time_series_type\n) -> Any\n\n\nReturn a sorted Vector of distinct resolutions for all time series of the given type (or all types).\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_time_series_summary_table-Tuple{InfrastructureSystems.TimeSeriesMetadataStore}","page":"API","title":"InfrastructureSystems.get_time_series_summary_table","text":"get_time_series_summary_table(\n store::InfrastructureSystems.TimeSeriesMetadataStore\n) -> DataFrames.DataFrame\n\n\nReturn a DataFrame with the number of time series by type for components and supplemental attributes.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_time_series_timestamps","page":"API","title":"InfrastructureSystems.get_time_series_timestamps","text":"get_time_series_timestamps(\n owner::Union{InfrastructureSystems.InfrastructureSystemsComponent, InfrastructureSystems.SupplementalAttribute},\n forecast::InfrastructureSystems.Forecast;\n ...\n)\nget_time_series_timestamps(\n owner::Union{InfrastructureSystems.InfrastructureSystemsComponent, InfrastructureSystems.SupplementalAttribute},\n forecast::InfrastructureSystems.Forecast,\n start_time::Union{Nothing, Dates.DateTime};\n len\n) -> Vector{D} where D<:Dates.TimeType\n\n\nReturn a vector of timestamps from a cached Forecast instance.\n\nArguments\n\nowner::TimeSeriesOwners: Component or attribute containing the time series\nforecast::Forecast: a concrete subtype of Forecast\nstart_time::Union{Nothing, Dates.DateTime} = nothing: the first timestamp of one of the forecast windows\nlen::Union{Nothing, Int} = nothing: Length of time-series to retrieve (i.e. number of timestamps). If nothing, use the entire length.\n\nSee also: get_time_series_array, get_time_series_values, ForecastCache, get_time_series_timestamps by name from storage, get_time_series_timestamps from a StaticTimeSeriesCache\n\n\n\n\n\n","category":"function"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_time_series_timestamps-2","page":"API","title":"InfrastructureSystems.get_time_series_timestamps","text":"get_time_series_timestamps(\n owner::Union{InfrastructureSystems.InfrastructureSystemsComponent, InfrastructureSystems.SupplementalAttribute},\n time_series::InfrastructureSystems.StaticTimeSeries;\n ...\n) -> Vector{D} where D<:Dates.TimeType\nget_time_series_timestamps(\n owner::Union{InfrastructureSystems.InfrastructureSystemsComponent, InfrastructureSystems.SupplementalAttribute},\n time_series::InfrastructureSystems.StaticTimeSeries,\n start_time::Union{Nothing, Dates.DateTime};\n len\n) -> Vector{D} where D<:Dates.TimeType\n\n\nReturn a vector of timestamps from a cached StaticTimeSeries instance.\n\nArguments\n\nowner::TimeSeriesOwners: Component or attribute containing the time series\ntime_series::StaticTimeSeries: subtype of StaticTimeSeries (e.g., SingleTimeSeries)\nstart_time::Union{Nothing, Dates.DateTime} = nothing: the first timestamp to retrieve. If nothing, use the initial_timestamp of the time series.\nlen::Union{Nothing, Int} = nothing: Length of time-series to retrieve (i.e. number of timestamps). If nothing, use the entire length\n\nSee also: get_time_series_array, get_time_series_values, StaticTimeSeriesCache, get_time_series_timestamps by name from storage, get_time_series_timestamps from a ForecastCache\n\n\n\n\n\n","category":"function"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_time_series_timestamps-Union{Tuple{T}, Tuple{Type{T}, Union{InfrastructureSystems.InfrastructureSystemsComponent, InfrastructureSystems.SupplementalAttribute}, AbstractString}} where T<:InfrastructureSystems.TimeSeriesData","page":"API","title":"InfrastructureSystems.get_time_series_timestamps","text":"get_time_series_timestamps(\n ::Type{T<:InfrastructureSystems.TimeSeriesData},\n owner::Union{InfrastructureSystems.InfrastructureSystemsComponent, InfrastructureSystems.SupplementalAttribute},\n name::AbstractString;\n start_time,\n len,\n features...\n) -> Vector{D} where D<:Dates.TimeType\n\n\nReturn a vector of timestamps from storage for the given time series parameters.\n\nArguments\n\n::Type{T}: the type of time series (a concrete subtype of TimeSeriesData)\nowner::TimeSeriesOwners: Component or attribute containing the time series\nname::AbstractString: name of time series\nstart_time::Union{Nothing, Dates.DateTime} = nothing: If nothing, use the initial_timestamp of the time series. If T is a subtype of Forecast then start_time must be the first timestamp of a window.\nlen::Union{Nothing, Int} = nothing: Length of time-series to retrieve (i.e. number of timestamps). If nothing, use the entire length.\nfeatures...: User-defined tags that differentiate multiple time series arrays for the same component attribute, such as different arrays for different scenarios or years\n\nSee also: get_time_series_array, get_time_series_values, get_time_series_timestamps from a StaticTimeSeriesCache, get_time_series_timestamps from a ForecastCache\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_time_series_type-Tuple{InfrastructureSystems.DeterministicMetadata}","page":"API","title":"InfrastructureSystems.get_time_series_type","text":"get_time_series_type(\n value::InfrastructureSystems.DeterministicMetadata\n) -> Type{<:InfrastructureSystems.AbstractDeterministic}\n\n\nGet DeterministicMetadata time_series_type.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_time_series_uuid-Tuple{InfrastructureSystems.DeterministicMetadata}","page":"API","title":"InfrastructureSystems.get_time_series_uuid","text":"get_time_series_uuid(\n value::InfrastructureSystems.DeterministicMetadata\n) -> Base.UUID\n\n\nGet DeterministicMetadata time_series_uuid.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_time_series_uuid-Tuple{InfrastructureSystems.ProbabilisticMetadata}","page":"API","title":"InfrastructureSystems.get_time_series_uuid","text":"get_time_series_uuid(\n value::InfrastructureSystems.ProbabilisticMetadata\n) -> Base.UUID\n\n\nGet ProbabilisticMetadata time_series_uuid.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_time_series_uuid-Tuple{InfrastructureSystems.ScenariosMetadata}","page":"API","title":"InfrastructureSystems.get_time_series_uuid","text":"get_time_series_uuid(\n value::InfrastructureSystems.ScenariosMetadata\n) -> Base.UUID\n\n\nGet ScenariosMetadata time_series_uuid.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_time_series_uuid-Tuple{InfrastructureSystems.SingleTimeSeriesMetadata}","page":"API","title":"InfrastructureSystems.get_time_series_uuid","text":"get_time_series_uuid(\n value::InfrastructureSystems.SingleTimeSeriesMetadata\n) -> Base.UUID\n\n\nGet SingleTimeSeriesMetadata time_series_uuid.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_time_series_values","page":"API","title":"InfrastructureSystems.get_time_series_values","text":"get_time_series_values(\n owner::Union{InfrastructureSystems.InfrastructureSystemsComponent, InfrastructureSystems.SupplementalAttribute},\n time_series::InfrastructureSystems.StaticTimeSeries;\n ...\n) -> Any\nget_time_series_values(\n owner::Union{InfrastructureSystems.InfrastructureSystemsComponent, InfrastructureSystems.SupplementalAttribute},\n time_series::InfrastructureSystems.StaticTimeSeries,\n start_time::Union{Nothing, Dates.DateTime};\n len,\n ignore_scaling_factors\n) -> Any\n\n\nReturn an vector of timeseries data without timestamps from a cached StaticTimeSeries instance\n\nArguments\n\nowner::TimeSeriesOwners: Component or attribute containing the time series\ntime_series::StaticTimeSeries: subtype of StaticTimeSeries (e.g., SingleTimeSeries)\nstart_time::Union{Nothing, Dates.DateTime} = nothing: the first timestamp to retrieve. If nothing, use the initial_timestamp of the time series.\nlen::Union{Nothing, Int} = nothing: Length of time-series to retrieve (i.e. number of timestamps). If nothing, use the entire length\nignore_scaling_factors = false: If true, the time-series data will be multiplied by the result of calling the stored scaling_factor_multiplier function on the owner\n\nSee also: get_time_series_array, get_time_series_timestamps, StaticTimeSeriesCache, get_time_series_values by name from storage, get_time_series_values from a ForecastCache\n\n\n\n\n\n","category":"function"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_time_series_values-Tuple{Union{InfrastructureSystems.InfrastructureSystemsComponent, InfrastructureSystems.SupplementalAttribute}, InfrastructureSystems.Forecast, Dates.DateTime}","page":"API","title":"InfrastructureSystems.get_time_series_values","text":"get_time_series_values(\n owner::Union{InfrastructureSystems.InfrastructureSystemsComponent, InfrastructureSystems.SupplementalAttribute},\n forecast::InfrastructureSystems.Forecast,\n start_time::Dates.DateTime;\n len,\n ignore_scaling_factors\n) -> Any\n\n\nReturn an vector of timeseries data without timestamps for one forecast window from a cached Forecast instance.\n\nArguments\n\nowner::TimeSeriesOwners: Component or attribute containing the time series\nforecast::Forecast: a concrete subtype of Forecast\nstart_time::Union{Nothing, Dates.DateTime} = nothing: the first timestamp of one of the forecast windows\nlen::Union{Nothing, Int} = nothing: Length of time-series to retrieve (i.e. number of timestamps). If nothing, use the entire length.\nignore_scaling_factors = false: If true, the time-series data will be multiplied by the result of calling the stored scaling_factor_multiplier function on the owner\n\nSee also: get_time_series_array, get_time_series_timestamps, ForecastCache, get_time_series_values by name from storage, get_time_series_values from a StaticTimeSeriesCache\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_time_series_values-Union{Tuple{T}, Tuple{Type{T}, Union{InfrastructureSystems.InfrastructureSystemsComponent, InfrastructureSystems.SupplementalAttribute}, AbstractString}} where T<:InfrastructureSystems.TimeSeriesData","page":"API","title":"InfrastructureSystems.get_time_series_values","text":"get_time_series_values(\n ::Type{T<:InfrastructureSystems.TimeSeriesData},\n owner::Union{InfrastructureSystems.InfrastructureSystemsComponent, InfrastructureSystems.SupplementalAttribute},\n name::AbstractString;\n start_time,\n len,\n ignore_scaling_factors,\n features...\n) -> Any\n\n\nReturn an vector of timeseries data without timestamps from storage\n\nIf the data size is small and this will be called many times, consider using the version that accepts a cached TimeSeriesData instance.\n\nArguments\n\n::Type{T}: type of the time series (a concrete subtype of TimeSeriesData)\nowner::TimeSeriesOwners: Component or attribute containing the time series\nname::AbstractString: name of time series\nstart_time::Union{Nothing, Dates.DateTime} = nothing: If nothing, use the initial_timestamp of the time series. If T is a subtype of Forecast then start_time must be the first timestamp of a window.\nlen::Union{Nothing, Int} = nothing: Length of time-series to retrieve (i.e. number of timestamps). If nothing, use the entire length.\nignore_scaling_factors = false: If true, the time-series data will be multiplied by the result of calling the stored scaling_factor_multiplier function on the owner\nfeatures...: User-defined tags that differentiate multiple time series arrays for the same component attribute, such as different arrays for different scenarios or years\n\nSee also: get_time_series_array, get_time_series_timestamps, get_time_series, get_time_series_values from a StaticTimeSeriesCache, get_time_series_values from a ForecastCache\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_timestamp-Tuple{Type{InfrastructureSystems.TimeSeriesFormatYMDPeriodAsColumn}, CSV.File, Int64}","page":"API","title":"InfrastructureSystems.get_timestamp","text":"get_timestamp(\n _::Type{InfrastructureSystems.TimeSeriesFormatYMDPeriodAsColumn},\n file::CSV.File,\n row_index::Int64\n) -> Any\n\n\nReturn a Dates.DateTime for the row in the CSV file.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_total_period-Tuple{InfrastructureSystems.Forecast}","page":"API","title":"InfrastructureSystems.get_total_period","text":"get_total_period(f::InfrastructureSystems.Forecast) -> Any\n\n\nReturn the total period covered by the forecast.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_unique_timestamps-Union{Tuple{T}, Tuple{Type{T}, CSV.File}} where T<:InfrastructureSystems.TimeSeriesFileFormat","page":"API","title":"InfrastructureSystems.get_unique_timestamps","text":"get_unique_timestamps(\n _::Type{T<:InfrastructureSystems.TimeSeriesFileFormat},\n file::CSV.File\n) -> Vector{Dict{String, Any}}\n\n\nReturn a vector of dicts of unique timestamps and their counts.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_uuid-Tuple{InfrastructureSystems.InfrastructureSystemsType}","page":"API","title":"InfrastructureSystems.get_uuid","text":"get_uuid(\n obj::InfrastructureSystems.InfrastructureSystemsType\n) -> Base.UUID\n\n\nGets the UUID for any InfrastructureSystemsType.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_value_columns-Tuple{Type{InfrastructureSystems.TimeSeriesFormatComponentsAsColumnsNoTime}, CSV.File}","page":"API","title":"InfrastructureSystems.get_value_columns","text":"get_value_columns(\n _::Type{InfrastructureSystems.TimeSeriesFormatComponentsAsColumnsNoTime},\n file::CSV.File\n) -> Vector{Symbol}\n\n\nReturn the column names with values.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_value_columns-Tuple{Type{InfrastructureSystems.TimeSeriesFormatYMDPeriodAsColumn}, CSV.File}","page":"API","title":"InfrastructureSystems.get_value_columns","text":"get_value_columns(\n _::Type{InfrastructureSystems.TimeSeriesFormatYMDPeriodAsColumn},\n file::CSV.File\n) -> Vector{Symbol}\n\n\nReturn the column names with values (components).\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_value_curve-Tuple{InfrastructureSystems.ProductionVariableCostCurve}","page":"API","title":"InfrastructureSystems.get_value_curve","text":"get_value_curve(\n cost::InfrastructureSystems.ProductionVariableCostCurve\n) -> Any\n\n\nGet the underlying ValueCurve representation of this ProductionVariableCostCurve\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_vom_cost-Tuple{InfrastructureSystems.ProductionVariableCostCurve}","page":"API","title":"InfrastructureSystems.get_vom_cost","text":"get_vom_cost(\n cost::InfrastructureSystems.ProductionVariableCostCurve\n) -> Any\n\n\nGet the variable operation and maintenance cost in currency/(power_units h)\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_window-Tuple{InfrastructureSystems.Forecast, Int64}","page":"API","title":"InfrastructureSystems.get_window","text":"get_window(\n forecast::InfrastructureSystems.Forecast,\n index::Int64;\n len\n) -> Any\n\n\nReturn the forecast window corresponsing to interval index.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_x_coords-Tuple{InfrastructureSystems.PiecewiseLinearData}","page":"API","title":"InfrastructureSystems.get_x_coords","text":"get_x_coords(\n data::InfrastructureSystems.PiecewiseLinearData\n) -> Vector{Float64}\n\n\nGet the x-coordinates of the points that define the piecewise data\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_x_coords-Tuple{InfrastructureSystems.PiecewiseStepData}","page":"API","title":"InfrastructureSystems.get_x_coords","text":"get_x_coords(\n data::InfrastructureSystems.PiecewiseStepData\n) -> Vector{Float64}\n\n\nGet the x-coordinates of the points that define the piecewise data\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_x_coords-Tuple{PiecewiseAverageCurve}","page":"API","title":"InfrastructureSystems.get_x_coords","text":"get_x_coords(vc::PiecewiseAverageCurve) -> Vector{Float64}\n\n\nGet the x-coordinates that define the PiecewiseAverageCurve\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_x_coords-Tuple{PiecewiseIncrementalCurve}","page":"API","title":"InfrastructureSystems.get_x_coords","text":"get_x_coords(\n vc::PiecewiseIncrementalCurve\n) -> Vector{Float64}\n\n\nGet the x-coordinates that define the PiecewiseIncrementalCurve\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_x_coords-Tuple{PiecewisePointCurve}","page":"API","title":"InfrastructureSystems.get_x_coords","text":"get_x_coords(vc::PiecewisePointCurve) -> Vector{Float64}\n\n\nGet the x-coordinates of the points that define the PiecewisePointCurve\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_x_lengths-Tuple{Union{InfrastructureSystems.PiecewiseLinearData, InfrastructureSystems.PiecewiseStepData}}","page":"API","title":"InfrastructureSystems.get_x_lengths","text":"get_x_lengths(\n pwl::Union{InfrastructureSystems.PiecewiseLinearData, InfrastructureSystems.PiecewiseStepData}\n) -> Vector{Float64}\n\n\nCalculates the x-length of each segment of a piecewise curve.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_y_coords-Tuple{InfrastructureSystems.PiecewiseLinearData}","page":"API","title":"InfrastructureSystems.get_y_coords","text":"get_y_coords(\n data::InfrastructureSystems.PiecewiseLinearData\n) -> Vector{Float64}\n\n\nGet the y-coordinates of the points that define the PiecewiseLinearData\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_y_coords-Tuple{InfrastructureSystems.PiecewiseStepData}","page":"API","title":"InfrastructureSystems.get_y_coords","text":"get_y_coords(\n data::InfrastructureSystems.PiecewiseStepData\n) -> Vector{Float64}\n\n\nGet the y-coordinates of the segments in the PiecewiseStepData\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_y_coords-Tuple{PiecewisePointCurve}","page":"API","title":"InfrastructureSystems.get_y_coords","text":"get_y_coords(vc::PiecewisePointCurve) -> Vector{Float64}\n\n\nGet the y-coordinates of the points that define the PiecewisePointCurve\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.has_association-Tuple{InfrastructureSystems.SupplementalAttributeAssociations, InfrastructureSystems.SupplementalAttribute}","page":"API","title":"InfrastructureSystems.has_association","text":"has_association(\n associations::InfrastructureSystems.SupplementalAttributeAssociations,\n attribute::InfrastructureSystems.SupplementalAttribute\n) -> Bool\n\n\nReturn true if there is at least one association matching the inputs.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.has_component-Tuple{InfrastructureSystems.Components, Type{<:InfrastructureSystems.InfrastructureSystemsComponent}, AbstractString}","page":"API","title":"InfrastructureSystems.has_component","text":"has_component(\n components::InfrastructureSystems.Components,\n T::Type{<:InfrastructureSystems.InfrastructureSystemsComponent},\n name::AbstractString\n) -> Bool\n\n\nCheck to see if a component with name exists.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.has_component-Tuple{InfrastructureSystems.SystemData, AbstractString, InfrastructureSystems.InfrastructureSystemsComponent}","page":"API","title":"InfrastructureSystems.has_component","text":"has_component(\n data::InfrastructureSystems.SystemData,\n subsystem_name::AbstractString,\n component::InfrastructureSystems.InfrastructureSystemsComponent\n) -> Bool\n\n\nReturn true if the component is in the subsystem.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.has_component-Tuple{InfrastructureSystems.SystemData, Type{<:InfrastructureSystems.InfrastructureSystemsComponent}, AbstractString}","page":"API","title":"InfrastructureSystems.has_component","text":"has_component(\n data::InfrastructureSystems.SystemData,\n T::Type{<:InfrastructureSystems.InfrastructureSystemsComponent},\n name::AbstractString\n) -> Bool\n\n\nCheck to see if a component exists.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.has_components-Tuple{InfrastructureSystems.Components, Type{<:InfrastructureSystems.InfrastructureSystemsComponent}}","page":"API","title":"InfrastructureSystems.has_components","text":"has_components(\n components::InfrastructureSystems.Components,\n T::Type{<:InfrastructureSystems.InfrastructureSystemsComponent}\n) -> Bool\n\n\nCheck to see if a component if the given type exists.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.has_metadata-Tuple{InfrastructureSystems.TimeSeriesMetadataStore, Union{InfrastructureSystems.InfrastructureSystemsComponent, InfrastructureSystems.SupplementalAttribute}, InfrastructureSystems.TimeSeriesMetadata}","page":"API","title":"InfrastructureSystems.has_metadata","text":"has_metadata(\n store::InfrastructureSystems.TimeSeriesMetadataStore,\n owner::Union{InfrastructureSystems.InfrastructureSystemsComponent, InfrastructureSystems.SupplementalAttribute},\n metadata::InfrastructureSystems.TimeSeriesMetadata\n) -> Bool\n\n\nReturn True if there is time series metadata matching the inputs.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.has_supplemental_attributes-Tuple{InfrastructureSystems.InfrastructureSystemsComponent}","page":"API","title":"InfrastructureSystems.has_supplemental_attributes","text":"has_supplemental_attributes(\n component::InfrastructureSystems.InfrastructureSystemsComponent\n) -> Bool\n\n\nReturn true if the component has supplemental attributes.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.has_supplemental_attributes-Union{Tuple{T}, Tuple{InfrastructureSystems.InfrastructureSystemsComponent, Type{T}}} where T<:InfrastructureSystems.SupplementalAttribute","page":"API","title":"InfrastructureSystems.has_supplemental_attributes","text":"has_supplemental_attributes(\n component::InfrastructureSystems.InfrastructureSystemsComponent,\n _::Type{T<:InfrastructureSystems.SupplementalAttribute}\n) -> Bool\n\n\nReturn true if the component has supplemental attributes of the given type.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.has_time_series-Tuple{InfrastructureSystems.TimeSeriesMetadataStore, Base.UUID}","page":"API","title":"InfrastructureSystems.has_time_series","text":"has_time_series(\n store::InfrastructureSystems.TimeSeriesMetadataStore,\n time_series_uuid::Base.UUID\n) -> Any\n\n\nReturn True if there is time series matching the UUID.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.has_time_series-Tuple{Union{InfrastructureSystems.InfrastructureSystemsComponent, InfrastructureSystems.SupplementalAttribute}}","page":"API","title":"InfrastructureSystems.has_time_series","text":"has_time_series(\n owner::Union{InfrastructureSystems.InfrastructureSystemsComponent, InfrastructureSystems.SupplementalAttribute}\n) -> Any\n\n\nReturn true if the component or supplemental attribute has time series data.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.has_time_series-Union{Tuple{T}, Tuple{Union{InfrastructureSystems.InfrastructureSystemsComponent, InfrastructureSystems.SupplementalAttribute}, Type{T}}} where T<:InfrastructureSystems.TimeSeriesData","page":"API","title":"InfrastructureSystems.has_time_series","text":"has_time_series(\n val::Union{InfrastructureSystems.InfrastructureSystemsComponent, InfrastructureSystems.SupplementalAttribute},\n _::Type{T<:InfrastructureSystems.TimeSeriesData}\n) -> Any\n\n\nReturn true if the component or supplemental attribute has time series data of type T.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.hash_from_fields-Tuple{Any}","page":"API","title":"InfrastructureSystems.hash_from_fields","text":"hash_from_fields(a) -> Any\n\n\nCompute a hash of the instance a by combining hashes of all its fields\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.head-Tuple{InfrastructureSystems.SingleTimeSeries}","page":"API","title":"InfrastructureSystems.head","text":"head(\n time_series::InfrastructureSystems.SingleTimeSeries\n) -> Any\n\n\nReturn a time_series with only the first num values.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.increment_count!-Tuple{InfrastructureSystems.LogEventTracker, InfrastructureSystems.LogEvent, Bool}","page":"API","title":"InfrastructureSystems.increment_count!","text":"increment_count!(\n tracker::InfrastructureSystems.LogEventTracker,\n event::InfrastructureSystems.LogEvent,\n suppressed::Bool\n) -> Union{Nothing, Int64, InfrastructureSystems.LogEvent}\n\n\nIncrements the count of a log event.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.index_to_initial_time-Tuple{InfrastructureSystems.Forecast, Int64}","page":"API","title":"InfrastructureSystems.index_to_initial_time","text":"index_to_initial_time(\n forecast::InfrastructureSystems.Forecast,\n index::Int64\n) -> Any\n\n\nReturn the Dates.DateTime corresponding to an interval index.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.is_assigned_to_subsystem-Tuple{InfrastructureSystems.SystemData, InfrastructureSystems.InfrastructureSystemsComponent, AbstractString}","page":"API","title":"InfrastructureSystems.is_assigned_to_subsystem","text":"is_assigned_to_subsystem(\n data::InfrastructureSystems.SystemData,\n component::InfrastructureSystems.InfrastructureSystemsComponent,\n subsystem_name::AbstractString\n) -> Bool\n\n\nReturn true if the component is assigned to the subsystem.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.is_assigned_to_subsystem-Tuple{InfrastructureSystems.SystemData, InfrastructureSystems.InfrastructureSystemsComponent}","page":"API","title":"InfrastructureSystems.is_assigned_to_subsystem","text":"is_assigned_to_subsystem(\n data::InfrastructureSystems.SystemData,\n component::InfrastructureSystems.InfrastructureSystemsComponent\n) -> Bool\n\n\nReturn true if the component is assigned to any subsystems.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.is_convex-Tuple{InfrastructureSystems.PiecewiseLinearData}","page":"API","title":"InfrastructureSystems.is_convex","text":"is_convex(\n pwl::InfrastructureSystems.PiecewiseLinearData\n) -> Bool\n\n\nReturns True/False depending on the convexity of the underlying data\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.is_convex-Tuple{InfrastructureSystems.ProductionVariableCostCurve}","page":"API","title":"InfrastructureSystems.is_convex","text":"is_convex(\n cost::InfrastructureSystems.ProductionVariableCostCurve\n) -> Any\n\n\nCalculate the convexity of the underlying data\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.is_convex-Tuple{InfrastructureSystems.ValueCurve}","page":"API","title":"InfrastructureSystems.is_convex","text":"is_convex(curve::InfrastructureSystems.ValueCurve) -> Bool\n\n\nCalculate the convexity of the underlying data\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.is_cost_alias-Tuple{Union{Type{<:InfrastructureSystems.ValueCurve}, InfrastructureSystems.ValueCurve}}","page":"API","title":"InfrastructureSystems.is_cost_alias","text":"is_cost_alias(\n _::Union{Type{<:InfrastructureSystems.ValueCurve}, InfrastructureSystems.ValueCurve}\n) -> Bool\n\n\nWhether there is a cost alias for the instance or type under consideration\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.is_ext_valid_for_serialization-Tuple{Any}","page":"API","title":"InfrastructureSystems.is_ext_valid_for_serialization","text":"is_ext_valid_for_serialization(value) -> Bool\n\n\nPerform a test to see if JSON3 can convert this value so that the code can give the user a a comprehensible corrective action.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.isequal_from_fields-Union{Tuple{T}, Tuple{T, T}} where T","page":"API","title":"InfrastructureSystems.isequal_from_fields","text":"isequal_from_fields(a, b) -> Any\n\n\nCompute the conjunction of the isequal values of all the fields in a and b\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.isequivalent-Tuple{Any, Any}","page":"API","title":"InfrastructureSystems.isequivalent","text":"isequivalent(x, y) -> Any\n\n\nAn equality predicate that is true for NaN, NaN (unlike ==) and for -0.0, 0.0 (unlike isequal)\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.iterate_components-Tuple{InfrastructureSystems.Components}","page":"API","title":"InfrastructureSystems.iterate_components","text":"iterate_components(\n components::InfrastructureSystems.Components\n) -> Base.Iterators.Flatten{Base.Generator{Base.ValueIterator{Dict{DataType, Dict{String, <:InfrastructureSystems.InfrastructureSystemsComponent}}}, InfrastructureSystems.var\"#110#111\"}}\n\n\nIterates over all components.\n\nExamples\n\nfor component in iterate_components(obj)\n @show component\nend\n\nSee also: get_components\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.iterate_container-Tuple{InfrastructureSystems.InfrastructureSystemsContainer}","page":"API","title":"InfrastructureSystems.iterate_container","text":"iterate_container(\n container::InfrastructureSystems.InfrastructureSystemsContainer\n) -> Base.Iterators.Flatten{I} where I<:(Base.Generator{_A, InfrastructureSystems.var\"#110#111\"} where _A)\n\n\nIterates over all data in the container.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.iterate_supplemental_attributes-Tuple{InfrastructureSystems.SupplementalAttributeManager}","page":"API","title":"InfrastructureSystems.iterate_supplemental_attributes","text":"iterate_supplemental_attributes(\n mgr::InfrastructureSystems.SupplementalAttributeManager\n) -> Base.Iterators.Flatten{Base.Generator{Base.ValueIterator{Dict{DataType, Dict{Base.UUID, <:InfrastructureSystems.SupplementalAttribute}}}, InfrastructureSystems.var\"#110#111\"}}\n\n\nIterates over all supplemental_attributes.\n\nExamples\n\nfor supplemental_attribute in iterate_supplemental_attributes(obj)\n @show supplemental_attribute\nend\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.iterate_windows-Tuple{InfrastructureSystems.DeterministicSingleTimeSeries}","page":"API","title":"InfrastructureSystems.iterate_windows","text":"iterate_windows(\n forecast::InfrastructureSystems.DeterministicSingleTimeSeries\n) -> Union{Tuple{Any}, Base.Generator{I, InfrastructureSystems.var\"#134#135\"{InfrastructureSystems.DeterministicSingleTimeSeries}} where I<:(StepRangeLen{T, R, S, Int64} where {T, R>:Dates.DateTime, S})}\n\n\nIterate over the windows in a forecast\n\nExamples\n\nfor window in iterate_windows(forecast)\n @show values(maximum(window))\nend\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.iterate_windows-Tuple{InfrastructureSystems.Deterministic}","page":"API","title":"InfrastructureSystems.iterate_windows","text":"iterate_windows(\n forecast::InfrastructureSystems.Deterministic\n) -> Base.Generator{I, InfrastructureSystems.var\"#105#106\"{InfrastructureSystems.Deterministic}} where I<:(DataStructures.SDMKeyIteration{T} where T<:DataStructures.SortedDict)\n\n\nIterate over the windows in a forecast\n\nExamples\n\nfor window in iterate_windows(forecast)\n @show values(maximum(window))\nend\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.iterate_windows-Tuple{InfrastructureSystems.Probabilistic}","page":"API","title":"InfrastructureSystems.iterate_windows","text":"iterate_windows(\n forecast::InfrastructureSystems.Probabilistic\n) -> Base.Generator{I, InfrastructureSystems.var\"#105#106\"{InfrastructureSystems.Probabilistic}} where I<:(DataStructures.SDMKeyIteration{T} where T<:DataStructures.SortedDict)\n\n\nIterate over the windows in a forecast\n\nExamples\n\nfor window in iterate_windows(forecast)\n @show values(maximum(window))\nend\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.iterate_windows-Tuple{InfrastructureSystems.Scenarios}","page":"API","title":"InfrastructureSystems.iterate_windows","text":"iterate_windows(\n forecast::InfrastructureSystems.Scenarios\n) -> Base.Generator{I, InfrastructureSystems.var\"#105#106\"{InfrastructureSystems.Scenarios}} where I<:(DataStructures.SDMKeyIteration{T} where T<:DataStructures.SortedDict)\n\n\nIterate over the windows in a forecast\n\nExamples\n\nfor window in iterate_windows(forecast)\n @show values(maximum(window))\nend\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.list_associated_component_uuids-Tuple{InfrastructureSystems.SupplementalAttributeAssociations, InfrastructureSystems.SupplementalAttribute}","page":"API","title":"InfrastructureSystems.list_associated_component_uuids","text":"list_associated_component_uuids(\n associations::InfrastructureSystems.SupplementalAttributeAssociations,\n attribute::InfrastructureSystems.SupplementalAttribute\n) -> Any\n\n\nReturn the component UUIDs associated with the attribute.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.list_associated_supplemental_attribute_uuids-Tuple{InfrastructureSystems.SupplementalAttributeAssociations, InfrastructureSystems.InfrastructureSystemsComponent}","page":"API","title":"InfrastructureSystems.list_associated_supplemental_attribute_uuids","text":"list_associated_supplemental_attribute_uuids(\n associations::InfrastructureSystems.SupplementalAttributeAssociations,\n component::InfrastructureSystems.InfrastructureSystemsComponent;\n attribute_type\n) -> Any\n\n\nReturn the supplemental attribute UUIDs associated with the component and attribute type.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.list_existing_metadata-Tuple{InfrastructureSystems.TimeSeriesMetadataStore, Vector{Union{InfrastructureSystems.InfrastructureSystemsComponent, InfrastructureSystems.SupplementalAttribute}}, Vector{InfrastructureSystems.TimeSeriesMetadata}}","page":"API","title":"InfrastructureSystems.list_existing_metadata","text":"list_existing_metadata(\n store::InfrastructureSystems.TimeSeriesMetadataStore,\n owners::Vector{Union{InfrastructureSystems.InfrastructureSystemsComponent, InfrastructureSystems.SupplementalAttribute}},\n metadata::Vector{InfrastructureSystems.TimeSeriesMetadata}\n) -> Vector\n\n\nReturn the metadata specified in the passed metadata vector that are already stored.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.list_existing_time_series_uuids-Tuple{InfrastructureSystems.TimeSeriesMetadataStore, Any}","page":"API","title":"InfrastructureSystems.list_existing_time_series_uuids","text":"list_existing_time_series_uuids(\n store::InfrastructureSystems.TimeSeriesMetadataStore,\n uuids\n) -> Any\n\n\nReturn the time series UUIDs specified in the passed uuids that are already stored.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.list_matching_time_series_uuids-Tuple{InfrastructureSystems.TimeSeriesMetadataStore}","page":"API","title":"InfrastructureSystems.list_matching_time_series_uuids","text":"list_matching_time_series_uuids(\n store::InfrastructureSystems.TimeSeriesMetadataStore;\n time_series_type,\n name,\n features...\n) -> Any\n\n\nReturn the time series UUIDs that match the inputs.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.list_metadata_with_owner_uuid-Tuple{InfrastructureSystems.TimeSeriesMetadataStore, Type{<:Union{InfrastructureSystems.InfrastructureSystemsComponent, InfrastructureSystems.SupplementalAttribute}}}","page":"API","title":"InfrastructureSystems.list_metadata_with_owner_uuid","text":"list_metadata_with_owner_uuid(\n store::InfrastructureSystems.TimeSeriesMetadataStore,\n owner_type::Type{<:Union{InfrastructureSystems.InfrastructureSystemsComponent, InfrastructureSystems.SupplementalAttribute}};\n time_series_type,\n name,\n features...\n) -> Vector\n\n\nReturn a Vector of NamedTuple of owner UUID and time series metadata matching the inputs. \n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.list_recorder_events-Union{Tuple{T}, Tuple{Type{T}, AbstractString}, Tuple{Type{T}, AbstractString, Union{Nothing, Function}}} where T<:InfrastructureSystems.AbstractRecorderEvent","page":"API","title":"InfrastructureSystems.list_recorder_events","text":"list_recorder_events(\n ::Type{T<:InfrastructureSystems.AbstractRecorderEvent},\n filename::AbstractString\n) -> Vector{T} where T<:InfrastructureSystems.AbstractRecorderEvent\nlist_recorder_events(\n ::Type{T<:InfrastructureSystems.AbstractRecorderEvent},\n filename::AbstractString,\n filter_func::Union{Nothing, Function}\n) -> Vector{T} where T<:InfrastructureSystems.AbstractRecorderEvent\n\n\nReturn the events of type T in filename.\n\nArguments\n\nT: event type\nfilename::AbstractString: filename containing recorder events\nfilter_func::Union{Nothing, Function} = nothing: Optional function that accepts an event of type T and returns a Bool. Apply this function to each event and only return events where the result is true.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.load_records!-Tuple{InfrastructureSystems.SupplementalAttributeAssociations, Any}","page":"API","title":"InfrastructureSystems.load_records!","text":"load_records!(\n associations::InfrastructureSystems.SupplementalAttributeAssociations,\n records\n)\n\n\nAdd records to the database. Expects output from to_records.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.make_time_array-Tuple{InfrastructureSystems.Forecast, Dates.DateTime}","page":"API","title":"InfrastructureSystems.make_time_array","text":"make_time_array(\n forecast::InfrastructureSystems.Forecast,\n start_time::Dates.DateTime;\n len\n) -> Any\n\n\nReturn a TimeSeries.TimeArray for one forecast window.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.make_time_series!-Tuple{InfrastructureSystems.TimeSeriesParsingCache, InfrastructureSystems.TimeSeriesFileMetadata}","page":"API","title":"InfrastructureSystems.make_time_series!","text":"make_time_series!(\n cache::InfrastructureSystems.TimeSeriesParsingCache,\n ts_file_metadata::InfrastructureSystems.TimeSeriesFileMetadata\n) -> Any\n\n\nReturn a time series from TimeSeriesFileMetadata.\n\nArguments\n\ncache::TimeSeriesParsingCache: cached data\nts_file_metadata::TimeSeriesFileMetadata: metadata\nresolution::{Nothing, Dates.Period}: skip any time_series that don't match this resolution\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.mask_component!-Tuple{InfrastructureSystems.SystemData, InfrastructureSystems.InfrastructureSystemsComponent}","page":"API","title":"InfrastructureSystems.mask_component!","text":"mask_component!(\n data::InfrastructureSystems.SystemData,\n component::InfrastructureSystems.InfrastructureSystemsComponent;\n remove_time_series\n)\n\n\nRemoves the component from the main container and adds it to the masked container.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.open_file_logger","page":"API","title":"InfrastructureSystems.open_file_logger","text":"open_file_logger(func::Function, filename::String) -> Any\nopen_file_logger(\n func::Function,\n filename::String,\n level\n) -> Any\nopen_file_logger(\n func::Function,\n filename::String,\n level,\n mode\n) -> Any\n\n\nOpens a file logger using Logging.SimpleLogger.\n\nArguments\n\nfunc::Function\nfilename::String: logger filename\nlevel=Logging.Info: optional, to change the minimum logging level\nmode = \"w+\": Optional, to designate write mode\n\nExample\n\nopen_file_logger(\"log.txt\", Logging.Info) do logger\n global_logger(logger)\n @info \"hello world\"\nend\n\n\n\n\n\n","category":"function"},{"location":"InfrastructureSystems/#InfrastructureSystems.prepare_for_removal!-Tuple{Union{InfrastructureSystems.InfrastructureSystemsComponent, InfrastructureSystems.SupplementalAttribute}}","page":"API","title":"InfrastructureSystems.prepare_for_removal!","text":"prepare_for_removal!(\n owner::Union{InfrastructureSystems.InfrastructureSystemsComponent, InfrastructureSystems.SupplementalAttribute}\n)\n\n\nThis function must be called when a component or attribute is removed from a system.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.prepare_for_serialization_to_file!-Tuple{InfrastructureSystems.SystemData, AbstractString}","page":"API","title":"InfrastructureSystems.prepare_for_serialization_to_file!","text":"prepare_for_serialization_to_file!(\n data::InfrastructureSystems.SystemData,\n filename::AbstractString;\n force\n)\n\n\nParent object should call this prior to serialization so that SystemData can store the appropriate path information for the time series data.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.read_time_series-Union{Tuple{T}, Tuple{Type{T}, AbstractString}, Tuple{Type{T}, AbstractString, Any}} where T<:InfrastructureSystems.TimeSeriesData","page":"API","title":"InfrastructureSystems.read_time_series","text":"read_time_series(\n ::Type{T<:InfrastructureSystems.TimeSeriesData},\n data_file::AbstractString;\n ...\n) -> InfrastructureSystems.RawTimeSeries\nread_time_series(\n ::Type{T<:InfrastructureSystems.TimeSeriesData},\n data_file::AbstractString,\n component_name;\n kwargs...\n) -> Any\n\n\nReturn a TimeArray from a CSV file.\n\nPass component_name when the file does not have the component name in a column header.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.read_time_series-Union{Tuple{T}, Tuple{Type{T}, Type{<:InfrastructureSystems.StaticTimeSeries}, CSV.File, AbstractString}} where T<:InfrastructureSystems.TimeSeriesFormatPeriodAsHeader","page":"API","title":"InfrastructureSystems.read_time_series","text":"read_time_series(\n ::Type{T<:InfrastructureSystems.TimeSeriesFormatPeriodAsHeader},\n ::Type{<:InfrastructureSystems.StaticTimeSeries},\n file::CSV.File,\n component_name::AbstractString;\n kwargs...\n) -> InfrastructureSystems.RawTimeSeries\n\n\nThis version of the function supports the format where there is no column header for a component, so the component_name must be passed in.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.read_time_series-Union{Tuple{T}, Tuple{Type{T}, Type{<:InfrastructureSystems.StaticTimeSeries}, CSV.File}, Tuple{Type{T}, Type{<:InfrastructureSystems.StaticTimeSeries}, CSV.File, Any}} where T<:InfrastructureSystems.TimeSeriesFormatComponentsAsColumnsNoTime","page":"API","title":"InfrastructureSystems.read_time_series","text":"read_time_series(\n ::Type{T<:InfrastructureSystems.TimeSeriesFormatComponentsAsColumnsNoTime},\n ::Type{<:InfrastructureSystems.StaticTimeSeries},\n file::CSV.File;\n ...\n) -> InfrastructureSystems.RawTimeSeries\nread_time_series(\n ::Type{T<:InfrastructureSystems.TimeSeriesFormatComponentsAsColumnsNoTime},\n ::Type{<:InfrastructureSystems.StaticTimeSeries},\n file::CSV.File,\n component_name;\n kwargs...\n) -> InfrastructureSystems.RawTimeSeries\n\n\nThis version of the function only has component_name to match the interface. It is unused.\n\nSet start_datetime as a keyword argument for the starting timestamp, otherwise the current day is used.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.read_time_series-Union{Tuple{T}, Tuple{Type{T}, Type{<:InfrastructureSystems.StaticTimeSeries}, CSV.File}, Tuple{Type{T}, Type{<:InfrastructureSystems.StaticTimeSeries}, CSV.File, Any}} where T<:Union{InfrastructureSystems.TimeSeriesFormatDateTimeAsColumn, InfrastructureSystems.TimeSeriesFormatPeriodAsColumn}","page":"API","title":"InfrastructureSystems.read_time_series","text":"read_time_series(\n ::Type{T<:Union{InfrastructureSystems.TimeSeriesFormatDateTimeAsColumn, InfrastructureSystems.TimeSeriesFormatPeriodAsColumn}},\n ::Type{<:InfrastructureSystems.StaticTimeSeries},\n file::CSV.File;\n ...\n) -> InfrastructureSystems.RawTimeSeries\nread_time_series(\n ::Type{T<:Union{InfrastructureSystems.TimeSeriesFormatDateTimeAsColumn, InfrastructureSystems.TimeSeriesFormatPeriodAsColumn}},\n ::Type{<:InfrastructureSystems.StaticTimeSeries},\n file::CSV.File,\n component_name;\n kwargs...\n) -> InfrastructureSystems.RawTimeSeries\n\n\nReturn a TimeSeries.TimeArray representing the CSV file.\n\nThis version of the function only has component_name to match the interface. It is unused.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.read_time_series-Union{Tuple{T}, Tuple{Type{T}, Type{InfrastructureSystems.Deterministic}, CSV.File}, Tuple{Type{T}, Type{InfrastructureSystems.Deterministic}, CSV.File, Any}} where T<:InfrastructureSystems.TimeSeriesFormatDateTimeAsColumn","page":"API","title":"InfrastructureSystems.read_time_series","text":"read_time_series(\n ::Type{T<:InfrastructureSystems.TimeSeriesFormatDateTimeAsColumn},\n ::Type{InfrastructureSystems.Deterministic},\n file::CSV.File;\n ...\n) -> InfrastructureSystems.RawTimeSeries\nread_time_series(\n ::Type{T<:InfrastructureSystems.TimeSeriesFormatDateTimeAsColumn},\n ::Type{InfrastructureSystems.Deterministic},\n file::CSV.File,\n component_name;\n kwargs...\n) -> InfrastructureSystems.RawTimeSeries\n\n\nReturn a RawTimeSeries from a CSV file.\n\nPass component_name when the file does not have the component name in a column header.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.read_time_series_file_metadata-Tuple{AbstractString}","page":"API","title":"InfrastructureSystems.read_time_series_file_metadata","text":"read_time_series_file_metadata(\n file_path::AbstractString\n) -> Any\n\n\nReads time_series metadata and fixes relative paths to the data files.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.redirect_stdout_to_log-Tuple{Function}","page":"API","title":"InfrastructureSystems.redirect_stdout_to_log","text":"redirect_stdout_to_log(func::Function) -> Any\n\n\nRedirect all data written to stdout by a function to log events.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.register_recorder!-Tuple{Symbol}","page":"API","title":"InfrastructureSystems.register_recorder!","text":"register_recorder!(name::Symbol; io, mode, directory)\n\n\nRegister a recorder to log events. Afterwards, calls to @record name () will record the event as JSON in .log.\n\nCallers should guarantee that unregister_recorder! is called to close the file handle.\n\nArguments\n\nname::Symbol: name of recorder\nio::Union{Nothing, IO}: If nothing, record events in a file using name.\nmode = \"w\": Only used when io is nothing.\ndirectory = \".\": Only used when io is nothing.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.remove_association!-Tuple{InfrastructureSystems.SupplementalAttributeAssociations, InfrastructureSystems.InfrastructureSystemsComponent, InfrastructureSystems.SupplementalAttribute}","page":"API","title":"InfrastructureSystems.remove_association!","text":"remove_association!(\n associations::InfrastructureSystems.SupplementalAttributeAssociations,\n component::InfrastructureSystems.InfrastructureSystemsComponent,\n attribute::InfrastructureSystems.SupplementalAttribute\n)\n\n\nRemove the association between the attribute and component.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.remove_associations!-Tuple{InfrastructureSystems.SupplementalAttributeAssociations, Type{<:InfrastructureSystems.SupplementalAttribute}}","page":"API","title":"InfrastructureSystems.remove_associations!","text":"remove_associations!(\n associations::InfrastructureSystems.SupplementalAttributeAssociations,\n type::Type{<:InfrastructureSystems.SupplementalAttribute}\n)\n\n\nRemove all associations of the given type.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.remove_component!-Union{Tuple{T}, Tuple{InfrastructureSystems.Components, T}} where T<:InfrastructureSystems.InfrastructureSystemsComponent","page":"API","title":"InfrastructureSystems.remove_component!","text":"remove_component!(\n components::InfrastructureSystems.Components,\n component::InfrastructureSystems.InfrastructureSystemsComponent;\n remove_time_series\n) -> InfrastructureSystems.InfrastructureSystemsComponent\n\n\nRemove a component by its value.\n\nThrows ArgumentError if the component is not stored.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.remove_component!-Union{Tuple{T}, Tuple{Type{T}, InfrastructureSystems.Components, AbstractString}} where T<:InfrastructureSystems.InfrastructureSystemsComponent","page":"API","title":"InfrastructureSystems.remove_component!","text":"remove_component!(\n ::Type{T<:InfrastructureSystems.InfrastructureSystemsComponent},\n components::InfrastructureSystems.Components,\n name::AbstractString;\n remove_time_series\n) -> InfrastructureSystems.InfrastructureSystemsComponent\n\n\nRemove a component by its name.\n\nThrows ArgumentError if the component is not stored.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.remove_component_from_subsystem!-Tuple{InfrastructureSystems.SystemData, AbstractString, InfrastructureSystems.InfrastructureSystemsComponent}","page":"API","title":"InfrastructureSystems.remove_component_from_subsystem!","text":"remove_component_from_subsystem!(\n data::InfrastructureSystems.SystemData,\n subsystem_name::AbstractString,\n component::InfrastructureSystems.InfrastructureSystemsComponent\n)\n\n\nRemove a component from a subsystem.\n\nThrows ArgumentError if the subsystem name or component is not stored.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.remove_components!-Union{Tuple{T}, Tuple{Type{T}, InfrastructureSystems.Components}} where T<:InfrastructureSystems.InfrastructureSystemsComponent","page":"API","title":"InfrastructureSystems.remove_components!","text":"remove_components!(\n _::Type{T<:InfrastructureSystems.InfrastructureSystemsComponent},\n components::InfrastructureSystems.Components\n) -> Base.ValueIterator{T} where T<:(Dict{String, <:InfrastructureSystems.InfrastructureSystemsComponent})\n\n\nRemove all components of type T.\n\nThrows ArgumentError if the type is not stored.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.remove_metadata!-Tuple{InfrastructureSystems.TimeSeriesMetadataStore, Union{InfrastructureSystems.InfrastructureSystemsComponent, InfrastructureSystems.SupplementalAttribute}, InfrastructureSystems.TimeSeriesMetadata}","page":"API","title":"InfrastructureSystems.remove_metadata!","text":"remove_metadata!(\n store::InfrastructureSystems.TimeSeriesMetadataStore,\n owner::Union{InfrastructureSystems.InfrastructureSystemsComponent, InfrastructureSystems.SupplementalAttribute},\n metadata::InfrastructureSystems.TimeSeriesMetadata\n)\n\n\nRemove the matching metadata from the store.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.remove_subsystem!-Tuple{InfrastructureSystems.SystemData, AbstractString}","page":"API","title":"InfrastructureSystems.remove_subsystem!","text":"remove_subsystem!(\n data::InfrastructureSystems.SystemData,\n subsystem_name::AbstractString\n)\n\n\nRemove a subsystem from the system.\n\nThrows ArgumentError if the subsystem name is not stored.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.remove_supplemental_attributes!-Union{Tuple{T}, Tuple{InfrastructureSystems.SupplementalAttributeManager, Type{T}}} where T<:InfrastructureSystems.SupplementalAttribute","page":"API","title":"InfrastructureSystems.remove_supplemental_attributes!","text":"remove_supplemental_attributes!(\n mgr::InfrastructureSystems.SupplementalAttributeManager,\n _::Type{T<:InfrastructureSystems.SupplementalAttribute}\n) -> Base.ValueIterator{T} where T<:(Dict{Base.UUID, <:InfrastructureSystems.SupplementalAttribute})\n\n\nRemove all supplemental_attributes of type T.\n\nIgnores whether attributes are attached to components.\n\nThrows ArgumentError if the type is not stored.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.remove_time_series!-Tuple{InfrastructureSystems.TimeSeriesManager, Type{<:InfrastructureSystems.TimeSeriesData}, Union{InfrastructureSystems.InfrastructureSystemsComponent, InfrastructureSystems.SupplementalAttribute}, String}","page":"API","title":"InfrastructureSystems.remove_time_series!","text":"remove_time_series!(\n mgr::InfrastructureSystems.TimeSeriesManager,\n time_series_type::Type{<:InfrastructureSystems.TimeSeriesData},\n owner::Union{InfrastructureSystems.InfrastructureSystemsComponent, InfrastructureSystems.SupplementalAttribute},\n name::String;\n features...\n)\n\n\nRemove the time series data for a component.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.remove_time_series!-Union{Tuple{T}, Tuple{InfrastructureSystems.SystemData, Type{T}, InfrastructureSystems.InfrastructureSystemsComponent, String}} where T<:InfrastructureSystems.TimeSeriesData","page":"API","title":"InfrastructureSystems.remove_time_series!","text":"remove_time_series!(\n data::InfrastructureSystems.SystemData,\n ::Type{T<:InfrastructureSystems.TimeSeriesData},\n component::InfrastructureSystems.InfrastructureSystemsComponent,\n name::String;\n features...\n)\n\n\nRemove the time series data for a component.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.remove_time_series!-Union{Tuple{T}, Tuple{InfrastructureSystems.SystemData, Type{T}}} where T<:InfrastructureSystems.TimeSeriesData","page":"API","title":"InfrastructureSystems.remove_time_series!","text":"remove_time_series!(\n data::InfrastructureSystems.SystemData,\n _::Type{T<:InfrastructureSystems.TimeSeriesData}\n)\n\n\nRemoves all time series of a particular type from a System.\n\nArguments\n\ndata::SystemData: system\ntype::Type{<:TimeSeriesData}: Type of time series objects to remove.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.replace_component_uuid!-Tuple{InfrastructureSystems.SupplementalAttributeAssociations, Base.UUID, Base.UUID}","page":"API","title":"InfrastructureSystems.replace_component_uuid!","text":"replace_component_uuid!(\n associations::InfrastructureSystems.SupplementalAttributeAssociations,\n old_uuid::Base.UUID,\n new_uuid::Base.UUID\n)\n\n\nReplace the component UUID in the table.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.replace_iterator-Tuple{InfrastructureSystems.LazyDictFromIterator, Any}","page":"API","title":"InfrastructureSystems.replace_iterator","text":"replace_iterator(\n container::InfrastructureSystems.LazyDictFromIterator,\n iter\n)\n\n\nReplace the iterator, maintaining the cached dict.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.report_log_summary-Tuple{InfrastructureSystems.LogEventTracker}","page":"API","title":"InfrastructureSystems.report_log_summary","text":"report_log_summary(\n tracker::InfrastructureSystems.LogEventTracker\n) -> String\n\n\nReturns a summary of log event counts by level.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.report_log_summary-Tuple{InfrastructureSystems.MultiLogger}","page":"API","title":"InfrastructureSystems.report_log_summary","text":"report_log_summary(\n logger::InfrastructureSystems.MultiLogger\n) -> String\n\n\nReturns a summary of log event counts by level.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.reset!-Tuple{InfrastructureSystems.TimeSeriesCache}","page":"API","title":"InfrastructureSystems.reset!","text":"reset!(cache::InfrastructureSystems.TimeSeriesCache)\n\n\nReset parameters in order to start reading data from the beginning with get_next_time_series_array!\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.reset_iterator-Tuple{InfrastructureSystems.LazyDictFromIterator}","page":"API","title":"InfrastructureSystems.reset_iterator","text":"reset_iterator(\n container::InfrastructureSystems.LazyDictFromIterator\n)\n\n\nReset the iterator for cases where underlying arrays have changed.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.serialize-Tuple{T} where T<:InfrastructureSystems.InfrastructureSystemsType","page":"API","title":"InfrastructureSystems.serialize","text":"serialize(\n val::InfrastructureSystems.InfrastructureSystemsType\n) -> Vector{Dict{String, Any}}\n\n\nSerialize the Julia value into standard types that can be converted to non-Julia formats, such as JSON. In cases where val is an instance of a struct, return a Dict. In cases where val is a scalar value, return that value.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.set_component!-Tuple{InfrastructureSystems.TimeSeriesFileMetadata, InfrastructureSystems.SystemData, Module}","page":"API","title":"InfrastructureSystems.set_component!","text":"set_component!(\n metadata::InfrastructureSystems.TimeSeriesFileMetadata,\n data::InfrastructureSystems.SystemData,\n mod::Module\n) -> Union{Nothing, InfrastructureSystems.InfrastructureSystemsComponent}\n\n\nSet the component value in metadata by looking up the category in module. This requires that category be a string version of a component's abstract type. Modules can override for custom behavior.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.set_count!-Tuple{InfrastructureSystems.DeterministicMetadata, Any}","page":"API","title":"InfrastructureSystems.set_count!","text":"set_count!(\n value::InfrastructureSystems.DeterministicMetadata,\n val\n) -> Any\n\n\nSet DeterministicMetadata count.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.set_count!-Tuple{InfrastructureSystems.DeterministicSingleTimeSeries, Any}","page":"API","title":"InfrastructureSystems.set_count!","text":"set_count!(\n value::InfrastructureSystems.DeterministicSingleTimeSeries,\n val\n) -> Any\n\n\nSet DeterministicSingleTimeSeries count.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.set_count!-Tuple{InfrastructureSystems.ProbabilisticMetadata, Any}","page":"API","title":"InfrastructureSystems.set_count!","text":"set_count!(\n value::InfrastructureSystems.ProbabilisticMetadata,\n val\n) -> Any\n\n\nSet ProbabilisticMetadata count.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.set_count!-Tuple{InfrastructureSystems.ScenariosMetadata, Any}","page":"API","title":"InfrastructureSystems.set_count!","text":"set_count!(\n value::InfrastructureSystems.ScenariosMetadata,\n val\n) -> Any\n\n\nSet ScenariosMetadata count.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.set_data!-Tuple{InfrastructureSystems.Deterministic, Any}","page":"API","title":"InfrastructureSystems.set_data!","text":"set_data!(\n value::InfrastructureSystems.Deterministic,\n val\n) -> Any\n\n\nSet Deterministic data.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.set_data!-Tuple{InfrastructureSystems.Probabilistic, Any}","page":"API","title":"InfrastructureSystems.set_data!","text":"set_data!(\n value::InfrastructureSystems.Probabilistic,\n val\n) -> Any\n\n\nSet Probabilistic data.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.set_data!-Tuple{InfrastructureSystems.Scenarios, Any}","page":"API","title":"InfrastructureSystems.set_data!","text":"set_data!(\n value::InfrastructureSystems.Scenarios,\n val\n) -> Any\n\n\nSet Scenarios data.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.set_data!-Tuple{InfrastructureSystems.SingleTimeSeries, Any}","page":"API","title":"InfrastructureSystems.set_data!","text":"set_data!(\n value::InfrastructureSystems.SingleTimeSeries,\n val\n) -> Any\n\n\nSet SingleTimeSeries data.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.set_features!-Tuple{InfrastructureSystems.DeterministicMetadata, Any}","page":"API","title":"InfrastructureSystems.set_features!","text":"set_features!(\n value::InfrastructureSystems.DeterministicMetadata,\n val\n) -> Any\n\n\nSet DeterministicMetadata features.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.set_features!-Tuple{InfrastructureSystems.ProbabilisticMetadata, Any}","page":"API","title":"InfrastructureSystems.set_features!","text":"set_features!(\n value::InfrastructureSystems.ProbabilisticMetadata,\n val\n) -> Any\n\n\nSet ProbabilisticMetadata features.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.set_features!-Tuple{InfrastructureSystems.ScenariosMetadata, Any}","page":"API","title":"InfrastructureSystems.set_features!","text":"set_features!(\n value::InfrastructureSystems.ScenariosMetadata,\n val\n) -> Any\n\n\nSet ScenariosMetadata features.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.set_features!-Tuple{InfrastructureSystems.SingleTimeSeriesMetadata, Any}","page":"API","title":"InfrastructureSystems.set_features!","text":"set_features!(\n value::InfrastructureSystems.SingleTimeSeriesMetadata,\n val\n) -> Any\n\n\nSet SingleTimeSeriesMetadata features.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.set_group_level!-Tuple{InfrastructureSystems.MultiLogger, Symbol, Base.CoreLogging.LogLevel}","page":"API","title":"InfrastructureSystems.set_group_level!","text":"set_group_level!(\n logger::InfrastructureSystems.MultiLogger,\n group::Symbol,\n level::Base.CoreLogging.LogLevel\n)\n\n\nSet the minimum log level for a group.\n\nThe group field of a log message defaults to its file's base name (no extension) as a symbol. It can be customized by setting _group = :a_group_name.\n\nThe minimum log level stored for a console or file logger supercede this setting.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.set_group_levels!-Tuple{InfrastructureSystems.MultiLogger, Dict{Symbol, Base.CoreLogging.LogLevel}}","page":"API","title":"InfrastructureSystems.set_group_levels!","text":"set_group_levels!(\n logger::InfrastructureSystems.MultiLogger,\n group_levels::Dict{Symbol, Base.CoreLogging.LogLevel}\n)\n\n\nSet the minimum log levels for multiple groups. Refer to set_group_level! for more information.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.set_horizon!-Tuple{InfrastructureSystems.DeterministicMetadata, Any}","page":"API","title":"InfrastructureSystems.set_horizon!","text":"set_horizon!(\n value::InfrastructureSystems.DeterministicMetadata,\n val\n) -> Any\n\n\nSet DeterministicMetadata horizon.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.set_horizon!-Tuple{InfrastructureSystems.DeterministicSingleTimeSeries, Any}","page":"API","title":"InfrastructureSystems.set_horizon!","text":"set_horizon!(\n value::InfrastructureSystems.DeterministicSingleTimeSeries,\n val\n) -> Any\n\n\nSet DeterministicSingleTimeSeries horizon.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.set_horizon!-Tuple{InfrastructureSystems.ProbabilisticMetadata, Any}","page":"API","title":"InfrastructureSystems.set_horizon!","text":"set_horizon!(\n value::InfrastructureSystems.ProbabilisticMetadata,\n val\n) -> Any\n\n\nSet ProbabilisticMetadata horizon.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.set_horizon!-Tuple{InfrastructureSystems.ScenariosMetadata, Any}","page":"API","title":"InfrastructureSystems.set_horizon!","text":"set_horizon!(\n value::InfrastructureSystems.ScenariosMetadata,\n val\n) -> Any\n\n\nSet ScenariosMetadata horizon.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.set_initial_timestamp!-Tuple{InfrastructureSystems.DeterministicMetadata, Any}","page":"API","title":"InfrastructureSystems.set_initial_timestamp!","text":"set_initial_timestamp!(\n value::InfrastructureSystems.DeterministicMetadata,\n val\n) -> Any\n\n\nSet DeterministicMetadata initial_timestamp.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.set_initial_timestamp!-Tuple{InfrastructureSystems.DeterministicSingleTimeSeries, Any}","page":"API","title":"InfrastructureSystems.set_initial_timestamp!","text":"set_initial_timestamp!(\n value::InfrastructureSystems.DeterministicSingleTimeSeries,\n val\n) -> Any\n\n\nSet DeterministicSingleTimeSeries initial_timestamp.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.set_initial_timestamp!-Tuple{InfrastructureSystems.ProbabilisticMetadata, Any}","page":"API","title":"InfrastructureSystems.set_initial_timestamp!","text":"set_initial_timestamp!(\n value::InfrastructureSystems.ProbabilisticMetadata,\n val\n) -> Any\n\n\nSet ProbabilisticMetadata initial_timestamp.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.set_initial_timestamp!-Tuple{InfrastructureSystems.ScenariosMetadata, Any}","page":"API","title":"InfrastructureSystems.set_initial_timestamp!","text":"set_initial_timestamp!(\n value::InfrastructureSystems.ScenariosMetadata,\n val\n) -> Any\n\n\nSet ScenariosMetadata initial_timestamp.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.set_initial_timestamp!-Tuple{InfrastructureSystems.SingleTimeSeriesMetadata, Any}","page":"API","title":"InfrastructureSystems.set_initial_timestamp!","text":"set_initial_timestamp!(\n value::InfrastructureSystems.SingleTimeSeriesMetadata,\n val\n) -> Any\n\n\nSet SingleTimeSeriesMetadata initial_timestamp.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.set_internal!-Tuple{InfrastructureSystems.Deterministic, Any}","page":"API","title":"InfrastructureSystems.set_internal!","text":"set_internal!(\n value::InfrastructureSystems.Deterministic,\n val\n) -> Any\n\n\nSet Deterministic internal.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.set_internal!-Tuple{InfrastructureSystems.DeterministicMetadata, Any}","page":"API","title":"InfrastructureSystems.set_internal!","text":"set_internal!(\n value::InfrastructureSystems.DeterministicMetadata,\n val\n) -> Any\n\n\nSet DeterministicMetadata internal.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.set_internal!-Tuple{InfrastructureSystems.Probabilistic, Any}","page":"API","title":"InfrastructureSystems.set_internal!","text":"set_internal!(\n value::InfrastructureSystems.Probabilistic,\n val\n) -> Any\n\n\nSet Probabilistic internal.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.set_internal!-Tuple{InfrastructureSystems.ProbabilisticMetadata, Any}","page":"API","title":"InfrastructureSystems.set_internal!","text":"set_internal!(\n value::InfrastructureSystems.ProbabilisticMetadata,\n val\n) -> Any\n\n\nSet ProbabilisticMetadata internal.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.set_internal!-Tuple{InfrastructureSystems.Scenarios, Any}","page":"API","title":"InfrastructureSystems.set_internal!","text":"set_internal!(\n value::InfrastructureSystems.Scenarios,\n val\n) -> Any\n\n\nSet Scenarios internal.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.set_internal!-Tuple{InfrastructureSystems.ScenariosMetadata, Any}","page":"API","title":"InfrastructureSystems.set_internal!","text":"set_internal!(\n value::InfrastructureSystems.ScenariosMetadata,\n val\n) -> Any\n\n\nSet ScenariosMetadata internal.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.set_internal!-Tuple{InfrastructureSystems.SingleTimeSeries, Any}","page":"API","title":"InfrastructureSystems.set_internal!","text":"set_internal!(\n value::InfrastructureSystems.SingleTimeSeries,\n val\n) -> Any\n\n\nSet SingleTimeSeries internal.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.set_internal!-Tuple{InfrastructureSystems.SingleTimeSeriesMetadata, Any}","page":"API","title":"InfrastructureSystems.set_internal!","text":"set_internal!(\n value::InfrastructureSystems.SingleTimeSeriesMetadata,\n val\n) -> Any\n\n\nSet SingleTimeSeriesMetadata internal.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.set_interval!-Tuple{InfrastructureSystems.DeterministicMetadata, Any}","page":"API","title":"InfrastructureSystems.set_interval!","text":"set_interval!(\n value::InfrastructureSystems.DeterministicMetadata,\n val\n) -> Any\n\n\nSet DeterministicMetadata interval.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.set_interval!-Tuple{InfrastructureSystems.DeterministicSingleTimeSeries, Any}","page":"API","title":"InfrastructureSystems.set_interval!","text":"set_interval!(\n value::InfrastructureSystems.DeterministicSingleTimeSeries,\n val\n) -> Any\n\n\nSet DeterministicSingleTimeSeries interval.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.set_interval!-Tuple{InfrastructureSystems.ProbabilisticMetadata, Any}","page":"API","title":"InfrastructureSystems.set_interval!","text":"set_interval!(\n value::InfrastructureSystems.ProbabilisticMetadata,\n val\n) -> Any\n\n\nSet ProbabilisticMetadata interval.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.set_interval!-Tuple{InfrastructureSystems.ScenariosMetadata, Any}","page":"API","title":"InfrastructureSystems.set_interval!","text":"set_interval!(\n value::InfrastructureSystems.ScenariosMetadata,\n val\n) -> Any\n\n\nSet ScenariosMetadata interval.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.set_length!-Tuple{InfrastructureSystems.SingleTimeSeriesMetadata, Any}","page":"API","title":"InfrastructureSystems.set_length!","text":"set_length!(\n value::InfrastructureSystems.SingleTimeSeriesMetadata,\n val\n) -> Any\n\n\nSet SingleTimeSeriesMetadata length.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.set_name!-Tuple{InfrastructureSystems.Deterministic, Any}","page":"API","title":"InfrastructureSystems.set_name!","text":"set_name!(\n value::InfrastructureSystems.Deterministic,\n val\n) -> Any\n\n\nSet Deterministic name.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.set_name!-Tuple{InfrastructureSystems.DeterministicMetadata, Any}","page":"API","title":"InfrastructureSystems.set_name!","text":"set_name!(\n value::InfrastructureSystems.DeterministicMetadata,\n val\n) -> Any\n\n\nSet DeterministicMetadata name.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.set_name!-Tuple{InfrastructureSystems.Probabilistic, Any}","page":"API","title":"InfrastructureSystems.set_name!","text":"set_name!(\n value::InfrastructureSystems.Probabilistic,\n val\n) -> Any\n\n\nSet Probabilistic name.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.set_name!-Tuple{InfrastructureSystems.ProbabilisticMetadata, Any}","page":"API","title":"InfrastructureSystems.set_name!","text":"set_name!(\n value::InfrastructureSystems.ProbabilisticMetadata,\n val\n) -> Any\n\n\nSet ProbabilisticMetadata name.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.set_name!-Tuple{InfrastructureSystems.Scenarios, Any}","page":"API","title":"InfrastructureSystems.set_name!","text":"set_name!(\n value::InfrastructureSystems.Scenarios,\n val\n) -> Any\n\n\nSet Scenarios name.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.set_name!-Tuple{InfrastructureSystems.ScenariosMetadata, Any}","page":"API","title":"InfrastructureSystems.set_name!","text":"set_name!(\n value::InfrastructureSystems.ScenariosMetadata,\n val\n) -> Any\n\n\nSet ScenariosMetadata name.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.set_name!-Tuple{InfrastructureSystems.SingleTimeSeries, Any}","page":"API","title":"InfrastructureSystems.set_name!","text":"set_name!(\n value::InfrastructureSystems.SingleTimeSeries,\n val\n) -> Any\n\n\nSet SingleTimeSeries name.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.set_name!-Tuple{InfrastructureSystems.SingleTimeSeriesMetadata, Any}","page":"API","title":"InfrastructureSystems.set_name!","text":"set_name!(\n value::InfrastructureSystems.SingleTimeSeriesMetadata,\n val\n) -> Any\n\n\nSet SingleTimeSeriesMetadata name.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.set_percentiles!-Tuple{InfrastructureSystems.Probabilistic, Any}","page":"API","title":"InfrastructureSystems.set_percentiles!","text":"set_percentiles!(\n value::InfrastructureSystems.Probabilistic,\n val\n) -> Any\n\n\nSet Probabilistic percentiles.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.set_percentiles!-Tuple{InfrastructureSystems.ProbabilisticMetadata, Any}","page":"API","title":"InfrastructureSystems.set_percentiles!","text":"set_percentiles!(\n value::InfrastructureSystems.ProbabilisticMetadata,\n val\n) -> Any\n\n\nSet ProbabilisticMetadata percentiles.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.set_resolution!-Tuple{InfrastructureSystems.Deterministic, Any}","page":"API","title":"InfrastructureSystems.set_resolution!","text":"set_resolution!(\n value::InfrastructureSystems.Deterministic,\n val\n) -> Any\n\n\nSet Deterministic resolution.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.set_resolution!-Tuple{InfrastructureSystems.DeterministicMetadata, Any}","page":"API","title":"InfrastructureSystems.set_resolution!","text":"set_resolution!(\n value::InfrastructureSystems.DeterministicMetadata,\n val\n) -> Any\n\n\nSet DeterministicMetadata resolution.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.set_resolution!-Tuple{InfrastructureSystems.Probabilistic, Any}","page":"API","title":"InfrastructureSystems.set_resolution!","text":"set_resolution!(\n value::InfrastructureSystems.Probabilistic,\n val\n) -> Any\n\n\nSet Probabilistic resolution.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.set_resolution!-Tuple{InfrastructureSystems.ProbabilisticMetadata, Any}","page":"API","title":"InfrastructureSystems.set_resolution!","text":"set_resolution!(\n value::InfrastructureSystems.ProbabilisticMetadata,\n val\n) -> Any\n\n\nSet ProbabilisticMetadata resolution.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.set_resolution!-Tuple{InfrastructureSystems.Scenarios, Any}","page":"API","title":"InfrastructureSystems.set_resolution!","text":"set_resolution!(\n value::InfrastructureSystems.Scenarios,\n val\n) -> Any\n\n\nSet Scenarios resolution.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.set_resolution!-Tuple{InfrastructureSystems.ScenariosMetadata, Any}","page":"API","title":"InfrastructureSystems.set_resolution!","text":"set_resolution!(\n value::InfrastructureSystems.ScenariosMetadata,\n val\n) -> Any\n\n\nSet ScenariosMetadata resolution.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.set_resolution!-Tuple{InfrastructureSystems.SingleTimeSeriesMetadata, Any}","page":"API","title":"InfrastructureSystems.set_resolution!","text":"set_resolution!(\n value::InfrastructureSystems.SingleTimeSeriesMetadata,\n val\n) -> Any\n\n\nSet SingleTimeSeriesMetadata resolution.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.set_scaling_factor_multiplier!-Tuple{InfrastructureSystems.Deterministic, Any}","page":"API","title":"InfrastructureSystems.set_scaling_factor_multiplier!","text":"set_scaling_factor_multiplier!(\n value::InfrastructureSystems.Deterministic,\n val\n) -> Any\n\n\nSet Deterministic scaling_factor_multiplier.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.set_scaling_factor_multiplier!-Tuple{InfrastructureSystems.DeterministicMetadata, Any}","page":"API","title":"InfrastructureSystems.set_scaling_factor_multiplier!","text":"set_scaling_factor_multiplier!(\n value::InfrastructureSystems.DeterministicMetadata,\n val\n) -> Any\n\n\nSet DeterministicMetadata scaling_factor_multiplier.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.set_scaling_factor_multiplier!-Tuple{InfrastructureSystems.Probabilistic, Any}","page":"API","title":"InfrastructureSystems.set_scaling_factor_multiplier!","text":"set_scaling_factor_multiplier!(\n value::InfrastructureSystems.Probabilistic,\n val\n) -> Any\n\n\nSet Probabilistic scaling_factor_multiplier.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.set_scaling_factor_multiplier!-Tuple{InfrastructureSystems.ProbabilisticMetadata, Any}","page":"API","title":"InfrastructureSystems.set_scaling_factor_multiplier!","text":"set_scaling_factor_multiplier!(\n value::InfrastructureSystems.ProbabilisticMetadata,\n val\n) -> Any\n\n\nSet ProbabilisticMetadata scaling_factor_multiplier.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.set_scaling_factor_multiplier!-Tuple{InfrastructureSystems.Scenarios, Any}","page":"API","title":"InfrastructureSystems.set_scaling_factor_multiplier!","text":"set_scaling_factor_multiplier!(\n value::InfrastructureSystems.Scenarios,\n val\n) -> Any\n\n\nSet Scenarios scaling_factor_multiplier.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.set_scaling_factor_multiplier!-Tuple{InfrastructureSystems.ScenariosMetadata, Any}","page":"API","title":"InfrastructureSystems.set_scaling_factor_multiplier!","text":"set_scaling_factor_multiplier!(\n value::InfrastructureSystems.ScenariosMetadata,\n val\n) -> Any\n\n\nSet ScenariosMetadata scaling_factor_multiplier.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.set_scaling_factor_multiplier!-Tuple{InfrastructureSystems.SingleTimeSeries, Any}","page":"API","title":"InfrastructureSystems.set_scaling_factor_multiplier!","text":"set_scaling_factor_multiplier!(\n value::InfrastructureSystems.SingleTimeSeries,\n val\n) -> Any\n\n\nSet SingleTimeSeries scaling_factor_multiplier.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.set_scaling_factor_multiplier!-Tuple{InfrastructureSystems.SingleTimeSeriesMetadata, Any}","page":"API","title":"InfrastructureSystems.set_scaling_factor_multiplier!","text":"set_scaling_factor_multiplier!(\n value::InfrastructureSystems.SingleTimeSeriesMetadata,\n val\n) -> Any\n\n\nSet SingleTimeSeriesMetadata scaling_factor_multiplier.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.set_scenario_count!-Tuple{InfrastructureSystems.Scenarios, Any}","page":"API","title":"InfrastructureSystems.set_scenario_count!","text":"set_scenario_count!(\n value::InfrastructureSystems.Scenarios,\n val\n) -> Any\n\n\nSet Scenarios scenario_count.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.set_scenario_count!-Tuple{InfrastructureSystems.ScenariosMetadata, Any}","page":"API","title":"InfrastructureSystems.set_scenario_count!","text":"set_scenario_count!(\n value::InfrastructureSystems.ScenariosMetadata,\n val\n) -> Any\n\n\nSet ScenariosMetadata scenario_count.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.set_single_time_series!-Tuple{InfrastructureSystems.DeterministicSingleTimeSeries, Any}","page":"API","title":"InfrastructureSystems.set_single_time_series!","text":"set_single_time_series!(\n value::InfrastructureSystems.DeterministicSingleTimeSeries,\n val\n) -> Any\n\n\nSet DeterministicSingleTimeSeries single_time_series.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.set_time_series_type!-Tuple{InfrastructureSystems.DeterministicMetadata, Any}","page":"API","title":"InfrastructureSystems.set_time_series_type!","text":"set_time_series_type!(\n value::InfrastructureSystems.DeterministicMetadata,\n val\n) -> Any\n\n\nSet DeterministicMetadata time_series_type.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.set_time_series_uuid!-Tuple{InfrastructureSystems.DeterministicMetadata, Any}","page":"API","title":"InfrastructureSystems.set_time_series_uuid!","text":"set_time_series_uuid!(\n value::InfrastructureSystems.DeterministicMetadata,\n val\n) -> Any\n\n\nSet DeterministicMetadata time_series_uuid.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.set_time_series_uuid!-Tuple{InfrastructureSystems.ProbabilisticMetadata, Any}","page":"API","title":"InfrastructureSystems.set_time_series_uuid!","text":"set_time_series_uuid!(\n value::InfrastructureSystems.ProbabilisticMetadata,\n val\n) -> Any\n\n\nSet ProbabilisticMetadata time_series_uuid.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.set_time_series_uuid!-Tuple{InfrastructureSystems.ScenariosMetadata, Any}","page":"API","title":"InfrastructureSystems.set_time_series_uuid!","text":"set_time_series_uuid!(\n value::InfrastructureSystems.ScenariosMetadata,\n val\n) -> Any\n\n\nSet ScenariosMetadata time_series_uuid.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.set_time_series_uuid!-Tuple{InfrastructureSystems.SingleTimeSeriesMetadata, Any}","page":"API","title":"InfrastructureSystems.set_time_series_uuid!","text":"set_time_series_uuid!(\n value::InfrastructureSystems.SingleTimeSeriesMetadata,\n val\n) -> Any\n\n\nSet SingleTimeSeriesMetadata time_series_uuid.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.show_recorder_events-Union{Tuple{T}, Tuple{Type{T}, AbstractString}, Tuple{Type{T}, AbstractString, Union{Nothing, Function}}} where T<:InfrastructureSystems.AbstractRecorderEvent","page":"API","title":"InfrastructureSystems.show_recorder_events","text":"show_recorder_events(\n ::Type{T<:InfrastructureSystems.AbstractRecorderEvent},\n filename::AbstractString;\n ...\n)\nshow_recorder_events(\n ::Type{T<:InfrastructureSystems.AbstractRecorderEvent},\n filename::AbstractString,\n filter_func::Union{Nothing, Function};\n kwargs...\n)\n\n\nShow the events of type T in filename in a table. Refer to PrettyTables.jl documentation for accepted kwargs.\n\nArguments\n\nT: event type\nfilename::AbstractString: filename containing recorder events\nfilter_func::Union{Nothing, Function} = nothing: Optional function that accepts an event of type T and returns a Bool. Apply this function to each event and only return events where the result is true.\nexclude_columns = Set{String}(): Column names to exclude from the table\nkwargs: Passed to PrettyTables\n\nExamples\n\nshow_recorder_events(TestEvent, test_recorder.log)\nshow_recorder_events(TestEvent, test_recorder.log, x -> x.val2 > 2)\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.show_supplemental_attributes-Tuple{InfrastructureSystems.InfrastructureSystemsComponent}","page":"API","title":"InfrastructureSystems.show_supplemental_attributes","text":"show_supplemental_attributes(\n component::InfrastructureSystems.InfrastructureSystemsComponent\n)\n\n\nShow a table with supplemental attributes attached to the component.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.show_time_series-Tuple{Union{InfrastructureSystems.InfrastructureSystemsComponent, InfrastructureSystems.SupplementalAttribute}}","page":"API","title":"InfrastructureSystems.show_time_series","text":"show_time_series(\n owner::Union{InfrastructureSystems.InfrastructureSystemsComponent, InfrastructureSystems.SupplementalAttribute}\n)\n\n\nShow a table with time series data attached to the component.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.sql","page":"API","title":"InfrastructureSystems.sql","text":"sql(\n associations::InfrastructureSystems.SupplementalAttributeAssociations,\n query::String\n) -> DataFrames.DataFrame\nsql(\n associations::InfrastructureSystems.SupplementalAttributeAssociations,\n query::String,\n params\n) -> DataFrames.DataFrame\n\n\nRun a query and return the results in a DataFrame.\n\n\n\n\n\n","category":"function"},{"location":"InfrastructureSystems/#InfrastructureSystems.sql-2","page":"API","title":"InfrastructureSystems.sql","text":"sql(\n store::InfrastructureSystems.TimeSeriesMetadataStore,\n query::String\n) -> DataFrames.DataFrame\nsql(\n store::InfrastructureSystems.TimeSeriesMetadataStore,\n query::String,\n params\n) -> DataFrames.DataFrame\n\n\nRun a query and return the results in a DataFrame.\n\n\n\n\n\n","category":"function"},{"location":"InfrastructureSystems/#InfrastructureSystems.strip_module_name-Tuple{String}","page":"API","title":"InfrastructureSystems.strip_module_name","text":"strip_module_name(name::String) -> String\n\n\nStrips the module name off of a type. This can be useful to print types as strings and receive consistent results regardless of whether the user used import or using to load a package.\n\nUnlike Base.nameof, this function preserves any parametric types.\n\nExamples\n\njulia> strip_module_name(PowerSystems.RegulationDevice{ThermalStandard})\n\"RegulationDevice{ThermalStandard}\"\njulia> string(nameof(PowerSystems.RegulationDevice{ThermalStandard}))\n\"RegulationDevice\"\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.supertypes-Union{Tuple{Type{T}}, Tuple{T}, Tuple{Type{T}, Any}} where T","page":"API","title":"InfrastructureSystems.supertypes","text":"supertypes(::Type{T}) -> Vector{Any}\nsupertypes(::Type{T}, types) -> Any\n\n\nReturns an array of all super types of T.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.tail-Tuple{InfrastructureSystems.SingleTimeSeries}","page":"API","title":"InfrastructureSystems.tail","text":"tail(\n time_series::InfrastructureSystems.SingleTimeSeries\n) -> Any\n\n\nReturn a time_series with only the ending num values.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.test_generated_structs-Tuple{Any, Any}","page":"API","title":"InfrastructureSystems.test_generated_structs","text":"test_generated_structs(\n descriptor_file,\n existing_dir\n) -> Bool\n\n\nReturn true if the structs defined in existingdir match structs freshly-generated from descriptorfile.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.to-Tuple{InfrastructureSystems.SingleTimeSeries, Any}","page":"API","title":"InfrastructureSystems.to","text":"to(\n time_series::InfrastructureSystems.SingleTimeSeries,\n timestamp\n) -> InfrastructureSystems.SingleTimeSeries\n\n\nReturn a time_series truncated after timestamp.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.to_dict-Tuple{InfrastructureSystems.SystemData}","page":"API","title":"InfrastructureSystems.to_dict","text":"to_dict(\n data::InfrastructureSystems.SystemData\n) -> Dict{String, Any}\n\n\nSerialize all system and component data to a dictionary.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.to_json-Tuple{T} where T<:InfrastructureSystems.InfrastructureSystemsType","page":"API","title":"InfrastructureSystems.to_json","text":"to_json(\n obj::InfrastructureSystems.InfrastructureSystemsType;\n pretty,\n indent\n) -> Any\n\n\nSerializes a InfrastructureSystemsType to a JSON string.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.to_json-Union{Tuple{T}, Tuple{T, AbstractString}} where T<:InfrastructureSystems.InfrastructureSystemsType","page":"API","title":"InfrastructureSystems.to_json","text":"to_json(\n obj::InfrastructureSystems.InfrastructureSystemsType;\n pretty,\n indent\n) -> Any\n\n\nSerializes a InfrastructureSystemsType to a JSON file.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.to_records-Tuple{InfrastructureSystems.SupplementalAttributeAssociations}","page":"API","title":"InfrastructureSystems.to_records","text":"to_records(\n associations::InfrastructureSystems.SupplementalAttributeAssociations\n) -> Vector\n\n\nReturn all rows in the table as dictionaries.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.transform_single_time_series!-Tuple{InfrastructureSystems.SystemData, Type{<:InfrastructureSystems.DeterministicSingleTimeSeries}, Dates.Period, Dates.Period}","page":"API","title":"InfrastructureSystems.transform_single_time_series!","text":"transform_single_time_series!(\n data::InfrastructureSystems.SystemData,\n _::Type{<:InfrastructureSystems.DeterministicSingleTimeSeries},\n horizon::Dates.Period,\n interval::Dates.Period\n)\n\n\nTransform all instances of SingleTimeSeries to DeterministicSingleTimeSeries. If all SingleTimeSeries instances cannot be transformed then none will be.\n\nAny existing DeterministicSingleTimeSeries forecasts will be deleted even if the inputs are invalid.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.unregister_recorder!-Tuple{Symbol}","page":"API","title":"InfrastructureSystems.unregister_recorder!","text":"unregister_recorder!(name::Symbol; close_io) -> Any\n\n\nUnregister the recorder with this name and stop recording events.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.validate_exported_names-Tuple{Module}","page":"API","title":"InfrastructureSystems.validate_exported_names","text":"validate_exported_names(mod::Module) -> Bool\n\n\nReturn true if all publicly exported names in mod are defined.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.validate_struct-Tuple{InfrastructureSystems.InfrastructureSystemsType}","page":"API","title":"InfrastructureSystems.validate_struct","text":"validate_struct(\n ist::InfrastructureSystems.InfrastructureSystemsType\n) -> Bool\n\n\nValidates a struct using only information within the struct.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.when-Tuple{InfrastructureSystems.SingleTimeSeries, Function, Integer}","page":"API","title":"InfrastructureSystems.when","text":"when(\n time_series::InfrastructureSystems.SingleTimeSeries,\n period::Function,\n t::Integer\n) -> Any\n\n\nRefer to TimeSeries.when(). Underlying data is copied.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.@assert_op-Tuple{Any}","page":"API","title":"InfrastructureSystems.@assert_op","text":"Throw an AssertionError if conditions like op(exp1, exp2) are false, where op is a conditional infix operator.\n\nExamples\n\njulia> a = 3; b = 4;\njulia> @assert_op a == b\nERROR: AssertionError: 3 == 4\n\njulia> @assert_op a + 3 > b + 4\nERROR: AssertionError: 6 > 8\n\n\n\n\n\n","category":"macro"},{"location":"InfrastructureSystems/#InfrastructureSystems.@record-Tuple{Any, Any}","page":"API","title":"InfrastructureSystems.@record","text":"Record an event if the recorder with name is enabled.\n\nArguments\n\nname::Symbol: name of recorder\nevent::AbstractRecorderEvent: event to record\n\nExamples\n\n@record simulation TestEvent(\"start\", 1, 2.0)\n\n\n\n\n\n","category":"macro"},{"location":"InfrastructureSystems/#InfrastructureSystems.@scoped_enum-Tuple{Any, Vararg{Any}}","page":"API","title":"InfrastructureSystems.@scoped_enum","text":"Macro to wrap Enum in a module to keep the top level scope clean.\n\nExamples\n\njulia> @scoped_enum Fruit APPLE = 1 ORANGE = 2\n\njulia> value = Fruit.APPLE\nFruit.APPLE = 1\n\njulia> value = Fruit(1)\nFruit.APPLE = 1\n\njulia> @scoped_enum(Fruit,\n APPLE = 1, # comment\n ORANGE = 2, # comment\n)\n\n\n\n\n\n","category":"macro"},{"location":"dev_guide/auto_generation/#Auto-Generation-of-Component-Structs","page":"Auto-Generation of Component Structs","title":"Auto-Generation of Component Structs","text":"","category":"section"},{"location":"dev_guide/auto_generation/","page":"Auto-Generation of Component Structs","title":"Auto-Generation of Component Structs","text":"InfrastructureSystems.jl provides a mechanism to auto-generate Julia files containing structs and field accessor functions from JSON descriptors. Here are reasons to consider using this approach:","category":"page"},{"location":"dev_guide/auto_generation/","page":"Auto-Generation of Component Structs","title":"Auto-Generation of Component Structs","text":"Auto-generation allows for easy refactoring of code. Adding fields to many structs can be tedious because you might have to edit many constructors. This process eliminates boiler-plate edits.\nThe JSON descriptor format includes a mechanism to define range validation on component fields. Validation can be enabled when adding components to a system.\nProvides consistent formatting of structs, fields, and constructors.\nProvides consistent documentation of structs and fields.","category":"page"},{"location":"dev_guide/auto_generation/#Instructions","page":"Auto-Generation of Component Structs","title":"Instructions","text":"","category":"section"},{"location":"dev_guide/auto_generation/","page":"Auto-Generation of Component Structs","title":"Auto-Generation of Component Structs","text":"Refer to the docstrings for generate_struct and generate_structs and generate the files from the REPL.","category":"page"},{"location":"dev_guide/auto_generation/","page":"Auto-Generation of Component Structs","title":"Auto-Generation of Component Structs","text":"Or","category":"page"},{"location":"dev_guide/auto_generation/","page":"Auto-Generation of Component Structs","title":"Auto-Generation of Component Structs","text":"Create or modify the JSON descriptor file. Follow the PowerSystems.jl example.\nRun the generation script, passing your descriptor file and an output directory.","category":"page"},{"location":"dev_guide/auto_generation/","page":"Auto-Generation of Component Structs","title":"Auto-Generation of Component Structs","text":"InfrastructureSystems.generate_structs(\n \"./src/descriptors/power_system_structs.json\",\n \"./src/models/generated\",\n)","category":"page"},{"location":"dev_guide/auto_generation/#Struct-Descriptor-Rules","page":"Auto-Generation of Component Structs","title":"Struct Descriptor Rules","text":"","category":"section"},{"location":"dev_guide/auto_generation/","page":"Auto-Generation of Component Structs","title":"Auto-Generation of Component Structs","text":"Each struct descriptor must define the following fields:","category":"page"},{"location":"dev_guide/auto_generation/","page":"Auto-Generation of Component Structs","title":"Auto-Generation of Component Structs","text":"struct_name: Name of struct\ndocstring: The docstring of the struct\nfields: Array of struct members. See below for requirements.\nsupertype: Declare the struct with this parent type.","category":"page"},{"location":"dev_guide/auto_generation/","page":"Auto-Generation of Component Structs","title":"Auto-Generation of Component Structs","text":"Required fields for each struct member:","category":"page"},{"location":"dev_guide/auto_generation/","page":"Auto-Generation of Component Structs","title":"Auto-Generation of Component Structs","text":"name: Name of field\ndata_type: Type of field","category":"page"},{"location":"dev_guide/auto_generation/","page":"Auto-Generation of Component Structs","title":"Auto-Generation of Component Structs","text":"Optional fields for each struct member:","category":"page"},{"location":"dev_guide/auto_generation/","page":"Auto-Generation of Component Structs","title":"Auto-Generation of Component Structs","text":"accessor_module: Set this if the getter/setter functions are reimplementing a method defined in a different module.\ncomment: Field comment\ndefault: The constructors will define this as a default value.\nexclude_setter: Do not generate a setter function for this field.\ninternal_default: Set to true for non-user-facing fields like InfrastructureSystemsInternal that have default values.\nneeds_conversion: Set to true if the getter and setter function needs to apply unit conversion. The type must implement\nget_value(::InfrastructureSystemsComponent, ::Type) and\nset_value(::InfrastructureSystemsComponent, ::Type) for this combination of component type and member type.\nnull_value: Value to indicate the value is null, such as 0.0 for floating point numbers. If all members in the struct define this field then a \"demo\" constructor will be generated. This allows you to enter val = MyType(nothing) in the REPL and see the layout of a struct without worrying about valid values.\nvalid_range: Define this as a Dict with min and max and InfrastructureSystems.jl will validate any value against that range when you add the component to the system. Use null if one doesn't apply, such as if there is no max limit.\nvalidation_action: Define this as error or warn. If it is error then InfrastructureSystems.jl will raise an exception if the validation code detects a problem. Otherwise, it will log a warning.","category":"page"},{"location":"dev_guide/auto_generation/","page":"Auto-Generation of Component Structs","title":"Auto-Generation of Component Structs","text":"Notes:","category":"page"},{"location":"dev_guide/auto_generation/","page":"Auto-Generation of Component Structs","title":"Auto-Generation of Component Structs","text":"You will need to decide how to manage the generated files. The Sienna packages keep the generated code in the git repository. This is not required. You could choose to generate them at startup.\nYou may need to create custom constructors and this approach will not allow you to put them in the same file as the struct definition.","category":"page"},{"location":"dev_guide/components_and_container/#Managing-Components","page":"Managing Components","title":"Managing Components","text":"","category":"section"},{"location":"dev_guide/components_and_container/","page":"Managing Components","title":"Managing Components","text":"InfrastructureSystems.jl provides a common way of managing component structs in a system.","category":"page"},{"location":"dev_guide/components_and_container/#Type-hierachy","page":"Managing Components","title":"Type hierachy","text":"","category":"section"},{"location":"dev_guide/components_and_container/","page":"Managing Components","title":"Managing Components","text":"Make every component a subtype of InfrastructureSystemsComponent.","category":"page"},{"location":"dev_guide/components_and_container/#InfrastructureSystemsInternal","page":"Managing Components","title":"InfrastructureSystemsInternal","text":"","category":"section"},{"location":"dev_guide/components_and_container/","page":"Managing Components","title":"Managing Components","text":"Add this struct to every component struct.","category":"page"},{"location":"dev_guide/components_and_container/","page":"Managing Components","title":"Managing Components","text":"It automatically creates a UUID for the component. This guarantees a unique way to identify the component.\nIt optionally provides an extension dictionary for user data. A user extending your package may want to use your struct but need one more field. Rather than create a new type they can add data to this ext object.","category":"page"},{"location":"dev_guide/components_and_container/#Instructions-to-implement-a-Component","page":"Managing Components","title":"Instructions to implement a Component","text":"","category":"section"},{"location":"dev_guide/components_and_container/","page":"Managing Components","title":"Managing Components","text":"Add the field to your struct. The constructor does not take any parameters.","category":"page"},{"location":"dev_guide/components_and_container/","page":"Managing Components","title":"Managing Components","text":"struct MyComponent\n internal::InfrastructureSystemsInternal\nend\n\n# Optional\nget_ext(c::MyComponent) = InfrastructureSystems.get_ext(c.ext)\nclear_ext!(c::MyComponent) = InfrastructureSystems.clear_ext(c.ext)","category":"page"},{"location":"dev_guide/components_and_container/","page":"Managing Components","title":"Managing Components","text":"Implement this function with true or false depending on whether your component type will support time series data. The default method returns false.","category":"page"},{"location":"dev_guide/components_and_container/","page":"Managing Components","title":"Managing Components","text":"supports_time_series(::MyComponent) = true","category":"page"},{"location":"dev_guide/components_and_container/","page":"Managing Components","title":"Managing Components","text":"Implement this function with true or false depending on whether your component type will support supplemental attributes. The default method returns true.","category":"page"},{"location":"dev_guide/components_and_container/","page":"Managing Components","title":"Managing Components","text":"supports_supplemental_attributes(::MyComponent) = true","category":"page"},{"location":"dev_guide/components_and_container/","page":"Managing Components","title":"Managing Components","text":"Notes:","category":"page"},{"location":"dev_guide/components_and_container/","page":"Managing Components","title":"Managing Components","text":"InfrastructureSystems.get_uuid with argument obj::InfrastructureSystemsComponent returns the component UUID.\nThe extension dictionary is not created until the first time get_ext is called.","category":"page"},{"location":"dev_guide/components_and_container/#Interface-requirements","page":"Managing Components","title":"Interface requirements","text":"","category":"section"},{"location":"dev_guide/components_and_container/","page":"Managing Components","title":"Managing Components","text":"Implement these methods for every struct.","category":"page"},{"location":"dev_guide/components_and_container/","page":"Managing Components","title":"Managing Components","text":"get_internal(c::MyComponent)::InfrastructureSystemsInternal\nget_name(c::MyComponent)::String","category":"page"},{"location":"dev_guide/components_and_container/","page":"Managing Components","title":"Managing Components","text":"If the struct supports time series (default is false):","category":"page"},{"location":"dev_guide/components_and_container/","page":"Managing Components","title":"Managing Components","text":"supports_time_series(::MyComponent) = true","category":"page"},{"location":"dev_guide/components_and_container/#Component-Container","page":"Managing Components","title":"Component Container","text":"","category":"section"},{"location":"dev_guide/components_and_container/","page":"Managing Components","title":"Managing Components","text":"InfrastructureSystems.jl provides the SystemData struct to store a collection of components.","category":"page"},{"location":"dev_guide/components_and_container/","page":"Managing Components","title":"Managing Components","text":"It is recommended but not required that you include this struct within your own system struct for these reasons:","category":"page"},{"location":"dev_guide/components_and_container/","page":"Managing Components","title":"Managing Components","text":"Provides search and iteration with InfrastructureSystems.get_component and InfrastructureSystems.get_components for abstract and concrete types.\nEnforces name uniqueness within a concrete type.\nAllows for component field validation.\nEnables component JSON serialization and deserialization.","category":"page"},{"location":"dev_guide/components_and_container/#Instructions-on-how-to-use-the-SystemData-container","page":"Managing Components","title":"Instructions on how to use the SystemData container","text":"","category":"section"},{"location":"dev_guide/components_and_container/","page":"Managing Components","title":"Managing Components","text":"Add an instance of SystemData to your system struct.\nOptionally pass a component validation descriptor file to the constructor.\nOptionally pass time_series_in_memory = true to the constructor if you know that all time series data will fit in memory and want a performance boost.\nRedirect these function calls to your instance of SystemData.","category":"page"},{"location":"dev_guide/components_and_container/","page":"Managing Components","title":"Managing Components","text":"add_component!\nremove_component!\nget_component\nget_components\nget_components_by_name\nadd_time_series!","category":"page"},{"location":"dev_guide/components_and_container/#Importing-InfrastructureSystems-methods","page":"Managing Components","title":"Importing InfrastructureSystems methods","text":"","category":"section"},{"location":"dev_guide/components_and_container/","page":"Managing Components","title":"Managing Components","text":"It is recommended that you perform redirection on methods that act on SystemData so that those methods don't show up in Julia help or in methods output. For example:","category":"page"},{"location":"dev_guide/components_and_container/","page":"Managing Components","title":"Managing Components","text":"get_time_series_resolution(sys::MySystem) =\n InfrastructureSystems.get_time_series_resolution(sys.data)","category":"page"},{"location":"dev_guide/components_and_container/","page":"Managing Components","title":"Managing Components","text":"On the other hand, it is recommended that you import methods that act on an InfrastructureSystemsComponent into your package's namespace so that you don't have to duplicate docstrings and perform redirection. For example:","category":"page"},{"location":"dev_guide/components_and_container/","page":"Managing Components","title":"Managing Components","text":"import InfrastructureSystems: get_time_series","category":"page"},{"location":"dev_guide/time_series/#Time-Series-Data","page":"Time Series Data","title":"Time Series Data","text":"","category":"section"},{"location":"dev_guide/time_series/","page":"Time Series Data","title":"Time Series Data","text":"InfrastructureSystems.jl implements containers and routines to efficiently manage time series data. This document contains content for developers of new time series data. For the usage please refer to the documentation in PowerSystems.jl.","category":"page"},{"location":"dev_guide/time_series/","page":"Time Series Data","title":"Time Series Data","text":"InfrastructureSystems.jl provides a mechanism to store time series data for components. Here are reasons to consider using it:","category":"page"},{"location":"dev_guide/time_series/","page":"Time Series Data","title":"Time Series Data","text":"Time series data, by default, is stored independently of components in HDF5 files. Components store references to that data.\nSystem memory is not depleted by loading all time series data at once. Only data that you need is loaded.\nMultiple components can share the same time series data by sharing references instead of making expensive copies.\nSupports serialization and deserialization.\nSupports parsing raw data files of several formats as well as data stored in TimeSeries.TimeArray and DataFrames.DataFrame objects.","category":"page"},{"location":"dev_guide/time_series/","page":"Time Series Data","title":"Time Series Data","text":"Your package must reimplement a deepcopy method if you use HDF5 storage for TimeSeriesData.","category":"page"},{"location":"dev_guide/time_series/","page":"Time Series Data","title":"Time Series Data","text":"If you store an instance of InfrastructureSystems.SystemData within your system and then a user calls deepcopy on a system, the .h5 file will not be copied. The new and old instances will have references to the same file. You will need to reimplement deepcopy to handle this. One solution is to serialize and then deserialize the system.","category":"page"},{"location":"dev_guide/time_series/","page":"Time Series Data","title":"Time Series Data","text":"Notes:","category":"page"},{"location":"dev_guide/time_series/","page":"Time Series Data","title":"Time Series Data","text":"Time series data can optionally be stored fully in memory. Refer to the InfrastructureSystems.SystemData documentation.\nInfrastructureSystems.jl creates HDF5 files on the tmp filesystem by default, using the location obtained from tempdir(). This can be changed if the time series data is larger than the amount of tmp space available. Refer to the InfrastructureSystems.SystemData link above.\nBy default, the call to add_time_series! will open the .h5 file, write the data to the file, and close the file. Opening and closing the file has overhead. If you will add thousands of time series arrays, consider using open_time_series_store! to add all the arrays with one file handle.","category":"page"},{"location":"dev_guide/time_series/#Instructions","page":"Time Series Data","title":"Instructions","text":"","category":"section"},{"location":"dev_guide/time_series/","page":"Time Series Data","title":"Time Series Data","text":"Ensure that supports_time_series(::MyComponent) returns true for the struct. It may be implemented on a supertype of the struct.","category":"page"},{"location":"dev_guide/time_series/#Data-Format","page":"Time Series Data","title":"Data Format","text":"","category":"section"},{"location":"dev_guide/time_series/","page":"Time Series Data","title":"Time Series Data","text":"Time series arrays are stored in an HDF5 file according the format described here.","category":"page"},{"location":"dev_guide/time_series/","page":"Time Series Data","title":"Time Series Data","text":"The root path /time_series defines these HDF5 attributes to control deserialization:","category":"page"},{"location":"dev_guide/time_series/","page":"Time Series Data","title":"Time Series Data","text":"data_format_version: Designates the InfrastructureSystems format for the file.\ncompression_enabled: Specifies whether compression is enabled and will be used for new time series.\ncompression_type: Specifies the type of compression being used.\ncompression_level: Specifies the level of compression being used.\ncompression_shuffle: Specifies whether the shuffle filter is being used.","category":"page"},{"location":"dev_guide/time_series/","page":"Time Series Data","title":"Time Series Data","text":"Each time series array is stored in an HDF5 group named with the array's UUID. Each group contains a dataset called data which contains the actual data. Each group also contains a group called component_references which contains an HDF5 attribute for each component reference. The component reference uses the format __.","category":"page"},{"location":"dev_guide/time_series/","page":"Time Series Data","title":"Time Series Data","text":"Each time series group defines attributes that control how the data will be deserialized into a TimeSeriesData instance.","category":"page"},{"location":"dev_guide/time_series/","page":"Time Series Data","title":"Time Series Data","text":"initial_timestamp: Defines the first timestamp of the array. (All times are not stored.)\nresolution: Resolution of the time series in milliseconds.\ntype: Type of the time series. Subtype of TimeSeriesData.\nmodule: Module that defines the type of the time series.\ndata_type: Describes the type of the array stored.","category":"page"},{"location":"dev_guide/time_series/","page":"Time Series Data","title":"Time Series Data","text":"Example:","category":"page"},{"location":"dev_guide/time_series/","page":"Time Series Data","title":"Time Series Data","text":"/time_series\n data_format_version = \"1.0.1\"\n compression_enabled = 1\n /9f02f706-3394-4af3-8084-8903d302cbba\n /component_references\n 0b6ecb61-8e8d-4563-b795-f001246c3ea5__max_active_power\n 613ddbc2-b666-4c9d-adb5-fa69e7f40a95__max_active_power\n /data","category":"page"},{"location":"dev_guide/time_series/#Debugging","page":"Time Series Data","title":"Debugging","text":"","category":"section"},{"location":"dev_guide/time_series/","page":"Time Series Data","title":"Time Series Data","text":"The HDF Group provides tools to inspect and manipulate files. Refer to their website.","category":"page"},{"location":"dev_guide/time_series/","page":"Time Series Data","title":"Time Series Data","text":"HDFView is especially useful for viewing data. Note that using h5ls and h5dump in a terminal combined with UNIX tools like grep can sometimes be faster.","category":"page"},{"location":"dev_guide/time_series/#Maintenance","page":"Time Series Data","title":"Maintenance","text":"","category":"section"},{"location":"dev_guide/time_series/","page":"Time Series Data","title":"Time Series Data","text":"If you delete time series arrays in your system you may notice that the actual size of the HDF5 does not decrease. The only way to recover this space is to build a new file with only the active objects. The HDF5 tools package provides the tool h5repack for this purpose.","category":"page"},{"location":"dev_guide/time_series/","page":"Time Series Data","title":"Time Series Data","text":"$ h5repack time_series.h5 new.h5\n$ mv new.h5 time_series.h5","category":"page"},{"location":"dev_guide/logging/#Logging","page":"Logging","title":"Logging","text":"","category":"section"},{"location":"dev_guide/logging/","page":"Logging","title":"Logging","text":"InfrastructureSystems.jl provides a MultiLogger object that allows customized logging to console and file. Refer to the logging documentation.","category":"page"},{"location":"dev_guide/logging/","page":"Logging","title":"Logging","text":"If you want to create a package-specific log file during a simulation, consider the workflow used by PowerSimulations.jl. It creates a custom logger in its build!(Simulation) function and then uses Julia's Logging.with_logger function to temporarily take over the global logger during build() and execute().","category":"page"},{"location":"dev_guide/logging/","page":"Logging","title":"Logging","text":"This document describes logging facilities available in the modules that use InfrastructureSystems.jl. The examples assume the following imports:","category":"page"},{"location":"dev_guide/logging/","page":"Logging","title":"Logging","text":"import Logging\nimport InfrastructureSystems:\n configure_logging,\n open_file_logger,\n MultiLogger,\n LogEventTracker,\n make_logging_config_file,\n report_log_summary","category":"page"},{"location":"dev_guide/logging/","page":"Logging","title":"Logging","text":"Note: Packages that depend on InfrastructureSystems.jl already re-export configure_logging, open_file_logger, MultiLogger, LogEventTracker","category":"page"},{"location":"dev_guide/logging/#Use-Cases","page":"Logging","title":"Use Cases","text":"","category":"section"},{"location":"dev_guide/logging/#Enable-logging-in-REPL-or-Jupyter-Notebook","page":"Logging","title":"Enable logging in REPL or Jupyter Notebook","text":"","category":"section"},{"location":"dev_guide/logging/","page":"Logging","title":"Logging","text":"Use InfrastructureSystems.configure_logging to create a logger with your preferences (console and/or file, levels, etc.).","category":"page"},{"location":"dev_guide/logging/","page":"Logging","title":"Logging","text":"Note: log messages are not automatically flushed to files. Call flush(logger) to make this happen.","category":"page"},{"location":"dev_guide/logging/","page":"Logging","title":"Logging","text":"Example: Global logger configuration","category":"page"},{"location":"dev_guide/logging/","page":"Logging","title":"Logging","text":"logger = configure_logging(; filename = \"log.txt\")\n@info \"hello world\"\nflush(logger)\n@error \"some error\"\nclose(logger)","category":"page"},{"location":"dev_guide/logging/","page":"Logging","title":"Logging","text":"You can also configure logging from a configuration file.","category":"page"},{"location":"dev_guide/logging/","page":"Logging","title":"Logging","text":"make_logging_config_file(\"logging_config.toml\")\n# Customize in an editor.\nlogger = configure_logging(\"logging_config.toml\")","category":"page"},{"location":"dev_guide/logging/#Enable-debug-logging-for-code-you-are-debugging-but-not-for-noisy-areas-you-don't-care-about.","page":"Logging","title":"Enable debug logging for code you are debugging but not for noisy areas you don't care about.","text":"","category":"section"},{"location":"dev_guide/logging/","page":"Logging","title":"Logging","text":"InfrastructureSystems uses the _group field of a log event to perform additional filtering. All debug log messages that run frequently should have this field defined.","category":"page"},{"location":"dev_guide/logging/","page":"Logging","title":"Logging","text":"Note that the default value of _group for a log event is its filename. Refer to the Julia docs for more information.","category":"page"},{"location":"dev_guide/logging/","page":"Logging","title":"Logging","text":"Run this in the REPL to see commonly-used groups in InfrastructureSystems:","category":"page"},{"location":"dev_guide/logging/","page":"Logging","title":"Logging","text":"@show InfrastructureSystems.LOG_GROUPS","category":"page"},{"location":"dev_guide/logging/","page":"Logging","title":"Logging","text":"You can tell InfrastructureSystems to filter out messages from a particular group in two ways:","category":"page"},{"location":"dev_guide/logging/","page":"Logging","title":"Logging","text":"Specify the group level in the logging_config.toml file mentioned above and configure logging with it.\nChange the logger dynamically from with Julia. Here is an example:","category":"page"},{"location":"dev_guide/logging/","page":"Logging","title":"Logging","text":"logger = configure_logging(; console_level = Logging.Debug)\nInfrastructureSystems.set_group_level!(\n logger,\n InfrastructureSystems.LOG_GROUP_TIME_SERIES,\n Logging.Info,\n)\n\n# Or many at once.\nInfrastructureSystems.set_group_levels!(\n logger,\n Dict(\n InfrastructureSystems.LOG_GROUP_SERIALIZATION => Logging.Info,\n InfrastructureSystems.LOG_GROUP_TIME_SERIES => Logging.Info,\n ),\n)\n\n# Get current settings\nInfrastructureSystems.get_group_levels(logger)\nInfrastructureSystems.get_group_level(logger, InfrastructureSystems.LOG_GROUP_TIME_SERIES)","category":"page"},{"location":"dev_guide/logging/#Log-to-console-and-file-in-an-application-or-unit-test-environment","page":"Logging","title":"Log to console and file in an application or unit test environment","text":"","category":"section"},{"location":"dev_guide/logging/","page":"Logging","title":"Logging","text":"Create a MultiLogger from TerminalLoggers.TerminalLogger and Logging.SimpleLogger. Use open_file_logger to guarantee that all messages get flushed to the file.","category":"page"},{"location":"dev_guide/logging/","page":"Logging","title":"Logging","text":"Note that you can use Logging.ConsoleLogger if you don't have TerminalLoggers installed.","category":"page"},{"location":"dev_guide/logging/","page":"Logging","title":"Logging","text":"Example Multilogger configuration","category":"page"},{"location":"dev_guide/logging/","page":"Logging","title":"Logging","text":"console_logger = TerminalLogger(stderr, Logging.Error)\n\nopen_file_logger(\"log.txt\", Logging.Info) do file_logger\n multi_logger = MultiLogger([console_logger, file_logger])\n global_logger(multi_logger)\n\n do_stuff()\nend","category":"page"},{"location":"dev_guide/logging/","page":"Logging","title":"Logging","text":"Note: If someone may execute the code in the REPL then wrap that code in a try/finally block and reset the global logger upon exit.","category":"page"},{"location":"dev_guide/logging/","page":"Logging","title":"Logging","text":"function run_tests()\n console_logger = TerminalLogger(stderr, Logging.Error)\n\n open_file_logger(\"log.txt\", Logging.Info) do file_logger\n multi_logger = MultiLogger([console_logger, file_logger])\n global_logger(multi_logger)\n\n do_stuff()\n end\nend\n\nlogger = global_logger()\n\ntry\n run_tests()\nfinally\n # Guarantee that the global logger is reset.\n global_logger(logger)\n nothing\nend","category":"page"},{"location":"dev_guide/logging/#Suppress-frequent-messages","page":"Logging","title":"Suppress frequent messages","text":"","category":"section"},{"location":"dev_guide/logging/","page":"Logging","title":"Logging","text":"The standard Logging module in Julia provides a method to suppress messages. Tag the log message with maxlog = X.","category":"page"},{"location":"dev_guide/logging/","page":"Logging","title":"Logging","text":"for i in range(1; length = 100)\n @error \"something happened\" i maxlog = 2\nend","category":"page"},{"location":"dev_guide/logging/","page":"Logging","title":"Logging","text":"Only 2 messages will get logged.","category":"page"},{"location":"dev_guide/logging/","page":"Logging","title":"Logging","text":"The InfrastructureSystems logger provides a customization to make maxlog apply to a period of time instead of the duration of the Julia process.","category":"page"},{"location":"dev_guide/logging/","page":"Logging","title":"Logging","text":"In this example the suppression will timeout and two messages will get logged every five seconds. It will log how many log messages were suppressed on the first message that gets logged after a timeout.","category":"page"},{"location":"dev_guide/logging/","page":"Logging","title":"Logging","text":"for i in range(1; length = 100)\n @error \"something happened\" i maxlog = 2 _suppression_period = 5\n sleep(0.5)\nend","category":"page"},{"location":"dev_guide/logging/#Get-a-summary-of-log-messages","page":"Logging","title":"Get a summary of log messages","text":"","category":"section"},{"location":"dev_guide/logging/","page":"Logging","title":"Logging","text":"By default a MultiLogger creates a LogEventTracker that keeps counts of all messages. Call report_log_summary after execution.","category":"page"},{"location":"dev_guide/logging/","page":"Logging","title":"Logging","text":"logger = configure_logging(; filename = \"log.txt\")\n@info \"hello world\"\n\n# Include a summary in the log file.\n@info report_log_summary(logger)\nclose(logger)","category":"page"},{"location":"dev_guide/logging/","page":"Logging","title":"Logging","text":"The output of the logger can be explored in the REPL:","category":"page"},{"location":"dev_guide/logging/","page":"Logging","title":"Logging","text":"for i in range(1; length = 100)\n @info \"hello\" maxlog = 2\n @warn \"beware\" maxlog = 2\nend\n@info report_log_summary(logger)","category":"page"},{"location":"#InfrastructureSystems.jl","page":"Welcome Page","title":"InfrastructureSystems.jl","text":"","category":"section"},{"location":"","page":"Welcome Page","title":"Welcome Page","text":"CurrentModule = InfrastructureSystems","category":"page"},{"location":"#Overview","page":"Welcome Page","title":"Overview","text":"","category":"section"},{"location":"","page":"Welcome Page","title":"Welcome Page","text":"InfrastructureSystems.jl is a Julia package that provides data management services and common utility software for the packages in NREL's Sienna Initiative. This package is meant for module development. It is used primarily by PowerSystems.jl and PowerSimulations.jl but is written to be extensible for other kinds of infrastructure models.","category":"page"},{"location":"","page":"Welcome Page","title":"Welcome Page","text":"This document describes how to integrate it with other packages.","category":"page"},{"location":"#Installation","page":"Welcome Page","title":"Installation","text":"","category":"section"},{"location":"","page":"Welcome Page","title":"Welcome Page","text":"The latest stable release of InfrastructureSystems.jl can be installed using the Julia package manager with","category":"page"},{"location":"","page":"Welcome Page","title":"Welcome Page","text":"] add InfrastructureSystems","category":"page"},{"location":"","page":"Welcome Page","title":"Welcome Page","text":"For the current development version, \"checkout\" this package with","category":"page"},{"location":"","page":"Welcome Page","title":"Welcome Page","text":"] add InfrastructureSystems#master","category":"page"},{"location":"#Usage","page":"Welcome Page","title":"Usage","text":"","category":"section"},{"location":"","page":"Welcome Page","title":"Welcome Page","text":"InfrastructureSystems.jl does not export any method or struct by design. For detailed use of InfrastructureSystems.jl visit the API section of the documentation.","category":"page"},{"location":"","page":"Welcome Page","title":"Welcome Page","text":"InfrastructureSystems.jl provides several utilities for the development of packages, the documentation includes several guides for developers","category":"page"},{"location":"","page":"Welcome Page","title":"Welcome Page","text":"Pages = [\n \"dev_guide/components_and_container.md\",\n \"dev_guide/auto_generation.md\",\n \"dev_guide/time_series.md\",\n \"dev_guide/recorder.md\",\n \"dev_guide/tests.md\",\n \"dev_guide/logging.md\"\n]\nDepth = 1","category":"page"},{"location":"","page":"Welcome Page","title":"Welcome Page","text":"","category":"page"},{"location":"","page":"Welcome Page","title":"Welcome Page","text":"InfrastructureSystems has been developed as part of the Scalable Integrated Infrastructure Planning (SIIP) initiative at the U.S. Department of Energy's National Renewable Energy Laboratory (NREL)","category":"page"},{"location":"dev_guide/recorder/#Recorder-Events","page":"Recorder Events","title":"Recorder Events","text":"","category":"section"},{"location":"dev_guide/recorder/","page":"Recorder Events","title":"Recorder Events","text":"InfrastructureSystems.jl provides a mechanism to store structured data in events that get recorded in one or more files. They can be filtered and displayed in tabular form.","category":"page"},{"location":"dev_guide/recorder/","page":"Recorder Events","title":"Recorder Events","text":"The primary use is to store information that can help debug problems and it is largely used in PowerSimulations.jl. For example, you may want to store all state transitions in a simulation or every update of a variable. If a problem occurs you can then display filtered tables of that data to figure out what went wrong.","category":"page"},{"location":"dev_guide/recorder/#Instructions","page":"Recorder Events","title":"Instructions","text":"","category":"section"},{"location":"dev_guide/recorder/","page":"Recorder Events","title":"Recorder Events","text":"Create events that are subtypes of InfrastructureSystems.AbstractRecorderEvent. Include an instance of RecorderEventCommon in each struct.\nCall InfrastructureSystems.register_recorder! with arguments recorder-name for each recorder object you want to create.\nDepending on how often your code create events you may want to make this conditional. You may only need it for debug runs.\nPowerSimulations creates one recorder for simulation step and stage start/stop events that is always enabled. It creates another that is optional but used for frequently-generated events.\nCall @InfrastructureSystems.record with arguments recorder-name event wherever you want to generate events in your code. The event will only get constructed if the recorder is registered.\nCall InfrastructureSystems.unregister_recorder! with arguments recorder-name for each registered recorder. You should guarantee this gets called, even if an exception is thrown. Otherwise, the file may not get flushed and closed.\nAfter your code runs call InfrastructureSystems.show_recorder_events to view events. Refer to the docstrings for more information.\nRefer to PowerSimulations.show_simulation_events for an example on how to customize this behavior for your package.","category":"page"},{"location":"dev_guide/tests/#Running-Tests","page":"Running Tests","title":"Running Tests","text":"","category":"section"},{"location":"dev_guide/tests/#Standard-test-execution","page":"Running Tests","title":"Standard test execution","text":"","category":"section"},{"location":"dev_guide/tests/","page":"Running Tests","title":"Running Tests","text":"Unit tests can be executed in the REPL by executing the following:","category":"page"},{"location":"dev_guide/tests/","page":"Running Tests","title":"Running Tests","text":"julia> ] test","category":"page"},{"location":"dev_guide/tests/#Interactive-test-execution","page":"Running Tests","title":"Interactive test execution","text":"","category":"section"},{"location":"dev_guide/tests/","page":"Running Tests","title":"Running Tests","text":"While developing code and tests it can be convenient to run a subset of tests. You can do this with a combination of TestEnv.jl and ReTest.jl.","category":"page"},{"location":"dev_guide/tests/","page":"Running Tests","title":"Running Tests","text":"Note: Per recommendations from the developers of TestEnv.jl, install the package in your global julia environment. Do the same for Revise.jl.","category":"page"},{"location":"dev_guide/tests/","page":"Running Tests","title":"Running Tests","text":"$ julia\njulia> ]\n(@v1.10) pkg> add TestEnv Revise","category":"page"},{"location":"dev_guide/tests/","page":"Running Tests","title":"Running Tests","text":"Start the environment with the InfrastructureSystems.jl environment.","category":"page"},{"location":"dev_guide/tests/","page":"Running Tests","title":"Running Tests","text":"$ julia --project","category":"page"},{"location":"dev_guide/tests/","page":"Running Tests","title":"Running Tests","text":"Load the test environment.","category":"page"},{"location":"dev_guide/tests/","page":"Running Tests","title":"Running Tests","text":"julia> using TestEnv\njulia> TestEnv.activate()","category":"page"},{"location":"dev_guide/tests/","page":"Running Tests","title":"Running Tests","text":"Load the tests through ReTest.jl and Revise.jl.","category":"page"},{"location":"dev_guide/tests/","page":"Running Tests","title":"Running Tests","text":"julia> include(\"test/load_tests.jl\")","category":"page"},{"location":"dev_guide/tests/","page":"Running Tests","title":"Running Tests","text":"Run all tests.","category":"page"},{"location":"dev_guide/tests/","page":"Running Tests","title":"Running Tests","text":"julia> run_tests()","category":"page"},{"location":"dev_guide/tests/","page":"Running Tests","title":"Running Tests","text":"Run a subset of tests with a regular expression. This pattern matches multiple testset definitions. The run_tests function forwards all arguments and keyword arguments to ReTest.retest.","category":"page"},{"location":"dev_guide/tests/","page":"Running Tests","title":"Running Tests","text":"julia> run_tests(r\"Test.*components\")","category":"page"},{"location":"dev_guide/tests/","page":"Running Tests","title":"Running Tests","text":"Refer to the ReTest documentation for more information.","category":"page"},{"location":"dev_guide/tests/#Change-logging-levels","page":"Running Tests","title":"Change logging levels","text":"","category":"section"},{"location":"dev_guide/tests/","page":"Running Tests","title":"Running Tests","text":"julia> InfrastructureSystems.make_logging_config_file(\"logging_config.toml\")\njulia> ENV[\"SIENNA_LOGGING_CONFIG\"] = \"logging_config.toml\"","category":"page"},{"location":"dev_guide/tests/","page":"Running Tests","title":"Running Tests","text":"Edit the file to suit your preferences and rerun.","category":"page"},{"location":"dev_guide/tests/","page":"Running Tests","title":"Running Tests","text":"julia> run_tests()","category":"page"},{"location":"dev_guide/tests/","page":"Running Tests","title":"Running Tests","text":"Note that you can filter out noisy log groups in this file.","category":"page"},{"location":"dev_guide/tests/#Noisy-log-messages","page":"Running Tests","title":"Noisy log messages","text":"","category":"section"},{"location":"dev_guide/tests/","page":"Running Tests","title":"Running Tests","text":"The unit test module appends a summary of all log message counts to the log file. If a message is logged too frequently then consider tagging that message with maxlog=X to suppress it.","category":"page"}] +[{"location":"style/#style_guide","page":"Style Guide","title":"Julia Coding Style Guide for Sienna","text":"","category":"section"},{"location":"style/#Goals","page":"Style Guide","title":"Goals","text":"","category":"section"},{"location":"style/","page":"Style Guide","title":"Style Guide","text":"Define a straightforward set of rules that lead to consistent, readable code.\nDevelopers focus on producing high quality code, not how to format it.","category":"page"},{"location":"style/#Base","page":"Style Guide","title":"Base","text":"","category":"section"},{"location":"style/","page":"Style Guide","title":"Style Guide","text":"Follow the official Julia style guide except for deviations noted here.\nFollow Julia contribution guidelines, notably its line length limit.\nFollow Julia guidelines for docstrings.\nFollow JuMP coding standards, including its deviations from the Julia style guide. In particular, note its policies on\nwhitespace\nreturn statements\nvariable names.\nRead The Zen of Python.\nConsider using a plugin that configures your text editor to use EditorConfig settings.","category":"page"},{"location":"style/#Code-Organization","page":"Style Guide","title":"Code Organization","text":"","category":"section"},{"location":"style/","page":"Style Guide","title":"Style Guide","text":"Import standard modules, then 3rd-party modules, then yours. Include a blank line between each group.","category":"page"},{"location":"style/#Module","page":"Style Guide","title":"Module","text":"","category":"section"},{"location":"style/","page":"Style Guide","title":"Style Guide","text":"When writing a module locate all the exports in the main module file.\nPlease include a copy of this .gitignore file","category":"page"},{"location":"style/#Comments","page":"Style Guide","title":"Comments","text":"","category":"section"},{"location":"style/","page":"Style Guide","title":"Style Guide","text":"Use comments to describe non-obvious or non-trivial aspects of code. Describe why something was done but not how. The \"how\" should be apparent from the code itself.\nUse complete sentences and proper grammar.\nInclude a space in between the \"#\" and the first word of the comment.\nUse these tags in comments to describe known work:\nTODO: tasks that need to be done\nFIXME: code that needs refactoring\nBUG: known bug that exists. Should include a bug ID and tracking system.\nPERF: known performance limitation that needs improvement","category":"page"},{"location":"style/#Constructors","page":"Style Guide","title":"Constructors","text":"","category":"section"},{"location":"style/","page":"Style Guide","title":"Style Guide","text":"Per guidance from Julia documentation, use inner constructors to enforce restrictions on parameters or to allow construction of self-referential objects. Use outer constructors to provide default values or to perform customization.\nDocument the reason why the outer constructor is different.\nNote that the compiler will provide a default constructor with all struct members if no inner constructor is defined.\nWhen creating a constructor use function Foo() instead of Foo() = ... One exception is the case where one file has all single-line functions.","category":"page"},{"location":"style/#Exceptions","page":"Style Guide","title":"Exceptions","text":"","category":"section"},{"location":"style/","page":"Style Guide","title":"Style Guide","text":"Use exceptions for unexpected errors and not for normal error handling.\nDetection of an unsupported data format from a user should likely throw an exception and terminate the application.\nDo not use try/catch to handle retrieving a potentially-missing key from a dictionary.","category":"page"},{"location":"style/#Asserts","page":"Style Guide","title":"Asserts","text":"","category":"section"},{"location":"style/","page":"Style Guide","title":"Style Guide","text":"Use @assert statements to guard against programming errors. Do not use them after detecting bad user input. An assert tripping should indicate that there is a bug in the code. Note that they may be compiled out in optimized builds in the future.\nConsider using InfrastructureSystems.@assert_op instead of the standard @assert because it will automatically print the value of the expression. Unlike the standard @assert the Julia compiler will never exclude @assert_op in optimized builds.","category":"page"},{"location":"style/","page":"Style Guide","title":"Style Guide","text":"julia> a = 3; b = 4;\njulia> @assert_op a == b\nERROR: AssertionError: 3 == 4","category":"page"},{"location":"style/#Globals","page":"Style Guide","title":"Globals","text":"","category":"section"},{"location":"style/","page":"Style Guide","title":"Style Guide","text":"Global constants should use UPPER_CASE and be declared const.\nIf global variables are needed, prefix them with g_.\nDon't use magic numbers. Instead, define const globals or Enums (Julia @enum).","category":"page"},{"location":"style/#One-line-Conditionals","page":"Style Guide","title":"One-line Conditionals","text":"","category":"section"},{"location":"style/","page":"Style Guide","title":"Style Guide","text":"Julia code base uses this idiom frequently: && Example:","category":"page"},{"location":"style/","page":"Style Guide","title":"Style Guide","text":" function fact(n::Int)\n n >= 0 || error(\"n must be non-negative\")\n n == 0 && return 1\n n * fact(n-1)\n end","category":"page"},{"location":"style/","page":"Style Guide","title":"Style Guide","text":"This is acceptable for simple code as in this example. However, in general, prefer to write out an entire if statement.","category":"page"},{"location":"style/","page":"Style Guide","title":"Style Guide","text":"Ternary operators provide a way to write clean, concise code. Use good judgement.","category":"page"},{"location":"style/","page":"Style Guide","title":"Style Guide","text":"Good:","category":"page"},{"location":"style/","page":"Style Guide","title":"Style Guide","text":" y = x > 0 ? x : -x","category":"page"},{"location":"style/","page":"Style Guide","title":"Style Guide","text":"There are many examples in our codebase that use the form ? : . These can be expressed much more clearly in an if/else statement.","category":"page"},{"location":"style/#Logging","page":"Style Guide","title":"Logging","text":"","category":"section"},{"location":"style/","page":"Style Guide","title":"Style Guide","text":"When adding a debug log statement consider whether it is appropriate to append _group = . The packages use this Julia feature to suppress debug logging of entire groups at once. InfrastructureSystems defines LOG_GROUPS with commonly-used group names.","category":"page"},{"location":"style/","page":"Style Guide","title":"Style Guide","text":"If you are developing a feature with functionality in a single file then you can let Julia use the default name (the base name of the file). However, if the feature spans files then you should use an existing group or add a new one. Group names should be of type Symbol and follow the PascalCase naming convention.","category":"page"},{"location":"style/","page":"Style Guide","title":"Style Guide","text":"Common group names should be defined in InfrastructureSystems but packages can add their own as needed.","category":"page"},{"location":"style/#Unit-Tests","page":"Style Guide","title":"Unit Tests","text":"","category":"section"},{"location":"style/","page":"Style Guide","title":"Style Guide","text":"All code should be tested. The packages in Sienna have a minimum of 70% coverage to be merged into master. This functionality is provided using Codecov","category":"page"},{"location":"style/#Whitespace","page":"Style Guide","title":"Whitespace","text":"","category":"section"},{"location":"style/","page":"Style Guide","title":"Style Guide","text":"If many function arguments cause the line length to be exceeded, put one argument per line. In some cases it may make sense to pair some variables on the same line.","category":"page"},{"location":"style/","page":"Style Guide","title":"Style Guide","text":" function foo(\n var1::String,\n var2::String,\n var3::String,\n var4::String,\n var5::String,\n var6::String,\n )","category":"page"},{"location":"style/","page":"Style Guide","title":"Style Guide","text":"Do not surround equal signs with spaces when passing keyword args to a function or defining default values in function declarations.\nDo not right-align equal signs when assigning groups of variables. It causes unnecessary changes whenever someone adds a new variable with a longer name.","category":"page"},{"location":"style/","page":"Style Guide","title":"Style Guide","text":"Bad:","category":"page"},{"location":"style/","page":"Style Guide","title":"Style Guide","text":" x = 1\n foo = 2","category":"page"},{"location":"style/","page":"Style Guide","title":"Style Guide","text":"Good:","category":"page"},{"location":"style/","page":"Style Guide","title":"Style Guide","text":" x = 1\n foo = 2","category":"page"},{"location":"style/","page":"Style Guide","title":"Style Guide","text":"Define abstract types on one line. Given the lack of IDE support for Julia, this makes it easier to find type definitions.","category":"page"},{"location":"style/","page":"Style Guide","title":"Style Guide","text":"Bad:","category":"page"},{"location":"style/","page":"Style Guide","title":"Style Guide","text":" abstract type\n Foo\n end","category":"page"},{"location":"style/","page":"Style Guide","title":"Style Guide","text":"Good:","category":"page"},{"location":"style/","page":"Style Guide","title":"Style Guide","text":" abstract type Foo end","category":"page"},{"location":"style/","page":"Style Guide","title":"Style Guide","text":"All Sienna packages perform tests using JuliaFormatter if you are unsure of your format, you can run julia -e 'using JuliaFormatter; include(\".github/workflows/formatter_code.jl\")' at the root of the package. Make sure to have the latest version of JuliaFormatter in your main environment","category":"page"},{"location":"InfrastructureSystems/#API_ref","page":"API","title":"InfrastructureSystems API Reference","text":"","category":"section"},{"location":"InfrastructureSystems/","page":"API","title":"API","text":"Modules = [InfrastructureSystems]","category":"page"},{"location":"InfrastructureSystems/#InfrastructureSystems.AbstractRecorderEvent","page":"API","title":"InfrastructureSystems.AbstractRecorderEvent","text":"Supertype for recorder events\n\n\n\n\n\n","category":"type"},{"location":"InfrastructureSystems/#InfrastructureSystems.AverageRateCurve","page":"API","title":"InfrastructureSystems.AverageRateCurve","text":"An average rate curve, relating the production quantity to the average cost rate from the origin: y = f(x)/x. Can be used, for instance, in the representation of a CostCurve where x is MW and y is currency/MWh, or in the representation of a FuelCurve where x is MW and y is fuel/MWh. Typically calculated by dividing absolute values of cost rate or fuel input rate by absolute values of electric power.\n\n\n\n\n\n","category":"type"},{"location":"InfrastructureSystems/#InfrastructureSystems.CompressionSettings","page":"API","title":"InfrastructureSystems.CompressionSettings","text":"CompressionSettings(enabled, type, level, shuffle)\n\nProvides customization of HDF5 compression settings.\n\nenabled::Bool: Controls whether compression is enabled.\ntype::InfrastructureSystems.CompressionTypesModule.CompressionTypes: Specifies the type of compression to use.\nlevel::Int64: Supported values are 0-9. Higher values deliver better compression ratios but take longer.\nshuffle::Bool: Controls whether to enable the shuffle filter. Used with DEFLATE.\n\nRefer to the HDF5.jl and HDF5 documentation for more details on the options.\n\nExample\n\nsettings = CompressionSettings(\n enabled = true,\n type = CompressionTypes.DEFLATE, # BLOSC is also supported\n level = 3,\n shuffle = true,\n)\n\n\n\n\n\n","category":"type"},{"location":"InfrastructureSystems/#InfrastructureSystems.CostCurve","page":"API","title":"InfrastructureSystems.CostCurve","text":"struct CostCurve{T<:InfrastructureSystems.ValueCurve} <: InfrastructureSystems.ProductionVariableCostCurve{T<:InfrastructureSystems.ValueCurve}\n\nvalue_curve::InfrastructureSystems.ValueCurve: The underlying ValueCurve representation of this ProductionVariableCostCurve\npower_units::InfrastructureSystems.UnitSystemModule.UnitSystem: (default: natural units (MW)) The units for the x-axis of the curve\nvom_cost::LinearCurve: (default of 0) Additional proportional Variable Operation and Maintenance Cost in /(power_unit h), represented as a LinearCurve\n\nCostCurve(value_curve, power_units, vom_cost)\nCostCurve(; value_curve, power_units, vom_cost)\n\nDirect representation of the variable operation cost of a power plant in currency. Composed of a ValueCurve that may represent input-output, incremental, or average rate data. The default units for the x-axis are MW and can be specified with power_units.\n\n\n\n\n\n","category":"type"},{"location":"InfrastructureSystems/#InfrastructureSystems.DataFormatError","page":"API","title":"InfrastructureSystems.DataFormatError","text":"Thrown upon detection of user data that is not supported.\n\n\n\n\n\n","category":"type"},{"location":"InfrastructureSystems/#InfrastructureSystems.Deterministic","page":"API","title":"InfrastructureSystems.Deterministic","text":"mutable struct Deterministic <: AbstractDeterministic\n name::String\n data::SortedDict\n resolution::Dates.Period\n scaling_factor_multiplier::Union{Nothing, Function}\n internal::InfrastructureSystemsInternal\nend\n\nA deterministic forecast for a particular data field in a Component.\n\nArguments\n\nname::String: user-defined name\ndata::SortedDict: timestamp - scalingfactor\nresolution::Dates.Period: forecast resolution\nscaling_factor_multiplier::Union{Nothing, Function}: Applicable when the time series data are scaling factors. Called on the associated component to convert the values.\ninternal::InfrastructureSystemsInternal\n\n\n\n\n\n","category":"type"},{"location":"InfrastructureSystems/#InfrastructureSystems.Deterministic-Tuple{AbstractString, AbstractDict{Dates.DateTime, <:TimeSeries.TimeArray}}","page":"API","title":"InfrastructureSystems.Deterministic","text":"Deterministic(\n name::AbstractString,\n input_data::AbstractDict{Dates.DateTime, <:TimeSeries.TimeArray};\n normalization_factor,\n scaling_factor_multiplier\n) -> InfrastructureSystems.Deterministic\n\n\nConstruct Deterministic from a Dict of TimeArrays.\n\nArguments\n\nname::AbstractString: user-defined name\ninput_data::AbstractDict{Dates.DateTime, TimeSeries.TimeArray}: time series data.\nnormalization_factor::NormalizationFactor = 1.0: optional normalization factor to apply to each data entry\nscaling_factor_multiplier::Union{Nothing, Function} = nothing: If the data are scaling factors then this function will be called on the component and applied to the data when get_time_series_array is called.\ntimestamp = :timestamp: If the values are DataFrames is passed then this must be the column name that contains timestamps.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.Deterministic-Tuple{AbstractString, AbstractString, InfrastructureSystems.InfrastructureSystemsComponent, Dates.Period}","page":"API","title":"InfrastructureSystems.Deterministic","text":"Deterministic(\n name::AbstractString,\n filename::AbstractString,\n component::InfrastructureSystems.InfrastructureSystemsComponent,\n resolution::Dates.Period;\n normalization_factor,\n scaling_factor_multiplier\n) -> InfrastructureSystems.Deterministic\n\n\nConstruct Deterministic from a CSV file. The first column must be a timestamp in DateTime format and the columns the values in the forecast window.\n\nArguments\n\nname::AbstractString: user-defined name\nfilename::AbstractString: name of CSV file containing data\ncomponent::InfrastructureSystemsComponent: component associated with the data\nnormalization_factor::NormalizationFactor = 1.0: optional normalization factor to apply to each data entry\nscaling_factor_multiplier::Union{Nothing, Function} = nothing: If the data are scaling factors then this function will be called on the component and applied to the data when get_time_series_array is called.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.Deterministic-Tuple{AbstractString, InfrastructureSystems.RawTimeSeries, Dates.Period}","page":"API","title":"InfrastructureSystems.Deterministic","text":"Deterministic(\n name::AbstractString,\n series_data::InfrastructureSystems.RawTimeSeries,\n resolution::Dates.Period;\n normalization_factor,\n scaling_factor_multiplier\n) -> InfrastructureSystems.Deterministic\n\n\nConstruct Deterministic from RawTimeSeries.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.Deterministic-Tuple{InfrastructureSystems.Deterministic, AbstractString}","page":"API","title":"InfrastructureSystems.Deterministic","text":"Deterministic(\n src::InfrastructureSystems.Deterministic,\n name::AbstractString;\n scaling_factor_multiplier\n) -> InfrastructureSystems.Deterministic\n\n\nConstruct Deterministic that shares the data from an existing instance.\n\nThis is useful in cases where you want a component to use the same time series data for two different attributes.\n\nExamples\n\nresolution = Dates.Hour(1)\ndata = Dict(\n DateTime(\"2020-01-01T00:00:00\") => ones(24),\n DateTime(\"2020-01-01T01:00:00\") => ones(24),\n)\n# Define a Deterministic for the first attribute\nforecast_max_active_power = Deterministic(\n \"max_active_power\",\n data,\n resolution,\n scaling_factor_multiplier = get_max_active_power,\n)\nadd_time_series!(sys, generator, forecast_max_active_power)\n# Reuse time series for second attribute\nforecast_max_reactive_power = Deterministic(\n forecast_max_active_power,\n \"max_reactive_power\"\n scaling_factor_multiplier = get_max_reactive_power,\n)\nadd_time_series!(sys, generator, forecast_max_reactive_power)\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.Deterministic-Tuple{InfrastructureSystems.Deterministic, Any}","page":"API","title":"InfrastructureSystems.Deterministic","text":"Deterministic(\n forecast::InfrastructureSystems.Deterministic,\n data\n) -> InfrastructureSystems.Deterministic\n\n\nConstruct a new Deterministic from an existing instance and a subset of data.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.DeterministicMetadata","page":"API","title":"InfrastructureSystems.DeterministicMetadata","text":"mutable struct DeterministicMetadata <: ForecastMetadata\n name::String\n resolution::Dates.Period\n initial_timestamp::Dates.DateTime\n interval::Dates.Period\n count::Int\n time_series_uuid::UUIDs.UUID\n horizon::Dates.Period\n time_series_type::Type{<:AbstractDeterministic}\n scaling_factor_multiplier::Union{Nothing, Function}\n features::Dict{String, Union{Bool, Int, String}}\n internal::InfrastructureSystemsInternal\nend\n\nA deterministic forecast for a particular data field in a Component.\n\nArguments\n\nname::String: user-defined name\nresolution::Dates.Period:\ninitial_timestamp::Dates.DateTime: time series availability time\ninterval::Dates.Period: time step between forecast windows\ncount::Int: number of forecast windows\ntime_series_uuid::UUIDs.UUID: reference to time series data\nhorizon::Dates.Period: length of this time series\ntime_series_type::Type{<:AbstractDeterministic}: Type of the time series data associated with this metadata.\nscaling_factor_multiplier::Union{Nothing, Function}: (default: nothing) Applicable when the time series data are scaling factors. Called on the associated component to convert the values.\nfeatures::Dict{String, Union{Bool, Int, String}}: (default: Dict{String, Any}()) User-defined tags that differentiate multiple time series arrays that represent the same component attribute, such as different arrays for different scenarios or years.\ninternal::InfrastructureSystemsInternal:\n\n\n\n\n\n","category":"type"},{"location":"InfrastructureSystems/#InfrastructureSystems.DeterministicSingleTimeSeries","page":"API","title":"InfrastructureSystems.DeterministicSingleTimeSeries","text":"mutable struct DeterministicSingleTimeSeries <: AbstractDeterministic\n single_time_series::SingleTimeSeries\n initial_timestamp::Dates.DateTime\n interval::Dates.Period\n count::Int\n horizon::Int\nend\n\nA deterministic forecast that wraps a SingleTimeSeries\n\nDeterministicSingleTimeSeries behaves exactly like a Deterministic, but instead of storing windows at each initial time it provides a view into the existing SingleTimeSeries at incrementing offsets. This avoids large data duplications when there are the overlapping windows between forecasts. \n\nCan be used as a perfect forecast based on historical data when real forecast data is unavailable. \n\nArguments\n\nsingle_time_series::SingleTimeSeries: wrapped SingleTimeSeries object\ninitial_timestamp::Dates.DateTime: time series availability time\ninterval::Dates.Period: time step between forecast windows\ncount::Int: number of forecast windows\nhorizon::Int: length of this time series\n\n\n\n\n\n","category":"type"},{"location":"InfrastructureSystems/#InfrastructureSystems.DeviceParameter","page":"API","title":"InfrastructureSystems.DeviceParameter","text":"Base type for auxillary structs. These should not be stored in a system.\n\n\n\n\n\n","category":"type"},{"location":"InfrastructureSystems/#InfrastructureSystems.FileLogger","page":"API","title":"InfrastructureSystems.FileLogger","text":"Specializes the behavior of SimpleLogger by adding timestamps and process and thread IDs.\n\n\n\n\n\n","category":"type"},{"location":"InfrastructureSystems/#InfrastructureSystems.FlattenIteratorWrapper","page":"API","title":"InfrastructureSystems.FlattenIteratorWrapper","text":"Wrapper around Iterators.Flatten to provide total length.\n\n\n\n\n\n","category":"type"},{"location":"InfrastructureSystems/#InfrastructureSystems.Forecast","page":"API","title":"InfrastructureSystems.Forecast","text":"Supertype for forecast time series Current concrete subtypes are:\n\nDeterministic\nDeterministicSingleTimeSeries\nScenarios\nProbabilistic\n\nSubtypes of Forecast must implement:\n\nget_horizon_count\nget_initial_times\nget_initial_timestamp\nget_name\nget_scaling_factor_multiplier\nget_window\niterate_windows\n\n\n\n\n\n","category":"type"},{"location":"InfrastructureSystems/#InfrastructureSystems.ForecastCache-Union{Tuple{T}, Tuple{Type{T}, InfrastructureSystems.InfrastructureSystemsComponent, AbstractString}} where T<:InfrastructureSystems.Forecast","page":"API","title":"InfrastructureSystems.ForecastCache","text":"Construct ForecastCache to automatically control caching of forecast data. Maintains some count of forecast windows in memory based on cache_size_bytes.\n\nCall Base.iterate or get_next_time_series_array! to retrieve data. Each iteration will return a TimeSeries.TimeArray covering one forecast window of length horizon_count.\n\nArguments\n\n::Type{T}: subtype of Forecast\ncomponent::InfrastructureSystemsComponent: component\nname::AbstractString: forecast name\nstart_time::Union{Nothing, Dates.DateTime} = nothing: forecast start time\nhorizon_count::Union{Nothing, Int} = nothing: forecast horizon count\ncache_size_bytes = TIME_SERIES_CACHE_SIZE_BYTES: maximum size of data to keep in memory\nignore_scaling_factors = false: controls whether to ignore scaling_factor_multiplier in the time series instance\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.ForecastKey","page":"API","title":"InfrastructureSystems.ForecastKey","text":"A unique key to identify and retrieve a Forecast\n\nSee: get_time_series_keys and get_time_series(::TimeSeriesOwners, ::TimeSeriesKey).\n\n\n\n\n\n","category":"type"},{"location":"InfrastructureSystems/#InfrastructureSystems.FuelCurve","page":"API","title":"InfrastructureSystems.FuelCurve","text":"struct FuelCurve{T<:InfrastructureSystems.ValueCurve} <: InfrastructureSystems.ProductionVariableCostCurve{T<:InfrastructureSystems.ValueCurve}\n\nvalue_curve::InfrastructureSystems.ValueCurve: The underlying ValueCurve representation of this ProductionVariableCostCurve\npower_units::InfrastructureSystems.UnitSystemModule.UnitSystem: (default: natural units (MW)) The units for the x-axis of the curve\nfuel_cost::Union{Float64, InfrastructureSystems.TimeSeriesKey}: Either a fixed value for fuel cost or the TimeSeriesKey to a fuel cost time series\nvom_cost::LinearCurve: (default of 0) Additional proportional Variable Operation and Maintenance Cost in /(power_unit h) represented as a LinearCurve\n\nFuelCurve(value_curve, power_units, fuel_cost, vom_cost)\nFuelCurve(value_curve, fuel_cost)\nFuelCurve(value_curve, fuel_cost, vom_cost)\nFuelCurve(value_curve, power_units, fuel_cost)\nFuelCurve(; value_curve, power_units, fuel_cost, vom_cost)\n\nRepresentation of the variable operation cost of a power plant in terms of fuel (MBTU, liters, m^3, etc.), coupled with a conversion factor between fuel and currency. Composed of a ValueCurve that may represent input-output, incremental, or average rate data. The default units for the x-axis are MW and can be specified with power_units.\n\n\n\n\n\n","category":"type"},{"location":"InfrastructureSystems/#InfrastructureSystems.GeographicInfo","page":"API","title":"InfrastructureSystems.GeographicInfo","text":"Attribute to store Geographic Information about the system components\n\n\n\n\n\n","category":"type"},{"location":"InfrastructureSystems/#InfrastructureSystems.Hdf5TimeSeriesStorage","page":"API","title":"InfrastructureSystems.Hdf5TimeSeriesStorage","text":"Stores all time series data in an HDF5 file.\n\nThe file used is assumed to be temporary and will be automatically deleted when there are no more references to the storage object.\n\n\n\n\n\n","category":"type"},{"location":"InfrastructureSystems/#InfrastructureSystems.Hdf5TimeSeriesStorage-Tuple{Bool}","page":"API","title":"InfrastructureSystems.Hdf5TimeSeriesStorage","text":"Hdf5TimeSeriesStorage(\n create_file::Bool;\n filename,\n directory,\n compression\n) -> InfrastructureSystems.Hdf5TimeSeriesStorage\n\n\nConstructs Hdf5TimeSeriesStorage.\n\nArguments\n\ncreate_file::Bool: create new file\nfilename=nothing: if nothing, create a temp file, else use this name.\ndirectory=nothing: if set and filename is nothing, create a temp file in this directory. If it is not set, use the environment variable SIENNATIMESERIES_DIRECTORY. If that is not set, use tempdir(). This should be set if the time series data is larger than the tmp filesystem can hold.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.Hdf5TimeSeriesStorage-Tuple{}","page":"API","title":"InfrastructureSystems.Hdf5TimeSeriesStorage","text":"Hdf5TimeSeriesStorage(\n\n) -> InfrastructureSystems.Hdf5TimeSeriesStorage\n\n\nConstructs Hdf5TimeSeriesStorage by creating a temp file.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.InMemoryTimeSeriesStorage","page":"API","title":"InfrastructureSystems.InMemoryTimeSeriesStorage","text":"Stores all time series data in memory.\n\n\n\n\n\n","category":"type"},{"location":"InfrastructureSystems/#InfrastructureSystems.InMemoryTimeSeriesStorage-Tuple{InfrastructureSystems.Hdf5TimeSeriesStorage}","page":"API","title":"InfrastructureSystems.InMemoryTimeSeriesStorage","text":"InMemoryTimeSeriesStorage(\n hdf5_storage::InfrastructureSystems.Hdf5TimeSeriesStorage\n) -> InfrastructureSystems.InMemoryTimeSeriesStorage\n\n\nConstructs InMemoryTimeSeriesStorage from an instance of Hdf5TimeSeriesStorage.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.IncrementalCurve","page":"API","title":"InfrastructureSystems.IncrementalCurve","text":"An incremental (or 'marginal') curve, relating the production quantity to the derivative of cost: y = f'(x). Can be used, for instance, in the representation of a CostCurve where x is MW and y is currency/MWh, or in the representation of a FuelCurve where x is MW and y is fuel/MWh.\n\n\n\n\n\n","category":"type"},{"location":"InfrastructureSystems/#InfrastructureSystems.InfrastructureSystemsComponent","page":"API","title":"InfrastructureSystems.InfrastructureSystemsComponent","text":"Base type for structs that are stored in a system.\n\nRequired interface functions for subtypes:\n\nget_name()\nget_internal()\n\nSubtypes may contain time series.\n\n\n\n\n\n","category":"type"},{"location":"InfrastructureSystems/#InfrastructureSystems.InfrastructureSystemsInternal","page":"API","title":"InfrastructureSystems.InfrastructureSystemsInternal","text":"Internal storage common to InfrastructureSystems types.\n\n\n\n\n\n","category":"type"},{"location":"InfrastructureSystems/#InfrastructureSystems.InfrastructureSystemsInternal-Tuple{Base.UUID}","page":"API","title":"InfrastructureSystems.InfrastructureSystemsInternal","text":"InfrastructureSystemsInternal(\n u::Base.UUID\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nCreates InfrastructureSystemsInternal with an existing UUID.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.InfrastructureSystemsInternal-Tuple{}","page":"API","title":"InfrastructureSystems.InfrastructureSystemsInternal","text":"InfrastructureSystemsInternal(\n;\n uuid,\n shared_system_references,\n units_info,\n ext\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nCreates InfrastructureSystemsInternal with a new UUID.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.InfrastructureSystemsType","page":"API","title":"InfrastructureSystems.InfrastructureSystemsType","text":"Base type for any struct in the Sienna packages. All structs must implement a kwarg-only constructor to allow deserializing from a Dict.\n\n\n\n\n\n","category":"type"},{"location":"InfrastructureSystems/#InfrastructureSystems.InputOutputCurve","page":"API","title":"InfrastructureSystems.InputOutputCurve","text":"An input-output curve, directly relating the production quantity to the cost: y = f(x). Can be used, for instance, in the representation of a CostCurve where x is MW and y is currency/hr, or in the representation of a FuelCurve where x is MW and y is fuel/hr.\n\n\n\n\n\n","category":"type"},{"location":"InfrastructureSystems/#InfrastructureSystems.LazyDictFromIterator-Union{Tuple{V}, Tuple{K}, Tuple{Type{K}, Type{V}, Any, Function}} where {K, V}","page":"API","title":"InfrastructureSystems.LazyDictFromIterator","text":"LazyDictFromIterator creates a dictionary from an iterator, but only increments the iterator and adds items to the dictionary as it needs them. In the worst case it is identical to creating a dictionary by iterating over the entire list. Each V should have a K member.\n\nArguments\n\nK: type of the dictionary keys\nV: type of the dictionary values\niter: any object implementing the Iterator interface\ngetter::Function: method to call on V to get its K\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.LinearCurve","page":"API","title":"InfrastructureSystems.LinearCurve","text":"LinearCurve(proportional_term::Float64)\nLinearCurve(proportional_term::Float64, constant_term::Float64)\n\nA linear input-output curve, representing a constant marginal rate. May have zero no-load cost (i.e., constant average rate) or not.\n\nArguments\n\nproportional_term::Float64: marginal rate\nconstant_term::Float64: optional, cost at zero production, defaults to 0.0\n\n\n\n\n\n","category":"type"},{"location":"InfrastructureSystems/#InfrastructureSystems.LinearFunctionData","page":"API","title":"InfrastructureSystems.LinearFunctionData","text":"Structure to represent the underlying data of linear functions. Principally used for the representation of cost functions f(x) = proportional_term*x + constant_term.\n\nArguments\n\nproportional_term::Float64: the proportional term in the represented function\nconstant_term::Float64: the constant term in the represented function\n\n\n\n\n\n","category":"type"},{"location":"InfrastructureSystems/#InfrastructureSystems.LogEvent","page":"API","title":"InfrastructureSystems.LogEvent","text":"Contains information describing a log event.\n\n\n\n\n\n","category":"type"},{"location":"InfrastructureSystems/#InfrastructureSystems.LogEventTracker","page":"API","title":"InfrastructureSystems.LogEventTracker","text":"LogEventTracker() -> InfrastructureSystems.LogEventTracker\nLogEventTracker(\n levels\n) -> InfrastructureSystems.LogEventTracker\n\n\nTracks counts of all log events by level.\n\nExamples\n\nLogEventTracker()\nLogEventTracker((Logging.Info, Logging.Warn, Logging.Error))\n\n\n\n\n\n","category":"type"},{"location":"InfrastructureSystems/#InfrastructureSystems.MultiLogger","page":"API","title":"InfrastructureSystems.MultiLogger","text":"Redirects log events to multiple loggers. The primary use case is to allow logging to both a file and the console. Secondarily, it can track the counts of all log messages.\n\nExample\n\nMultiLogger([TerminalLogger(stderr), SimpleLogger(stream)], LogEventTracker())\n\n\n\n\n\n","category":"type"},{"location":"InfrastructureSystems/#InfrastructureSystems.MultiLogger-Union{Tuple{Array{T}}, Tuple{T}} where T<:Base.CoreLogging.AbstractLogger","page":"API","title":"InfrastructureSystems.MultiLogger","text":"MultiLogger(\n loggers::Array{T<:Base.CoreLogging.AbstractLogger}\n) -> InfrastructureSystems.MultiLogger\n\n\nCreates a MultiLogger with no event tracking.\n\nExample\n\nMultiLogger([TerminalLogger(stderr), SimpleLogger(stream)])\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.NotImplementedError","page":"API","title":"InfrastructureSystems.NotImplementedError","text":"Indicate that the feature at hand happens to not be implemented for the given data even though it could be. If it is a category mistake to imagine this feature defined on that data, use another exception, like TypeError or ArgumentError.\n\n\n\n\n\n","category":"type"},{"location":"InfrastructureSystems/#InfrastructureSystems.PiecewiseAverageCurve","page":"API","title":"InfrastructureSystems.PiecewiseAverageCurve","text":"PiecewiseAverageCurve(initial_input::Union{Float64, Nothing}, x_coords::Vector{Float64}, slopes::Vector{Float64})\n\nA piecewise linear curve specified by average rates between production points. May have nonzero initial value.\n\nArguments\n\ninitial_input::Union{Float64, Nothing}: cost at minimum production point first(x_coords) (NOT at zero production), defines the start of the curve\nx_coords::Vector{Float64}: vector of n production points\nslopes::Vector{Float64}: vector of n-1 average rates/slopes of the curve segments between the points\n\n\n\n\n\n","category":"type"},{"location":"InfrastructureSystems/#InfrastructureSystems.PiecewiseIncrementalCurve","page":"API","title":"InfrastructureSystems.PiecewiseIncrementalCurve","text":"PiecewiseIncrementalCurve(initial_input::Union{Float64, Nothing}, x_coords::Vector{Float64}, slopes::Vector{Float64})\nPiecewiseIncrementalCurve(input_at_zero::Union{Nothing, Float64}, initial_input::Union{Float64, Nothing}, x_coords::Vector{Float64}, slopes::Vector{Float64})\n\nA piecewise linear curve specified by marginal rates (slopes) between production points. May have nonzero initial value.\n\nArguments\n\ninput_at_zero::Union{Nothing, Float64}: (optional, defaults to nothing) cost at zero production, does NOT represent a part of the curve\ninitial_input::Union{Float64, Nothing}: cost at minimum production point first(x_coords) (NOT at zero production), defines the start of the curve\nx_coords::Vector{Float64}: vector of n production points\nslopes::Vector{Float64}: vector of n-1 marginal rates/slopes of the curve segments between the points\n\n\n\n\n\n","category":"type"},{"location":"InfrastructureSystems/#InfrastructureSystems.PiecewiseLinearData","page":"API","title":"InfrastructureSystems.PiecewiseLinearData","text":"Structure to represent piecewise linear data as a series of points: two points define one segment, three points define two segments, etc. The curve starts at the first point given, not the origin. Principally used for the representation of cost functions where the points store quantities (x, y), such as (MW, /h).\n\nArguments\n\npoints::Vector{@NamedTuple{x::Float64, y::Float64}}: the points that define the function\n\n\n\n\n\n","category":"type"},{"location":"InfrastructureSystems/#InfrastructureSystems.PiecewisePointCurve","page":"API","title":"InfrastructureSystems.PiecewisePointCurve","text":"PiecewisePointCurve(points::Vector{Tuple{Float64, Float64}})\n\nA piecewise linear curve specified by cost values at production points.\n\nArguments\n\npoints::Vector{Tuple{Float64, Float64}} or similar: vector of (production, cost) pairs\n\n\n\n\n\n","category":"type"},{"location":"InfrastructureSystems/#InfrastructureSystems.PiecewiseStepData","page":"API","title":"InfrastructureSystems.PiecewiseStepData","text":"Structure to represent a step function as a series of endpoint x-coordinates and segment y-coordinates: two x-coordinates and one y-coordinate defines a single segment, three x-coordinates and two y-coordinates define two segments, etc. This can be useful to represent the derivative of a PiecewiseLinearData, where the y-coordinates of this step function represent the slopes of that piecewise linear function, so there is also an optional field c that can be used to store the initial y-value of that piecewise linear function. Principally used for the representation of cost functions where the points store quantities (x, dy/dx), such as (MW, /MWh).\n\nArguments\n\nx_coords::Vector{Float64}: the x-coordinates of the endpoints of the segments\ny_coords::Vector{Float64}: the y-coordinates of the segments: y_coords[1] is the y-value between\n\nx_coords[1] and x_coords[2], etc. Must have one fewer elements than x_coords.\n\nc::Union{Nothing, Float64}: optional, the value to use for the integral from 0 to x_coords[1] of this function\n\n\n\n\n\n","category":"type"},{"location":"InfrastructureSystems/#InfrastructureSystems.Probabilistic","page":"API","title":"InfrastructureSystems.Probabilistic","text":"mutable struct Probabilistic <: Forecast\n name::String\n resolution::Dates.Period\n percentiles::Vector{Float64}\n data::SortedDict\n scaling_factor_multiplier::Union{Nothing, Function}\n internal::InfrastructureSystemsInternal\nend\n\nA Probabilistic forecast for a particular data field in a Component.\n\nArguments\n\nname::String: user-defined name\nresolution::Dates.Period: forecast resolution\npercentiles::Vector{Float64}: Percentiles for the probabilistic forecast\ndata::SortedDict: timestamp - scalingfactor\nscaling_factor_multiplier::Union{Nothing, Function}: Applicable when the time series data are scaling factors. Called on the associated component to convert the values.\ninternal::InfrastructureSystemsInternal\n\n\n\n\n\n","category":"type"},{"location":"InfrastructureSystems/#InfrastructureSystems.Probabilistic-Tuple{AbstractString, AbstractDict, Vector, Dates.Period}","page":"API","title":"InfrastructureSystems.Probabilistic","text":"Probabilistic(\n name::AbstractString,\n input_data::AbstractDict,\n percentiles::Vector,\n resolution::Dates.Period;\n normalization_factor,\n scaling_factor_multiplier\n) -> InfrastructureSystems.Probabilistic\n\n\nConstruct Probabilistic from a SortedDict of Arrays.\n\nArguments\n\nname::AbstractString: user-defined name\ninput_data::AbstractDict{Dates.DateTime, Matrix{Float64}}: time series data.\npercentiles: Percentiles represented in the probabilistic forecast\nresolution::Dates.Period: The resolution of the forecast in Dates.Period`\nnormalization_factor::NormalizationFactor = 1.0: optional normalization factor to apply to each data entry\nscaling_factor_multiplier::Union{Nothing, Function} = nothing: If the data are scaling factors then this function will be called on the component and applied to the data when get_time_series_array is called.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.Probabilistic-Tuple{AbstractString, AbstractDict{Dates.DateTime, <:TimeSeries.TimeArray}, Vector{Float64}}","page":"API","title":"InfrastructureSystems.Probabilistic","text":"Probabilistic(\n name::AbstractString,\n input_data::AbstractDict{Dates.DateTime, <:TimeSeries.TimeArray},\n percentiles::Vector{Float64};\n normalization_factor,\n scaling_factor_multiplier\n) -> InfrastructureSystems.Probabilistic\n\n\nConstruct Probabilistic from a Dict of TimeArrays.\n\nArguments\n\nname::AbstractString: user-defined name\ninput_data::AbstractDict{Dates.DateTime, TimeSeries.TimeArray}: time series data.\npercentiles: Percentiles represented in the probabilistic forecast\nnormalization_factor::NormalizationFactor = 1.0: optional normalization factor to apply to each data entry\nscaling_factor_multiplier::Union{Nothing, Function} = nothing: If the data are scaling factors then this function will be called on the component and applied to the data when get_time_series_array is called.\ntimestamp = :timestamp: If the values are DataFrames is passed then this must be the column name that contains timestamps.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.Probabilistic-Tuple{AbstractString, InfrastructureSystems.RawTimeSeries, Vector, Dates.Period}","page":"API","title":"InfrastructureSystems.Probabilistic","text":"Probabilistic(\n name::AbstractString,\n series_data::InfrastructureSystems.RawTimeSeries,\n percentiles::Vector,\n resolution::Dates.Period;\n normalization_factor,\n scaling_factor_multiplier\n) -> InfrastructureSystems.Probabilistic\n\n\nConstruct Deterministic from RawTimeSeries.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.Probabilistic-Tuple{InfrastructureSystems.Probabilistic, AbstractString}","page":"API","title":"InfrastructureSystems.Probabilistic","text":"Probabilistic(\n src::InfrastructureSystems.Probabilistic,\n name::AbstractString;\n scaling_factor_multiplier\n) -> InfrastructureSystems.Probabilistic\n\n\nConstruct a Probabilistic that shares the data from an existing instance.\n\nThis is useful in cases where you want a component to use the same time series data for two different attributes.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.ProbabilisticMetadata","page":"API","title":"InfrastructureSystems.ProbabilisticMetadata","text":"mutable struct ProbabilisticMetadata <: ForecastMetadata\n name::String\n initial_timestamp::Dates.DateTime\n resolution::Dates.Period\n interval::Dates.Period\n count::Int\n percentiles::Vector{Float64}\n time_series_uuid::UUIDs.UUID\n horizon::Dates.Period\n scaling_factor_multiplier::Union{Nothing, Function}\n features::Dict{String, Union{Bool, Int, String}}\n internal::InfrastructureSystemsInternal\nend\n\nA Probabilistic forecast for a particular data field in a Component.\n\nArguments\n\nname::String: user-defined name\ninitial_timestamp::Dates.DateTime: time series availability time\nresolution::Dates.Period:\ninterval::Dates.Period: time step between forecast windows\ncount::Int: number of forecast windows\npercentiles::Vector{Float64}: Percentiles for the probabilistic forecast\ntime_series_uuid::UUIDs.UUID: reference to time series data\nhorizon::Dates.Period: length of this time series\nscaling_factor_multiplier::Union{Nothing, Function}: (default: nothing) Applicable when the time series data are scaling factors. Called on the associated component to convert the values.\nfeatures::Dict{String, Union{Bool, Int, String}}: (default: Dict{String, Any}()) User-defined tags that differentiate multiple time series arrays that represent the same component attribute, such as different arrays for different scenarios or years.\ninternal::InfrastructureSystemsInternal:\n\n\n\n\n\n","category":"type"},{"location":"InfrastructureSystems/#InfrastructureSystems.QuadraticCurve","page":"API","title":"InfrastructureSystems.QuadraticCurve","text":"QuadraticCurve(quadratic_term::Float64, proportional_term::Float64, constant_term::Float64)\n\nA quadratic input-output curve, may have nonzero no-load cost.\n\nArguments\n\nquadratic_term::Float64: quadratic term of the curve\nproportional_term::Float64: proportional term of the curve\nconstant_term::Float64: constant term of the curve\n\n\n\n\n\n","category":"type"},{"location":"InfrastructureSystems/#InfrastructureSystems.QuadraticFunctionData","page":"API","title":"InfrastructureSystems.QuadraticFunctionData","text":"Structure to represent the underlying data of quadratic functions. Principally used for the representation of cost functions f(x) = quadratic_term*x^2 + proportional_term*x + constant_term.\n\nArguments\n\nquadratic_term::Float64: the quadratic term in the represented function\nproportional_term::Float64: the proportional term in the represented function\nconstant_term::Float64: the constant term in the represented function\n\n\n\n\n\n","category":"type"},{"location":"InfrastructureSystems/#InfrastructureSystems.QuadraticFunctionData-Tuple{InfrastructureSystems.LinearFunctionData}","page":"API","title":"InfrastructureSystems.QuadraticFunctionData","text":"QuadraticFunctionData(\n data::InfrastructureSystems.LinearFunctionData\n) -> InfrastructureSystems.QuadraticFunctionData\n\n\nLosslessly convert LinearFunctionData to QuadraticFunctionData\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.RawTimeSeries","page":"API","title":"InfrastructureSystems.RawTimeSeries","text":"Wraps the data read from the text files with time series\n\n\n\n\n\n","category":"type"},{"location":"InfrastructureSystems/#InfrastructureSystems.Recorder","page":"API","title":"InfrastructureSystems.Recorder","text":"Records user-defined events in JSON format.\n\n\n\n\n\n","category":"type"},{"location":"InfrastructureSystems/#InfrastructureSystems.Recorder-Tuple{Symbol}","page":"API","title":"InfrastructureSystems.Recorder","text":"Recorder(\n name::Symbol;\n io,\n mode,\n directory\n) -> InfrastructureSystems.Recorder\n\n\nConstruct a Recorder.\n\nArguments\n\nname::Symbol: name of recorder\nio::Union{Nothing, IO}: If nothing, record events in a file using name.\nmode = \"w\": Only used when io is nothing.\ndirectory = \".\": Only used when io is nothing.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.Results","page":"API","title":"InfrastructureSystems.Results","text":"To implement a sub-type of this you need to implement the methods below.\n\n\n\n\n\n","category":"type"},{"location":"InfrastructureSystems/#InfrastructureSystems.Scenarios","page":"API","title":"InfrastructureSystems.Scenarios","text":"mutable struct Scenarios <: Forecast\n name::String\n resolution::Dates.Period\n scenario_count::Int64\n data::SortedDict\n scaling_factor_multiplier::Union{Nothing, Function}\n internal::InfrastructureSystemsInternal\nend\n\nA Discrete Scenario Based time series for a particular data field in a Component.\n\nArguments\n\nname::String: user-defined name\nresolution::Dates.Period: forecast resolution\nscenario_count::Int64: Number of scenarios\ndata::SortedDict: timestamp - scalingfactor\nscaling_factor_multiplier::Union{Nothing, Function}: Applicable when the time series data are scaling factors. Called on the associated component to convert the values.\ninternal::InfrastructureSystemsInternal\n\n\n\n\n\n","category":"type"},{"location":"InfrastructureSystems/#InfrastructureSystems.Scenarios-Tuple{AbstractString, AbstractDict, Dates.Period}","page":"API","title":"InfrastructureSystems.Scenarios","text":"Scenarios(\n name::AbstractString,\n input_data::AbstractDict,\n resolution::Dates.Period;\n normalization_factor,\n scaling_factor_multiplier\n) -> InfrastructureSystems.Scenarios\n\n\nConstruct Scenarios from a SortedDict of Arrays.\n\nArguments\n\nname::AbstractString: user-defined name\ninput_data::AbstractDict{Dates.DateTime, Matrix{Float64}}: time series data.\nresolution::Dates.Period: The resolution of the forecast in Dates.Period`\nnormalization_factor::NormalizationFactor = 1.0: optional normalization factor to apply to each data entry\nscaling_factor_multiplier::Union{Nothing, Function} = nothing: If the data are scaling factors then this function will be called on the component and applied to the data when get_time_series_array is called.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.Scenarios-Tuple{AbstractString, AbstractDict{Dates.DateTime, <:TimeSeries.TimeArray}}","page":"API","title":"InfrastructureSystems.Scenarios","text":"Scenarios(\n name::AbstractString,\n input_data::AbstractDict{Dates.DateTime, <:TimeSeries.TimeArray};\n normalization_factor,\n scaling_factor_multiplier\n) -> InfrastructureSystems.Scenarios\n\n\nConstruct Scenarios from a Dict of TimeArrays.\n\nArguments\n\nname::AbstractString: user-defined name\ninput_data::AbstractDict{Dates.DateTime, TimeSeries.TimeArray}: time series data.\nnormalization_factor::NormalizationFactor = 1.0: optional normalization factor to apply to each data entry\nscaling_factor_multiplier::Union{Nothing, Function} = nothing: If the data are scaling factors then this function will be called on the component and applied to the data when get_time_series_array is called.\ntimestamp = :timestamp: If the values are DataFrames is passed then this must be the column name that contains timestamps.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.Scenarios-Tuple{InfrastructureSystems.Scenarios, AbstractString}","page":"API","title":"InfrastructureSystems.Scenarios","text":"Scenarios(\n src::InfrastructureSystems.Scenarios,\n name::AbstractString;\n scaling_factor_multiplier\n) -> InfrastructureSystems.Scenarios\n\n\nConstruct Scenarios that shares the data from an existing instance.\n\nThis is useful in cases where you want a component to use the same time series data for two different attributes.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.ScenariosMetadata","page":"API","title":"InfrastructureSystems.ScenariosMetadata","text":"mutable struct ScenariosMetadata <: ForecastMetadata\n name::String\n resolution::Dates.Period\n initial_timestamp::Dates.DateTime\n interval::Dates.Period\n scenario_count::Int64\n count::Int\n time_series_uuid::UUIDs.UUID\n horizon::Dates.Period\n scaling_factor_multiplier::Union{Nothing, Function}\n features::Dict{String, Union{Bool, Int, String}}\n internal::InfrastructureSystemsInternal\nend\n\nA Discrete Scenario Based time series for a particular data field in a Component.\n\nArguments\n\nname::String: user-defined name\nresolution::Dates.Period:\ninitial_timestamp::Dates.DateTime: time series availability time\ninterval::Dates.Period: time step between forecast windows\nscenario_count::Int64: Number of scenarios\ncount::Int: number of forecast windows\ntime_series_uuid::UUIDs.UUID: reference to time series data\nhorizon::Dates.Period: length of this time series\nscaling_factor_multiplier::Union{Nothing, Function}: (default: nothing) Applicable when the time series data are scaling factors. Called on the associated component to convert the values.\nfeatures::Dict{String, Union{Bool, Int, String}}: (default: Dict{String, Any}()) User-defined tags that differentiate multiple time series arrays that represent the same component attribute, such as different arrays for different scenarios or years.\ninternal::InfrastructureSystemsInternal:\n\n\n\n\n\n","category":"type"},{"location":"InfrastructureSystems/#InfrastructureSystems.SingleTimeSeries","page":"API","title":"InfrastructureSystems.SingleTimeSeries","text":"mutable struct SingleTimeSeries <: StaticTimeSeries\n name::String\n data::TimeSeries.TimeArray\n scaling_factor_multiplier::Union{Nothing, Function}\n internal::InfrastructureSystemsInternal\nend\n\nA single column of time series data for a particular data field in a Component.\n\nIn contrast with a forecast, this can represent one continual time series, such as a series of historical measurements or realizations or a single scenario (e.g. a weather year or different input assumptions).\n\nArguments\n\nname::String: user-defined name\ndata::TimeSeries.TimeArray: timestamp - scalingfactor\nresolution::Dates.Period: Time duration between steps in the time series. The resolution must be the same throughout the time series\nscaling_factor_multiplier::Union{Nothing, Function}: Applicable when the time series data are scaling factors. Called on the associated component to convert the values.\ninternal::InfrastructureSystemsInternal\n\n\n\n\n\n","category":"type"},{"location":"InfrastructureSystems/#InfrastructureSystems.SingleTimeSeries-Tuple{AbstractString, AbstractString, InfrastructureSystems.InfrastructureSystemsComponent, Dates.Period}","page":"API","title":"InfrastructureSystems.SingleTimeSeries","text":"SingleTimeSeries(\n name::AbstractString,\n filename::AbstractString,\n component::InfrastructureSystems.InfrastructureSystemsComponent,\n resolution::Dates.Period;\n normalization_factor,\n scaling_factor_multiplier\n) -> InfrastructureSystems.SingleTimeSeries\n\n\nConstruct SingleTimeSeries from a CSV file. The file must have a column that is the name of the component.\n\nArguments\n\nname::AbstractString: user-defined name\nfilename::AbstractString: name of CSV file containing data\ncomponent::InfrastructureSystemsComponent: component associated with the data\nresolution::Dates.Period: resolution of the time series\nnormalization_factor::NormalizationFactor = 1.0: optional normalization factor to apply to each data entry\nscaling_factor_multiplier::Union{Nothing, Function} = nothing: If the data are scaling factors then this function will be called on the component and applied to the data when get_time_series_array is called.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.SingleTimeSeries-Tuple{AbstractString, Union{DataFrames.DataFrame, TimeSeries.TimeArray}}","page":"API","title":"InfrastructureSystems.SingleTimeSeries","text":"SingleTimeSeries(\n name::AbstractString,\n data::Union{DataFrames.DataFrame, TimeSeries.TimeArray};\n normalization_factor,\n scaling_factor_multiplier,\n timestamp\n) -> InfrastructureSystems.SingleTimeSeries\n\n\nConstruct SingleTimeSeries from a TimeArray or DataFrame.\n\nArguments\n\nname::AbstractString: user-defined name\ndata::Union{TimeSeries.TimeArray, DataFrames.DataFrame}: time series data\nnormalization_factor::NormalizationFactor = 1.0: optional normalization factor to apply to each data entry\nscaling_factor_multiplier::Union{Nothing, Function} = nothing: If the data are scaling factors then this function will be called on the component and applied to the data when get_time_series_array is called.\ntimestamp = :timestamp: If a DataFrame is passed then this must be the column name that contains timestamps.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.SingleTimeSeries-Tuple{InfrastructureSystems.SingleTimeSeries, AbstractString}","page":"API","title":"InfrastructureSystems.SingleTimeSeries","text":"SingleTimeSeries(\n src::InfrastructureSystems.SingleTimeSeries,\n name::AbstractString;\n scaling_factor_multiplier\n) -> InfrastructureSystems.SingleTimeSeries\n\n\nConstruct SingleTimeSeries that shares the data from an existing instance.\n\nThis is useful in cases where you want a component to use the same time series data for two different attribtues.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.SingleTimeSeries-Tuple{InfrastructureSystems.SingleTimeSeries, TimeSeries.TimeArray}","page":"API","title":"InfrastructureSystems.SingleTimeSeries","text":"SingleTimeSeries(\n time_series::InfrastructureSystems.SingleTimeSeries,\n data::TimeSeries.TimeArray\n) -> Any\n\n\nCreates a new SingleTimeSeries from an existing instance and a subset of data.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.SingleTimeSeries-Tuple{String, Dates.Period, Dates.DateTime, Int64}","page":"API","title":"InfrastructureSystems.SingleTimeSeries","text":"SingleTimeSeries(\n name::String,\n resolution::Dates.Period,\n initial_time::Dates.DateTime,\n time_steps::Int64\n) -> InfrastructureSystems.SingleTimeSeries\n\n\nConstruct SingleTimeSeries after constructing a TimeArray from initial_time and time_steps.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.SingleTimeSeriesMetadata","page":"API","title":"InfrastructureSystems.SingleTimeSeriesMetadata","text":"mutable struct SingleTimeSeriesMetadata <: StaticTimeSeriesMetadata\n name::String\n resolution::Dates.Period\n initial_timestamp::Dates.DateTime\n time_series_uuid::UUIDs.UUID\n length::Int\n scaling_factor_multiplier::Union{Nothing, Function}\n features::Dict{String, Union{Bool, Int, String}}\n internal::InfrastructureSystemsInternal\nend\n\nA TimeSeries Data object in contigous form.\n\nArguments\n\nname::String: user-defined name\nresolution::Dates.Period:\ninitial_timestamp::Dates.DateTime: time series availability time\ntime_series_uuid::UUIDs.UUID: reference to time series data\nlength::Int: length of this time series\nscaling_factor_multiplier::Union{Nothing, Function}: (default: nothing) Applicable when the time series data are scaling factors. Called on the associated component to convert the values.\nfeatures::Dict{String, Union{Bool, Int, String}}: (default: Dict{String, Any}()) User-defined tags that differentiate multiple time series arrays that represent the same component attribute, such as different arrays for different scenarios or years.\ninternal::InfrastructureSystemsInternal:\n\n\n\n\n\n","category":"type"},{"location":"InfrastructureSystems/#InfrastructureSystems.StaticTimeSeries","page":"API","title":"InfrastructureSystems.StaticTimeSeries","text":"Supertype for static time series, which has one value per time point\n\nCurrent concrete subtypes are:\n\nSingleTimeSeries\n\nSee also: Forecast\n\n\n\n\n\n","category":"type"},{"location":"InfrastructureSystems/#InfrastructureSystems.StaticTimeSeriesCache-Union{Tuple{T}, Tuple{Type{T}, InfrastructureSystems.InfrastructureSystemsComponent, AbstractString}} where T<:InfrastructureSystems.StaticTimeSeries","page":"API","title":"InfrastructureSystems.StaticTimeSeriesCache","text":"Construct StaticTimeSeriesCache to automatically control caching of time series data. Maintains rows of data in memory based on cache_size_bytes.\n\nCall Base.iterate or get_time_series_array to retrieve data. Each iteration will return a TimeSeries.TimeArray of size 1.\n\nArguments\n\n::Type{T}: subtype of StaticTimeSeries\ncomponent::InfrastructureSystemsComponent: component\nname::AbstractString: time series name\ncache_size_bytes = TIME_SERIES_CACHE_SIZE_BYTES: maximum size of data to keep in memory\nignore_scaling_factors = false: controls whether to ignore scalingfactormultiplier in the time series instance\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.StaticTimeSeriesKey","page":"API","title":"InfrastructureSystems.StaticTimeSeriesKey","text":"A unique key to identify and retrieve a StaticTimeSeries\n\nSee: get_time_series_keys and get_time_series(::TimeSeriesOwners, ::TimeSeriesKey).\n\n\n\n\n\n","category":"type"},{"location":"InfrastructureSystems/#InfrastructureSystems.StructDefinition-Tuple{}","page":"API","title":"InfrastructureSystems.StructDefinition","text":"StructDefinition(\n;\n struct_name,\n fields,\n supertype,\n docstring,\n is_component\n)\n\n\nConstruct a StructDefinition for code auto-generation purposes.\n\nArguments\n\nstruct_name::AbstractString: Struct name\nfields::Vector{StructField}: Struct fields. Refer to StructField.\ndocstring::AbstractString: Struct docstring. Defaults to an empty string.\nsupertype::Union{String, DataType}: Struct supertype. Defaults to no supertype.\nis_component::Bool: Set to true for component types that will be attached to a system. Do not set to Default to true.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.StructField-Tuple{}","page":"API","title":"InfrastructureSystems.StructField","text":"StructField(\n;\n name,\n data_type,\n default,\n comment,\n needs_conversion,\n exclude_setter,\n valid_range,\n validation_action,\n null_value,\n internal_default\n)\n\n\nConstruct a StructField for code auto-generation purposes.\n\nArguments\n\nname::String: Field name\ndata_type::Union{DataType, String}: Field type\ndefault::Any: The generated constructors will define this as a default value.\ncomment::String: Include this comment above the field name. Defaults to empty string.\nneeds_conversion::Bool: Set to true if the getter and setter functions need to apply unit conversion. The type must implement get_value(::Component, ::Type) and set_value(::Component, ::Type) for this combination of component type and field type.\nexclude_setter::Bool: Do not generate a setter function for this field. Defaults to false.\nvalid_range::Union{Nothing, String, Dict}: Enables range validation when the component is added to a system. Define this as a Dict with \"min\" and \"max\" or as a String with the field name in the struct that defines this field's valid range and InfrastructureSystems will validate any value against that range. Use nothing if one doesn't apply, such as if there is no max limit.\nvalidation_action: Define this as \"error\" or \"warn\". If it is \"error\" then InfrastructureSystems will throw an exception if the validation code detects a problem. Otherwise, it will log a warning.\nnull_value::Any: Value to indicate the field is zero or empty, such as 0.0 for Float64. If all members in the struct define this field then a \"demo\" constructor will be generated. This allows entering val = MyType(nothing) in the REPL to see the layout of a struct without worrying about valid values.\ninternal_default: Set to true for non-user-facing fields like InfrastructureSystemsInternal that have default values.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.SupplementalAttribute","page":"API","title":"InfrastructureSystems.SupplementalAttribute","text":"Base type for structs that store supplemental attributes\n\nRequired interface functions for subtypes:\n\nget_internal()\n\nOptional interface functions:\n\nget_uuid()\n\nSubtypes may contain time series. Which requires\n\nsupportstimeseries(::SupplementalAttribute)\n\nAll subtypes must include an instance of ComponentUUIDs in order to track components attached to each attribute.\n\n\n\n\n\n","category":"type"},{"location":"InfrastructureSystems/#InfrastructureSystems.SupplementalAttributeAssociations-Tuple{}","page":"API","title":"InfrastructureSystems.SupplementalAttributeAssociations","text":"SupplementalAttributeAssociations(\n\n) -> InfrastructureSystems.SupplementalAttributeAssociations\n\n\nConstruct a new SupplementalAttributeAssociations with an in-memory database.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.SystemData","page":"API","title":"InfrastructureSystems.SystemData","text":"mutable struct SystemData <: InfrastructureSystemsType\n components::Components\n \"Masked components are attached to the system for overall management purposes but\n are not exposed in the standard library calls like [`get_components`](@ref).\n Examples are components in a subsystem.\"\n masked_components::Components\n validation_descriptors::Vector\n internal::InfrastructureSystemsInternal\nend\n\nContainer for system components and time series data\n\n\n\n\n\n","category":"type"},{"location":"InfrastructureSystems/#InfrastructureSystems.SystemData-Tuple{}","page":"API","title":"InfrastructureSystems.SystemData","text":"SystemData(\n;\n validation_descriptor_file,\n time_series_in_memory,\n time_series_directory,\n compression\n) -> InfrastructureSystems.SystemData\n\n\nConstruct SystemData to store components and time series data.\n\nArguments\n\nvalidation_descriptor_file = nothing: Optionally, a file defining component validation descriptors.\ntime_series_in_memory = false: Controls whether time series data is stored in memory or in a file.\ntime_series_directory = nothing: Controls what directory time series data is stored in. Default is the environment variable SIENNATIMESERIES_DIRECTORY or tempdir() if that isn't set.\ncompression = CompressionSettings(): Controls compression of time series data.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.TimeSeriesAssociation","page":"API","title":"InfrastructureSystems.TimeSeriesAssociation","text":"Defines an association between a time series owner (component or supplemental attribute) and the time series metadata.\n\nExamples\n\nassociation1 = TimeSeriesAssociation(component, time_series)\nassociation2 = TimeSeriesAssociation(component, time_series, scenario = \"high\")\n\n\n\n\n\n","category":"type"},{"location":"InfrastructureSystems/#InfrastructureSystems.TimeSeriesCounts","page":"API","title":"InfrastructureSystems.TimeSeriesCounts","text":"Provides counts of time series including attachments to components and supplemental attributes.\n\n\n\n\n\n","category":"type"},{"location":"InfrastructureSystems/#InfrastructureSystems.TimeSeriesData","page":"API","title":"InfrastructureSystems.TimeSeriesData","text":"Abstract type for time series stored in the system. Components store references to these through TimeSeriesMetadata values so that data can reside on storage media instead of memory.\n\n\n\n\n\n","category":"type"},{"location":"InfrastructureSystems/#InfrastructureSystems.TimeSeriesFileMetadata","page":"API","title":"InfrastructureSystems.TimeSeriesFileMetadata","text":"Describes how to construct time_series from raw time series data files.\n\n\n\n\n\n","category":"type"},{"location":"InfrastructureSystems/#InfrastructureSystems.TimeSeriesKey","page":"API","title":"InfrastructureSystems.TimeSeriesKey","text":"Supertype for keys that can be used to access a desired time series dataset\n\nConcrete subtypes:\n\nStaticTimeSeriesKey\nForecastKey\n\nRequired methods:\n\nget_name\nget_time_series_type\n\nThe default methods rely on the field names name and time_series_type.\n\n\n\n\n\n","category":"type"},{"location":"InfrastructureSystems/#InfrastructureSystems.TimeSeriesMetadata","page":"API","title":"InfrastructureSystems.TimeSeriesMetadata","text":"Abstract type for time_series that are stored in a system. Users never create them or get access to them. Stores references to TimeSeriesData.\n\n\n\n\n\n","category":"type"},{"location":"InfrastructureSystems/#InfrastructureSystems.TimeSeriesMetadataStore-Tuple{AbstractString}","page":"API","title":"InfrastructureSystems.TimeSeriesMetadataStore","text":"TimeSeriesMetadataStore(\n filename::AbstractString\n) -> InfrastructureSystems.TimeSeriesMetadataStore\n\n\nLoad a TimeSeriesMetadataStore from a saved database into an in-memory database.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.TimeSeriesMetadataStore-Tuple{}","page":"API","title":"InfrastructureSystems.TimeSeriesMetadataStore","text":"TimeSeriesMetadataStore(\n\n) -> InfrastructureSystems.TimeSeriesMetadataStore\n\n\nConstruct a new TimeSeriesMetadataStore with an in-memory database.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.TimeSeriesStorage","page":"API","title":"InfrastructureSystems.TimeSeriesStorage","text":"Abstract type for time series storage implementations.\n\nAll subtypes must implement:\n\nclear_time_series!\ndeserialize_time_series\nget_compression_settings\nget_num_time_series\nremove_time_series!\nserialize_time_series!\nBase.isempty\n\n\n\n\n\n","category":"type"},{"location":"InfrastructureSystems/#InfrastructureSystems.ValueCurve","page":"API","title":"InfrastructureSystems.ValueCurve","text":"Supertype that represents a unitless cost curve\n\nConcrete subtypes are:\n\nLinearCurve\nQuadraticCurve\nPiecewisePointCurve\nPiecewiseIncrementalCurve\nPiecewiseAverageCurve\n\n\n\n\n\n","category":"type"},{"location":"InfrastructureSystems/#Base.close-Tuple{InfrastructureSystems.MultiLogger}","page":"API","title":"Base.close","text":"close(logger::InfrastructureSystems.MultiLogger)\n\n\nEnsures that any file streams are flushed and closed.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#Base.convert-Tuple{Type{InfrastructureSystems.QuadraticFunctionData}, InfrastructureSystems.LinearFunctionData}","page":"API","title":"Base.convert","text":"convert(\n _::Type{InfrastructureSystems.QuadraticFunctionData},\n data::InfrastructureSystems.LinearFunctionData\n) -> InfrastructureSystems.QuadraticFunctionData\n\n\nLosslessly convert LinearFunctionData to QuadraticFunctionData\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#Base.flush-Tuple{InfrastructureSystems.MultiLogger}","page":"API","title":"Base.flush","text":"flush(logger::InfrastructureSystems.MultiLogger)\n\n\nFlush any file streams.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#Base.get-Union{Tuple{K}, Tuple{InfrastructureSystems.LazyDictFromIterator, K}} where K","page":"API","title":"Base.get","text":"get(\n container::InfrastructureSystems.LazyDictFromIterator,\n key\n) -> Any\n\n\nReturns the item mapped to key. If the key is already stored then it will be returned with a dictionary lookup. If it has not been stored then iterate over the list until it is found.\n\nReturns nothing if key is not found.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#Base.zero-Tuple{Type{InfrastructureSystems.FunctionData}}","page":"API","title":"Base.zero","text":"zero(\n _::Type{InfrastructureSystems.FunctionData}\n) -> InfrastructureSystems.LinearFunctionData\n\n\nGet a FunctionData representing the function f(x) = 0\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#Base.zero-Tuple{Union{InfrastructureSystems.LinearFunctionData, Type{InfrastructureSystems.LinearFunctionData}}}","page":"API","title":"Base.zero","text":"zero(\n _::Union{InfrastructureSystems.LinearFunctionData, Type{InfrastructureSystems.LinearFunctionData}}\n) -> InfrastructureSystems.LinearFunctionData\n\n\nGet a LinearFunctionData representing the function f(x) = 0\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#Base.zero-Tuple{Union{Type{InfrastructureSystems.AverageRateCurve}, InfrastructureSystems.AverageRateCurve}}","page":"API","title":"Base.zero","text":"zero(\n _::Union{Type{InfrastructureSystems.AverageRateCurve}, InfrastructureSystems.AverageRateCurve}\n) -> InfrastructureSystems.AverageRateCurve{InfrastructureSystems.LinearFunctionData}\n\n\nGet an AverageRateCurve representing f(x)/x = 0 with zero initial_input\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#Base.zero-Tuple{Union{Type{InfrastructureSystems.CostCurve}, InfrastructureSystems.CostCurve}}","page":"API","title":"Base.zero","text":"zero(\n _::Union{Type{InfrastructureSystems.CostCurve}, InfrastructureSystems.CostCurve}\n) -> InfrastructureSystems.CostCurve{LinearCurve}\n\n\nGet a CostCurve representing zero variable cost\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#Base.zero-Tuple{Union{Type{InfrastructureSystems.FuelCurve}, InfrastructureSystems.FuelCurve}}","page":"API","title":"Base.zero","text":"zero(\n _::Union{Type{InfrastructureSystems.FuelCurve}, InfrastructureSystems.FuelCurve}\n) -> InfrastructureSystems.FuelCurve{LinearCurve}\n\n\nGet a FuelCurve representing zero fuel usage and zero fuel cost\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#Base.zero-Tuple{Union{Type{InfrastructureSystems.IncrementalCurve}, InfrastructureSystems.IncrementalCurve}}","page":"API","title":"Base.zero","text":"zero(\n _::Union{Type{InfrastructureSystems.IncrementalCurve}, InfrastructureSystems.IncrementalCurve}\n) -> InfrastructureSystems.IncrementalCurve{InfrastructureSystems.LinearFunctionData}\n\n\nGet an IncrementalCurve representing f'(x) = 0 with zero initial_input\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#Base.zero-Tuple{Union{Type{InfrastructureSystems.InputOutputCurve}, InfrastructureSystems.InputOutputCurve}}","page":"API","title":"Base.zero","text":"zero(\n _::Union{Type{InfrastructureSystems.InputOutputCurve}, InfrastructureSystems.InputOutputCurve}\n) -> LinearCurve\n\n\nGet an InputOutputCurve representing f(x) = 0\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#Base.zero-Tuple{Union{Type{InfrastructureSystems.ValueCurve}, InfrastructureSystems.ValueCurve}}","page":"API","title":"Base.zero","text":"zero(\n _::Union{Type{InfrastructureSystems.ValueCurve}, InfrastructureSystems.ValueCurve}\n) -> LinearCurve\n\n\nGet a ValueCurve representing zero variable cost\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems._check_transform_single_time_series-Tuple{InfrastructureSystems.SystemData, Type{InfrastructureSystems.DeterministicSingleTimeSeries}, Dates.Period, Dates.Period}","page":"API","title":"InfrastructureSystems._check_transform_single_time_series","text":"_check_transform_single_time_series(\n data::InfrastructureSystems.SystemData,\n _::Type{InfrastructureSystems.DeterministicSingleTimeSeries},\n horizon::Dates.Period,\n interval::Dates.Period\n) -> Vector{Any}\n\n\nCheck that all existing SingleTimeSeries can be converted to DeterministicSingleTimeSeries with the given horizon and interval.\n\nThrow ConflictingInputsError if any time series cannot be converted.\n\nReturn a Vector of NamedTuple of component, time series metadata, and forecast parameters for all matches.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems._get_all_concrete_subtypes-Union{Tuple{T}, Tuple{Type{T}, Vector{DataType}}} where T","page":"API","title":"InfrastructureSystems._get_all_concrete_subtypes","text":"_get_all_concrete_subtypes(\n _::Type{T},\n sub_types::Vector{DataType}\n)\n\n\nRecursively builds a vector of subtypes.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems._validate-Union{Tuple{T}, Tuple{InfrastructureSystems.SystemData, T}} where T<:InfrastructureSystems.InfrastructureSystemsComponent","page":"API","title":"InfrastructureSystems._validate","text":"_validate(\n data::InfrastructureSystems.SystemData,\n component::InfrastructureSystems.InfrastructureSystemsComponent\n)\n\n\nChecks that the component exists in data and is the same object.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.add_association!-Tuple{InfrastructureSystems.SupplementalAttributeAssociations, InfrastructureSystems.InfrastructureSystemsComponent, InfrastructureSystems.SupplementalAttribute}","page":"API","title":"InfrastructureSystems.add_association!","text":"add_association!(\n associations::InfrastructureSystems.SupplementalAttributeAssociations,\n component::InfrastructureSystems.InfrastructureSystemsComponent,\n attribute::InfrastructureSystems.SupplementalAttribute\n)\n\n\nAdd a supplemental attribute association to the associations. The caller must check for duplicates.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.add_component!-Union{Tuple{T}, Tuple{InfrastructureSystems.Components, T}} where T<:InfrastructureSystems.InfrastructureSystemsComponent","page":"API","title":"InfrastructureSystems.add_component!","text":"add_component!(\n components::InfrastructureSystems.Components,\n component::InfrastructureSystems.InfrastructureSystemsComponent;\n kwargs...\n)\n\n\nAdd a component.\n\nThrows ArgumentError if the component's name is already stored for its concrete type.\n\nThrows InvalidRange if any of the component's field values are outside of defined valid range.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.add_component_to_subsystem!-Tuple{InfrastructureSystems.SystemData, AbstractString, InfrastructureSystems.InfrastructureSystemsComponent}","page":"API","title":"InfrastructureSystems.add_component_to_subsystem!","text":"add_component_to_subsystem!(\n data::InfrastructureSystems.SystemData,\n subsystem_name::AbstractString,\n component::InfrastructureSystems.InfrastructureSystemsComponent\n)\n\n\nAdd a component to a subsystem.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.add_metadata!-Tuple{InfrastructureSystems.TimeSeriesMetadataStore, Union{InfrastructureSystems.InfrastructureSystemsComponent, InfrastructureSystems.SupplementalAttribute}, InfrastructureSystems.TimeSeriesMetadata}","page":"API","title":"InfrastructureSystems.add_metadata!","text":"add_metadata!(\n store::InfrastructureSystems.TimeSeriesMetadataStore,\n owner::Union{InfrastructureSystems.InfrastructureSystemsComponent, InfrastructureSystems.SupplementalAttribute},\n metadata::InfrastructureSystems.TimeSeriesMetadata\n)\n\n\nAdd metadata to the store. The caller must check if there are duplicates.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.add_serialization_metadata!-Union{Tuple{T}, Tuple{Dict, Type{T}}} where T","page":"API","title":"InfrastructureSystems.add_serialization_metadata!","text":"add_serialization_metadata!(data::Dict, _::Type{T})\n\n\nAdd type information to the dictionary that can be used to deserialize the value.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.add_subsystem!-Tuple{InfrastructureSystems.SystemData, AbstractString}","page":"API","title":"InfrastructureSystems.add_subsystem!","text":"add_subsystem!(\n data::InfrastructureSystems.SystemData,\n subsystem_name::AbstractString\n)\n\n\nAdd a new subsystem to the system.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.add_time_series!-Tuple{InfrastructureSystems.SystemData, Any, InfrastructureSystems.TimeSeriesData}","page":"API","title":"InfrastructureSystems.add_time_series!","text":"add_time_series!(\n data::InfrastructureSystems.SystemData,\n components,\n time_series::InfrastructureSystems.TimeSeriesData;\n features...\n) -> InfrastructureSystems.TimeSeriesKey\n\n\nAdd the same time series data to multiple components.\n\nArguments\n\ndata::SystemData: SystemData\ncomponents: iterable of components that will store the same time series reference\ntime_series::TimeSeriesData: Any object of subtype TimeSeriesData\n\nThis is significantly more efficent than calling add_time_series! for each component individually with the same data because in this case, only one time series array is stored.\n\nThrows ArgumentError if a component is not stored in the system.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.add_time_series!-Tuple{InfrastructureSystems.SystemData, Union{InfrastructureSystems.InfrastructureSystemsComponent, InfrastructureSystems.SupplementalAttribute}, InfrastructureSystems.TimeSeriesData}","page":"API","title":"InfrastructureSystems.add_time_series!","text":"add_time_series!(\n data::InfrastructureSystems.SystemData,\n owner::Union{InfrastructureSystems.InfrastructureSystemsComponent, InfrastructureSystems.SupplementalAttribute},\n time_series::InfrastructureSystems.TimeSeriesData;\n features...\n) -> InfrastructureSystems.TimeSeriesKey\n\n\nAdd time series data to a component or supplemental attribute.\n\nArguments\n\ndata::SystemData: SystemData\nowner::InfrastructureSystemsComponent: will store the time series reference\ntime_series::TimeSeriesData: Any object of subtype TimeSeriesData\n\nThrows ArgumentError if the owner is not stored in the system.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.add_time_series_from_file_metadata!-Tuple{InfrastructureSystems.SystemData, Type{<:InfrastructureSystems.InfrastructureSystemsComponent}, Vector{InfrastructureSystems.TimeSeriesFileMetadata}}","page":"API","title":"InfrastructureSystems.add_time_series_from_file_metadata!","text":"add_time_series_from_file_metadata!(\n data::InfrastructureSystems.SystemData,\n component_type::Type{<:InfrastructureSystems.InfrastructureSystemsComponent},\n file_metadata::Vector{InfrastructureSystems.TimeSeriesFileMetadata};\n resolution\n) -> Vector{InfrastructureSystems.TimeSeriesKey}\n\n\nAdds time series data from a metadata file or metadata descriptors.\n\nArguments\n\ndata::SystemData: system\nfile_metadata::Vector{TimeSeriesFileMetadata}: metadata for time series\nresolution::DateTime.Period=nothing: skip time_series that don't match this resolution.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.add_time_series_from_file_metadata!-Union{Tuple{T}, Tuple{InfrastructureSystems.SystemData, Type{T}, AbstractString}} where T<:InfrastructureSystems.InfrastructureSystemsComponent","page":"API","title":"InfrastructureSystems.add_time_series_from_file_metadata!","text":"add_time_series_from_file_metadata!(\n data::InfrastructureSystems.SystemData,\n ::Type{T<:InfrastructureSystems.InfrastructureSystemsComponent},\n metadata_file::AbstractString;\n resolution\n) -> Vector{InfrastructureSystems.TimeSeriesKey}\n\n\nAdds time_series from a metadata file or metadata descriptors.\n\nArguments\n\ndata::SystemData: system\n::Type{T}: type of the component associated with time series data; may be abstract\nmetadata_file::AbstractString: metadata file for time series that includes an array of TimeSeriesFileMetadata instances or a vector.\nresolution::DateTime.Period=nothing: skip time_series that don't match this resolution.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.assign_new_uuid_internal!-Tuple{InfrastructureSystems.InfrastructureSystemsComponent}","page":"API","title":"InfrastructureSystems.assign_new_uuid_internal!","text":"assign_new_uuid_internal!(\n component::InfrastructureSystems.InfrastructureSystemsComponent\n)\n\n\nReturn an instance of ForecastParameters for the given inputs.\n\nThrows ConflictingInputsError if horizon and interval are incompatible with the metadata.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.assign_new_uuid_internal!-Tuple{InfrastructureSystems.InfrastructureSystemsType}","page":"API","title":"InfrastructureSystems.assign_new_uuid_internal!","text":"assign_new_uuid_internal!(\n obj::InfrastructureSystems.InfrastructureSystemsType\n)\n\n\nAssign a new UUID.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.backup_to_temp-Tuple{InfrastructureSystems.TimeSeriesMetadataStore}","page":"API","title":"InfrastructureSystems.backup_to_temp","text":"backup_to_temp(\n store::InfrastructureSystems.TimeSeriesMetadataStore\n) -> String\n\n\nBackup the database to a file on the temporary filesystem and return that filename.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.check_consistency-Tuple{InfrastructureSystems.TimeSeriesMetadataStore, Type{InfrastructureSystems.SingleTimeSeries}}","page":"API","title":"InfrastructureSystems.check_consistency","text":"check_consistency(\n store::InfrastructureSystems.TimeSeriesMetadataStore,\n _::Type{InfrastructureSystems.SingleTimeSeries}\n) -> Tuple{Any, Any}\n\n\nThrow InvalidValue if the SingleTimeSeries arrays have different initial times or lengths. Return the initial timestamp and length as a tuple.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.clear_components!-Tuple{InfrastructureSystems.Components}","page":"API","title":"InfrastructureSystems.clear_components!","text":"clear_components!(\n components::InfrastructureSystems.Components\n)\n\n\nRemoves all components from the system.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.clear_ext!-Tuple{InfrastructureSystems.InfrastructureSystemsInternal}","page":"API","title":"InfrastructureSystems.clear_ext!","text":"clear_ext!(\n obj::InfrastructureSystems.InfrastructureSystemsInternal\n)\n\n\nClear any value stored in ext.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.clear_metadata!-Tuple{InfrastructureSystems.TimeSeriesMetadataStore}","page":"API","title":"InfrastructureSystems.clear_metadata!","text":"clear_metadata!(\n store::InfrastructureSystems.TimeSeriesMetadataStore\n) -> SQLite.Query\n\n\nClear all time series metadata from the store.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.clear_supplemental_attributes!-Tuple{InfrastructureSystems.SupplementalAttributeManager}","page":"API","title":"InfrastructureSystems.clear_supplemental_attributes!","text":"clear_supplemental_attributes!(\n mgr::InfrastructureSystems.SupplementalAttributeManager\n)\n\n\nRemoves all supplemental_attributes from the system.\n\nIgnores whether attributes are attached to components.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.clear_supplemental_attributes!-Tuple{InfrastructureSystems.SystemData}","page":"API","title":"InfrastructureSystems.clear_supplemental_attributes!","text":"clear_supplemental_attributes!(\n data::InfrastructureSystems.SystemData\n)\n\n\nRemove all supplemental attributes.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.compare_over_fields-Union{Tuple{T}, Tuple{Any, Any, Any, T, T}} where T","page":"API","title":"InfrastructureSystems.compare_over_fields","text":"compare_over_fields(cmp_op, reduce_op, init, a, b) -> Any\n\n\nFor a and b, instances of the same concrete type, iterate over all the fields, compare a's value to b's using cmp_op, and reduce to one value using reduce_op with an initialization value of init.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.compare_values-Union{Tuple{U}, Tuple{T}, Tuple{Union{Nothing, Function}, T, U}} where {T, U}","page":"API","title":"InfrastructureSystems.compare_values","text":"compare_values(\n match_fn::Union{Nothing, Function},\n x,\n y;\n compare_uuids,\n exclude\n) -> Bool\n\n\nRecursively compares struct values. Prints all mismatched values to stdout.\n\nArguments\n\nmatch_fn: optional, a function used to determine whether two values match in the base case of the recursion. If nothing or not specified, the default implementation uses IS.isequivalent.\nx::T: First value\ny::U: Second value\ncompare_uuids::Bool = false: Compare any UUID in the object or composed objects.\n`exclude::Set{Symbol} = Set{Symbol}(): Fields to exclude from comparison. Passed on recursively and so applied per type.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.compute_sha256-Tuple{AbstractString}","page":"API","title":"InfrastructureSystems.compute_sha256","text":"compute_sha256(filename::AbstractString) -> String\n\n\nReturn the SHA 256 hash of a file.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.configure_logging-Tuple{}","page":"API","title":"InfrastructureSystems.configure_logging","text":"configure_logging(\n;\n console,\n console_stream,\n console_level,\n progress,\n file,\n filename,\n file_level,\n file_mode,\n tracker,\n set_global\n) -> InfrastructureSystems.MultiLogger\n\n\nCreates console and file loggers per caller specification and returns a MultiLogger.\n\nSuppress noisy events by specifying per-event values of maxlog = X and _suppression_period = Y where X is the max number of events that can occur in Y seconds. After the period ends, messages will no longer be suppressed. Note that if you don't specify _suppression_period then maxlog applies for the for the duration of your process (standard Julia logging behavior).\n\nNote: Use of log message suppression and the LogEventTracker are not thread-safe. Please contact the package developers if you need this functionality.\n\nNote: If logging to a file users must call Base.close() on the returned MultiLogger to ensure that all events get flushed.\n\nArguments\n\nconsole::Bool=true: create console logger\nconsole_stream::IOStream=stderr: stream for console logger\nconsole_level::Logging.LogLevel=Logging.Error: level for console messages\nprogress::Bool=true: enable progress logger\nfile::Bool=true: create file logger\nfilename::Union{Nothing, String}=log.txt: log file\nfile_level::Logging.LogLevel=Logging.Info: level for file messages\nfile_mode::String=w+: mode used when opening log file\ntracker::Union{LogEventTracker, Nothing}=LogEventTracker(): optionally track log events\nset_global::Bool=true: set the created logger as the global logger\n\nExample\n\nlogger = configure_logging(filename=\"mylog.txt\")\n@info \"hello world\"\n@info \"hello world\" maxlog = 5 _suppression_period = 10\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.copy_h5_file-Tuple{AbstractString, AbstractString}","page":"API","title":"InfrastructureSystems.copy_h5_file","text":"copy_h5_file(src::AbstractString, dst::AbstractString)\n\n\nCopies an HDF5 file to a new file. This should be used instead of a system call to copy because it won't copy unused space that results from deleting datasets.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.copy_time_series!-Tuple{Union{InfrastructureSystems.InfrastructureSystemsComponent, InfrastructureSystems.SupplementalAttribute}, Union{InfrastructureSystems.InfrastructureSystemsComponent, InfrastructureSystems.SupplementalAttribute}}","page":"API","title":"InfrastructureSystems.copy_time_series!","text":"copy_time_series!(\n dst::Union{InfrastructureSystems.InfrastructureSystemsComponent, InfrastructureSystems.SupplementalAttribute},\n src::Union{InfrastructureSystems.InfrastructureSystemsComponent, InfrastructureSystems.SupplementalAttribute};\n name_mapping,\n scaling_factor_multiplier_mapping\n)\n\n\nEfficiently add all time_series in one component to another by copying the underlying references.\n\nArguments\n\ndst::TimeSeriesOwners: Destination owner\nsrc::TimeSeriesOwners: Source owner\nname_mapping::Dict = nothing: Optionally map src names to different dst names. If provided and src has a timeseries with a name not present in namemapping, that timeseries will not copied. If namemapping is nothing then all time_series will be copied with src's names.\nscaling_factor_multiplier_mapping::Dict = nothing: Optionally map src multipliers to different dst multipliers. If provided and src has a timeseries with a multiplier not present in scalingfactormultipliermapping, that timeseries will not copied. If scalingfactormultipliermapping is nothing then all time_series will be copied with src's multipliers.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.deserialize-Union{Tuple{T}, Tuple{Type{T}, Dict}} where T<:InfrastructureSystems.InfrastructureSystemsType","page":"API","title":"InfrastructureSystems.deserialize","text":"deserialize(\n _::Type{T<:InfrastructureSystems.InfrastructureSystemsType},\n data::Dict\n) -> InfrastructureSystems.TestComponent\n\n\nDeserialize an object from standard types stored in non-Julia formats, such as JSON, into Julia types.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.double_equals_from_fields-Union{Tuple{T}, Tuple{T, T}} where T","page":"API","title":"InfrastructureSystems.double_equals_from_fields","text":"double_equals_from_fields(a, b) -> Any\n\n\nCompute the conjunction of the == values of all the fields in a and b\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.drop_table-Tuple{InfrastructureSystems.SupplementalAttributeAssociations}","page":"API","title":"InfrastructureSystems.drop_table","text":"drop_table(\n associations::InfrastructureSystems.SupplementalAttributeAssociations\n)\n\n\nDrop the supplemental attribute associations table.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.empty_group_levels!-Tuple{InfrastructureSystems.MultiLogger}","page":"API","title":"InfrastructureSystems.empty_group_levels!","text":"empty_group_levels!(\n logger::InfrastructureSystems.MultiLogger\n)\n\n\nEmpty the minimum log levels stored for each group.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.execute-Tuple{SQLite.DB, AbstractString, Union{Nothing, Vector}, Symbol}","page":"API","title":"InfrastructureSystems.execute","text":"execute(\n db::SQLite.DB,\n query::AbstractString,\n params::Union{Nothing, Vector},\n log_group::Symbol\n) -> SQLite.Query\n\n\nWrapper around SQLite.DBInterface.execute to provide log messages.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.execute_count-Tuple{SQLite.DB, AbstractString, Union{Nothing, Vector}, Symbol}","page":"API","title":"InfrastructureSystems.execute_count","text":"execute_count(\n db::SQLite.DB,\n query::AbstractString,\n params::Union{Nothing, Vector},\n log_group::Symbol\n) -> Any\n\n\nRun a query to find a count. The query must produce a column called count with one row.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.from-Tuple{InfrastructureSystems.SingleTimeSeries, Any}","page":"API","title":"InfrastructureSystems.from","text":"from(\n time_series::InfrastructureSystems.SingleTimeSeries,\n timestamp\n) -> InfrastructureSystems.SingleTimeSeries\n\n\nReturn a time_series truncated starting with timestamp.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.from_file-Tuple{Type{InfrastructureSystems.Hdf5TimeSeriesStorage}, AbstractString}","page":"API","title":"InfrastructureSystems.from_file","text":"from_file(\n ::Type{InfrastructureSystems.Hdf5TimeSeriesStorage},\n filename::AbstractString;\n read_only,\n directory\n) -> InfrastructureSystems.Hdf5TimeSeriesStorage\n\n\nConstructs Hdf5TimeSeriesStorage from an existing file.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.from_h5_file-Tuple{Type{InfrastructureSystems.TimeSeriesMetadataStore}, AbstractString, Any}","page":"API","title":"InfrastructureSystems.from_h5_file","text":"from_h5_file(\n _::Type{InfrastructureSystems.TimeSeriesMetadataStore},\n src::AbstractString,\n directory\n) -> InfrastructureSystems.TimeSeriesMetadataStore\n\n\nLoad a TimeSeriesMetadataStore from an HDF5 file into an in-memory database.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.from_json-Union{Tuple{T}, Tuple{Type{T}, String}} where T<:InfrastructureSystems.InfrastructureSystemsType","page":"API","title":"InfrastructureSystems.from_json","text":"from_json(\n _::Type{T<:InfrastructureSystems.InfrastructureSystemsType},\n filename::String\n) -> Any\n\n\nDeserializes a InfrastructureSystemsType from a JSON filename.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.from_json-Union{Tuple{T}, Tuple{Union{IO, String}, Type{T}}} where T<:InfrastructureSystems.InfrastructureSystemsType","page":"API","title":"InfrastructureSystems.from_json","text":"from_json(\n io::Union{IO, String},\n _::Type{T<:InfrastructureSystems.InfrastructureSystemsType}\n) -> InfrastructureSystems.TestComponent\n\n\nDeserializes a InfrastructureSystemsType from String or IO.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.generate_struct_file-Tuple{InfrastructureSystems.StructDefinition}","page":"API","title":"InfrastructureSystems.generate_struct_file","text":"generate_struct_file(\n definition::InfrastructureSystems.StructDefinition;\n filename,\n output_directory\n)\n\n\nGenerate a Julia source code file for one struct from a StructDefinition.\n\nRefer to StructDefinition and StructField for descriptions of the available fields.\n\nArguments\n\ndefinition::StructDefinition: Defines the struct and all fields.\nfilename::AbstractString: Add the struct definition to this JSON file. Defaults to src/descriptors/structs.json\noutput_directory::AbstractString: Generate the files in this directory. Defaults to src/generated\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.generate_struct_files-Tuple{Any}","page":"API","title":"InfrastructureSystems.generate_struct_files","text":"generate_struct_files(\n definitions;\n filename,\n output_directory\n)\n\n\nGenerate Julia source code files for multiple structs from a iterable of StructDefinition instances.\n\nRefer to StructDefinition and StructField for descriptions of the available fields.\n\nArguments\n\ndefinitions: Defines the structs and all fields.\nfilename::AbstractString: Add the struct definition to this JSON file. Defaults to src/descriptors/power_system_structs.json\noutput_directory::AbstractString: Generate the files in this directory. Defaults to src/generated\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_abstract_subtypes-Union{Tuple{Type{T}}, Tuple{T}} where T","page":"API","title":"InfrastructureSystems.get_abstract_subtypes","text":"get_abstract_subtypes(_::Type{T}) -> Vector\n\n\nReturns an array of abstract types that are direct subtypes of T.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_all_concrete_subtypes-Union{Tuple{Type{T}}, Tuple{T}} where T","page":"API","title":"InfrastructureSystems.get_all_concrete_subtypes","text":"get_all_concrete_subtypes(_::Type{T}) -> Any\n\n\nReturns an array of all concrete subtypes of T. Caches the values for faster lookup on repeated calls.\n\nNote that this does not find parameterized types. It will also not find types dynamically added after the first call of given type.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_assigned_subsystems-Tuple{InfrastructureSystems.SystemData, InfrastructureSystems.InfrastructureSystemsComponent}","page":"API","title":"InfrastructureSystems.get_assigned_subsystems","text":"get_assigned_subsystems(\n data::InfrastructureSystems.SystemData,\n component::InfrastructureSystems.InfrastructureSystemsComponent\n) -> Vector\n\n\nReturn a Vector of subsystem names that contain the component.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_attribute_counts_by_type-Tuple{InfrastructureSystems.SupplementalAttributeAssociations}","page":"API","title":"InfrastructureSystems.get_attribute_counts_by_type","text":"get_attribute_counts_by_type(\n associations::InfrastructureSystems.SupplementalAttributeAssociations\n) -> Vector\n\n\nReturn a Vector of OrderedDict of stored time series counts by type.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_attribute_summary_table-Tuple{InfrastructureSystems.SupplementalAttributeAssociations}","page":"API","title":"InfrastructureSystems.get_attribute_summary_table","text":"get_attribute_summary_table(\n associations::InfrastructureSystems.SupplementalAttributeAssociations\n) -> DataFrames.DataFrame\n\n\nReturn a DataFrame with the number of supplemental attributes by type for components.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_average_rates-Tuple{PiecewiseAverageCurve}","page":"API","title":"InfrastructureSystems.get_average_rates","text":"get_average_rates(\n vc::PiecewiseAverageCurve\n) -> Vector{Float64}\n\n\nGet the average rates that define the PiecewiseAverageCurve\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_component-Union{Tuple{T}, Tuple{Type{T}, InfrastructureSystems.Components, AbstractString}} where T<:InfrastructureSystems.InfrastructureSystemsComponent","page":"API","title":"InfrastructureSystems.get_component","text":"get_component(\n _::Type{T<:InfrastructureSystems.InfrastructureSystemsComponent},\n components::InfrastructureSystems.Components,\n name::AbstractString\n) -> Union{Nothing, InfrastructureSystems.InfrastructureSystemsComponent}\n\n\nGet the component of type T with name. Returns nothing if no component matches. If T is an abstract type then the names of components across all subtypes of T must be unique.\n\nSee get_components_by_name for abstract types with non-unique names across subtypes.\n\nThrows ArgumentError if T is not a concrete type and there is more than one component with requested name\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_components-Union{Tuple{T}, Tuple{Type{T}, InfrastructureSystems.Components}} where T<:InfrastructureSystems.InfrastructureSystemsComponent","page":"API","title":"InfrastructureSystems.get_components","text":"get_components(\n ::Type{T<:InfrastructureSystems.InfrastructureSystemsComponent},\n components::InfrastructureSystems.Components;\n component_uuids\n) -> InfrastructureSystems.FlattenIteratorWrapper{T, I} where {T<:InfrastructureSystems.InfrastructureSystemsComponent, I<:(Vector)}\n\n\nReturns an iterator of components. T can be concrete or abstract. Call collect on the result if an array is desired.\n\nArguments\n\nT: component type\ncomponents::Components: Components of the system\nfilter_func::Union{Nothing, Function} = nothing: Optional function that accepts a component of type T and returns a Bool. Apply this function to each component and only return components where the result is true.\n\nSee also: iterate_components\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_components_by_name-Union{Tuple{T}, Tuple{Type{T}, InfrastructureSystems.Components, AbstractString}} where T<:InfrastructureSystems.InfrastructureSystemsComponent","page":"API","title":"InfrastructureSystems.get_components_by_name","text":"get_components_by_name(\n _::Type{T<:InfrastructureSystems.InfrastructureSystemsComponent},\n components::InfrastructureSystems.Components,\n name::AbstractString\n) -> Vector{<:InfrastructureSystems.InfrastructureSystemsComponent}\n\n\nGet the components of abstract type T with name. Note that InfrastructureSystems enforces unique names on each concrete type but not across concrete types.\n\nSee get_component if the concrete type is known.\n\nThrows ArgumentError if T is not an abstract type.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_concrete_subtypes-Union{Tuple{Type{T}}, Tuple{T}} where T","page":"API","title":"InfrastructureSystems.get_concrete_subtypes","text":"get_concrete_subtypes(_::Type{T}) -> Vector\n\n\nReturns an array of concrete types that are direct subtypes of T.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_constant_term-Tuple{LinearCurve}","page":"API","title":"InfrastructureSystems.get_constant_term","text":"get_constant_term(vc::LinearCurve) -> Float64\n\n\nGet the constant term (i.e., intercept) of the LinearCurve\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_constant_term-Tuple{QuadraticCurve}","page":"API","title":"InfrastructureSystems.get_constant_term","text":"get_constant_term(vc::QuadraticCurve) -> Float64\n\n\nGet the constant term of the QuadraticCurve\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_count-Tuple{InfrastructureSystems.DeterministicMetadata}","page":"API","title":"InfrastructureSystems.get_count","text":"get_count(\n value::InfrastructureSystems.DeterministicMetadata\n) -> Int64\n\n\nGet DeterministicMetadata count.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_count-Tuple{InfrastructureSystems.DeterministicSingleTimeSeries}","page":"API","title":"InfrastructureSystems.get_count","text":"get_count(\n value::InfrastructureSystems.DeterministicSingleTimeSeries\n) -> Int64\n\n\nGet DeterministicSingleTimeSeries count.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_count-Tuple{InfrastructureSystems.ProbabilisticMetadata}","page":"API","title":"InfrastructureSystems.get_count","text":"get_count(\n value::InfrastructureSystems.ProbabilisticMetadata\n) -> Int64\n\n\nGet ProbabilisticMetadata count.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_count-Tuple{InfrastructureSystems.ScenariosMetadata}","page":"API","title":"InfrastructureSystems.get_count","text":"get_count(\n value::InfrastructureSystems.ScenariosMetadata\n) -> Int64\n\n\nGet ScenariosMetadata count.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_data-Tuple{InfrastructureSystems.Deterministic}","page":"API","title":"InfrastructureSystems.get_data","text":"get_data(\n value::InfrastructureSystems.Deterministic\n) -> DataStructures.SortedDict\n\n\nGet Deterministic data.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_data-Tuple{InfrastructureSystems.Probabilistic}","page":"API","title":"InfrastructureSystems.get_data","text":"get_data(\n value::InfrastructureSystems.Probabilistic\n) -> DataStructures.SortedDict\n\n\nGet Probabilistic data.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_data-Tuple{InfrastructureSystems.Scenarios}","page":"API","title":"InfrastructureSystems.get_data","text":"get_data(\n value::InfrastructureSystems.Scenarios\n) -> DataStructures.SortedDict\n\n\nGet Scenarios data.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_data-Tuple{InfrastructureSystems.SingleTimeSeries}","page":"API","title":"InfrastructureSystems.get_data","text":"get_data(\n value::InfrastructureSystems.SingleTimeSeries\n) -> TimeSeries.TimeArray\n\n\nGet SingleTimeSeries data.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_data_type-Tuple{InfrastructureSystems.TimeSeriesData}","page":"API","title":"InfrastructureSystems.get_data_type","text":"get_data_type(\n ts::InfrastructureSystems.TimeSeriesData\n) -> Any\n\n\nReturn a String for the data type of the forecast data, this implementation avoids the use of eval on arbitrary code stored in HDF dataset.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_ext-Tuple{InfrastructureSystems.InfrastructureSystemsInternal}","page":"API","title":"InfrastructureSystems.get_ext","text":"get_ext(\n obj::InfrastructureSystems.InfrastructureSystemsInternal\n) -> Union{Nothing, Dict{String, Any}}\n\n\nReturn a user-modifiable dictionary to store extra information.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_features-Tuple{InfrastructureSystems.DeterministicMetadata}","page":"API","title":"InfrastructureSystems.get_features","text":"get_features(\n value::InfrastructureSystems.DeterministicMetadata\n) -> Dict{String, Union{Bool, Int64, String}}\n\n\nGet DeterministicMetadata features.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_features-Tuple{InfrastructureSystems.ProbabilisticMetadata}","page":"API","title":"InfrastructureSystems.get_features","text":"get_features(\n value::InfrastructureSystems.ProbabilisticMetadata\n) -> Dict{String, Union{Bool, Int64, String}}\n\n\nGet ProbabilisticMetadata features.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_features-Tuple{InfrastructureSystems.ScenariosMetadata}","page":"API","title":"InfrastructureSystems.get_features","text":"get_features(\n value::InfrastructureSystems.ScenariosMetadata\n) -> Dict{String, Union{Bool, Int64, String}}\n\n\nGet ScenariosMetadata features.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_features-Tuple{InfrastructureSystems.SingleTimeSeriesMetadata}","page":"API","title":"InfrastructureSystems.get_features","text":"get_features(\n value::InfrastructureSystems.SingleTimeSeriesMetadata\n) -> Dict{String, Union{Bool, Int64, String}}\n\n\nGet SingleTimeSeriesMetadata features.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_fuel_cost-Tuple{InfrastructureSystems.FuelCurve}","page":"API","title":"InfrastructureSystems.get_fuel_cost","text":"get_fuel_cost(\n cost::InfrastructureSystems.FuelCurve\n) -> Union{Float64, InfrastructureSystems.TimeSeriesKey}\n\n\nGet the fuel cost or the name of the fuel cost time series\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_function_data-Tuple{InfrastructureSystems.ProductionVariableCostCurve}","page":"API","title":"InfrastructureSystems.get_function_data","text":"get_function_data(\n cost::InfrastructureSystems.ProductionVariableCostCurve\n) -> Any\n\n\nGet the FunctionData representation of this ProductionVariableCostCurve's ValueCurve\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_function_data-Tuple{InfrastructureSystems.ValueCurve}","page":"API","title":"InfrastructureSystems.get_function_data","text":"get_function_data(\n curve::InfrastructureSystems.ValueCurve\n) -> Any\n\n\nGet the underlying FunctionData representation of this ValueCurve\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_group_level-Tuple{InfrastructureSystems.MultiLogger, Symbol}","page":"API","title":"InfrastructureSystems.get_group_level","text":"get_group_level(\n logger::InfrastructureSystems.MultiLogger,\n group::Symbol\n) -> Union{Nothing, Base.CoreLogging.LogLevel}\n\n\nReturn the minimum logging level for a group or nothing if group is not stored.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_group_levels-Tuple{InfrastructureSystems.MultiLogger}","page":"API","title":"InfrastructureSystems.get_group_levels","text":"get_group_levels(\n logger::InfrastructureSystems.MultiLogger\n) -> Dict{Symbol, Base.CoreLogging.LogLevel}\n\n\nReturn the minimum logging levels for groups that have been stored.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_horizon-Tuple{InfrastructureSystems.DeterministicMetadata}","page":"API","title":"InfrastructureSystems.get_horizon","text":"get_horizon(\n value::InfrastructureSystems.DeterministicMetadata\n) -> Dates.Period\n\n\nGet DeterministicMetadata horizon.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_horizon-Tuple{InfrastructureSystems.DeterministicSingleTimeSeries}","page":"API","title":"InfrastructureSystems.get_horizon","text":"get_horizon(\n value::InfrastructureSystems.DeterministicSingleTimeSeries\n) -> Dates.Period\n\n\nGet DeterministicSingleTimeSeries horizon.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_horizon-Tuple{InfrastructureSystems.ProbabilisticMetadata}","page":"API","title":"InfrastructureSystems.get_horizon","text":"get_horizon(\n value::InfrastructureSystems.ProbabilisticMetadata\n) -> Dates.Period\n\n\nGet ProbabilisticMetadata horizon.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_horizon-Tuple{InfrastructureSystems.ScenariosMetadata}","page":"API","title":"InfrastructureSystems.get_horizon","text":"get_horizon(\n value::InfrastructureSystems.ScenariosMetadata\n) -> Dates.Period\n\n\nGet ScenariosMetadata horizon.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_initial_input-Tuple{InfrastructureSystems.ProductionVariableCostCurve}","page":"API","title":"InfrastructureSystems.get_initial_input","text":"get_initial_input(\n cost::InfrastructureSystems.ProductionVariableCostCurve\n) -> Union{Nothing, Float64}\n\n\nGet the initial_input field of this ProductionVariableCostCurve's ValueCurve (not defined for input-output data)\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_initial_input-Tuple{Union{InfrastructureSystems.AverageRateCurve, InfrastructureSystems.IncrementalCurve}}","page":"API","title":"InfrastructureSystems.get_initial_input","text":"get_initial_input(\n curve::Union{InfrastructureSystems.AverageRateCurve, InfrastructureSystems.IncrementalCurve}\n) -> Union{Nothing, Float64}\n\n\nGet the initial_input field of this ValueCurve (not defined for InputOutputCurve)\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_initial_times-Tuple{InfrastructureSystems.Forecast}","page":"API","title":"InfrastructureSystems.get_initial_times","text":"get_initial_times(\n f::InfrastructureSystems.Forecast\n) -> DataStructures.SDMKeyIteration{T} where T<:DataStructures.SortedDict\n\n\nReturn the initial times in the forecast.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_initial_timestamp-Tuple{InfrastructureSystems.DeterministicMetadata}","page":"API","title":"InfrastructureSystems.get_initial_timestamp","text":"get_initial_timestamp(\n value::InfrastructureSystems.DeterministicMetadata\n) -> Dates.DateTime\n\n\nGet DeterministicMetadata initial_timestamp.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_initial_timestamp-Tuple{InfrastructureSystems.DeterministicSingleTimeSeries}","page":"API","title":"InfrastructureSystems.get_initial_timestamp","text":"get_initial_timestamp(\n value::InfrastructureSystems.DeterministicSingleTimeSeries\n) -> Dates.DateTime\n\n\nGet DeterministicSingleTimeSeries initial_timestamp.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_initial_timestamp-Tuple{InfrastructureSystems.ProbabilisticMetadata}","page":"API","title":"InfrastructureSystems.get_initial_timestamp","text":"get_initial_timestamp(\n value::InfrastructureSystems.ProbabilisticMetadata\n) -> Dates.DateTime\n\n\nGet ProbabilisticMetadata initial_timestamp.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_initial_timestamp-Tuple{InfrastructureSystems.ScenariosMetadata}","page":"API","title":"InfrastructureSystems.get_initial_timestamp","text":"get_initial_timestamp(\n value::InfrastructureSystems.ScenariosMetadata\n) -> Dates.DateTime\n\n\nGet ScenariosMetadata initial_timestamp.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_initial_timestamp-Tuple{InfrastructureSystems.SingleTimeSeriesMetadata}","page":"API","title":"InfrastructureSystems.get_initial_timestamp","text":"get_initial_timestamp(\n value::InfrastructureSystems.SingleTimeSeriesMetadata\n) -> Dates.DateTime\n\n\nGet SingleTimeSeriesMetadata initial_timestamp.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_input_at_zero-Tuple{InfrastructureSystems.ValueCurve}","page":"API","title":"InfrastructureSystems.get_input_at_zero","text":"get_input_at_zero(\n curve::InfrastructureSystems.ValueCurve\n) -> Any\n\n\nGet the input_at_zero field of this ValueCurve\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_internal-Tuple{InfrastructureSystems.DeterministicMetadata}","page":"API","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::InfrastructureSystems.DeterministicMetadata\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet DeterministicMetadata internal.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_internal-Tuple{InfrastructureSystems.Deterministic}","page":"API","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::InfrastructureSystems.Deterministic\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet Deterministic internal.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_internal-Tuple{InfrastructureSystems.ProbabilisticMetadata}","page":"API","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::InfrastructureSystems.ProbabilisticMetadata\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet ProbabilisticMetadata internal.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_internal-Tuple{InfrastructureSystems.Probabilistic}","page":"API","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::InfrastructureSystems.Probabilistic\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet Probabilistic internal.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_internal-Tuple{InfrastructureSystems.ScenariosMetadata}","page":"API","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::InfrastructureSystems.ScenariosMetadata\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet ScenariosMetadata internal.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_internal-Tuple{InfrastructureSystems.Scenarios}","page":"API","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::InfrastructureSystems.Scenarios\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet Scenarios internal.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_internal-Tuple{InfrastructureSystems.SingleTimeSeriesMetadata}","page":"API","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::InfrastructureSystems.SingleTimeSeriesMetadata\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet SingleTimeSeriesMetadata internal.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_internal-Tuple{InfrastructureSystems.SingleTimeSeries}","page":"API","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::InfrastructureSystems.SingleTimeSeries\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet SingleTimeSeries internal.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_interval-Tuple{InfrastructureSystems.DeterministicMetadata}","page":"API","title":"InfrastructureSystems.get_interval","text":"get_interval(\n value::InfrastructureSystems.DeterministicMetadata\n) -> Dates.Period\n\n\nGet DeterministicMetadata interval.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_interval-Tuple{InfrastructureSystems.DeterministicSingleTimeSeries}","page":"API","title":"InfrastructureSystems.get_interval","text":"get_interval(\n value::InfrastructureSystems.DeterministicSingleTimeSeries\n) -> Dates.Period\n\n\nGet DeterministicSingleTimeSeries interval.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_interval-Tuple{InfrastructureSystems.ProbabilisticMetadata}","page":"API","title":"InfrastructureSystems.get_interval","text":"get_interval(\n value::InfrastructureSystems.ProbabilisticMetadata\n) -> Dates.Period\n\n\nGet ProbabilisticMetadata interval.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_interval-Tuple{InfrastructureSystems.ScenariosMetadata}","page":"API","title":"InfrastructureSystems.get_interval","text":"get_interval(\n value::InfrastructureSystems.ScenariosMetadata\n) -> Dates.Period\n\n\nGet ScenariosMetadata interval.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_length-Tuple{InfrastructureSystems.SingleTimeSeriesMetadata}","page":"API","title":"InfrastructureSystems.get_length","text":"get_length(\n value::InfrastructureSystems.SingleTimeSeriesMetadata\n) -> Int64\n\n\nGet SingleTimeSeriesMetadata length.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_log_events-Tuple{InfrastructureSystems.LogEventTracker, Base.CoreLogging.LogLevel}","page":"API","title":"InfrastructureSystems.get_log_events","text":"get_log_events(\n tracker::InfrastructureSystems.LogEventTracker,\n level::Base.CoreLogging.LogLevel\n) -> Union{Base.ValueIterator{Dict{Symbol, InfrastructureSystems.LogEvent}}, Vector{Any}}\n\n\nReturns an iterable of log events for a level.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_metadata-Tuple{InfrastructureSystems.TimeSeriesMetadataStore, Union{InfrastructureSystems.InfrastructureSystemsComponent, InfrastructureSystems.SupplementalAttribute}, Type{<:InfrastructureSystems.TimeSeriesData}, String}","page":"API","title":"InfrastructureSystems.get_metadata","text":"get_metadata(\n store::InfrastructureSystems.TimeSeriesMetadataStore,\n owner::Union{InfrastructureSystems.InfrastructureSystemsComponent, InfrastructureSystems.SupplementalAttribute},\n time_series_type::Type{<:InfrastructureSystems.TimeSeriesData},\n name::String;\n features...\n) -> Any\n\n\nReturn the metadata matching the inputs. Throw an exception if there is more than one matching input.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_name-Tuple{InfrastructureSystems.DeterministicMetadata}","page":"API","title":"InfrastructureSystems.get_name","text":"get_name(\n value::InfrastructureSystems.DeterministicMetadata\n) -> String\n\n\nGet DeterministicMetadata name.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_name-Tuple{InfrastructureSystems.Deterministic}","page":"API","title":"InfrastructureSystems.get_name","text":"get_name(\n value::InfrastructureSystems.Deterministic\n) -> String\n\n\nGet Deterministic name.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_name-Tuple{InfrastructureSystems.ProbabilisticMetadata}","page":"API","title":"InfrastructureSystems.get_name","text":"get_name(\n value::InfrastructureSystems.ProbabilisticMetadata\n) -> String\n\n\nGet ProbabilisticMetadata name.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_name-Tuple{InfrastructureSystems.Probabilistic}","page":"API","title":"InfrastructureSystems.get_name","text":"get_name(\n value::InfrastructureSystems.Probabilistic\n) -> String\n\n\nGet Probabilistic name.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_name-Tuple{InfrastructureSystems.ScenariosMetadata}","page":"API","title":"InfrastructureSystems.get_name","text":"get_name(\n value::InfrastructureSystems.ScenariosMetadata\n) -> String\n\n\nGet ScenariosMetadata name.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_name-Tuple{InfrastructureSystems.Scenarios}","page":"API","title":"InfrastructureSystems.get_name","text":"get_name(value::InfrastructureSystems.Scenarios) -> String\n\n\nGet Scenarios name.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_name-Tuple{InfrastructureSystems.SingleTimeSeriesMetadata}","page":"API","title":"InfrastructureSystems.get_name","text":"get_name(\n value::InfrastructureSystems.SingleTimeSeriesMetadata\n) -> String\n\n\nGet SingleTimeSeriesMetadata name.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_name-Tuple{InfrastructureSystems.SingleTimeSeries}","page":"API","title":"InfrastructureSystems.get_name","text":"get_name(\n value::InfrastructureSystems.SingleTimeSeries\n) -> String\n\n\nGet SingleTimeSeries name.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_next_time-Tuple{InfrastructureSystems.TimeSeriesCache}","page":"API","title":"InfrastructureSystems.get_next_time","text":"get_next_time(\n cache::InfrastructureSystems.TimeSeriesCache\n) -> Any\n\n\nReturn the timestamp for the next read with get_next_time_series_array!.\n\nReturn nothing if all data has been read.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_next_time_series_array!-Tuple{InfrastructureSystems.TimeSeriesCache}","page":"API","title":"InfrastructureSystems.get_next_time_series_array!","text":"get_next_time_series_array!(\n cache::InfrastructureSystems.TimeSeriesCache\n) -> Any\n\n\nReturn the next TimeSeries.TimeArray.\n\nReturns nothing when all data has been read. Call reset! to restart. Call get_next_time to check the start time.\n\nReads from storage if the data is not already in cache.\n\nArguments\n\ncache::StaticTimeSeriesCache: cached instance\n\nExamples\n\ncache = ForecastCache(Deterministic, component, \"max_active_power\")\nwindow1 = get_next_time_series_array!(cache)\nwindow2 = get_next_time_series_array!(cache)\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_num_attributes-Tuple{InfrastructureSystems.SupplementalAttributeAssociations}","page":"API","title":"InfrastructureSystems.get_num_attributes","text":"get_num_attributes(\n associations::InfrastructureSystems.SupplementalAttributeAssociations\n) -> Any\n\n\nReturn the number of supplemental attributes.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_num_components_with_attributes-Tuple{InfrastructureSystems.SupplementalAttributeAssociations}","page":"API","title":"InfrastructureSystems.get_num_components_with_attributes","text":"get_num_components_with_attributes(\n associations::InfrastructureSystems.SupplementalAttributeAssociations\n) -> Any\n\n\nReturn the number of components with supplemental attributes.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_num_steps-Union{Tuple{T}, Tuple{Type{T}, CSV.File, AbstractArray}} where T<:InfrastructureSystems.TimeSeriesFileFormat","page":"API","title":"InfrastructureSystems.get_num_steps","text":"get_num_steps(\n _::Type{T<:InfrastructureSystems.TimeSeriesFileFormat},\n file::CSV.File,\n period::AbstractArray\n) -> Any\n\n\nReturn the number of steps specified by the period in the file.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_num_steps-Union{Tuple{T}, Tuple{Type{T}, CSV.File, AbstractArray}} where T<:InfrastructureSystems.TimeSeriesFormatPeriodAsHeader","page":"API","title":"InfrastructureSystems.get_num_steps","text":"get_num_steps(\n _::Type{T<:InfrastructureSystems.TimeSeriesFormatPeriodAsHeader},\n file::CSV.File,\n period::AbstractArray\n) -> Any\n\n\nReturn the number of steps specified by the period in the file.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_num_steps-Union{Tuple{T}, Tuple{Type{T}, CSV.File, AbstractArray}} where T<:Union{InfrastructureSystems.TimeSeriesFormatDateTimeAsColumn, InfrastructureSystems.TimeSeriesFormatPeriodAsColumn}","page":"API","title":"InfrastructureSystems.get_num_steps","text":"get_num_steps(\n _::Type{T<:Union{InfrastructureSystems.TimeSeriesFormatDateTimeAsColumn, InfrastructureSystems.TimeSeriesFormatPeriodAsColumn}},\n file::CSV.File,\n period::AbstractArray\n) -> Any\n\n\nReturn the number of steps specified by the period in the file.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_num_subsystems-Tuple{InfrastructureSystems.SystemData}","page":"API","title":"InfrastructureSystems.get_num_subsystems","text":"get_num_subsystems(\n data::InfrastructureSystems.SystemData\n) -> Int64\n\n\nReturn the number of subsystems in the system.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_num_time_series-Tuple{InfrastructureSystems.TimeSeriesMetadataStore}","page":"API","title":"InfrastructureSystems.get_num_time_series","text":"get_num_time_series(\n store::InfrastructureSystems.TimeSeriesMetadataStore\n) -> Any\n\n\nReturn the number of unique time series arrays.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_percentiles-Tuple{InfrastructureSystems.ProbabilisticMetadata}","page":"API","title":"InfrastructureSystems.get_percentiles","text":"get_percentiles(\n value::InfrastructureSystems.ProbabilisticMetadata\n) -> Vector{Float64}\n\n\nGet ProbabilisticMetadata percentiles.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_percentiles-Tuple{InfrastructureSystems.Probabilistic}","page":"API","title":"InfrastructureSystems.get_percentiles","text":"get_percentiles(\n value::InfrastructureSystems.Probabilistic\n) -> Vector{Float64}\n\n\nGet Probabilistic percentiles.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_period_columns-Tuple{Type{InfrastructureSystems.TimeSeriesFormatPeriodAsColumn}, CSV.File}","page":"API","title":"InfrastructureSystems.get_period_columns","text":"get_period_columns(\n _::Type{InfrastructureSystems.TimeSeriesFormatPeriodAsColumn},\n file::CSV.File\n) -> Vector{Symbol}\n\n\nReturn the column names that specify the Period.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_points-Tuple{InfrastructureSystems.PiecewiseLinearData}","page":"API","title":"InfrastructureSystems.get_points","text":"get_points(\n data::InfrastructureSystems.PiecewiseLinearData\n) -> Vector{@NamedTuple{x::Float64, y::Float64}}\n\n\nGet the points that define the piecewise data\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_points-Tuple{PiecewisePointCurve}","page":"API","title":"InfrastructureSystems.get_points","text":"get_points(\n vc::PiecewisePointCurve\n) -> Vector{@NamedTuple{x::Float64, y::Float64}}\n\n\nGet the points that define the PiecewisePointCurve\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_power_units-Tuple{InfrastructureSystems.ProductionVariableCostCurve}","page":"API","title":"InfrastructureSystems.get_power_units","text":"get_power_units(\n cost::InfrastructureSystems.ProductionVariableCostCurve\n) -> Any\n\n\nGet the units for the x-axis of the curve\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_proportional_term-Tuple{LinearCurve}","page":"API","title":"InfrastructureSystems.get_proportional_term","text":"get_proportional_term(vc::LinearCurve) -> Float64\n\n\nGet the proportional term (i.e., slope) of the LinearCurve\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_proportional_term-Tuple{QuadraticCurve}","page":"API","title":"InfrastructureSystems.get_proportional_term","text":"get_proportional_term(vc::QuadraticCurve) -> Float64\n\n\nGet the proportional (i.e., linear) term of the QuadraticCurve\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_quadratic_term-Tuple{QuadraticCurve}","page":"API","title":"InfrastructureSystems.get_quadratic_term","text":"get_quadratic_term(vc::QuadraticCurve) -> Float64\n\n\nGet the quadratic term of the QuadraticCurve\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_raw_data_type","page":"API","title":"InfrastructureSystems.get_raw_data_type","text":"Get from a subtype or instance of FunctionData the type of data its getrawdata method returns\n\n\n\n\n\n","category":"function"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_resolution-Tuple{InfrastructureSystems.DeterministicMetadata}","page":"API","title":"InfrastructureSystems.get_resolution","text":"get_resolution(\n value::InfrastructureSystems.DeterministicMetadata\n) -> Dates.Period\n\n\nGet DeterministicMetadata resolution.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_resolution-Tuple{InfrastructureSystems.Deterministic}","page":"API","title":"InfrastructureSystems.get_resolution","text":"get_resolution(\n value::InfrastructureSystems.Deterministic\n) -> Dates.Period\n\n\nGet Deterministic resolution.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_resolution-Tuple{InfrastructureSystems.ProbabilisticMetadata}","page":"API","title":"InfrastructureSystems.get_resolution","text":"get_resolution(\n value::InfrastructureSystems.ProbabilisticMetadata\n) -> Dates.Period\n\n\nGet ProbabilisticMetadata resolution.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_resolution-Tuple{InfrastructureSystems.Probabilistic}","page":"API","title":"InfrastructureSystems.get_resolution","text":"get_resolution(\n value::InfrastructureSystems.Probabilistic\n) -> Dates.Period\n\n\nGet Probabilistic resolution.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_resolution-Tuple{InfrastructureSystems.ScenariosMetadata}","page":"API","title":"InfrastructureSystems.get_resolution","text":"get_resolution(\n value::InfrastructureSystems.ScenariosMetadata\n) -> Dates.Period\n\n\nGet ScenariosMetadata resolution.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_resolution-Tuple{InfrastructureSystems.Scenarios}","page":"API","title":"InfrastructureSystems.get_resolution","text":"get_resolution(\n value::InfrastructureSystems.Scenarios\n) -> Dates.Period\n\n\nGet Scenarios resolution.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_resolution-Tuple{InfrastructureSystems.SingleTimeSeriesMetadata}","page":"API","title":"InfrastructureSystems.get_resolution","text":"get_resolution(\n value::InfrastructureSystems.SingleTimeSeriesMetadata\n) -> Dates.Period\n\n\nGet SingleTimeSeriesMetadata resolution.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_resolution-Tuple{InfrastructureSystems.SingleTimeSeries}","page":"API","title":"InfrastructureSystems.get_resolution","text":"get_resolution(\n value::InfrastructureSystems.SingleTimeSeries\n) -> Dates.Period\n\n\nGet SingleTimeSeries resolution.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_resolution-Tuple{TimeSeries.TimeArray}","page":"API","title":"InfrastructureSystems.get_resolution","text":"get_resolution(ts::TimeSeries.TimeArray) -> Any\n\n\nReturn the resolution from a TimeArray.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_scaling_factor_multiplier-Tuple{InfrastructureSystems.DeterministicMetadata}","page":"API","title":"InfrastructureSystems.get_scaling_factor_multiplier","text":"get_scaling_factor_multiplier(\n value::InfrastructureSystems.DeterministicMetadata\n) -> Union{Nothing, Function}\n\n\nGet DeterministicMetadata scaling_factor_multiplier.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_scaling_factor_multiplier-Tuple{InfrastructureSystems.Deterministic}","page":"API","title":"InfrastructureSystems.get_scaling_factor_multiplier","text":"get_scaling_factor_multiplier(\n value::InfrastructureSystems.Deterministic\n) -> Union{Nothing, Function}\n\n\nGet Deterministic scaling_factor_multiplier.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_scaling_factor_multiplier-Tuple{InfrastructureSystems.ProbabilisticMetadata}","page":"API","title":"InfrastructureSystems.get_scaling_factor_multiplier","text":"get_scaling_factor_multiplier(\n value::InfrastructureSystems.ProbabilisticMetadata\n) -> Union{Nothing, Function}\n\n\nGet ProbabilisticMetadata scaling_factor_multiplier.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_scaling_factor_multiplier-Tuple{InfrastructureSystems.Probabilistic}","page":"API","title":"InfrastructureSystems.get_scaling_factor_multiplier","text":"get_scaling_factor_multiplier(\n value::InfrastructureSystems.Probabilistic\n) -> Union{Nothing, Function}\n\n\nGet Probabilistic scaling_factor_multiplier.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_scaling_factor_multiplier-Tuple{InfrastructureSystems.ScenariosMetadata}","page":"API","title":"InfrastructureSystems.get_scaling_factor_multiplier","text":"get_scaling_factor_multiplier(\n value::InfrastructureSystems.ScenariosMetadata\n) -> Union{Nothing, Function}\n\n\nGet ScenariosMetadata scaling_factor_multiplier.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_scaling_factor_multiplier-Tuple{InfrastructureSystems.Scenarios}","page":"API","title":"InfrastructureSystems.get_scaling_factor_multiplier","text":"get_scaling_factor_multiplier(\n value::InfrastructureSystems.Scenarios\n) -> Union{Nothing, Function}\n\n\nGet Scenarios scaling_factor_multiplier.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_scaling_factor_multiplier-Tuple{InfrastructureSystems.SingleTimeSeriesMetadata}","page":"API","title":"InfrastructureSystems.get_scaling_factor_multiplier","text":"get_scaling_factor_multiplier(\n value::InfrastructureSystems.SingleTimeSeriesMetadata\n) -> Union{Nothing, Function}\n\n\nGet SingleTimeSeriesMetadata scaling_factor_multiplier.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_scaling_factor_multiplier-Tuple{InfrastructureSystems.SingleTimeSeries}","page":"API","title":"InfrastructureSystems.get_scaling_factor_multiplier","text":"get_scaling_factor_multiplier(\n value::InfrastructureSystems.SingleTimeSeries\n) -> Union{Nothing, Function}\n\n\nGet SingleTimeSeries scaling_factor_multiplier.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_scenario_count-Tuple{InfrastructureSystems.ScenariosMetadata}","page":"API","title":"InfrastructureSystems.get_scenario_count","text":"get_scenario_count(\n value::InfrastructureSystems.ScenariosMetadata\n) -> Int64\n\n\nGet ScenariosMetadata scenario_count.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_scenario_count-Tuple{InfrastructureSystems.Scenarios}","page":"API","title":"InfrastructureSystems.get_scenario_count","text":"get_scenario_count(\n value::InfrastructureSystems.Scenarios\n) -> Int64\n\n\nGet Scenarios scenario_count.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_serialization_metadata-Tuple{Dict}","page":"API","title":"InfrastructureSystems.get_serialization_metadata","text":"get_serialization_metadata(data::Dict) -> Any\n\n\nReturn the type information for the serialized struct.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_single_time_series-Tuple{InfrastructureSystems.DeterministicSingleTimeSeries}","page":"API","title":"InfrastructureSystems.get_single_time_series","text":"get_single_time_series(\n value::InfrastructureSystems.DeterministicSingleTimeSeries\n) -> InfrastructureSystems.SingleTimeSeries\n\n\nGet DeterministicSingleTimeSeries single_time_series.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_slopes-Tuple{InfrastructureSystems.PiecewiseLinearData}","page":"API","title":"InfrastructureSystems.get_slopes","text":"get_slopes(\n pwl::InfrastructureSystems.PiecewiseLinearData\n) -> Vector{Float64}\n\n\nCalculates the slopes of the line segments defined by the PiecewiseLinearData, returning one fewer slope than the number of underlying points.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_slopes-Tuple{PiecewiseIncrementalCurve}","page":"API","title":"InfrastructureSystems.get_slopes","text":"get_slopes(vc::PiecewiseIncrementalCurve) -> Vector{Float64}\n\n\nFetch the slopes that define the PiecewiseIncrementalCurve\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_slopes-Tuple{PiecewisePointCurve}","page":"API","title":"InfrastructureSystems.get_slopes","text":"get_slopes(vc::PiecewisePointCurve) -> Vector{Float64}\n\n\nCalculate the slopes of the line segments defined by the PiecewisePointCurve\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_subsystem_components-Tuple{InfrastructureSystems.SystemData, AbstractString}","page":"API","title":"InfrastructureSystems.get_subsystem_components","text":"get_subsystem_components(\n data::InfrastructureSystems.SystemData,\n subsystem_name::AbstractString\n) -> Base.Generator{Set{Base.UUID}, InfrastructureSystems.var\"#419#420\"{InfrastructureSystems.SystemData}}\n\n\nReturn a Generator of all components in the subsystem.\n\nThrows ArgumentError if the subsystem name is not stored.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_subsystems-Tuple{InfrastructureSystems.SystemData}","page":"API","title":"InfrastructureSystems.get_subsystems","text":"get_subsystems(\n data::InfrastructureSystems.SystemData\n) -> Base.KeySet{String, Dict{String, Set{Base.UUID}}}\n\n\nReturn an iterator of all subsystem names in the system.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_supplemental_attributes-Union{Tuple{T}, Tuple{Function, Type{T}, InfrastructureSystems.SupplementalAttributeManager}} where T<:InfrastructureSystems.SupplementalAttribute","page":"API","title":"InfrastructureSystems.get_supplemental_attributes","text":"get_supplemental_attributes(\n filter_func::Function,\n _::Type{T<:InfrastructureSystems.SupplementalAttribute},\n mgr::InfrastructureSystems.SupplementalAttributeManager\n) -> InfrastructureSystems.FlattenIteratorWrapper{T, I} where {T<:InfrastructureSystems.SupplementalAttribute, I<:(Vector)}\n\n\nReturns an iterator of supplemental_attributes. T can be concrete or abstract. Call collect on the result if an array is desired.\n\nArguments\n\nT: supplemental_attribute type\nmgr::SupplementalAttributeManager: SupplementalAttributeManager in the system\nfilter_func::Union{Nothing, Function} = nothing: Optional function that accepts a component of type T and returns a Bool. Apply this function to each component and only return components where the result is true.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_supplemental_attributes-Union{Tuple{T}, Tuple{Type{T}, InfrastructureSystems.InfrastructureSystemsComponent}} where T<:InfrastructureSystems.SupplementalAttribute","page":"API","title":"InfrastructureSystems.get_supplemental_attributes","text":"get_supplemental_attributes(\n _::Type{T<:InfrastructureSystems.SupplementalAttribute},\n component::InfrastructureSystems.InfrastructureSystemsComponent\n) -> Any\n\n\nReturn a Vector of supplemental_attributes. T can be concrete or abstract.\n\nArguments\n\nT: supplemental_attribute type\nsupplemental_attributes::SupplementalAttributes: SupplementalAttributes in the system\nfilter_func::Union{Nothing, Function} = nothing: Optional function that accepts a component of type T and returns a Bool. Apply this function to each component and only return components where the result is true.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_time_series","page":"API","title":"InfrastructureSystems.get_time_series","text":"get_time_series(\n owner::Union{InfrastructureSystems.InfrastructureSystemsComponent, InfrastructureSystems.SupplementalAttribute},\n key::InfrastructureSystems.TimeSeriesKey\n) -> Any\nget_time_series(\n owner::Union{InfrastructureSystems.InfrastructureSystemsComponent, InfrastructureSystems.SupplementalAttribute},\n key::InfrastructureSystems.TimeSeriesKey,\n start_time::Union{Nothing, Dates.DateTime}\n) -> Any\nget_time_series(\n owner::Union{InfrastructureSystems.InfrastructureSystemsComponent, InfrastructureSystems.SupplementalAttribute},\n key::InfrastructureSystems.TimeSeriesKey,\n start_time::Union{Nothing, Dates.DateTime},\n len::Union{Nothing, Int64}\n) -> Any\nget_time_series(\n owner::Union{InfrastructureSystems.InfrastructureSystemsComponent, InfrastructureSystems.SupplementalAttribute},\n key::InfrastructureSystems.TimeSeriesKey,\n start_time::Union{Nothing, Dates.DateTime},\n len::Union{Nothing, Int64},\n count::Union{Nothing, Int64}\n) -> Any\n\n\nReturn the exact stored data in a time series, using a time series key look up\n\nThis will load all forecast windows into memory by default. Be aware of how much data is stored.\n\nSpecify start_time and len if you only need a subset of data.\n\nDoes not apply a scaling factor multiplier.\n\nArguments\n\nowner::TimeSeriesOwners: Component or attribute containing the time series\nkey::TimeSeriesKey: the time series' key\nstart_time::Union{Nothing, Dates.DateTime} = nothing: If nothing, use the initial_timestamp of the time series. If the time series is a subtype of Forecast then start_time must be the first timestamp of a window.\nlen::Union{Nothing, Int} = nothing: Length in the time dimension. If nothing, use the entire length.\ncount::Union{Nothing, Int} = nothing: Only applicable to subtypes of Forecast. Number of forecast windows starting at start_time to return. Defaults to all available.\nfeatures...: User-defined tags that differentiate multiple time series arrays for the same component attribute, such as different arrays for different scenarios or years\n\nSee also: get_time_series by name\n\n\n\n\n\n","category":"function"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_time_series-Union{Tuple{T}, Tuple{Type{T}, Union{InfrastructureSystems.InfrastructureSystemsComponent, InfrastructureSystems.SupplementalAttribute}, AbstractString}} where T<:InfrastructureSystems.TimeSeriesData","page":"API","title":"InfrastructureSystems.get_time_series","text":"get_time_series(\n ::Type{T<:InfrastructureSystems.TimeSeriesData},\n owner::Union{InfrastructureSystems.InfrastructureSystemsComponent, InfrastructureSystems.SupplementalAttribute},\n name::AbstractString;\n start_time,\n len,\n count,\n features...\n) -> Any\n\n\nReturn the exact stored data in a time series\n\nThis will load all forecast windows into memory by default. Be aware of how much data is stored.\n\nSpecify start_time and len if you only need a subset of data.\n\nDoes not apply a scaling factor multiplier.\n\nArguments\n\n::Type{T}: Concrete subtype of TimeSeriesData to return\nowner::TimeSeriesOwners: Component or attribute containing the time series\nname::AbstractString: name of time series\nstart_time::Union{Nothing, Dates.DateTime} = nothing: If nothing, use the initial_timestamp of the time series. If T is a subtype of Forecast then start_time must be the first timestamp of a window.\nlen::Union{Nothing, Int} = nothing: Length in the time dimension. If nothing, use the entire length.\ncount::Union{Nothing, Int} = nothing: Only applicable to subtypes of Forecast. Number of forecast windows starting at start_time to return. Defaults to all available.\nfeatures...: User-defined tags that differentiate multiple time series arrays for the same component attribute, such as different arrays for different scenarios or years\n\nSee also: get_time_series_array, get_time_series_values, get_time_series by key\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_time_series_array","page":"API","title":"InfrastructureSystems.get_time_series_array","text":"get_time_series_array(\n owner::Union{InfrastructureSystems.InfrastructureSystemsComponent, InfrastructureSystems.SupplementalAttribute},\n time_series::InfrastructureSystems.StaticTimeSeries;\n ...\n) -> Any\nget_time_series_array(\n owner::Union{InfrastructureSystems.InfrastructureSystemsComponent, InfrastructureSystems.SupplementalAttribute},\n time_series::InfrastructureSystems.StaticTimeSeries,\n start_time::Union{Nothing, Dates.DateTime};\n len,\n ignore_scaling_factors\n) -> Any\n\n\nReturn a TimeSeries.TimeArray from a cached StaticTimeSeries instance.\n\nIf the time series data are scaling factors, the returned data will be scaled by the scaling factor multiplier by default.\n\nArguments\n\nowner::TimeSeriesOwners: Component or attribute containing the time series\ntime_series::StaticTimeSeries: subtype of StaticTimeSeries (e.g., SingleTimeSeries)\nstart_time::Union{Nothing, Dates.DateTime} = nothing: the first timestamp to retrieve. If nothing, use the initial_timestamp of the time series.\nlen::Union{Nothing, Int} = nothing: Length of time-series to retrieve (i.e. number of timestamps). If nothing, use the entire length\nignore_scaling_factors = false: If true, the time-series data will be multiplied by the result of calling the stored scaling_factor_multiplier function on the owner\n\nSee also: get_time_series_values, get_time_series_timestamps, StaticTimeSeriesCache, get_time_series_array by name from storage, get_time_series_array from a ForecastCache\n\n\n\n\n\n","category":"function"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_time_series_array!-Tuple{InfrastructureSystems.TimeSeriesCache, Dates.DateTime}","page":"API","title":"InfrastructureSystems.get_time_series_array!","text":"get_time_series_array!(\n cache::InfrastructureSystems.TimeSeriesCache,\n timestamp::Dates.DateTime\n) -> Any\n\n\nReturn the TimeSeries.TimeArray starting at timestamp. Reads from storage if the data is not already in cache.\n\nTimestamps must be read sequentially. Repeated reads are allowed. Random access may be added in the future.\n\nArguments\n\ncache::StaticTimeSeriesCache: cached instance\ntimestamp::Dates.DateTime: starting timestamp for the time series array\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_time_series_array-Tuple{Union{InfrastructureSystems.InfrastructureSystemsComponent, InfrastructureSystems.SupplementalAttribute}, InfrastructureSystems.Forecast, Dates.DateTime}","page":"API","title":"InfrastructureSystems.get_time_series_array","text":"get_time_series_array(\n owner::Union{InfrastructureSystems.InfrastructureSystemsComponent, InfrastructureSystems.SupplementalAttribute},\n forecast::InfrastructureSystems.Forecast,\n start_time::Dates.DateTime;\n len,\n ignore_scaling_factors\n) -> Any\n\n\nReturn a TimeSeries.TimeArray for one forecast window from a cached Forecast instance\n\nIf the time series data are scaling factors, the returned data will be scaled by the scaling factor multiplier by default.\n\nArguments\n\nowner::TimeSeriesOwners: Component or attribute containing the time series\nforecast::Forecast: a concrete subtype of Forecast\nstart_time::Union{Nothing, Dates.DateTime} = nothing: the first timestamp of one of the forecast windows\nlen::Union{Nothing, Int} = nothing: Length of time-series to retrieve (i.e. number of timestamps). If nothing, use the entire length.\nignore_scaling_factors = false: If true, the time-series data will be multiplied by the result of calling the stored scaling_factor_multiplier function on the owner\n\nSee also get_time_series_values, get_time_series_timestamps, ForecastCache, get_time_series_array by name from storage, get_time_series_array from a StaticTimeSeriesCache\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_time_series_array-Union{Tuple{T}, Tuple{Type{T}, Union{InfrastructureSystems.InfrastructureSystemsComponent, InfrastructureSystems.SupplementalAttribute}, AbstractString}} where T<:InfrastructureSystems.TimeSeriesData","page":"API","title":"InfrastructureSystems.get_time_series_array","text":"get_time_series_array(\n ::Type{T<:InfrastructureSystems.TimeSeriesData},\n owner::Union{InfrastructureSystems.InfrastructureSystemsComponent, InfrastructureSystems.SupplementalAttribute},\n name::AbstractString;\n start_time,\n len,\n ignore_scaling_factors,\n features...\n) -> Any\n\n\nReturn a TimeSeries.TimeArray from storage for the given time series parameters.\n\nIf the time series data are scaling factors, the returned data will be scaled by the scaling factor multiplier by default.\n\nThis will load all forecast windows into memory by default. Be aware of how much data is stored.\n\nSpecify start_time and len if you only need a subset of data.\n\nArguments\n\n::Type{T}: the type of time series (a concrete subtype of TimeSeriesData)\nowner::TimeSeriesOwners: Component or attribute containing the time series\nname::AbstractString: name of time series\nstart_time::Union{Nothing, Dates.DateTime} = nothing: If nothing, use the initial_timestamp of the time series. If T is a subtype of Forecast then start_time must be the first timestamp of a window.\nlen::Union{Nothing, Int} = nothing: Length of time-series to retrieve (i.e. number of timestamps). If nothing, use the entire length.\nignore_scaling_factors = false: If true, the time-series data will be multiplied by the result of calling the stored scaling_factor_multiplier function on the owner\nfeatures...: User-defined tags that differentiate multiple time series arrays for the same component attribute, such as different arrays for different scenarios or years\n\nSee also: get_time_series_values, get_time_series_timestamps, get_time_series_array from a StaticTimeSeriesCache, get_time_series_array from a ForecastCache\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_time_series_counts-Tuple{InfrastructureSystems.TimeSeriesMetadataStore}","page":"API","title":"InfrastructureSystems.get_time_series_counts","text":"get_time_series_counts(\n store::InfrastructureSystems.TimeSeriesMetadataStore\n) -> InfrastructureSystems.TimeSeriesCounts\n\n\nReturn an instance of TimeSeriesCounts.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_time_series_counts_by_type-Tuple{InfrastructureSystems.TimeSeriesMetadataStore}","page":"API","title":"InfrastructureSystems.get_time_series_counts_by_type","text":"get_time_series_counts_by_type(\n store::InfrastructureSystems.TimeSeriesMetadataStore\n) -> Vector\n\n\nReturn a Vector of OrderedDict of stored time series counts by type.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_time_series_format-Tuple{CSV.File}","page":"API","title":"InfrastructureSystems.get_time_series_format","text":"get_time_series_format(file::CSV.File) -> Type\n\n\nReturn the time series format used in the CSV file.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_time_series_keys-Tuple{InfrastructureSystems.TimeSeriesMetadataStore, Union{InfrastructureSystems.InfrastructureSystemsComponent, InfrastructureSystems.SupplementalAttribute}}","page":"API","title":"InfrastructureSystems.get_time_series_keys","text":"get_time_series_keys(\n store::InfrastructureSystems.TimeSeriesMetadataStore,\n owner::Union{InfrastructureSystems.InfrastructureSystemsComponent, InfrastructureSystems.SupplementalAttribute}\n) -> Vector\n\n\nReturn information about each time series array attached to the owner. This information can be used to call gettimeseries.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_time_series_keys-Tuple{Union{InfrastructureSystems.InfrastructureSystemsComponent, InfrastructureSystems.SupplementalAttribute}}","page":"API","title":"InfrastructureSystems.get_time_series_keys","text":"get_time_series_keys(\n owner::Union{InfrastructureSystems.InfrastructureSystemsComponent, InfrastructureSystems.SupplementalAttribute}\n) -> Vector\n\n\nReturn information about each time series array attached to the owner. This information can be used to call get_time_series(::TimeSeriesOwners, ::TimeSeriesKey).\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_time_series_manager-Tuple{Union{InfrastructureSystems.InfrastructureSystemsComponent, InfrastructureSystems.SupplementalAttribute}}","page":"API","title":"InfrastructureSystems.get_time_series_manager","text":"get_time_series_manager(\n owner::Union{InfrastructureSystems.InfrastructureSystemsComponent, InfrastructureSystems.SupplementalAttribute}\n) -> Any\n\n\nReturn the TimeSeriesManager or nothing if the component/attribute does not support time series.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_time_series_multiple","page":"API","title":"InfrastructureSystems.get_time_series_multiple","text":"get_time_series_multiple(\n owner::Union{InfrastructureSystems.InfrastructureSystemsComponent, InfrastructureSystems.SupplementalAttribute};\n ...\n) -> Union{Tuple{}, Channel{Any}}\nget_time_series_multiple(\n owner::Union{InfrastructureSystems.InfrastructureSystemsComponent, InfrastructureSystems.SupplementalAttribute},\n filter_func;\n type,\n name\n) -> Union{Tuple{}, Channel{Any}}\n\n\nReturns an iterator of TimeSeriesData instances attached to the component or attribute.\n\nNote that passing a filter function can be much slower than the other filtering parameters because it reads time series data from media.\n\nCall collect on the result to get an array.\n\nArguments\n\nowner::TimeSeriesOwners: component or attribute from which to get time_series\nfilter_func = nothing: Only return time_series for which this returns true.\ntype = nothing: Only return time_series with this type.\nname = nothing: Only return time_series matching this value.\n\nSee also: get_time_series_multiple from a System\n\n\n\n\n\n","category":"function"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_time_series_multiple-2","page":"API","title":"InfrastructureSystems.get_time_series_multiple","text":"get_time_series_multiple(\n data::InfrastructureSystems.SystemData;\n ...\n) -> Channel{Any}\nget_time_series_multiple(\n data::InfrastructureSystems.SystemData,\n filter_func;\n type,\n name\n) -> Channel{Any}\n\n\nReturns an iterator of TimeSeriesData instances attached to the system.\n\nNote that passing a filter function can be much slower than the other filtering parameters because it reads time series data from media.\n\nCall collect on the result to get an array.\n\nArguments\n\ndata::SystemData: system\nfilter_func = nothing: Only return time_series for which this returns true.\ntype = nothing: Only return time_series with this type.\nname = nothing: Only return time_series matching this value.\n\nSee also: get_time_series_multiple from an individual component or attribute\n\n\n\n\n\n","category":"function"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_time_series_resolutions-Tuple{InfrastructureSystems.TimeSeriesMetadataStore}","page":"API","title":"InfrastructureSystems.get_time_series_resolutions","text":"get_time_series_resolutions(\n store::InfrastructureSystems.TimeSeriesMetadataStore;\n time_series_type\n) -> Any\n\n\nReturn a sorted Vector of distinct resolutions for all time series of the given type (or all types).\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_time_series_summary_table-Tuple{InfrastructureSystems.TimeSeriesMetadataStore}","page":"API","title":"InfrastructureSystems.get_time_series_summary_table","text":"get_time_series_summary_table(\n store::InfrastructureSystems.TimeSeriesMetadataStore\n) -> DataFrames.DataFrame\n\n\nReturn a DataFrame with the number of time series by type for components and supplemental attributes.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_time_series_timestamps","page":"API","title":"InfrastructureSystems.get_time_series_timestamps","text":"get_time_series_timestamps(\n owner::Union{InfrastructureSystems.InfrastructureSystemsComponent, InfrastructureSystems.SupplementalAttribute},\n forecast::InfrastructureSystems.Forecast;\n ...\n)\nget_time_series_timestamps(\n owner::Union{InfrastructureSystems.InfrastructureSystemsComponent, InfrastructureSystems.SupplementalAttribute},\n forecast::InfrastructureSystems.Forecast,\n start_time::Union{Nothing, Dates.DateTime};\n len\n) -> Vector{D} where D<:Dates.TimeType\n\n\nReturn a vector of timestamps from a cached Forecast instance.\n\nArguments\n\nowner::TimeSeriesOwners: Component or attribute containing the time series\nforecast::Forecast: a concrete subtype of Forecast\nstart_time::Union{Nothing, Dates.DateTime} = nothing: the first timestamp of one of the forecast windows\nlen::Union{Nothing, Int} = nothing: Length of time-series to retrieve (i.e. number of timestamps). If nothing, use the entire length.\n\nSee also: get_time_series_array, get_time_series_values, ForecastCache, get_time_series_timestamps by name from storage, get_time_series_timestamps from a StaticTimeSeriesCache\n\n\n\n\n\n","category":"function"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_time_series_timestamps-2","page":"API","title":"InfrastructureSystems.get_time_series_timestamps","text":"get_time_series_timestamps(\n owner::Union{InfrastructureSystems.InfrastructureSystemsComponent, InfrastructureSystems.SupplementalAttribute},\n time_series::InfrastructureSystems.StaticTimeSeries;\n ...\n) -> Vector{D} where D<:Dates.TimeType\nget_time_series_timestamps(\n owner::Union{InfrastructureSystems.InfrastructureSystemsComponent, InfrastructureSystems.SupplementalAttribute},\n time_series::InfrastructureSystems.StaticTimeSeries,\n start_time::Union{Nothing, Dates.DateTime};\n len\n) -> Vector{D} where D<:Dates.TimeType\n\n\nReturn a vector of timestamps from a cached StaticTimeSeries instance.\n\nArguments\n\nowner::TimeSeriesOwners: Component or attribute containing the time series\ntime_series::StaticTimeSeries: subtype of StaticTimeSeries (e.g., SingleTimeSeries)\nstart_time::Union{Nothing, Dates.DateTime} = nothing: the first timestamp to retrieve. If nothing, use the initial_timestamp of the time series.\nlen::Union{Nothing, Int} = nothing: Length of time-series to retrieve (i.e. number of timestamps). If nothing, use the entire length\n\nSee also: get_time_series_array, get_time_series_values, StaticTimeSeriesCache, get_time_series_timestamps by name from storage, get_time_series_timestamps from a ForecastCache\n\n\n\n\n\n","category":"function"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_time_series_timestamps-Union{Tuple{T}, Tuple{Type{T}, Union{InfrastructureSystems.InfrastructureSystemsComponent, InfrastructureSystems.SupplementalAttribute}, AbstractString}} where T<:InfrastructureSystems.TimeSeriesData","page":"API","title":"InfrastructureSystems.get_time_series_timestamps","text":"get_time_series_timestamps(\n ::Type{T<:InfrastructureSystems.TimeSeriesData},\n owner::Union{InfrastructureSystems.InfrastructureSystemsComponent, InfrastructureSystems.SupplementalAttribute},\n name::AbstractString;\n start_time,\n len,\n features...\n) -> Vector{D} where D<:Dates.TimeType\n\n\nReturn a vector of timestamps from storage for the given time series parameters.\n\nArguments\n\n::Type{T}: the type of time series (a concrete subtype of TimeSeriesData)\nowner::TimeSeriesOwners: Component or attribute containing the time series\nname::AbstractString: name of time series\nstart_time::Union{Nothing, Dates.DateTime} = nothing: If nothing, use the initial_timestamp of the time series. If T is a subtype of Forecast then start_time must be the first timestamp of a window.\nlen::Union{Nothing, Int} = nothing: Length of time-series to retrieve (i.e. number of timestamps). If nothing, use the entire length.\nfeatures...: User-defined tags that differentiate multiple time series arrays for the same component attribute, such as different arrays for different scenarios or years\n\nSee also: get_time_series_array, get_time_series_values, get_time_series_timestamps from a StaticTimeSeriesCache, get_time_series_timestamps from a ForecastCache\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_time_series_type-Tuple{InfrastructureSystems.DeterministicMetadata}","page":"API","title":"InfrastructureSystems.get_time_series_type","text":"get_time_series_type(\n value::InfrastructureSystems.DeterministicMetadata\n) -> Type{<:InfrastructureSystems.AbstractDeterministic}\n\n\nGet DeterministicMetadata time_series_type.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_time_series_uuid-Tuple{InfrastructureSystems.DeterministicMetadata}","page":"API","title":"InfrastructureSystems.get_time_series_uuid","text":"get_time_series_uuid(\n value::InfrastructureSystems.DeterministicMetadata\n) -> Base.UUID\n\n\nGet DeterministicMetadata time_series_uuid.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_time_series_uuid-Tuple{InfrastructureSystems.ProbabilisticMetadata}","page":"API","title":"InfrastructureSystems.get_time_series_uuid","text":"get_time_series_uuid(\n value::InfrastructureSystems.ProbabilisticMetadata\n) -> Base.UUID\n\n\nGet ProbabilisticMetadata time_series_uuid.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_time_series_uuid-Tuple{InfrastructureSystems.ScenariosMetadata}","page":"API","title":"InfrastructureSystems.get_time_series_uuid","text":"get_time_series_uuid(\n value::InfrastructureSystems.ScenariosMetadata\n) -> Base.UUID\n\n\nGet ScenariosMetadata time_series_uuid.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_time_series_uuid-Tuple{InfrastructureSystems.SingleTimeSeriesMetadata}","page":"API","title":"InfrastructureSystems.get_time_series_uuid","text":"get_time_series_uuid(\n value::InfrastructureSystems.SingleTimeSeriesMetadata\n) -> Base.UUID\n\n\nGet SingleTimeSeriesMetadata time_series_uuid.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_time_series_values","page":"API","title":"InfrastructureSystems.get_time_series_values","text":"get_time_series_values(\n owner::Union{InfrastructureSystems.InfrastructureSystemsComponent, InfrastructureSystems.SupplementalAttribute},\n time_series::InfrastructureSystems.StaticTimeSeries;\n ...\n) -> Any\nget_time_series_values(\n owner::Union{InfrastructureSystems.InfrastructureSystemsComponent, InfrastructureSystems.SupplementalAttribute},\n time_series::InfrastructureSystems.StaticTimeSeries,\n start_time::Union{Nothing, Dates.DateTime};\n len,\n ignore_scaling_factors\n) -> Any\n\n\nReturn an vector of timeseries data without timestamps from a cached StaticTimeSeries instance\n\nArguments\n\nowner::TimeSeriesOwners: Component or attribute containing the time series\ntime_series::StaticTimeSeries: subtype of StaticTimeSeries (e.g., SingleTimeSeries)\nstart_time::Union{Nothing, Dates.DateTime} = nothing: the first timestamp to retrieve. If nothing, use the initial_timestamp of the time series.\nlen::Union{Nothing, Int} = nothing: Length of time-series to retrieve (i.e. number of timestamps). If nothing, use the entire length\nignore_scaling_factors = false: If true, the time-series data will be multiplied by the result of calling the stored scaling_factor_multiplier function on the owner\n\nSee also: get_time_series_array, get_time_series_timestamps, StaticTimeSeriesCache, get_time_series_values by name from storage, get_time_series_values from a ForecastCache\n\n\n\n\n\n","category":"function"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_time_series_values-Tuple{Union{InfrastructureSystems.InfrastructureSystemsComponent, InfrastructureSystems.SupplementalAttribute}, InfrastructureSystems.Forecast, Dates.DateTime}","page":"API","title":"InfrastructureSystems.get_time_series_values","text":"get_time_series_values(\n owner::Union{InfrastructureSystems.InfrastructureSystemsComponent, InfrastructureSystems.SupplementalAttribute},\n forecast::InfrastructureSystems.Forecast,\n start_time::Dates.DateTime;\n len,\n ignore_scaling_factors\n) -> Any\n\n\nReturn an vector of timeseries data without timestamps for one forecast window from a cached Forecast instance.\n\nArguments\n\nowner::TimeSeriesOwners: Component or attribute containing the time series\nforecast::Forecast: a concrete subtype of Forecast\nstart_time::Union{Nothing, Dates.DateTime} = nothing: the first timestamp of one of the forecast windows\nlen::Union{Nothing, Int} = nothing: Length of time-series to retrieve (i.e. number of timestamps). If nothing, use the entire length.\nignore_scaling_factors = false: If true, the time-series data will be multiplied by the result of calling the stored scaling_factor_multiplier function on the owner\n\nSee also: get_time_series_array, get_time_series_timestamps, ForecastCache, get_time_series_values by name from storage, get_time_series_values from a StaticTimeSeriesCache\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_time_series_values-Union{Tuple{T}, Tuple{Type{T}, Union{InfrastructureSystems.InfrastructureSystemsComponent, InfrastructureSystems.SupplementalAttribute}, AbstractString}} where T<:InfrastructureSystems.TimeSeriesData","page":"API","title":"InfrastructureSystems.get_time_series_values","text":"get_time_series_values(\n ::Type{T<:InfrastructureSystems.TimeSeriesData},\n owner::Union{InfrastructureSystems.InfrastructureSystemsComponent, InfrastructureSystems.SupplementalAttribute},\n name::AbstractString;\n start_time,\n len,\n ignore_scaling_factors,\n features...\n) -> Any\n\n\nReturn an vector of timeseries data without timestamps from storage\n\nIf the data size is small and this will be called many times, consider using the version that accepts a cached TimeSeriesData instance.\n\nArguments\n\n::Type{T}: type of the time series (a concrete subtype of TimeSeriesData)\nowner::TimeSeriesOwners: Component or attribute containing the time series\nname::AbstractString: name of time series\nstart_time::Union{Nothing, Dates.DateTime} = nothing: If nothing, use the initial_timestamp of the time series. If T is a subtype of Forecast then start_time must be the first timestamp of a window.\nlen::Union{Nothing, Int} = nothing: Length of time-series to retrieve (i.e. number of timestamps). If nothing, use the entire length.\nignore_scaling_factors = false: If true, the time-series data will be multiplied by the result of calling the stored scaling_factor_multiplier function on the owner\nfeatures...: User-defined tags that differentiate multiple time series arrays for the same component attribute, such as different arrays for different scenarios or years\n\nSee also: get_time_series_array, get_time_series_timestamps, get_time_series, get_time_series_values from a StaticTimeSeriesCache, get_time_series_values from a ForecastCache\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_timestamp-Tuple{Type{InfrastructureSystems.TimeSeriesFormatYMDPeriodAsColumn}, CSV.File, Int64}","page":"API","title":"InfrastructureSystems.get_timestamp","text":"get_timestamp(\n _::Type{InfrastructureSystems.TimeSeriesFormatYMDPeriodAsColumn},\n file::CSV.File,\n row_index::Int64\n) -> Any\n\n\nReturn a Dates.DateTime for the row in the CSV file.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_total_period-Tuple{InfrastructureSystems.Forecast}","page":"API","title":"InfrastructureSystems.get_total_period","text":"get_total_period(f::InfrastructureSystems.Forecast) -> Any\n\n\nReturn the total period covered by the forecast.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_unique_timestamps-Union{Tuple{T}, Tuple{Type{T}, CSV.File}} where T<:InfrastructureSystems.TimeSeriesFileFormat","page":"API","title":"InfrastructureSystems.get_unique_timestamps","text":"get_unique_timestamps(\n _::Type{T<:InfrastructureSystems.TimeSeriesFileFormat},\n file::CSV.File\n) -> Vector{Dict{String, Any}}\n\n\nReturn a vector of dicts of unique timestamps and their counts.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_uuid-Tuple{InfrastructureSystems.InfrastructureSystemsType}","page":"API","title":"InfrastructureSystems.get_uuid","text":"get_uuid(\n obj::InfrastructureSystems.InfrastructureSystemsType\n) -> Base.UUID\n\n\nGets the UUID for any InfrastructureSystemsType.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_value_columns-Tuple{Type{InfrastructureSystems.TimeSeriesFormatComponentsAsColumnsNoTime}, CSV.File}","page":"API","title":"InfrastructureSystems.get_value_columns","text":"get_value_columns(\n _::Type{InfrastructureSystems.TimeSeriesFormatComponentsAsColumnsNoTime},\n file::CSV.File\n) -> Vector{Symbol}\n\n\nReturn the column names with values.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_value_columns-Tuple{Type{InfrastructureSystems.TimeSeriesFormatYMDPeriodAsColumn}, CSV.File}","page":"API","title":"InfrastructureSystems.get_value_columns","text":"get_value_columns(\n _::Type{InfrastructureSystems.TimeSeriesFormatYMDPeriodAsColumn},\n file::CSV.File\n) -> Vector{Symbol}\n\n\nReturn the column names with values (components).\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_value_curve-Tuple{InfrastructureSystems.ProductionVariableCostCurve}","page":"API","title":"InfrastructureSystems.get_value_curve","text":"get_value_curve(\n cost::InfrastructureSystems.ProductionVariableCostCurve\n) -> Any\n\n\nGet the underlying ValueCurve representation of this ProductionVariableCostCurve\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_vom_cost-Tuple{InfrastructureSystems.ProductionVariableCostCurve}","page":"API","title":"InfrastructureSystems.get_vom_cost","text":"get_vom_cost(\n cost::InfrastructureSystems.ProductionVariableCostCurve\n) -> Any\n\n\nGet the variable operation and maintenance cost in currency/(power_units h)\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_window-Tuple{InfrastructureSystems.Forecast, Int64}","page":"API","title":"InfrastructureSystems.get_window","text":"get_window(\n forecast::InfrastructureSystems.Forecast,\n index::Int64;\n len\n) -> Any\n\n\nReturn the forecast window corresponsing to interval index.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_x_coords-Tuple{InfrastructureSystems.PiecewiseLinearData}","page":"API","title":"InfrastructureSystems.get_x_coords","text":"get_x_coords(\n data::InfrastructureSystems.PiecewiseLinearData\n) -> Vector{Float64}\n\n\nGet the x-coordinates of the points that define the piecewise data\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_x_coords-Tuple{InfrastructureSystems.PiecewiseStepData}","page":"API","title":"InfrastructureSystems.get_x_coords","text":"get_x_coords(\n data::InfrastructureSystems.PiecewiseStepData\n) -> Vector{Float64}\n\n\nGet the x-coordinates of the points that define the piecewise data\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_x_coords-Tuple{PiecewiseAverageCurve}","page":"API","title":"InfrastructureSystems.get_x_coords","text":"get_x_coords(vc::PiecewiseAverageCurve) -> Vector{Float64}\n\n\nGet the x-coordinates that define the PiecewiseAverageCurve\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_x_coords-Tuple{PiecewiseIncrementalCurve}","page":"API","title":"InfrastructureSystems.get_x_coords","text":"get_x_coords(\n vc::PiecewiseIncrementalCurve\n) -> Vector{Float64}\n\n\nGet the x-coordinates that define the PiecewiseIncrementalCurve\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_x_coords-Tuple{PiecewisePointCurve}","page":"API","title":"InfrastructureSystems.get_x_coords","text":"get_x_coords(vc::PiecewisePointCurve) -> Vector{Float64}\n\n\nGet the x-coordinates of the points that define the PiecewisePointCurve\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_x_lengths-Tuple{Union{InfrastructureSystems.PiecewiseLinearData, InfrastructureSystems.PiecewiseStepData}}","page":"API","title":"InfrastructureSystems.get_x_lengths","text":"get_x_lengths(\n pwl::Union{InfrastructureSystems.PiecewiseLinearData, InfrastructureSystems.PiecewiseStepData}\n) -> Vector{Float64}\n\n\nCalculates the x-length of each segment of a piecewise curve.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_y_coords-Tuple{InfrastructureSystems.PiecewiseLinearData}","page":"API","title":"InfrastructureSystems.get_y_coords","text":"get_y_coords(\n data::InfrastructureSystems.PiecewiseLinearData\n) -> Vector{Float64}\n\n\nGet the y-coordinates of the points that define the PiecewiseLinearData\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_y_coords-Tuple{InfrastructureSystems.PiecewiseStepData}","page":"API","title":"InfrastructureSystems.get_y_coords","text":"get_y_coords(\n data::InfrastructureSystems.PiecewiseStepData\n) -> Vector{Float64}\n\n\nGet the y-coordinates of the segments in the PiecewiseStepData\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.get_y_coords-Tuple{PiecewisePointCurve}","page":"API","title":"InfrastructureSystems.get_y_coords","text":"get_y_coords(vc::PiecewisePointCurve) -> Vector{Float64}\n\n\nGet the y-coordinates of the points that define the PiecewisePointCurve\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.has_association-Tuple{InfrastructureSystems.SupplementalAttributeAssociations, InfrastructureSystems.SupplementalAttribute}","page":"API","title":"InfrastructureSystems.has_association","text":"has_association(\n associations::InfrastructureSystems.SupplementalAttributeAssociations,\n attribute::InfrastructureSystems.SupplementalAttribute\n) -> Bool\n\n\nReturn true if there is at least one association matching the inputs.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.has_component-Tuple{InfrastructureSystems.Components, Type{<:InfrastructureSystems.InfrastructureSystemsComponent}, AbstractString}","page":"API","title":"InfrastructureSystems.has_component","text":"has_component(\n components::InfrastructureSystems.Components,\n T::Type{<:InfrastructureSystems.InfrastructureSystemsComponent},\n name::AbstractString\n) -> Bool\n\n\nCheck to see if a component with name exists.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.has_component-Tuple{InfrastructureSystems.SystemData, AbstractString, InfrastructureSystems.InfrastructureSystemsComponent}","page":"API","title":"InfrastructureSystems.has_component","text":"has_component(\n data::InfrastructureSystems.SystemData,\n subsystem_name::AbstractString,\n component::InfrastructureSystems.InfrastructureSystemsComponent\n) -> Bool\n\n\nReturn true if the component is in the subsystem.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.has_component-Tuple{InfrastructureSystems.SystemData, Type{<:InfrastructureSystems.InfrastructureSystemsComponent}, AbstractString}","page":"API","title":"InfrastructureSystems.has_component","text":"has_component(\n data::InfrastructureSystems.SystemData,\n T::Type{<:InfrastructureSystems.InfrastructureSystemsComponent},\n name::AbstractString\n) -> Bool\n\n\nCheck to see if a component exists.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.has_components-Tuple{InfrastructureSystems.Components, Type{<:InfrastructureSystems.InfrastructureSystemsComponent}}","page":"API","title":"InfrastructureSystems.has_components","text":"has_components(\n components::InfrastructureSystems.Components,\n T::Type{<:InfrastructureSystems.InfrastructureSystemsComponent}\n) -> Bool\n\n\nCheck to see if a component if the given type exists.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.has_metadata-Tuple{InfrastructureSystems.TimeSeriesMetadataStore, Union{InfrastructureSystems.InfrastructureSystemsComponent, InfrastructureSystems.SupplementalAttribute}, InfrastructureSystems.TimeSeriesMetadata}","page":"API","title":"InfrastructureSystems.has_metadata","text":"has_metadata(\n store::InfrastructureSystems.TimeSeriesMetadataStore,\n owner::Union{InfrastructureSystems.InfrastructureSystemsComponent, InfrastructureSystems.SupplementalAttribute},\n metadata::InfrastructureSystems.TimeSeriesMetadata\n) -> Bool\n\n\nReturn True if there is time series metadata matching the inputs.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.has_supplemental_attributes-Tuple{InfrastructureSystems.InfrastructureSystemsComponent}","page":"API","title":"InfrastructureSystems.has_supplemental_attributes","text":"has_supplemental_attributes(\n component::InfrastructureSystems.InfrastructureSystemsComponent\n) -> Bool\n\n\nReturn true if the component has supplemental attributes.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.has_supplemental_attributes-Union{Tuple{T}, Tuple{InfrastructureSystems.InfrastructureSystemsComponent, Type{T}}} where T<:InfrastructureSystems.SupplementalAttribute","page":"API","title":"InfrastructureSystems.has_supplemental_attributes","text":"has_supplemental_attributes(\n component::InfrastructureSystems.InfrastructureSystemsComponent,\n _::Type{T<:InfrastructureSystems.SupplementalAttribute}\n) -> Bool\n\n\nReturn true if the component has supplemental attributes of the given type.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.has_time_series-Tuple{InfrastructureSystems.TimeSeriesMetadataStore, Base.UUID}","page":"API","title":"InfrastructureSystems.has_time_series","text":"has_time_series(\n store::InfrastructureSystems.TimeSeriesMetadataStore,\n time_series_uuid::Base.UUID\n) -> Any\n\n\nReturn True if there is time series matching the UUID.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.has_time_series-Tuple{Union{InfrastructureSystems.InfrastructureSystemsComponent, InfrastructureSystems.SupplementalAttribute}}","page":"API","title":"InfrastructureSystems.has_time_series","text":"has_time_series(\n owner::Union{InfrastructureSystems.InfrastructureSystemsComponent, InfrastructureSystems.SupplementalAttribute}\n) -> Any\n\n\nReturn true if the component or supplemental attribute has time series data.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.has_time_series-Union{Tuple{T}, Tuple{Union{InfrastructureSystems.InfrastructureSystemsComponent, InfrastructureSystems.SupplementalAttribute}, Type{T}}} where T<:InfrastructureSystems.TimeSeriesData","page":"API","title":"InfrastructureSystems.has_time_series","text":"has_time_series(\n val::Union{InfrastructureSystems.InfrastructureSystemsComponent, InfrastructureSystems.SupplementalAttribute},\n _::Type{T<:InfrastructureSystems.TimeSeriesData}\n) -> Any\n\n\nReturn true if the component or supplemental attribute has time series data of type T.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.hash_from_fields-Tuple{Any}","page":"API","title":"InfrastructureSystems.hash_from_fields","text":"hash_from_fields(a) -> Any\n\n\nCompute a hash of the instance a by combining hashes of all its fields\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.head-Tuple{InfrastructureSystems.SingleTimeSeries}","page":"API","title":"InfrastructureSystems.head","text":"head(\n time_series::InfrastructureSystems.SingleTimeSeries\n) -> Any\n\n\nReturn a time_series with only the first num values.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.increment_count!-Tuple{InfrastructureSystems.LogEventTracker, InfrastructureSystems.LogEvent, Bool}","page":"API","title":"InfrastructureSystems.increment_count!","text":"increment_count!(\n tracker::InfrastructureSystems.LogEventTracker,\n event::InfrastructureSystems.LogEvent,\n suppressed::Bool\n) -> Union{Nothing, Int64, InfrastructureSystems.LogEvent}\n\n\nIncrements the count of a log event.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.index_to_initial_time-Tuple{InfrastructureSystems.Forecast, Int64}","page":"API","title":"InfrastructureSystems.index_to_initial_time","text":"index_to_initial_time(\n forecast::InfrastructureSystems.Forecast,\n index::Int64\n) -> Any\n\n\nReturn the Dates.DateTime corresponding to an interval index.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.is_assigned_to_subsystem-Tuple{InfrastructureSystems.SystemData, InfrastructureSystems.InfrastructureSystemsComponent, AbstractString}","page":"API","title":"InfrastructureSystems.is_assigned_to_subsystem","text":"is_assigned_to_subsystem(\n data::InfrastructureSystems.SystemData,\n component::InfrastructureSystems.InfrastructureSystemsComponent,\n subsystem_name::AbstractString\n) -> Bool\n\n\nReturn true if the component is assigned to the subsystem.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.is_assigned_to_subsystem-Tuple{InfrastructureSystems.SystemData, InfrastructureSystems.InfrastructureSystemsComponent}","page":"API","title":"InfrastructureSystems.is_assigned_to_subsystem","text":"is_assigned_to_subsystem(\n data::InfrastructureSystems.SystemData,\n component::InfrastructureSystems.InfrastructureSystemsComponent\n) -> Bool\n\n\nReturn true if the component is assigned to any subsystems.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.is_convex-Tuple{InfrastructureSystems.PiecewiseLinearData}","page":"API","title":"InfrastructureSystems.is_convex","text":"is_convex(\n pwl::InfrastructureSystems.PiecewiseLinearData\n) -> Bool\n\n\nReturns True/False depending on the convexity of the underlying data\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.is_convex-Tuple{InfrastructureSystems.ProductionVariableCostCurve}","page":"API","title":"InfrastructureSystems.is_convex","text":"is_convex(\n cost::InfrastructureSystems.ProductionVariableCostCurve\n) -> Any\n\n\nCalculate the convexity of the underlying data\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.is_convex-Tuple{InfrastructureSystems.ValueCurve}","page":"API","title":"InfrastructureSystems.is_convex","text":"is_convex(curve::InfrastructureSystems.ValueCurve) -> Bool\n\n\nCalculate the convexity of the underlying data\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.is_cost_alias-Tuple{Union{Type{<:InfrastructureSystems.ValueCurve}, InfrastructureSystems.ValueCurve}}","page":"API","title":"InfrastructureSystems.is_cost_alias","text":"is_cost_alias(\n _::Union{Type{<:InfrastructureSystems.ValueCurve}, InfrastructureSystems.ValueCurve}\n) -> Bool\n\n\nWhether there is a cost alias for the instance or type under consideration\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.is_ext_valid_for_serialization-Tuple{Any}","page":"API","title":"InfrastructureSystems.is_ext_valid_for_serialization","text":"is_ext_valid_for_serialization(value) -> Bool\n\n\nPerform a test to see if JSON3 can convert this value so that the code can give the user a a comprehensible corrective action.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.isequal_from_fields-Union{Tuple{T}, Tuple{T, T}} where T","page":"API","title":"InfrastructureSystems.isequal_from_fields","text":"isequal_from_fields(a, b) -> Any\n\n\nCompute the conjunction of the isequal values of all the fields in a and b\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.isequivalent-Tuple{Any, Any}","page":"API","title":"InfrastructureSystems.isequivalent","text":"isequivalent(x, y) -> Any\n\n\nAn equality predicate that is true for NaN, NaN (unlike ==) and for -0.0, 0.0 (unlike isequal)\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.iterate_components-Tuple{InfrastructureSystems.Components}","page":"API","title":"InfrastructureSystems.iterate_components","text":"iterate_components(\n components::InfrastructureSystems.Components\n) -> Base.Iterators.Flatten{Base.Generator{Base.ValueIterator{Dict{DataType, Dict{String, <:InfrastructureSystems.InfrastructureSystemsComponent}}}, InfrastructureSystems.var\"#110#111\"}}\n\n\nIterates over all components.\n\nExamples\n\nfor component in iterate_components(obj)\n @show component\nend\n\nSee also: get_components\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.iterate_container-Tuple{InfrastructureSystems.InfrastructureSystemsContainer}","page":"API","title":"InfrastructureSystems.iterate_container","text":"iterate_container(\n container::InfrastructureSystems.InfrastructureSystemsContainer\n) -> Base.Iterators.Flatten{I} where I<:(Base.Generator{_A, InfrastructureSystems.var\"#110#111\"} where _A)\n\n\nIterates over all data in the container.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.iterate_supplemental_attributes-Tuple{InfrastructureSystems.SupplementalAttributeManager}","page":"API","title":"InfrastructureSystems.iterate_supplemental_attributes","text":"iterate_supplemental_attributes(\n mgr::InfrastructureSystems.SupplementalAttributeManager\n) -> Base.Iterators.Flatten{Base.Generator{Base.ValueIterator{Dict{DataType, Dict{Base.UUID, <:InfrastructureSystems.SupplementalAttribute}}}, InfrastructureSystems.var\"#110#111\"}}\n\n\nIterates over all supplemental_attributes.\n\nExamples\n\nfor supplemental_attribute in iterate_supplemental_attributes(obj)\n @show supplemental_attribute\nend\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.iterate_windows-Tuple{InfrastructureSystems.DeterministicSingleTimeSeries}","page":"API","title":"InfrastructureSystems.iterate_windows","text":"iterate_windows(\n forecast::InfrastructureSystems.DeterministicSingleTimeSeries\n) -> Union{Tuple{Any}, Base.Generator{I, InfrastructureSystems.var\"#134#135\"{InfrastructureSystems.DeterministicSingleTimeSeries}} where I<:(StepRangeLen{T, R, S, Int64} where {T, R>:Dates.DateTime, S})}\n\n\nIterate over the windows in a forecast\n\nExamples\n\nfor window in iterate_windows(forecast)\n @show values(maximum(window))\nend\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.iterate_windows-Tuple{InfrastructureSystems.Deterministic}","page":"API","title":"InfrastructureSystems.iterate_windows","text":"iterate_windows(\n forecast::InfrastructureSystems.Deterministic\n) -> Base.Generator{I, InfrastructureSystems.var\"#105#106\"{InfrastructureSystems.Deterministic}} where I<:(DataStructures.SDMKeyIteration{T} where T<:DataStructures.SortedDict)\n\n\nIterate over the windows in a forecast\n\nExamples\n\nfor window in iterate_windows(forecast)\n @show values(maximum(window))\nend\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.iterate_windows-Tuple{InfrastructureSystems.Probabilistic}","page":"API","title":"InfrastructureSystems.iterate_windows","text":"iterate_windows(\n forecast::InfrastructureSystems.Probabilistic\n) -> Base.Generator{I, InfrastructureSystems.var\"#105#106\"{InfrastructureSystems.Probabilistic}} where I<:(DataStructures.SDMKeyIteration{T} where T<:DataStructures.SortedDict)\n\n\nIterate over the windows in a forecast\n\nExamples\n\nfor window in iterate_windows(forecast)\n @show values(maximum(window))\nend\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.iterate_windows-Tuple{InfrastructureSystems.Scenarios}","page":"API","title":"InfrastructureSystems.iterate_windows","text":"iterate_windows(\n forecast::InfrastructureSystems.Scenarios\n) -> Base.Generator{I, InfrastructureSystems.var\"#105#106\"{InfrastructureSystems.Scenarios}} where I<:(DataStructures.SDMKeyIteration{T} where T<:DataStructures.SortedDict)\n\n\nIterate over the windows in a forecast\n\nExamples\n\nfor window in iterate_windows(forecast)\n @show values(maximum(window))\nend\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.list_associated_component_uuids-Tuple{InfrastructureSystems.SupplementalAttributeAssociations, InfrastructureSystems.SupplementalAttribute}","page":"API","title":"InfrastructureSystems.list_associated_component_uuids","text":"list_associated_component_uuids(\n associations::InfrastructureSystems.SupplementalAttributeAssociations,\n attribute::InfrastructureSystems.SupplementalAttribute\n) -> Any\n\n\nReturn the component UUIDs associated with the attribute.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.list_associated_supplemental_attribute_uuids-Tuple{InfrastructureSystems.SupplementalAttributeAssociations, InfrastructureSystems.InfrastructureSystemsComponent}","page":"API","title":"InfrastructureSystems.list_associated_supplemental_attribute_uuids","text":"list_associated_supplemental_attribute_uuids(\n associations::InfrastructureSystems.SupplementalAttributeAssociations,\n component::InfrastructureSystems.InfrastructureSystemsComponent;\n attribute_type\n) -> Any\n\n\nReturn the supplemental attribute UUIDs associated with the component and attribute type.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.list_existing_metadata-Tuple{InfrastructureSystems.TimeSeriesMetadataStore, Vector{Union{InfrastructureSystems.InfrastructureSystemsComponent, InfrastructureSystems.SupplementalAttribute}}, Vector{InfrastructureSystems.TimeSeriesMetadata}}","page":"API","title":"InfrastructureSystems.list_existing_metadata","text":"list_existing_metadata(\n store::InfrastructureSystems.TimeSeriesMetadataStore,\n owners::Vector{Union{InfrastructureSystems.InfrastructureSystemsComponent, InfrastructureSystems.SupplementalAttribute}},\n metadata::Vector{InfrastructureSystems.TimeSeriesMetadata}\n) -> Vector\n\n\nReturn the metadata specified in the passed metadata vector that are already stored.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.list_existing_time_series_uuids-Tuple{InfrastructureSystems.TimeSeriesMetadataStore, Any}","page":"API","title":"InfrastructureSystems.list_existing_time_series_uuids","text":"list_existing_time_series_uuids(\n store::InfrastructureSystems.TimeSeriesMetadataStore,\n uuids\n) -> Any\n\n\nReturn the time series UUIDs specified in the passed uuids that are already stored.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.list_matching_time_series_uuids-Tuple{InfrastructureSystems.TimeSeriesMetadataStore}","page":"API","title":"InfrastructureSystems.list_matching_time_series_uuids","text":"list_matching_time_series_uuids(\n store::InfrastructureSystems.TimeSeriesMetadataStore;\n time_series_type,\n name,\n features...\n) -> Any\n\n\nReturn the time series UUIDs that match the inputs.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.list_metadata_with_owner_uuid-Tuple{InfrastructureSystems.TimeSeriesMetadataStore, Type{<:Union{InfrastructureSystems.InfrastructureSystemsComponent, InfrastructureSystems.SupplementalAttribute}}}","page":"API","title":"InfrastructureSystems.list_metadata_with_owner_uuid","text":"list_metadata_with_owner_uuid(\n store::InfrastructureSystems.TimeSeriesMetadataStore,\n owner_type::Type{<:Union{InfrastructureSystems.InfrastructureSystemsComponent, InfrastructureSystems.SupplementalAttribute}};\n time_series_type,\n name,\n features...\n) -> Vector\n\n\nReturn a Vector of NamedTuple of owner UUID and time series metadata matching the inputs. \n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.list_recorder_events-Union{Tuple{T}, Tuple{Type{T}, AbstractString}, Tuple{Type{T}, AbstractString, Union{Nothing, Function}}} where T<:InfrastructureSystems.AbstractRecorderEvent","page":"API","title":"InfrastructureSystems.list_recorder_events","text":"list_recorder_events(\n ::Type{T<:InfrastructureSystems.AbstractRecorderEvent},\n filename::AbstractString\n) -> Vector{T} where T<:InfrastructureSystems.AbstractRecorderEvent\nlist_recorder_events(\n ::Type{T<:InfrastructureSystems.AbstractRecorderEvent},\n filename::AbstractString,\n filter_func::Union{Nothing, Function}\n) -> Vector{T} where T<:InfrastructureSystems.AbstractRecorderEvent\n\n\nReturn the events of type T in filename.\n\nArguments\n\nT: event type\nfilename::AbstractString: filename containing recorder events\nfilter_func::Union{Nothing, Function} = nothing: Optional function that accepts an event of type T and returns a Bool. Apply this function to each event and only return events where the result is true.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.load_records!-Tuple{InfrastructureSystems.SupplementalAttributeAssociations, Any}","page":"API","title":"InfrastructureSystems.load_records!","text":"load_records!(\n associations::InfrastructureSystems.SupplementalAttributeAssociations,\n records\n)\n\n\nAdd records to the database. Expects output from to_records.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.make_time_array-Tuple{InfrastructureSystems.Forecast, Dates.DateTime}","page":"API","title":"InfrastructureSystems.make_time_array","text":"make_time_array(\n forecast::InfrastructureSystems.Forecast,\n start_time::Dates.DateTime;\n len\n) -> Any\n\n\nReturn a TimeSeries.TimeArray for one forecast window.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.make_time_series!-Tuple{InfrastructureSystems.TimeSeriesParsingCache, InfrastructureSystems.TimeSeriesFileMetadata}","page":"API","title":"InfrastructureSystems.make_time_series!","text":"make_time_series!(\n cache::InfrastructureSystems.TimeSeriesParsingCache,\n ts_file_metadata::InfrastructureSystems.TimeSeriesFileMetadata\n) -> Any\n\n\nReturn a time series from TimeSeriesFileMetadata.\n\nArguments\n\ncache::TimeSeriesParsingCache: cached data\nts_file_metadata::TimeSeriesFileMetadata: metadata\nresolution::{Nothing, Dates.Period}: skip any time_series that don't match this resolution\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.mask_component!-Tuple{InfrastructureSystems.SystemData, InfrastructureSystems.InfrastructureSystemsComponent}","page":"API","title":"InfrastructureSystems.mask_component!","text":"mask_component!(\n data::InfrastructureSystems.SystemData,\n component::InfrastructureSystems.InfrastructureSystemsComponent;\n remove_time_series\n)\n\n\nRemoves the component from the main container and adds it to the masked container.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.open_file_logger","page":"API","title":"InfrastructureSystems.open_file_logger","text":"open_file_logger(func::Function, filename::String) -> Any\nopen_file_logger(\n func::Function,\n filename::String,\n level\n) -> Any\nopen_file_logger(\n func::Function,\n filename::String,\n level,\n mode\n) -> Any\n\n\nOpens a file logger using Logging.SimpleLogger.\n\nArguments\n\nfunc::Function\nfilename::String: logger filename\nlevel=Logging.Info: optional, to change the minimum logging level\nmode = \"w+\": Optional, to designate write mode\n\nExample\n\nopen_file_logger(\"log.txt\", Logging.Info) do logger\n global_logger(logger)\n @info \"hello world\"\nend\n\n\n\n\n\n","category":"function"},{"location":"InfrastructureSystems/#InfrastructureSystems.prepare_for_removal!-Tuple{Union{InfrastructureSystems.InfrastructureSystemsComponent, InfrastructureSystems.SupplementalAttribute}}","page":"API","title":"InfrastructureSystems.prepare_for_removal!","text":"prepare_for_removal!(\n owner::Union{InfrastructureSystems.InfrastructureSystemsComponent, InfrastructureSystems.SupplementalAttribute}\n)\n\n\nThis function must be called when a component or attribute is removed from a system.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.prepare_for_serialization_to_file!-Tuple{InfrastructureSystems.SystemData, AbstractString}","page":"API","title":"InfrastructureSystems.prepare_for_serialization_to_file!","text":"prepare_for_serialization_to_file!(\n data::InfrastructureSystems.SystemData,\n filename::AbstractString;\n force\n)\n\n\nParent object should call this prior to serialization so that SystemData can store the appropriate path information for the time series data.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.read_time_series-Union{Tuple{T}, Tuple{Type{T}, AbstractString}, Tuple{Type{T}, AbstractString, Any}} where T<:InfrastructureSystems.TimeSeriesData","page":"API","title":"InfrastructureSystems.read_time_series","text":"read_time_series(\n ::Type{T<:InfrastructureSystems.TimeSeriesData},\n data_file::AbstractString;\n ...\n) -> InfrastructureSystems.RawTimeSeries\nread_time_series(\n ::Type{T<:InfrastructureSystems.TimeSeriesData},\n data_file::AbstractString,\n component_name;\n kwargs...\n) -> Any\n\n\nReturn a TimeArray from a CSV file.\n\nPass component_name when the file does not have the component name in a column header.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.read_time_series-Union{Tuple{T}, Tuple{Type{T}, Type{<:InfrastructureSystems.StaticTimeSeries}, CSV.File, AbstractString}} where T<:InfrastructureSystems.TimeSeriesFormatPeriodAsHeader","page":"API","title":"InfrastructureSystems.read_time_series","text":"read_time_series(\n ::Type{T<:InfrastructureSystems.TimeSeriesFormatPeriodAsHeader},\n ::Type{<:InfrastructureSystems.StaticTimeSeries},\n file::CSV.File,\n component_name::AbstractString;\n kwargs...\n) -> InfrastructureSystems.RawTimeSeries\n\n\nThis version of the function supports the format where there is no column header for a component, so the component_name must be passed in.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.read_time_series-Union{Tuple{T}, Tuple{Type{T}, Type{<:InfrastructureSystems.StaticTimeSeries}, CSV.File}, Tuple{Type{T}, Type{<:InfrastructureSystems.StaticTimeSeries}, CSV.File, Any}} where T<:InfrastructureSystems.TimeSeriesFormatComponentsAsColumnsNoTime","page":"API","title":"InfrastructureSystems.read_time_series","text":"read_time_series(\n ::Type{T<:InfrastructureSystems.TimeSeriesFormatComponentsAsColumnsNoTime},\n ::Type{<:InfrastructureSystems.StaticTimeSeries},\n file::CSV.File;\n ...\n) -> InfrastructureSystems.RawTimeSeries\nread_time_series(\n ::Type{T<:InfrastructureSystems.TimeSeriesFormatComponentsAsColumnsNoTime},\n ::Type{<:InfrastructureSystems.StaticTimeSeries},\n file::CSV.File,\n component_name;\n kwargs...\n) -> InfrastructureSystems.RawTimeSeries\n\n\nThis version of the function only has component_name to match the interface. It is unused.\n\nSet start_datetime as a keyword argument for the starting timestamp, otherwise the current day is used.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.read_time_series-Union{Tuple{T}, Tuple{Type{T}, Type{<:InfrastructureSystems.StaticTimeSeries}, CSV.File}, Tuple{Type{T}, Type{<:InfrastructureSystems.StaticTimeSeries}, CSV.File, Any}} where T<:Union{InfrastructureSystems.TimeSeriesFormatDateTimeAsColumn, InfrastructureSystems.TimeSeriesFormatPeriodAsColumn}","page":"API","title":"InfrastructureSystems.read_time_series","text":"read_time_series(\n ::Type{T<:Union{InfrastructureSystems.TimeSeriesFormatDateTimeAsColumn, InfrastructureSystems.TimeSeriesFormatPeriodAsColumn}},\n ::Type{<:InfrastructureSystems.StaticTimeSeries},\n file::CSV.File;\n ...\n) -> InfrastructureSystems.RawTimeSeries\nread_time_series(\n ::Type{T<:Union{InfrastructureSystems.TimeSeriesFormatDateTimeAsColumn, InfrastructureSystems.TimeSeriesFormatPeriodAsColumn}},\n ::Type{<:InfrastructureSystems.StaticTimeSeries},\n file::CSV.File,\n component_name;\n kwargs...\n) -> InfrastructureSystems.RawTimeSeries\n\n\nReturn a TimeSeries.TimeArray representing the CSV file.\n\nThis version of the function only has component_name to match the interface. It is unused.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.read_time_series-Union{Tuple{T}, Tuple{Type{T}, Type{InfrastructureSystems.Deterministic}, CSV.File}, Tuple{Type{T}, Type{InfrastructureSystems.Deterministic}, CSV.File, Any}} where T<:InfrastructureSystems.TimeSeriesFormatDateTimeAsColumn","page":"API","title":"InfrastructureSystems.read_time_series","text":"read_time_series(\n ::Type{T<:InfrastructureSystems.TimeSeriesFormatDateTimeAsColumn},\n ::Type{InfrastructureSystems.Deterministic},\n file::CSV.File;\n ...\n) -> InfrastructureSystems.RawTimeSeries\nread_time_series(\n ::Type{T<:InfrastructureSystems.TimeSeriesFormatDateTimeAsColumn},\n ::Type{InfrastructureSystems.Deterministic},\n file::CSV.File,\n component_name;\n kwargs...\n) -> InfrastructureSystems.RawTimeSeries\n\n\nReturn a RawTimeSeries from a CSV file.\n\nPass component_name when the file does not have the component name in a column header.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.read_time_series_file_metadata-Tuple{AbstractString}","page":"API","title":"InfrastructureSystems.read_time_series_file_metadata","text":"read_time_series_file_metadata(\n file_path::AbstractString\n) -> Any\n\n\nReads time_series metadata and fixes relative paths to the data files.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.redirect_stdout_to_log-Tuple{Function}","page":"API","title":"InfrastructureSystems.redirect_stdout_to_log","text":"redirect_stdout_to_log(func::Function) -> Any\n\n\nRedirect all data written to stdout by a function to log events.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.register_recorder!-Tuple{Symbol}","page":"API","title":"InfrastructureSystems.register_recorder!","text":"register_recorder!(name::Symbol; io, mode, directory)\n\n\nRegister a recorder to log events. Afterwards, calls to @record name () will record the event as JSON in .log.\n\nCallers should guarantee that unregister_recorder! is called to close the file handle.\n\nArguments\n\nname::Symbol: name of recorder\nio::Union{Nothing, IO}: If nothing, record events in a file using name.\nmode = \"w\": Only used when io is nothing.\ndirectory = \".\": Only used when io is nothing.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.remove_association!-Tuple{InfrastructureSystems.SupplementalAttributeAssociations, InfrastructureSystems.InfrastructureSystemsComponent, InfrastructureSystems.SupplementalAttribute}","page":"API","title":"InfrastructureSystems.remove_association!","text":"remove_association!(\n associations::InfrastructureSystems.SupplementalAttributeAssociations,\n component::InfrastructureSystems.InfrastructureSystemsComponent,\n attribute::InfrastructureSystems.SupplementalAttribute\n)\n\n\nRemove the association between the attribute and component.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.remove_associations!-Tuple{InfrastructureSystems.SupplementalAttributeAssociations, Type{<:InfrastructureSystems.SupplementalAttribute}}","page":"API","title":"InfrastructureSystems.remove_associations!","text":"remove_associations!(\n associations::InfrastructureSystems.SupplementalAttributeAssociations,\n type::Type{<:InfrastructureSystems.SupplementalAttribute}\n)\n\n\nRemove all associations of the given type.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.remove_component!-Union{Tuple{T}, Tuple{InfrastructureSystems.Components, T}} where T<:InfrastructureSystems.InfrastructureSystemsComponent","page":"API","title":"InfrastructureSystems.remove_component!","text":"remove_component!(\n components::InfrastructureSystems.Components,\n component::InfrastructureSystems.InfrastructureSystemsComponent;\n remove_time_series\n) -> InfrastructureSystems.InfrastructureSystemsComponent\n\n\nRemove a component by its value.\n\nThrows ArgumentError if the component is not stored.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.remove_component!-Union{Tuple{T}, Tuple{Type{T}, InfrastructureSystems.Components, AbstractString}} where T<:InfrastructureSystems.InfrastructureSystemsComponent","page":"API","title":"InfrastructureSystems.remove_component!","text":"remove_component!(\n ::Type{T<:InfrastructureSystems.InfrastructureSystemsComponent},\n components::InfrastructureSystems.Components,\n name::AbstractString;\n remove_time_series\n) -> InfrastructureSystems.InfrastructureSystemsComponent\n\n\nRemove a component by its name.\n\nThrows ArgumentError if the component is not stored.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.remove_component_from_subsystem!-Tuple{InfrastructureSystems.SystemData, AbstractString, InfrastructureSystems.InfrastructureSystemsComponent}","page":"API","title":"InfrastructureSystems.remove_component_from_subsystem!","text":"remove_component_from_subsystem!(\n data::InfrastructureSystems.SystemData,\n subsystem_name::AbstractString,\n component::InfrastructureSystems.InfrastructureSystemsComponent\n)\n\n\nRemove a component from a subsystem.\n\nThrows ArgumentError if the subsystem name or component is not stored.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.remove_components!-Union{Tuple{T}, Tuple{Type{T}, InfrastructureSystems.Components}} where T<:InfrastructureSystems.InfrastructureSystemsComponent","page":"API","title":"InfrastructureSystems.remove_components!","text":"remove_components!(\n _::Type{T<:InfrastructureSystems.InfrastructureSystemsComponent},\n components::InfrastructureSystems.Components\n) -> Base.ValueIterator{T} where T<:(Dict{String, <:InfrastructureSystems.InfrastructureSystemsComponent})\n\n\nRemove all components of type T.\n\nThrows ArgumentError if the type is not stored.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.remove_metadata!-Tuple{InfrastructureSystems.TimeSeriesMetadataStore, Union{InfrastructureSystems.InfrastructureSystemsComponent, InfrastructureSystems.SupplementalAttribute}, InfrastructureSystems.TimeSeriesMetadata}","page":"API","title":"InfrastructureSystems.remove_metadata!","text":"remove_metadata!(\n store::InfrastructureSystems.TimeSeriesMetadataStore,\n owner::Union{InfrastructureSystems.InfrastructureSystemsComponent, InfrastructureSystems.SupplementalAttribute},\n metadata::InfrastructureSystems.TimeSeriesMetadata\n)\n\n\nRemove the matching metadata from the store.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.remove_subsystem!-Tuple{InfrastructureSystems.SystemData, AbstractString}","page":"API","title":"InfrastructureSystems.remove_subsystem!","text":"remove_subsystem!(\n data::InfrastructureSystems.SystemData,\n subsystem_name::AbstractString\n)\n\n\nRemove a subsystem from the system.\n\nThrows ArgumentError if the subsystem name is not stored.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.remove_supplemental_attributes!-Union{Tuple{T}, Tuple{InfrastructureSystems.SupplementalAttributeManager, Type{T}}} where T<:InfrastructureSystems.SupplementalAttribute","page":"API","title":"InfrastructureSystems.remove_supplemental_attributes!","text":"remove_supplemental_attributes!(\n mgr::InfrastructureSystems.SupplementalAttributeManager,\n _::Type{T<:InfrastructureSystems.SupplementalAttribute}\n) -> Base.ValueIterator{T} where T<:(Dict{Base.UUID, <:InfrastructureSystems.SupplementalAttribute})\n\n\nRemove all supplemental_attributes of type T.\n\nIgnores whether attributes are attached to components.\n\nThrows ArgumentError if the type is not stored.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.remove_time_series!-Tuple{InfrastructureSystems.TimeSeriesManager, Type{<:InfrastructureSystems.TimeSeriesData}, Union{InfrastructureSystems.InfrastructureSystemsComponent, InfrastructureSystems.SupplementalAttribute}, String}","page":"API","title":"InfrastructureSystems.remove_time_series!","text":"remove_time_series!(\n mgr::InfrastructureSystems.TimeSeriesManager,\n time_series_type::Type{<:InfrastructureSystems.TimeSeriesData},\n owner::Union{InfrastructureSystems.InfrastructureSystemsComponent, InfrastructureSystems.SupplementalAttribute},\n name::String;\n features...\n)\n\n\nRemove the time series data for a component.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.remove_time_series!-Union{Tuple{T}, Tuple{InfrastructureSystems.SystemData, Type{T}, InfrastructureSystems.InfrastructureSystemsComponent, String}} where T<:InfrastructureSystems.TimeSeriesData","page":"API","title":"InfrastructureSystems.remove_time_series!","text":"remove_time_series!(\n data::InfrastructureSystems.SystemData,\n ::Type{T<:InfrastructureSystems.TimeSeriesData},\n component::InfrastructureSystems.InfrastructureSystemsComponent,\n name::String;\n features...\n)\n\n\nRemove the time series data for a component.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.remove_time_series!-Union{Tuple{T}, Tuple{InfrastructureSystems.SystemData, Type{T}}} where T<:InfrastructureSystems.TimeSeriesData","page":"API","title":"InfrastructureSystems.remove_time_series!","text":"remove_time_series!(\n data::InfrastructureSystems.SystemData,\n _::Type{T<:InfrastructureSystems.TimeSeriesData}\n)\n\n\nRemoves all time series of a particular type from a System.\n\nArguments\n\ndata::SystemData: system\ntype::Type{<:TimeSeriesData}: Type of time series objects to remove.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.replace_component_uuid!-Tuple{InfrastructureSystems.SupplementalAttributeAssociations, Base.UUID, Base.UUID}","page":"API","title":"InfrastructureSystems.replace_component_uuid!","text":"replace_component_uuid!(\n associations::InfrastructureSystems.SupplementalAttributeAssociations,\n old_uuid::Base.UUID,\n new_uuid::Base.UUID\n)\n\n\nReplace the component UUID in the table.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.replace_iterator-Tuple{InfrastructureSystems.LazyDictFromIterator, Any}","page":"API","title":"InfrastructureSystems.replace_iterator","text":"replace_iterator(\n container::InfrastructureSystems.LazyDictFromIterator,\n iter\n)\n\n\nReplace the iterator, maintaining the cached dict.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.report_log_summary-Tuple{InfrastructureSystems.LogEventTracker}","page":"API","title":"InfrastructureSystems.report_log_summary","text":"report_log_summary(\n tracker::InfrastructureSystems.LogEventTracker\n) -> String\n\n\nReturns a summary of log event counts by level.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.report_log_summary-Tuple{InfrastructureSystems.MultiLogger}","page":"API","title":"InfrastructureSystems.report_log_summary","text":"report_log_summary(\n logger::InfrastructureSystems.MultiLogger\n) -> String\n\n\nReturns a summary of log event counts by level.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.reset!-Tuple{InfrastructureSystems.TimeSeriesCache}","page":"API","title":"InfrastructureSystems.reset!","text":"reset!(cache::InfrastructureSystems.TimeSeriesCache)\n\n\nReset parameters in order to start reading data from the beginning with get_next_time_series_array!\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.reset_iterator-Tuple{InfrastructureSystems.LazyDictFromIterator}","page":"API","title":"InfrastructureSystems.reset_iterator","text":"reset_iterator(\n container::InfrastructureSystems.LazyDictFromIterator\n)\n\n\nReset the iterator for cases where underlying arrays have changed.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.serialize-Tuple{T} where T<:InfrastructureSystems.InfrastructureSystemsType","page":"API","title":"InfrastructureSystems.serialize","text":"serialize(\n val::InfrastructureSystems.InfrastructureSystemsType\n) -> Dict{String, Any}\n\n\nSerialize the Julia value into standard types that can be converted to non-Julia formats, such as JSON. In cases where val is an instance of a struct, return a Dict. In cases where val is a scalar value, return that value.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.set_component!-Tuple{InfrastructureSystems.TimeSeriesFileMetadata, InfrastructureSystems.SystemData, Module}","page":"API","title":"InfrastructureSystems.set_component!","text":"set_component!(\n metadata::InfrastructureSystems.TimeSeriesFileMetadata,\n data::InfrastructureSystems.SystemData,\n mod::Module\n) -> Union{Nothing, InfrastructureSystems.InfrastructureSystemsComponent}\n\n\nSet the component value in metadata by looking up the category in module. This requires that category be a string version of a component's abstract type. Modules can override for custom behavior.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.set_count!-Tuple{InfrastructureSystems.DeterministicMetadata, Any}","page":"API","title":"InfrastructureSystems.set_count!","text":"set_count!(\n value::InfrastructureSystems.DeterministicMetadata,\n val\n) -> Any\n\n\nSet DeterministicMetadata count.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.set_count!-Tuple{InfrastructureSystems.DeterministicSingleTimeSeries, Any}","page":"API","title":"InfrastructureSystems.set_count!","text":"set_count!(\n value::InfrastructureSystems.DeterministicSingleTimeSeries,\n val\n) -> Any\n\n\nSet DeterministicSingleTimeSeries count.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.set_count!-Tuple{InfrastructureSystems.ProbabilisticMetadata, Any}","page":"API","title":"InfrastructureSystems.set_count!","text":"set_count!(\n value::InfrastructureSystems.ProbabilisticMetadata,\n val\n) -> Any\n\n\nSet ProbabilisticMetadata count.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.set_count!-Tuple{InfrastructureSystems.ScenariosMetadata, Any}","page":"API","title":"InfrastructureSystems.set_count!","text":"set_count!(\n value::InfrastructureSystems.ScenariosMetadata,\n val\n) -> Any\n\n\nSet ScenariosMetadata count.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.set_data!-Tuple{InfrastructureSystems.Deterministic, Any}","page":"API","title":"InfrastructureSystems.set_data!","text":"set_data!(\n value::InfrastructureSystems.Deterministic,\n val\n) -> Any\n\n\nSet Deterministic data.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.set_data!-Tuple{InfrastructureSystems.Probabilistic, Any}","page":"API","title":"InfrastructureSystems.set_data!","text":"set_data!(\n value::InfrastructureSystems.Probabilistic,\n val\n) -> Any\n\n\nSet Probabilistic data.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.set_data!-Tuple{InfrastructureSystems.Scenarios, Any}","page":"API","title":"InfrastructureSystems.set_data!","text":"set_data!(\n value::InfrastructureSystems.Scenarios,\n val\n) -> Any\n\n\nSet Scenarios data.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.set_data!-Tuple{InfrastructureSystems.SingleTimeSeries, Any}","page":"API","title":"InfrastructureSystems.set_data!","text":"set_data!(\n value::InfrastructureSystems.SingleTimeSeries,\n val\n) -> Any\n\n\nSet SingleTimeSeries data.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.set_features!-Tuple{InfrastructureSystems.DeterministicMetadata, Any}","page":"API","title":"InfrastructureSystems.set_features!","text":"set_features!(\n value::InfrastructureSystems.DeterministicMetadata,\n val\n) -> Any\n\n\nSet DeterministicMetadata features.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.set_features!-Tuple{InfrastructureSystems.ProbabilisticMetadata, Any}","page":"API","title":"InfrastructureSystems.set_features!","text":"set_features!(\n value::InfrastructureSystems.ProbabilisticMetadata,\n val\n) -> Any\n\n\nSet ProbabilisticMetadata features.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.set_features!-Tuple{InfrastructureSystems.ScenariosMetadata, Any}","page":"API","title":"InfrastructureSystems.set_features!","text":"set_features!(\n value::InfrastructureSystems.ScenariosMetadata,\n val\n) -> Any\n\n\nSet ScenariosMetadata features.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.set_features!-Tuple{InfrastructureSystems.SingleTimeSeriesMetadata, Any}","page":"API","title":"InfrastructureSystems.set_features!","text":"set_features!(\n value::InfrastructureSystems.SingleTimeSeriesMetadata,\n val\n) -> Any\n\n\nSet SingleTimeSeriesMetadata features.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.set_group_level!-Tuple{InfrastructureSystems.MultiLogger, Symbol, Base.CoreLogging.LogLevel}","page":"API","title":"InfrastructureSystems.set_group_level!","text":"set_group_level!(\n logger::InfrastructureSystems.MultiLogger,\n group::Symbol,\n level::Base.CoreLogging.LogLevel\n)\n\n\nSet the minimum log level for a group.\n\nThe group field of a log message defaults to its file's base name (no extension) as a symbol. It can be customized by setting _group = :a_group_name.\n\nThe minimum log level stored for a console or file logger supercede this setting.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.set_group_levels!-Tuple{InfrastructureSystems.MultiLogger, Dict{Symbol, Base.CoreLogging.LogLevel}}","page":"API","title":"InfrastructureSystems.set_group_levels!","text":"set_group_levels!(\n logger::InfrastructureSystems.MultiLogger,\n group_levels::Dict{Symbol, Base.CoreLogging.LogLevel}\n)\n\n\nSet the minimum log levels for multiple groups. Refer to set_group_level! for more information.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.set_horizon!-Tuple{InfrastructureSystems.DeterministicMetadata, Any}","page":"API","title":"InfrastructureSystems.set_horizon!","text":"set_horizon!(\n value::InfrastructureSystems.DeterministicMetadata,\n val\n) -> Any\n\n\nSet DeterministicMetadata horizon.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.set_horizon!-Tuple{InfrastructureSystems.DeterministicSingleTimeSeries, Any}","page":"API","title":"InfrastructureSystems.set_horizon!","text":"set_horizon!(\n value::InfrastructureSystems.DeterministicSingleTimeSeries,\n val\n) -> Any\n\n\nSet DeterministicSingleTimeSeries horizon.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.set_horizon!-Tuple{InfrastructureSystems.ProbabilisticMetadata, Any}","page":"API","title":"InfrastructureSystems.set_horizon!","text":"set_horizon!(\n value::InfrastructureSystems.ProbabilisticMetadata,\n val\n) -> Any\n\n\nSet ProbabilisticMetadata horizon.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.set_horizon!-Tuple{InfrastructureSystems.ScenariosMetadata, Any}","page":"API","title":"InfrastructureSystems.set_horizon!","text":"set_horizon!(\n value::InfrastructureSystems.ScenariosMetadata,\n val\n) -> Any\n\n\nSet ScenariosMetadata horizon.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.set_initial_timestamp!-Tuple{InfrastructureSystems.DeterministicMetadata, Any}","page":"API","title":"InfrastructureSystems.set_initial_timestamp!","text":"set_initial_timestamp!(\n value::InfrastructureSystems.DeterministicMetadata,\n val\n) -> Any\n\n\nSet DeterministicMetadata initial_timestamp.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.set_initial_timestamp!-Tuple{InfrastructureSystems.DeterministicSingleTimeSeries, Any}","page":"API","title":"InfrastructureSystems.set_initial_timestamp!","text":"set_initial_timestamp!(\n value::InfrastructureSystems.DeterministicSingleTimeSeries,\n val\n) -> Any\n\n\nSet DeterministicSingleTimeSeries initial_timestamp.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.set_initial_timestamp!-Tuple{InfrastructureSystems.ProbabilisticMetadata, Any}","page":"API","title":"InfrastructureSystems.set_initial_timestamp!","text":"set_initial_timestamp!(\n value::InfrastructureSystems.ProbabilisticMetadata,\n val\n) -> Any\n\n\nSet ProbabilisticMetadata initial_timestamp.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.set_initial_timestamp!-Tuple{InfrastructureSystems.ScenariosMetadata, Any}","page":"API","title":"InfrastructureSystems.set_initial_timestamp!","text":"set_initial_timestamp!(\n value::InfrastructureSystems.ScenariosMetadata,\n val\n) -> Any\n\n\nSet ScenariosMetadata initial_timestamp.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.set_initial_timestamp!-Tuple{InfrastructureSystems.SingleTimeSeriesMetadata, Any}","page":"API","title":"InfrastructureSystems.set_initial_timestamp!","text":"set_initial_timestamp!(\n value::InfrastructureSystems.SingleTimeSeriesMetadata,\n val\n) -> Any\n\n\nSet SingleTimeSeriesMetadata initial_timestamp.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.set_internal!-Tuple{InfrastructureSystems.Deterministic, Any}","page":"API","title":"InfrastructureSystems.set_internal!","text":"set_internal!(\n value::InfrastructureSystems.Deterministic,\n val\n) -> Any\n\n\nSet Deterministic internal.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.set_internal!-Tuple{InfrastructureSystems.DeterministicMetadata, Any}","page":"API","title":"InfrastructureSystems.set_internal!","text":"set_internal!(\n value::InfrastructureSystems.DeterministicMetadata,\n val\n) -> Any\n\n\nSet DeterministicMetadata internal.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.set_internal!-Tuple{InfrastructureSystems.Probabilistic, Any}","page":"API","title":"InfrastructureSystems.set_internal!","text":"set_internal!(\n value::InfrastructureSystems.Probabilistic,\n val\n) -> Any\n\n\nSet Probabilistic internal.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.set_internal!-Tuple{InfrastructureSystems.ProbabilisticMetadata, Any}","page":"API","title":"InfrastructureSystems.set_internal!","text":"set_internal!(\n value::InfrastructureSystems.ProbabilisticMetadata,\n val\n) -> Any\n\n\nSet ProbabilisticMetadata internal.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.set_internal!-Tuple{InfrastructureSystems.Scenarios, Any}","page":"API","title":"InfrastructureSystems.set_internal!","text":"set_internal!(\n value::InfrastructureSystems.Scenarios,\n val\n) -> Any\n\n\nSet Scenarios internal.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.set_internal!-Tuple{InfrastructureSystems.ScenariosMetadata, Any}","page":"API","title":"InfrastructureSystems.set_internal!","text":"set_internal!(\n value::InfrastructureSystems.ScenariosMetadata,\n val\n) -> Any\n\n\nSet ScenariosMetadata internal.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.set_internal!-Tuple{InfrastructureSystems.SingleTimeSeries, Any}","page":"API","title":"InfrastructureSystems.set_internal!","text":"set_internal!(\n value::InfrastructureSystems.SingleTimeSeries,\n val\n) -> Any\n\n\nSet SingleTimeSeries internal.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.set_internal!-Tuple{InfrastructureSystems.SingleTimeSeriesMetadata, Any}","page":"API","title":"InfrastructureSystems.set_internal!","text":"set_internal!(\n value::InfrastructureSystems.SingleTimeSeriesMetadata,\n val\n) -> Any\n\n\nSet SingleTimeSeriesMetadata internal.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.set_interval!-Tuple{InfrastructureSystems.DeterministicMetadata, Any}","page":"API","title":"InfrastructureSystems.set_interval!","text":"set_interval!(\n value::InfrastructureSystems.DeterministicMetadata,\n val\n) -> Any\n\n\nSet DeterministicMetadata interval.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.set_interval!-Tuple{InfrastructureSystems.DeterministicSingleTimeSeries, Any}","page":"API","title":"InfrastructureSystems.set_interval!","text":"set_interval!(\n value::InfrastructureSystems.DeterministicSingleTimeSeries,\n val\n) -> Any\n\n\nSet DeterministicSingleTimeSeries interval.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.set_interval!-Tuple{InfrastructureSystems.ProbabilisticMetadata, Any}","page":"API","title":"InfrastructureSystems.set_interval!","text":"set_interval!(\n value::InfrastructureSystems.ProbabilisticMetadata,\n val\n) -> Any\n\n\nSet ProbabilisticMetadata interval.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.set_interval!-Tuple{InfrastructureSystems.ScenariosMetadata, Any}","page":"API","title":"InfrastructureSystems.set_interval!","text":"set_interval!(\n value::InfrastructureSystems.ScenariosMetadata,\n val\n) -> Any\n\n\nSet ScenariosMetadata interval.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.set_length!-Tuple{InfrastructureSystems.SingleTimeSeriesMetadata, Any}","page":"API","title":"InfrastructureSystems.set_length!","text":"set_length!(\n value::InfrastructureSystems.SingleTimeSeriesMetadata,\n val\n) -> Any\n\n\nSet SingleTimeSeriesMetadata length.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.set_name!-Tuple{InfrastructureSystems.Deterministic, Any}","page":"API","title":"InfrastructureSystems.set_name!","text":"set_name!(\n value::InfrastructureSystems.Deterministic,\n val\n) -> Any\n\n\nSet Deterministic name.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.set_name!-Tuple{InfrastructureSystems.DeterministicMetadata, Any}","page":"API","title":"InfrastructureSystems.set_name!","text":"set_name!(\n value::InfrastructureSystems.DeterministicMetadata,\n val\n) -> Any\n\n\nSet DeterministicMetadata name.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.set_name!-Tuple{InfrastructureSystems.Probabilistic, Any}","page":"API","title":"InfrastructureSystems.set_name!","text":"set_name!(\n value::InfrastructureSystems.Probabilistic,\n val\n) -> Any\n\n\nSet Probabilistic name.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.set_name!-Tuple{InfrastructureSystems.ProbabilisticMetadata, Any}","page":"API","title":"InfrastructureSystems.set_name!","text":"set_name!(\n value::InfrastructureSystems.ProbabilisticMetadata,\n val\n) -> Any\n\n\nSet ProbabilisticMetadata name.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.set_name!-Tuple{InfrastructureSystems.Scenarios, Any}","page":"API","title":"InfrastructureSystems.set_name!","text":"set_name!(\n value::InfrastructureSystems.Scenarios,\n val\n) -> Any\n\n\nSet Scenarios name.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.set_name!-Tuple{InfrastructureSystems.ScenariosMetadata, Any}","page":"API","title":"InfrastructureSystems.set_name!","text":"set_name!(\n value::InfrastructureSystems.ScenariosMetadata,\n val\n) -> Any\n\n\nSet ScenariosMetadata name.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.set_name!-Tuple{InfrastructureSystems.SingleTimeSeries, Any}","page":"API","title":"InfrastructureSystems.set_name!","text":"set_name!(\n value::InfrastructureSystems.SingleTimeSeries,\n val\n) -> Any\n\n\nSet SingleTimeSeries name.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.set_name!-Tuple{InfrastructureSystems.SingleTimeSeriesMetadata, Any}","page":"API","title":"InfrastructureSystems.set_name!","text":"set_name!(\n value::InfrastructureSystems.SingleTimeSeriesMetadata,\n val\n) -> Any\n\n\nSet SingleTimeSeriesMetadata name.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.set_percentiles!-Tuple{InfrastructureSystems.Probabilistic, Any}","page":"API","title":"InfrastructureSystems.set_percentiles!","text":"set_percentiles!(\n value::InfrastructureSystems.Probabilistic,\n val\n) -> Any\n\n\nSet Probabilistic percentiles.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.set_percentiles!-Tuple{InfrastructureSystems.ProbabilisticMetadata, Any}","page":"API","title":"InfrastructureSystems.set_percentiles!","text":"set_percentiles!(\n value::InfrastructureSystems.ProbabilisticMetadata,\n val\n) -> Any\n\n\nSet ProbabilisticMetadata percentiles.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.set_resolution!-Tuple{InfrastructureSystems.Deterministic, Any}","page":"API","title":"InfrastructureSystems.set_resolution!","text":"set_resolution!(\n value::InfrastructureSystems.Deterministic,\n val\n) -> Any\n\n\nSet Deterministic resolution.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.set_resolution!-Tuple{InfrastructureSystems.DeterministicMetadata, Any}","page":"API","title":"InfrastructureSystems.set_resolution!","text":"set_resolution!(\n value::InfrastructureSystems.DeterministicMetadata,\n val\n) -> Any\n\n\nSet DeterministicMetadata resolution.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.set_resolution!-Tuple{InfrastructureSystems.Probabilistic, Any}","page":"API","title":"InfrastructureSystems.set_resolution!","text":"set_resolution!(\n value::InfrastructureSystems.Probabilistic,\n val\n) -> Any\n\n\nSet Probabilistic resolution.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.set_resolution!-Tuple{InfrastructureSystems.ProbabilisticMetadata, Any}","page":"API","title":"InfrastructureSystems.set_resolution!","text":"set_resolution!(\n value::InfrastructureSystems.ProbabilisticMetadata,\n val\n) -> Any\n\n\nSet ProbabilisticMetadata resolution.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.set_resolution!-Tuple{InfrastructureSystems.Scenarios, Any}","page":"API","title":"InfrastructureSystems.set_resolution!","text":"set_resolution!(\n value::InfrastructureSystems.Scenarios,\n val\n) -> Any\n\n\nSet Scenarios resolution.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.set_resolution!-Tuple{InfrastructureSystems.ScenariosMetadata, Any}","page":"API","title":"InfrastructureSystems.set_resolution!","text":"set_resolution!(\n value::InfrastructureSystems.ScenariosMetadata,\n val\n) -> Any\n\n\nSet ScenariosMetadata resolution.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.set_resolution!-Tuple{InfrastructureSystems.SingleTimeSeriesMetadata, Any}","page":"API","title":"InfrastructureSystems.set_resolution!","text":"set_resolution!(\n value::InfrastructureSystems.SingleTimeSeriesMetadata,\n val\n) -> Any\n\n\nSet SingleTimeSeriesMetadata resolution.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.set_scaling_factor_multiplier!-Tuple{InfrastructureSystems.Deterministic, Any}","page":"API","title":"InfrastructureSystems.set_scaling_factor_multiplier!","text":"set_scaling_factor_multiplier!(\n value::InfrastructureSystems.Deterministic,\n val\n) -> Any\n\n\nSet Deterministic scaling_factor_multiplier.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.set_scaling_factor_multiplier!-Tuple{InfrastructureSystems.DeterministicMetadata, Any}","page":"API","title":"InfrastructureSystems.set_scaling_factor_multiplier!","text":"set_scaling_factor_multiplier!(\n value::InfrastructureSystems.DeterministicMetadata,\n val\n) -> Any\n\n\nSet DeterministicMetadata scaling_factor_multiplier.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.set_scaling_factor_multiplier!-Tuple{InfrastructureSystems.Probabilistic, Any}","page":"API","title":"InfrastructureSystems.set_scaling_factor_multiplier!","text":"set_scaling_factor_multiplier!(\n value::InfrastructureSystems.Probabilistic,\n val\n) -> Any\n\n\nSet Probabilistic scaling_factor_multiplier.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.set_scaling_factor_multiplier!-Tuple{InfrastructureSystems.ProbabilisticMetadata, Any}","page":"API","title":"InfrastructureSystems.set_scaling_factor_multiplier!","text":"set_scaling_factor_multiplier!(\n value::InfrastructureSystems.ProbabilisticMetadata,\n val\n) -> Any\n\n\nSet ProbabilisticMetadata scaling_factor_multiplier.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.set_scaling_factor_multiplier!-Tuple{InfrastructureSystems.Scenarios, Any}","page":"API","title":"InfrastructureSystems.set_scaling_factor_multiplier!","text":"set_scaling_factor_multiplier!(\n value::InfrastructureSystems.Scenarios,\n val\n) -> Any\n\n\nSet Scenarios scaling_factor_multiplier.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.set_scaling_factor_multiplier!-Tuple{InfrastructureSystems.ScenariosMetadata, Any}","page":"API","title":"InfrastructureSystems.set_scaling_factor_multiplier!","text":"set_scaling_factor_multiplier!(\n value::InfrastructureSystems.ScenariosMetadata,\n val\n) -> Any\n\n\nSet ScenariosMetadata scaling_factor_multiplier.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.set_scaling_factor_multiplier!-Tuple{InfrastructureSystems.SingleTimeSeries, Any}","page":"API","title":"InfrastructureSystems.set_scaling_factor_multiplier!","text":"set_scaling_factor_multiplier!(\n value::InfrastructureSystems.SingleTimeSeries,\n val\n) -> Any\n\n\nSet SingleTimeSeries scaling_factor_multiplier.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.set_scaling_factor_multiplier!-Tuple{InfrastructureSystems.SingleTimeSeriesMetadata, Any}","page":"API","title":"InfrastructureSystems.set_scaling_factor_multiplier!","text":"set_scaling_factor_multiplier!(\n value::InfrastructureSystems.SingleTimeSeriesMetadata,\n val\n) -> Any\n\n\nSet SingleTimeSeriesMetadata scaling_factor_multiplier.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.set_scenario_count!-Tuple{InfrastructureSystems.Scenarios, Any}","page":"API","title":"InfrastructureSystems.set_scenario_count!","text":"set_scenario_count!(\n value::InfrastructureSystems.Scenarios,\n val\n) -> Any\n\n\nSet Scenarios scenario_count.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.set_scenario_count!-Tuple{InfrastructureSystems.ScenariosMetadata, Any}","page":"API","title":"InfrastructureSystems.set_scenario_count!","text":"set_scenario_count!(\n value::InfrastructureSystems.ScenariosMetadata,\n val\n) -> Any\n\n\nSet ScenariosMetadata scenario_count.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.set_single_time_series!-Tuple{InfrastructureSystems.DeterministicSingleTimeSeries, Any}","page":"API","title":"InfrastructureSystems.set_single_time_series!","text":"set_single_time_series!(\n value::InfrastructureSystems.DeterministicSingleTimeSeries,\n val\n) -> Any\n\n\nSet DeterministicSingleTimeSeries single_time_series.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.set_time_series_type!-Tuple{InfrastructureSystems.DeterministicMetadata, Any}","page":"API","title":"InfrastructureSystems.set_time_series_type!","text":"set_time_series_type!(\n value::InfrastructureSystems.DeterministicMetadata,\n val\n) -> Any\n\n\nSet DeterministicMetadata time_series_type.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.set_time_series_uuid!-Tuple{InfrastructureSystems.DeterministicMetadata, Any}","page":"API","title":"InfrastructureSystems.set_time_series_uuid!","text":"set_time_series_uuid!(\n value::InfrastructureSystems.DeterministicMetadata,\n val\n) -> Any\n\n\nSet DeterministicMetadata time_series_uuid.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.set_time_series_uuid!-Tuple{InfrastructureSystems.ProbabilisticMetadata, Any}","page":"API","title":"InfrastructureSystems.set_time_series_uuid!","text":"set_time_series_uuid!(\n value::InfrastructureSystems.ProbabilisticMetadata,\n val\n) -> Any\n\n\nSet ProbabilisticMetadata time_series_uuid.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.set_time_series_uuid!-Tuple{InfrastructureSystems.ScenariosMetadata, Any}","page":"API","title":"InfrastructureSystems.set_time_series_uuid!","text":"set_time_series_uuid!(\n value::InfrastructureSystems.ScenariosMetadata,\n val\n) -> Any\n\n\nSet ScenariosMetadata time_series_uuid.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.set_time_series_uuid!-Tuple{InfrastructureSystems.SingleTimeSeriesMetadata, Any}","page":"API","title":"InfrastructureSystems.set_time_series_uuid!","text":"set_time_series_uuid!(\n value::InfrastructureSystems.SingleTimeSeriesMetadata,\n val\n) -> Any\n\n\nSet SingleTimeSeriesMetadata time_series_uuid.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.show_recorder_events-Union{Tuple{T}, Tuple{Type{T}, AbstractString}, Tuple{Type{T}, AbstractString, Union{Nothing, Function}}} where T<:InfrastructureSystems.AbstractRecorderEvent","page":"API","title":"InfrastructureSystems.show_recorder_events","text":"show_recorder_events(\n ::Type{T<:InfrastructureSystems.AbstractRecorderEvent},\n filename::AbstractString;\n ...\n)\nshow_recorder_events(\n ::Type{T<:InfrastructureSystems.AbstractRecorderEvent},\n filename::AbstractString,\n filter_func::Union{Nothing, Function};\n kwargs...\n)\n\n\nShow the events of type T in filename in a table. Refer to PrettyTables.jl documentation for accepted kwargs.\n\nArguments\n\nT: event type\nfilename::AbstractString: filename containing recorder events\nfilter_func::Union{Nothing, Function} = nothing: Optional function that accepts an event of type T and returns a Bool. Apply this function to each event and only return events where the result is true.\nexclude_columns = Set{String}(): Column names to exclude from the table\nkwargs: Passed to PrettyTables\n\nExamples\n\nshow_recorder_events(TestEvent, test_recorder.log)\nshow_recorder_events(TestEvent, test_recorder.log, x -> x.val2 > 2)\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.show_supplemental_attributes-Tuple{InfrastructureSystems.InfrastructureSystemsComponent}","page":"API","title":"InfrastructureSystems.show_supplemental_attributes","text":"show_supplemental_attributes(\n component::InfrastructureSystems.InfrastructureSystemsComponent\n)\n\n\nShow a table with supplemental attributes attached to the component.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.show_time_series-Tuple{Union{InfrastructureSystems.InfrastructureSystemsComponent, InfrastructureSystems.SupplementalAttribute}}","page":"API","title":"InfrastructureSystems.show_time_series","text":"show_time_series(\n owner::Union{InfrastructureSystems.InfrastructureSystemsComponent, InfrastructureSystems.SupplementalAttribute}\n)\n\n\nShow a table with time series data attached to the component.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.sql","page":"API","title":"InfrastructureSystems.sql","text":"sql(\n store::InfrastructureSystems.TimeSeriesMetadataStore,\n query::String\n) -> DataFrames.DataFrame\nsql(\n store::InfrastructureSystems.TimeSeriesMetadataStore,\n query::String,\n params\n) -> DataFrames.DataFrame\n\n\nRun a query and return the results in a DataFrame.\n\n\n\n\n\n","category":"function"},{"location":"InfrastructureSystems/#InfrastructureSystems.sql-2","page":"API","title":"InfrastructureSystems.sql","text":"sql(\n associations::InfrastructureSystems.SupplementalAttributeAssociations,\n query::String\n) -> DataFrames.DataFrame\nsql(\n associations::InfrastructureSystems.SupplementalAttributeAssociations,\n query::String,\n params\n) -> DataFrames.DataFrame\n\n\nRun a query and return the results in a DataFrame.\n\n\n\n\n\n","category":"function"},{"location":"InfrastructureSystems/#InfrastructureSystems.strip_module_name-Tuple{String}","page":"API","title":"InfrastructureSystems.strip_module_name","text":"strip_module_name(name::String) -> String\n\n\nStrips the module name off of a type. This can be useful to print types as strings and receive consistent results regardless of whether the user used import or using to load a package.\n\nUnlike Base.nameof, this function preserves any parametric types.\n\nExamples\n\njulia> strip_module_name(PowerSystems.RegulationDevice{ThermalStandard})\n\"RegulationDevice{ThermalStandard}\"\njulia> string(nameof(PowerSystems.RegulationDevice{ThermalStandard}))\n\"RegulationDevice\"\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.supertypes-Union{Tuple{Type{T}}, Tuple{T}, Tuple{Type{T}, Any}} where T","page":"API","title":"InfrastructureSystems.supertypes","text":"supertypes(::Type{T}) -> Vector{Any}\nsupertypes(::Type{T}, types) -> Any\n\n\nReturns an array of all super types of T.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.tail-Tuple{InfrastructureSystems.SingleTimeSeries}","page":"API","title":"InfrastructureSystems.tail","text":"tail(\n time_series::InfrastructureSystems.SingleTimeSeries\n) -> Any\n\n\nReturn a time_series with only the ending num values.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.test_generated_structs-Tuple{Any, Any}","page":"API","title":"InfrastructureSystems.test_generated_structs","text":"test_generated_structs(\n descriptor_file,\n existing_dir\n) -> Bool\n\n\nReturn true if the structs defined in existingdir match structs freshly-generated from descriptorfile.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.to-Tuple{InfrastructureSystems.SingleTimeSeries, Any}","page":"API","title":"InfrastructureSystems.to","text":"to(\n time_series::InfrastructureSystems.SingleTimeSeries,\n timestamp\n) -> InfrastructureSystems.SingleTimeSeries\n\n\nReturn a time_series truncated after timestamp.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.to_dict-Tuple{InfrastructureSystems.SystemData}","page":"API","title":"InfrastructureSystems.to_dict","text":"to_dict(\n data::InfrastructureSystems.SystemData\n) -> Dict{String, Any}\n\n\nSerialize all system and component data to a dictionary.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.to_json-Tuple{T} where T<:InfrastructureSystems.InfrastructureSystemsType","page":"API","title":"InfrastructureSystems.to_json","text":"to_json(\n obj::InfrastructureSystems.InfrastructureSystemsType;\n pretty,\n indent\n) -> Any\n\n\nSerializes a InfrastructureSystemsType to a JSON string.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.to_json-Union{Tuple{T}, Tuple{T, AbstractString}} where T<:InfrastructureSystems.InfrastructureSystemsType","page":"API","title":"InfrastructureSystems.to_json","text":"to_json(\n obj::InfrastructureSystems.InfrastructureSystemsType;\n pretty,\n indent\n) -> Any\n\n\nSerializes a InfrastructureSystemsType to a JSON file.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.to_records-Tuple{InfrastructureSystems.SupplementalAttributeAssociations}","page":"API","title":"InfrastructureSystems.to_records","text":"to_records(\n associations::InfrastructureSystems.SupplementalAttributeAssociations\n) -> Vector\n\n\nReturn all rows in the table as dictionaries.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.transform_single_time_series!-Tuple{InfrastructureSystems.SystemData, Type{<:InfrastructureSystems.DeterministicSingleTimeSeries}, Dates.Period, Dates.Period}","page":"API","title":"InfrastructureSystems.transform_single_time_series!","text":"transform_single_time_series!(\n data::InfrastructureSystems.SystemData,\n _::Type{<:InfrastructureSystems.DeterministicSingleTimeSeries},\n horizon::Dates.Period,\n interval::Dates.Period\n)\n\n\nTransform all instances of SingleTimeSeries to DeterministicSingleTimeSeries. If all SingleTimeSeries instances cannot be transformed then none will be.\n\nAny existing DeterministicSingleTimeSeries forecasts will be deleted even if the inputs are invalid.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.unregister_recorder!-Tuple{Symbol}","page":"API","title":"InfrastructureSystems.unregister_recorder!","text":"unregister_recorder!(name::Symbol; close_io) -> Any\n\n\nUnregister the recorder with this name and stop recording events.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.validate_exported_names-Tuple{Module}","page":"API","title":"InfrastructureSystems.validate_exported_names","text":"validate_exported_names(mod::Module) -> Bool\n\n\nReturn true if all publicly exported names in mod are defined.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.validate_struct-Tuple{InfrastructureSystems.InfrastructureSystemsType}","page":"API","title":"InfrastructureSystems.validate_struct","text":"validate_struct(\n ist::InfrastructureSystems.InfrastructureSystemsType\n) -> Bool\n\n\nValidates a struct using only information within the struct.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.when-Tuple{InfrastructureSystems.SingleTimeSeries, Function, Integer}","page":"API","title":"InfrastructureSystems.when","text":"when(\n time_series::InfrastructureSystems.SingleTimeSeries,\n period::Function,\n t::Integer\n) -> Any\n\n\nRefer to TimeSeries.when(). Underlying data is copied.\n\n\n\n\n\n","category":"method"},{"location":"InfrastructureSystems/#InfrastructureSystems.@assert_op-Tuple{Any}","page":"API","title":"InfrastructureSystems.@assert_op","text":"Throw an AssertionError if conditions like op(exp1, exp2) are false, where op is a conditional infix operator.\n\nExamples\n\njulia> a = 3; b = 4;\njulia> @assert_op a == b\nERROR: AssertionError: 3 == 4\n\njulia> @assert_op a + 3 > b + 4\nERROR: AssertionError: 6 > 8\n\n\n\n\n\n","category":"macro"},{"location":"InfrastructureSystems/#InfrastructureSystems.@record-Tuple{Any, Any}","page":"API","title":"InfrastructureSystems.@record","text":"Record an event if the recorder with name is enabled.\n\nArguments\n\nname::Symbol: name of recorder\nevent::AbstractRecorderEvent: event to record\n\nExamples\n\n@record simulation TestEvent(\"start\", 1, 2.0)\n\n\n\n\n\n","category":"macro"},{"location":"InfrastructureSystems/#InfrastructureSystems.@scoped_enum-Tuple{Any, Vararg{Any}}","page":"API","title":"InfrastructureSystems.@scoped_enum","text":"Macro to wrap Enum in a module to keep the top level scope clean.\n\nExamples\n\njulia> @scoped_enum Fruit APPLE = 1 ORANGE = 2\n\njulia> value = Fruit.APPLE\nFruit.APPLE = 1\n\njulia> value = Fruit(1)\nFruit.APPLE = 1\n\njulia> @scoped_enum(Fruit,\n APPLE = 1, # comment\n ORANGE = 2, # comment\n)\n\n\n\n\n\n","category":"macro"},{"location":"dev_guide/auto_generation/#Auto-Generation-of-Component-Structs","page":"Auto-Generation of Component Structs","title":"Auto-Generation of Component Structs","text":"","category":"section"},{"location":"dev_guide/auto_generation/","page":"Auto-Generation of Component Structs","title":"Auto-Generation of Component Structs","text":"InfrastructureSystems.jl provides a mechanism to auto-generate Julia files containing structs and field accessor functions from JSON descriptors. Here are reasons to consider using this approach:","category":"page"},{"location":"dev_guide/auto_generation/","page":"Auto-Generation of Component Structs","title":"Auto-Generation of Component Structs","text":"Auto-generation allows for easy refactoring of code. Adding fields to many structs can be tedious because you might have to edit many constructors. This process eliminates boiler-plate edits.\nThe JSON descriptor format includes a mechanism to define range validation on component fields. Validation can be enabled when adding components to a system.\nProvides consistent formatting of structs, fields, and constructors.\nProvides consistent documentation of structs and fields.","category":"page"},{"location":"dev_guide/auto_generation/#Instructions","page":"Auto-Generation of Component Structs","title":"Instructions","text":"","category":"section"},{"location":"dev_guide/auto_generation/","page":"Auto-Generation of Component Structs","title":"Auto-Generation of Component Structs","text":"Refer to the docstrings for generate_struct and generate_structs and generate the files from the REPL.","category":"page"},{"location":"dev_guide/auto_generation/","page":"Auto-Generation of Component Structs","title":"Auto-Generation of Component Structs","text":"Or","category":"page"},{"location":"dev_guide/auto_generation/","page":"Auto-Generation of Component Structs","title":"Auto-Generation of Component Structs","text":"Create or modify the JSON descriptor file. Follow the PowerSystems.jl example.\nRun the generation script, passing your descriptor file and an output directory.","category":"page"},{"location":"dev_guide/auto_generation/","page":"Auto-Generation of Component Structs","title":"Auto-Generation of Component Structs","text":"InfrastructureSystems.generate_structs(\n \"./src/descriptors/power_system_structs.json\",\n \"./src/models/generated\",\n)","category":"page"},{"location":"dev_guide/auto_generation/#Struct-Descriptor-Rules","page":"Auto-Generation of Component Structs","title":"Struct Descriptor Rules","text":"","category":"section"},{"location":"dev_guide/auto_generation/","page":"Auto-Generation of Component Structs","title":"Auto-Generation of Component Structs","text":"Each struct descriptor must define the following fields:","category":"page"},{"location":"dev_guide/auto_generation/","page":"Auto-Generation of Component Structs","title":"Auto-Generation of Component Structs","text":"struct_name: Name of struct\ndocstring: The docstring of the struct\nfields: Array of struct members. See below for requirements.\nsupertype: Declare the struct with this parent type.","category":"page"},{"location":"dev_guide/auto_generation/","page":"Auto-Generation of Component Structs","title":"Auto-Generation of Component Structs","text":"Required fields for each struct member:","category":"page"},{"location":"dev_guide/auto_generation/","page":"Auto-Generation of Component Structs","title":"Auto-Generation of Component Structs","text":"name: Name of field\ndata_type: Type of field","category":"page"},{"location":"dev_guide/auto_generation/","page":"Auto-Generation of Component Structs","title":"Auto-Generation of Component Structs","text":"Optional fields for each struct member:","category":"page"},{"location":"dev_guide/auto_generation/","page":"Auto-Generation of Component Structs","title":"Auto-Generation of Component Structs","text":"accessor_module: Set this if the getter/setter functions are reimplementing a method defined in a different module.\ncomment: Field comment\ndefault: The constructors will define this as a default value.\nexclude_setter: Do not generate a setter function for this field.\ninternal_default: Set to true for non-user-facing fields like InfrastructureSystemsInternal that have default values.\nneeds_conversion: Set to true if the getter and setter function needs to apply unit conversion. The type must implement\nget_value(::InfrastructureSystemsComponent, ::Type) and\nset_value(::InfrastructureSystemsComponent, ::Type) for this combination of component type and member type.\nnull_value: Value to indicate the value is null, such as 0.0 for floating point numbers. If all members in the struct define this field then a \"demo\" constructor will be generated. This allows you to enter val = MyType(nothing) in the REPL and see the layout of a struct without worrying about valid values.\nvalid_range: Define this as a Dict with min and max and InfrastructureSystems.jl will validate any value against that range when you add the component to the system. Use null if one doesn't apply, such as if there is no max limit.\nvalidation_action: Define this as error or warn. If it is error then InfrastructureSystems.jl will raise an exception if the validation code detects a problem. Otherwise, it will log a warning.","category":"page"},{"location":"dev_guide/auto_generation/","page":"Auto-Generation of Component Structs","title":"Auto-Generation of Component Structs","text":"Notes:","category":"page"},{"location":"dev_guide/auto_generation/","page":"Auto-Generation of Component Structs","title":"Auto-Generation of Component Structs","text":"You will need to decide how to manage the generated files. The Sienna packages keep the generated code in the git repository. This is not required. You could choose to generate them at startup.\nYou may need to create custom constructors and this approach will not allow you to put them in the same file as the struct definition.","category":"page"},{"location":"dev_guide/components_and_container/#Managing-Components","page":"Managing Components","title":"Managing Components","text":"","category":"section"},{"location":"dev_guide/components_and_container/","page":"Managing Components","title":"Managing Components","text":"InfrastructureSystems.jl provides a common way of managing component structs in a system.","category":"page"},{"location":"dev_guide/components_and_container/#Type-hierachy","page":"Managing Components","title":"Type hierachy","text":"","category":"section"},{"location":"dev_guide/components_and_container/","page":"Managing Components","title":"Managing Components","text":"Make every component a subtype of InfrastructureSystemsComponent.","category":"page"},{"location":"dev_guide/components_and_container/#InfrastructureSystemsInternal","page":"Managing Components","title":"InfrastructureSystemsInternal","text":"","category":"section"},{"location":"dev_guide/components_and_container/","page":"Managing Components","title":"Managing Components","text":"Add this struct to every component struct.","category":"page"},{"location":"dev_guide/components_and_container/","page":"Managing Components","title":"Managing Components","text":"It automatically creates a UUID for the component. This guarantees a unique way to identify the component.\nIt optionally provides an extension dictionary for user data. A user extending your package may want to use your struct but need one more field. Rather than create a new type they can add data to this ext object.","category":"page"},{"location":"dev_guide/components_and_container/#Instructions-to-implement-a-Component","page":"Managing Components","title":"Instructions to implement a Component","text":"","category":"section"},{"location":"dev_guide/components_and_container/","page":"Managing Components","title":"Managing Components","text":"Add the field to your struct. The constructor does not take any parameters.","category":"page"},{"location":"dev_guide/components_and_container/","page":"Managing Components","title":"Managing Components","text":"struct MyComponent\n internal::InfrastructureSystemsInternal\nend\n\n# Optional\nget_ext(c::MyComponent) = InfrastructureSystems.get_ext(c.ext)\nclear_ext!(c::MyComponent) = InfrastructureSystems.clear_ext(c.ext)","category":"page"},{"location":"dev_guide/components_and_container/","page":"Managing Components","title":"Managing Components","text":"Implement this function with true or false depending on whether your component type will support time series data. The default method returns false.","category":"page"},{"location":"dev_guide/components_and_container/","page":"Managing Components","title":"Managing Components","text":"supports_time_series(::MyComponent) = true","category":"page"},{"location":"dev_guide/components_and_container/","page":"Managing Components","title":"Managing Components","text":"Implement this function with true or false depending on whether your component type will support supplemental attributes. The default method returns true.","category":"page"},{"location":"dev_guide/components_and_container/","page":"Managing Components","title":"Managing Components","text":"supports_supplemental_attributes(::MyComponent) = true","category":"page"},{"location":"dev_guide/components_and_container/","page":"Managing Components","title":"Managing Components","text":"Notes:","category":"page"},{"location":"dev_guide/components_and_container/","page":"Managing Components","title":"Managing Components","text":"InfrastructureSystems.get_uuid with argument obj::InfrastructureSystemsComponent returns the component UUID.\nThe extension dictionary is not created until the first time get_ext is called.","category":"page"},{"location":"dev_guide/components_and_container/#Interface-requirements","page":"Managing Components","title":"Interface requirements","text":"","category":"section"},{"location":"dev_guide/components_and_container/","page":"Managing Components","title":"Managing Components","text":"Implement these methods for every struct.","category":"page"},{"location":"dev_guide/components_and_container/","page":"Managing Components","title":"Managing Components","text":"get_internal(c::MyComponent)::InfrastructureSystemsInternal\nget_name(c::MyComponent)::String","category":"page"},{"location":"dev_guide/components_and_container/","page":"Managing Components","title":"Managing Components","text":"If the struct supports time series (default is false):","category":"page"},{"location":"dev_guide/components_and_container/","page":"Managing Components","title":"Managing Components","text":"supports_time_series(::MyComponent) = true","category":"page"},{"location":"dev_guide/components_and_container/#Component-Container","page":"Managing Components","title":"Component Container","text":"","category":"section"},{"location":"dev_guide/components_and_container/","page":"Managing Components","title":"Managing Components","text":"InfrastructureSystems.jl provides the SystemData struct to store a collection of components.","category":"page"},{"location":"dev_guide/components_and_container/","page":"Managing Components","title":"Managing Components","text":"It is recommended but not required that you include this struct within your own system struct for these reasons:","category":"page"},{"location":"dev_guide/components_and_container/","page":"Managing Components","title":"Managing Components","text":"Provides search and iteration with InfrastructureSystems.get_component and InfrastructureSystems.get_components for abstract and concrete types.\nEnforces name uniqueness within a concrete type.\nAllows for component field validation.\nEnables component JSON serialization and deserialization.","category":"page"},{"location":"dev_guide/components_and_container/#Instructions-on-how-to-use-the-SystemData-container","page":"Managing Components","title":"Instructions on how to use the SystemData container","text":"","category":"section"},{"location":"dev_guide/components_and_container/","page":"Managing Components","title":"Managing Components","text":"Add an instance of SystemData to your system struct.\nOptionally pass a component validation descriptor file to the constructor.\nOptionally pass time_series_in_memory = true to the constructor if you know that all time series data will fit in memory and want a performance boost.\nRedirect these function calls to your instance of SystemData.","category":"page"},{"location":"dev_guide/components_and_container/","page":"Managing Components","title":"Managing Components","text":"add_component!\nremove_component!\nget_component\nget_components\nget_components_by_name\nadd_time_series!","category":"page"},{"location":"dev_guide/components_and_container/#Importing-InfrastructureSystems-methods","page":"Managing Components","title":"Importing InfrastructureSystems methods","text":"","category":"section"},{"location":"dev_guide/components_and_container/","page":"Managing Components","title":"Managing Components","text":"It is recommended that you perform redirection on methods that act on SystemData so that those methods don't show up in Julia help or in methods output. For example:","category":"page"},{"location":"dev_guide/components_and_container/","page":"Managing Components","title":"Managing Components","text":"get_time_series_resolution(sys::MySystem) =\n InfrastructureSystems.get_time_series_resolution(sys.data)","category":"page"},{"location":"dev_guide/components_and_container/","page":"Managing Components","title":"Managing Components","text":"On the other hand, it is recommended that you import methods that act on an InfrastructureSystemsComponent into your package's namespace so that you don't have to duplicate docstrings and perform redirection. For example:","category":"page"},{"location":"dev_guide/components_and_container/","page":"Managing Components","title":"Managing Components","text":"import InfrastructureSystems: get_time_series","category":"page"},{"location":"dev_guide/time_series/#Time-Series-Data","page":"Time Series Data","title":"Time Series Data","text":"","category":"section"},{"location":"dev_guide/time_series/","page":"Time Series Data","title":"Time Series Data","text":"InfrastructureSystems.jl implements containers and routines to efficiently manage time series data. This document contains content for developers of new time series data. For the usage please refer to the documentation in PowerSystems.jl.","category":"page"},{"location":"dev_guide/time_series/","page":"Time Series Data","title":"Time Series Data","text":"InfrastructureSystems.jl provides a mechanism to store time series data for components. Here are reasons to consider using it:","category":"page"},{"location":"dev_guide/time_series/","page":"Time Series Data","title":"Time Series Data","text":"Time series data, by default, is stored independently of components in HDF5 files. Components store references to that data.\nSystem memory is not depleted by loading all time series data at once. Only data that you need is loaded.\nMultiple components can share the same time series data by sharing references instead of making expensive copies.\nSupports serialization and deserialization.\nSupports parsing raw data files of several formats as well as data stored in TimeSeries.TimeArray and DataFrames.DataFrame objects.","category":"page"},{"location":"dev_guide/time_series/","page":"Time Series Data","title":"Time Series Data","text":"Your package must reimplement a deepcopy method if you use HDF5 storage for TimeSeriesData.","category":"page"},{"location":"dev_guide/time_series/","page":"Time Series Data","title":"Time Series Data","text":"If you store an instance of InfrastructureSystems.SystemData within your system and then a user calls deepcopy on a system, the .h5 file will not be copied. The new and old instances will have references to the same file. You will need to reimplement deepcopy to handle this. One solution is to serialize and then deserialize the system.","category":"page"},{"location":"dev_guide/time_series/","page":"Time Series Data","title":"Time Series Data","text":"Notes:","category":"page"},{"location":"dev_guide/time_series/","page":"Time Series Data","title":"Time Series Data","text":"Time series data can optionally be stored fully in memory. Refer to the InfrastructureSystems.SystemData documentation.\nInfrastructureSystems.jl creates HDF5 files on the tmp filesystem by default, using the location obtained from tempdir(). This can be changed if the time series data is larger than the amount of tmp space available. Refer to the InfrastructureSystems.SystemData link above.\nBy default, the call to add_time_series! will open the .h5 file, write the data to the file, and close the file. Opening and closing the file has overhead. If you will add thousands of time series arrays, consider using open_time_series_store! to add all the arrays with one file handle.","category":"page"},{"location":"dev_guide/time_series/#Instructions","page":"Time Series Data","title":"Instructions","text":"","category":"section"},{"location":"dev_guide/time_series/","page":"Time Series Data","title":"Time Series Data","text":"Ensure that supports_time_series(::MyComponent) returns true for the struct. It may be implemented on a supertype of the struct.","category":"page"},{"location":"dev_guide/time_series/#Data-Format","page":"Time Series Data","title":"Data Format","text":"","category":"section"},{"location":"dev_guide/time_series/","page":"Time Series Data","title":"Time Series Data","text":"Time series arrays are stored in an HDF5 file according the format described here.","category":"page"},{"location":"dev_guide/time_series/","page":"Time Series Data","title":"Time Series Data","text":"The root path /time_series defines these HDF5 attributes to control deserialization:","category":"page"},{"location":"dev_guide/time_series/","page":"Time Series Data","title":"Time Series Data","text":"data_format_version: Designates the InfrastructureSystems format for the file.\ncompression_enabled: Specifies whether compression is enabled and will be used for new time series.\ncompression_type: Specifies the type of compression being used.\ncompression_level: Specifies the level of compression being used.\ncompression_shuffle: Specifies whether the shuffle filter is being used.","category":"page"},{"location":"dev_guide/time_series/","page":"Time Series Data","title":"Time Series Data","text":"Each time series array is stored in an HDF5 group named with the array's UUID. Each group contains a dataset called data which contains the actual data. Each group also contains a group called component_references which contains an HDF5 attribute for each component reference. The component reference uses the format __.","category":"page"},{"location":"dev_guide/time_series/","page":"Time Series Data","title":"Time Series Data","text":"Each time series group defines attributes that control how the data will be deserialized into a TimeSeriesData instance.","category":"page"},{"location":"dev_guide/time_series/","page":"Time Series Data","title":"Time Series Data","text":"initial_timestamp: Defines the first timestamp of the array. (All times are not stored.)\nresolution: Resolution of the time series in milliseconds.\ntype: Type of the time series. Subtype of TimeSeriesData.\nmodule: Module that defines the type of the time series.\ndata_type: Describes the type of the array stored.","category":"page"},{"location":"dev_guide/time_series/","page":"Time Series Data","title":"Time Series Data","text":"Example:","category":"page"},{"location":"dev_guide/time_series/","page":"Time Series Data","title":"Time Series Data","text":"/time_series\n data_format_version = \"1.0.1\"\n compression_enabled = 1\n /9f02f706-3394-4af3-8084-8903d302cbba\n /component_references\n 0b6ecb61-8e8d-4563-b795-f001246c3ea5__max_active_power\n 613ddbc2-b666-4c9d-adb5-fa69e7f40a95__max_active_power\n /data","category":"page"},{"location":"dev_guide/time_series/#Debugging","page":"Time Series Data","title":"Debugging","text":"","category":"section"},{"location":"dev_guide/time_series/","page":"Time Series Data","title":"Time Series Data","text":"The HDF Group provides tools to inspect and manipulate files. Refer to their website.","category":"page"},{"location":"dev_guide/time_series/","page":"Time Series Data","title":"Time Series Data","text":"HDFView is especially useful for viewing data. Note that using h5ls and h5dump in a terminal combined with UNIX tools like grep can sometimes be faster.","category":"page"},{"location":"dev_guide/time_series/#Maintenance","page":"Time Series Data","title":"Maintenance","text":"","category":"section"},{"location":"dev_guide/time_series/","page":"Time Series Data","title":"Time Series Data","text":"If you delete time series arrays in your system you may notice that the actual size of the HDF5 does not decrease. The only way to recover this space is to build a new file with only the active objects. The HDF5 tools package provides the tool h5repack for this purpose.","category":"page"},{"location":"dev_guide/time_series/","page":"Time Series Data","title":"Time Series Data","text":"$ h5repack time_series.h5 new.h5\n$ mv new.h5 time_series.h5","category":"page"},{"location":"dev_guide/logging/#Logging","page":"Logging","title":"Logging","text":"","category":"section"},{"location":"dev_guide/logging/","page":"Logging","title":"Logging","text":"InfrastructureSystems.jl provides a MultiLogger object that allows customized logging to console and file. Refer to the logging documentation.","category":"page"},{"location":"dev_guide/logging/","page":"Logging","title":"Logging","text":"If you want to create a package-specific log file during a simulation, consider the workflow used by PowerSimulations.jl. It creates a custom logger in its build!(Simulation) function and then uses Julia's Logging.with_logger function to temporarily take over the global logger during build() and execute().","category":"page"},{"location":"dev_guide/logging/","page":"Logging","title":"Logging","text":"This document describes logging facilities available in the modules that use InfrastructureSystems.jl. The examples assume the following imports:","category":"page"},{"location":"dev_guide/logging/","page":"Logging","title":"Logging","text":"import Logging\nimport InfrastructureSystems:\n configure_logging,\n open_file_logger,\n MultiLogger,\n LogEventTracker,\n make_logging_config_file,\n report_log_summary","category":"page"},{"location":"dev_guide/logging/","page":"Logging","title":"Logging","text":"Note: Packages that depend on InfrastructureSystems.jl already re-export configure_logging, open_file_logger, MultiLogger, LogEventTracker","category":"page"},{"location":"dev_guide/logging/#Use-Cases","page":"Logging","title":"Use Cases","text":"","category":"section"},{"location":"dev_guide/logging/#Enable-logging-in-REPL-or-Jupyter-Notebook","page":"Logging","title":"Enable logging in REPL or Jupyter Notebook","text":"","category":"section"},{"location":"dev_guide/logging/","page":"Logging","title":"Logging","text":"Use InfrastructureSystems.configure_logging to create a logger with your preferences (console and/or file, levels, etc.).","category":"page"},{"location":"dev_guide/logging/","page":"Logging","title":"Logging","text":"Note: log messages are not automatically flushed to files. Call flush(logger) to make this happen.","category":"page"},{"location":"dev_guide/logging/","page":"Logging","title":"Logging","text":"Example: Global logger configuration","category":"page"},{"location":"dev_guide/logging/","page":"Logging","title":"Logging","text":"logger = configure_logging(; filename = \"log.txt\")\n@info \"hello world\"\nflush(logger)\n@error \"some error\"\nclose(logger)","category":"page"},{"location":"dev_guide/logging/","page":"Logging","title":"Logging","text":"You can also configure logging from a configuration file.","category":"page"},{"location":"dev_guide/logging/","page":"Logging","title":"Logging","text":"make_logging_config_file(\"logging_config.toml\")\n# Customize in an editor.\nlogger = configure_logging(\"logging_config.toml\")","category":"page"},{"location":"dev_guide/logging/#Enable-debug-logging-for-code-you-are-debugging-but-not-for-noisy-areas-you-don't-care-about.","page":"Logging","title":"Enable debug logging for code you are debugging but not for noisy areas you don't care about.","text":"","category":"section"},{"location":"dev_guide/logging/","page":"Logging","title":"Logging","text":"InfrastructureSystems uses the _group field of a log event to perform additional filtering. All debug log messages that run frequently should have this field defined.","category":"page"},{"location":"dev_guide/logging/","page":"Logging","title":"Logging","text":"Note that the default value of _group for a log event is its filename. Refer to the Julia docs for more information.","category":"page"},{"location":"dev_guide/logging/","page":"Logging","title":"Logging","text":"Run this in the REPL to see commonly-used groups in InfrastructureSystems:","category":"page"},{"location":"dev_guide/logging/","page":"Logging","title":"Logging","text":"@show InfrastructureSystems.LOG_GROUPS","category":"page"},{"location":"dev_guide/logging/","page":"Logging","title":"Logging","text":"You can tell InfrastructureSystems to filter out messages from a particular group in two ways:","category":"page"},{"location":"dev_guide/logging/","page":"Logging","title":"Logging","text":"Specify the group level in the logging_config.toml file mentioned above and configure logging with it.\nChange the logger dynamically from with Julia. Here is an example:","category":"page"},{"location":"dev_guide/logging/","page":"Logging","title":"Logging","text":"logger = configure_logging(; console_level = Logging.Debug)\nInfrastructureSystems.set_group_level!(\n logger,\n InfrastructureSystems.LOG_GROUP_TIME_SERIES,\n Logging.Info,\n)\n\n# Or many at once.\nInfrastructureSystems.set_group_levels!(\n logger,\n Dict(\n InfrastructureSystems.LOG_GROUP_SERIALIZATION => Logging.Info,\n InfrastructureSystems.LOG_GROUP_TIME_SERIES => Logging.Info,\n ),\n)\n\n# Get current settings\nInfrastructureSystems.get_group_levels(logger)\nInfrastructureSystems.get_group_level(logger, InfrastructureSystems.LOG_GROUP_TIME_SERIES)","category":"page"},{"location":"dev_guide/logging/#Log-to-console-and-file-in-an-application-or-unit-test-environment","page":"Logging","title":"Log to console and file in an application or unit test environment","text":"","category":"section"},{"location":"dev_guide/logging/","page":"Logging","title":"Logging","text":"Create a MultiLogger from TerminalLoggers.TerminalLogger and Logging.SimpleLogger. Use open_file_logger to guarantee that all messages get flushed to the file.","category":"page"},{"location":"dev_guide/logging/","page":"Logging","title":"Logging","text":"Note that you can use Logging.ConsoleLogger if you don't have TerminalLoggers installed.","category":"page"},{"location":"dev_guide/logging/","page":"Logging","title":"Logging","text":"Example Multilogger configuration","category":"page"},{"location":"dev_guide/logging/","page":"Logging","title":"Logging","text":"console_logger = TerminalLogger(stderr, Logging.Error)\n\nopen_file_logger(\"log.txt\", Logging.Info) do file_logger\n multi_logger = MultiLogger([console_logger, file_logger])\n global_logger(multi_logger)\n\n do_stuff()\nend","category":"page"},{"location":"dev_guide/logging/","page":"Logging","title":"Logging","text":"Note: If someone may execute the code in the REPL then wrap that code in a try/finally block and reset the global logger upon exit.","category":"page"},{"location":"dev_guide/logging/","page":"Logging","title":"Logging","text":"function run_tests()\n console_logger = TerminalLogger(stderr, Logging.Error)\n\n open_file_logger(\"log.txt\", Logging.Info) do file_logger\n multi_logger = MultiLogger([console_logger, file_logger])\n global_logger(multi_logger)\n\n do_stuff()\n end\nend\n\nlogger = global_logger()\n\ntry\n run_tests()\nfinally\n # Guarantee that the global logger is reset.\n global_logger(logger)\n nothing\nend","category":"page"},{"location":"dev_guide/logging/#Suppress-frequent-messages","page":"Logging","title":"Suppress frequent messages","text":"","category":"section"},{"location":"dev_guide/logging/","page":"Logging","title":"Logging","text":"The standard Logging module in Julia provides a method to suppress messages. Tag the log message with maxlog = X.","category":"page"},{"location":"dev_guide/logging/","page":"Logging","title":"Logging","text":"for i in range(1; length = 100)\n @error \"something happened\" i maxlog = 2\nend","category":"page"},{"location":"dev_guide/logging/","page":"Logging","title":"Logging","text":"Only 2 messages will get logged.","category":"page"},{"location":"dev_guide/logging/","page":"Logging","title":"Logging","text":"The InfrastructureSystems logger provides a customization to make maxlog apply to a period of time instead of the duration of the Julia process.","category":"page"},{"location":"dev_guide/logging/","page":"Logging","title":"Logging","text":"In this example the suppression will timeout and two messages will get logged every five seconds. It will log how many log messages were suppressed on the first message that gets logged after a timeout.","category":"page"},{"location":"dev_guide/logging/","page":"Logging","title":"Logging","text":"for i in range(1; length = 100)\n @error \"something happened\" i maxlog = 2 _suppression_period = 5\n sleep(0.5)\nend","category":"page"},{"location":"dev_guide/logging/#Get-a-summary-of-log-messages","page":"Logging","title":"Get a summary of log messages","text":"","category":"section"},{"location":"dev_guide/logging/","page":"Logging","title":"Logging","text":"By default a MultiLogger creates a LogEventTracker that keeps counts of all messages. Call report_log_summary after execution.","category":"page"},{"location":"dev_guide/logging/","page":"Logging","title":"Logging","text":"logger = configure_logging(; filename = \"log.txt\")\n@info \"hello world\"\n\n# Include a summary in the log file.\n@info report_log_summary(logger)\nclose(logger)","category":"page"},{"location":"dev_guide/logging/","page":"Logging","title":"Logging","text":"The output of the logger can be explored in the REPL:","category":"page"},{"location":"dev_guide/logging/","page":"Logging","title":"Logging","text":"for i in range(1; length = 100)\n @info \"hello\" maxlog = 2\n @warn \"beware\" maxlog = 2\nend\n@info report_log_summary(logger)","category":"page"},{"location":"#InfrastructureSystems.jl","page":"Welcome Page","title":"InfrastructureSystems.jl","text":"","category":"section"},{"location":"","page":"Welcome Page","title":"Welcome Page","text":"CurrentModule = InfrastructureSystems","category":"page"},{"location":"#Overview","page":"Welcome Page","title":"Overview","text":"","category":"section"},{"location":"","page":"Welcome Page","title":"Welcome Page","text":"InfrastructureSystems.jl is a Julia package that provides data management services and common utility software for the packages in NREL's Sienna Initiative. This package is meant for module development. It is used primarily by PowerSystems.jl and PowerSimulations.jl but is written to be extensible for other kinds of infrastructure models.","category":"page"},{"location":"","page":"Welcome Page","title":"Welcome Page","text":"This document describes how to integrate it with other packages.","category":"page"},{"location":"#Installation","page":"Welcome Page","title":"Installation","text":"","category":"section"},{"location":"","page":"Welcome Page","title":"Welcome Page","text":"The latest stable release of InfrastructureSystems.jl can be installed using the Julia package manager with","category":"page"},{"location":"","page":"Welcome Page","title":"Welcome Page","text":"] add InfrastructureSystems","category":"page"},{"location":"","page":"Welcome Page","title":"Welcome Page","text":"For the current development version, \"checkout\" this package with","category":"page"},{"location":"","page":"Welcome Page","title":"Welcome Page","text":"] add InfrastructureSystems#master","category":"page"},{"location":"#Usage","page":"Welcome Page","title":"Usage","text":"","category":"section"},{"location":"","page":"Welcome Page","title":"Welcome Page","text":"InfrastructureSystems.jl does not export any method or struct by design. For detailed use of InfrastructureSystems.jl visit the API section of the documentation.","category":"page"},{"location":"","page":"Welcome Page","title":"Welcome Page","text":"InfrastructureSystems.jl provides several utilities for the development of packages, the documentation includes several guides for developers","category":"page"},{"location":"","page":"Welcome Page","title":"Welcome Page","text":"Pages = [\n \"dev_guide/components_and_container.md\",\n \"dev_guide/auto_generation.md\",\n \"dev_guide/time_series.md\",\n \"dev_guide/recorder.md\",\n \"dev_guide/tests.md\",\n \"dev_guide/logging.md\"\n]\nDepth = 1","category":"page"},{"location":"","page":"Welcome Page","title":"Welcome Page","text":"","category":"page"},{"location":"","page":"Welcome Page","title":"Welcome Page","text":"InfrastructureSystems has been developed as part of the Scalable Integrated Infrastructure Planning (SIIP) initiative at the U.S. Department of Energy's National Renewable Energy Laboratory (NREL)","category":"page"},{"location":"dev_guide/recorder/#Recorder-Events","page":"Recorder Events","title":"Recorder Events","text":"","category":"section"},{"location":"dev_guide/recorder/","page":"Recorder Events","title":"Recorder Events","text":"InfrastructureSystems.jl provides a mechanism to store structured data in events that get recorded in one or more files. They can be filtered and displayed in tabular form.","category":"page"},{"location":"dev_guide/recorder/","page":"Recorder Events","title":"Recorder Events","text":"The primary use is to store information that can help debug problems and it is largely used in PowerSimulations.jl. For example, you may want to store all state transitions in a simulation or every update of a variable. If a problem occurs you can then display filtered tables of that data to figure out what went wrong.","category":"page"},{"location":"dev_guide/recorder/#Instructions","page":"Recorder Events","title":"Instructions","text":"","category":"section"},{"location":"dev_guide/recorder/","page":"Recorder Events","title":"Recorder Events","text":"Create events that are subtypes of InfrastructureSystems.AbstractRecorderEvent. Include an instance of RecorderEventCommon in each struct.\nCall InfrastructureSystems.register_recorder! with arguments recorder-name for each recorder object you want to create.\nDepending on how often your code create events you may want to make this conditional. You may only need it for debug runs.\nPowerSimulations creates one recorder for simulation step and stage start/stop events that is always enabled. It creates another that is optional but used for frequently-generated events.\nCall @InfrastructureSystems.record with arguments recorder-name event wherever you want to generate events in your code. The event will only get constructed if the recorder is registered.\nCall InfrastructureSystems.unregister_recorder! with arguments recorder-name for each registered recorder. You should guarantee this gets called, even if an exception is thrown. Otherwise, the file may not get flushed and closed.\nAfter your code runs call InfrastructureSystems.show_recorder_events to view events. Refer to the docstrings for more information.\nRefer to PowerSimulations.show_simulation_events for an example on how to customize this behavior for your package.","category":"page"},{"location":"dev_guide/tests/#Running-Tests","page":"Running Tests","title":"Running Tests","text":"","category":"section"},{"location":"dev_guide/tests/#Standard-test-execution","page":"Running Tests","title":"Standard test execution","text":"","category":"section"},{"location":"dev_guide/tests/","page":"Running Tests","title":"Running Tests","text":"Unit tests can be executed in the REPL by executing the following:","category":"page"},{"location":"dev_guide/tests/","page":"Running Tests","title":"Running Tests","text":"julia> ] test","category":"page"},{"location":"dev_guide/tests/#Interactive-test-execution","page":"Running Tests","title":"Interactive test execution","text":"","category":"section"},{"location":"dev_guide/tests/","page":"Running Tests","title":"Running Tests","text":"While developing code and tests it can be convenient to run a subset of tests. You can do this with a combination of TestEnv.jl and ReTest.jl.","category":"page"},{"location":"dev_guide/tests/","page":"Running Tests","title":"Running Tests","text":"Note: Per recommendations from the developers of TestEnv.jl, install the package in your global julia environment. Do the same for Revise.jl.","category":"page"},{"location":"dev_guide/tests/","page":"Running Tests","title":"Running Tests","text":"$ julia\njulia> ]\n(@v1.10) pkg> add TestEnv Revise","category":"page"},{"location":"dev_guide/tests/","page":"Running Tests","title":"Running Tests","text":"Start the environment with the InfrastructureSystems.jl environment.","category":"page"},{"location":"dev_guide/tests/","page":"Running Tests","title":"Running Tests","text":"$ julia --project","category":"page"},{"location":"dev_guide/tests/","page":"Running Tests","title":"Running Tests","text":"Load the test environment.","category":"page"},{"location":"dev_guide/tests/","page":"Running Tests","title":"Running Tests","text":"julia> using TestEnv\njulia> TestEnv.activate()","category":"page"},{"location":"dev_guide/tests/","page":"Running Tests","title":"Running Tests","text":"Load the tests through ReTest.jl and Revise.jl.","category":"page"},{"location":"dev_guide/tests/","page":"Running Tests","title":"Running Tests","text":"julia> include(\"test/load_tests.jl\")","category":"page"},{"location":"dev_guide/tests/","page":"Running Tests","title":"Running Tests","text":"Run all tests.","category":"page"},{"location":"dev_guide/tests/","page":"Running Tests","title":"Running Tests","text":"julia> run_tests()","category":"page"},{"location":"dev_guide/tests/","page":"Running Tests","title":"Running Tests","text":"Run a subset of tests with a regular expression. This pattern matches multiple testset definitions. The run_tests function forwards all arguments and keyword arguments to ReTest.retest.","category":"page"},{"location":"dev_guide/tests/","page":"Running Tests","title":"Running Tests","text":"julia> run_tests(r\"Test.*components\")","category":"page"},{"location":"dev_guide/tests/","page":"Running Tests","title":"Running Tests","text":"Refer to the ReTest documentation for more information.","category":"page"},{"location":"dev_guide/tests/#Change-logging-levels","page":"Running Tests","title":"Change logging levels","text":"","category":"section"},{"location":"dev_guide/tests/","page":"Running Tests","title":"Running Tests","text":"julia> InfrastructureSystems.make_logging_config_file(\"logging_config.toml\")\njulia> ENV[\"SIENNA_LOGGING_CONFIG\"] = \"logging_config.toml\"","category":"page"},{"location":"dev_guide/tests/","page":"Running Tests","title":"Running Tests","text":"Edit the file to suit your preferences and rerun.","category":"page"},{"location":"dev_guide/tests/","page":"Running Tests","title":"Running Tests","text":"julia> run_tests()","category":"page"},{"location":"dev_guide/tests/","page":"Running Tests","title":"Running Tests","text":"Note that you can filter out noisy log groups in this file.","category":"page"},{"location":"dev_guide/tests/#Noisy-log-messages","page":"Running Tests","title":"Noisy log messages","text":"","category":"section"},{"location":"dev_guide/tests/","page":"Running Tests","title":"Running Tests","text":"The unit test module appends a summary of all log message counts to the log file. If a message is logged too frequently then consider tagging that message with maxlog=X to suppress it.","category":"page"}] } diff --git a/dev/style/index.html b/dev/style/index.html index d72153072..d79a38403 100644 --- a/dev/style/index.html +++ b/dev/style/index.html @@ -16,4 +16,4 @@ foo = 2

Good:

    x = 1
     foo = 2
  • Define abstract types on one line. Given the lack of IDE support for Julia, this makes it easier to find type definitions.

Bad:

    abstract type
         Foo
-    end

Good:

    abstract type Foo end

All Sienna packages perform tests using JuliaFormatter if you are unsure of your format, you can run julia -e 'using JuliaFormatter; include(".github/workflows/formatter_code.jl")' at the root of the package. Make sure to have the latest version of JuliaFormatter in your main environment

+ end

Good:

    abstract type Foo end

All Sienna packages perform tests using JuliaFormatter if you are unsure of your format, you can run julia -e 'using JuliaFormatter; include(".github/workflows/formatter_code.jl")' at the root of the package. Make sure to have the latest version of JuliaFormatter in your main environment