smallworld_api package

exception smallworld_api.NoMatchError[source]

Bases: Exception

No match for the molecule was found.

__init__(*args, **kwargs)
args

Type:    GetSetDescriptorType

with_traceback()

Exception.with_traceback(tb) – set self.__traceback__ to tb and return self.

class smallworld_api.SmallWorld(update_dbs=True)[source]

Bases: Searcher

A python3 API based upon https://wiki.docking.org/index.php/How_to_use_SmallWorld_API

This (SmallWorld) is the main class of the module smallworld_api and is split into separate files by functionality. The classes it bases are as follows: Defaults -> Common -> Base -> Extras -> Searcher -> SmallWorld

For example, class attributes are in Defaults.

Parameters:

update_dbs (bool) –

property REAL_dataset: str
Return type:

str

property WuXi_dataset: str
Return type:

str

property ZINC_dataset: str
Return type:

str

__init__(update_dbs=True)[source]

Initialisation results in the updating of the databases.

Parameters:

update_dbs (bool) –

base_url = 'https://sw.docking.org'

Type:    str

static check_smiles(smiles)
Parameters:

smiles (str) –

db_choices = ['REAL-Database-22Q1.smi.anon', 'WuXi-20Q4.smi.anon', 'all-zinc.smi.anon', 'for-sale.smi.anon', 'wait-ok.smi.anon', 'MculeUltimate-20Q2.smi.anon', 'bb_forsale.smi.anon', 'mcule_full.smi.anon', 'mcule-v.smi.anon', 'old-in-stock.smi.anon', 'mcule.smi.anon', 'informer-set.smi.anon', 'mculebb.smi.anon', 'bb_instock.smi.anon', 'Enamine-BB-Stock-Mar2022.smi.anon', 'Enamine-SC-Stock-Mar2022.smi.anon', 'interesting.smi.anon']

Type:    list

default_submission = {'dist': 8, 'ldn': 2, 'lup': 2, 'maj': 6, 'min': 6, 'rdn': 6, 'rup': 2, 'scores': 'Atom Alignment,ECFP4,Daylight', 'sdist': 12, 'sub': 6, 'tdn': 6, 'tup': 6}

Type:    dict

get_results(start=0, length=10, draw=10)
Parameters:
  • start (int) –

  • length (int) –

  • draw (int) –

Return type:

DataFrame

is_this_mol(item)
Parameters:

item (Any) –

Return type:

bool

mol2smiles(mol)
Parameters:

mol (Mol) –

Return type:

str

reset()
classmethod retrieve_databases()
Return type:

DataFrame

classmethod retrieve_scorefun_options()
Return type:

DataFrame

search(query, db, **other_parameters)[source]

The query can be

  • a single SMILES,

  • a rdkit.Chem.Mol

  • a list of SMILES or rdkit.Chem.Mol

  • a dictionary of SMILES or rdkit.Chem.Mol

These all lead back to .search_smiles, which functions as follows:

Given a smiles and a database return the table of results!

The optional arguments are:

  • dist = 10 (atom difference distance threshhold)

  • several in .default_submission

The number of results given are controlled by:

  • length = 10 (number of results)

  • draw = 10 (pointless atm)

  • start = 0

Which are passed onto .get_results.

Calls submit_query and then get_results (code in search.py) Returns a pandas dataframe of results. The dataframe is not rdkit modified yet.

Parameters:
  • query (Any) –

  • db (str) –

Return type:

DataFrame

search_many(query, db, **other_parameters)[source]

search for many SMILES or Chem.Mol.

Parameters:
  • query (Union[Sequence[Any], Mapping[str, Any]]) –

  • db (str) –

Return type:

DataFrame

search_mol(mol, db, **other_parameters)[source]
Parameters:
  • mol (Mol) –

  • db (str) –

Return type:

DataFrame

search_smiles(smiles, db, **other_parameters)[source]

Given a smiles and a database return the table of results!

The optional arguments are:

  • dist = 10 (atom difference distance threshhold)

  • several in .default_submission

The number of results given are controlled by:

  • length = 10 (number of results)

  • draw = 10 (pointless atm)

  • start = 0

