Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/egri-nagy/lambdago
A simple framework for different Go engines, utilities for managing a Go course and additional AI analysis for post-processing and visualization tools, written in Clojure.
https://github.com/egri-nagy/lambdago
clojure go
Last synced: 2 months ago
JSON representation
A simple framework for different Go engines, utilities for managing a Go course and additional AI analysis for post-processing and visualization tools, written in Clojure.
- Host: GitHub
- URL: https://github.com/egri-nagy/lambdago
- Owner: egri-nagy
- License: mit
- Created: 2019-06-25T06:35:31.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2024-11-14T07:55:10.000Z (3 months ago)
- Last Synced: 2024-11-14T08:31:07.312Z (3 months ago)
- Topics: clojure, go
- Language: Clojure
- Homepage:
- Size: 420 KB
- Stars: 5
- Watchers: 1
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
[![Clojure CI](https://github.com/egri-nagy/lambdago/actions/workflows/clojure.yml/badge.svg)](https://github.com/egri-nagy/lambdago/actions/workflows/clojure.yml)
![LambdaGo Logo](resources/lambdago_logo_300px.png)
LambdaGo is a software package bundling several functionalities for the ancient [game of go](https://en.wikipedia.org/wiki/Go_(game)).
Currently, it contains1. supporting tools (rating calculations, tournament scheduling) for the [Igo Math](https://egri-nagy.github.io/igomath/) course; (moved to [another repo](https://codeberg.org/egri-nagy/gcmt), 2024.02.02)
2. reference implementation of a Go engine for the [Poetry of Programming](https://egri-nagy.github.io/popbook/) course; (moved to [another repo](https://codeberg.org/egri-nagy/lambdago), 2024.02.01)
3. post-processing and visualization tools for AI analysis described in the paper [Derived metrics for the game of Go - intrinsic network strength assessment and cheat-detection](https://ieeexplore.ieee.org/document/9394360) (preprint [here](https://arxiv.org/abs/2009.01606)).## Requirements
* [Java runtime](https://www.java.com/) is needed to use LambdaGo, as it is written in [Clojure](https://www.clojure.org). This is the minimum requirement.
* Leiningen is the build tool used in this project.
* [Lizzie](https://github.com/featurecat/lizzie)'s auto-analysis output can be visualized by LambdaGo.## Running the LambdaGo system
The `jar` file can be downloaded from the release page, or when Leiningen is available it can be generated by `lein uberjar`.```
java -jar lambdago-YYYY.MM.DD-standalone.jar
```## Commands
### AI analysis visualization of Lizzie output
After a complete analysis is done, [Lizzie](https://github.com/featurecat/lizzie) can save the analysis information into the SGF file, then
```
lizzie
```
LambdaGo command will parse that SGF file, then show the analysis diagrams in a newly opened browser window.
```
lizzie-export
```
Exporting creates a standalone html file instead opening the diagrams in the browser.### AI analysis for KataGo
[KataGo](https://katagotraining.org/) has an [analysis engine](https://github.com/lightvector/KataGo/blob/master/docs/Analysis_Engine.md)
```
katago-input
```
This will produce an input for the KataGo analysis engine. The number of visits spent on each move need to be specified. The `passed-visits` is optional, if given the number of moves to be analyzed doubles, but the *cost of passing* values will be available.To visualize the analysis:
```
katago
```
Alternatively, a single html file can be generated instead of showing it in a browser window.```
katago-export
```
In order to get this working, [Vega and Vega Lite](https://vega.github.io/) need to be installed, that can be done by `npm install -g vega vega-lite vega-cli`.### The GTP mode
To start LambdaGo in [GTP](http://www.lysator.liu.se/~gunnar/gtp/) mode:
```
gtp
```
where engine is either `random` (playing random legal moves, including eye-fills), `liberty` (playing random, but not filling eyes and aiming to capture low-liberty groups).