Page 1 of 2

FEN - Flipper for Windows

Posted: Wed May 17, 2017 12:10 pm
by Matthias Gemuh
FEN - Flipper for Windows

Give him your EPD folder, and the guy will flip the FENs, and best moves, and "avoid" moves, and PV.

He spits out *_flip.epd with only flipped positions, and *_x.epd with mixed.
The original EPD files remain untouched.

http://www.chess.hylogic.de/chess/FenFlipper.zip

[D]r2q1rk1/pp3ppp/1bpN1n2/4n3/1PP1P1b1/P1N2PP1/6BP/R1BQK2R b KQ - bm Bxf3

flips to

[D]r1bqk2r/6bp/p1n2pp1/1pp1p1B1/4N3/1BPn1N2/PP3PPP/R2Q1RK1 w kq - bm Bxf6

Matthias.

Re: FEN - Flipper for Windows

Posted: Wed May 17, 2017 12:22 pm
by Daniel Anulliero
It will be good to debug the eval and others things
Thanks for sharing !

Re: FEN - Flipper for Windows

Posted: Wed May 17, 2017 4:47 pm
by Matthias Gemuh
Daniel Anulliero wrote:It will be good to debug the eval and others things
Thanks for sharing !
Yes, example

Code: Select all

0001 124 1br3k1/1p4p1/p3p2r/5pq1/3Nb3/P1B1PpP1/1P1R3P/2R1Q1K1 b - - bm f2;
0002 124 2r1q1k1/1p1r3p/p1b1pPp1/3nB3/5PQ1/P3P2R/1P4P1/1BR3K1 w - - bm  f7;
0003 110 1k1r1b1r/Rpp2ppp/4b3/1q2N3/5Q2/1PN5/2nP1PPP/2BKR3 b - - bm Bxb3;
0004 110 2bkr3/2Np1ppp/1pn5/5q2/1Q2n3/4B3/rPP2PPP/1K1R1B1R w - - bm  Bxb6;
0005 -134 1k1r1b1r/p1p1q3/2p1p3/4Ppp1/4nP2/P2BQ3/1PP3PB/2KR3R b - - bm Rxh2;
0006 -134 2kr3r/1pp3pb/p2bq3/4Np2/4pPP1/2P1P3/P1P1Q3/1K1R1B1R w - - bm  Rxh7;
0007 -40 1k1r2r1/p1p3q1/2p2p2/3pn3/1P1b2bB/1QN5/P4PPP/1R2RBK1 b - - bm Nf3;
0008 -40 1r2rbk1/p4ppp/1qn5/1p1B2Bb/3PN3/2P2P2/P1P3Q1/1K1R2R1 w - - bm  Nf6;
0009 -653 1k6/1p2p3/3p4/Qp1P1p2/2P2Pp1/P3Rn2/KP1q4/6r1 w - - bm Qd8;
0010 -653 6R1/kp1Q4/p3rN2/2p2pP1/qP1p1P2/3P4/1P2P3/1K6 b - - bm  Qd1;
0011 -9 1n2k2r/rp4pp/pN3p2/2n1p3/4P3/N7/PP2KPPP/R6R w k - bm Rac1;
0012 -9 r6r/pp2kppp/n7/4p3/2N1P3/Pn3P2/RP4PP/1N2K2R b K - bm  Rac8;
0013 75 1n2rr2/1pk3pp/pNn2p2/2N1p3/8/6P1/PP2PPKP/2RR4 w - - bm Nca4;
0014 75 2rr4/pp2ppkp/6p1/8/2n1P3/PnN2P2/1PK3PP/1N2RR2 b - - bm  Nca5;
0015 8 1nbq1r1k/3rbp1p/p1p1pp1Q/1p6/P1pPN3/5NP1/1P2PPBP/R4RK1 w - - bm Nfg5;
0016 8 r4rk1/1p2ppbp/5np1/p1Ppn3/1P6/P1P1PP1q/3RBP1P/1NBQ1R1K b - - bm  Nfg4;

