Banksia GUI released

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

Moderators: hgm, Rebel, chrisw

User avatar
CMCanavessi
Posts: 1142
Joined: Thu Dec 28, 2017 4:06 pm
Location: Argentina

Re: Banksia GUI released

Post by CMCanavessi »

phhnguyen wrote: Fri Jul 09, 2021 2:04 am from corrections for typos
Speaking about typos, I've noticed that Banksia is a bit inconsistent with the use of capital letters in the prefixes. On the Engine Info window, the nodes are counted with K for kilo, and M for mega (as they should be), but in the speed of the engine it's shown as kN/s and mN/s. This is technically wrong, they should be shown as n/s, Kn/s, Mn/s, etc. Also the tbhits could do with some prefixes too, as currently it's a bit hard to read.

Just a small detail.

Awesome job btw.
Follow my tournament and some Leela gauntlets live at http://twitch.tv/ccls
User avatar
phhnguyen
Posts: 1434
Joined: Wed Apr 21, 2010 4:58 am
Location: Australia
Full name: Nguyen Hong Pham

Re: Banksia GUI released

Post by phhnguyen »

CMCanavessi wrote: Fri Jul 09, 2021 1:09 pm
phhnguyen wrote: Fri Jul 09, 2021 2:04 am from corrections for typos
Speaking about typos, I've noticed that Banksia is a bit inconsistent with the use of capital letters in the prefixes. On the Engine Info window, the nodes are counted with K for kilo, and M for mega (as they should be), but in the speed of the engine it's shown as kN/s and mN/s. This is technically wrong, they should be shown as n/s, Kn/s, Mn/s, etc. Also the tbhits could do with some prefixes too, as currently it's a bit hard to read.

Just a small detail.

Awesome job btw.

Thanks for the feedback. I have fixed some for the next release.
https://banksiagui.com
The most features chess GUI, based on opensource Banksia - the chess tournament manager
User avatar
phhnguyen
Posts: 1434
Joined: Wed Apr 21, 2010 4:58 am
Location: Australia
Full name: Nguyen Hong Pham

Version 0.46 beta released

Post by phhnguyen »

Version 0.46 beta released


* Fixed bugs:
  • A syncing problem that may affect games with remote players such as Lichess bots, local network games
  • Crash when making move by clicking on target only
  • Tournament results may display wrong percentages
  • Swiss tournaments didn’t auto play after creating games for 2nd round
  • Analysis functions don’t work properly

* Some small improvements/adjustments
* New features:
  • Tournament editor: can add a new engine to an existing tournament by creating new games for that engine vs other engines (for round-robin only)
  • Recent Tournaments: can back up manually
  • Support LAN (Long Algebraic Notation)
  • Extreme Chess Analysis (ECA) 
Image
Fig. New features: Extreme Chess Analysis
https://banksiagui.com
The most features chess GUI, based on opensource Banksia - the chess tournament manager
User avatar
phhnguyen
Posts: 1434
Joined: Wed Apr 21, 2010 4:58 am
Location: Australia
Full name: Nguyen Hong Pham

New feature: Extreme Chess Analysis (ECA)

Post by phhnguyen »

New feature: Extreme Chess Analysis (ECA)

Why ECA?
BSG has already some functions to analyze: Analyse on the fly and Analyse a game. Usually, they are used to analyze games with multi moves. For each position (created by making a move) BSG runs one (or several) engines to compute and give ideas/opinions about that position. Typically the engine gives only a PV (including the best move) and a score (some engines may have extra values of Win/Draw/Loss) for a position. That information is good enough for many tasks and purposes.

However, the problem occurs when the user wants some more and/or deeper information about a given position. The above analysis results can’t answer some questions, such as how good the 2nd, 3rd… best lines, what the reasons the engine picks this line as the PV but not other lines. He may want to dig deeper on several variants, find out how good, bad, blunder, trapped on them. Sometimes by knowledge and experience, he may know the current PV is really bad, trapped but because of being blunder, the analyzing chess engine may need a huge more amount of time to get out. However, it gets hard to tell the engine to stop that PV and try other variants since traditional analysis functions make it hard for users to interfere.

Image
Fig. 1 “Traditional” analysis functions: analysis on fly and analysis whole game, using one or multi-engines


