OpenFreeEnergy / alchemiscale

a high-throughput alchemical free energy execution system for use with HPC, cloud, bare metal, and Folding@Home
http://alchemiscale.org
Other
24 stars 8 forks source link

Add `AlchemiscaleClient` methods `set_tasks` and `set_transformations_tasks` #293

Open dotsdl opened 2 months ago

dotsdl commented 2 months ago

There are users and downstream projects, such as asap-alchemy, that are more interested in ensuring that a certain number of Tasks exist per Transformation than in creating new Tasks.

This is especially the case when a user creates many iterations of AlchemicalNetworks in the same Scope that feature many Transformations in common. In this scenario, simply calling create_tasks or create_transformations_tasks on every Transformation of the submitted AlchemicalNetwork may generate more work than is necessary given existing results. A user that wants to only create new Tasks for entirely new Transformations would need to do a number of client calls to determine which Transformations have no Tasks before creating new ones.

To address this, we should create two new methods on the AlchemiscaleClient:

These methods are functionally idempotent versions of create_tasks and create_transformations_tasks that already exist in the AlchemiscaleClient. They should take the same inputs as these existing methods, but will only create new Tasks where an insufficient number already exist.

dotsdl commented 2 months ago

CC @JenkeScheen