From 61e777495b4505960a8e967b7f6f70356b844fb2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ricardo=20Monta=C3=B1ana?= Date: Sun, 4 Dec 2022 10:54:44 +0100 Subject: [PATCH] CutPoints intervals have at least 2 samples --- fimdlp/CPPFImdlp.cpp | 33 ++++++++++++------------- fimdlp/cppfimdlp.cpython-310-darwin.so | Bin 124408 -> 124408 bytes 2 files changed, 16 insertions(+), 17 deletions(-) diff --git a/fimdlp/CPPFImdlp.cpp b/fimdlp/CPPFImdlp.cpp index 3e21d38..acc4d67 100644 --- a/fimdlp/CPPFImdlp.cpp +++ b/fimdlp/CPPFImdlp.cpp @@ -100,7 +100,7 @@ namespace mdlp { void CPPFImdlp::filterCutPoints() { cutPoints_t filtered; - cutPoint_t rest; + cutPoint_t rest, item; int classNumber = 0; rest.start = 0; @@ -108,31 +108,30 @@ namespace mdlp { rest.fromValue = std::numeric_limits::lowest(); rest.toValue = std::numeric_limits::max(); rest.classNumber = classNumber; - bool lastReject = false, first = true; - for (auto item : cutPoints) { + bool first = true; + for (size_t index = 0; index < size_t(cutPoints.size()); index++) { + item = cutPoints[index]; if (evaluateCutPoint(rest, item)) { if (debug) - std::cout << "Accepted" << std::endl; - if (lastReject) { - //Try to merge rejected intervals - if (first) { - item.fromValue = std::numeric_limits::lowest(); - item.start = indices[0]; - } else { - item.fromValue = filtered.back().toValue; - item.start = filtered.back().end; - } - } + std::cout << "Accepted: " << item << std::endl; //Assign class number to the interval (cutpoint) item.classNumber = classNumber++; filtered.push_back(item); first = false; rest.start = item.end; - lastReject = false; } else { if (debug) - std::cout << "Rejected" << std::endl; - lastReject = true; + std::cout << "Rejected: " << item << std::endl; + if (index != size_t(cutPoints.size()) - 1) { + // Try to merge the rejected cutpoint with the next one + if (first) { + cutPoints[index + 1].fromValue = std::numeric_limits::lowest(); + cutPoints[index + 1].start = indices[0]; + } else { + cutPoints[index + 1].fromValue = item.fromValue; + cutPoints[index + 1].start = item.start; + } + } } } if (!first) { diff --git a/fimdlp/cppfimdlp.cpython-310-darwin.so b/fimdlp/cppfimdlp.cpython-310-darwin.so index 679347e3fabc45a7b7448c9ad0b1b7af287892a9..623dd44113b5ccc2761b7c77014d6b23b7fba18c 100755 GIT binary patch delta 5916 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 SWnRhhbuw>lJ5mD+p8X#sR6ff9 delta 5893 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 hSB7ahkficjhK*KvEnKIoycXpzs=Tl1a5c