コード例 #1
0
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)
コード例 #2
0
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()
コード例 #3
0
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,
コード例 #4
0
        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"
        )
コード例 #5
0
        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], []