Chess database

You can save PGN files into (sqlite) database using nochetodbload.
Saved positions can by evaluated by nochetodbeval, which keeps evaluated results in the database.
Saved games, positions and evaluations can be viewed in nocheto's opening explorer, moves tree etc.

Load PGN games into database

Use nochtodbload filename.pgn to load PGN file into database.

nochetodbeval screenshot

PGN file can contain more than one game.

On the picture above, you can see that the PGN file contained only one game. The game consists of 108 positions, 91 of them were new (not yet in the database). The game got it's identification number (ID) 994.

If you load the same game twice, you shoud get the same ID. nochetodbload tries to find the same game based on player names, date of event, number of moves etc. That means, you can add alternative lines to the game and then load game again, but the opening explorer will count the moves in move statistics only once.

It could happen thought, that if you download the same game from different sources and the names of the players will differ (i.e. once in PGN is Karpov, second time A.Karpov), nochetodbload will not recognise the games as the same. On the other hand, if you rewrite examples from books and you don't add player names, date of event etc., it could happen that nocheto will consider different games the same (if the have the same number of moves etc.). To be safe, it is recomended to load every game only once.

The default behaviour is that only fens games are added to database, not games itself (so they are not part of the game explorer)1.1.0.
Use --game option to add games too.

Evaluate chess positions in database

Use nochetodbeval to evaluate new positions in database.

Every position is evaluated by engine set in config file at its strongest level, taking goseconds seconds. That means, if you need to evaluate 183 positions and you let them evaluate for 1 seconds, it will last 3 minutes and 3 seconds.

nochetodbeval screenshot

On the picture above, the last line shows that there are 149 unevaluated positions left. Because goseconds was set to 6 (seconds), it will take 14 minutes and 54 seconds to finish.

If you want to close nochetodbeval sooner, you can use CTR+C to kill it. Nothing bad will happend.

You should not run any processor consuming application during evaluatiing chess position, as it can affects the depth engine can achieve during given time.

It is recomended to use the same time for all your moves in database. Choose wisely!
Recomendation: Try analyze command in nocheto to see how "random" results you get with low amount of seconds. Increase the seconds until the results are stable and use that value + 1 second (I use 6 seconds on AMD Ryzen 7 3700X 8-Core Processor.)

Loadresults command

Once positions are saved and evaluated in database, you can load evaluation for any opened file / played game. Use loadresults (lr) command.

Once results are loaded, you can see some move colored in hhe moves tree. These are the moves which leads to evaluated position. You might see all moves colored (if you loaded that game into database and let it evaluated), or you might see only couple of moves colored (typically the openings moves, which were played in another loaded game).

loaded results

Opening/games explorer

Once you have loaded games, you can see them in explorer. You can enable/disable explorer by viewexplorer (ve) command.

chess moves explorer

As you can see on the picture above, first colum shows all the moves played in the actual position, second column shows how many times that move was played (how many games are in explorer with that position), third column shows the move evaluation in centipawns (positive is better for white, negative is better for black). Last three colums show % of wins for white, % of draws and % of wins for black (it might not add up to 100% as some games might not have any result).

First line shows the best move for the position and its evaluation. You might ask, why is the evaluation 0, but in the moves list it is 44? It is becase the first number was evaluated by the engine on current position, while the second number evaluated engine after the move was done. The more time you let the engine (nochetodbeval) evaluate positions, the smaller should the difference be. (But there will always be some.)

More databases

You can save games into as many databases as you wish. Just change the database in configuration (add name of directory where the database should be saved).

dbname = data/myowngames/

The database is saved in directory which consists of ~/.nocheto/ and this dbname. Default dbname is data/explorer/.

Default dbname is data/explorer/.

You have to have writte access to the directory. Sqlite database file is only one file (explorer.sqlite3), but during inserting games it creates some other temporary files. That is why the dbname is name of a directory, not a file.

Even thought you can have many databases, its recomended to have only one. The reason is, that you have to evaluate every position again in every database. And evaluating positions is the most time consuming process. You can also have open only one database in nocheto at a time.


Games in database can be stored in different namespaces. That can help you separate your own games from grandmaster games etc.

Default namespace is called primary. If you want to load game(s) under different namespace, use nochetodbload --namespace "yournamespace" --games.

Game can by only in one namespace.

To see games from particular namespace in explorer, use namespaces command.