changeset 161:676283afe8fb

misc bug fixes darcs-hash:20071211150333-1f211-716a232fef6cf85127f8a2e52e71b813495a1cac.gz
author d.mullensiefen <d.mullensiefen@gold.ac.uk>
date Tue, 11 Dec 2007 15:03:33 +0000
parents 136ec5516cc4
children 110e957a7e3c
files amuse.asd tools/segmentation/methods.lisp
diffstat 2 files changed, 14 insertions(+), 8 deletions(-) [+]
line wrap: on
line diff
--- a/amuse.asd	Tue Dec 11 14:59:12 2007 +0000
+++ b/amuse.asd	Tue Dec 11 15:03:33 2007 +0000
@@ -18,7 +18,7 @@
             ((:file "package")
              (:file "utils" :depends-on ("package"))
 	     (:file "n-grams" :depends-on ("package"))
-	     (:file "meltools" :depends-on ("package")))
+	     (:file "meltools" :depends-on ("package"))))
    (:module tools
             :components
 	    ((:file "package")
--- a/tools/segmentation/methods.lisp	Tue Dec 11 14:59:12 2007 +0000
+++ b/tools/segmentation/methods.lisp	Tue Dec 11 15:03:33 2007 +0000
@@ -13,7 +13,11 @@
 (defun map-segmenters (composition &key (start-boundary-segmenter nil) (end-boundary-segmenter nil))
   (cond
     ((and start-boundary-segmenter end-boundary-segmenter)
-     (%map-non-contiguous-segmenters composition start-boundary-segmenter end-boundary-segmenter))
+     #+nil (%map-non-contiguous-segmenters composition start-boundary-segmenter end-boundary-segmenter)
+     ;; hacky fix for broken code
+     (remove-duplicates (nconc (%map-start-segmenter composition start-boundary-segmenter)
+			       (%map-end-segmenter composition end-boundary-segmenter))
+			:test #'period=))
     (start-boundary-segmenter
      (%map-start-segmenter composition start-boundary-segmenter))
     (end-boundary-segmenter
@@ -32,18 +36,18 @@
 	  (setf (duration (car segments))
 		(duration (time- (boundary-time segmenter event)
 				 (onset (car segments))))))
-	(push (make-instance 'anchored-period
+	(push (make-instance 'standard-anchored-period
 			     :time (timepoint (boundary-time segmenter event)))
 	      segments)))))
 
 (defun %map-end-segmenter (composition segmenter)
-  (let ((segments (list (make-instance 'anchored-period :time (timepoint composition)))))
+  (let ((segments (list (make-instance 'standard-anchored-period :time (timepoint composition)))))
     (sequence:dosequence (event composition (reverse (cdr segments)))
       (when (> (boundary-strength segmenter event composition) 0)
 	(setf (duration (car segments))
 	      (duration (time- (boundary-time segmenter event)
 			       (onset (car segments)))))
-	(push (make-instance 'anchored-period
+	(push (make-instance 'standard-anchored-period
 			     :time (timepoint (boundary-time segmenter event)))
 	      segments)))))
 
@@ -54,11 +58,13 @@
   (let ((segments) (starts))
     (sequence:dosequence (event composition (reverse segments))
       (when (> (boundary-strength start-boundary-segmenter event composition) 0)
-	(setf (cdr (last starts))
-	      (list (boundary-time start-boundary-segmenter event))))
+	(if starts
+	    (setf (cdr (last starts))
+		  (list (boundary-time start-boundary-segmenter event)))
+	    (setf starts (list (boundary-time start-boundary-segmenter event)))))
       (when (> (boundary-strength end-boundary-segmenter event composition) 0)
 	(when starts
-	  (push (make-instance 'anchored-period
+	  (push (make-instance 'standard-anchored-period
 			       :interval (amuse::duration (time- (boundary-time end-boundary-segmenter event)
 								 (car starts)))
 			       :time (timepoint (pop starts)))