diff src/scheme/analysis.scm @ 0:bf79fb79ee13

Initial Mercurial check in.
author samer
date Tue, 17 Jan 2012 17:50:20 +0000
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/scheme/analysis.scm	Tue Jan 17 17:50:20 2012 +0000
@@ -0,0 +1,90 @@
+;(load "view3d.scm")
+(load "models.scm")
+(load "functions.scm")
+
+(define o CompoundFunction.)
+
+(define distances null)
+(define reset-P null)
+(define computeD null)
+(define get-P null)
+
+
+(define (stats->mds stats mds)
+	(let* ((N (.N$# mds))
+			(R (Matrix. "R" N N))
+			(stats->corr (task (.getCorrelation stats R)))
+			(corr->D	(samer.mds.CorrelationTask. mds R)))
+		(set! distances (VVector. "distances" (.getLinkArray mds)))
+		(set! computeD
+			(seq stats->corr corr->D
+				(Ops.apply (o (vscale 16.0) (vpower 1.0)) distances)
+				(Ops.update distances)
+			)
+		)
+		(matexec R "image")
+		computeD
+	)
+)
+
+(define (R->mds R mds)
+	(set! distances (VVector. "distances" (.getLinkArray mds)))
+	(set! computeD
+		(seq 
+			(samer.mds.CorrelationTask. mds R)
+			(Ops.apply (o (vscale 16.0) (vpower 1.0)) distances)
+			(Ops.update distances)
+		)
+	)
+	(matexec R "image")
+	computeD
+)
+
+
+(define (analyse x)
+	(define N (.size x))
+;	(define hist (histogram x 256))
+	(define stats (node (child x "statistics") (GaussianStatsOnline. x)))
+	(define P (node (.getNode x) (Matrix. "P" N 3)))   ; 4D points
+	(define mds (samer.mds.MDS. P))
+	(define tasks (seq stats))
+
+	(set! reset-P (lambda () (.set P (samer.maths.random.NormalisedGaussian.))))
+	(set! get-P (lambda () P))
+	;(matexec P "load")
+
+	(reset-P)
+	;(.setMetric mds (samer.mds.Manhatten.))
+	;(exec (viewable "mds.stress") "trace")
+	(matexec P "image")
+	;(exec (.getLikelihoodSignal hist) "trace")
+
+	(with-tasks tasks
+		(addtasks 
+;			hist
+			(sub 128 (stats->mds stats mds))
+			(sub 24 mds))
+;		(view3d x P id)
+	)
+	tasks
+)
+								  
+(define (analyse-mds x)
+	(define N (.size x))
+	(define R (Matrix. "R" N N))
+	(define P (node (.getNode x) (Matrix. "P" N 3)))   ; 4D points
+	(define mds (samer.mds.MDS. P))
+
+	(set! reset-P (lambda () (.set P (samer.maths.random.NormalisedGaussian.))))
+	(set! get-P (lambda () P))
+	;(matexec P "load")
+
+	(reset-P)
+	;(.setMetric mds (samer.mds.Manhatten.))
+	;(exec (viewable "mds.stress") "trace")
+	(matexec P "image")
+
+	(seq 
+		(sub 128 (R->mds R mds))
+		(sub 24 mds))
+)