starting LinesFactoryTest

This commit is contained in:
frankknoll
2023-11-17 10:10:18 +01:00
parent 2b81552d7a
commit 1941337066
3 changed files with 60 additions and 1 deletions

View File

@@ -0,0 +1,30 @@
from skspatial.objects import Line
from SymptomsCausedByVaccines.MultiLineFitting.MultiLineFitter import MultiLineFitter
class LinesFactory:
@staticmethod
def createLines(points):
lines = [Line.from_points(pointA, pointB) for (pointA, pointB) in LinesFactory._getPairs(points)]
return LinesFactory._getUniqueLines(lines)
@staticmethod
def _getPairs(points):
return ((points[i], points[j]) for (i, j) in MultiLineFitter._getPairs(len(points)))
@staticmethod
def _getUniqueLines(lines):
uniqueLines = []
for i in range(len(lines)):
line = lines[i]
if not LinesFactory._isLineCloseToAnyOtherLine(line, lines[i + 1:]):
uniqueLines.append(line)
return uniqueLines
@staticmethod
def _isLineCloseToAnyOtherLine(line, otherLines):
for otherLine in otherLines:
if line.is_close(otherLine):
return True
return False

View File

@@ -0,0 +1,30 @@
import unittest
from skspatial.objects import Line
from SymptomsCausedByVaccines.MultiLineFitting.LinesFactory import LinesFactory
class LinesFactoryTest(unittest.TestCase):
def test_createLines(self):
# Given
points = [(1, 0), (2, 0), (3, 0)]
# When
lines = LinesFactory.createLines(points)
# Then
self.assertEqual(len(lines), 1)
self.assertTrue(lines[0].is_close(Line(point = [0, 0], direction = [1, 0])))
def test_createLines2(self):
# Given
points = [(0, 0), (1, 0), (0, 1)]
# When
lines = LinesFactory.createLines(points)
# Then
self.assertEqual(len(lines), 3)
self.assertTrue(lines[0].is_close(Line(point = [0, 0], direction = [1, 0])))
self.assertTrue(lines[1].is_close(Line(point = [0, 0], direction = [0, 1])))
self.assertTrue(lines[2].is_close(Line(point = [0, 1], direction = [1, -1])))

View File

@@ -1,5 +1,4 @@
import numpy as np import numpy as np
from skspatial.objects import Line
# implementation of "Robust Multiple Structures Estimation with J-linkage" adapted from https://github.com/fkluger/vp-linkage # implementation of "Robust Multiple Structures Estimation with J-linkage" adapted from https://github.com/fkluger/vp-linkage
class MultiLineFitter: class MultiLineFitter: