Example #1
0
import pytest
import stk

from .case_data import CaseData


@pytest.fixture(
    params=(
        CaseData(
            key_maker=stk.Inchi(),
            molecule=stk.BuildingBlock('NCCN'),
            key_name='InChI',
            key='InChI=1S/C2H8N2/c3-1-2-4/h1-4H2',
        ),
        CaseData(
            key_maker=stk.InchiKey(),
            molecule=stk.BuildingBlock('NCCN'),
            key_name='InChIKey',
            key='PIICEJLVQHRZGT-UHFFFAOYSA-N',
        ),
        CaseData(
            key_maker=stk.Smiles(),
            molecule=stk.BuildingBlock('NCCN'),
            key_name='SMILES',
            key='NCCN',
        ),
        CaseData(
            key_maker=stk.Smiles(),
            molecule=stk.BuildingBlock('C(N)CN'),
            key_name='SMILES',
            key='NCCN',
Example #2
0
def test_get_all(mongo_client):
    """
    Test iteration over all molecules.

    """

    database_name = '_test_get_entries_constructed_molecule'
    mongo_client.drop_database(database_name)

    key_maker = stk.Inchi()
    jsonizer = stk.ConstructedMoleculeJsonizer(
        key_makers=(key_maker, )
    )

    database = stk.ConstructedMoleculeMongoDb(
        mongo_client=mongo_client,
        database=database_name,
        jsonizer=jsonizer,
        put_lru_cache_size=0,
        get_lru_cache_size=0,
    )

    molecules = [
        stk.ConstructedMolecule(
            topology_graph=stk.polymer.Linear(
                building_blocks=(stk.BuildingBlock(
                    smiles='BrCCCBr',
                    functional_groups=[stk.BromoFactory()]),
                ),
                repeating_unit='A',
                num_repeating_units=3,
            ),
        ),
        stk.ConstructedMolecule(
            topology_graph=stk.polymer.Linear(
                building_blocks=(
                    stk.BuildingBlock(
                        smiles='BrCCBr',
                        functional_groups=[stk.BromoFactory()]
                    ),
                    stk.BuildingBlock(
                        smiles='BrCNCBr',
                        functional_groups=[stk.BromoFactory()]
                    ),
                ),
                repeating_unit='AB',
                num_repeating_units=2,
            ),
        ),
    ]
    molecules_by_key = {
        key_maker.get_key(molecule): molecule
        for molecule in molecules
    }

    for molecule in molecules:
        database.put(molecule)

    for i, retrieved in enumerate(database.get_all()):
        key = key_maker.get_key(retrieved)
        molecule = molecules_by_key[key]
        is_equivalent_constructed_molecule(
            molecule.with_canonical_atom_ordering(),
            retrieved.with_canonical_atom_ordering(),
        )

    # Check number of molecules.
    assert i+1 == len(molecules)
Example #3
0
import stk
import numpy as np
import pytest

from .case_data import CaseData


@pytest.fixture(
    params=(
        CaseData(
            jsonizer=stk.MoleculeJsonizer(key_makers=(
                stk.Inchi(),
                stk.InchiKey(),
            )),
            molecule=stk.BuildingBlock(
                smiles='Br[C+2][C+2]Br', ).with_position_matrix(
                    np.array([
                        [0, 0, 0],
                        [1, 1, 1],
                        [2, 2, 2],
                        [3, 3, 3],
                    ],
                             dtype=np.float64)),
            json={
                'molecule': {
                    'a': (
                        (35, 0),
                        (6, 2),
                        (6, 2),
                        (35, 0),
                    ),
Example #4
0
def get_inchis(batch):
    inchi = stk.Inchi()
    return tuple(inchi.get_key(record.get_molecule()) for record in batch)