示例#1
0
def test_1_7_aromatic_heteroatom_enumeration2():
    """1,7 aromatic heteroatom H shift"""
    assert enumerate_tautomers_smiles('c1ccc2c(c1)NC(=C1N=c3ccccc3=N1)N2') == {
        'c1ccc2[nH]c(-c3nc4ccccc4[nH]3)nc2c1',
        'c1ccc2c(c1)=NC(c1nc3ccccc3[nH]1)N=2',
        'c1ccc2c(c1)NC(=C1N=c3ccccc3=N1)N2'
    }
示例#2
0
def test_1_5_keto_enol_enumeration():
    """1,5 keto/enol tautomer"""
    assert enumerate_tautomers_smiles('Oc1nccc2cc[nH]c(=N)c12') == {
        'Nc1nccc2ccnc(O)c12', 'N=c1[nH]ccc2ccnc(O)c12',
        'Nc1[nH]ccc2ccnc(=O)c1-2', 'Nc1nccc2cc[nH]c(=O)c12',
        'N=c1[nH]ccc2cc[nH]c(=O)c12', 'N=c1nccc2cc[nH]c(O)c1-2'
    }
示例#3
0
def test_gaunine_enumeration():
    """Gaunine tautomers"""
    assert enumerate_tautomers_smiles('N1C(N)=NC=2N=CNC2C1=O') == {
        'N=c1[nH]c(=O)c2[nH]cnc2[nH]1', 'N=c1[nH]c(=O)c2nc[nH]c2[nH]1',
        'N=c1[nH]c2ncnc-2c(O)[nH]1', 'N=c1nc(O)c2[nH]cnc2[nH]1',
        'N=c1nc(O)c2nc[nH]c2[nH]1', 'N=c1nc2[nH]cnc2c(O)[nH]1',
        'N=c1nc2nc[nH]c2c(O)[nH]1', 'Nc1nc(=O)c2[nH]cnc2[nH]1',
        'Nc1nc(=O)c2nc[nH]c2[nH]1', 'Nc1nc(O)c2[nH]cnc2n1',
        'Nc1nc(O)c2nc[nH]c2n1', 'Nc1nc(O)c2ncnc-2[nH]1',
        'Nc1nc2[nH]cnc2c(=O)[nH]1', 'Nc1nc2nc[nH]c2c(=O)[nH]1',
        'Nc1nc2ncnc-2c(O)[nH]1'
    }
示例#4
0
def test_1_5_aromatic_heteroatom_enumeration8():
    """1,5 aromatic heteroatom H shift"""
    assert enumerate_tautomers_smiles('C2(C1=C([NH]C=N1)[NH]C(=N2)N)=O') == {
        'N=c1[nH]c2ncnc-2c(O)[nH]1', 'Nc1nc(O)c2ncnc-2[nH]1',
        'N=c1nc(O)c2nc[nH]c2[nH]1', 'Nc1nc2ncnc-2c(O)[nH]1',
        'N=c1nc2nc[nH]c2c(O)[nH]1', 'N=c1[nH]c(=O)c2nc[nH]c2[nH]1',
        'N=c1nc(O)c2[nH]cnc2[nH]1', 'N=c1[nH]c(=O)c2[nH]cnc2[nH]1',
        'Nc1nc(=O)c2nc[nH]c2[nH]1', 'Nc1nc(O)c2nc[nH]c2n1',
        'Nc1nc(=O)c2[nH]cnc2[nH]1', 'N=c1nc2[nH]cnc2c(O)[nH]1',
        'Nc1nc2[nH]cnc2c(=O)[nH]1', 'Nc1nc2nc[nH]c2c(=O)[nH]1',
        'Nc1nc(O)c2[nH]cnc2n1'
    }
示例#5
0
def test_gaunine_enumeration():
    """Gaunine tautomers"""
    assert enumerate_tautomers_smiles('N1C(N)=NC=2N=CNC2C1=O') == {
        'N=c1[nH]c(=O)c2[nH]cnc2[nH]1',
        'N=c1[nH]c(=O)c2nc[nH]c2[nH]1',
        'N=c1[nH]c2ncnc-2c(O)[nH]1',
        'N=c1nc(O)c2[nH]cnc2[nH]1',
        'N=c1nc(O)c2nc[nH]c2[nH]1',
        'N=c1nc2[nH]cnc2c(O)[nH]1',
        'N=c1nc2nc[nH]c2c(O)[nH]1',
        'Nc1nc(=O)c2[nH]cnc2[nH]1',
        'Nc1nc(=O)c2nc[nH]c2[nH]1',
        'Nc1nc(O)c2[nH]cnc2n1',
        'Nc1nc(O)c2nc[nH]c2n1',
        'Nc1nc(O)c2ncnc-2[nH]1',
        'Nc1nc2[nH]cnc2c(=O)[nH]1',
        'Nc1nc2nc[nH]c2c(=O)[nH]1',
        'Nc1nc2ncnc-2c(O)[nH]1'
    }
