Ejemplo n.º 1
0
def test_forced_charge2():
    """Test forced charge correction with no corresponding proton for neutralization."""
    # GitHub Issue #15
    assert standardize_smiles('[Na].[Na]') == '[Na+].[Na+]'
    # TODO: Arguably should become selenite ion... O=[Se]([O-])[O-]. Need an AcidBasePair?
    assert standardize_smiles(
        '[Na].[Na].O[Se](O)=O') == 'O=[Se](O)O.[Na+].[Na+]'
Ejemplo n.º 2
0
def test_should_complete():
    """Reionization should not infinitely loop forever on these molecules."""
    # GitHub Issue #14
    assert standardize_smiles(
        'CCCCCCCCCCCCCCCCCC(=O)CC(=C)C(=O)O[Ti](=O)(OC(C)C)C(C)C'
    ) == 'C=C(CC(=O)[CH-]CCCCCCCCCCCCCCCC)C(=O)[O-].CC(C)[O-].CCC.[O-2].[Ti+5]'
    assert standardize_smiles(
        'OP(=O)(O)[O-].OP(=O)([O-])[O-].[O-]S(=O)(=O)[O-].[Na+].[Na+].[Na+].[Mg+2].[Cl-].[Cl-].[K+].[K+]'
    ) == 'O=P([O-])(O)O.O=P([O-])([O-])O.O=S(=O)([O-])[O-].[Cl-].[Cl-].[K+].[K+].[Mg+2].[Na+].[Na+].[Na+]'
Ejemplo n.º 3
0
def test_nitro_normalization3():
    """Normalize nitro group."""
    eq_(standardize_smiles("[O-][N+](=O)c1ccccc1"), "O=[N+]([O-])c1ccccc1")
Ejemplo n.º 4
0
def test_disconnect_metal4():
    """Leave mercury covalently bonded."""
    eq_(standardize_smiles("CC[Hg]SC1=C(C=CC=C1)C(=O)[O][Na]"), "[Na+].CC[Hg]Sc1ccccc1C(=O)[O-]")
Ejemplo n.º 5
0
def test_stereochemistry():
    """Check stereochemistry is correctly perceived."""
    eq_(standardize_smiles("Cl\\C=C/Cl"), "Cl/C=C\\Cl")
Ejemplo n.º 6
0
def test_charge_preservation():
    """Unusually charged histidine should be preserved. (See charge parent for normalization)."""
    eq_(standardize_smiles("[NH3+]C(Cc1cnc[nH]1)C(=O)[O-]"), "[NH3+]C(Cc1cnc[nH]1)C(=O)[O-]")
Ejemplo n.º 7
0
def test_transform_maintains_ring():
    """Ensure no transforms inadvertently breaks open rings."""
    eq_(standardize_smiles("[nH]1ccc2cccc[n+]12"), "c1cc2ccccn2[nH+]1")
Ejemplo n.º 8
0
def test_charge_to_protonated_atom6():
    """Shift positive charge from nonprotonated to protonated atom."""
    eq_(standardize_smiles("[nH]1ccc(=[N+](C)C)cc1"), "CN(C)c1cc[nH+]cc1")
Ejemplo n.º 9
0
def test_charge_to_protonated_atom9():
    """Shift positive charge from nonprotonated to protonated atom."""
    assert standardize_smiles('CNC=CC=[N+](C)C') == 'C[NH+]=CC=CN(C)C'
Ejemplo n.º 10
0
def test_charge_to_protonated_atom6():
    """Shift positive charge from nonprotonated to protonated atom."""
    assert standardize_smiles('[nH]1ccc(=[N+](C)C)cc1') == 'CN(C)c1cc[nH+]cc1'
Ejemplo n.º 11
0
def test_aromaticity3():
    """Redo incorrect aromatization."""
    assert standardize_smiles('C=Cc1ccc2c(c1)NC(=O)/C/2=C\\c1ccc[nH]1'
                              ) == 'C=Cc1ccc2c(c1)NC(=O)/C2=C\\c1ccc[nH]1'
    assert standardize_smiles('C=Cc1ccc2c(c1)[nH]c(=O)/c/2=C\\c1ccc[nH]1'
                              ) == 'C=Cc1ccc2c(c1)NC(=O)/C2=C\\c1ccc[nH]1'
Ejemplo n.º 12
0
def test_1_5_aromatic_charge_recombination2():
    """Recombine aromatic 1,5-separated charges."""
    assert standardize_smiles('C[n+]1ccc([N-]C)cc1') == 'CN=c1ccn(C)cc1'
