recieve incoming requests from an evaluator clients to either estimate a dataset of properties, or to query the status of a previous request.
request that each specified calculation layers attempt to estimate the data set of properties, cascading unestimated properties through the different layers.
with DaskLocalCluster() as calculation_backend: evaluator_server = EvaluatorServer(calculation_backend) evaluator_server.start()
with DaskLocalCluster() as calculation_backend: storage_backend = LocalFileStorage() evaluator_server = EvaluatorServer(calculation_backend, storage_backend) evaluator_server.start()
By default the server will run synchronously until it is killed, however it may also be run asynchronously such that it can be interacted with directly by a client in the same script:
with DaskLocalCluster() as calculation_backend: with EvaluatorServer(calculation_backend) as evaluator_server: # Specify the data set. data_set = PhysicalPropertyDataSet() data_set.add_properties(...) # Specify the force field source. force_field = SmirnoffForceFieldSource.from_path("openff-1.0.0.offxml") # Request the estimation of the data set. request, errors = evaluator_client.request_estimate(data_set,force_field) # Wait for the results. results = request.results(synchronous=True)
By default when a server recieves a request from a client, it will attempt to split the requested set of properties into
smaller batches, represented by the
Batch object. The current behaviour is to batch together all properties which
were measured for the same substance.
This splitting into smaller batches allows the server to return back batches of properties as they complete, rather than needing to wait for a full request to complete.
This batching behaviour will be built upon and expanded in future versions of the evaluator framework.