示例#6
0
def test_heterocyclic_enumeration2():
    """heterocyclic tautomer"""
    eq_(enumerate_tautomers_smiles('c1cc(=O)[nH]c2nccn12'), {'O=c1ccn2cc[nH]c2n1', 'Oc1ccn2ccnc2n1', 'O=c1ccn2ccnc2[nH]1'})
示例#7
0
def test_1_3_keto_enol_enumeration2():
    """Enumerate 1,3 keto/enol tautomer."""
    assert enumerate_tautomers_smiles('C1(CCCCC1)=O') == {'OC1=CCCCC1', 'O=C1CCCCC1'}
示例#8
0
def test_mobile_double_stereochemistry_enumeration3():
    """Remove stereochemistry from mobile double bonds"""
    assert enumerate_tautomers_smiles('C/C=C\\C(C)=O') == {'C=C(O)C=CC', 'C=CCC(=C)O', 'CC=CC(C)=O', 'C=CCC(C)=O', 'C=CC=C(C)O'}
示例#9
0
def test_aliphatic_imine_enumeration2():
    """aliphatic imine tautomer"""
    assert enumerate_tautomers_smiles('C1(=CCCCC1)N') == {'N=C1CCCCC1', 'NC1=CCCCC1'}
示例#10
0
def test_oxim_nitroso_enumeration2():
    """oxim nitroso tautomer"""
    assert enumerate_tautomers_smiles('CC(C)N=O') == {'CC(C)N=O', 'CC(C)=NO', 'C=C(C)NO'}
示例#11
0
def test_isocyanide_enumeration2():
    """isocyanide tautomer"""
    assert enumerate_tautomers_smiles('[C-]#[NH+]') == {'[C-]#[NH+]', 'C#N'}
示例#12
0
def test_acetophenone_keto_enol_enumeration():
    """Enumerate acetophenone keto/enol tautomer."""
    eq_(enumerate_tautomers_smiles('C(=C)(O)C1=CC=CC=C1'), {'C=C(O)c1ccccc1', 'CC(=O)c1ccccc1'})
示例#13
0
def test_acetophenone_keto_enol_enumeration():
    """Enumerate acetophenone keto/enol tautomer."""
    assert enumerate_tautomers_smiles('C(=C)(O)C1=CC=CC=C1') == {'C=C(O)c1ccccc1', 'CC(=O)c1ccccc1'}
示例#14
0
def test_keten_ynol_enumeration2():
    """keten/ynol tautomer"""
    eq_(enumerate_tautomers_smiles('CC#CO'), {'CC=C=O', 'CC#CO'})
示例#15
0
def test_ionic_nitro_aci_nitro_enumeration2():
    """ionic nitro/aci-nitro tautomer"""
    eq_(enumerate_tautomers_smiles('C(=[N+](O)[O-])C'), {'CC[N+](=O)[O-]', 'CC=[N+]([O-])O'})
示例#16
0
def test_furanone_enumeration2():
    """furanone tautomer"""
    eq_(enumerate_tautomers_smiles('O=C1CC=CO1'), {'Oc1ccco1', 'O=C1CC=CO1'})
示例#17
0
def test_heterocyclic_enumeration5():
    """heterocyclic tautomer"""
    eq_(enumerate_tautomers_smiles('c1cnc2ccc[nH]c12'), {'c1c[nH]c2ccnc-2c1', 'c1cnc2cc[nH]c2c1'})
示例#18
0
def test_heterocyclic_enumeration4():
    """heterocyclic tautomer"""
    eq_(enumerate_tautomers_smiles('n1ccc2c[nH]ccc12'), {'c1cc2[nH]ccc2cn1', 'c1cc2c[nH]ccc-2n1'})
示例#19
0
def test_1_11_aromatic_heteroatom_enumeration2():
    """1,11 aromatic heteroatom H shift"""
    assert enumerate_tautomers_smiles('N=C1C=CC(=Cc2ccc(O)cc2)C=C1') == {'Nc1ccc(C=C2C=CC(=O)C=C2)cc1', 'N=C1C=CC(=CC2C=CC(=O)C=C2)C=C1', 'N=C1C=CC(=Cc2ccc(O)cc2)C=C1', 'N=C1C=CC(C=C2C=CC(=O)C=C2)C=C1'}