Re: FEN - Flipper for Windows

Posted: Wed May 17, 2017 8:35 pm
by Dann Corbit
My friend Les Fernandez wrote something like that for me using vb.net.

Given this input:
B2R4/1nQqQ3/1QrbrQ2/NqqkqqN1/1QqqqQ2/2QbQn2/3B2R1/3K4 w - - acd 17; acs 14040; bm Qcxc6+; c3 "Qcxc6+"; ce 32752; dm 8; pm Qcxc6+; pv Qcxc6+ Qbxc6 Q4xc5+ Qc4xc5 Qcxc5+ Qdxc5 Qexc5+ Qxc5 Bxb7+ Qcc6 Bxc6+ Qxc6 Qxc6+ Kd4 Nxf3#;
QqN1Q3/rqb1q3/1QqQ4/1n1Q3R/krq1Qq2/2Qb4/q1n2QR1/NqQqBB1K w - - acd 17; acs 6660; bm Qbxa7+; ce 32752; dm 8; pm Qbxa7+; pv Qbxa7+ Q8xa7 Qfxa7+ Qxa7 Qxa7+ Ba5 Nb6+ Qxb6 Qexb5+ Qcxb5 Qcxb4+ Nxb4 Rxa2+ Qxa2 Qxa2#;
1NKQ2N1/NNQQ1qqn/1N1Nq1q1/2Nnrrrk/6q1/r3qq2/8/8 b - - acd 17; acs 4680; bm Nxb6+; ce 32752; dm 8; id "Leonid.xxx"; pm Nxb6+; pv Nxb6+ Qxb6 Rxc5+ Nbc6 Qfxd7+ Kb8 Qexd6+ Nxd6 Qgxd6+ Qdc7 Q7xc7+ Qxc7 Qdxc7+ Ka8 Qxg8+;

