Skip to content
Snippets Groups Projects
Select Git revision
  • 8f53cd735e0167575e4344b62a8cc3ec9ca07255
  • master default protected
  • develop protected
  • cmake_boost_refactor
  • ubuntu_ci
  • mmtf
  • non-orthogonal-maps
  • no_boost_filesystem
  • data_viewer
  • 2.11.1
  • 2.11.0
  • 2.10.0
  • 2.9.3
  • 2.9.2
  • 2.9.1
  • 2.9.0
  • 2.8.0
  • 2.7.0
  • 2.6.1
  • 2.6.0
  • 2.6.0-rc4
  • 2.6.0-rc3
  • 2.6.0-rc2
  • 2.6.0-rc
  • 2.5.0
  • 2.5.0-rc2
  • 2.5.0-rc
  • 2.4.0
  • 2.4.0-rc2
29 results

lddt.py

Blame
  • test_gap_extension.py 9.34 KiB
    import unittest
    from promod3 import modelling
    from ost import io,seq
    
    class GapExtension(unittest.TestCase):
        #######################################################################
        # HELPERs - same test case for all gap routines
        #######################################################################
        def getRawModel(self):
            tpl = io.LoadPDB('data/2dbs.pdb')
            aln = seq.CreateAlignment(
                seq.CreateSequence('trg', 'AAAATLNGFTVPAGNTLV-LNP--DKGATVTMA'),
                seq.CreateSequence('tpl', 'NGGT---LL--IPNGTYHFLGIQMKSNVHIRV-'))
            aln.AttachView(1, tpl.CreateFullView())
            return modelling.BuildRawModel(aln)
    
        def checkGap(self, gap, n_stem_resnum, c_stem_resnum, seq):
            self.assertEqual(gap.before.GetNumber(), n_stem_resnum)
            self.assertEqual(gap.after.GetNumber(), c_stem_resnum)
            self.assertEqual(gap.seq, seq)
        #######################################################################
    
        def testGapExtender(self):
            mhandle = self.getRawModel()
            # use first gap
            gap = mhandle.gaps[0].Copy()
            ext = modelling.GapExtender(gap, mhandle.seqres[0])
            self.checkGap(gap, 4, 8, 'TLN')
            # extend it
            self.assertTrue(ext.Extend())
            self.checkGap(gap, 3, 8, 'ATLN')
            self.assertTrue(ext.Extend())
            self.checkGap(gap, 4, 9, 'TLNG')
            self.assertTrue(ext.Extend())
            self.checkGap(gap, 2, 8, 'AATLN')
            self.assertTrue(ext.Extend())
            self.checkGap(gap, 3, 9, 'ATLNG')
            self.assertFalse(ext.Extend())
            # ensure gap not changing on false
            self.checkGap(gap, 3, 9, 'ATLNG')
    
        def testFullGapExtender(self):
            mhandle = self.getRawModel()
            # run with various settings
            for i in [-2, -1, 2, 7, 12]:
                # use first gap
                gap = mhandle.gaps[0].Copy()
                self.checkGap(gap, 4, 8, 'TLN')
                # setup extender
                if i == -2:
                    ext = modelling.FullGapExtender(gap, mhandle.seqres[0])
                else:
                    ext = modelling.FullGapExtender(gap, mhandle.seqres[0], i)
                if i < 0:
                    # note: cannot include final terminal insertion!
                    exp_max_length = mhandle.seqres[0].GetLength()-3
                else:
                    exp_max_length = i
                # extend it
                if exp_max_length > 3:
                    self.assertTrue(ext.Extend())
                    self.checkGap(gap, 3, 8, 'ATLN')
                    self.assertTrue(ext.Extend())
                    self.checkGap(gap, 4, 9, 'TLNG')
                    self.assertTrue(ext.Extend())
                    self.checkGap(gap, 2, 8, 'AATLN')
                    self.assertTrue(ext.Extend())
                    self.checkGap(gap, 3, 9, 'ATLNG')
                    self.assertTrue(ext.Extend())
                    self.checkGap(gap, 1, 8, 'AAATLN')
                    self.assertTrue(ext.Extend())
                    self.checkGap(gap, 2, 9, 'AATLNG')
                    self.assertTrue(ext.Extend())
                    self.checkGap(gap, 1, 9, 'AAATLNG')
                    self.assertTrue(ext.Extend())
                    self.checkGap(gap, 4, 12, 'TLNGFTV')
                    # check rest
                    while ext.Extend():
                        self.assertLessEqual(gap.length, exp_max_length)
                    self.assertEqual(gap.length, exp_max_length)
                else:
                    self.assertFalse(ext.Extend())
                    self.checkGap(gap, 4, 8, 'TLN')
    
        def testFullGapExtenderMerge(self):
            mhandle = self.getRawModel()
            modelling.MergeGaps(mhandle, 1)
            # use first gap
            gap = mhandle.gaps[0].Copy()
            self.checkGap(gap, 4, 8, 'TLN')
            # setup extender
            ext = modelling.FullGapExtender(gap, mhandle.seqres[0])
            self.assertTrue(ext.Extend())
            self.checkGap(gap, 3, 8, 'ATLN')
            self.assertTrue(ext.Extend())
            self.checkGap(gap, 4, 9, 'TLNG')
            self.assertTrue(ext.Extend())
            self.checkGap(gap, 2, 8, 'AATLN')
            self.assertTrue(ext.Extend())
            self.checkGap(gap, 3, 9, 'ATLNG')
            self.assertTrue(ext.Extend())
            self.checkGap(gap, 1, 8, 'AAATLN')
            self.assertTrue(ext.Extend())
            self.checkGap(gap, 2, 9, 'AATLNG')
            self.assertTrue(ext.Extend())
            self.checkGap(gap, 1, 9, 'AAATLNG')
            self.assertTrue(ext.Extend())
            self.checkGap(gap, 4, 19, 'TLNGFTVPAGNTLV')
            self.assertTrue(ext.Extend())
            self.checkGap(gap, 3, 19, 'ATLNGFTVPAGNTLV')
            # check rest
            exp_max_length = mhandle.seqres[0].GetLength()-3
            while ext.Extend():
                self.assertLessEqual(gap.length, exp_max_length)
            self.assertEqual(gap.length, exp_max_length)
    
        def testScoringGapExtender(self):
            mhandle = self.getRawModel()
            seq_length = mhandle.seqres[0].GetLength()
            penalties = [1.0]*4 + [0.0]*(seq_length-4)
            # use first gap
            gap = mhandle.gaps[0].Copy()
            ext = modelling.ScoringGapExtender(gap, 0.8, penalties,
                                               mhandle.seqres[0], -2)
            self.checkGap(gap, 4, 8, 'TLN')
            # extend it
            self.assertTrue(ext.Extend())
            self.checkGap(gap, 4, 9, 'TLNG') # 0.8
            self.assertTrue(ext.Extend())
            self.checkGap(gap, 3, 8, 'ATLN') # 1.8
            self.assertTrue(ext.Extend())
            self.checkGap(gap, 3, 9, 'ATLNG') # 2.6
            self.assertTrue(ext.Extend())
            self.checkGap(gap, 2, 8, 'AATLN') # 3.6
            self.assertFalse(ext.Extend())
            # ensure gap not changing on false
            self.checkGap(gap, 2, 8, 'AATLN')
    
        def testScoringGapExtender12(self):
            mhandle = self.getRawModel()
            seq_length = mhandle.seqres[0].GetLength()
            penalties = [1.0]*4 + [0.0]*(seq_length-4)
            # use first gap
            gap = mhandle.gaps[0].Copy()
            ext = modelling.ScoringGapExtender(gap, 0.8, penalties,
                                               mhandle.seqres[0], 12)
            self.checkGap(gap, 4, 8, 'TLN')
            # extend it
            self.assertTrue(ext.Extend())
            self.checkGap(gap, 4, 9, 'TLNG') # 0.8
            self.assertTrue(ext.Extend())
            self.checkGap(gap, 3, 8, 'ATLN') # 1.8
            self.assertTrue(ext.Extend())
            self.checkGap(gap, 3, 9, 'ATLNG') # 2.6
            self.assertTrue(ext.Extend())
            self.checkGap(gap, 4, 12, 'TLNGFTV') # 3.2
            self.assertTrue(ext.Extend())
            self.checkGap(gap, 2, 8, 'AATLN') # 3.6
            self.assertTrue(ext.Extend())
            self.checkGap(gap, 4, 13, 'TLNGFTVP') # 4
            self.assertTrue(ext.Extend())
            self.checkGap(gap, 2, 9, 'AATLNG') # 4.4
            self.assertTrue(ext.Extend())
            self.checkGap(gap, 4, 14, 'TLNGFTVPA') # 4.8
            self.assertTrue(ext.Extend())
            self.checkGap(gap, 3, 12, 'ATLNGFTV') # 5
            self.assertTrue(ext.Extend())
            self.checkGap(gap, 1, 8, 'AAATLN') # 5.4
            self.assertTrue(ext.Extend())
            self.checkGap(gap, 4, 15, 'TLNGFTVPAG') # 5.6
            self.assertTrue(ext.Extend())
            self.checkGap(gap, 3, 13, 'ATLNGFTVP') # 5.8
            self.assertTrue(ext.Extend())
            self.checkGap(gap, 1, 9, 'AAATLNG') # 6.2
            self.assertTrue(ext.Extend())
            self.checkGap(gap, 4, 16, 'TLNGFTVPAGN') # 6.4
            self.assertTrue(ext.Extend())
            self.checkGap(gap, 3, 14, 'ATLNGFTVPA') # 6.6
            self.assertTrue(ext.Extend())
            self.checkGap(gap, 2, 12, 'AATLNGFTV') # 6.8
            self.assertTrue(ext.Extend())
            self.checkGap(gap, 4, 17, 'TLNGFTVPAGNT') # 7.2
            self.assertTrue(ext.Extend())
            self.checkGap(gap, 3, 15, 'ATLNGFTVPAG') # 7.4
            self.assertTrue(ext.Extend())
            self.checkGap(gap, 2, 13, 'AATLNGFTVP') # 7.6
            self.assertTrue(ext.Extend())
            self.checkGap(gap, 3, 16, 'ATLNGFTVPAGN') # 8.2
            self.assertTrue(ext.Extend())
            self.checkGap(gap, 2, 14, 'AATLNGFTVPA') # 8.4
            self.assertTrue(ext.Extend())
            self.checkGap(gap, 1, 12, 'AAATLNGFTV') # 8.6
            self.assertTrue(ext.Extend())
            self.checkGap(gap, 2, 15, 'AATLNGFTVPAG') # 9.2
            self.assertTrue(ext.Extend())
            self.checkGap(gap, 1, 13, 'AAATLNGFTVP') # 9.4
            self.assertTrue(ext.Extend())
            self.checkGap(gap, 1, 14, 'AAATLNGFTVPA') # 10.2
            # ensure gap not changing on false
            self.checkGap(gap, 1, 14, 'AAATLNGFTVPA')
    
        def testScoringGapExtenderAll(self):
            mhandle = self.getRawModel()
            seq_length = mhandle.seqres[0].GetLength()
            penalties = [1.0]*4 + [0.0]*(seq_length-4)
            # use first gap
            gap = mhandle.gaps[0].Copy()
            ext = modelling.ScoringGapExtender(gap, 0.8, penalties,
                                               mhandle.seqres[0], -1)
            self.checkGap(gap, 4, 8, 'TLN')
            # extend it
            self.assertTrue(ext.Extend())
            self.checkGap(gap, 4, 9, 'TLNG') # 0.8
            self.assertTrue(ext.Extend())
            self.checkGap(gap, 3, 8, 'ATLN') # 1.8
            self.assertTrue(ext.Extend())
            self.checkGap(gap, 3, 9, 'ATLNG') # 2.6
            self.assertTrue(ext.Extend())
            self.checkGap(gap, 4, 12, 'TLNGFTV') # 3.2
            # check rest
            exp_max_length = seq_length-3
            max_length = 0
            while ext.Extend():
                self.assertLessEqual(gap.length, exp_max_length)
                max_length = max(max_length, gap.length)
            self.assertEqual(max_length, exp_max_length)
    
    if __name__ == "__main__":
        from ost import testutils
        testutils.RunTests()