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',
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)
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), ),
def get_inchis(batch): inchi = stk.Inchi() return tuple(inchi.get_key(record.get_molecule()) for record in batch)