def test_1_3_aromatic_heteroatom_canonicalization3(): """1,3 aromatic heteroatom H shift""" eq_(canonicalize_tautomer_smiles('Oc1ncc[nH]1'), 'O=c1[nH]cc[nH]1')
def test_keten_ynol_canonicalization2(): """keten/ynol tautomer""" assert canonicalize_tautomer_smiles('CC#CO') == 'CC=C=O'
def test_cyano_iso_cyanic_acid_canonicalization2(): """cyano/iso-cyanic acid tautomer""" assert canonicalize_tautomer_smiles('C(=N)=O') == 'N=C=O'
def test_1_7_aromatic_heteroatom_canonicalization2(): """1,7 aromatic heteroatom H shift""" assert canonicalize_tautomer_smiles('c1ccc2c(c1)NC(=C1N=c3ccccc3=N1)N2') == 'c1ccc2[nH]c(-c3nc4ccccc4[nH]3)nc2c1'
def test_heterocyclic_canonicalization4(): """heterocyclic tautomer""" assert canonicalize_tautomer_smiles('n1ccc2c[nH]ccc12') == 'c1cc2[nH]ccc2cn1'
def test_1_5_aromatic_heteroatom_canonicalization4(): """1,5 aromatic heteroatom H shift""" assert canonicalize_tautomer_smiles('Cc1nnc2nc[nH]n12') == 'Cc1n[nH]c2ncnn12'
def test_1_5_aromatic_heteroatom_canonicalization9(): """1,5 aromatic heteroatom H shift""" assert canonicalize_tautomer_smiles('Oc1n(C)ncc1') == 'Cn1[nH]ccc1=O'
def test_1_5_aromatic_heteroatom_canonicalization6(): """1,5 aromatic heteroatom H shift""" eq_(canonicalize_tautomer_smiles('Oc1c(cccc3)c3nc2ccncc12'), 'O=c1c2ccccc2[nH]c2ccncc12')
def test_1_3_1_5_aromatic_heteroatom_canonicalization(): """1,3 and 1,5 aromatic heteroatom H shift""" eq_(canonicalize_tautomer_smiles('Oc1ncncc1'), 'O=c1cc[nH]cn1')
def test_1_3_heteroatom_canonicalization6(): """1,3 heteroatom H shift""" eq_(canonicalize_tautomer_smiles('CN=c1[nH]cncc1'), 'CN=c1cc[nH]cn1')
def test_1_5_aromatic_heteroatom_canonicalization4(): """1,5 aromatic heteroatom H shift""" eq_(canonicalize_tautomer_smiles('Cc1nnc2nc[nH]n12'), 'Cc1n[nH]c2ncnn12')
def test_1_3_heteroatom_canonicalization5(): """1,3 heteroatom H shift""" eq_(canonicalize_tautomer_smiles('N=c1[nH]ccn(C)1'), 'Cn1cc[nH]c1=N')
def test_1_3_heteroatom_canonicalization4(): """1,3 heteroatom H shift""" eq_(canonicalize_tautomer_smiles('SC(N)=N'), 'NC(N)=S')
def test_1_3_heteroatom_canonicalization2(): """1,3 heteroatom H shift""" eq_(canonicalize_tautomer_smiles('CNC(C)=O'), 'CNC(C)=O')
def test_1_3_heteroatom_canonicalization2(): """1,3 heteroatom H shift""" assert canonicalize_tautomer_smiles('CNC(C)=O') == 'CNC(C)=O'
def test_1_5_aromatic_heteroatom_canonicalization8(): """1,5 aromatic heteroatom H shift""" eq_(canonicalize_tautomer_smiles('C2(C1=C([NH]C=N1)[NH]C(=N2)N)=O'), 'N=c1[nH]c(=O)c2[nH]cnc2[nH]1')
def test_1_3_heteroatom_canonicalization5(): """1,3 heteroatom H shift""" assert canonicalize_tautomer_smiles('N=c1[nH]ccn(C)1') == 'Cn1cc[nH]c1=N'
def test_1_5_aromatic_heteroatom_canonicalization9(): """1,5 aromatic heteroatom H shift""" eq_(canonicalize_tautomer_smiles('Oc1n(C)ncc1'), 'Cn1[nH]ccc1=O')
def test_1_3_1_5_aromatic_heteroatom_canonicalization(): """1,3 and 1,5 aromatic heteroatom H shift""" assert canonicalize_tautomer_smiles('Oc1ncncc1') == 'O=c1cc[nH]cn1'
def test_1_5_aromatic_heteroatom_canonicalization10(): """1,5 aromatic heteroatom H shift""" eq_(canonicalize_tautomer_smiles('O=c1nc2[nH]ccn2cc1'), 'O=c1ccn2cc[nH]c2n1')
def test_1_5_aromatic_heteroatom_canonicalization12(): """1,5 aromatic heteroatom H shift""" assert canonicalize_tautomer_smiles('N=c(c1)ccn2cc[nH]c12') == 'N=c1ccn2cc[nH]c2c1'
def test_1_5_aromatic_heteroatom_canonicalization12(): """1,5 aromatic heteroatom H shift""" eq_(canonicalize_tautomer_smiles('N=c(c1)ccn2cc[nH]c12'), 'N=c1ccn2cc[nH]c2c1')
def test_1_11_aromatic_heteroatom_canonicalization2(): """1,11 aromatic heteroatom H shift""" assert canonicalize_tautomer_smiles('N=C1C=CC(=Cc2ccc(O)cc2)C=C1') == 'Nc1ccc(C=C2C=CC(=O)C=C2)cc1'
def test_1_5_aromatic_heteroatom_canonicalization13(): """1,5 aromatic heteroatom H shift""" eq_(canonicalize_tautomer_smiles('CN=c1nc[nH]cc1'), 'CN=c1cc[nH]cn1')
def test_furanone_canonicalization(): """furanone tautomer""" assert canonicalize_tautomer_smiles('C1=CC=C(O1)O') == 'Oc1ccco1'
def test_1_7_aromatic_heteroatom_canonicalization2(): """1,7 aromatic heteroatom H shift""" eq_(canonicalize_tautomer_smiles('c1ccc2c(c1)NC(=C1N=c3ccccc3=N1)N2'), 'c1ccc2[nH]c(-c3nc4ccccc4[nH]3)nc2c1')
def test_oxim_nitroso_canonicalization2(): """oxim nitroso tautomer""" assert canonicalize_tautomer_smiles('CC(C)N=O') == 'CC(C)=NO'
def test_1_9_aromatic_heteroatom_canonicalization2(): """1,9 aromatic heteroatom H shift""" eq_(canonicalize_tautomer_smiles('CN=c1ccnc2nc[nH]n21'), 'CN=c1cc[nH]c2ncnn12')
def test_isocyanide_canonicalization2(): """isocyanide tautomer""" assert canonicalize_tautomer_smiles('[C-]#[NH+]') == 'C#N'
def test_1_11_aromatic_heteroatom_canonicalization2(): """1,11 aromatic heteroatom H shift""" eq_(canonicalize_tautomer_smiles('N=C1C=CC(=Cc2ccc(O)cc2)C=C1'), 'Nc1ccc(C=C2C=CC(=O)C=C2)cc1')
def test_1_3_aromatic_heteroatom_canonicalization3(): """1,3 aromatic heteroatom H shift""" assert canonicalize_tautomer_smiles('Oc1ncc[nH]1') == 'O=c1[nH]cc[nH]1'
def test_heterocyclic_canonicalization2(): """heterocyclic tautomer""" eq_(canonicalize_tautomer_smiles('c1cc(=O)[nH]c2nccn12'), 'O=c1ccn2cc[nH]c2n1')
def test_1_3_heteroatom_canonicalization4(): """1,3 heteroatom H shift""" assert canonicalize_tautomer_smiles('SC(N)=N') == 'NC(N)=S'
def test_heterocyclic_canonicalization4(): """heterocyclic tautomer""" eq_(canonicalize_tautomer_smiles('n1ccc2c[nH]ccc12'), 'c1cc2[nH]ccc2cn1')
def test_1_3_heteroatom_canonicalization6(): """1,3 heteroatom H shift""" assert canonicalize_tautomer_smiles('CN=c1[nH]cncc1') == 'CN=c1cc[nH]cn1'
def test_heterocyclic_canonicalization5(): """heterocyclic tautomer""" eq_(canonicalize_tautomer_smiles('c1cnc2ccc[nH]c12'), 'c1cnc2cc[nH]c2c1')
def test_1_5_aromatic_heteroatom_canonicalization6(): """1,5 aromatic heteroatom H shift""" assert canonicalize_tautomer_smiles('Oc1c(cccc3)c3nc2ccncc12') == 'O=c1c2ccccc2[nH]c2ccncc12'
def test_furanone_canonicalization(): """furanone tautomer""" eq_(canonicalize_tautomer_smiles('C1=CC=C(O1)O'), 'Oc1ccco1')
def test_1_5_aromatic_heteroatom_canonicalization8(): """1,5 aromatic heteroatom H shift""" assert canonicalize_tautomer_smiles('C2(C1=C([NH]C=N1)[NH]C(=N2)N)=O') == 'N=c1[nH]c(=O)c2[nH]cnc2[nH]1'
def test_furanone_canonicalization2(): """furanone tautomer""" eq_(canonicalize_tautomer_smiles('O=C1CC=CO1'), 'Oc1ccco1')
def test_1_5_aromatic_heteroatom_canonicalization10(): """1,5 aromatic heteroatom H shift""" assert canonicalize_tautomer_smiles('O=c1nc2[nH]ccn2cc1') == 'O=c1ccn2cc[nH]c2n1'
def test_keten_ynol_canonicalization2(): """keten/ynol tautomer""" eq_(canonicalize_tautomer_smiles('CC#CO'), 'CC=C=O')
def test_1_5_aromatic_heteroatom_canonicalization13(): """1,5 aromatic heteroatom H shift""" assert canonicalize_tautomer_smiles('CN=c1nc[nH]cc1') == 'CN=c1cc[nH]cn1'
def test_ionic_nitro_aci_nitro_canonicalization2(): """ionic nitro/aci-nitro tautomer""" eq_(canonicalize_tautomer_smiles('C(=[N+](O)[O-])C'), 'CC[N+](=O)[O-]')
def test_1_9_aromatic_heteroatom_canonicalization2(): """1,9 aromatic heteroatom H shift""" assert canonicalize_tautomer_smiles('CN=c1ccnc2nc[nH]n21') == 'CN=c1cc[nH]c2ncnn12'
def test_oxim_nitroso_canonicalization2(): """oxim nitroso tautomer""" eq_(canonicalize_tautomer_smiles('CC(C)N=O'), 'CC(C)=NO')
def test_heterocyclic_canonicalization2(): """heterocyclic tautomer""" assert canonicalize_tautomer_smiles('c1cc(=O)[nH]c2nccn12') == 'O=c1ccn2cc[nH]c2n1'
def test_oxim_nitroso_phenol_canonicalization2(): """oxim/nitroso tautomer via phenol""" eq_(canonicalize_tautomer_smiles('O=C1C=CC(=NO)C=C1'), 'O=Nc1ccc(O)cc1')
def test_heterocyclic_canonicalization5(): """heterocyclic tautomer""" assert canonicalize_tautomer_smiles('c1cnc2ccc[nH]c12') == 'c1cnc2cc[nH]c2c1'
def test_cyano_iso_cyanic_acid_canonicalization2(): """cyano/iso-cyanic acid tautomer""" eq_(canonicalize_tautomer_smiles('C(=N)=O'), 'N=C=O')
def test_furanone_canonicalization2(): """furanone tautomer""" assert canonicalize_tautomer_smiles('O=C1CC=CO1') == 'Oc1ccco1'
def test_formamidinesulfinic_acid_canonicalization2(): """formamidinesulfinic acid tautomer""" eq_(canonicalize_tautomer_smiles('N=C(N)S(=O)O'), 'N=C(N)S(=O)O')
def test_ionic_nitro_aci_nitro_canonicalization2(): """ionic nitro/aci-nitro tautomer""" assert canonicalize_tautomer_smiles('C(=[N+](O)[O-])C') == 'CC[N+](=O)[O-]'
def test_isocyanide_canonicalization2(): """isocyanide tautomer""" eq_(canonicalize_tautomer_smiles('[C-]#[NH+]'), 'C#N')
def test_oxim_nitroso_phenol_canonicalization2(): """oxim/nitroso tautomer via phenol""" assert canonicalize_tautomer_smiles('O=C1C=CC(=NO)C=C1') == 'O=Nc1ccc(O)cc1'
def test_phosphonic_acid_canonicalization2(): """phosphonic acid tautomer""" eq_(canonicalize_tautomer_smiles('P(O)(O)O'), 'O=[PH](O)O')
def test_formamidinesulfinic_acid_canonicalization2(): """formamidinesulfinic acid tautomer""" assert canonicalize_tautomer_smiles('N=C(N)S(=O)O') == 'N=C(N)S(=O)O'
def test_special_imine_canonicalization2(): """special imine tautomer""" assert canonicalize_tautomer_smiles('C1(=NC=CC=C1)CC') == 'CCc1ccccn1'
def test_phosphonic_acid_canonicalization2(): """phosphonic acid tautomer""" assert canonicalize_tautomer_smiles('P(O)(O)O') == 'O=[PH](O)O'
def test_special_imine_canonicalization2(): """special imine tautomer""" eq_(canonicalize_tautomer_smiles('C1(=NC=CC=C1)CC'), 'CCc1ccccn1')