Some Of My Utils

version 1.7a

SOMU is a command line utility operated by the arrow keys. It contains several PGN and EPD tools. PGN files are found (stored) in the PGN folder, likewise EPD files in the EPD folder. It's functions:

The PGN part

Match Stats

From a PGN create and (automatically) view a HTML file, example-1 is created from gambit.pgn (provided in the download) taken from the YAT gambit tournament. Example-2 is created from a CCRL pgn testing Komodo 12.

Match Compare

Check the PGN of an engine-engine PLY-Match, games should be indentical else perhaps something is wrong. Different moves are marked and stored in OUTPUT.PGN Background: it's extremely important (especially for starters) that a PLY-MATCH (say PLY=10) produces the exact same reverse game, so game-1 and game-2 in the PGN should be 100% equal, game-3 = game-4 and so on.


This function will create a cross table from a (large) PGN file. Maximum number of players (human and/or engine) is 100. Example taken from the gambit.pgn mentioned earlier. Another example, the final FCP rating list by Frank Quisinsky.

Strip PGN

Strip played moves by engines from a PGN. What is left and stored in OUTPUT.PGN are the book moves. Handy for opening book tuning with Polyglot.

Split PGN

Split large PGN files into smaller parts.

Remove Double Openings (games)

From a PGN collection display the match score, then remove the double openings and calculate the new match score without the double openings. This util is handy in 3 ways:

. checking an eng-eng match for opening doubles, see screenshot (file bf.pgn)

. pre-checking your predefined opening sets for eng-eng matches.

. In case a PGN doesn't contain comments it will check for duplicated games.

The EPD part

Remove Doubles

Remove doubles from an EPD collection.

EPD legal check

Remove invalid positions from an EPD collection.


Converts EPD to PGN, bm and ce tags included when present. Try this with the included 150 positions example.epd file.

Split EPD

Split large EPD files into smaller parts.

Prepare EPD

Create an EPD collection from PGN games for the use of Analyze EPD, Analyze EPD++ or Analyze EPD+++. With the option "Ply from" - "Ply till" you can hack the analysis job into pieces. Doubles are removed.

Analyze EPD

Analyze an EPD collection with Stockfish 8, 9 and higher. Example before and after.

Analyze EPD ++

Analyze an EPD collection with Stockfish 8, 9 and higher splitting the analyzing over a user defined number of threads for speed reasons. Example before and after.

The advantage of Analyze EPD and Analyze EPD ++ is that it will work with every new version provided the Stockfish team doesn't change the bench function. Just copy a newer Stockfish version in the SOMU folder.

Current default version is SF10x a beta version considerable stronger than SF9, see results.

Analyze EPD +++

As Analyze EPD++ but with Multi-PV 2, 3 or 4. Example before and after

SOMU Function Keys


Overview Function Keys


Delete bad or too good EPD positions controlled by a flexible score margin.


From each PGN game create an EPD of the last move.


Quickly count the number of games in a PGN.


Quickly count EPD positions.


Reverse (mirror) an EPD collection.


Remove illegal 'bm' moves from an EPD collection, long notation only.


Create a statistic from an EPD collection. It also will create 10 separate EPD files:

. Queen | Rook | Bishop and Knight promotions

. Possitive Mate in X moves | Negative Mate in -X moves

. Pawn Endings | Bishop Knight endings | Rook endings | Queen Endings


Extract games from PGN.

Selection criterions - elo rating and/or ECO code.



From a PGN create an EPD set for the use of MEA as used in OKE and SIMEX.

Example from the eng-eng match brainfish.pgn included in the download:

Ply from : 0

Ply till : 80

epd size : 10000

Will create an EPD of 10,000 records.



Converts an EPD that contains the "bm" tag for the use of MEA as used in OKE and SIMEX.

Included is the example file midgame.epd extracted from Dann Corbit's collection.


Online help, this page.


Programmer stuff - Create the 12 midgame PST's from a PGN database. Info here


Programmer stuff - Create the 12 endgame PST's from a PGN database. Info here

Remark - The PGN part is compatible with Arena and Cutechess-cli, the gibberish ChessBase PGN's work for the most part except for depth and time statistics.


Tord Romstad, Marco Costalba and Joona Kiisk for Stockfish.

David J. Barnes for Pgn-Extract.

SOMU 1.7a

20 Mb