alchemiscale icon indicating copy to clipboard operation
alchemiscale copied to clipboard

Add `AlchemiscaleClient` method for producing archival-quality extracts of `AlchemicalNetwork`s and their existing results

Open dotsdl opened this issue 1 year ago • 1 comments

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:

  1. Can be easily consumed by analysis tools, such as cinnabar.
  2. Can be used as a starting point for tools used to define AlchemicalNetworks, so round-trippable into GufeTokenizables with at least the same library versions as those used to create them.
  3. Possible to usefully parse without any OpenFE tooling at all, even if not recommended.
  4. 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.

dotsdl avatar Feb 23 '24 03:02 dotsdl

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.

dotsdl avatar May 28 '24 16:05 dotsdl