testsAndMisc/python_pkg/stockfish_analysis
Krzysztof kuhy Rudnicki b1a5f245a2 fix(lint): LOG015 - replace root logger with module loggers
- Add _logger = logging.getLogger(__name__) to all modules
- Replace logging.X() calls with _logger.X() calls
- Remove logging.basicConfig() from module level (keep in run_bot())
- Add G004 to global ignores (f-strings in logging are more readable)
- Remove LOG015 and G004 per-file ignores from pyproject.toml
- Fix pytest_ignore_collect hook signature in conftest.py
2025-11-30 21:59:24 +01:00
..
analyze_chess_game.py fix(lint): LOG015 - replace root logger with module loggers 2025-11-30 21:59:24 +01:00
README.md refactor: rename folders to fix N999, INP001, S311 linting rules 2025-11-30 21:20:17 +01:00
requirements.txt refactor: rename folders to fix N999, INP001, S311 linting rules 2025-11-30 21:20:17 +01:00
run.sh refactor: rename folders to fix N999, INP001, S311 linting rules 2025-11-30 21:20:17 +01:00

Chess move analysis with Stockfish

This utility parses a PGN (or a log that contains a PGN section) and evaluates each move with a local Stockfish engine, printing a per-move quality rating.

Install

Install python dependencies:

pip install -r PYTHON/stockfish_analysis/requirements.txt

Ensure Stockfish is installed and available in your PATH (or provide the path via --engine). On Linux, you can typically install with your package manager or download a binary.

Run

From the repo root:

python3 PYTHON/analyze_chess_game.py lichess_bot_game_8GSdY3Ci.log

Options:

  • --engine /path/to/stockfish to specify a custom engine path
  • --time 0.2 seconds per evaluation (default)
  • --depth 12 fixed depth instead of time

The script prints a table with, for each ply:

  • side to move, SAN move, eval before/after from mover's POV, delta, classification, and Stockfish best move suggestion.