Skip to content

Commit 19bd753

Browse files
Merge pull request #205 from python-accelerator-middle-layer/feature-step-tune
Added tune step method (no tune monitor)
2 parents 77e345c + 29c7ae0 commit 19bd753

File tree

2 files changed

+31
-7
lines changed

2 files changed

+31
-7
lines changed

pyaml/tuning_tools/tune.py

Lines changed: 20 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -212,15 +212,28 @@ def set(self, tune: np.array, iter: int = 1, wait_time: float = 0.0):
212212
wait_time : float
213213
Time to wait in second between 2 iterations
214214
"""
215-
self.__setpoint = np.array(tune)
216215
for i in range(iter):
217216
diff_tune = tune - self.readback()
218-
str = self.__tr.quads().strengths.get()
219-
str += self.__tr.correct(diff_tune)
220-
self.__tr.quads().strengths.set(str)
221-
if i < iter - 1:
222-
# Does not wait on the last iter
223-
time.sleep(wait_time)
217+
if i == iter:
218+
wait_time = 0 # do not wait on last iteration
219+
self.step(diff_tune, wait_time)
220+
self.__setpoint = np.array(tune)
221+
222+
def step(self, dtune: np.array, wait_time: float = 0.0):
223+
"""
224+
Step the tune by a delta
225+
Parameters
226+
----------
227+
dtune : np.array
228+
Delta tune
229+
iter_nb: int
230+
wait_time: float
231+
"""
232+
strengths = self.__tr.quads().strengths.get()
233+
strengths += self.__tr.correct(dtune)
234+
self.__tr.quads().strengths.set(strengths)
235+
time.sleep(wait_time)
236+
self.__setpoint += dtune
224237

225238
@property
226239
def response(self) -> TuneResponse:

tests/test_tuning_tools.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,3 +22,14 @@ def test_tuning_tools():
2222
tune = sr.design.tune.readback()
2323
assert np.abs(tune[0] - 0.17) < 1e-5
2424
assert np.abs(tune[1] - 0.32) < 1e-5
25+
26+
27+
def test_tune_step():
28+
sr = Accelerator.load("tests/config/EBSTune.yaml", use_fast_loader=False)
29+
sr.design.get_lattice().disable_6d()
30+
sr.design.tune.response.measure(callback=tune_callback)
31+
tune_initial = sr.design.tune.readback()
32+
dtune = np.array([0.01, -0.01])
33+
sr.design.tune.step(dtune)
34+
tune = sr.design.tune.readback()
35+
np.testing.assert_allclose(tune - tune_initial, dtune, atol=1e-5)

0 commit comments

Comments
 (0)