Currently, the highest-level way of getting results back exposed in the AlchemiscaleClient is via get_transformation_results, which operates at the level of a single Transformation. A typical user will likely loop through all Transformations in their AlchemicalNetwork of interest one at a time, and though this method now benefits from async retrieval of multiple ProtocolDAGResults at a time, this usage pattern isn't exactly optimal.
We should add a get_network_results method that returns a dict giving the ScopedKey of each Transformation as keys, ProtocolResult (or list of ProtocolDAGResults, similar to get_transformation_results) as values. This can be pretty fast given that all retrievals can be done in a single batch of async calls, and with LRU caching of objects can be run repeatedly with high performance.
Currently, the highest-level way of getting results back exposed in the
AlchemiscaleClientis viaget_transformation_results, which operates at the level of a singleTransformation. A typical user will likely loop through allTransformations in theirAlchemicalNetworkof interest one at a time, and though this method now benefits fromasyncretrieval of multipleProtocolDAGResults at a time, this usage pattern isn't exactly optimal.We should add a
get_network_resultsmethod that returns a dict giving theScopedKeyof eachTransformationas keys,ProtocolResult(or list ofProtocolDAGResults, similar toget_transformation_results) as values. This can be pretty fast given that all retrievals can be done in a single batch ofasynccalls, and with LRU caching of objects can be run repeatedly with high performance.