Which are passed onto .get_results.

Calls submit_query and then get_results (code in search.py) Returns a pandas dataframe of results. The dataframe is not rdkit modified yet.

Parameters:
  • smiles (str) –

  • db (str) –

Return type:

DataFrame

sf_choices = ['Atom Alignment', 'SMARTS Alignment', 'ECFP4', 'Daylight']

Type:    list

show_reply_as_html(reply=None)

The API calls may fail for some reason. Generally code 500 due to the server timing out and having issues. This prints the reply.

Parameters:

reply (Optional[Response]) –

property speed_threshold
stream_response = True

Type:    bool

submit_query(params)

The first step.

Return type:

Dict[str, Any]

valid_export_columns = {'columns[0][data]': '0', 'columns[0][name]': 'alignment', 'columns[0][orderable]': 'false', 'columns[0][search][regex]': 'false', 'columns[0][search][value]': '', 'columns[0][searchable]': 'true', 'columns[10][data]': '10', 'columns[10][name]': 'ldn', 'columns[10][orderable]': 'true', 'columns[10][search][regex]': 'false', 'columns[10][search][value]': '0-2', 'columns[10][searchable]': 'true', 'columns[11][data]': '11', 'columns[11][name]': 'lup', 'columns[11][orderable]': 'true', 'columns[11][search][regex]': 'false', 'columns[11][search][value]': '0-2', 'columns[11][searchable]': 'true', 'columns[12][data]': '12', 'columns[12][name]': 'mut', 'columns[12][orderable]': 'true', 'columns[12][search][regex]': 'false', 'columns[12][search][value]': '', 'columns[12][searchable]': 'true', 'columns[13][data]': '13', 'columns[13][name]': 'maj', 'columns[13][orderable]': 'true', 'columns[13][search][regex]': 'false', 'columns[13][search][value]': '0-6', 'columns[13][searchable]': 'true', 'columns[14][data]': '14', 'columns[14][name]': 'min', 'columns[14][orderable]': 'true', 'columns[14][search][regex]': 'false', 'columns[14][search][value]': '0-6', 'columns[14][searchable]': 'true', 'columns[15][data]': '15', 'columns[15][name]': 'hyb', 'columns[15][orderable]': 'true', 'columns[15][search][regex]': 'false', 'columns[15][search][value]': '0-6', 'columns[15][searchable]': 'true', 'columns[16][data]': '16', 'columns[16][name]': 'sub', 'columns[16][orderable]': 'true', 'columns[16][search][regex]': 'false', 'columns[16][search][value]': '0-6', 'columns[16][searchable]': 'true', 'columns[1][data]': '1', 'columns[1][name]': 'dist', 'columns[1][orderable]': 'true', 'columns[1][search][regex]': 'false', 'columns[1][search][value]': '0-12', 'columns[1][searchable]': 'true', 'columns[2][data]': '2', 'columns[2][name]': 'ecfp4', 'columns[2][orderable]': 'true', 'columns[2][search][regex]': 'false', 'columns[2][search][value]': '', 'columns[2][searchable]': 'true', 'columns[3][data]': '3', 'columns[3][name]': 'daylight', 'columns[3][orderable]': 'true', 'columns[3][search][regex]': 'false', 'columns[3][search][value]': '', 'columns[3][searchable]': 'true', 'columns[4][data]': '4', 'columns[4][name]': 'topodist', 'columns[4][orderable]': 'true', 'columns[4][search][regex]': 'false', 'columns[4][search][value]': '0-8', 'columns[4][searchable]': 'true', 'columns[5][data]': '5', 'columns[5][name]': 'mces', 'columns[5][orderable]': 'true', 'columns[5][search][regex]': 'false', 'columns[5][search][value]': '', 'columns[5][searchable]': 'true', 'columns[6][data]': '6', 'columns[6][name]': 'tdn', 'columns[6][orderable]': 'true', 'columns[6][search][regex]': 'false', 'columns[6][search][value]': '0-6', 'columns[6][searchable]': 'true', 'columns[7][data]': '7', 'columns[7][name]': 'tup', 'columns[7][orderable]': 'true', 'columns[7][search][regex]': 'false', 'columns[7][search][value]': '0-6', 'columns[7][searchable]': 'true', 'columns[8][data]': '8', 'columns[8][name]': 'rdn', 'columns[8][orderable]': 'true', 'columns[8][search][regex]': 'false', 'columns[8][search][value]': '0-6', 'columns[8][searchable]': 'true', 'columns[9][data]': '9', 'columns[9][name]': 'rup', 'columns[9][orderable]': 'true', 'columns[9][search][regex]': 'false', 'columns[9][search][value]': '0-2', 'columns[9][searchable]': 'true', 'order[0][column]': '0', 'order[0][dir]': 'asc', 'search[regex]': 'false', 'search[value]': ''}

