diff options
Diffstat (limited to 'sbdata/tasks/calculate_mapping_function.py')
-rw-r--r-- | sbdata/tasks/calculate_mapping_function.py | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/sbdata/tasks/calculate_mapping_function.py b/sbdata/tasks/calculate_mapping_function.py new file mode 100644 index 0000000..37185a8 --- /dev/null +++ b/sbdata/tasks/calculate_mapping_function.py @@ -0,0 +1,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'------------') |