No description
Find a file
2024-03-01 22:25:31 +02:00
src finalized 1.0.0 2024-03-01 22:25:31 +02:00
.gitignore fixed Z-Scores 2024-03-01 18:35:31 +02:00
Cargo.lock finalized 1.0.0 2024-03-01 22:25:31 +02:00
Cargo.toml finalized 1.0.0 2024-03-01 22:25:31 +02:00
random_values.txt basic attractors and repellers 2024-02-10 14:05:25 +02:00
readme.md finalized 1.0.0 2024-03-01 22:25:31 +02:00
test.py fixed Z-Scores 2024-03-01 18:35:31 +02:00

pyagushka - a Python module for lyagushka

(Russian лягушка [lʲɪˈɡuʂkə]: frog)

Pyagushka is a Python module based on the Rust algorithm lyagushka that is inspired by Fatum Project's 'Zhaba' algorithm (Russian 'жаба': toad) and expands upon it for more versatility.

It is an algorithm that analyzes a one-dimensional dataset of integers to identify clusters of closely grouped "attractor" points and significant "void" gaps between these clusters. It calculates z-scores for each cluster or gap to measure their statistical significance relative to the dataset's mean density and distance between points. The analysis results, including attractors, voids, and their z-scores, are output as a JSON string.

Building

With a Rust/Cargo and Python3/Pip environment set up, run:

$ pip install maturin
$ maturin build --release
$ pip install target/wheels/pyagushka-1.0.0-*.whl

Usage

Parameters

  • dataset: list of integers representing the dataset to be analyzed.
  • factor: A floating-point value by which the mean density/span is multiplied to make up a threshold for attractor and void detection.
  • min_cluster_size: An integer specifying the minimum number of contiguous points required to be considered a cluster.

Output

The tool outputs a JSON string that includes details about the identified attractors and voids, along with their respective z-scores. Here's an example of the JSON output format:


[
  //...
  {
    "elements": [ 722, 722, 722, 725, 725, 726, 726, 726],
    "start": 722,
    "end": 726,
    "span_length": 4,
    "num_elements": 8,
    "centroid": 724.0,
    "z_score": 1.19528
  },
  {
    "elements": [],
    "start": 732,
    "end": 740,
    "span_length": 8,
    "num_elements": 0,
    "centroid": 736.0,
    "z_score": -1.13359
  },
  //...
]

Example

To analyze a dataset from a file, provide the filename as an argument, followed by the factor and minimum cluster size parameters

from pyagushka import lyagushka

dataset = []
with open('random_values.txt', 'r') as file:
    for line in file:
        random_data.append(int(line.strip()))

analysis_results = json.loads(lyagushka(dataset, 4.0, 7))

print(analysis_result)

(= 'Attractor clusters need to have at least 7 numbers with 4.0 times the mean density, void gaps need to be at leat 4.0 times the mean gap size wide')

CLI

If you need lyagushka as a command line tool, check out the 'main' branch of this repository