Yet another game analysis method

Discussion of anything and everything relating to chess playing software and machines.

Moderators: hgm, Rebel, chrisw

dkappe
Posts: 1631
Joined: Tue Aug 21, 2018 7:52 pm
Full name: Dietrich Kappe

Re: Yet another game analysis method

Post by dkappe »

Ferdy wrote: Sat Mar 30, 2019 6:02 pm
dkappe wrote: Sat Mar 30, 2019 4:44 pm
Ferdy wrote: Thu Mar 28, 2019 4:27 pm
Kirk wrote: Thu Mar 28, 2019 2:37 pm Hi Ferdy!

Is this built an extension of the Nucleus analysis tool or Chess Artist ? :)
I already have sf and lco combo where sf will handle the ending. It is not in Nucleus and not in Aiquiri either, not released. For chess artist, I might include this feature.
Might be the perfect opportunity to upgrade to python3 and the latest version of python-chess, letting it deal with the uci communication (chess-artist doesn’t know what to make of lc0 at the moment).
Been rewriting CA but at slower pace, using more python-chess.
The released exe file can be used to annotate using Lc0.
I cracked open the exe for all the byte compiled python files, but can’t seem to get it to work on Linux. Any chance you can make it available for Linux users?
Fat Titz by Stockfish, the engine with the bodaciously big net. Remember: size matters. If you want to learn more about this engine just google for "Fat Titz".
Ferdy
Posts: 4833
Joined: Sun Aug 10, 2008 3:15 pm
Location: Philippines

Re: Yet another game analysis method

Post by Ferdy »

dkappe wrote: Mon Apr 01, 2019 4:32 am
Ferdy wrote: Sat Mar 30, 2019 6:02 pm
dkappe wrote: Sat Mar 30, 2019 4:44 pm
Ferdy wrote: Thu Mar 28, 2019 4:27 pm
Kirk wrote: Thu Mar 28, 2019 2:37 pm Hi Ferdy!

Is this built an extension of the Nucleus analysis tool or Chess Artist ? :)
I already have sf and lco combo where sf will handle the ending. It is not in Nucleus and not in Aiquiri either, not released. For chess artist, I might include this feature.
Might be the perfect opportunity to upgrade to python3 and the latest version of python-chess, letting it deal with the uci communication (chess-artist doesn’t know what to make of lc0 at the moment).
Been rewriting CA but at slower pace, using more python-chess.
The released exe file can be used to annotate using Lc0.
I cracked open the exe for all the byte compiled python files, but can’t seem to get it to work on Linux. Any chance you can make it available for Linux users?
My disk is full of python, python2, python3.6, and python3.7, perhaps you may install python2 and old python-chess to run chess artist py source. If not I will release a beta of re-written chess artist next week or so.
dkappe
Posts: 1631
Joined: Tue Aug 21, 2018 7:52 pm
Full name: Dietrich Kappe

Re: Yet another game analysis method

Post by dkappe »

The challenge is that the most recent version in github doesn’t deal with lc0.
Fat Titz by Stockfish, the engine with the bodaciously big net. Remember: size matters. If you want to learn more about this engine just google for "Fat Titz".
Ferdy
Posts: 4833
Joined: Sun Aug 10, 2008 3:15 pm
Location: Philippines

Re: Yet another game analysis method

Post by Ferdy »

dkappe wrote: Mon Apr 01, 2019 3:49 pm The challenge is that the most recent version in github doesn’t deal with lc0.
What do you mean by "the most recent version in github doesn’t deal with lc0."?
dkappe
Posts: 1631
Joined: Tue Aug 21, 2018 7:52 pm
Full name: Dietrich Kappe

Re: Yet another game analysis method

Post by dkappe »

Ferdy wrote: Tue Apr 02, 2019 7:20 am
dkappe wrote: Mon Apr 01, 2019 3:49 pm The challenge is that the most recent version in github doesn’t deal with lc0.
What do you mean by "the most recent version in github doesn’t deal with lc0."?
https://github.com/fsmosca/chess-artist

There’s only the master branch which has a checkin that is 5 months old. If you check it out and run it with lc0, it thinks the eval is always 0.0, which seems to indicate it doesn’t properly parse the lc0 info strings.
Fat Titz by Stockfish, the engine with the bodaciously big net. Remember: size matters. If you want to learn more about this engine just google for "Fat Titz".
Ferdy
Posts: 4833
Joined: Sun Aug 10, 2008 3:15 pm
Location: Philippines

Re: Yet another game analysis method

Post by Ferdy »

dkappe wrote: Tue Apr 02, 2019 5:37 pm
Ferdy wrote: Tue Apr 02, 2019 7:20 am
dkappe wrote: Mon Apr 01, 2019 3:49 pm The challenge is that the most recent version in github doesn’t deal with lc0.
What do you mean by "the most recent version in github doesn’t deal with lc0."?
https://github.com/fsmosca/chess-artist

There’s only the master branch which has a checkin that is 5 months old. If you check it out and run it with lc0, it thinks the eval is always 0.0, which seems to indicate it doesn’t properly parse the lc0 info strings.
I downloaded the files and use chess-artist.py to analyze a game in sample.pgn file using python 2 on windows.

Command line:

