def test_seq_recommender(RE, hw): recommender = SequenceRecommender([[ 1, ], [ 2, ], [ 3, ]]) # noqa cb, queue = recommender_factory(recommender, ["motor"], ["det"]) dc = DocCollector() # pre-poison the queue to simulate a messy reccomender queue.put(None) queue.put({}) RE( adaptive_plan([hw.det], {hw.motor: 0}, to_recommender=cb, from_recommender=queue), dc.insert, ) assert len(dc.start) == 4 assert len(dc.event) == 4 for ev in dc.event.values(): assert len(ev) == 1 # check that our reccomender does not leave anything behind with pytest.raises(Empty): queue.get(block=False)
d = RemoteDispatcher("127.0.0.1:5678", prefix=b"adaptive") class RedisQueue: "fake just enough of the queue.Queue API on top of redis" def __init__(self, client): self.client = client def put(self, value): print(f"pushing {value}") self.client.lpush("adaptive", json.dumps(value)) rq = RedisQueue(redis.StrictRedis(host="localhost", port=6379, db=0)) adaptive_obj = recommendations.StepRecommender(1.5) independent_keys = ["motor"] dependent_keys = ["det"] queue = rq max_count = 15 rr, _ = per_start.recommender_factory( adaptive_obj, independent_keys, dependent_keys, max_count=max_count, queue=queue ) d.subscribe(rr) print("REMOTE IS READY TO START") d.start()
lt = BatchLiveTable( ["ctrl_Ti", "ctrl_temp", "ctrl_anneal_time", "ctrl_thickness", "x", "y"]) y = SynAxis(name="y") x = SynAxis(name="x") RE = RunEngine() RE.subscribe(lt) recommender = SequenceRecommender([[30, 340, 450, 1], [35, 340, 450, 1], [48, 400, 3600, 1], [35, 400, 450, 0]]) cb, queue = recommender_factory( recommender, ["ctrl_Ti", "ctrl_temp", "ctrl_annealing_time", "ctrl_thickness"], ["x"], ) pair = single_strip_set_transform_factory(single_data) snap_function = snap_factory(single_data, time_tol=5, temp_tol=10, Ti_tol=None) RE( adaptive_plan( [], (30, 460, 30 * 60, 1), to_recommender=cb, from_recommender=queue, real_motors=(x, y), transform_pair=pair, snap_function=snap_function,
self.client = client def put(self, value): print(f"pushing to redis queue: {value}") self.client.lpush("adaptive", json.dumps(value)) redis_queue = RedisQueue(redis.StrictRedis(host="localhost", port=6379, db=0)) step_recommender = recommendations.StepRecommender(1.5) max_count = 15 recommender_factory, _ = per_start.recommender_factory( adaptive_obj=step_recommender, independent_keys=["ctrl_temp"], dependent_keys=["full_Q"], max_count=max_count, queue=redis_queue, ) zmq_dispatcher.subscribe(recommender_factory) def echo_factory(start_name, start_doc): print( f"echo_factory called with {start_name}\n{pprint.pformat(start_doc)}\n" ) def echo(name, doc): print( f"adaptive gpcam consumer received {name}:\n{pprint.pformat(doc)}\n" )
self.client = client def put(self, value): print(f"pushing to redis queue: {value}") self.client.lpush("adaptive", json.dumps(value)) redis_queue = RedisQueue(redis.StrictRedis(host="localhost", port=6379, db=0)) step_recommender = recommendations.StepRecommender(1.5) max_count = 15 recommender_factory, _ = per_start.recommender_factory( adaptive_obj=step_recommender, independent_keys=["motor"], dependent_keys=["det"], max_count=max_count, queue=redis_queue, ) zmq_dispatcher.subscribe(recommender_factory) def echo_factory(start_name, start_doc): print( f"echo_factory called with {start_name}\n{pprint.pformat(start_doc)}\n" ) def echo(name, doc): print(f"adaptive consumer received {name}:\n{pprint.pformat(doc)}\n") return [echo], []