def exercise(args): if find_rotarama_data_dir(optional=True) is None: print "Skipping exercise(): rotarama_data directory not available" else: from mmtbx.command_line import rebuild_rotarama_cache rebuild_rotarama_cache.run() # from libtbx.test_utils import approx_equal # verbose = "--verbose" in args # r = RotamerEval() tbl = r.aaTables["val"] assert RotamerEval().aaTables["val"] is tbl # assert tbl.whereIs([0.5]) == [0] assert tbl.bin2index([0]) == 0 if r.data_version == "8000": aeql = [ 0.0000000, 0.8926509, 0.8296402, 0.7876331, 0.7351242, 0.6721136, 0.6511100, 0.6406083, 0.5670958, 0.4620781, 0.4200710, 0.3885657, 0.3570603, 0.2625444, 0.1785302, 0.1155195, 0.0945160, 0.0945160, 0.0735124, 0.0735124, ] assert approx_equal([(y * 1000) for y in tbl.lookupTable[0:20]], aeql) assert approx_equal(r.evaluate("SER", [60]), 0.759436935186) # # Based off new (March 2015) NDFTs built from top8000-angles Makefile # Remaining inaccuracies are due to dihedrals being rounded off to # one decimal place! assert r.data_version == "8000" for aminoAcid, chiAngles, molpValue in [ ("MET", [80.4, -172.2, 177.5], 9.7), ("GLN", [166.0, 178.0, -107.4], 9.7), ("ILE", [60.3, 162.4], 24.2), ("PHE", [-60.7, 97.9], 94.4), ("VAL", [-179.8], 58.2), ("LYS", [-175.6, 176.2, -172.0, -174.2], 81.8), ("THR", [76.7], 10.3), ("LEU", [-68.2, -165.8], 9.1), ("THR", [70.7], 25.9), ("LYS", [-179.3, -179.4, -151.1, -49.3], 13.1), ("THR", [-63.4], 83.9), ("ILE", [125.7, -175.4], 0.0), ("THR", [66.5], 45.3), ("LEU", [-117.8, 30.2], 0.0), ("GLU", [-75.1, -167.9, 139.8], 34.9), ("VAL", [-62.5], 32.5), ("GLU", [-73.9, -54.5, -18.4], 29.9), ("PRO", [-29.0], 90.6), ("SER", [35.7], 0.5), ("ASP", [-80.6, -19.8], 55.0), ("THR", [60.6], 79.8), ("ILE", [-60.9, -54.6], 35.5), ("GLU", [-169.6, -175.1, 72.8], 30.3), ("ASN", [177.5, 53.8], 30.3), ("VAL", [168.2], 42.4), ("LYS", [-71.7, -173.9, 179.2, 179.4], 94.0), ("LYS", [-60.8, 169.3, 148.9, -89.1], 5.7), ("ILE", [-70.9, 166.5], 75.5), ("GLN", [176.9, 171.9, 35.2], 55.5), ("ASP", [-150.1, 65.5], 1.0), ("LYS", [78.3, 138.2, 62.4, -165.4], 0.7), ("GLU", [-60.1, -76.8, -36.2], 36.3), ("ILE", [-54.4, 161.0], 30.8), ("PRO", [-31.6], 60.3), ("PRO", [-28.4], 96.3), ("ASP", [134.6, -61.7], 0.0), ("GLN", [-61.9, -179.0, -165.3], 13.0), ("GLN", [-53.1, -179.9, 28.0], 47.2), ("ARG", [161.7, 173.6, 174.2, -106.7], 20.5), ("LEU", [-68.3, 166.9], 81.8), ("ILE", [-48.9, -58.1], 29.8), ("PHE", [178.0, 78.2], 93.1), ("LYS", [-61.5, 173.7, -111.9, -58.8], 2.2), ("GLN", [-172.6, 177.3, 118.5], 9.7), ("LEU", [-50.8, -172.7], 17.3), ("GLU", [173.0, 141.4, 172.4], 2.4), ("ASP", [-78.0, 177.6], 74.9), ("ARG", [-55.9, -71.7, 114.2, -128.0], 0.4), ("THR", [59.8], 74.3), ("LEU", [-60.3, -179.2], 78.5), ("SER", [59.4], 73.3), ("ASP", [-73.0, 157.0], 84.8), ("TYR", [-63.3, 103.6], 90.4), ("ASN", [-159.1, -145.0], 1.2), ("ILE", [-69.6, 176.4], 57.3), ("GLN", [-79.4, -161.7, -148.4], 2.4), ("LYS", [49.7, 165.7, 154.3, 72.9], 3.2), ("GLU", [-72.2, 126.6, 36.7], 0.6), ("SER", [-73.2], 18.8), ("THR", [-60.6], 94.7), ("LEU", [-43.5, -170.9], 4.6), ("HIS", [-69.1, -88.8], 80.8), ("LEU", [172.8, 65.9], 43.9), ("VAL", [177.0], 83.7), ("LEU", [-108.1, 39.2], 0.0), ("ARG", [133.9, -155.8, 27.2, -152.9], 0.0), ("LEU", [-92.5, 37.5], 0.1), ("ARG", [-146.6, 157.6, 92.9, -95.5], 0.9), ]: r_eval = 100 * r.evaluate(aminoAcid, chiAngles) if verbose: print aminoAcid, "%4.1f %4.1f %4.1f" % (r_eval, molpValue, r_eval - molpValue) # print ' ("%s",' % aminoAcid, chiAngles, ',', "%4.1f)," % r_eval # assert approx_equal(r_eval, molpValue, eps=0.9) # # check if tables are cleared from memory if all RotamerEval instances # are gone for aa, ndt_weakref in RotamerEval.aaTables.items(): assert ndt_weakref() is not None del r del tbl for aa, ndt_weakref in RotamerEval.aaTables.items(): assert ndt_weakref() is None # print "OK"
def exercise(args): if (find_rotarama_data_dir(optional=True) is None): print "Skipping exercise(): rotarama_data directory not available" else: from mmtbx.command_line import rebuild_rotarama_cache rebuild_rotarama_cache.run() # from libtbx.test_utils import approx_equal # verbose = ("--verbose" in args) # r = RamachandranEval() tbl = r.aaTables['glycine'] assert RamachandranEval().aaTables['glycine'] is tbl # # Based off new (Oct 2006) NDFTs built from top500-angles Makefile # Remaining inaccuracies are due to dihedrals being rounded off to # one decimal place! for aminoAcid, phiPsi, molpValue in [ #{{{ ("general", [-91.17, 131.33], 40.94), ("general", [-139.95, 81.92], 1.47), ("general", [51.22, 23.16], 2.52), ("glycine", [-151.55, 88.38], 0.07), ("general", [-82.35, 160.71], 23.71), ("general", [-101.76, 135.67], 45.14), ("general", [-110.13, 120.96], 58.46), ("general", [-81.78, 128.43], 39.44), ("glycine", [-133.39, 160.58], 21.73), ("general", [-133.33, 127.68], 42.30), ("general", [-108.38, 126.39], 61.01), ("general", [-113.08, 126.63], 62.09), ("general", [-143.87, 166.78], 25.67), ("prepro", [-124.82, 120.58], 26.77), ("proline", [-64.55, 145.64], 94.90), ("general", [-45.79, -40.17], 10.23), ("general", [-63.09, 7.01], 0.47), ("general", [-100.14, -45.65], 7.66), ("general", [-86.64, -15.77], 36.67), ("general", [-154.47, 93.16], 1.42), ("general", [-112.91, 154.29], 27.39), ("prepro", [-164.30, 153.09], 10.20), ("proline", [-40.03, -62.10], 1.14), ("general", [-88.23, 54.64], 2.88), ("glycine", [-150.33, 8.77], 0.99), ("general", [-106.19, 65.65], 0.93), ("general", [-79.57, 41.90], 0.63), ("general", [-11.57, -82.78], 0.00), ("general", [54.67, 49.83], 15.13), ("general", [-31.21, 156.35], 0.00), ("general", [-5.62, -53.35], 0.00), ("general", [-60.03, -22.48], 63.20), ("general", [-71.41, -17.83], 64.40), ("general", [-80.18, -5.88], 44.61), ("general", [-90.33, -159.55], 0.66), ("glycine", [64.34, -132.09], 34.98), ("general", [-107.31, 27.71], 8.67), ("general", [-69.18, -45.50], 74.08), ("general", [-131.17, 129.92], 53.87), ("general", [-125.57, 136.49], 60.53), ("general", [-118.28, 151.90], 34.88), ("general", [-136.27, 122.13], 24.86), ("general", [-72.52, 148.04], 44.34), ("general", [-123.41, 135.11], 61.62), ("general", [-81.31, 137.39], 36.95), ("general", [-94.11, -22.71], 18.73), ("general", [-104.08, -30.86], 8.84), ("general", [-106.27, 124.65], 59.71), ("general", [-113.44, 157.11], 24.96), ("general", [-80.13, -171.26], 2.60), ("general", [-67.90, -10.85], 53.15), ("general", [-98.82, -6.37], 26.15), ("glycine", [92.77, -6.55], 73.68), ("general", [-88.65, 139.40], 33.51), ("glycine", [-53.72, 145.75], 24.34), ("general", [-69.26, 144.42], 48.55), ("general", [-107.68, 133.12], 57.79), ("glycine", [-77.98, -161.75], 22.90), ("general", [-88.43, 159.48], 18.09), ("general", [-69.18, 118.06], 13.32), ("general", [-118.20, 130.15], 63.55), ("general", [-101.63, 154.20], 20.70), ("general", [-60.43, 139.20], 53.08), ("general", [-98.65, -39.53], 9.62), ("glycine", [-170.85, 172.86], 45.91), ("general", [-83.58, 114.39], 22.07), ("general", [-86.93, 127.35], 36.67), ("general", [-133.54, 58.50], 1.43), ("general", [-104.10, -54.11], 3.80), ("prepro", [-95.84, 135.89], 33.59), ("proline", [-61.91, -44.54], 28.37), ("general", [-62.64, 83.24], 0.07), ("general", [-171.76, 111.15], 0.41), ("glycine", [-136.70, -139.20], 3.57), ("general", [42.42, 42.27], 3.32), ("glycine", [55.77, 28.48], 55.42), ("general", [-90.29, 157.93], 16.97), ("general", [-135.18, 139.86], 47.95), ("general", [-102.72, 137.51], 41.91), ("general", [-127.29, 134.66], 60.92), ("general", [-83.54, 142.97], 31.55), ("general", [-155.14, 146.33], 20.07), ("general", [-128.99, 131.88], 59.20), ("general", [-107.06, 146.26], 31.12), ("general", [-92.24, 97.79], 11.98), ("general", [-134.18, 101.62], 6.01), ("general", [-78.17, 152.18], 31.34), ("glycine", [-50.36, -27.45], 22.99), ("general", [-66.02, -20.32], 67.44), ("general", [-77.76, -2.10], 27.17), ("glycine", [81.90, -156.46], 41.39), ("prepro", [-107.81, 128.95], 28.69), ("proline", [-70.18, 133.33], 26.27), ("glycine", [-126.36, 3.87], 6.77), ("general", [-167.92, 174.97], 6.79), ("general", [-159.77, 150.09], 17.32), ("general", [-99.29, 152.73], 20.45), ("general", [-145.08, 134.33], 21.62), ("general", [-125.58, 126.16], 58.63), ("general", [-100.31, 110.18], 27.07), ("general", [-88.81, -7.47], 49.70), ("general", [-75.67, 160.16], 28.16), ]: #}}} r_eval = 100 * r.evaluate(aminoAcid, phiPsi) if (verbose): print aminoAcid, "%4.1f %4.1f %4.1f" % (r_eval, molpValue, r_eval - molpValue) assert approx_equal(r_eval, molpValue, eps=0.9) # # check if tables are cleared from memory if all RamachandranEval instances # are gone for aa, ndt_weakref in RamachandranEval.aaTables.items(): assert ndt_weakref() is not None del r del tbl for aa, ndt_weakref in RamachandranEval.aaTables.items(): assert ndt_weakref() is None # print "OK"
def exercise(args): if (find_rotarama_data_dir(optional=True) is None): print "Skipping exercise(): rotarama_data directory not available" else: from mmtbx.command_line import rebuild_rotarama_cache rebuild_rotarama_cache.run() # from libtbx.test_utils import approx_equal # verbose = ("--verbose" in args) # r = RotamerEval() tbl = r.aaTables['val'] assert RotamerEval().aaTables['val'] is tbl # assert tbl.whereIs([0.5]) == [0] assert tbl.bin2index([0]) == 0 if r.data_version == '8000': aeql = [ 0.9346579, 0.8926509, 0.8296402, 0.7876331, 0.7351242, 0.6721136, 0.6511100, 0.6406083, 0.5670958, 0.4620781, 0.4200710, 0.3885657, 0.3570603, 0.2625444, 0.1785302, 0.1155195, 0.0945160, 0.0945160, 0.0735124, 0.0735124 ] assert approx_equal([(y * 1000) for y in tbl.lookupTable[0:20]], aeql) assert approx_equal(r.evaluate("SER", [60]), 0.759436935186) # # Based off new (March 2015) NDFTs built from top8000-angles Makefile # Remaining inaccuracies are due to dihedrals being rounded off to # one decimal place! assert r.data_version == '8000' for aminoAcid, chiAngles, molpValue in [ ("MET", [80.4, -172.2, 177.5], 9.7), ("GLN", [166.0, 178.0, -107.4], 9.7), ("ILE", [60.3, 162.4], 24.2), ("PHE", [-60.7, 97.9], 94.4), ("VAL", [-179.8], 58.2), ("LYS", [-175.6, 176.2, -172.0, -174.2], 81.8), ("THR", [76.7], 10.3), ("LEU", [-68.2, -165.8], 9.1), ("THR", [70.7], 25.9), ("LYS", [-179.3, -179.4, -151.1, -49.3], 13.1), ("THR", [-63.4], 83.9), ("ILE", [125.7, -175.4], 0.0), ("THR", [66.5], 45.3), ("LEU", [-117.8, 30.2], 0.0), ("GLU", [-75.1, -167.9, 139.8], 34.9), ("VAL", [-62.5], 32.5), ("GLU", [-73.9, -54.5, -18.4], 29.9), ("PRO", [-29.0], 90.6), ("SER", [35.7], 0.5), ("ASP", [-80.6, -19.8], 55.0), ("THR", [60.6], 79.8), ("ILE", [-60.9, -54.6], 35.5), ("GLU", [-169.6, -175.1, 72.8], 30.3), ("ASN", [177.5, 53.8], 30.3), ("VAL", [168.2], 42.4), ("LYS", [-71.7, -173.9, 179.2, 179.4], 94.0), ("LYS", [-60.8, 169.3, 148.9, -89.1], 5.7), ("ILE", [-70.9, 166.5], 75.5), ("GLN", [176.9, 171.9, 35.2], 55.5), ("ASP", [-150.1, 65.5], 1.0), ("LYS", [78.3, 138.2, 62.4, -165.4], 0.7), ("GLU", [-60.1, -76.8, -36.2], 36.3), ("ILE", [-54.4, 161.0], 30.8), ("PRO", [-31.6], 60.3), ("PRO", [-28.4], 96.3), ("ASP", [134.6, -61.7], 0.0), ("GLN", [-61.9, -179.0, -165.3], 13.0), ("GLN", [-53.1, -179.9, 28.0], 47.2), ("ARG", [161.7, 173.6, 174.2, -106.7], 20.5), ("LEU", [-68.3, 166.9], 81.8), ("ILE", [-48.9, -58.1], 29.8), ("PHE", [178.0, 78.2], 93.1), ("LYS", [-61.5, 173.7, -111.9, -58.8], 2.2), ("GLN", [-172.6, 177.3, 118.5], 9.7), ("LEU", [-50.8, -172.7], 17.3), ("GLU", [173.0, 141.4, 172.4], 2.4), ("ASP", [-78.0, 177.6], 74.9), ("ARG", [-55.9, -71.7, 114.2, -128.0], 0.4), ("THR", [59.8], 74.3), ("LEU", [-60.3, -179.2], 78.5), ("SER", [59.4], 73.3), ("ASP", [-73.0, 157.0], 84.8), ("TYR", [-63.3, 103.6], 90.4), ("ASN", [-159.1, -145.0], 1.2), ("ILE", [-69.6, 176.4], 57.3), ("GLN", [-79.4, -161.7, -148.4], 2.4), ("LYS", [49.7, 165.7, 154.3, 72.9], 3.2), ("GLU", [-72.2, 126.6, 36.7], 0.6), ("SER", [-73.2], 18.8), ("THR", [-60.6], 94.7), ("LEU", [-43.5, -170.9], 4.6), ("HIS", [-69.1, -88.8], 80.8), ("LEU", [172.8, 65.9], 43.9), ("VAL", [177.0], 83.7), ("LEU", [-108.1, 39.2], 0.0), ("ARG", [133.9, -155.8, 27.2, -152.9], 0.0), ("LEU", [-92.5, 37.5], 0.1), ("ARG", [-146.6, 157.6, 92.9, -95.5], 0.9), ]: r_eval = 100 * r.evaluate(aminoAcid, chiAngles) if (verbose): print aminoAcid, "%4.1f %4.1f %4.1f" % (r_eval, molpValue, r_eval - molpValue) #print ' ("%s",' % aminoAcid, chiAngles, ',', "%4.1f)," % r_eval # assert approx_equal(r_eval, molpValue, eps=0.9) # # check if tables are cleared from memory if all RotamerEval instances # are gone for aa, ndt_weakref in RotamerEval.aaTables.items(): assert ndt_weakref() is not None del r del tbl for aa, ndt_weakref in RotamerEval.aaTables.items(): assert ndt_weakref() is None # print "OK"
def exercise(args): if find_rotarama_data_dir(optional=True) is None: print "Skipping exercise(): rotarama_data directory not available" else: from mmtbx.command_line import rebuild_rotarama_cache rebuild_rotarama_cache.run() # from libtbx.test_utils import approx_equal # verbose = "--verbose" in args # r = RamachandranEval() tbl = r.aaTables["glycine"] assert RamachandranEval().aaTables["glycine"] is tbl # # Based off new (Oct 2006) NDFTs built from top500-angles Makefile # Remaining inaccuracies are due to dihedrals being rounded off to # one decimal place! for aminoAcid, phiPsi, molpValue in [ # {{{ ("general", [-91.17, 131.33], 40.94), ("general", [-139.95, 81.92], 1.47), ("general", [51.22, 23.16], 2.52), ("glycine", [-151.55, 88.38], 0.07), ("general", [-82.35, 160.71], 23.71), ("general", [-101.76, 135.67], 45.14), ("general", [-110.13, 120.96], 58.46), ("general", [-81.78, 128.43], 39.44), ("glycine", [-133.39, 160.58], 21.73), ("general", [-133.33, 127.68], 42.30), ("general", [-108.38, 126.39], 61.01), ("general", [-113.08, 126.63], 62.09), ("general", [-143.87, 166.78], 25.67), ("prepro", [-124.82, 120.58], 26.77), ("proline", [-64.55, 145.64], 94.90), ("general", [-45.79, -40.17], 10.23), ("general", [-63.09, 7.01], 0.47), ("general", [-100.14, -45.65], 7.66), ("general", [-86.64, -15.77], 36.67), ("general", [-154.47, 93.16], 1.42), ("general", [-112.91, 154.29], 27.39), ("prepro", [-164.30, 153.09], 10.20), ("proline", [-40.03, -62.10], 1.14), ("general", [-88.23, 54.64], 2.88), ("glycine", [-150.33, 8.77], 0.99), ("general", [-106.19, 65.65], 0.93), ("general", [-79.57, 41.90], 0.63), ("general", [-11.57, -82.78], 0.00), ("general", [54.67, 49.83], 15.13), ("general", [-31.21, 156.35], 0.00), ("general", [-5.62, -53.35], 0.00), ("general", [-60.03, -22.48], 63.20), ("general", [-71.41, -17.83], 64.40), ("general", [-80.18, -5.88], 44.61), ("general", [-90.33, -159.55], 0.66), ("glycine", [64.34, -132.09], 34.98), ("general", [-107.31, 27.71], 8.67), ("general", [-69.18, -45.50], 74.08), ("general", [-131.17, 129.92], 53.87), ("general", [-125.57, 136.49], 60.53), ("general", [-118.28, 151.90], 34.88), ("general", [-136.27, 122.13], 24.86), ("general", [-72.52, 148.04], 44.34), ("general", [-123.41, 135.11], 61.62), ("general", [-81.31, 137.39], 36.95), ("general", [-94.11, -22.71], 18.73), ("general", [-104.08, -30.86], 8.84), ("general", [-106.27, 124.65], 59.71), ("general", [-113.44, 157.11], 24.96), ("general", [-80.13, -171.26], 2.60), ("general", [-67.90, -10.85], 53.15), ("general", [-98.82, -6.37], 26.15), ("glycine", [92.77, -6.55], 73.68), ("general", [-88.65, 139.40], 33.51), ("glycine", [-53.72, 145.75], 24.34), ("general", [-69.26, 144.42], 48.55), ("general", [-107.68, 133.12], 57.79), ("glycine", [-77.98, -161.75], 22.90), ("general", [-88.43, 159.48], 18.09), ("general", [-69.18, 118.06], 13.32), ("general", [-118.20, 130.15], 63.55), ("general", [-101.63, 154.20], 20.70), ("general", [-60.43, 139.20], 53.08), ("general", [-98.65, -39.53], 9.62), ("glycine", [-170.85, 172.86], 45.91), ("general", [-83.58, 114.39], 22.07), ("general", [-86.93, 127.35], 36.67), ("general", [-133.54, 58.50], 1.43), ("general", [-104.10, -54.11], 3.80), ("prepro", [-95.84, 135.89], 33.59), ("proline", [-61.91, -44.54], 28.37), ("general", [-62.64, 83.24], 0.07), ("general", [-171.76, 111.15], 0.41), ("glycine", [-136.70, -139.20], 3.57), ("general", [42.42, 42.27], 3.32), ("glycine", [55.77, 28.48], 55.42), ("general", [-90.29, 157.93], 16.97), ("general", [-135.18, 139.86], 47.95), ("general", [-102.72, 137.51], 41.91), ("general", [-127.29, 134.66], 60.92), ("general", [-83.54, 142.97], 31.55), ("general", [-155.14, 146.33], 20.07), ("general", [-128.99, 131.88], 59.20), ("general", [-107.06, 146.26], 31.12), ("general", [-92.24, 97.79], 11.98), ("general", [-134.18, 101.62], 6.01), ("general", [-78.17, 152.18], 31.34), ("glycine", [-50.36, -27.45], 22.99), ("general", [-66.02, -20.32], 67.44), ("general", [-77.76, -2.10], 27.17), ("glycine", [81.90, -156.46], 41.39), ("prepro", [-107.81, 128.95], 28.69), ("proline", [-70.18, 133.33], 26.27), ("glycine", [-126.36, 3.87], 6.77), ("general", [-167.92, 174.97], 6.79), ("general", [-159.77, 150.09], 17.32), ("general", [-99.29, 152.73], 20.45), ("general", [-145.08, 134.33], 21.62), ("general", [-125.58, 126.16], 58.63), ("general", [-100.31, 110.18], 27.07), ("general", [-88.81, -7.47], 49.70), ("general", [-75.67, 160.16], 28.16), ]: # }}} r_eval = 100 * r.evaluate(aminoAcid, phiPsi) if verbose: print aminoAcid, "%4.1f %4.1f %4.1f" % (r_eval, molpValue, r_eval - molpValue) assert approx_equal(r_eval, molpValue, eps=0.9) # # check if tables are cleared from memory if all RamachandranEval instances # are gone for aa, ndt_weakref in RamachandranEval.aaTables.items(): assert ndt_weakref() is not None del r del tbl for aa, ndt_weakref in RamachandranEval.aaTables.items(): assert ndt_weakref() is None # print "OK"