It creates this output:
B2R4/1nQqQ3/1QrbrQ2/NqqkqqN1/1QqqqQ2/2QbQn2/3B2R1/3K4 w - - acd 17; acs 14040; bm Qcxc6+; c3 "Qcxc6+"; ce 32752; dm 8; pm Qcxc6+; pv Qcxc6+ Qbxc6 Q4xc5+ Qc4xc5 Qcxc5+ Qdxc5 Qexc5+ Qxc5 Bxb7+ Qcc6 Bxc6+ Qxc6 Qxc6+ Kd4 Nxf3#; id "P1a";
4R2B/3QqQn1/2QrbrQ1/1NqqkqqN/2QqqqQ1/2nQbQ2/1R2B3/4K3 w - - bm Qfxf6+; ce 32752; pm Qfxf6+; pv Qfxf6+ Qgxf6 Q4xf5+ Qf4xf5 Qfxf5+ Qexf5 Qdxf5+ Qxf5 Bxg7+ Qff6 Bxf6+ Qxf6 Qxf6+ Ke4 Nxc3#; id "P1b";
3k4/3b2r1/2qBqN2/1qQQQq2/nQQKQQn1/1qRBRq2/1NqQq3/b2r4 b - - bm Qcxc3+; ce 32752; pm Qcxc3+; pv Qcxc3+ Qbxc3 Q5xc4+ Qc5xc4 Qcxc4+ Qdxc4 Qexc4+ Qxc4 Bxb2+ Qcc3 Bxc3+ Qxc3 Qxc3+ Kd5 Nxf6#; id "P1c";
4k3/1r2b3/2NqBq2/2qQQQq1/1nQQKQQn/2qRBRq1/3qQqN1/4r2b b - - bm Qfxf3+; ce 32752; pm Qfxf3+; pv Qfxf3+ Qgxf3 Q5xf4+ Qf5xf4 Qfxf4+ Qexf4 Qdxf4+ Qxf4 Bxg2+ Qff3 Bxf3+ Qxf3 Qxf3+ Ke5 Nxc6#; id "P1d";
QqN1Q3/rqb1q3/1QqQ4/1n1Q3R/krq1Qq2/2Qb4/q1n2QR1/NqQqBB1K w - - acd 17; acs 6660; bm Qbxa7+; ce 32752; dm 8; pm Qbxa7+; pv Qbxa7+ Q8xa7 Qfxa7+ Qxa7 Qxa7+ Ba5 Nb6+ Qxb6 Qexb5+ Qcxb5 Qcxb4+ Nxb4 Rxa2+ Qxa2 Qxa2#; id "P2a";
3Q1NqQ/3q1bqr/4QqQ1/R3Q1n1/2qQ1qrk/4bQ2/1RQ2n1q/K1BBqQqN w - - bm Qgxh7+; ce 32752; pm Qgxh7+; pv Qgxh7+ Q8xh7 Qcxh7+ Qxh7 Qxh7+ Bh5 Ng6+ Qxg6 Qdxg5+ Qfxg5 Qfxg4+ Nxg4 Rxh2+ Qxh2 Qxh2#; id "P2b";
nQqQbb1k/Q1N2qr1/2qB4/KRQ1qQ2/1N1q3r/1qQq4/RQB1Q3/qQn1q3 b - - bm Qbxa2+; ce 32752; pm Qbxa2+; pv Qbxa2+ Q1xa2 Qfxa2+ Qxa2 Qxa2+ Ba4 Nb3+ Qxb3 Qexb4+ Qcxb4 Qcxb5+ Nxb5 Rxa7+ Qxa7 Qxa7#; id "P2c";
k1bbQqQn/1rq2N1Q/4Bq2/2Qq1QRK/r3q1N1/4qQq1/3Q1BQR/3q1nQq b - - bm Qgxh2+; ce 32752; pm Qgxh2+; pv Qgxh2+ Q1xh2 Qcxh2+ Qxh2 Qxh2+ Bh4 Ng3+ Qxg3 Qdxg4+ Qfxg4 Qfxg5+ Nxg5 Rxh7+ Qxh7 Qxh7#; id "P2d";
1NKQ2N1/NNQQ1qqn/1N1Nq1q1/2Nnrrrk/6q1/r3qq2/8/8 b - - acd 17; acs 4680; bm Nxb6+; ce 32752; dm 8; id "Leonid.xxx P3a"; pm Nxb6+; pv Nxb6+ Qxb6 Rxc5+ Nbc6 Qfxd7+ Kb8 Qexd6+ Nxd6 Qgxd6+ Qdc7 Q7xc7+ Qxc7 Qdxc7+ Ka8 Qxg8+;
1N2QKN1/nqq1QQNN/1q1qN1N1/krrrnN2/1q6/2qq3r/8/8 b - - bm Nxg6+; ce 32752; pm Nxg6+; pv Nxg6+ Qxg6 Rxf5+ Ngf6 Qcxe7+ Kg8 Qdxe6+ Nxe6 Qbxe6+ Qef7 Q7xf7+ Qxf7 Qexf7+ Kh8 Qxb8+; id "P3b";
8/8/R3QQ2/6Q1/2nNRRRK/1n1nQ1Q1/nnqq1QQN/1nkq2n1 w - - bm Nxb3+; ce 32752; pm Nxb3+; pv Nxb3+ Qxb3 Rxc4+ Nbc3 Qfxd2+ Kb1 Qexd3+ Nxd3 Qgxd3+ Qdc2 Q2xc2+ Qxc2 Qdxc2+ Ka1 Qxg1+; id "P3c";
8/8/2QQ3R/1Q6/KRRRNn2/1Q1Qn1n1/NQQ1qqnn/1n2qkn1 w - - bm Nxg3+; ce 32752; pm Nxg3+; pv Nxg3+ Qxg3 Rxf4+ Ngf3 Qcxe2+ Kg1 Qdxe3+ Nxe3 Qbxe3+ Qef2 Q2xf2+ Qxf2 Qexf2+ Kh1 Qxb1+; id "P3d";

