|
3 | 3 | Player,
|
4 | 4 | MoveMap,
|
5 | 5 | GameTree,
|
| 6 | + GameNode, |
6 | 7 | AnalyzedGame,
|
7 | 8 | MaiaEvaluation,
|
8 | 9 | LegacyAnalyzedGame,
|
@@ -35,6 +36,37 @@ function buildGameTree(moves: any[], initialFen: string) {
|
35 | 36 | return tree
|
36 | 37 | }
|
37 | 38 |
|
| 39 | +function convertMoveMapToStockfishEval( |
| 40 | + moveMap: MoveMap, |
| 41 | + moveKey: string, |
| 42 | +): StockfishEvaluation { |
| 43 | + const cp_vec: { [key: string]: number } = {} |
| 44 | + const cp_relative_vec: { [key: string]: number } = {} |
| 45 | + let model_optimal_cp = -Infinity |
| 46 | + let model_move = '' |
| 47 | + |
| 48 | + for (const move in moveMap) { |
| 49 | + cp_vec[move] = moveMap[move] |
| 50 | + if (moveMap[move] > model_optimal_cp) { |
| 51 | + model_optimal_cp = moveMap[move] |
| 52 | + model_move = move |
| 53 | + } |
| 54 | + } |
| 55 | + |
| 56 | + for (const move in cp_vec) { |
| 57 | + cp_relative_vec[move] = model_optimal_cp - cp_vec[move] |
| 58 | + } |
| 59 | + |
| 60 | + return { |
| 61 | + sent: true, |
| 62 | + depth: 20, |
| 63 | + model_move: model_move, |
| 64 | + model_optimal_cp: model_optimal_cp, |
| 65 | + cp_vec: cp_vec, |
| 66 | + cp_relative_vec: cp_relative_vec, |
| 67 | + } |
| 68 | +} |
| 69 | + |
38 | 70 | const readStream = (processLine: (data: any) => void) => (response: any) => {
|
39 | 71 | const stream = response.body.getReader()
|
40 | 72 | const matcher = /\r?\n/
|
@@ -482,6 +514,26 @@ export const getAnalyzedTournamentGame = async (gameId = ['FkgYSri1']) => {
|
482 | 514 |
|
483 | 515 | const tree = buildGameTree(moves, moves[0].board)
|
484 | 516 |
|
| 517 | + let currentNode = tree.getRoot() as GameNode |
| 518 | + for (let i = 0; i < moves.length; i++) { |
| 519 | + const move = moves[i] |
| 520 | + |
| 521 | + if (move.lastMove) { |
| 522 | + const [from, to] = move.lastMove |
| 523 | + const moveKey = from + to |
| 524 | + const stockfishEval = stockfishEvaluations[i] |
| 525 | + ? convertMoveMapToStockfishEval(stockfishEvaluations[i], moveKey) |
| 526 | + : undefined |
| 527 | + |
| 528 | + if (stockfishEval) { |
| 529 | + currentNode = currentNode.mainChild |
| 530 | + if (currentNode) { |
| 531 | + currentNode.addStockfishAnalysis(stockfishEval) |
| 532 | + } |
| 533 | + } |
| 534 | + } |
| 535 | + } |
| 536 | + |
485 | 537 | return {
|
486 | 538 | id,
|
487 | 539 | blackPlayer,
|
|
0 commit comments