Source code for syndirella.error

#!/usr/bin/env python3
"""
error.py

Possible errors when using syndirella.
"""
from rdkit import Chem


[docs] class ChemicalErrorBase(Exception): def __init__(self, message: str, inchi: str | None = None, smiles: str | None = None, mol: Chem.Mol | None = None):
[docs] self.message = message
[docs] self.inchi = inchi
[docs] self.smiles = smiles
[docs] self.mol = mol
super().__init__(self.message)
[docs] class MolError(ChemicalErrorBase): def __init__(self, route_uuid: str | None = None, message: str = "Could not create a Chem.Mol object.", inchi: str | None = None, smiles: str | None = None, mol: Chem.Mol | None = None):
[docs] self.route_uuid = route_uuid
super().__init__(message=message, inchi=inchi, smiles=smiles, mol=mol)
[docs] class SMARTSError(ChemicalErrorBase): def __init__(self, route_uuid: str | None = None, message: str = "An error occurred with SMARTS handling.", inchi: str | None = None, smiles: str | None = None, mol: Chem.Mol | None = None):
[docs] self.route_uuid = route_uuid
super().__init__(message=message, inchi=inchi, smiles=smiles, mol=mol)
[docs] class NoReactants(ChemicalErrorBase): def __init__(self, route_uuid: str | None = None, message: str = "No reactants found for the reaction.", inchi: str | None = None, smiles: str | None = None, mol: Chem.Mol | None = None):
[docs] self.route_uuid = route_uuid
super().__init__(message=message, inchi=inchi, smiles=smiles, mol=mol)
[docs] class NoSynthesisRoute(ChemicalErrorBase): def __init__(self, message: str = "No synthesis route could be found.", inchi: str | None = None, smiles: str | None = None, mol: Chem.Mol | None = None): super().__init__(message=message, inchi=inchi, smiles=smiles, mol=mol)
[docs] class ReactionError(ChemicalErrorBase): def __init__(self, route_uuid: str, message: str = "An error occurred during the reaction.", inchi: str | None = None, smiles: str | None = None, mol: Chem.Mol | None = None):
[docs] self.route_uuid = route_uuid
super().__init__(message=message, inchi=inchi, smiles=smiles, mol=mol)
[docs] class ProductFormationError(ChemicalErrorBase): def __init__(self, route_uuid: str, message: str = "Failed to form the scaffold.", inchi: str | None = None, smiles: str | None = None, mol: Chem.Mol | None = None):
[docs] self.route_uuid = route_uuid
super().__init__(message=message, inchi=inchi, smiles=smiles, mol=mol)
[docs] class ScaffoldPlacementError(ChemicalErrorBase): def __init__(self, route_uuid: str | None = None, message: str = "Scaffold could not be successfully placed.", inchi: str | None = None, smiles: str | None = None, mol: Chem.Mol | None = None):
[docs] self.route_uuid = route_uuid
super().__init__(message=message, inchi=inchi, smiles=smiles, mol=mol)
[docs] class PlacementError(ChemicalErrorBase): def __init__(self, route_uuid: str, message: str = "Placement could not be successfully performed.", inchi: str | None = None, smiles: str | None = None, mol: Chem.Mol | None = None):
[docs] self.route_uuid = route_uuid
super().__init__(message=message, inchi=inchi, smiles=smiles, mol=mol)
[docs] class NoScaffold(ChemicalErrorBase): def __init__(self, route_uuid: str, message: str = "No scaffold could be found.", inchi: str | None = None, smiles: str | None = None, mol: Chem.Mol | None = None):
[docs] self.route_uuid = route_uuid
super().__init__(message=message, inchi=inchi, smiles=smiles, mol=mol)
[docs] class NoToHippo(ChemicalErrorBase): def __init__(self, route_uuid: str, message: str = "The to_hippo pickle file could not be successfully created.", inchi: str | None = None, smiles: str | None = None, mol: Chem.Mol | None = None):
[docs] self.route_uuid = route_uuid
super().__init__(message=message, inchi=inchi, smiles=smiles, mol=mol)
[docs] class APIQueryError(ChemicalErrorBase): def __init__(self, message: str = "The API query did not successfully return critical information.", inchi: str | None = None, smiles: str | None = None, mol: Chem.Mol | None = None, route_uuid: str | None = None):
[docs] self.route_uuid = route_uuid
super().__init__(message=message, inchi=inchi, smiles=smiles, mol=mol)