friendlysam.parts.Part.step_time¶
-
Part.step_time(index, num_steps)¶ A function for stepping forward or backward in time.
A
Part(or subclass) instance may use any logic for stepping in time. To change time stepping, you may have to changetime_stepor overridestep_time().Parameters: - index (any object) – The index to step from.
- num_steps (int) – The number of steps to take.
Returns: the new time,
num_stepsaway from index.Examples
If your model is indexed in evenly spaced integers, the default implementation is enough. A step is taken as follows:
def step_time(self, index, num_steps): return index + self.time_unit * num_steps
The default
time_unitis1, so time stepping is done by adding an integer.>>> part = Part() >>> part.step_time(3, -2) 1 >>> part.time_unit = 10 >>> part.step_time(3, 2) 23
Let’s assume your model is indexed with
pandas.Timestampin 2-hour increments, then it’s still sufficient to change the time unit:>>> from pandas import Timestamp, Timedelta >>> part = Part() >>> part.time_unit = Timedelta('2h') >>> part.step_time(Timestamp('2015-06-10 16:00'), 1) Timestamp('2015-06-10 18:00:00') >>> part.step_time(Timestamp('2015-06-10 16:00'), -3) Timestamp('2015-06-10 10:00:00')
If your model is indexed with something more complicated, you may have to change the
step_time()method. For example, assume a model is indexed with two-element tuples where the first element is an integer representing time. Then override thestep_time()as follows:>>> def my_step_time(index, step): ... t, other = index ... t += step ... return (t, other) ... >>> part = Part() >>> part.step_time = my_step_time >>> part.step_time((1, 'ABC'), 2) (3, 'ABC')