pypfilt.time

Two pre-defined simulation time scales are provided.

class pypfilt.time.Scalar(settings=None)

A dimensionless time scale.

__init__(settings=None)
Parameters:

settings – An optional dictionary of simulation settings.

set_period(start, end, steps_per_unit)

Define the simulation period and time-step size.

Parameters:
  • start – The start of the simulation period.

  • end – The end of the simulation period.

  • steps_per_unit (int) – The number of time-steps per unit time.

Raises:

ValueError – if start and/or end cannot be parsed, or if steps_per_unit is not a positive integer.

with_observation_tables(ctx, obs_tables, start=None)

Return a generator that yields a sequence of tuples that contain: the time-step number, the time-step details (TimeStep), and a list of observations.

Parameters:
  • ctx (pypfilt.Context) – The simulation context.

  • obs_tables (Dict[str, numpy.ndarray]) – The observation data tables.

  • start – The starting time (set to None to use the start of the simulation period).

Raises:

ValueError – If observations are not sorted chronologically.

time_step_of_next_observation(ctx, obs_tables, from_time)

Identify the first time-step after from_time for which there is at least one observation. If no such time-step exists, None is returned.

Parameters:
  • ctx (pypfilt.Context) – The simulation context.

  • obs_tables (Dict[str, numpy.ndarray]) – The observation data tables.

  • from_time – The starting time (set to None to use the start of the simulation period).

Returns:

The time-step number, time-step details, and a list of observations.

Return type:

Optional[TimeStepWithObservations]

Raises:

ValueError – If observations are not sorted chronologically.

class pypfilt.time.Datetime(settings=None)

A datetime scale where the time unit is days.

By default, times are converted to/from string using the format string '%Y-%m-%d %H:%M:%S', with a fallback format string '%Y-%m-%d' used to read date-only values. You can override these format strings by defining the following settings:

[time]
datetime_formats = ["%Y-%m-%d", "%d %m %Y"]

The first value will be used when saving times, and subsequent values will be used as fallback options for reading times.

__init__(settings=None)
Parameters:

settings – An optional dictionary of simulation settings.

custom_format_strings(format_strings)

Temporarily override the datetime format strings within a with statement.

Parameters:

format_strings – The format strings used to convert datetime values to/from strings.

Examples:

>>> from datetime import datetime
>>> from pypfilt.time import Datetime
>>> time_scale = Datetime()
>>> time_scale.to_unicode(datetime(2022, 8, 31))
'2022-08-31 00:00:00'
>>> with time_scale.custom_format_strings(['%d %b %Y']):
...     time_scale.to_unicode(datetime(2022, 8, 31))
'31 Aug 2022'
set_period(start, end, steps_per_unit)

Define the simulation period and time-step size.

Parameters:
  • start – The start of the simulation period.

  • end – The end of the simulation period.

  • steps_per_unit (int) – The number of time-steps per unit time.

Raises:

ValueError – if start and/or end cannot be parsed, or if steps_per_unit is not a positive integer.

with_observation_tables(ctx, obs_tables, start=None)

Return a generator that yields a sequence of tuples that contain: the time-step number, the time-step details (TimeStep), and a list of observations.

Parameters:
  • ctx (pypfilt.Context) – The simulation context.

  • obs_tables (Dict[str, numpy.ndarray]) – The observation data tables.

  • start – The starting time (set to None to use the start of the simulation period).

Raises:

ValueError – If observations are not sorted chronologically.

time_step_of_next_observation(ctx, obs_tables, from_time)

Identify the first time-step after from_time for which there is at least one observation. If no such time-step exists, None is returned.

Parameters:
  • ctx (pypfilt.Context) – The simulation context.

  • obs_tables (Dict[str, numpy.ndarray]) – The observation data tables.

  • from_time – The starting time (set to None to use the start of the simulation period).

Returns:

The time-step number, time-step details, and a list of observations.

Return type:

Optional[TimeStepWithObservations]

Raises:

ValueError – If observations are not sorted chronologically.

class pypfilt.time.TimeStep(start: Any, end: Any, dt: float)

The definition of a time-step.

start: Any

The beginning of the time-step.

end: Any

The end of the time-step.

dt: float

The time-step size.

class pypfilt.time.TimeStepWithObservations(step_number: int, time_step: TimeStep, observations: List[Dict[str, Any]])

The details of a time-step for which there is at least one observation.

step_number: int

The time-step number.

time_step: TimeStep

The time-step details.

observations: List[Dict[str, Any]]

The observations for this time-step.

Custom time scales

If neither of the above time scales is suitable, you can define a custom time scale, which should derive the following base class and define the methods listed here:

class pypfilt.time.Time

The base class for simulation time scales, which defines the minimal set of methods that are required.

abstract dtype(name)

Define the dtype for columns that store times.

abstract native_dtype()

Define the Python type used to represent times in NumPy arrays.

abstract is_instance(value)

Return whether value is an instance of the native time type.

abstract to_dtype(time)

Convert from time to a dtype value.

abstract from_dtype(dval)

Convert from a dtype value to time.

abstract to_unicode(time)

Convert from time to a Unicode string.

This is used to define group names in HDF5 files, and for logging.

abstract from_unicode(val)

Convert from a Unicode string to time.

This is used to parse group names in HDF5 files.

abstract column(name)

Return a tuple that can be used with read_table() to convert a column into time values.

abstract steps()

Return a generator that yields tuples of time-step numbers and TimeStep instances, which span the simulation period.

The first time-step should be numbered 1 and occur at a time that is one time-step after the beginning of the simulation period.

abstract step_count()

Return the number of time-steps required for the simulation period.

abstract step_of(time)

Return the time-step number that corresponds to the specified time.

abstract add_scalar(time, scalar)

Add a scalar quantity to the specified time.

abstract time_of_obs(obs)

Return the time associated with an observation.