Example #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'
    }
Example #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'
    }
Example #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'
    }
Example #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'
    }
Example #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'
    }
Example #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'})
Example #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'}
Example #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'}
Example #9
0
def test_aliphatic_imine_enumeration2():
    """aliphatic imine tautomer"""
    assert enumerate_tautomers_smiles('C1(=CCCCC1)N') == {'N=C1CCCCC1', 'NC1=CCCCC1'}
Example #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'}
Example #11
0
def test_isocyanide_enumeration2():
    """isocyanide tautomer"""
    assert enumerate_tautomers_smiles('[C-]#[NH+]') == {'[C-]#[NH+]', 'C#N'}
Example #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'})
Example #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'}
Example #14
0
def test_keten_ynol_enumeration2():
    """keten/ynol tautomer"""
    eq_(enumerate_tautomers_smiles('CC#CO'), {'CC=C=O', 'CC#CO'})
Example #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'})
Example #16
0
def test_furanone_enumeration2():
    """furanone tautomer"""
    eq_(enumerate_tautomers_smiles('O=C1CC=CO1'), {'Oc1ccco1', 'O=C1CC=CO1'})
Example #17
0
def test_heterocyclic_enumeration5():
    """heterocyclic tautomer"""
    eq_(enumerate_tautomers_smiles('c1cnc2ccc[nH]c12'), {'c1c[nH]c2ccnc-2c1', 'c1cnc2cc[nH]c2c1'})
Example #18
0
def test_heterocyclic_enumeration4():
    """heterocyclic tautomer"""
    eq_(enumerate_tautomers_smiles('n1ccc2c[nH]ccc12'), {'c1cc2[nH]ccc2cn1', 'c1cc2c[nH]ccc-2n1'})
Example #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'}
Example #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'})
Example #21
0
def test_heterocyclic_enumeration4():
    """heterocyclic tautomer"""
    assert enumerate_tautomers_smiles('n1ccc2c[nH]ccc12') == {'c1cc2[nH]ccc2cn1', 'c1cc2c[nH]ccc-2n1'}
Example #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'})
Example #23
0
def test_keten_ynol_enumeration2():
    """keten/ynol tautomer"""
    assert enumerate_tautomers_smiles('CC#CO') == {'CC=C=O', 'CC#CO'}
Example #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'})
Example #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'}
Example #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'})
Example #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'}
Example #28
0
def test_isocyanide_enumeration2():
    """isocyanide tautomer"""
    eq_(enumerate_tautomers_smiles('[C-]#[NH+]'), {'[C-]#[NH+]', 'C#N'})
Example #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'}
Example #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'})
Example #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'}
Example #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'})
Example #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'})
Example #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'})
Example #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'}
Example #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'})
Example #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'}
Example #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'})
Example #39
0
def test_heterocyclic_enumeration5():
    """heterocyclic tautomer"""
    assert enumerate_tautomers_smiles('c1cnc2ccc[nH]c12') == {'c1c[nH]c2ccnc-2c1', 'c1cnc2cc[nH]c2c1'}
Example #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'})
Example #41
0
def test_furanone_enumeration2():
    """furanone tautomer"""
    assert enumerate_tautomers_smiles('O=C1CC=CO1') == {'Oc1ccco1', 'O=C1CC=CO1'}
Example #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'})
Example #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'}
Example #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'})
Example #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'}
Example #46
0
def test_aliphatic_imine_enumeration2():
    """aliphatic imine tautomer"""
    eq_(enumerate_tautomers_smiles('C1(=CCCCC1)N'), {'N=C1CCCCC1', 'NC1=CCCCC1'})
Example #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'}
Example #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'})
Example #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'}
Example #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'})
Example #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'}
Example #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'})
Example #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
Example #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'})
Example #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'}
Example #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'})
Example #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'}
Example #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'})
Example #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'}
Example #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'})