Source code for pymodaq.extensions.ramping.utilities.ramp_generator

import numpy as np
from pymodaq_data import Q_

[docs] class RampGenerator: def __init__(self, start:Q_, end: Q_, duration=Q_(5.0,'s')): self.start = start self.end = end self.duration = duration def __call__(self, elapsed_time: Q_) -> Q_: return self.update(elapsed_time) def update(self, elapsed_time: Q_) -> Q_: # Clamp elapsed time to the valid duration window t_clamped = np.clip(elapsed_time, Q_(0.0, 's'), self.duration) # Linear interpolation for the ramp output if self.duration.to_reduced_units().magnitude > 0: fraction = (t_clamped / self.duration).to_reduced_units().magnitude value = self.start + (self.end - self.start) * fraction else: value = self.end return value