示例#20
0
def test_oxim_nitroso_enumeration2():
    """oxim nitroso tautomer"""
    eq_(enumerate_tautomers_smiles('CC(C)N=O'), {'CC(C)N=O', 'CC(C)=NO', 'C=C(C)NO'})
示例#21
0
def test_heterocyclic_enumeration4():
    """heterocyclic tautomer"""
    assert enumerate_tautomers_smiles('n1ccc2c[nH]ccc12') == {'c1cc2[nH]ccc2cn1', 'c1cc2c[nH]ccc-2n1'}
示例#22
0
def test_oxim_nitroso_enumeration4():
    """oxim/nitroso tautomer via phenol"""
    eq_(enumerate_tautomers_smiles('O=C1C=CC(=NO)C=C1'), {'O=NC1C=CC(=O)C=C1', 'O=C1C=CC(=NO)C=C1', 'O=Nc1ccc(O)cc1'})
示例#23
0
def test_keten_ynol_enumeration2():
    """keten/ynol tautomer"""
    assert enumerate_tautomers_smiles('CC#CO') == {'CC=C=O', 'CC#CO'}
示例#24
0
def test_cyano_iso_cyanic_acid_enumeration2():
    """cyano/iso-cyanic acid tautomer"""
    eq_(enumerate_tautomers_smiles('C(=N)=O'), {'N#CO', 'N=C=O'})
示例#25
0
def test_acetone_keto_enol_enumeration2():
    """Enumerate acetone keto/enol tautomer."""
    assert enumerate_tautomers_smiles('CC(C)=O') == {'CC(C)=O', 'C=C(C)O'}
示例#26
0
def test_formamidinesulfinic_acid_enumeration2():
    """formamidinesulfinic acid tautomer"""
    eq_(enumerate_tautomers_smiles('N=C(N)S(=O)O'), {'N=C(N)S(=O)O', 'N[C](N)[S](=O)=O'})
示例#27
0
def test_mobile_double_stereochemistry_enumeration():
    """Remove stereochemistry from mobile double bonds"""
    assert enumerate_tautomers_smiles('c1(ccccc1)/C=C(/O)\\C') == {'C=C(O)Cc1ccccc1', 'CC(O)=Cc1ccccc1', 'CC(=O)Cc1ccccc1'}
示例#28
0
def test_isocyanide_enumeration2():
    """isocyanide tautomer"""
    eq_(enumerate_tautomers_smiles('[C-]#[NH+]'), {'[C-]#[NH+]', 'C#N'})
示例#29
0
def test_phenylpropanone_keto_enol_enumeration():
    """1-phenyl-2-propanone enol/keto"""
    assert enumerate_tautomers_smiles('c1(ccccc1)CC(=O)C') == {'C=C(O)Cc1ccccc1', 'CC(=O)Cc1ccccc1', 'CC(O)=Cc1ccccc1'}
示例#30
0
def test_acetone_keto_enol_enumeration2():
    """Enumerate acetone keto/enol tautomer."""
    eq_(enumerate_tautomers_smiles('CC(C)=O'), {'CC(C)=O', 'C=C(C)O'})
示例#31
0
def test_1_3_aromatic_heteroatom_enumeration3():
    """1,3 aromatic heteroatom H shift"""
    assert enumerate_tautomers_smiles('Oc1ncc[nH]1') == {'Oc1ncc[nH]1', 'O=c1[nH]cc[nH]1'}
示例#32
0
def test_phosphonic_acid_enumeration2():
    """phosphonic acid tautomer"""
    eq_(enumerate_tautomers_smiles('P(O)(O)O'), {'OP(O)O', 'O=[PH](O)O'})
示例#33
0
def test_1_7_aromatic_heteroatom_enumeration2():
    """1,7 aromatic heteroatom H shift"""
    eq_(enumerate_tautomers_smiles('c1ccc2c(c1)NC(=C1N=c3ccccc3=N1)N2'), {'C1=CC2=NC(C3N=c4ccccc4=N3)=NC2C=C1', 'C1=CC2=NC(c3nc4ccccc4[nH]3)=NC2C=C1', 'c1ccc2[nH]c(-c3nc4ccccc4[nH]3)nc2c1', 'C1=CC2=NC(=C3N=c4ccccc4=N3)NC2C=C1', 'c1ccc2c(c1)=NC(c1nc3ccccc3[nH]1)N=2', 'c1ccc2c(c1)NC(=C1N=c3ccccc3=N1)N2'})
