aboutsummaryrefslogtreecommitdiff
path: root/sbdata/tasks/calculate_mapping_function.py
blob: 37185a862f25756a5261ec12d6fafac2e2301f77 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
import pathlib
import random
import numpy as np
from sklearn.linear_model import LinearRegression

from sbdata.task import register_task, Arguments


@register_task("Calculate Map Coordinate Function")
def calculate_mapping_function(args: Arguments):
    csv = args.get_arg("Coordinate CSV", "coords", pathlib.Path)
    points = [[int(x) for x in y.split(",")] for y in csv.read_text().splitlines()[1:]]
    xs = [(a[0], a[2]) for a in points]
    zs = [(a[1], a[3]) for a in points]
    random.shuffle(xs)
    random.shuffle(zs)
    find_best_function_for("X", xs)
    find_best_function_for("Z", zs)


def find_best_function_for(label: str, l: list[tuple[int, int]]):
    x = np.array([a[0] for a in l]).reshape((-1, 1))
    y = np.array([a[1] for a in l])
    model = LinearRegression()
    model.fit(x, y)
    print(f'------------')
    print(f' {label} Coordinate:')
    print(f"   Score: {model.score(x, y)}")
    print(f"   Slope: {model.coef_[0]}")
    print(f"   Intercept: {model.intercept_}")
    print(f'------------')