Type:    dict

valid_submit_keys = ['smi', 'db', 'dist', 'tdn', 'tup', 'rdn', 'rup', 'ldn', 'lup', 'scores']

Type:    list

Private inherited classes

smallworld_api.base module

class smallworld_api.base.Base[source]

Bases: Common

__init__()[source]

The two attributes added during initialisation are for debugging.

reset()[source]

smallworld_api.common_db module

class smallworld_api.common_db.Common[source]

Bases: Defaults

property REAL_dataset: str
Return type:

str

property WuXi_dataset: str
Return type:

str

property ZINC_dataset: str
Return type:

str

smallworld_api.defaults module

class smallworld_api.defaults.Defaults[source]

Bases: object

base_url = 'https://sw.docking.org'

Type:    str

db_choices = ['REAL-Database-22Q1.smi.anon', 'WuXi-20Q4.smi.anon', 'all-zinc.smi.anon', 'for-sale.smi.anon', 'wait-ok.smi.anon', 'MculeUltimate-20Q2.smi.anon', 'bb_forsale.smi.anon', 'mcule_full.smi.anon', 'mcule-v.smi.anon', 'old-in-stock.smi.anon', 'mcule.smi.anon', 'informer-set.smi.anon', 'mculebb.smi.anon', 'bb_instock.smi.anon', 'Enamine-BB-Stock-Mar2022.smi.anon', 'Enamine-SC-Stock-Mar2022.smi.anon', 'interesting.smi.anon']

Type:    list

default_submission = {'dist': 8, 'ldn': 2, 'lup': 2, 'maj': 6, 'min': 6, 'rdn': 6, 'rup': 2, 'scores': 'Atom Alignment,ECFP4,Daylight', 'sdist': 12, 'sub': 6, 'tdn': 6, 'tup': 6}

Type:    dict

sf_choices = ['Atom Alignment', 'SMARTS Alignment', 'ECFP4', 'Daylight']

Type:    list

property speed_threshold
stream_response = True

Type:    bool