示例#34
0
def test_mobile_double_stereochemistry_enumeration():
    """Remove stereochemistry from mobile double bonds"""
    eq_(enumerate_tautomers_smiles('c1(ccccc1)/C=C(/O)\\C'), {'C=C(O)Cc1ccccc1', 'CC(O)=Cc1ccccc1', 'CC(=O)Cc1ccccc1'})
示例#35
0
def test_1_9_aromatic_heteroatom_enumeration2():
    """1,9 aromatic heteroatom H shift"""
    assert enumerate_tautomers_smiles('CN=c1ccnc2nc[nH]n21') == {'CN=c1ccnc2nc[nH]n12', 'CN=c1cc[nH]c2ncnn12', 'CN=c1ccnc2[nH]cnn12', 'CNc1ccnc2ncnn12'}
示例#36
0
def test_mobile_double_stereochemistry_enumeration3():
    """Remove stereochemistry from mobile double bonds"""
    eq_(enumerate_tautomers_smiles('C/C=C\C(C)=O'), {'C=C(O)C=CC', 'C=CCC(=C)O', 'CC=CC(C)=O', 'C=CCC(C)=O', 'C=CC=C(C)O'})
示例#37
0
def test_heterocyclic_enumeration2():
    """heterocyclic tautomer"""
    assert enumerate_tautomers_smiles('c1cc(=O)[nH]c2nccn12') == {'O=c1ccn2cc[nH]c2n1', 'Oc1ccn2ccnc2n1', 'O=c1ccn2ccnc2[nH]1'}
示例#38
0
def test_keto_enol_enumeration():
    """keto/enol tautomer"""
    eq_(enumerate_tautomers_smiles('OC(C)=C(C)C'), {'C=C(O)C(C)C', 'CC(C)=C(C)O', 'CC(=O)C(C)C'})
示例#39
0
def test_heterocyclic_enumeration5():
    """heterocyclic tautomer"""
    assert enumerate_tautomers_smiles('c1cnc2ccc[nH]c12') == {'c1c[nH]c2ccnc-2c1', 'c1cnc2cc[nH]c2c1'}
示例#40
0
def test_phenylpropanone_keto_enol_enumeration():
    """1-phenyl-2-propanone enol/keto"""
    eq_(enumerate_tautomers_smiles('c1(ccccc1)CC(=O)C'), {'C=C(O)Cc1ccccc1', 'CC(=O)Cc1ccccc1', 'CC(O)=Cc1ccccc1'})
示例#41
0
def test_furanone_enumeration2():
    """furanone tautomer"""
    assert enumerate_tautomers_smiles('O=C1CC=CO1') == {'Oc1ccco1', 'O=C1CC=CO1'}
示例#42
0
def test_1_5_keto_enol_enumeration():
    """1,5 keto/enol tautomer"""
    eq_(enumerate_tautomers_smiles('Oc1nccc2cc[nH]c(=N)c12'), {'Nc1nccc2ccnc(O)c12', 'N=c1[nH]ccc2ccnc(O)c12', 'Nc1[nH]ccc2ccnc(=O)c1-2', 'Nc1nccc2cc[nH]c(=O)c12', 'N=c1[nH]ccc2cc[nH]c(=O)c12', 'N=c1nccc2cc[nH]c(O)c1-2'})
示例#43
0
def test_ionic_nitro_aci_nitro_enumeration2():
    """ionic nitro/aci-nitro tautomer"""
    assert enumerate_tautomers_smiles('C(=[N+](O)[O-])C') == {'CC[N+](=O)[O-]', 'CC=[N+]([O-])O'}
示例#44
0
def test_1_5_keto_enol_enumeration3():
    """1,5 keto/enol tautomer"""
    eq_(enumerate_tautomers_smiles('C1(=CC=CCC1)O'), {'O=C1C=CCCC1', 'OC1=CCC=CC1', 'OC1=CC=CCC1', 'O=C1CC=CCC1', 'OC1=CCCC=C1'})
示例#45
0
def test_oxim_nitroso_enumeration4():
    """oxim/nitroso tautomer via phenol"""
    assert enumerate_tautomers_smiles('O=C1C=CC(=NO)C=C1') == {'O=NC1C=CC(=O)C=C1', 'O=C1C=CC(=NO)C=C1', 'O=Nc1ccc(O)cc1'}
示例#46
0
def test_aliphatic_imine_enumeration2():
    """aliphatic imine tautomer"""
    eq_(enumerate_tautomers_smiles('C1(=CCCCC1)N'), {'N=C1CCCCC1', 'NC1=CCCCC1'})