What is ECA?
It is a new analysis function. “Extreme Chess Analysis” (ECA) can help users to analyze deeply chess positions and collect much more information for variants. Instead of having only one best line, it calls engines to compute several selected (or all) variants. Instead of keeping only a PV and discard all other lines, it keeps them all with their information (scores, Win/Draw/Loss as well as some others) to refer to later. Users can easily track lines to find good, bad, blunder moves, answer many new questions. It starts with a given position but can extend and cover a large number of positions, variants that users are interested in.

Image
Fig. 2 Extreme Chess Analysis Dock Panel

Tree
ECA starts with a given position (start position), selected by the user. From that node, it expands to children's positions by making moves. Those children can be expanded again many times. ECA uses some engines to evaluate leaf positions and then backpropagate those scores to their parents and continue to ancestor nodes.

All nodes and information can be kept in an alike-tree structure. Each node of the tree presents a position. The connection line between two nodes is a move (it is a one-way direction, from node A we can visit node B by making move M but we can’t visit back from B to A by using that move). The root of the tree is the start position.


Compact
If there are no limitations the tree can be expanded fully. In that case, the tree somewhat looks similar to ones we imagine about a full opening tree or ones when calculating Perft. The problem is that the tree may grow exponentially by depth. For example, at depth 6 the Perft tree of the origin chess position has over 112 million nodes. If each node takes only 1 second to evaluate, that tree requires 3.5 years to complete computing. Thus ECA tries to reduce the tree size as much as possible by eliminating any redundant nodes: a chess position should be represented by only one unique node. The total of nodes is reduced significantly. Now at depth 6, the tree has near 900 thousand nodes, 12 times smaller (it needs about 3 months to complete with 1 second for each node). Keeping a smaller size is the key to the “survival” factor of this feature since it may require calculating too much.

Because of using unique nodes, some nodes may have multi parents. By definition, the data structure becomes not a real tree but a directed graph. However, we still call it a “tree” since many users got familiar with that term and it’s easier to imagine and work with. We present our data as a standard tree too.

What users can do with a tree
Users can interact with the tree to:
  • View the tree: see all information about a given node: the move list from the start position to that node, the associated chessboard, the evaluation (by the engine for that node), scores (backpropagated), the children…
  • Set flag “ignored”: tell ECA to ignore some nodes from expanding
  • Manual expand nodes
  • Expand the tree by feeding games or databases (PGN files or BanksiaGUI databases .bgdb) or Polyglot opening books

View the tree
The tree can be viewed in two forms: a tree view and a node view. Those views are on appropriate tabs.
  • Tree view: gives a wider, panoramic view of the tree. It is easy to find information about siblings, ancestors, grandchildren, compare variants. However, it shows fewer details. When the user goes deeper on the tree, it may expand on the screen, take huge space, show too many nodes and information makes it harder to read, find and navigate. At the moment users can’t set flag “ignored” for nodes using that view nor expand manually.
  • Node view: at one time only information of a node with their children is displayed. With a glance, users cannot get information of farther nodes such as its parents, siblings, grandkids... That’s hard to compare between variants… Instead, it displayed more information such as evaluation info and allow users to set on/off ignored flags (to stop auto-expanding) and expand manually.
Users can use any form, depending on tastes and/or tasks/purposes.

Both views can be navigated by both mouse and keyboard (using the arrow, home, page keys, W, A, S, D) for quick navigation.

Image
Fig. 3 Node view

Image
Fig. 4 Tree view


How the tree created?
ECA works in two consequent phases:
  • Evaluation: all leaf nodes without a score will be evaluated (and maximum one only for each node) by an engine. Whenever a node is evaluated, its score will be propagated up to the tree (towards the root), using the minimax rule. If there is any change, involving children of nodes will be re-sorted by their scores
  • Expanding (auto-expanding mode only): it starts when all leaf nodes are evaluated. All leaf nodes will be checked if they are in the good range and then expanded to one level
Within phase 1 (evaluation) scores may be set and backward many times and affect a large number of nodes. Some nodes may stop expanding early but then their scores change from “bad” to “good” (and vice versa) and are expanded after a while.


When ECA is useless?
  • To analyze whole games with multi moves
  • The user needs only the best line for each given position
  • All traditional analysis functions (Analysis on Fly and Analysis whole game) are enough for the user
  • The user doesn’t want long time computing
  • The user doesn’t bother to look into a headache, complicated structure such as ECA’s trees :lol:


Some notes, tips
  • “Evaluated”: is the computing results that came directly from the engine. In full form they are displayed in “semi-standard”: score/depth time nodes W/D/L. Inner nodes maybe not be evaluated thus not every node has those values
  • “Score”: are values created by back-propagation
  • WDL: those values are back-propagated as scores. However, those values are not used to select by minimax rule
  • Ignored: flags the node that it will be ignored completely as it is not existent when evaluating and expanding
  • Nodes in red colors: Low scores nodes, out of expanding range. They are still evaluated but won’t be expanded for the next round
  • Accuracy/consistency: The total of nodes is accurate. However, other numbers such as sub-nodes, back-propagated scores… may not be accurate, consistent sometimes since they may be affected by chess loops/repetitions
  • Not fully expanded: If users don’t expand fully (all moves) for a given move, all missing moves won’t be counted when evaluating and expanding (similar to ignored ones)
  • Engines: when computing for ECA they use general setups/options (set via Settings dialog)
  • Engine info and log: Those engines don’t save any info to log files (to avoid being messy and write too much). If users need to monitor them, click on the check box “Engine info” on the ECA panel. It will add a new tab to show engines’ info
  • Stop: If engines are computing and the user wants to quit BSG, it is better to stop those engines first (by clicking on the button “Stop”) and give BSG a few seconds thus BSG can write down all computing data. The user can reduce the number of concurrency to zero to make engines quit gently
  • Backup: Frequently backup data (by copying files) and/or clone projects are good ways to save your precious data
  • Reset scores: At the beginning, the user may make engines do a fast search (using low depth, time) thus BSG can grow the tree quickly to the depth/size he wants. Thus he may quickly have some things to study, a better view of the variants, understanding of the engine. With that knowledge, he can set ignored flags to some nodes, expand manually to some other branches. After all, he may increase the qualifications of analyzing to use longer by resetting all scores to recalculate. By doing that BSG can save time from internal, bad nodes

The feature is first implemented thus sure it has a lot of space to improve. We listen to you all.
https://banksiagui.com
The most features chess GUI, based on opensource Banksia - the chess tournament manager
User avatar
AlexChess
Posts: 1486
Joined: Sat Feb 06, 2021 8:06 am
Full name: Alex Morales

Re: Version 0.46 beta released

Post by AlexChess »

phhnguyen wrote: Sat Jul 10, 2021 3:58 am Version 0.46 beta released


* Fixed bugs:
  • A syncing problem that may affect games with remote players such as Lichess bots, local network games
  • Crash when making move by clicking on target only
  • Tournament results may display wrong percentages
  • Swiss tournaments didn’t auto play after creating games for 2nd round
  • Analysis functions don’t work properly

* Some small improvements/adjustments
* New features:
  • Tournament editor: can add a new engine to an existing tournament by creating new games for that engine vs other engines (for round-robin only)
  • Recent Tournaments: can back up manually
  • Support LAN (Long Algebraic Notation)
  • Extreme Chess Analysis (ECA) 
Image
Fig. New features: Extreme Chess Analysis
Thank you, my genial chess friend, for your support to the community :)
I wish all the best to you and your family!

AlexChess
Chess engines and dedicated chess computers fan since 1981 :D Mac mini M1 8GB-256GB, Windows 11 & Ubuntu ARM64.
ProteusSF Dev Forum: https://shorturl.at/bpvI1
ydebilloez
Posts: 163
Joined: Tue Jun 27, 2017 11:01 pm
Location: Lubumbashi
Full name: Yves De Billoëz

Re: Banksia GUI released

Post by ydebilloez »

Hi,

Starting version 0.46 gives me a missing MSVCP140_1.dll on a fresh windows install and Banksia does not start. I see vsruntime140_1.dll is included in the zip.

Regards,
Yves De Billoëz @ macchess belofte chess
Once owner of a Mephisto I, II, challenger, ... chess computer.
wickedpotus
Posts: 144
Joined: Sun May 16, 2021 5:33 pm
Full name: Aron Rodgriges

Re: Banksia GUI released

Post by wickedpotus »

Happy to report 0.46 beta solved the click on piece crash.. great work :-)
wickedpotus
Posts: 144
Joined: Sun May 16, 2021 5:33 pm
Full name: Aron Rodgriges

Re: Banksia GUI released

