using only ascending lines for fitting

This commit is contained in:
frankknoll
2023-11-18 11:05:35 +01:00
parent 36492ae88b
commit d40116ba6f
5 changed files with 52 additions and 12 deletions

View File

@@ -1,6 +1,6 @@
import numpy as np
from SymptomsCausedByVaccines.MultiLineFitting.LinesFactory import LinesFactory
from SymptomsCausedByVaccines.MultiLineFitting.Utils import getPairs
from SymptomsCausedByVaccines.MultiLineFitting.Utils import generatePairs
from SymptomsCausedByVaccines.MultiLineFitting.CharacteristicFunctions import CharacteristicFunctions
# implementation of "Robust Multiple Structures Estimation with J-linkage" adapted from https://github.com/fkluger/vp-linkage
@@ -10,6 +10,10 @@ class MultiLineFitter:
def fitPointsByLines(points, consensusThreshold):
return MultiLineFitter.fitLines(points, LinesFactory.createLines(points), consensusThreshold)
@staticmethod
def fitPointsByAscendingLines(points, consensusThreshold):
return MultiLineFitter.fitLines(points, LinesFactory.createAscendingLines(points), consensusThreshold)
@staticmethod
def fitLines(points, lines, consensusThreshold):
preferenceMatrix = MultiLineFitter._createPreferenceMatrix(points, lines, consensusThreshold)
@@ -48,7 +52,7 @@ class MultiLineFitter:
bestClusterIndexCombination = None
keepClustering = False
numClusters = preferenceMatrix.shape[0]
for (clusterIndexA, clusterIndexB) in getPairs(numClusters):
for (clusterIndexA, clusterIndexB) in generatePairs(numClusters):
preferenceSetA = preferenceMatrix[clusterIndexA]
preferenceSetB = preferenceMatrix[clusterIndexB]
similarity = MultiLineFitter._intersectionOverUnion(preferenceSetA, preferenceSetB);