File: rough_test.py

package info (click to toggle)
rdkit 202009.4-1
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 129,624 kB
  • sloc: cpp: 288,030; python: 75,571; java: 6,999; ansic: 5,481; sql: 1,968; yacc: 1,842; lex: 1,254; makefile: 572; javascript: 461; xml: 229; fortran: 183; sh: 134; cs: 93
file content (98 lines) | stat: -rw-r--r-- 3,920 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
#
# Created by Gareth Jones on 5/30/2020.
#
# Copyright 2020 Schrodinger, Inc
#  @@ All Rights Reserved @@
#  This file is part of the RDKit.
#  The contents are covered by the terms of the BSD license
#  which is included in the file license.txt, found at the root
#  of the RDKit source tree.


""" A rough test of Tautomer Queries 

Rough in that only basic functionality is evaluated.
"""

from rdkit import Chem, DataStructs
from rdkit.Chem import rdTautomerQuery
from unittest import TestCase, main
import os

class TautomerQueryTestCase(TestCase):
    
    def test_basic(self):
        mol = Chem.MolFromSmiles("O=C1CCCCC1")
        tautomer_query = rdTautomerQuery.TautomerQuery(mol)
        self.assertEqual(2, len(tautomer_query.GetTautomers()))
        modified_bonds = tautomer_query.GetModifiedBonds()
        self.assertEqual(3, len(modified_bonds));
        modified_atoms = tautomer_query.GetModifiedAtoms()
        self.assertEqual(3, len(modified_atoms));

        target = Chem.MolFromSmiles("OC1=CCCC(CC)C1")
        self.assertTrue(target.HasSubstructMatch(tautomer_query.GetTemplateMolecule()))

        match = tautomer_query.IsSubstructOf(target)
        self.assertTrue(match)
        self.assertTrue(target.HasSubstructMatch(tautomer_query.GetTemplateMolecule()))
        #self.assertTrue(target.HasSubstructMatch(tautomer_query.GetTautomers()[1]))
        match = tautomer_query.GetSubstructMatch(target);
        self.assertEqual(7, len(match))
        
        matches = tautomer_query.GetSubstructMatches(target);
        self.assertEqual(1, len(matches))

        tautomer_matches = tautomer_query.GetSubstructMatchesWithTautomers(target)
        self.assertEqual(1, len(tautomer_matches))
        self.assertEqual(len(tautomer_matches[0][0]), 7)
        matching_tautomer = tautomer_matches[0][1];
        self.assertTrue(target.HasSubstructMatch(matching_tautomer))

        tautomer_fingerprint = tautomer_query.PatternFingerprintTemplate()
        target_fingerprint = rdTautomerQuery.PatternFingerprintTautomerTarget(target)
        matching_fingerprints = DataStructs.AllProbeBitsMatch(tautomer_fingerprint, target_fingerprint)
        self.assertTrue(matching_fingerprints)

        file = os.environ['RDBASE']+'/Data/MolStandardize/tautomerTransforms.in';
        tautomer_query2 = rdTautomerQuery.TautomerQuery(mol, file)
        self.assertEqual(2, len(tautomer_query.GetTautomers()))


    def test_parameter_searches(self):
        mol = Chem.MolFromSmiles("O=C1CCCCC1")
        tautomer_query = rdTautomerQuery.TautomerQuery(mol)
        target = Chem.MolFromSmiles("O=C1CCCC(CC)C1")
        params = Chem.SubstructMatchParameters()
        params.uniquify = False
        tautomer_matches = tautomer_query.GetSubstructMatchesWithTautomers(target, params)
        self.assertEqual(2, len(tautomer_matches))
        matches = tautomer_query.GetSubstructMatches(target, params)
        self.assertEqual(2, len(matches))
        match = tautomer_query.GetSubstructMatch(target, params)
        self.assertEqual(7, len(match))
        is_match = tautomer_query.IsSubstructOf(target, params)
        self.assertTrue(is_match)


    def test_types(self):
        mol = Chem.MolFromSmiles("O=C1CCCCC1")
        tautomer_query = rdTautomerQuery.TautomerQuery(mol)
        target = Chem.MolFromSmiles("OC1=CCCC(CC)C1")
        try:
            self.assertTrue(target.HasSubstructMatch(tautomer_query.GetTautomers()[1]))
        except Exception:
            self.fail("Boost type error")
            
    def test_simple(self):
        mol = Chem.MolFromSmiles("CC=O")
        tautomer_query = rdTautomerQuery.TautomerQuery(mol)
        target = Chem.MolFromSmiles("OC(C)=O")
        tautomers = tautomer_query.GetTautomers()
        self.assertTrue(target.HasSubstructMatch(mol))
        self.assertTrue(tautomer_query.IsSubstructOf(target))



if __name__ == "__main__":
    main();