Skip to content

Latest commit

 

History

History
42 lines (31 loc) · 2.25 KB

architecture.rst

File metadata and controls

42 lines (31 loc) · 2.25 KB

Architecture

The openff-evaluator framework is constructed as a collection of modular components, each performing a specific role within the estimation of physical property data sets. These components are designed to be as extensible as possible, with support for user created plug-ins built into their core.

An overview of the openff-evaluators modular design. The framework is split into a 'client-side' which handles the curation and preparation of data sets, and a 'server-side' which performs the estimation of the data sets.

An overview of the openff-evaluators modular design. The framework is split into a 'client-side' which handles the curation and preparation of data sets, and a 'server-side' which performs the estimation of the data sets.

The framework is implemented as a client-server architecture. This design allows users to spin up server instances on whichever compute resources they may have available (from a single machine up to a large HPC cluster), and to which client objects may connect to both request that data sets be estimated, and to query and retrieve the results of those requests.

The client-side of the framework is predominantly responsible for providing APIs and objects for:

spaced-list

  • curating data sets <../datasets/physicalproperties> of physical properties from open data sources.
  • specifing custom calculation schemas <../layers/calculationlayers> which describe how individual properties should be computed.
  • requesting that data sets be estimated by a running server instance.
  • retrieving the results of estimation requests from a running server instance.

while the server-side is responsible for:

spaced-list

  • receiving estimation requests from an client object.
  • automatically determining which calculation approach <../layers/calculationlayers> to use for each property in the request.
  • executing those requests across the available compute resources <../backends/calculationbackend> following the calculation schemas provided by the client
  • caching data <../storage/storagebackend> from any calculations which may be useful for future calculations.

All communication between servers and clients is handled through the TCP <https://en.wikipedia.org/wiki/Transmission_ Control_Protocol> protocol.