valid_export_columns = {'columns[0][data]': '0', 'columns[0][name]': 'alignment', 'columns[0][orderable]': 'false', 'columns[0][search][regex]': 'false', 'columns[0][search][value]': '', 'columns[0][searchable]': 'true', 'columns[10][data]': '10', 'columns[10][name]': 'ldn', 'columns[10][orderable]': 'true', 'columns[10][search][regex]': 'false', 'columns[10][search][value]': '0-2', 'columns[10][searchable]': 'true', 'columns[11][data]': '11', 'columns[11][name]': 'lup', 'columns[11][orderable]': 'true', 'columns[11][search][regex]': 'false', 'columns[11][search][value]': '0-2', 'columns[11][searchable]': 'true', 'columns[12][data]': '12', 'columns[12][name]': 'mut', 'columns[12][orderable]': 'true', 'columns[12][search][regex]': 'false', 'columns[12][search][value]': '', 'columns[12][searchable]': 'true', 'columns[13][data]': '13', 'columns[13][name]': 'maj', 'columns[13][orderable]': 'true', 'columns[13][search][regex]': 'false', 'columns[13][search][value]': '0-6', 'columns[13][searchable]': 'true', 'columns[14][data]': '14', 'columns[14][name]': 'min', 'columns[14][orderable]': 'true', 'columns[14][search][regex]': 'false', 'columns[14][search][value]': '0-6', 'columns[14][searchable]': 'true', 'columns[15][data]': '15', 'columns[15][name]': 'hyb', 'columns[15][orderable]': 'true', 'columns[15][search][regex]': 'false', 'columns[15][search][value]': '0-6', 'columns[15][searchable]': 'true', 'columns[16][data]': '16', 'columns[16][name]': 'sub', 'columns[16][orderable]': 'true', 'columns[16][search][regex]': 'false', 'columns[16][search][value]': '0-6', 'columns[16][searchable]': 'true', 'columns[1][data]': '1', 'columns[1][name]': 'dist', 'columns[1][orderable]': 'true', 'columns[1][search][regex]': 'false', 'columns[1][search][value]': '0-12', 'columns[1][searchable]': 'true', 'columns[2][data]': '2', 'columns[2][name]': 'ecfp4', 'columns[2][orderable]': 'true', 'columns[2][search][regex]': 'false', 'columns[2][search][value]': '', 'columns[2][searchable]': 'true', 'columns[3][data]': '3', 'columns[3][name]': 'daylight', 'columns[3][orderable]': 'true', 'columns[3][search][regex]': 'false', 'columns[3][search][value]': '', 'columns[3][searchable]': 'true', 'columns[4][data]': '4', 'columns[4][name]': 'topodist', 'columns[4][orderable]': 'true', 'columns[4][search][regex]': 'false', 'columns[4][search][value]': '0-8', 'columns[4][searchable]': 'true', 'columns[5][data]': '5', 'columns[5][name]': 'mces', 'columns[5][orderable]': 'true', 'columns[5][search][regex]': 'false', 'columns[5][search][value]': '', 'columns[5][searchable]': 'true', 'columns[6][data]': '6', 'columns[6][name]': 'tdn', 'columns[6][orderable]': 'true', 'columns[6][search][regex]': 'false', 'columns[6][search][value]': '0-6', 'columns[6][searchable]': 'true', 'columns[7][data]': '7', 'columns[7][name]': 'tup', 'columns[7][orderable]': 'true', 'columns[7][search][regex]': 'false', 'columns[7][search][value]': '0-6', 'columns[7][searchable]': 'true', 'columns[8][data]': '8', 'columns[8][name]': 'rdn', 'columns[8][orderable]': 'true', 'columns[8][search][regex]': 'false', 'columns[8][search][value]': '0-6', 'columns[8][searchable]': 'true', 'columns[9][data]': '9', 'columns[9][name]': 'rup', 'columns[9][orderable]': 'true', 'columns[9][search][regex]': 'false', 'columns[9][search][value]': '0-2', 'columns[9][searchable]': 'true', 'order[0][column]': '0', 'order[0][dir]': 'asc', 'search[regex]': 'false', 'search[value]': ''}

Type:    dict

valid_submit_keys = ['smi', 'db', 'dist', 'tdn', 'tup', 'rdn', 'rup', 'ldn', 'lup', 'scores']

Type:    list

smallworld_api.extras module

class smallworld_api.extras.Extras[source]

Bases: Base

static check_smiles(smiles)[source]
Parameters:

smiles (str) –

is_this_mol(item)[source]
Parameters:

item (Any) –

Return type:

bool

mol2smiles(mol)[source]
Parameters:

mol (Mol) –

Return type:

str

classmethod retrieve_databases()[source]
Return type:

DataFrame

classmethod retrieve_scorefun_options()[source]
Return type:

DataFrame

show_reply_as_html(reply=None)[source]

The API calls may fail for some reason. Generally code 500 due to the server timing out and having issues. This prints the reply.

Parameters:

reply (Optional[Response]) –

smallworld_api.nomatcherror module

exception smallworld_api.nomatcherror.NoMatchError[source]

Bases: Exception

No match for the molecule was found.

smallworld_api.search module

class smallworld_api.search.Searcher[source]

Bases: Extras

get_results(start=0, length=10, draw=10)[source]
Parameters:
  • start (int) –

  • length (int) –

  • draw (int) –

Return type:

DataFrame

submit_query(params)[source]

The first step.

Return type:

Dict[str, Any]