aizynthfinder.context.stock package

Submodules

aizynthfinder.context.stock.queries module

Module containing classes that interfaces different stocks query classes

class aizynthfinder.context.stock.queries.StockQueryMixin

Bases: object

Mixin class for all query classes, providing a default interface to some methods that might not be possible to implement for each query class.

amount(mol)

Returns the maximum amount of the molecule in stock

Parameters

mol (aizynthfinder.chem.mol.Molecule) – the query molecule

Raises

StockException – if the amount cannot be computed

Returns

the amount

Return type

float

availability_string(mol)

Returns the sources of the molecule

Parameters

mol (aizynthfinder.chem.mol.Molecule) – the query molecule

Raises

StockException – if the string cannot be computed

Returns

a comma-separated list of sources

Return type

str

Finds the entries of the molecule in the stock and cache them if necessary.

Parameters

mol (aizynthfinder.chem.mol.Molecule) – the query molecule

Returns

if the molecule is in stock

Return type

bool

clear_cache()

Clear the internal search cache if available

Return type

None

price(mol)

Returns the minimum price of the molecule in stock

Parameters

mol (aizynthfinder.chem.mol.Molecule) – the query molecule

Raises

StockException – if the price cannot be computed

Return type

float

class aizynthfinder.context.stock.queries.InMemoryInchiKeyQuery(path, inchi_key_col='inchi_key', price_col=None)

Bases: aizynthfinder.context.stock.queries.StockQueryMixin

A stock query class that is based on an in-memory list of pre-computed inchi-keys.

This list can be instantiated from
  • A Pandas dataframe in HDF5 or CSV format

  • A text file with an inchi key on each row

The dataframe must have a column with InChIkeys that by default is “inchi_key”. The HDF5 file must have a dataset called “table”.

If the source is a dataframe, then optionally it can contain prices and this columns can be specified with the “price_column” argument.

Parameters
  • path (str) – the path to the file with inchi-keys

  • inchi_key_col (str) – the name of the column of the InChI keys

  • path

  • inchi_key_col

  • price_col (Optional[str]) –

Paramater price_col

the name of the column with the optional prices

Return type

None

property stock_inchikeys: Set[str]

Return the InChiKeys in this stock

price(mol)

Returns the minimum price of the molecule in stock

Parameters

mol (aizynthfinder.chem.mol.Molecule) – the query molecule

Raises

StockException – if the price cannot be computed

Return type

float

class aizynthfinder.context.stock.queries.MongoDbInchiKeyQuery(host=None, database='stock_db', collection='molecules')

Bases: aizynthfinder.context.stock.queries.StockQueryMixin

A stock query class that is looking up inchi keys in a Mongo database.

The documents in the database collection should have at least 2 fields:
  • inchi_key: the inchi key of the molecule

  • source: the original source of the molecule

Variables
  • client – the Mongo client

  • database – the database instance

  • molecules – the collection of documents

Parameters
  • host (Optional[str]) – the database host, defaults to None

  • database (str) – the database name, defaults to “stock_db”

  • collection (str) – the database collection, defaults to “molecules”

  • host

  • database

  • collection

Return type

None

availability_string(mol)

Returns the sources of the molecule

Parameters

mol (aizynthfinder.chem.mol.Molecule) – the query molecule

Raises

StockException – if the string cannot be computed

Returns

a comma-separated list of sources

Return type

str

class aizynthfinder.context.stock.queries.MolbloomFilterQuery(path, smiles_based=False)

Bases: aizynthfinder.context.stock.queries.StockQueryMixin

A stock query class that is based on an a molbloom filter for SMILES strings or InChI keys

Parameters
  • path (str) – the path to the saved bloom filter

  • smiles_based (bool) – if True will use SMILES for lookup instead of InChI keys

  • path

  • smiles_based

Return type

None

aizynthfinder.context.stock.stock module

Module containing classes that interfaces different stock classes

class aizynthfinder.context.stock.stock.Stock

Bases: aizynthfinder.context.collection.ContextCollection

A collection of molecules that are in stock

A molecule can be queried on the stock with:

my_mol = Molecule(smiles="CCO")
my_mol in stock

One can obtain individual stocks with:

sub_stock = stock["key"]

One can obtain the number of molecules in the selected stock with:

number_of_molecules = len(stock)
Return type

None

property stop_criteria: dict

Return a copy of the stop criteria used by the stock

amount(mol)

Calculate the maximum amount of a molecule in stock

Parameters

mol (aizynthfinder.chem.mol.Molecule) – the molecule to query

Raises

StockException – if the amount could not be computed

Returns

the maximum amount

Return type

float

availability_list(mol)

Return a list of what stocks a given mol is available

If the molecule is not in stock it will return any empty list

Parameters

mol (Molecule) – The molecule to query

Returns

string with a list of stocks that mol was found in

Return type

List[str]

availability_string(mol)

Return a string of what stocks a given mol is available

If the molecule is not in stock it will return “Not in stock”

Parameters

mol (aizynthfinder.chem.mol.Molecule) – The molecule to query

Returns

string with a list of stocks that mol was found in

Return type

str

exclude(mol)

Exclude a molecule from the stock. When this molecule is queried it will return False, regardless if the molecule is in the stock.

Parameters

mol (aizynthfinder.chem.mol.Molecule) – the molecule to exclude

Return type

None

load(source, key)

Add a pre-initialized stock query object to the stock

Parameters
Return type

None

load_from_config(**config)

Load one or more stock queries from a configuration

The key can be “stop_criteria” in case the config is given to the set_stop_criteria method

The format should be key:

type: name of the stock class or custom_package.custom_model.CustomClass path: path to the stock file other settings or params

or key: path_to_model

Parameters

config (Any) – the configuration

Return type

None

price(mol)

Calculate the minimum price of a molecule in stock

Parameters

mol (aizynthfinder.chem.mol.Molecule) – the molecule to query

Raises

StockException – if the price could not be computed

Returns

the minimum price

Return type

float

reset_exclusion_list()

Remove all molecules in the exclusion list

Return type

None

select(value, append=False)

Select one or more stock queries

Parameters
  • value (Union[str, List[str]]) – the key of the stocks to select

  • append (bool) – if True and value is a single key append it to the current selection

Return type

None

set_stop_criteria(criteria=None)

Set criteria that stop the search

The keys of the criteria can be “price” or “amount” which accepts numerical settings, or “counts” that should be dictionary of maximum allowed count for each atomic symbol.

Example:

criteria = {
    "price": 5,
    "amount": 100,
    "counts": {
        "C": 6,
        "O": 4
    }
}
Parameters

criteria (Optional[Dict]) – the criteria settings

Return type

None

smiles_in_stock(smiles)

Check if the SMILES is in the currently selected stocks

Parameters

smiles (str) – SMILES string (must be RDKit sanitizable)

Returns

if the SMILES was on stock

Return type

bool

Module contents

Sub-package containing stock routines