示例#47
0
def test_cyano_iso_cyanic_acid_enumeration2():
    """cyano/iso-cyanic acid tautomer"""
    assert enumerate_tautomers_smiles('C(=N)=O') == {'N#CO', 'N=C=O'}
示例#48
0
def test_special_imine_enumeration2():
    """special imine tautomer"""
    eq_(enumerate_tautomers_smiles('C1(=NC=CC=C1)CC'), {'CC=C1C=CC=CN1', 'CCc1ccccn1', 'CC=C1C=CCC=N1'})
示例#49
0
def test_phosphonic_acid_enumeration2():
    """phosphonic acid tautomer"""
    assert enumerate_tautomers_smiles('P(O)(O)O') == {'OP(O)O', 'O=[PH](O)O'}
示例#50
0
def test_1_3_aromatic_heteroatom_enumeration3():
    """1,3 aromatic heteroatom H shift"""
    eq_(enumerate_tautomers_smiles('Oc1ncc[nH]1'), {'Oc1ncc[nH]1', 'O=c1[nH]cc[nH]1'})
示例#51
0
def test_keto_enol_enumeration():
    """keto/enol tautomer"""
    assert enumerate_tautomers_smiles('OC(C)=C(C)C') == {'C=C(O)C(C)C', 'CC(C)=C(C)O', 'CC(=O)C(C)C'}
示例#52
0
def test_1_3_heteroatom_enumeration():
    """1,3 heteroatom H shift"""
    eq_(enumerate_tautomers_smiles('OC(C)=NC'), {'CN=C(C)O', 'CNC(C)=O', 'C=C(O)NC'})
示例#53
0
def test_many_enumeration():
    """Test a structure with hundreds of tautomers."""
    assert len(enumerate_tautomers_smiles('[H][C](CO)(NC(=O)C1=C(O)C(O)=CC=C1)C(O)=O')) == 375
示例#54
0
def test_1_5_aromatic_heteroatom_enumeration13():
    """1,5 aromatic heteroatom H shift"""
    eq_(enumerate_tautomers_smiles('CN=c1nc[nH]cc1'), {'CN=c1ccnc[nH]1', 'CNc1ccncn1', 'CN=c1cc[nH]cn1'})
示例#55
0
def test_1_5_keto_enol_enumeration3():
    """1,5 keto/enol tautomer"""
    assert enumerate_tautomers_smiles('C1(=CC=CCC1)O') == {'O=C1C=CCCC1', 'OC1=CCC=CC1', 'OC1=CC=CCC1', 'O=C1CC=CCC1', 'OC1=CCCC=C1'}
示例#56
0
def test_1_11_aromatic_heteroatom_enumeration2():
    """1,11 aromatic heteroatom H shift"""
    eq_(enumerate_tautomers_smiles('N=C1C=CC(=Cc2ccc(O)cc2)C=C1'), {'Nc1ccc(C=C2C=CC(=O)C=C2)cc1', 'N=C1C=CC(=CC2C=CC(=O)C=C2)C=C1', 'N=C1C=CC(=Cc2ccc(O)cc2)C=C1', 'N=C1C=CC(C=C2C=CC(=O)C=C2)C=C1'})
示例#57
0
def test_special_imine_enumeration2():
    """special imine tautomer"""
    assert enumerate_tautomers_smiles('C1(=NC=CC=C1)CC') == {'CC=C1C=CC=CN1', 'CCc1ccccn1', 'CC=C1C=CCC=N1'}
示例#58
0
def test_1_9_aromatic_heteroatom_enumeration2():
    """1,9 aromatic heteroatom H shift"""
    eq_(enumerate_tautomers_smiles('CN=c1ccnc2nc[nH]n21'), {'CN=c1ccnc2nc[nH]n12', 'CN=c1cc[nH]c2ncnn12', 'CN=c1ccnc2[nH]cnn12', 'CNc1ccnc2ncnn12'})
示例#59
0
def test_1_3_heteroatom_enumeration():
    """1,3 heteroatom H shift"""
    assert enumerate_tautomers_smiles('OC(C)=NC') == {'CN=C(C)O', 'CNC(C)=O', 'C=C(O)NC'}
示例#60
0
def test_1_3_keto_enol_enumeration2():
    """Enumerate 1,3 keto/enol tautomer."""
    eq_(enumerate_tautomers_smiles('C1(CCCCC1)=O'), {'OC1=CCCCC1', 'O=C1CCCCC1'})