2023.11 Release Notes
Overview
ASKCOS has officially been refactored into Version 2! The frontend underwent drastic UI changes to make it faster and better, but the functionalities are mostly the same for users familiar with ASKCOSv1. The backend has been fully reworked with a microservice-based architecture, with a FastAPI-based API gateway, that centrally manages and communicates to individual backend modules, which themselves are running as containerized services.
For users who came from ASKCOSv1 and want to migrate your data (e.g., saved results) into V2, please refer to [Data Migration from V1 to V2](04-Data Migration from V1 to V2).
Full Separation between the API Gateway and Decoupled Backend Services
For the backend services, the most significant refactor was reworking the implementations of the MCTS tree builder, the one-step expansion engine (i.e., RetroTransformer), and the template-relevance prioritizers, which were highly coupled together. They are now fully decoupled and separated into the tree builder (/api/tree-search/mcts/), the one-step engine (/api/tree-search/expand-one) which is called by both the tree builder and the IPP, and the template-relevance module (/api/retro/template-relevance/). Moreover, this new one-step engine can take in multiple backend options simultaneously (even template-based and template-free ones at the same time!), and so can the new tree builder and the IPP.
We also introduce the notion of controllers, e.g.,
/api/atom-map/controller/
/api/forward/controller/
/api/general-selectivity/controller/
/api/retro/controller/
/api/tree-analysis/controller/
which serve as entrypoints for several backends behind, and dispatch the incoming queries based on the specified backend(s).
Standardized and Abstracted Async Task Management
While we still use celery for asynchronous task management, its usage is reduced to the minimum (merely as an async wrapper), as illustrated from these few lines for the SCScore module as an example. No more need to know celery for developing or contributing to ASKCOS!
Backward-compatible APIs with Up-to-date and Automatically Generated API Documentation
Going forward, we will no longer provide a separate API documentation; the Swagger UI documentation automatically generated by FastAPI will be up-to-date by design, and with functional sample queries where appropriate. We have tried to maintain as much backward compatibility as possible in terms of the APIs, but there are new or different behaviours because of the modularization and rework we did to the modules. The API changes are summarized in [V2 API Changes](02-V2 API Changes).