But it has an additional feature called "sliders" that allows it to create this output:
B2R4/1nQqQ3/1QrbrQ2/NqqkqqN1/1QqqqQ2/2QbQn2/3B2R1/3K4 w - - pv Qcxc6+; ce 32752; id "P1aS1";
B1QR4/1n1qQ3/1QrbrQ2/NqqkqqN1/1QqqqQ2/2QbQn2/3B2R1/3K4 w - - pv Qcxc6+; ce 32752; id "P1aS2";
4R2B/3QqQn1/2QrbrQ1/1NqqkqqN/2QqqqQ1/2nQbQ2/1R2B3/4K3 w - - pv Qfxf6+; ce 32752; id "P1bS1";
4RQ1B/3Qq1n1/2QrbrQ1/1NqqkqqN/2QqqqQ1/2nQbQ2/1R2B3/4K3 w - - pv Qfxf6+; ce 32752; id "P1bS2";
3k4/3b2r1/2qBqN2/1qQQQq2/nQQKQQn1/1qRBRq2/1NqQq3/b2r4 b - - pv Qcxc3+; ce 32752; id "P1cS1";
3k4/3b2r1/2qBqN2/1qQQQq2/nQQKQQn1/1qRBRq2/1N1Qq3/b1qr4 b - - pv Qcxc3+; ce 32752; id "P1cS2";
4k3/1r2b3/2NqBq2/2qQQQq1/1nQQKQQn/2qRBRq1/3qQqN1/4r2b b - - pv Qfxf3+; ce 32752; id "P1dS1";
4k3/1r2b3/2NqBq2/2qQQQq1/1nQQKQQn/2qRBRq1/3qQ1N1/4rq1b b - - pv Qfxf3+; ce 32752; id "P1dS2";
QqN1Q3/rqb1q3/1QqQ4/1n1Q3R/krq1Qq2/2Qb4/q1n2QR1/NqQqBB1K w - - pv Qbxa7+; ce 32752; id "P2aS1";
QqN1Q3/rqb1q3/2qQ4/1nQQ3R/krq1Qq2/2Qb4/q1n2QR1/NqQqBB1K w - - pv Qcxa7+; ce 32752; id "P2aS2";
QqN1Q3/rqb1q3/2qQ4/1n1Q3R/krqQQq2/2Qb4/q1n2QR1/NqQqBB1K w - - pv Qdxa7+; ce 32752; id "P2aS3";
QqN1Q3/rqb1q3/2qQ4/1n1Q3R/krq1Qq2/2QbQ3/q1n2QR1/NqQqBB1K w - - pv Qexa7+; ce 32752; id "P2aS4";
3Q1NqQ/3q1bqr/4QqQ1/R3Q1n1/2qQ1qrk/4bQ2/1RQ2n1q/K1BBqQqN w - - pv Qgxh7+; ce 32752; id "P2bS1";
3Q1NqQ/3q1bqr/4Qq2/R3QQn1/2qQ1qrk/4bQ2/1RQ2n1q/K1BBqQqN w - - pv Qfxh7+; ce 32752; id "P2bS2";
3Q1NqQ/3q1bqr/4Qq2/R3Q1n1/2qQQqrk/4bQ2/1RQ2n1q/K1BBqQqN w - - pv Qexh7+; ce 32752; id "P2bS3";
3Q1NqQ/3q1bqr/4Qq2/R3Q1n1/2qQ1qrk/3QbQ2/1RQ2n1q/K1BBqQqN w - - pv Qdxh7+; ce 32752; id "P2bS4";
nQqQbb1k/Q1N2qr1/2qB4/KRQ1qQ2/1N1q3r/1qQq4/RQB1Q3/qQn1q3 b - - pv Qbxa2+; ce 32752; id "P2cS1";
nQqQbb1k/Q1N2qr1/2qB4/KRQ1qQ2/1Nqq3r/2Qq4/RQB1Q3/qQn1q3 b - - pv Qcxa2+; ce 32752; id "P2cS2";
nQqQbb1k/Q1N2qr1/2qB4/KRQqqQ2/1N1q3r/2Qq4/RQB1Q3/qQn1q3 b - - pv Qdxa2+; ce 32752; id "P2cS3";
nQqQbb1k/Q1N2qr1/2qBq3/KRQ1qQ2/1N1q3r/2Qq4/RQB1Q3/qQn1q3 b - - pv Qexa2+; ce 32752; id "P2cS4";
k1bbQqQn/1rq2N1Q/4Bq2/2Qq1QRK/r3q1N1/4qQq1/3Q1BQR/3q1nQq b - - pv Qgxh2+; ce 32752; id "P2dS1";
k1bbQqQn/1rq2N1Q/4Bq2/2Qq1QRK/r3qqN1/4qQ2/3Q1BQR/3q1nQq b - - pv Qfxh2+; ce 32752; id "P2dS2";
k1bbQqQn/1rq2N1Q/4Bq2/2QqqQRK/r3q1N1/4qQ2/3Q1BQR/3q1nQq b - - pv Qexh2+; ce 32752; id "P2dS3";
k1bbQqQn/1rq2N1Q/3qBq2/2Qq1QRK/r3q1N1/4qQ2/3Q1BQR/3q1nQq b - - pv Qdxh2+; ce 32752; id "P2dS4";
1NKQ2N1/NNQQ1qqn/1N1Nq1q1/2Nnrrrk/6q1/r3qq2/8/8 b - - pv Nxb6+; ce 32752; id "P3aS1";
1NKQ2N1/NNQQ1qqn/1N1Nq1q1/2N1rrrk/2n3q1/r3qq2/8/8 b - - pv Nxb6+; ce 32752; id "P3aS2";
1NKQ2N1/NNQQ1qqn/1N1Nq1q1/2N1rrrk/n5q1/r3qq2/8/8 b - - pv Nxb6+; ce 32752; id "P3aS3";
nNKQ2N1/NNQQ1qqn/1N1Nq1q1/2N1rrrk/6q1/r3qq2/8/8 b - - pv Nxb6+; ce 32752; id "P3aS4";
1N2QKN1/nqq1QQNN/1q1qN1N1/krrrnN2/1q6/2qq3r/8/8 b - - pv Nxg6+; ce 32752; id "P3bS1";
1N2QKN1/nqq1QQNN/1q1qN1N1/krrr1N2/1q3n2/2qq3r/8/8 b - - pv Nxg6+; ce 32752; id "P3bS2";
1N2QKN1/nqq1QQNN/1q1qN1N1/krrr1N2/1q5n/2qq3r/8/8 b - - pv Nxg6+; ce 32752; id "P3bS3";
1N2QKNn/nqq1QQNN/1q1qN1N1/krrr1N2/1q6/2qq3r/8/8 b - - pv Nxg6+; ce 32752; id "P3bS4";
8/8/R3QQ2/6Q1/2nNRRRK/1n1nQ1Q1/nnqq1QQN/1nkq2n1 w - - pv Nxb3+; ce 32752; id "P3cS1";
8/8/R3QQ2/2N3Q1/2n1RRRK/1n1nQ1Q1/nnqq1QQN/1nkq2n1 w - - pv Nxb3+; ce 32752; id "P3cS2";
8/8/R3QQ2/N5Q1/2n1RRRK/1n1nQ1Q1/nnqq1QQN/1nkq2n1 w - - pv Nxb3+; ce 32752; id "P3cS3";
8/8/R3QQ2/6Q1/2n1RRRK/1n1nQ1Q1/nnqq1QQN/Nnkq2n1 w - - pv Nxb3+; ce 32752; id "P3cS4";
8/8/2QQ3R/1Q6/KRRRNn2/1Q1Qn1n1/NQQ1qqnn/1n2qkn1 w - - pv Nxg3+; ce 32752; id "P3dS1";
8/8/2QQ3R/1Q3N2/KRRR1n2/1Q1Qn1n1/NQQ1qqnn/1n2qkn1 w - - pv Nxg3+; ce 32752; id "P3dS2";
8/8/2QQ3R/1Q5N/KRRR1n2/1Q1Qn1n1/NQQ1qqnn/1n2qkn1 w - - pv Nxg3+; ce 32752; id "P3dS3";
8/8/2QQ3R/1Q6/KRRR1n2/1Q1Qn1n1/NQQ1qqnn/1n2qknN w - - pv Nxg3+; ce 32752; id "P3dS4";

Re: FEN - Flipper for Windows 1.1

Posted: Wed May 17, 2017 11:12 pm
by Matthias Gemuh
FEN - Flipper 1.1

I have just added the handling of the "pm" and "c0" tags.

The STS Testsuite uses the "c0" tag to score moves.

Re: FEN - Flipper for Windows

Posted: Thu May 18, 2017 3:30 am
by Ferdy
Nice converter :!:

Created a tool to read its output send eval command to engine and compare the score returned for every two succeeding positions.

Code: Select all

C:\chess\python\PositionFlipTest>pft.py d.exe sts_x.epd
:: Result summary ::
Test file             : sts_x.epd
Total Positions       : 3000
Number of Comparisons : 1500
Engine                : Deuterium v2017.1.35.402g
Errors                : 0

C:\chess\python\PositionFlipTest>pft.py sf.exe sts_x.epd
:: Result summary ::
Test file             : sts_x.epd
Total Positions       : 3000
Number of Comparisons : 1500
Engine                : Stockfish 180417 64 POPCNT
Errors                : 0 
BTW I am converting around 1.3 million positions (71 mb file) and it took now 35 minutes and is still running...

The epd format is just like this:

Code: Select all

r3rk2/p1p2ppp/b2b4/2P5/2PB2n1/P2B4/4NPPP/2KR3R b - - c9 "1/2-1/2";
Perhaps this can be optimized in the future.

Re: FEN - Flipper for Windows

Posted: Thu May 18, 2017 5:16 am
by Matthias Gemuh
Ferdy wrote:...

BTW I am converting around 1.3 million positions (71 mb file) and it took now 35 minutes and is still running...

The epd format is just like this:

Code: Select all

r3rk2/p1p2ppp/b2b4/2P5/2PB2n1/P2B4/4NPPP/2KR3R b - - c9 "1/2-1/2";
Perhaps this can be optimized in the future.
35+ minutes is really long.

If the conversion fails, let me know. Speed up possible.

Re: FEN - Flipper for Windows

Posted: Thu May 18, 2017 5:42 am
by Ferdy
Matthias Gemuh wrote:
Ferdy wrote:...

BTW I am converting around 1.3 million positions (71 mb file) and it took now 35 minutes and is still running...

The epd format is just like this:

Code: Select all

r3rk2/p1p2ppp/b2b4/2P5/2PB2n1/P2B4/4NPPP/2KR3R b - - c9 "1/2-1/2";
Perhaps this can be optimized in the future.
35+ minutes is really long.

If the conversion fails, let me know. Speed up possible.
Conversion was finally done after around 2 hrs and used a max of around 600 MB of memory.

Re: FEN - Flipper for Windows

Posted: Thu May 18, 2017 5:48 am
by Ferdy
With selected 1.3 million pos, my new implementation of ending knowledge was busted quickly :).

Code: Select all

C:\chess\python\PositionFlipTest>pft.py d.exe train_1_x.epd

There is problem in Pos 1905 and 1906
pos1: 5, pos2: 381
There is problem in Pos 1945 and 1946
pos1: -6, pos2: -398
There is problem in Pos 2573 and 2574
pos1: -417, pos2: -6
There is problem in Pos 5645 and 5646
pos1: 7, pos2: 466
There is problem in Pos 7449 and 7450
pos1: -7, pos2: -504

Re: FEN - Flipper for Windows

Posted: Thu May 18, 2017 6:14 am
by Matthias Gemuh
Ferdy wrote: Conversion was finally done after around 2 hrs and used a max of around 600 MB of memory.
I lazily load the EPD files into a listbox before processing it.
That eats memory and limits size of EPD file the tool can handle.
I shall change that and speed things up.