Post by wickedpotus »

ydebilloez wrote: Sun Jul 11, 2021 11:28 am Hi,

Starting version 0.46 gives me a missing MSVCP140_1.dll on a fresh windows install and Banksia does not start. I see vsruntime140_1.dll is included in the zip.

Regards,
try something like https://answers.microsoft.com/en-us/win ... b3ae00d074
herO
Posts: 20
Joined: Mon Jun 15, 2020 11:56 am
Full name: JH

Re: New feature: Extreme Chess Analysis (ECA)

Post by herO »

phhnguyen wrote: Sat Jul 10, 2021 4:11 am New feature: Extreme Chess Analysis (ECA)

Why ECA?
BSG has already some functions to analyze: Analyse on the fly and Analyse a game. Usually, they are used to analyze games with multi moves. For each position (created by making a move) BSG runs one (or several) engines to compute and give ideas/opinions about that position. Typically the engine gives only a PV (including the best move) and a score (some engines may have extra values of Win/Draw/Loss) for a position. That information is good enough for many tasks and purposes.

However, the problem occurs when the user wants some more and/or deeper information about a given position. The above analysis results can’t answer some questions, such as how good the 2nd, 3rd… best lines, what the reasons the engine picks this line as the PV but not other lines. He may want to dig deeper on several variants, find out how good, bad, blunder, trapped on them. Sometimes by knowledge and experience, he may know the current PV is really bad, trapped but because of being blunder, the analyzing chess engine may need a huge more amount of time to get out. However, it gets hard to tell the engine to stop that PV and try other variants since traditional analysis functions make it hard for users to interfere.

Image
Fig. 1 “Traditional” analysis functions: analysis on fly and analysis whole game, using one or multi-engines


What is ECA?
It is a new analysis function. “Extreme Chess Analysis” (ECA) can help users to analyze deeply chess positions and collect much more information for variants. Instead of having only one best line, it calls engines to compute several selected (or all) variants. Instead of keeping only a PV and discard all other lines, it keeps them all with their information (scores, Win/Draw/Loss as well as some others) to refer to later. Users can easily track lines to find good, bad, blunder moves, answer many new questions. It starts with a given position but can extend and cover a large number of positions, variants that users are interested in.

Image
Fig. 2 Extreme Chess Analysis Dock Panel

Tree
ECA starts with a given position (start position), selected by the user. From that node, it expands to children's positions by making moves. Those children can be expanded again many times. ECA uses some engines to evaluate leaf positions and then backpropagate those scores to their parents and continue to ancestor nodes.

All nodes and information can be kept in an alike-tree structure. Each node of the tree presents a position. The connection line between two nodes is a move (it is a one-way direction, from node A we can visit node B by making move M but we can’t visit back from B to A by using that move). The root of the tree is the start position.


Compact
If there are no limitations the tree can be expanded fully. In that case, the tree somewhat looks similar to ones we imagine about a full opening tree or ones when calculating Perft. The problem is that the tree may grow exponentially by depth. For example, at depth 6 the Perft tree of the origin chess position has over 112 million nodes. If each node takes only 1 second to evaluate, that tree requires 3.5 years to complete computing. Thus ECA tries to reduce the tree size as much as possible by eliminating any redundant nodes: a chess position should be represented by only one unique node. The total of nodes is reduced significantly. Now at depth 6, the tree has near 900 thousand nodes, 12 times smaller (it needs about 3 months to complete with 1 second for each node). Keeping a smaller size is the key to the “survival” factor of this feature since it may require calculating too much.

Because of using unique nodes, some nodes may have multi parents. By definition, the data structure becomes not a real tree but a directed graph. However, we still call it a “tree” since many users got familiar with that term and it’s easier to imagine and work with. We present our data as a standard tree too.

What users can do with a tree
Users can interact with the tree to:
  • View the tree: see all information about a given node: the move list from the start position to that node, the associated chessboard, the evaluation (by the engine for that node), scores (backpropagated), the children…
  • Set flag “ignored”: tell ECA to ignore some nodes from expanding
  • Manual expand nodes
  • Expand the tree by feeding games or databases (PGN files or BanksiaGUI databases .bgdb) or Polyglot opening books