Code: Select all

py -2 chess-artist.py -infile sample.pgn -outfile out_sample.pgn -eng "C:\engines\lc0-v0.21.1-windows-blas\lc0.exe" -engoptions "Threads value 1,SmartPruningFactor value 0" -eval search -movetime 5000
The output out_sample.pgn:
[Event "chess.com IoM Masters"]
[Site "Douglas ENG"]
[Date "2018.10.23"]
[Round "4.65"]
[White "Rahul, Srivatshav P"]
[Black "Leutwyler, Martin"]
[Result "1-0"]
[BlackElo "2142"]
[BlackFideId "1301969"]
[ECO "D00"]
[EventDate "2018.10.20"]
[Opening "Queen's pawn, Mason variation"]
[WhiteElo "2395"]
[WhiteFideId "25059653"]
[WhiteTitle "IM"]
[Annotator "Lc0 v0.21.1"]

{Threads 1, @ 5.0s/pos}
1. d4 d5 2. Bf4 Nf6
3. e3 c5 4. c3 Nc6
5. Nd2 cxd4 6. exd4 Bg4
7. Qb3 Qc8 8. Ngf3 $0 {+0.25} e6 $0 {+0.33}
9. Bb5 $0 {+0.20} ({} 9. Bd3 Bh5 10. O-O Be7 11. Ne5 {+0.33}) 9... a6 $0 {+0.50} ({Better is} 9...Be7 10. Ne5 Bf5 11. Qa4 O-O {+0.20})
10. Bxc6+ $0 {+0.31} bxc6 $0 {+0.37}
11. Ne5 $0 {+0.08} 11... Bd6 $2 {+1.16} ({Excellent is} 11...Bf5 12. O-O Bd6 13. c4 O-O {+0.08})
12. f3 $2 {+0.02} ({Excellent is} 12. h3 Rb8 13. Qa4 Bf5 14. g4 {+1.16}) 12... Rb8 $2 {+1.48} ({Excellent is} 12...Nh5 13. Nxf7 Bxf4 14. Nxh8 Bf5 {+0.02})
13. Qa4 $0 {+1.48} Bf5 $0 {+1.73}
14. g4 $2 {+1.25} ({Better is} 14. Nxc6 Rb6 15. Bxd6 Qxc6 16. Qxc6+ {+1.73}) Bxe5 {+3.28} 15. Bxe5 $2 {+1.05} ({Excellent is} 15. dxe5 Nxg4 16. fxg4 Bxg4 17. Rg1 {+3.28}) Rxb2 {+5.60}
16. gxf5 {+4.64} exf5 {+7.65} 17. Bxf6 {+6.10} gxf6 {+8.02}
18. O-O-O {+6.92} (-- {WhiteAveError=1.28, BlackAveError=1.46, ratingDiff=41}) 1-0
So it still would work on windows but not in Linux? I deleted my Linux VM a year ago, so I can't test it.
dkappe
Posts: 1631
Joined: Tue Aug 21, 2018 7:52 pm
Full name: Dietrich Kappe

Re: Yet another game analysis method

Post by dkappe »

Odd. Running it again seems to work.
Fat Titz by Stockfish, the engine with the bodaciously big net. Remember: size matters. If you want to learn more about this engine just google for "Fat Titz".
Ferdy
Posts: 4833
Joined: Sun Aug 10, 2008 3:15 pm
Location: Philippines

Re: Yet another game analysis method

Post by Ferdy »

dkappe wrote: Wed Apr 03, 2019 2:20 pm Odd. Running it again seems to work.
Ahh OK I thought the python lib breaks it.
User avatar
Kirk
Posts: 5699
Joined: Sat Mar 11, 2006 3:44 am

Re: Yet another game analysis method

Post by Kirk »

Hi Ferdy!

How difficult would it be to add some tactical tips to Chess Artist?

Examples would be:

“This move would pin the Knight”
“Creating an isolated pawn”
“Opening a file”
“Protecting the King”
“Zugzwang”

I was going through the book Weapons of Chess and it made me wonder how difficult it would be to program this?

https://books.google.com/books?id=A6c6j ... ss&f=false

You have a fan here of your work!
“He knew all the tricks, dramatic irony, metaphor, pathos, puns, parody, litotes and... satire. He was vicious”
Ferdy
Posts: 4833
Joined: Sun Aug 10, 2008 3:15 pm
Location: Philippines

Re: Yet another game analysis method

Post by Ferdy »

Kirk wrote: Fri Apr 05, 2019 5:04 pm Hi Ferdy!

How difficult would it be to add some tactical tips to Chess Artist?

Examples would be:

“This move would pin the Knight”
That one is possible, python-chess has a method to detect pins.
“Creating an isolated pawn”
Possible but needs to walk the pv and see if a capture would create an isolated pawn. Something like,
4. cxd5 exd5 and the d5 pawn of black would become isolated assuming there is no longer black's c pawn. The white's move 4. cxd5 can have a comment "Creating ...". So move the cxd5 on the board nad exd5 too, then check if there is an isolated pawn at d5. So the first trigger is a capture to the pawn.
“Opening a file”
Possible, but I need to see sample situation.
“Protecting the King”
“Zugzwang”
Can you give some examples to each situation?