graph LR
Classification_Orchestrator["Classification Orchestrator"]
Compound_Domain_Model["Compound Domain Model"]
Transformation_Domain_Model["Transformation Domain Model"]
Circle_Domain_Model["Circle Domain Model"]
Compound_Classification_Logic["Compound Classification Logic"]
Transformation_Classification_Logic["Transformation Classification Logic"]
Circle_Classification_Logic["Circle Classification Logic"]
Ortho_Classification_Logic["Ortho Classification Logic"]
R_Group_Distance_Calculation["R-Group Distance Calculation"]
Classification_Utility_Functions["Classification Utility Functions"]
Classification_Orchestrator -- "uses" --> Compound_Domain_Model
Classification_Orchestrator -- "uses" --> Transformation_Domain_Model
Classification_Orchestrator -- "uses" --> Circle_Domain_Model
Compound_Domain_Model -- "delegates to" --> Compound_Classification_Logic
Compound_Domain_Model -- "delegates to" --> Ortho_Classification_Logic
Transformation_Domain_Model -- "delegates to" --> Transformation_Classification_Logic
Transformation_Domain_Model -- "delegates to" --> Ortho_Classification_Logic
Transformation_Domain_Model -- "relies on" --> R_Group_Distance_Calculation
Circle_Domain_Model -- "delegates to" --> Circle_Classification_Logic
Circle_Domain_Model -- "delegates to" --> Ortho_Classification_Logic
Circle_Domain_Model -- "composed of" --> Transformation_Domain_Model
Circle_Domain_Model -- "composed of" --> Compound_Domain_Model
Circle_Domain_Model -- "uses" --> R_Group_Distance_Calculation
Compound_Classification_Logic -- "utilizes" --> Classification_Utility_Functions
Transformation_Classification_Logic -- "utilizes" --> Classification_Utility_Functions
Circle_Classification_Logic -- "utilizes" --> Classification_Utility_Functions
Ortho_Classification_Logic -- "utilizes" --> Classification_Utility_Functions
R_Group_Distance_Calculation -- "utilizes" --> Classification_Utility_Functions
The Classification & Domain Logic subsystem is a core part of the nonadditivity project, responsible for defining and classifying chemical entities crucial to non-additivity analysis. Its structure reflects a clear separation of concerns, with dedicated modules for domain models and their associated classification logic. This structure ensures a clear flow of control and data, where the orchestrator initiates the process, domain models manage their data and delegate specific classification tasks, and dedicated logic modules perform the actual classification algorithms, leveraging shared utilities. This modularity enhances maintainability, testability, and extensibility, which are crucial for a scientific data processing application.
This component acts as the primary entry point for initiating the classification process. It orchestrates the classification of Compound, Transformation, and Circle objects by invoking their respective classification methods and leveraging specialized classification logic modules. It serves as the application layer's interface to the core classification domain.
Related Classes/Methods:
Encapsulates the Compound entity, representing individual chemical compounds. It holds compound-specific data and provides methods for classifying compounds based on their structural and chemical properties. It delegates specific classification tasks to dedicated classification logic modules.
Related Classes/Methods:
Defines the Transformation entity, representing a chemical transformation between two Compound objects. It encapsulates transformation-specific data, including constant and transforming parts of molecules, and provides methods for classifying transformations. It delegates specific classification tasks to dedicated classification logic modules and relies on R-group distance calculations.
Related Classes/Methods:
Represents a double-transformation cycle, often referred to as a "non-additivity circle." It encapsulates the Compound and Transformation objects that form the cycle and provides methods for classifying the circle's overall non-additivity behavior. It delegates specific classification tasks to dedicated classification logic modules.
Related Classes/Methods:
Contains specialized functions and algorithms for classifying Compound objects based on various chemical and structural criteria. This module provides the detailed implementation for compound-specific classifications.
Related Classes/Methods:
Implements the algorithms and rules for classifying specific types of chemical transformations, such as changes in functional groups, heavy atom count, or other transformation-specific properties. These functions are invoked by the Transformation domain model.
Related Classes/Methods:
Provides specialized functions for classifying Circle objects based on criteria relevant to double-transformation cycles, such as stereoinversion, tertiary amide formation, or differences in physicochemical properties across the cycle. These functions are invoked by the Circle domain model.
Related Classes/Methods:
Focuses on classifying chemical entities (compounds, transformations, and circles) based on whether chemical changes or structural features occur at ortho positions on a ring system. It includes functions for pattern matching and determining spatial relationships of substituents, crucial for specific SAR analysis.
Related Classes/Methods:
A utility module providing functions for calculating distances and identifying R-groups (substituents) within molecules and transformations. This is a foundational utility for understanding the structural context of chemical changes and is leveraged by domain models and classification logic.
Related Classes/Methods:
A collection of general-purpose helper functions specifically used across various classification modules. These include common operations like checking for uniqueness, handling lists, or other small, reusable pieces of logic that support the classification algorithms.
Related Classes/Methods: