plans.datasets.chrono#

Classes for handling chronological (time series) datasets.

Classes

DischargeSeries([name, alias])

A class for representing and working with discharge time series data (volumentric flow).

ETSeries([name, alias])

A class for representing and working with ET data.

PETSeries([name, alias])

A class for representing and working with PET data.

RainSeries([name, alias])

A class for representing and working with rainfall time series data.

RainSeriesSamples([name])

StageSeries([name, alias])

A class for representing and working with river stage time series data.

StageSeriesCollection([name])

StreamflowSeries([name, alias])

A class for representing and working with streamflow data (specific flow).

TemperatureSeries([name, alias])

A class for representing and working with temperature time series data.

TemperatureSeriesSamples([name])

WaterBalanceSeries([name, alias])

class plans.datasets.chrono.WaterBalanceSeries(name='MyWaterBalanceSeries', alias=None)[source]#

Bases: TimeSeries

__init__(name='MyWaterBalanceSeries', alias=None)[source]#
static view_pq_plot(ts_rain, ts_flow, specs, show=True, return_fig=False)[source]#
class plans.datasets.chrono.RainSeries(name='MyRainSeries', alias=None)[source]#

Bases: WaterBalanceSeries

A class for representing and working with rainfall time series data.

Notes

todo notes

Examples

todo examples

__init__(name='MyRainSeries', alias=None)[source]#
interpolate_gaps(inplace=False, method=None)[source]#

Fills gaps in a time series using various interpolation methods.

Parameters:
  • method (str) – Specifies the interpolation method. The default value is linear.

  • constant (float) – The constant value used when the constant method is selected. Default value = 0.

  • inplace (bool) – If True, modifies the original DataFrame in-place. Default value = False.

Returns:

A new pandas.DataFrame with interpolated values and an is_interpolation flag column (1 where the value was filled by interpolation, 0 where it was already present) if inplace is False, otherwise None.

Return type:

pandas.DataFrame or None

Notes

This function handles time series data, standardizing it if necessary before performing interpolation. The process is applied to each unique epoch within the series.

  • linear: linear interpolation

  • nearest: uses the value of the closest data point.

  • zero: fills gaps with zeros.

  • constant: fills gaps with a constant value provided in method parameter

  • slinear: first order spline interpolation

  • quadratic: second order spline interpolation

  • cubic: third order spline interpolation

_set_frequency()[source]#

Infer the datetime frequency of the time series from the spacing between consecutive timestamps.

The mode (most common value) of consecutive timestamp deltas is used to determine the frequency, rather than checking which calendar components (seconds, minutes, hours, …) vary across the series. This makes detection robust to a small minority of jittered or missing timestamps: as long as the majority of gaps between consecutive records share the same spacing, that spacing wins, even if a few records are irregular.

Sets self.dtfreq to one of the supported Pandas-like frequency aliases ("1min", "20min", "h", "D", "MS", "YS") based on which boundary the modal delta falls into, and self.dtres to the corresponding resolution label ("second", "minute", "hour", "day", "month", "year").

For "MS" and "YS" frequencies, self.gapsize is also forced to 1, since a single missing month or year is already a meaningful gap at that resolution.

Note

Detection is based on the majority delta, not a strict consistency check. If irregular spacing accounts for more than half of the deltas in the series, the detected frequency will reflect that majority rather than the “intended” sampling rate. Always sanity-check self.dtfreq after loading unfamiliar or untrusted data.

Returns:

None. Updates self.dtfreq, self.dtres, and possibly self.gapsize in place.

Return type:

None

class plans.datasets.chrono.StreamflowSeries(name='MyStreaFlowSeries', alias=None)[source]#

Bases: WaterBalanceSeries

A class for representing and working with streamflow data (specific flow).

Notes

todo notes

Examples

todo examples

__init__(name='MyStreaFlowSeries', alias=None)[source]#
get_baseflow()[source]#
static separate_baseflow(df, dt_field='datetime', var_field='q')[source]#
class plans.datasets.chrono.ETSeries(name='MyETSeries', alias=None)[source]#

Bases: WaterBalanceSeries

A class for representing and working with ET data.

Notes

todo notes

Examples

todo examples

__init__(name='MyETSeries', alias=None)[source]#
class plans.datasets.chrono.PETSeries(name='MyPETSeries', alias=None)[source]#

Bases: WaterBalanceSeries

A class for representing and working with PET data.

Notes

todo notes

Examples

todo examples

__init__(name='MyPETSeries', alias=None)[source]#
class plans.datasets.chrono.TemperatureSeries(name='MyTemperatureSeries', alias=None)[source]#

Bases: TimeSeries

A class for representing and working with temperature time series data.

Notes

todo notes

Examples

todo examples

__init__(name='MyTemperatureSeries', alias=None)[source]#
class plans.datasets.chrono.StageSeries(name='MyStageSeries', alias=None)[source]#

Bases: TimeSeries

A class for representing and working with river stage time series data.

Notes

todo notes

Examples

todo examples

__init__(name='MyStageSeries', alias=None)[source]#

Initialize a StageSeries object.

get_metadata()[source]#

Get a dictionary with object metadata. Expected to increment superior methods.

Note

Metadata does not necessarily inclue all object attributes.

Returns:

dictionary with all metadata

Return type:

dict

class plans.datasets.chrono.DischargeSeries(name='MyFlowSeries', alias=None)[source]#

Bases: TimeSeries

A class for representing and working with discharge time series data (volumentric flow).

Notes

todo notes

Examples

todo examples

__init__(name='MyFlowSeries', alias=None)[source]#
static view_cfcs(freqs, specs=None, show=True, colors=None, labels=None)[source]#
class plans.datasets.chrono.RainSeriesSamples(name='MyRSColection')[source]#

Bases: TimeSeriesSpatialSamples

__init__(name='MyRSColection')[source]#

Initialize the Collection object.

Parameters:
  • base_object (MbaE) – MbaE-based object for collection

  • name (str) – unique object name

  • alias (str) – unique object alias.

class plans.datasets.chrono.TemperatureSeriesSamples(name='MyTempSColection')[source]#

Bases: TimeSeriesSpatialSamples

__init__(name='MyTempSColection')[source]#

Initialize the Collection object.

Parameters:
  • base_object (MbaE) – MbaE-based object for collection

  • name (str) – unique object name

  • alias (str) – unique object alias.

class plans.datasets.chrono.StageSeriesCollection(name='MySSColection')[source]#

Bases: TimeSeriesCluster

__init__(name='MySSColection')[source]#

Initialize the Collection object.

Parameters:
  • base_object (MbaE) – MbaE-based object for collection

  • name (str) – unique object name

  • alias (str) – unique object alias.

set_data(df_info, src_dir=None, filter_dates=None)[source]#

Set data for the time series collection from a info class:pandas.DataFrame.

Parameters:
  • df_info (class:pandas.DataFrame) – This DataFrame is expected to have matching fields to the metadata keys.

  • src_dir (str) – Path for inputs directory in the case for only file names in File column.

  • filter_dates (str) – List of Start and End dates for filter data

Notes

  • The set_data method populates the time series collection with data based on the provided DataFrame.

  • It creates time series objects, loads data, and performs additional processing steps.

  • Adjust skip_process according to your data processing needs.