View the tree
The tree can be viewed in two forms: a tree view and a node view. Those views are on appropriate tabs.
  • Tree view: gives a wider, panoramic view of the tree. It is easy to find information about siblings, ancestors, grandchildren, compare variants. However, it shows fewer details. When the user goes deeper on the tree, it may expand on the screen, take huge space, show too many nodes and information makes it harder to read, find and navigate. At the moment users can’t set flag “ignored” for nodes using that view nor expand manually.
  • Node view: at one time only information of a node with their children is displayed. With a glance, users cannot get information of farther nodes such as its parents, siblings, grandkids... That’s hard to compare between variants… Instead, it displayed more information such as evaluation info and allow users to set on/off ignored flags (to stop auto-expanding) and expand manually.
Users can use any form, depending on tastes and/or tasks/purposes.

Both views can be navigated by both mouse and keyboard (using the arrow, home, page keys, W, A, S, D) for quick navigation.

Image
Fig. 3 Node view

Image
Fig. 4 Tree view


How the tree created?
ECA works in two consequent phases:
  • Evaluation: all leaf nodes without a score will be evaluated (and maximum one only for each node) by an engine. Whenever a node is evaluated, its score will be propagated up to the tree (towards the root), using the minimax rule. If there is any change, involving children of nodes will be re-sorted by their scores
  • Expanding (auto-expanding mode only): it starts when all leaf nodes are evaluated. All leaf nodes will be checked if they are in the good range and then expanded to one level
Within phase 1 (evaluation) scores may be set and backward many times and affect a large number of nodes. Some nodes may stop expanding early but then their scores change from “bad” to “good” (and vice versa) and are expanded after a while.


When ECA is useless?
  • To analyze whole games with multi moves
  • The user needs only the best line for each given position
  • All traditional analysis functions (Analysis on Fly and Analysis whole game) are enough for the user
  • The user doesn’t want long time computing
  • The user doesn’t bother to look into a headache, complicated structure such as ECA’s trees :lol:


Some notes, tips
  • “Evaluated”: is the computing results that came directly from the engine. In full form they are displayed in “semi-standard”: score/depth time nodes W/D/L. Inner nodes maybe not be evaluated thus not every node has those values
  • “Score”: are values created by back-propagation
  • WDL: those values are back-propagated as scores. However, those values are not used to select by minimax rule
  • Ignored: flags the node that it will be ignored completely as it is not existent when evaluating and expanding
  • Nodes in red colors: Low scores nodes, out of expanding range. They are still evaluated but won’t be expanded for the next round
  • Accuracy/consistency: The total of nodes is accurate. However, other numbers such as sub-nodes, back-propagated scores… may not be accurate, consistent sometimes since they may be affected by chess loops/repetitions
  • Not fully expanded: If users don’t expand fully (all moves) for a given move, all missing moves won’t be counted when evaluating and expanding (similar to ignored ones)
  • Engines: when computing for ECA they use general setups/options (set via Settings dialog)
  • Engine info and log: Those engines don’t save any info to log files (to avoid being messy and write too much). If users need to monitor them, click on the check box “Engine info” on the ECA panel. It will add a new tab to show engines’ info
  • Stop: If engines are computing and the user wants to quit BSG, it is better to stop those engines first (by clicking on the button “Stop”) and give BSG a few seconds thus BSG can write down all computing data. The user can reduce the number of concurrency to zero to make engines quit gently
  • Backup: Frequently backup data (by copying files) and/or clone projects are good ways to save your precious data
  • Reset scores: At the beginning, the user may make engines do a fast search (using low depth, time) thus BSG can grow the tree quickly to the depth/size he wants. Thus he may quickly have some things to study, a better view of the variants, understanding of the engine. With that knowledge, he can set ignored flags to some nodes, expand manually to some other branches. After all, he may increase the qualifications of analyzing to use longer by resetting all scores to recalculate. By doing that BSG can save time from internal, bad nodes

The feature is first implemented thus sure it has a lot of space to improve. We listen to you all.
Lichess Bot feature doesn't work properly now. Engines losing on times almost every single time. Engines calculates too much and no moves are made. Sometimes BankSIA GUI even crash randomly when Lichess bot feature is on.
huanhuan
Posts: 43
Joined: Fri Apr 09, 2021 12:17 pm
Full name: Ibrahim Adam

Re: Banksia GUI released

Post by huanhuan »

Just curious, since I'm just starting to learn Python.

Is BSG written in 100% Python?

Thanks,