Ejemplo n.º 13
0
def test_1_5_aromatic_charge_recombination():
    """Recombine aromatic 1,5-separated charges."""
    assert standardize_smiles('[n-]1ccc(=[N+](C)C)cc1') == 'CN(C)c1ccncc1'
Ejemplo n.º 14
0
def test_1_5_nonaromatic_charge_recombination():
    """Recombine non-aromatic 1,5-separated charges."""
    assert standardize_smiles('C[N-]C=CC=[N+](C)C') == 'CN=CC=CN(C)C'
Ejemplo n.º 15
0
def test_pyrimidone_charge_recombination2():
    """Recombine aromatic 1,3-separated charges to form pyrimidone."""
    assert standardize_smiles(
        'COc1cc2ccc3c4c(OC)cc(OC)c(OC)c4c([O-])[n+](C)c3c2cc1OC'
    ) == 'COc1cc2ccc3c4c(OC)cc(OC)c(OC)c4c(=O)n(C)c3c2cc1OC'
Ejemplo n.º 16
0
def test_1_5_nonaromatic_charge_recombination():
    """Recombine non-aromatic 1,5-separated charges."""
    eq_(standardize_smiles("C[N-]C=CC=[N+](C)C"), "CN=CC=CN(C)C")
Ejemplo n.º 17
0
def test_1_5_aromatic_charge_recombination2():
    """Recombine aromatic 1,5-separated charges."""
    eq_(standardize_smiles("C[n+]1ccc([N-]C)cc1"), "CN=c1ccn(C)cc1")
Ejemplo n.º 18
0
def test_transform_maintains_ring():
    """Ensure no transforms inadvertently breaks open rings."""
    assert standardize_smiles(
        '[O-]C1=CC=CC2=CC=CC=[N+]12') == 'O=c1cccc2ccccn12'
Ejemplo n.º 19
0
def test_charge_to_protonated_atom8():
    """Shift positive charge from nonprotonated to protonated atom."""
    eq_(standardize_smiles("C[n+]1ccc2[nH]ccc2c1"), "Cn1ccc2[nH+]ccc-2c1")
Ejemplo n.º 20
0
def test_equal_reionize():
    """Don't change partially ionized acid with two equally strong acid groups."""
    assert standardize_smiles('C1=C(C=CC(=C1)[S]([O-])(=O)=O)[S](O)(=O)=O'
                              ) == 'O=S(=O)([O-])c1ccc(S(=O)(=O)O)cc1'
Ejemplo n.º 21
0
def test_reionize2():
    """Partially ionized acid where proton should be moved to weaker acid."""
    eq_(standardize_smiles("C1=C(C=CC(=C1)[P]([O-])(=O)O)[S](O)(=O)=O"), "O=P(O)(O)c1ccc(S(=O)(=O)[O-])cc1")
Ejemplo n.º 22
0
def test_reionize2():
    """Partially ionized acid where proton should be moved to weaker acid."""
    assert standardize_smiles('C1=C(C=CC(=C1)[P]([O-])(=O)O)[S](O)(=O)=O'
                              ) == 'O=P(O)(O)c1ccc(S(=O)(=O)[O-])cc1'
Ejemplo n.º 23
0
def test_aromaticity3():
    """Redo incorrect aromatization."""
    eq_(standardize_smiles("C=Cc1ccc2c(c1)NC(=O)/C/2=C\\c1ccc[nH]1"), "C=Cc1ccc2c(c1)NC(=O)/C2=C\\c1ccc[nH]1")
    eq_(standardize_smiles("C=Cc1ccc2c(c1)[nH]c(=O)/c/2=C\\c1ccc[nH]1"), "C=Cc1ccc2c(c1)NC(=O)/C2=C\\c1ccc[nH]1")
Ejemplo n.º 24
0
def test_reionize3():
    """Partially ionized acid where proton should be moved to weaker acid."""
    assert standardize_smiles('C1=C(C=C(C(=C1)O)C(=O)[O-])[S](O)(=O)=O.[Na+]'
                              ) == 'O=C(O)c1cc(S(=O)(=O)[O-])ccc1O.[Na+]'
Ejemplo n.º 25
0
def test_disconnect_metal2():
    """Break metal-organic covalent bonds."""
    eq_(standardize_smiles("c1ccccc1C(=O)O[Ca]OC(=O)c1ccccc1"), "[Ca+2].O=C([O-])c1ccccc1.O=C([O-])c1ccccc1")
Ejemplo n.º 26
0
def test_charge_preservation():
    """Unusually charged histidine should be preserved. (See charge parent for normalization)."""
    assert standardize_smiles(
        '[NH3+]C(Cc1cnc[nH]1)C(=O)[O-]') == '[NH3+]C(Cc1cnc[nH]1)C(=O)[O-]'
