├── Consolidated.output ├── consolidate.py ├── getData.py └── logs /consolidate.py: -------------------------------------------------------------------------------- 1 | import os 2 | 3 | data = {} 4 | count = 0 5 | 6 | for filename in os.listdir("results/"): 7 | with open('results/{0}'.format(filename), 'r') as infile: 8 | for line in infile.readlines(): 9 | l = line.split(',') 10 | 11 | if l[2] == "1\n": 12 | # skip blunders that were only played once to save memory 13 | continue 14 | 15 | blunder = l[0] + ',' + l[1] 16 | 17 | if blunder in data: 18 | data[blunder] += int(l[2]) 19 | 20 | else: 21 | data[blunder] = int(l[2]) 22 | count += 1 23 | print(str(len(data.keys())) + " " + str(count)) 24 | print(filename + " done") 25 | 26 | 27 | with open('Consolidated.output', 'w') as outfile: 28 | sorted_data = sorted(data, key=data.get, reverse=True) 29 | for r in sorted_data: 30 | outfile.write('{0},{1}\n'.format(r, data[r])) 31 | -------------------------------------------------------------------------------- /getData.py: -------------------------------------------------------------------------------- 1 | import chess 2 | import chess.pgn 3 | import time 4 | import sys 5 | 6 | def findFname(input, num): 7 | fname = input.rstrip('.pgn').lstrip('data/') 8 | fname = 'results/' + fname + '_' + str(num) + '.output' 9 | return fname 10 | 11 | def saveData(data, num): 12 | with open(findFname(sys.argv[1], num), 'w') as outfile: 13 | sorted_data = sorted(data, key=data.get, reverse=True) 14 | for r in sorted_data: 15 | outfile.write('{0},{1}\n'.format(r, data[r])) 16 | 17 | pgn = open(sys.argv[1], 'r') 18 | 19 | match = chess.pgn.read_game(pgn) 20 | data = {} 21 | total_games = 0 22 | eval_games = 0 23 | num = 0 24 | start = time.time() 25 | 26 | while match != None: 27 | node = match 28 | try: 29 | comment = node.variations[0].comment 30 | except: 31 | match = chess.pgn.read_game(pgn) 32 | total_games += 1 33 | continue 34 | 35 | if '%eval' not in comment: 36 | # There is no eval for this game, skip to next 37 | match = chess.pgn.read_game(pgn) 38 | total_games += 1 39 | continue 40 | 41 | # Game has an eval, loop through moves 42 | while not node.is_end(): 43 | next_node = node.variations[0] 44 | if 4 in next_node.nags: 45 | # Check the nag set for each node for 4: the indicator for blunder 46 | fen = node.board().fen() 47 | move = node.board().san(next_node.move) 48 | index = str(fen) + "," + str(move) 49 | 50 | if index in data: 51 | data[index] += 1 52 | else: 53 | data[index] = 1 54 | 55 | node = next_node 56 | 57 | match = chess.pgn.read_game(pgn) 58 | total_games += 1 59 | eval_games += 1 60 | 61 | if eval_games % 100000 == 0: 62 | # Prepare to write dict to outfile 63 | num += 1 64 | saveData(data, num) 65 | data = {} 66 | print('eval = {0} : total = {1}'.format(eval_games, total_games)) 67 | 68 | 69 | print('FINAL: eval = {0} : total = {1}'.format(eval_games, total_games)) 70 | 71 | end = time.time() 72 | t = end - start 73 | 74 | # Prepare to write dict to outfile 75 | num += 1 76 | 77 | saveData(data, num) 78 | 79 | #Save stats to the logs file 80 | with open('logs', 'a') as outfile: 81 | name = sys.argv[1].rstrip('.pgn') 82 | name = name.lstrip('data/') 83 | outfile.write('{0}: eval = {1}, total = {2}, time = {3:.1f}\n'.format(name, eval_games, total_games, t)) 84 | -------------------------------------------------------------------------------- /logs: -------------------------------------------------------------------------------- 1 | 13-01: eval = 518, total = 121332, time = 688.6 2 | 13-02: eval = 463, total = 123961, time = 712.1 3 | 13-03: eval = 647, total = 158635, time = 911.7 4 | 13-04: eval = 659, total = 157871, time = 971.7 5 | 13-05: eval = 943, total = 179550, time = 981.6 6 | 13-07: eval = 1351, total = 293459, time = 988.4 7 | 13-06: eval = 965, total = 224679, time = 1352.1 8 | 13-08: eval = 1652, total = 325525, time = 2582.4 9 | 13-09: eval = 1717, total = 325098, time = 1409.0 10 | 13-10: eval = 9498, total = 411039, time = 1347.8 11 | 13-11: eval = 19926, total = 487012, time = 1914.9 12 | 13-12: eval = 25432, total = 578262, time = 2569.6 13 | 14-09: eval = 119574, total = 1000056, time = 4415.7 14 | 14-01: eval = 30336, total = 697600, time = 2808.0 15 | 18-09: eval = 1504819, total = 22971939, time = 91848.5 16 | 18-10: eval = 1641423, total = 24784600, time = 100635.2 17 | 18-06: eval = 1492855, total = 20273737, time = 86526.7 18 | 18-07: eval = 1531413, total = 21070917, time = 89181.6 19 | 18-08: eval = 1694818, total = 22635642, time = 94388.9 20 | 18-02: eval = 1426644, total = 17383410, time = 88193.3 21 | 18-01: eval = 1480846, total = 17945784, time = 90998.3 22 | 18-04: eval = 1598088, total = 19881929, time = 99031.3 23 | 18-03: eval = 1616703, total = 20036271, time = 99322.9 24 | 18-05: eval = 1644443, total = 21442600, time = 105110.3 25 | 17-04: eval = 992336, total = 11348506, time = 57269.9 26 | 17-06: eval = 921756, total = 11512600, time = 57762.5 27 | 17-05: eval = 957369, total = 11693919, time = 58789.5 28 | 17-07: eval = 962035, total = 12080314, time = 60654.4 29 | 17-08: eval = 979431, total = 12458761, time = 61937.1 30 | 17-09: eval = 920569, total = 12564109, time = 59617.7 31 | 17-10: eval = 1010924, total = 13703878, time = 64375.5 32 | 17-11: eval = 1078379, total = 14306375, time = 67087.6 33 | 17-12: eval = 1329750, total = 16232215, time = 74846.8 34 | 16-11: eval = 970354, total = 8021509, time = 36893.0 35 | 16-12: eval = 1178525, total = 9433412, time = 42817.0 36 | 17-02: eval = 1115286, total = 10194939, time = 45857.1 37 | 17-01: eval = 1235035, total = 10680708, time = 47281.8 38 | 17-03: eval = 1154391, total = 11346745, time = 48819.8 39 | 16-07: eval = 800496, total = 6275933, time = 28427.8 40 | 16-06: eval = 765433, total = 6136419, time = 28900.8 41 | 16-08: eval = 791763, total = 6483257, time = 29988.7 42 | 16-09: eval = 813381, total = 6813113, time = 31259.0 43 | 16-10: eval = 899261, total = 7599868, time = 33874.4 44 | 16-01: eval = 702770, total = 4770357, time = 22547.5 45 | 16-02: eval = 708887, total = 5015361, time = 23332.8 46 | 16-04: eval = 783488, total = 5922667, time = 26944.4 47 | 16-03: eval = 795782, total = 5801234, time = 27355.4 48 | 16-05: eval = 784681, total = 6225957, time = 28318.4 49 | 15-08: eval = 531631, total = 2621861, time = 12688.5 50 | 15-09: eval = 562500, total = 2844677, time = 13870.0 51 | 15-10: eval = 638646, total = 3400418, time = 15301.2 52 | 15-11: eval = 586874, total = 3595776, time = 15991.6 53 | 15-12: eval = 613808, total = 4161162, time = 17186.1 54 | 15-02: eval = 254940, total = 1495553, time = 7162.3 55 | 15-04: eval = 216368, total = 1785418, time = 8104.8 56 | 15-03: eval = 243578, total = 1742733, time = 8169.1 57 | 15-06: eval = 372269, total = 2324106, time = 10901.3 58 | 14-09: eval = 119574, total = 1000056, time = 4651.3 59 | 15-07: eval = 516488, total = 2455141, time = 12208.6 60 | 14-10: eval = 157339, total = 1111302, time = 5108.4 61 | 14-11: eval = 189898, total = 1209291, time = 5628.0 62 | 14-12: eval = 245794, total = 1350176, time = 5723.3 63 | 15-01: eval = 261408, total = 1497237, time = 6021.3 64 | 14-04: eval = 59198, total = 810463, time = 3591.0 65 | 14-05: eval = 139536, total = 905374, time = 4326.6 66 | 14-06: eval = 154026, total = 961868, time = 4542.3 67 | 14-08: eval = 169531, total = 1013294, time = 4822.2 68 | 14-07: eval = 175033, total = 1048440, time = 4964.4 69 | 14-01: eval = 30336, total = 697600, time = 2514.9 70 | 14-02: eval = 37375, total = 692394, time = 2536.0 71 | 14-03: eval = 42237, total = 795173, time = 2913.5 72 | 13-01: eval = 518, total = 121332, time = 492.3 73 | 13-04: eval = 659, total = 157871, time = 639.2 74 | 13-02: eval = 463, total = 123961, time = 508.4 75 | 13-07: eval = 1351, total = 293459, time = 1187.2 76 | 13-05: eval = 943, total = 179550, time = 733.9 77 | 13-03: eval = 647, total = 158635, time = 654.5 78 | 13-10: eval = 9498, total = 411039, time = 1686.6 79 | 13-06: eval = 965, total = 224679, time = 865.1 80 | 13-08: eval = 1652, total = 325525, time = 1246.1 81 | 13-11: eval = 19926, total = 487012, time = 1824.5 82 | 13-09: eval = 1717, total = 325098, time = 1129.3 83 | 13-12: eval = 25432, total = 578262, time = 2036.5 84 | 18-11: eval = 1859378, total = 26136657, time = 102069.2 85 | 19-02: eval = 2098155, total = 31023718, time = 133785.9 86 | 18-12: eval = 2307138, total = 31179146, time = 134154.6 87 | 19-01: eval = 2391559, total = 33886899, time = 148681.8 88 | 19-04: eval = 2139061, total = 33565536, time = 136073.9 89 | 19-03: eval = 2336763, total = 34869171, time = 138703.7 90 | 19-05: eval = 2088155, total = 35236588, time = 136441.6 91 | 19-06: eval = 1972013, total = 33935786, time = 132464.2 92 | 19-07: eval = 2046658, total = 35728182, time = 138706.9 93 | 19-08: eval = 2110232, total = 36745427, time = 144868.8 94 | 19-09: eval = 2068965, total = 36996010, time = 149021.4 95 | 19-10: eval = 2241663, total = 40440254, time = 164055.1 96 | --------------------------------------------------------------------------------