diff align/TransformDTWAligner.cpp @ 781:b651dc5ff555

Add subsequence option all over the place
author Chris Cannam
date Thu, 16 Jul 2020 18:01:50 +0100
parents 8fa98f89eda8
children 700fc9e4852d
line wrap: on
line diff
--- a/align/TransformDTWAligner.cpp	Wed Jul 01 15:34:46 2020 +0100
+++ b/align/TransformDTWAligner.cpp	Thu Jul 16 18:01:50 2020 +0100
@@ -56,6 +56,7 @@
 TransformDTWAligner::TransformDTWAligner(Document *doc,
                                          ModelId reference,
                                          ModelId toAlign,
+                                         bool subsequence,
                                          Transform transform,
                                          DTWType dtwType) :
     m_document(doc),
@@ -63,6 +64,7 @@
     m_toAlign(toAlign),
     m_transform(transform),
     m_dtwType(dtwType),
+    m_subsequence(subsequence),
     m_incomplete(true),
     m_magnitudePreprocessor(identityMagnitudePreprocessor),
     m_riseFallPreprocessor(identityRiseFallPreprocessor)
@@ -72,6 +74,7 @@
 TransformDTWAligner::TransformDTWAligner(Document *doc,
                                          ModelId reference,
                                          ModelId toAlign,
+                                         bool subsequence,
                                          Transform transform,
                                          MagnitudePreprocessor outputPreprocessor) :
     m_document(doc),
@@ -79,6 +82,7 @@
     m_toAlign(toAlign),
     m_transform(transform),
     m_dtwType(Magnitude),
+    m_subsequence(subsequence),
     m_incomplete(true),
     m_magnitudePreprocessor(outputPreprocessor),
     m_riseFallPreprocessor(identityRiseFallPreprocessor)
@@ -88,6 +92,7 @@
 TransformDTWAligner::TransformDTWAligner(Document *doc,
                                          ModelId reference,
                                          ModelId toAlign,
+                                         bool subsequence,
                                          Transform transform,
                                          RiseFallPreprocessor outputPreprocessor) :
     m_document(doc),
@@ -95,6 +100,7 @@
     m_toAlign(toAlign),
     m_transform(transform),
     m_dtwType(RiseFall),
+    m_subsequence(subsequence),
     m_incomplete(true),
     m_magnitudePreprocessor(identityMagnitudePreprocessor),
     m_riseFallPreprocessor(outputPreprocessor)
@@ -361,7 +367,11 @@
                << "]: serialising DTW to avoid over-allocation" << endl;
 #endif
         QMutexLocker locker(&m_dtwMutex);
-        alignment = dtw.alignSequences(s1, s2);
+        if (m_subsequence) {
+            alignment = dtw.alignSubsequence(s1, s2);
+        } else {
+            alignment = dtw.alignSequences(s1, s2);
+        }
     }
 
 #ifdef DEBUG_TRANSFORM_DTW_ALIGNER
@@ -450,7 +460,11 @@
                << "]: serialising DTW to avoid over-allocation" << endl;
 #endif
         QMutexLocker locker(&m_dtwMutex);
-        alignment = dtw.alignSequences(s1, s2);
+        if (m_subsequence) {
+            alignment = dtw.alignSubsequence(s1, s2);
+        } else {
+            alignment = dtw.alignSequences(s1, s2);
+        }
     }
 
 #ifdef DEBUG_TRANSFORM_DTW_ALIGNER