def test__to_local_stereo(): """ test graph.to_local_stereo """ # Atom parity test: # Indices 3 and 4 are swapped so that local stereo will have opposite # parity can_gra = ({ 0: ('C', 3, None), 1: ('C', 0, True), 2: ('F', 0, None), 4: ('N', 2, None), 3: ('O', 1, None) }, { frozenset({0, 1}): (1, None), frozenset({1, 4}): (1, None), frozenset({1, 3}): (1, None), frozenset({1, 2}): (1, None) }) can_par = graph.atom_stereo_parities(can_gra)[1] loc_gra = graph.to_local_stereo(can_gra) loc_par = graph.atom_stereo_parities(loc_gra)[1] print(can_par, loc_par) assert can_par is True assert loc_par is False # Bond parity test: # Indices 3 and 5 are swapped so that local stereo will have opposite # parity can_gra = ({ 0: ('C', 0, None), 1: ('C', 0, None), 2: ('Cl', 0, None), 5: ('Cl', 0, None), 4: ('F', 0, None), 3: ('F', 0, None) }, { frozenset({0, 1}): (1, True), frozenset({0, 2}): (1, None), frozenset({0, 4}): (1, None), frozenset({1, 3}): (1, None), frozenset({1, 5}): (1, None) }) can_par = graph.bond_stereo_parities(can_gra)[frozenset({0, 1})] loc_gra = graph.to_local_stereo(can_gra) loc_par = graph.bond_stereo_parities(loc_gra)[frozenset({0, 1})] print(can_par, loc_par) assert can_par is True assert loc_par is False
def test__from_data(): """ test getters """ cgr = automol.graph.from_data( atm_symb_dct=graph.atom_symbols(C8H13O_CGR), bnd_keys=graph.bond_keys(C8H13O_CGR), atm_imp_hyd_vlc_dct=( graph.atom_implicit_hydrogen_valences(C8H13O_CGR)), ) assert cgr == C8H13O_CGR rgr = automol.graph.from_data( atm_symb_dct=graph.atom_symbols(C8H13O_RGR), bnd_keys=graph.bond_keys(C8H13O_RGR), atm_imp_hyd_vlc_dct=( graph.atom_implicit_hydrogen_valences(C8H13O_RGR)), bnd_ord_dct=graph.bond_orders(C8H13O_RGR), ) assert rgr == C8H13O_RGR sgr = automol.graph.from_data( atm_symb_dct=graph.atom_symbols(C8H13O_SGR), bnd_keys=graph.bond_keys(C8H13O_SGR), atm_imp_hyd_vlc_dct=( graph.atom_implicit_hydrogen_valences(C8H13O_SGR)), atm_ste_par_dct=graph.atom_stereo_parities(C8H13O_SGR), bnd_ste_par_dct=graph.bond_stereo_parities(C8H13O_SGR)) assert sgr == C8H13O_SGR
def test__from_dictionaries(): """ test graph.from_dictionaries """ assert graph.from_dictionaries( graph.atom_symbols(CH2FH2H_CGR_EXP), graph.bond_keys(CH2FH2H_CGR_EXP) ) == CH2FH2H_CGR_EXP assert graph.from_dictionaries( graph.atom_symbols(C8H13O_RGRS[0]), graph.bond_keys(C8H13O_RGRS[0]), atm_imp_hyd_vlc_dct=graph.atom_implicit_hydrogen_valences( C8H13O_RGRS[0]), bnd_ord_dct=graph.bond_orders(C8H13O_RGRS[0]) ) == C8H13O_RGRS[0] assert graph.from_dictionaries( graph.atom_symbols(C8H13O_SGRS[0]), graph.bond_keys(C8H13O_SGRS[0]), atm_imp_hyd_vlc_dct=graph.atom_implicit_hydrogen_valences( C8H13O_SGRS[0]), atm_ste_par_dct=graph.atom_stereo_parities(C8H13O_SGRS[0]), bnd_ste_par_dct=graph.bond_stereo_parities(C8H13O_SGRS[0]) ) == C8H13O_SGRS[0] # a litte ridiculous, but make sure we get the keys right sgr_ref = C8H13O_SGRS[0] natms = len(graph.atoms(sgr_ref)) for _ in range(10): pmt_dct = dict(enumerate(numpy.random.permutation(natms))) sgr = graph.relabel(sgr_ref, pmt_dct) assert graph.from_dictionaries( graph.atom_symbols(sgr), graph.bond_keys(sgr), atm_imp_hyd_vlc_dct=graph.atom_implicit_hydrogen_valences(sgr), atm_ste_par_dct=graph.atom_stereo_parities(sgr), bnd_ste_par_dct=graph.bond_stereo_parities(sgr) ) == sgr