From 968ca6426e0aa1a1640337b858d745c461322a81 Mon Sep 17 00:00:00 2001 From: jlashner Date: Wed, 11 Oct 2023 09:15:36 -0400 Subject: [PATCH 1/5] Adds general task to set TES biases --- socs/agents/pysmurf_controller/agent.py | 42 +++++++++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/socs/agents/pysmurf_controller/agent.py b/socs/agents/pysmurf_controller/agent.py index 0376b612e..f06c1ea2c 100644 --- a/socs/agents/pysmurf_controller/agent.py +++ b/socs/agents/pysmurf_controller/agent.py @@ -851,6 +851,47 @@ def overbias_tes(self, session, params): sdl.overbias_dets(S, cfg, **kw) return True, "Finished Overbiasing TES" + + @ocs_agent.param('bgs', default=None) + @ocs_agent.params('bias', default=0) + def set_biases(self, session, params): + """set_biases(bg=None, bias=0) + + **Task** - Task used ot set TES biases. + + Args + ----- + bg: int, list, optional + bg, or list of bgs to set. If None, will set all bgs. + bias: int, float, list + Biases to set. If a float is passed, this will be used for all + specified bgs. If a list of floats is passed, it must be the same + size of the list of bgs. + """ + if params['bgs'] is None: + bgs = np.arange(12) + else: + bgs = np.atleast_1d(params['bgs']) + + if isinstance(params['bias'], (int, float)): + biases = [params['bias'] for _ in bgs] + else: + if len(params['bias']) != len(bgs): + return False, "Number of biases must match number of bgs" + biases = params['bias'] + + with self.lock.acquire_timeout(0, job='set_biases') as acquired: + if not acquired: + return False, f"Operation failed: {self.lock.job} is running." + + session.set_status('running') + S, _ = self._get_smurf_control(session=session) + + for bg, bias in zip(bgs, biases): + S.set_tes_bias_bipolar(bg, bias) + + return True, f"Finished setting biases to {params['biases']}" + @ocs_agent.param('rfrac', default=(0.3, 0.6)) @ocs_agent.param('kwargs', default=None) @@ -987,6 +1028,7 @@ def main(args=None): agent.register_task('take_noise', controller.take_noise) agent.register_task('bias_dets', controller.bias_dets) agent.register_task('all_off', controller.all_off) + agent.register_task('set_biases', controller.set_biases) runner.run(agent, auto_reconnect=True) From 7b9a5fc784575025d364b751552f32f44eacd40f Mon Sep 17 00:00:00 2001 From: jlashner Date: Wed, 11 Oct 2023 09:21:56 -0400 Subject: [PATCH 2/5] Adds zero_biases task --- socs/agents/pysmurf_controller/agent.py | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/socs/agents/pysmurf_controller/agent.py b/socs/agents/pysmurf_controller/agent.py index f06c1ea2c..f93c0a879 100644 --- a/socs/agents/pysmurf_controller/agent.py +++ b/socs/agents/pysmurf_controller/agent.py @@ -853,7 +853,7 @@ def overbias_tes(self, session, params): return True, "Finished Overbiasing TES" @ocs_agent.param('bgs', default=None) - @ocs_agent.params('bias', default=0) + @ocs_agent.params('bias') def set_biases(self, session, params): """set_biases(bg=None, bias=0) @@ -892,6 +892,20 @@ def set_biases(self, session, params): return True, f"Finished setting biases to {params['biases']}" + @ocs_agent.param('bgs', default=None) + def zero_biases(self, session, params): + """ + **Task** - Zeros TES biases for specified bias groups. + + Args + ----- + bg: int, list, optional + bg, or list of bgs to zero. If None, will zero all bgs. + """ + params['bias'] = 0 + self.agent.start('set_biases', params) + self.agent.wait('set_biases') + return True, 'Finished zeroing biases' @ocs_agent.param('rfrac', default=(0.3, 0.6)) @ocs_agent.param('kwargs', default=None) @@ -1029,6 +1043,7 @@ def main(args=None): agent.register_task('bias_dets', controller.bias_dets) agent.register_task('all_off', controller.all_off) agent.register_task('set_biases', controller.set_biases) + agent.register_task('zero_biases', controller.zero_biases) runner.run(agent, auto_reconnect=True) From c76ca20fddfba0ea41ce211102a6ab6faed86dee Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Wed, 11 Oct 2023 13:24:18 +0000 Subject: [PATCH 3/5] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- socs/agents/pysmurf_controller/agent.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/socs/agents/pysmurf_controller/agent.py b/socs/agents/pysmurf_controller/agent.py index f93c0a879..e23f121c1 100644 --- a/socs/agents/pysmurf_controller/agent.py +++ b/socs/agents/pysmurf_controller/agent.py @@ -851,14 +851,14 @@ def overbias_tes(self, session, params): sdl.overbias_dets(S, cfg, **kw) return True, "Finished Overbiasing TES" - + @ocs_agent.param('bgs', default=None) @ocs_agent.params('bias') def set_biases(self, session, params): """set_biases(bg=None, bias=0) - **Task** - Task used ot set TES biases. - + **Task** - Task used ot set TES biases. + Args ----- bg: int, list, optional @@ -872,14 +872,14 @@ def set_biases(self, session, params): bgs = np.arange(12) else: bgs = np.atleast_1d(params['bgs']) - + if isinstance(params['bias'], (int, float)): biases = [params['bias'] for _ in bgs] else: if len(params['bias']) != len(bgs): return False, "Number of biases must match number of bgs" biases = params['bias'] - + with self.lock.acquire_timeout(0, job='set_biases') as acquired: if not acquired: return False, f"Operation failed: {self.lock.job} is running." From 19a8921a04717e8ff4f50284aca58dd28cd79ec8 Mon Sep 17 00:00:00 2001 From: Brian Koopman Date: Thu, 12 Oct 2023 14:37:28 -0400 Subject: [PATCH 4/5] Fix typo --- socs/agents/pysmurf_controller/agent.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/socs/agents/pysmurf_controller/agent.py b/socs/agents/pysmurf_controller/agent.py index e23f121c1..14b048eeb 100644 --- a/socs/agents/pysmurf_controller/agent.py +++ b/socs/agents/pysmurf_controller/agent.py @@ -853,7 +853,7 @@ def overbias_tes(self, session, params): return True, "Finished Overbiasing TES" @ocs_agent.param('bgs', default=None) - @ocs_agent.params('bias') + @ocs_agent.param('bias') def set_biases(self, session, params): """set_biases(bg=None, bias=0) From b6e6747ee114c39151982be5385f5baa93d24f0c Mon Sep 17 00:00:00 2001 From: Jack Lashner Date: Tue, 7 Nov 2023 08:19:59 -0500 Subject: [PATCH 5/5] address brian's comments --- socs/agents/pysmurf_controller/agent.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/socs/agents/pysmurf_controller/agent.py b/socs/agents/pysmurf_controller/agent.py index 14b048eeb..049a5d73f 100644 --- a/socs/agents/pysmurf_controller/agent.py +++ b/socs/agents/pysmurf_controller/agent.py @@ -855,14 +855,14 @@ def overbias_tes(self, session, params): @ocs_agent.param('bgs', default=None) @ocs_agent.param('bias') def set_biases(self, session, params): - """set_biases(bg=None, bias=0) + """set_biases(bg=None, bias) - **Task** - Task used ot set TES biases. + **Task** - Task used to set TES biases. Args ----- bg: int, list, optional - bg, or list of bgs to set. If None, will set all bgs. + Bias group (bg), or list of bgs to set. If None, will set all bgs. bias: int, float, list Biases to set. If a float is passed, this will be used for all specified bgs. If a list of floats is passed, it must be the same