Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add AlchemiscaleClient.copy_network, .merge_networks, and .merge_scopes methods #221

Open
dotsdl opened this issue Jan 9, 2024 · 0 comments

Comments

@dotsdl
Copy link
Member

dotsdl commented Jan 9, 2024

Currently users create AlchemicalNetworks in separate Scopes if they want to independently generate results for each, or create AlchemicalNetworks in the same Scope if they would like results to be shared for common Transformations. This requires a priori planning for how to make use of results between AlchemicalNetworks; what about when a user would like to take existing results from AlchemicalNetworks in different Scopes and combine them into another Scope?

To enable this, we propose exposing the following methods on the AlchemiscaleClient:

  • copy_network(<network_scoped_key>, <scope>) : copies an entire AlchemicalNetwork and all existing Tasks and associated ProtocolDAGResultRefs to the given Scope, which may or may not already feature other AlchemicalNetworks with the same Transformations
  • merge_networks(<network_scoped_key>, <network_scoped_key>, ..., <scope>, name=None) : creates a new AlchemicalNetwork in the given Scope from the ChemicalSystems and Transformations of any number of other AlchemicalNetworks, optionally with a name.
  • merge_scopes(<scope>, <scope>, ..., <scope>) : copies all AlchemicalNetworks in any number of given Scopes into another Scope, similarly to copy_network

These methods will create new nodes and relationships in the state store, but shouldn't need to touch the object store, requiring no duplication of large objects there.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant