aboutsummaryrefslogtreecommitdiff
path: root/sbdata/tasks/calculate_mapping_function.py
diff options
context:
space:
mode:
authornea <romangraef@gmail.com>2022-04-20 17:49:59 +0200
committernea <romangraef@gmail.com>2022-04-20 17:49:59 +0200
commitd9296584270f1e902944fc7390d0b43c34aa2dbb (patch)
tree09d04658c94cdaf7a4fb4fc9e8a81d111edab959 /sbdata/tasks/calculate_mapping_function.py
parenta61b3f9e2b8b2eeb9d556b5f477d2a479b9f7643 (diff)
downloadsbdata-d9296584270f1e902944fc7390d0b43c34aa2dbb.tar.gz
sbdata-d9296584270f1e902944fc7390d0b43c34aa2dbb.tar.bz2
sbdata-d9296584270f1e902944fc7390d0b43c34aa2dbb.zip
literal tos violations
Diffstat (limited to 'sbdata/tasks/calculate_mapping_function.py')
-rw-r--r--sbdata/tasks/calculate_mapping_function.py31
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'------------')