Ejemplo n.º 27
0
def test_charge_free_metal():
    """Charge free neutral metal with carboxylic acid."""
    eq_(standardize_smiles("[Na].O=C(O)c1ccccc1"), "[Na+].O=C([O-])c1ccccc1")
Ejemplo n.º 28
0
def test_charge_preservation2():
    """"""
    assert standardize_smiles('[Cl-].C[NH+](C)C') == 'C[NH+](C)C.[Cl-]'
Ejemplo n.º 29
0
def test_pyridine_oxide_normalization():
    """Normalize pyridine oxide."""
    eq_(standardize_smiles("C1=[N](C=CC=C1)=O"), "[O-][n+]1ccccc1")
Ejemplo n.º 30
0
def test_disconnect_metal6():
    """"""
    assert standardize_smiles(
        'C1(CCCCC1)[Zn]Br') == '[Br-].[CH-]1CCCCC1.[Zn+2]'
Ejemplo n.º 31
0
def test_pyrimidone_charge_recombination2():
    """Recombine aromatic 1,3-separated charges to form pyrimidone."""
    eq_(
        standardize_smiles("COc1cc2ccc3c4c(OC)cc(OC)c(OC)c4c([O-])[n+](C)c3c2cc1OC"),
        "COc1cc2ccc3c4c(OC)cc(OC)c(OC)c4c(=O)n(C)c3c2cc1OC",
    )
Ejemplo n.º 32
0
def test_positive_carbon_nitrogen():
    """"""
    assert standardize_smiles('CN[C+](C)NC') == 'CNC(C)=[NH+]C'
Ejemplo n.º 33
0
def test_1_5_aromatic_charge_recombination():
    """Recombine aromatic 1,5-separated charges."""
    eq_(standardize_smiles("[n-]1ccc(=[N+](C)C)cc1"), "CN(C)c1ccncc1")
Ejemplo n.º 34
0
def test_positive_phosphorus_nitrogen():
    """"""
    assert standardize_smiles('CN[P+](C)(C)NC') == 'CNP(C)(C)=[NH+]C'
Ejemplo n.º 35
0
def test_aromaticity2():
    """Both rings should be aromatic."""
    eq_(standardize_smiles("C[N]1C=NC2=C1C(=O)N(C)C(=O)N2C"), "Cn1cnc2c1c(=O)n(C)c(=O)n2C")
    eq_(standardize_smiles("Cn1cnc2c1c(=O)n(C)c(=O)n2C"), "Cn1cnc2c1c(=O)n(C)c(=O)n2C")
Ejemplo n.º 36
0
def test_stereochemistry():
    """Check stereochemistry is correctly perceived."""
    assert standardize_smiles('Cl\\C=C/Cl') == 'Cl/C=C\\Cl'
Ejemplo n.º 37
0
def test_charge_to_protonated_atom7():
    """Shift positive charge from nonprotonated to protonated atom."""
    eq_(standardize_smiles("CNc1cc[n+](C)cc1"), "C[NH+]=c1ccn(C)cc1")
Ejemplo n.º 38
0
def test_disconnect_metal():
    """Break metal-organic covalent bonds."""
    assert standardize_smiles(
        '[Na]OC(=O)c1ccccc1') == 'O=C([O-])c1ccccc1.[Na+]'
Ejemplo n.º 39
0
def test_charge_to_protonated_atom9():
    """Shift positive charge from nonprotonated to protonated atom."""
    eq_(standardize_smiles("CNC=CC=[N+](C)C"), "C[NH+]=CC=CN(C)C")
Ejemplo n.º 40
0
def test_disconnect_metal2():
    """Break metal-organic covalent bonds."""
    assert standardize_smiles('c1ccccc1C(=O)O[Ca]OC(=O)c1ccccc1'
                              ) == 'O=C([O-])c1ccccc1.O=C([O-])c1ccccc1.[Ca+2]'
Ejemplo n.º 41
0
def test_equal_reionize():
    """Don't change partially ionized acid with two equally strong acid groups."""
    eq_(standardize_smiles("C1=C(C=CC(=C1)[S]([O-])(=O)=O)[S](O)(=O)=O"), "O=S(=O)([O-])c1ccc(S(=O)(=O)O)cc1")
Ejemplo n.º 42
0
def test_disconnect_metal3():
    """Disconnect Pt in metal complex."""
    assert standardize_smiles(
        '[Pt](Cl)(Cl)(O)(O)(NC(C)C)NC(C)C'
    ) == 'CC(C)[NH-].CC(C)[NH-].[Cl-].[Cl-].[OH-].[OH-].[Pt+6]'
