[Morphologie-cvs] r8 - trunk/src

ksprotte at common-lisp.net ksprotte at common-lisp.net
Sun Jul 1 19:51:10 UTC 2007


Author: ksprotte
Date: Sun Jul  1 15:51:08 2007
New Revision: 8

Modified:
   trunk/src/morphologie.lisp
Log:
added doc


Modified: trunk/src/morphologie.lisp
==============================================================================
--- trunk/src/morphologie.lisp	(original)
+++ trunk/src/morphologie.lisp	Sun Jul  1 15:51:08 2007
@@ -107,6 +107,7 @@
 
 
 (define-ompw primo-passo ((lista nil) (n 1))
+  "prende n elementi di una lista"
   :non-generic t
   (let ((f nil))
     (dotimes (x n) (push (nth x lista) f))
@@ -114,6 +115,7 @@
 
 
 (define-ompw scom ((lista1 nil) &optional (n nil))
+  "Scompone la lista1 in funzione delle lunghezze indicate nella n"
   :non-generic t
   (let ((ris nil))
     (cond
@@ -133,6 +135,8 @@
 
 
 (define-ompw pattern-ridond ((lista nil) &optional (n nil))
+  "Restituisce tutte le ripetizioni di tutti i sotto-pattern in
+	     cui può essere scomposta la sequenza in lista."
   :non-generic t
   (let ((ris nil) (x (scom lista n)) y)
     (loop :while x :do
@@ -141,6 +145,7 @@
 
 
 (define-ompw ptrn-recogn ((list (1 2 3 1 2 3 1 2 1 2)))
+  "restituisce..."
   :non-generic t
   (let* ((ris nil)
 	 (ros nil)
@@ -154,11 +159,15 @@
 
 
 (define-ompw rispero ((lista (1 2)) (n 0))
+  "E' come spero solo che divide la
+	    lista in base al valore messo in n"
   :non-generic t
   (scom lista n))
 
 
 (define-ompw risperiamo ((lista nil) (n 0))
+  "E' molto simile a speriamo : trova i pattern di n lunghezza
+	     all'interno della lista"
   :non-generic t
   (let ((ris nil))
     (dolist (x (rispero lista n) (nreverse ris))
@@ -166,6 +175,9 @@
 
 
 (define-ompw ptrn-ridond-ctrl-prov ((lista nil) (n nil))
+  "Restituisce tutti i sotto-pattern che compaiono almeno
+	     due volte (ridondanza) e le cui length sono decise da
+	     noi in N."
   :non-generic t
   (let ((ris nil) (x (risperiamo lista n)) y)
     (loop :while x :do (if (find (setf y (pop x)) x :test 'equal) (push y ris)))
@@ -223,6 +235,10 @@
 
 (define-ompw ptrn-reson ((list (a b c a b c b b b b a a)) (windw 5) &optional
                          (step nil) (set nil))
+  "Avance dans la sequence <list> avec avec une taille de fenetre <windw>
+et un pas d'avancement (optionnel) <step> .
+Renvoie pour chaque fenêtre le nombre d'occurrences d'un élément.
+L'entrée optionnelle <set> specifie les segments recherches dans <list>."
   :non-generic t
   (count-ptrn-win list windw step set))
 
@@ -260,6 +276,9 @@
                       result-not-sorted)))))))
 
 (define-ompw ptrn-smooth ((list (a b c d b b)))
+  "It returns the list <list> without local repetitions.
+	     For example : list equal to (a a b c a b b c d c c)
+	     it reurns (a b c a b c d c))"
   :non-generic t
   (let ((l nil))
     (loop for x from 0 to (1- (length list)) do
@@ -315,6 +334,21 @@
 
 (define-ompw find-permut ((seq nil) (output "permut") &optional (length nil)
                           (ptrn nil))
+  "Renvoie les permutations de deux elements de la sequence <seq>.
+ deux modes : <permutation> renvoie les segments d'elements permutes, <position> renvoie
+ les segments d'elements et leurs positions dans la sequence.
+optionnels :
+- <length> : longueur des segments. 2 par defaut.
+- <ptrn>  : segment dont les permutations sont recherchés.
+tous par défaut. desactive <length>.
+
+Returns all permutations of two elements in <seq> with
+their respective positions in seq.
+Optional inputs :
+<length>, length or list of lengths of segments to be permuted
+(if 'nil, length = 2);
+<ptrn> : pattern of which permutations are looking for.
+ If not empty (nil), desactivates <length>."
   :non-generic t
   :menu (output ("pos" "positions") ("permut" "permutations"))
   (assert (listp ptrn))
@@ -330,6 +364,16 @@
 (define-ompw ldl-distance ((l-seq ((a b c) (a b b) (a b c))) (change 1.0)
                            (ins/sup 1.0) (inex 0.0) (scale "abs")
                            (result "short"))
+  "Estimates the distances between lists of symbols.
+INPUT
+l-seq : list of lists of symbols;
+change : cost when changing a symbol;
+ins/sup : cost when inserting or deleting a symbol;
+inex : added cost when the edition is made on a symbol not actual in the other list;
+scale : scaling of the distance (ABSOLUTE / RELATIVE), default : ABSOLUTE;
+result : output mode - list of list (short), easy-to-read mode (extended) or save to file (save).
+OUTPUT
+A matrix of distances"
   :non-generic t
   :menu (scale ("rel" "relative") ("abs" "absolute"))
   :menu (result ("short" "short") ("ext" "extended") ("save" "save"))
@@ -565,6 +609,7 @@
 
 
 (define-ompw concatstrings ((lofstrings nil))
+  "Concantenates list of strings into one string."
   :non-generic t
   (let ((concatenated
 	 (make-string (apply #'+ (mapcar #'length lofstrings)) :initial-element
@@ -581,6 +626,7 @@
   (string-to-symbol (mc-to-name midiseq approx)))
 
 (define-ompw midiseq->alpha ((midiseq nil) (approx 0))
+  "Converts midicents values into symboles."
   :non-generic t
   (midiseq->alpha1 midiseq approx))
 
@@ -659,6 +705,24 @@
 
 (define-ompw structure-1 ((seq nil) &optional (alpha? "alpha") (smooth? "yes")
                           (result "extend") (levels 1) (smth2? "no"))
+  "Donne toutes les structures possibles d'une séquence de nombres ou de symboles
+selon une segmentation contrastive, et ce de manière récursive.
+
+INPUT
+seq : séquence de symboles ou nombres (liste);
+alpha? : résultat en mode alphabétique ou numérique (YES NO), optional;
+lisse? : optional <yes> : suppression des elements repetes immediatements dans seq .
+result : menu déroulant, quatre possibilités :
+ short = liste des critères de segmentation et leur segmentation respective;
+ exten = analyse détaillée;
+
+ save  = analyse détaillée écrite en un fichier texte.
+
+OUTPUT
+en mode short, pour le traitement de l'analyse, liste de liste selon le format :
+
+((critères de segmentation)
+(forme selon critère)...)"
   :non-generic t
   :menu (alpha? ("alpha" "alpha") ("num" "num"))
   :menu (smooth? ("yes" "yes") ("no" "no"))
@@ -997,6 +1061,12 @@
 
 (define-ompw rma-1 ((seq nil) (smoo1 1) (levels 1) &optional (smoo2 0)
                     (alpha? 1) (result 0))
+  "
+même fonction que structure-1, mais récursive :
+s'applique aussi aux structures trouvées, avec <levels>
+ comme niveau de recursion.
+memes caractéristiques que structure-1
+Recursive Mark Analysis. Returns only found structures."
   :non-generic t
   (when (< levels 1)
     (format t "Recursion error : levels must be >= 1 !~%")
@@ -1149,6 +1219,7 @@
   (setf (car lcs) (list (make-string 1 :initial-element (car lcs)) (cadr lcs))))
 
 (define-ompw rma-1-scores ((structures nil))
+  "Returns the score of each structure, level by level of the rma-1 analysis."
   :non-generic t
   (let ((types (mapcar 'test-eq-l structures)) (scores nil) (s nil))
     (setf (car types) (mapcar #'remove-duplicates (car types)))
@@ -1300,6 +1371,20 @@
 
 (define-ompw ins-ptrn ((seq (1 2 3 4 1 2 5 3 4)) (ptrn ((1 2 3 4) (1 2)))
                        &optional (prof 1) (set nil) (marg 0))
+  "Finds the pattern(s) <ptrn> in list seq with or without
+up to a number prof inserted items;
+Return each pattern and its start positions.
+Doesn't permit cross-overing of a pattern on itself.
+Optional-1:
+	    A set (list) of elements which can be inserted in the patterns.
+	    If set empty, no constraint.
+	    When seq is a list of values, permits a list of 'domains'
+	 defined by a list of min and max values.
+Optional-2:
+	    If seq is a list of values, definition of a margin around the values,
+	 more and less the value specified in set (+-);
+	 only more the value in set (+);
+	 or only less the value in set (-)."
   :non-generic t
   :menu (marg (3 "+-") (1 " + ") (2 " - "))
   (let ((val 0) (p 0) (pos nil) (long 0) (r nil) (set2 0))
@@ -1379,6 +1464,27 @@
 
 (define-ompw structure-2 ((seq nil) (n-max 10) (alpha? 1) (result 0) &optional
                           (length nil) (seuil 10))
+  "INPUT
+seq = sequence of nums or symbols;
+n-max = maximum number of patterns accepted in structure of seq;
+alpha = alpha or num representation of the resulting structures;
+result = type of output of analysis
+	  extended -> detailed analysis;
+	  struct -> returns score, structure and corresponding patterns as list of lists;
+	  pos -> returns only the positions of the patterns;
+	  mat -> return the list of pattern and the associated binary matrix;
+	  p-score -> returns the score of structure completion for each structure;
+	  save -> save all analysis into a file.
+&OPTIONAL
+length = value or list of minimum and maximum values for length of patterns.
+	 If nil, lengths of patterns are set up to the half-lenght of the sequence;
+seuil = minimum completion percentage of the structure taken in account;
+
+OUTPUT
+Returns an analysis of seq according to the repetition criterium to segment.
+
+Note : if out-of memory, try successives computations with a smaller value
+of n-max (max number of patterns combined in each structure"
   :non-generic t
   :menu (alpha? (1 "alpha") (0 "num"))
   :menu (result (0 "extended") (5 "struct") (1 "pos") (2 "mat") (3 "p-score")
@@ -1525,6 +1631,7 @@
           run-time))
 
 (define-ompw aver-class ((seq nil) (class nil))
+  "Return the average center of classes (one dimension)."
   :non-generic t
   (let ((r nil) (rt nil) (length (remove-duplicates class)))
     (dotimes (n (length length))
@@ -1541,6 +1648,8 @@
 
 
 (define-ompw quantize-1 ((seq nil) (class nil))
+  "Returns the quantization of elements in list according to the classification
+defined in class (one dimension)"
   :non-generic t
   (let ((r nil) (rt nil) (length (remove-duplicates class)))
     (dotimes (n (length length))
@@ -1559,6 +1668,7 @@
 
 
 (define-ompw l-matrix ((list nil))
+  "Makes a matrix from a list of lists."
   :non-generic t
   (let ((mat
 	 (if (not (listp (car list))) (make-array (list (length list) 2))
@@ -1682,6 +1792,10 @@
       (setf (aref g 0 i) (float (/ sum m))))))
 
 (define-ompw matrix-center ((matrix nil))
+  "Donne les coordonnées du centre de gravité d'une matrice
+ des coordonnées de points en n-dimensions (utiliser l-matrix
+pour convertir une liste de coordonnées de points en matrice).
+"
   :non-generic t
   (let (sum
 	g
@@ -1722,6 +1836,8 @@
                 (multiply-two-matrices (transpose matrix) matrix)))
 
 (define-ompw dist-euclidienne ((matrix nil))
+  "input = matrix of coordinates of points in a d-space;
+   output = upper-matrix of euclidian distances."
   :non-generic t
   (let (k
 	temp
@@ -1739,6 +1855,8 @@
 
 
 (define-ompw euclidian-d ((matrix nil))
+  "input = matrix of coordinates of points in a d-space;
+   output = upper-matrix of euclidian distances."
   (let (k
 	temp
 	mat-dist
@@ -1807,6 +1925,10 @@
       (dotimes (d *n*) (setf (aref centres b d) (aref tc 0 d))))))
 
 (define-ompw class-center ((matrix nil) (classes nil))
+  "input = matrix of points in d-dimensions
+	   liste of classes founded for each point (line in matrix);
+	   Classes must be in numerical representation.
+   output = matrix of classes centers."
   :non-generic t
   (let (nuage
 	point
@@ -1910,6 +2032,8 @@
 
 (define-ompw meta-class1 ((matrix nil) (n 2) (iter 1) &optional alpha? centers
                           verbose)
+  "Does n iterations of class-1 algorithm.
+The classes designation is normalized."
   :non-generic t
   :menu (alpha? ("alpha" "alpha") ("num" "num"))
   :menu (verbose ("no" "no") ("yes" "yes"))
@@ -1945,6 +2069,10 @@
 	(t (push (- (1- (length set)) (pos (nth c classes) set)) r))))))
 
 (define-ompw norm-class ((classes nil))
+  "reordonne les classes de class-1.
+L'ordre de la classe étant le numéro de sa première occurence dans la liste des classes.
+Se connecte typiquement après class-1 ou meta-class1.
+IN : string or list (of symbols or lists or strings)."
   :non-generic t
   (if (or (stringp classes) (not (listp (car classes))))
       (normalize-class classes)
@@ -1977,6 +2105,7 @@
           (push (aref mat i j) c))))))
 
 (define-ompw p-class ((clusters nil))
+  "Give the probability for each to be element of class #"
   :non-generic t
   (prob-class clusters))
 
@@ -1995,6 +2124,7 @@
       (if (= val? 0) (push cl r) (push (list cl p) r)))))
 
 (define-ompw res-class ((proba nil) (val? 0))
+  "Affects each point i of the matrix prob to the class (j) with higher probability."
   :non-generic t
   :menu (val? (0 "classes") (1 "proba"))
   (resume-class proba val?))
@@ -2008,6 +2138,7 @@
         (mapcar #'(lambda (n) (nth n clusters)) (pos2 e entropies)))))
 
 (define-ompw e-test ((clusters nil) (test "min") &optional (out "clust"))
+  "Returns the clusters which have the minimum or maximum entropy."
   :non-generic t
   :menu (test ("min" "min") ("max" "max"))
   :menu (out ("clust" "clust") ("nth" "nth"))
@@ -2219,6 +2350,25 @@
                             (6000 4000 5600 4700 4100 5900 6400 7800 7400 6300
 				  6800 8300 5900))
                            (result 1) &optional (d-cte nil))
+  "analyse une sequence en detectant trois formes primitives:
+minima: element précédé et suivi par un élément
+de valeur plus grande.
+maxima: element précédé et suivi par un élément
+de valeur plus petite
+flex: element précédé et suivi par un élément
+de valeur égale
+
+ex : (10 8 8 6 6 5 2 2 2 1)
+OM->(pure-flex- (8 2) (6 2) (2 3))
+le premier chiffre indique la valeur répétée
+ et le deuxième terme de la liste indique son nombre d'occurrences.
+la deuxième entrée est un menu <which> qui permet de selectionner
+ les informations:
+prim: succession des primitives
+prof: succession des primitives et profondeur en nombre d'éléments de
+chaque primitive
+vals: idem que prof + valeur correspondant à chaque primitive
+every:  idem que vals + position de chaque primitive"
   :non-generic t
   :menu (result (1 "prim") (2 "prof") (3 "vals") (4 "every"))
   (let ((primitives (find-primitives seq)))
@@ -2242,6 +2392,9 @@
 
 
 (define-ompw 1-0-1-reconst ((list nil))
+  "fonction dx->x d'OM :
+renvoie une liste de points depuis une liste
+ d'intervalles . commence à zero"
   :non-generic t
   (OM::dx->x 0 list))
 
@@ -2266,6 +2419,12 @@
 
 
 (define-ompw reconstitute ((list nil) (which 1) (start 0))
+  "reconstitue le profil original.
+avec optionnels:
+prim : n'utilise que l'analyse primitive
+prof : utilise l'analyse primitive et la profondeur.
+vals : utilise l'analyse primitive, la profondeur et la valeur.
+every : utilise l'analyse primitive, la profondeur, la valeur et la position "
   :non-generic t
   :menu (which (1 "prim") (2 "prof") (3 "vals") (4 "every"))
   (case which
@@ -2297,6 +2456,8 @@
 
 
 (define-ompw reconst-prim+prof ((list nil))
+  "Ricostruisce la lista usando min, max, flex
+	     più eventualmente l'indice di profondità"
   :non-generic t
   (let ((ris nil) (start 0))
     (dolist



More information about the Morphologie-cvs mailing list