def amide(get_atom_ids): a, b, c, d, e, f = get_atom_ids(6) return _amide( carbon=stk.C(a), oxygen=stk.O(b), nitrogen=stk.N(c), hydrogen1=stk.H(d), hydrogen2=stk.H(e), atom=stk.C(f), )
def diol(get_atom_ids): a, b, c, d, e, f = get_atom_ids(6) return _diol( atom1=stk.C(a), oxygen1=stk.O(b), hydrogen1=stk.H(c), atom2=stk.C(d), oxygen2=stk.O(e), hydrogen2=stk.H(f), )
def boronic_acid(get_atom_ids): a, b, c, d, e, f = get_atom_ids(6) return _boronic_acid( boron=stk.B(a), oxygen1=stk.O(b), hydrogen1=stk.H(c), oxygen2=stk.O(d), hydrogen2=stk.H(e), atom=stk.C(f), )
def ring_amine(get_atom_ids): a, b, c, d, e, f, g = get_atom_ids(7) return _ring_amine( nitrogen=stk.N(a), hydrogen1=stk.H(b), hydrogen2=stk.H(c), carbon1=stk.C(d), carbon2=stk.C(e), hydrogen3=stk.H(f), carbon3=stk.C(g), )
def carboxylic_acid(get_atom_ids): a, b, c, d, e = get_atom_ids(5) return _carboxylic_acid( carbon=stk.C(a), oxygen1=stk.O(b), oxygen2=stk.O(c), hydrogen=stk.H(d), atom=stk.C(e), )
def test_torsion_matching(): """ Confirm torsions are appropriately mapped. Check corresponding torsion angles between building blocks and constructed molecules to confirm that the angle is the same in both. """ bb1 = stk.BuildingBlock('NCCNCCN', [stk.PrimaryAminoFactory()]) bb2 = stk.BuildingBlock('O=CCCC=O', [stk.AldehydeFactory()]) assert _polymer_angles_match(bb1, bb2) # Test case designed such that default rdkit torsion for # constructed molecule spans over both building blocks, requiring # stko to correctly clean this up. bonders3 = (stk.C(1), ) deleters3 = (stk.H(7), ) functional_group3 = stk.GenericFunctionalGroup(atoms=bonders3 + deleters3, bonders=bonders3, deleters=deleters3) bb3 = stk.BuildingBlock('CCCC', [functional_group3]) bonders4 = (stk.C(0), ) deleters4 = (stk.H(1), ) functional_group4 = stk.GenericFunctionalGroup(atoms=bonders4 + deleters4, bonders=bonders4, deleters=deleters4) bb4 = stk.BuildingBlock('C', [functional_group4]) assert _polymer_angles_match(bb3, bb4) # Test case for an exterior atom of a building block torsion being # deleted in construction. bonders5 = (stk.C(1), ) deleters5 = (stk.C(0), stk.H(4), stk.H(5), stk.H(6)) functional_group5 = stk.GenericFunctionalGroup(atoms=bonders5 + deleters5, bonders=bonders5, deleters=deleters5) bb5 = stk.BuildingBlock('CCCC', [functional_group5]) bb6 = bb4 assert not _polymer_angles_match(bb5, bb6)
def thiol(get_atom_ids): a, b, c = get_atom_ids(3) return _thiol(stk.S(a), stk.H(b), stk.C(c))
import pytest from pytest_lazyfixture import lazy_fixture import stk # Fixtures must be visible for lazy_fixture() calls. from .fixtures import * # noqa @pytest.fixture( scope='session', params=( lambda: stk.Alcohol( oxygen=stk.O(0), hydrogen=stk.H(1), atom=stk.C(2), bonders=(stk.C(2), ), deleters=(stk.O(0), stk.H(1)), ), lambda: stk.Aldehyde( carbon=stk.C(0), oxygen=stk.O(1), hydrogen=stk.H(2), atom=stk.C(3), bonders=(stk.C(0),), deleters=(stk.O(1),), ), lambda: stk.Alkene( carbon1=stk.C(0), atom1=stk.H(1), atom2=stk.H(2), carbon2=stk.C(3),
import pytest import stk from ..case_data import CaseData @pytest.fixture( scope='session', params=(lambda: CaseData( factory=stk.RingAmineFactory(), molecule=stk.BuildingBlock('NCC(Br)c1c(Br)cccc1'), functional_groups=(stk.RingAmine( nitrogen=stk.N(0), carbon1=stk.C(1), carbon2=stk.C(2), carbon3=stk.C(4), hydrogen1=stk.H(11), hydrogen2=stk.H(12), hydrogen3=stk.H(15), ), ), ), ), ) def case_data(request) -> CaseData: """ A :class:`.CaseData` instance. """ return request.param()
from .case_data import CaseData # Fixtures need to be visible for lazy_fixture() calls. from .fixtures import * # noqa @pytest.fixture( params=[ stk.BuildingBlock.init( atoms=(stk.C(0, 4), ), bonds=(), position_matrix=np.array([[0.0, 0.0, 0.0]]), functional_groups=(), ), stk.BuildingBlock.init( atoms=(stk.C(0, 3), stk.H(1)), bonds=(stk.Bond(stk.C(0, 3), stk.H(1), 1), ), position_matrix=np.array([ [0.39382080513175644, 0.0, 0.0], [-0.39382080513175644, 0.0, 0.0], ]), functional_groups=(), ), stk.BuildingBlock.init( atoms=(stk.C(0, 2), stk.H(1), stk.H(2)), bonds=( stk.Bond(stk.C(0, 2), stk.H(1), 1), stk.Bond(stk.C(0, 2), stk.H(2), 1), ), position_matrix=np.array([ [-0.002271396061231665, 0.034037398527897535, -0.0],
def thioacid(get_atom_ids): a, b, c, d, e = get_atom_ids(5) return _thioacid(stk.C(a), stk.O(b), stk.S(c), stk.H(d), stk.C(e))
def alcohol(get_atom_ids): a, b, c = get_atom_ids(3) return _alcohol(stk.O(a), stk.H(b), stk.C(c))
def primary_amino(get_atom_ids): a, b, c, d = get_atom_ids(4) return _primary_amino(stk.N(a), stk.H(b), stk.H(c), stk.C(d))
import pytest from pytest_lazyfixture import lazy_fixture import stk # Fixtures need to visible for lazy_fixture() calls. from .fixtures import * # noqa @pytest.fixture( params=( stk.Alcohol( oxygen=stk.O(1), hydrogen=stk.H(2), atom=stk.C(2), bonders=(stk.C(2), ), deleters=(stk.O(1), stk.H(2)), ), stk.Aldehyde( carbon=stk.C(0), oxygen=stk.O(1), hydrogen=stk.H(2), atom=stk.C(3), bonders=(stk.C(0), ), deleters=(stk.O(1), ), ), stk.Alkene( carbon1=stk.C(1), atom1=stk.C(2), atom2=stk.C(3), carbon2=stk.C(4), atom3=stk.C(5),
import pytest import stk from .case_data import CaseData @pytest.fixture( params=(CaseData( molecule=stk.BuildingBlock('NCCN'), atoms=( stk.N(0), stk.C(1), stk.C(2), stk.N(3), stk.H(4), stk.H(5), stk.H(6), stk.H(7), stk.H(8), stk.H(9), stk.H(10), stk.H(11), ), ), ), ) def case_data(request): """ A :class:`.CaseData` instance. """ return request.param
def aldehyde(get_atom_ids): a, b, c, d = get_atom_ids(4) return _aldehyde(stk.C(a), stk.O(b), stk.H(c), stk.C(d))
import pytest import stk from .case_data import CaseData @pytest.fixture(params=[stk.C(0), stk.H(1), stk.K(12)]) def atom(request): """ An :class:`.Atom` instance. """ return request.param.clone() @pytest.fixture def atom1(atom): """ An :class:`.Atom` instance. """ return atom.clone() @pytest.fixture def atom2(atom): """ An :class:`.Atom` instance.
import pytest import stk from ..case_data import CaseData @pytest.fixture( scope='session', params=( lambda: CaseData( factory=stk.PrimaryAminoFactory(), molecule=stk.BuildingBlock('NCCN'), functional_groups=( stk.PrimaryAmino( nitrogen=stk.N(0), hydrogen1=stk.H(4), hydrogen2=stk.H(5), atom=stk.C(1), bonders=(stk.N(0), ), deleters=(stk.H(4), stk.H(5)), ), stk.PrimaryAmino( nitrogen=stk.N(3), hydrogen1=stk.H(10), hydrogen2=stk.H(11), atom=stk.C(2), bonders=(stk.N(3), ), deleters=(stk.H(10), stk.H(11)), ), ), ),
def hydrogen(): return stk.H(1, -3, attr1='12', attr2=32, _attr3=12.2)
def secondary_amino(get_atom_ids): a, b, c, d = get_atom_ids(4) return _secondary_amino(stk.N(a), stk.H(b), stk.C(c), stk.C(d))
import pytest import stk from .case_data import CaseData @pytest.fixture( params=(CaseData( molecule=stk.BuildingBlock('NCCN'), bonds=( stk.Bond(stk.N(0), stk.C(1), 1), stk.Bond(stk.C(1), stk.C(2), 1), stk.Bond(stk.C(2), stk.N(3), 1), stk.Bond(stk.N(0), stk.H(4), 1), stk.Bond(stk.N(0), stk.H(5), 1), stk.Bond(stk.C(1), stk.H(6), 1), stk.Bond(stk.C(1), stk.H(7), 1), stk.Bond(stk.C(2), stk.H(8), 1), stk.Bond(stk.C(2), stk.H(9), 1), stk.Bond(stk.N(3), stk.H(10), 1), stk.Bond(stk.N(3), stk.H(11), 1), ), ), ), ) def case_data(request): return request.param