view tools/segmentation/generics.lisp @ 310:f99fd6a7bbfc

Add midi-db. Ignore-this: c6f4fc32efa4453ddbdc478793eedd52 A basic implementation for working with MIDI files stored in the database. It is a test case for `versioned' data, but only partially implemented at the moment. darcs-hash:20100223152703-16a00-4388d2720907d777a1c6c6b3a010885ce0fe06a7.gz
author j.forth <j.forth@gold.ac.uk>
date Tue, 23 Feb 2010 15:27:03 +0000
parents 56c2fc41a837
children
line wrap: on
line source
(in-package "AMUSE-SEGMENTATION")

(defgeneric boundary-strength (segmenter object composition)
  (:documentation "Returns a (positive?) number, with 0
  indicating no boundary. N.B. Whether this indicates a boundary
  before or after a moment is the responsibility of the caller to 
  know."))

(defgeneric boundary-time (segmenter object)
  (:documentation "Returns the moment that the value returned by
  boundary-strength applies to if object is the second input to
  the method. Essentially, this distinguishes between segmenters
  that look to the beginning of a note and those that look at the
  end."))

(defgeneric ground-truth-segmenter-before (composition)
  (:documentation "Returns the segmenter that, when put into
  boundary-strength, supplies segmentation as given in a
  ground truth for the composition. N.B. This needs to return one
  segmenter only, so in cases of multiple ground truths, this
  method must arbitrate."))

(defgeneric ground-truth-segmenter-after (composition)
  (:documentation "Returns the segmenter that, when put into
  boundary-strength-after, supplies segmentation as given in a
  ground truth for the composition. N.B. This needs to return one
  segmenter only, so in cases of multiple ground truths, this
  method must arbitrate."))

(defgeneric ground-truth-segmenterp (segmenter)
  (:method ((s ground-truth-segmenter)) t)
  (:method (s) nil)) ;; prob not necessary?
(defgeneric segments-beforep (segmenter)
  (:method ((s before-segmenter)) t)
  (:method ((s after-segmenter)) nil))
(defgeneric segments-afterp (segmenter)
  (:method (s) (not (segments-beforep s))))

(defgeneric make-segmentation (segmenter composition)
  (:documentation "Basic way to generate segmentation
  object. N.B. Requires segmenter to do more work than
  hitherto."))

(defgeneric ground-truth-segmentation (segmentation)
  (:documentation "Returns the relevant ground-truth for
  evaluating segmentation"))
(defgeneric (setf ground-truth-segmentation) (segmentation value)
  (:documentation "Sets the segmentation to be used as ground
  truth by segmentation to value"))
(defgeneric precision (segmentation)
  (:documentation "Returns the precision ratio for segmentation
  when compared with the (ground-truth-segmentation
  segmentation)"))
(defgeneric recall (segmentation)
  (:documentation "Returns the precision ratio for segmentation
  when compared with the (ground-truth-segmentation
  segmentation)"))
(defgeneric fall-out (segmentation)
  (:documentation "Returns the precision ratio for segmentation
  when compared with the (ground-truth-segmentation
  segmentation)"))
(defgeneric F-measure (segmentation)
  (:documentation "Returns the precision ratio for segmentation
  when compared with the (ground-truth-segmentation
  segmentation)"))

(defgeneric boundary-list (segmentation)
  (:documentation "Returns a list of moments corresponding to the
  boundary points of the segmentation"))
(defgeneric segment-list (segmentation)
  (:documentation "Returns a list of anchored periods
  corresponding to the segments resulting from the segmentation"))