Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

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.

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 contains

1. 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).