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:
set_tasks: set the minimum number of Tasks on the given Transformation (and optionally extendsing another Task)
set_transformations_tasks: set the minimum number of Tasks for multiple Transformation (and optionally extendsing another Task), in a single call
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.
There are users and downstream projects, such as
asap-alchemy
, that are more interested in ensuring that a certain number ofTask
s exist perTransformation
than in creating newTask
s.This is especially the case when a user creates many iterations of
AlchemicalNetwork
s in the sameScope
that feature manyTransformation
s in common. In this scenario, simply callingcreate_tasks
orcreate_transformations_tasks
on everyTransformation
of the submittedAlchemicalNetwork
may generate more work than is necessary given existing results. A user that wants to only create newTask
s for entirely newTransformation
s would need to do a number of client calls to determine whichTransformation
s have noTask
s before creating new ones.To address this, we should create two new methods on the
AlchemiscaleClient
:set_tasks
: set the minimum number ofTask
s on the givenTransformation
(and optionallyextends
ing anotherTask
)set_transformations_tasks
: set the minimum number ofTask
s for multipleTransformation
(and optionallyextends
ing anotherTask
), in a single callThese methods are functionally idempotent versions of
create_tasks
andcreate_transformations_tasks
that already exist in theAlchemiscaleClient
. They should take the same inputs as these existing methods, but will only create newTask
s where an insufficient number already exist.