Mercurial > hg > jslab
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)) +)