Ejemplo n.º 43
0
def test_reionize3():
    """Partially ionized acid where proton should be moved to weaker acid."""
    eq_(standardize_smiles("C1=C(C=C(C(=C1)O)C(=O)[O-])[S](O)(=O)=O.[Na+]"), "[Na+].O=C(O)c1cc(S(=O)(=O)[O-])ccc1O")
Ejemplo n.º 44
0
def test_disconnect_metal4():
    """Leave mercury covalently bonded."""
    assert standardize_smiles(
        'CC[Hg]SC1=C(C=CC=C1)C(=O)[O][Na]') == 'CC[Hg]Sc1ccccc1C(=O)[O-].[Na+]'
Ejemplo n.º 45
0
def test_charge_preservation2():
    """"""
    eq_(standardize_smiles("[Cl-].C[NH+](C)C"), "[Cl-].C[NH+](C)C")
Ejemplo n.º 46
0
def test_disconnect_metal5():
    """Silver carbonate. Unsure about this one."""
    assert standardize_smiles('[Ag]OC(=O)O[Ag]') == 'O=C([O-])[O-].[Ag+].[Ag+]'
Ejemplo n.º 47
0
def test_disconnect_metal6():
    """"""
    eq_(standardize_smiles("C1(CCCCC1)[Zn]Br"), "[Zn+2].[Br-].[CH-]1CCCCC1")
Ejemplo n.º 48
0
def test_charge_free_metal():
    """Charge free neutral metal with carboxylic acid."""
    assert standardize_smiles(
        '[Na].O=C(O)c1ccccc1') == 'O=C([O-])c1ccccc1.[Na+]'
Ejemplo n.º 49
0
def test_disconnect_metal():
    """Break metal-organic covalent bonds."""
    eq_(standardize_smiles("[Na]OC(=O)c1ccccc1"), "[Na+].O=C([O-])c1ccccc1")
Ejemplo n.º 50
0
def test_nitro_normalization():
    """Normalize nitro group."""
    assert standardize_smiles(
        'C1(=CC=CC=C1)[N+](=O)[O-]') == 'O=[N+]([O-])c1ccccc1'
Ejemplo n.º 51
0
def test_disconnect_metal3():
    """Disconnect Pt in metal complex."""
    eq_(standardize_smiles("[Pt](Cl)(Cl)(O)(O)(NC(C)C)NC(C)C"), "[OH-].[OH-].[Cl-].[Cl-].[Pt+6].CC(C)[NH-].CC(C)[NH-]")
Ejemplo n.º 52
0
def test_nitro_normalization3():
    """Normalize nitro group."""
    assert standardize_smiles('[O-][N+](=O)c1ccccc1') == 'O=[N+]([O-])c1ccccc1'
Ejemplo n.º 53
0
def test_disconnect_metal5():
    """Silver carbonate. Unsure about this one."""
    eq_(standardize_smiles("[Ag]OC(=O)O[Ag]"), "[Ag+].[Ag+].O=C([O-])[O-]")
Ejemplo n.º 54
0
def test_nitro_normalization5():
    """Normalize nitro group."""
    assert standardize_smiles('O[N+](=O)[O-]') == 'O=[N+]([O-])O'
Ejemplo n.º 55
0
def test_nitro_normalization():
    """Normalize nitro group."""
    eq_(standardize_smiles("C1(=CC=CC=C1)[N+](=O)[O-]"), "O=[N+]([O-])c1ccccc1")
Ejemplo n.º 56
0
def test_pyridine_oxide_normalization():
    """Normalize pyridine oxide."""
    assert standardize_smiles('C1=[N](C=CC=C1)=O') == '[O-][n+]1ccccc1'
Ejemplo n.º 57
0
def test_nitro_normalization5():
    """Normalize nitro group."""
    eq_(standardize_smiles("O[N+](=O)[O-]"), "O=[N+]([O-])O")
Ejemplo n.º 58
0
def test_aromaticity():
    """Check aromaticity is correctly perceived."""
    eq_(standardize_smiles("C1=CC=CC=C1"), "c1ccccc1")
Ejemplo n.º 59
0
def test_standardize():
    """Test table salt."""
    assert standardize_smiles('[Na].[Cl]') == '[Cl-].[Na+]'
Ejemplo n.º 60
0
def test_pyrimidone_charge_recombination():
    """Recombine aromatic 1,3-separated charges to form pyrimidone."""
    eq_(standardize_smiles("[O-]c1[n+](C)cccc1"), "Cn1ccccc1=O")