Пример #1
0
    def test1(self):
        suppl = Chem.SDMolSupplier(
            os.path.join(RDConfig.RDCodeDir, 'Chem', 'Subshape',
                         'test_data/5ht3ligs.sdf'))
        builder = SubshapeBuilder.SubshapeBuilder()
        builder.gridDims = (20., 20., 10)
        builder.gridSpacing = 0.5
        builder.winRad = 4.

        ms = []
        shapes = []
        for m in suppl:
            m = Chem.AddHs(m, addCoords=True)
            AllChem.CanonicalizeConformer(m.GetConformer())
            ms.append(m)
            shape = builder(m, terminalPtsOnly=True)
            shapes.append(shape)

        self.assertTrue(len(ms) == 4)
        self.assertTrue(len(shapes) == 4)
        self.assertTrue([len(x.skelPts) for x in shapes] == [5, 5, 5, 5])

        refShape = builder.GenerateSubshapeShape(ms[0])
        self.assertTrue(len(refShape.skelPts) == 15)

        aligner = SubshapeAligner.SubshapeAligner()
        aligner.shapeDistTol = .30

        algStore = []
        for i, s1 in enumerate(shapes):
            if not i or not s1:
                algStore.append([])
                continue
            m1 = ms[i]
            alignments = aligner.GetSubshapeAlignments(ms[0], refShape, m1, s1,
                                                       builder)
            algStore.append(alignments)
        self.assertEqual([len(x) for x in algStore], [0, 2, 39, 0])

        algStore = []
        for i, s1 in enumerate(shapes):
            if not i or not s1:
                algStore.append([])
                continue
            m1 = ms[i]
            alignments = list(aligner(ms[0], refShape, m1, s1, builder))
            algStore.append(alignments)
        self.assertTrue([len(x) for x in algStore] == [0, 2, 39, 0])

        pruned = []
        for i, mi in enumerate(ms):
            alignments = algStore[i]
            pruned.append(
                SubshapeAligner.ClusterAlignments(mi,
                                                  alignments,
                                                  builder,
                                                  neighborTol=0.15))
        self.assertTrue([len(x) for x in pruned] == [0, 2, 29, 0])
Пример #2
0
    def test1(self):
        filename = os.path.join(os.path.dirname(os.path.abspath(__file__)),
                                'test_data', '5ht3ligs.sdf')
        suppl = Chem.SDMolSupplier(filename)
        builder = SubshapeBuilder.SubshapeBuilder()
        builder.gridDims = (20., 20., 10)
        builder.gridSpacing = 0.5
        builder.winRad = 4.

        ms = []
        shapes = []
        for m in suppl:
            m = Chem.AddHs(m, addCoords=True)
            AllChem.CanonicalizeConformer(m.GetConformer())
            ms.append(m)
            shape = builder(m, terminalPtsOnly=True)
            shapes.append(shape)

        self.assertEqual(len(ms), 4)
        self.assertEqual(len(shapes), 4)
        self.assertEqual([len(x.skelPts) for x in shapes], [5, 5, 5, 5])

        refShape = builder.GenerateSubshapeShape(ms[0])
        self.assertEqual(len(refShape.skelPts), 16)

        aligner = SubshapeAligner.SubshapeAligner()
        aligner.shapeDistTol = .30

        algStore = []
        for i, s1 in enumerate(shapes):
            if not i or not s1:
                algStore.append([])
                continue
            m1 = ms[i]
            alignments = aligner.GetSubshapeAlignments(ms[0], refShape, m1, s1, builder)
            algStore.append(alignments)
        self.assertEqual([len(x) for x in algStore], [0, 5, 28, 0])

        algStore = []
        for i, s1 in enumerate(shapes):
            if not i or not s1:
                algStore.append([])
                continue
            m1 = ms[i]
            alignments = list(aligner(ms[0], refShape, m1, s1, builder))
            algStore.append(alignments)
        self.assertEqual([len(x) for x in algStore], [0, 5, 28, 0])

        pruned = []
        for i, mi in enumerate(ms):
            alignments = algStore[i]
            pruned.append(SubshapeAligner.ClusterAlignments(
                mi, alignments, builder, neighborTol=0.15))
        self.assertEqual([len(x) for x in pruned], [0, 4, 12, 0])
Пример #3
0
    def test1(self):
        # computeCanonicalTransform returns more approximate eigenvalues/eigencvectors
        # when built against the native RDKit PowerEigenSolver, so unit test results
        # differ slightly
        builtAgainstEigen3 = hasattr(AllChem, 'ComputePrincipalAxesAndMomentsFromGyrationMatrix')
        if builtAgainstEigen3:
            expectedSkelPts = 15
            expectedAlgs = [0, 5, 21, 0]
            prunedAlgs = [0, 4, 11, 0]
        else:
            expectedSkelPts = 16
            expectedAlgs = [0, 5, 28, 0]
            prunedAlgs = [0, 4, 12, 0]
        filename = os.path.join(os.path.dirname(os.path.abspath(__file__)),
                                'test_data', '5ht3ligs.sdf')
        suppl = Chem.SDMolSupplier(filename)
        builder = SubshapeBuilder.SubshapeBuilder()
        builder.gridDims = (20., 20., 10)
        builder.gridSpacing = 0.5
        builder.winRad = 4.

        ms = []
        shapes = []
        for m in suppl:
            m = Chem.AddHs(m, addCoords=True)
            AllChem.CanonicalizeConformer(m.GetConformer())
            ms.append(m)
            shape = builder(m, terminalPtsOnly=True)
            shapes.append(shape)

        self.assertEqual(len(ms), 4)
        self.assertEqual(len(shapes), 4)
        self.assertEqual([len(x.skelPts) for x in shapes], [5, 5, 5, 5])

        refShape = builder.GenerateSubshapeShape(ms[0])

        self.assertEqual(len(refShape.skelPts), expectedSkelPts)

        aligner = SubshapeAligner.SubshapeAligner()
        aligner.shapeDistTol = .30

        algStore = []
        for i, s1 in enumerate(shapes):
            if not i or not s1:
                algStore.append([])
                continue
            m1 = ms[i]
            alignments = aligner.GetSubshapeAlignments(ms[0], refShape, m1, s1, builder)
            algStore.append(alignments)
        self.assertEqual([len(x) for x in algStore], expectedAlgs)

        algStore = []
        for i, s1 in enumerate(shapes):
            if not i or not s1:
                algStore.append([])
                continue
            m1 = ms[i]
            alignments = list(aligner(ms[0], refShape, m1, s1, builder))
            algStore.append(alignments)
        self.assertEqual([len(x) for x in algStore], expectedAlgs)

        pruned = []
        for i, mi in enumerate(ms):
            alignments = algStore[i]
            pruned.append(SubshapeAligner.ClusterAlignments(
                mi, alignments, builder, neighborTol=0.15))
        self.assertEqual([len(x) for x in pruned], prunedAlgs)