| Total Complexity | 7 | 
| Total Lines | 22 | 
| Duplicated Lines | 0 % | 
| Changes | 2 | ||
| Bugs | 0 | Features | 1 | 
| 1 | import numpy as np  | 
            ||
| 4 | class PositionUpdater:  | 
            ||
| 5 | def __init__(self, stage):  | 
            ||
| 6 | self.stage = stage  | 
            ||
| 7 | self.lower_bounds = np.asarray(self.stage.lower_bounds)  | 
            ||
| 8 | self.upper_bounds = np.asarray(self.stage.upper_bounds)  | 
            ||
| 9 | |||
| 10 | def set_initial_control_params(self):  | 
            ||
| 11 | random = np.random.rand(len(self.stage.control_params))  | 
            ||
| 12 | delta = self.upper_bounds - self.lower_bounds  | 
            ||
| 13 | control_params = self.lower_bounds + random * delta  | 
            ||
| 14 | self.stage.control_params = control_params.tolist()  | 
            ||
| 15 | |||
| 16 | def update_position(self, velocity):  | 
            ||
| 17 | self.stage.control_params = self.stage.control_params + velocity  | 
            ||
| 18 | self._fix_coordinates()  | 
            ||
| 19 | |||
| 20 | def _fix_coordinates(self):  | 
            ||
| 21 | for i in range(len(self.stage.control_params)):  | 
            ||
| 22 | if self.stage.control_params[i] > self.stage.upper_bounds[i]:  | 
            ||
| 23 | self.stage.control_params[i] = self.stage.upper_bounds[i]  | 
            ||
| 24 | elif self.stage.control_params[i] < self.stage.lower_bounds[i]:  | 
            ||
| 25 | self.stage.control_params[i] = self.stage.lower_bounds[i]  | 
            ||
| 26 | 
The coding style of this project requires that you add a docstring to this code element. Below, you find an example for methods:
If you would like to know more about docstrings, we recommend to read PEP-257: Docstring Conventions.