alchemiscale
alchemiscale copied to clipboard
Add `AlchemiscaleClient` method for producing archival-quality extracts of `AlchemicalNetwork`s and their existing results
Since alchemiscale is an execution system for AlchemicalNetworks, not an archival system, we should provide a clear pathway for producing archival-quality extracts of AlchemicalNetworks and their existing results.
There are potentially many ways to accomplish this, but ideally the serialized form of an AlchemicalNetwork and its ProtocolDAGResults has the following properties:
- Can be easily consumed by analysis tools, such as
cinnabar. - Can be used as a starting point for tools used to define
AlchemicalNetworks, so round-trippable intoGufeTokenizables with at least the same library versions as those used to create them. - Possible to usefully parse without any OpenFE tooling at all, even if not recommended.
- Suitable for archival and sharing on citable FAIR data repositories, such as Zenodo.
Some of the solution to this issue may make sense for inclusion in gufe, as this need is not necessarily specific to alchemiscale.
Proposed API point:
def get_archival_extract(
network: ScopedKey,
metadata: Dict[str, Any],
) -> AlchemicalArchive:
"""
Tuple[AlchemicalNetwork, Dict[str, List[ProtocolDAGResult]], Dict[str, Any]]
"""
...
where an AlchemicalArchive is a new data structure defined at the gufe level, including an AlchemicalNetwork, results, and metadata.