view src/scheme/analysis.scm @ 1:5df24c91468d

Oh my what a mess.
author samer
date Fri, 05 Apr 2019 16:26:00 +0100
parents bf79fb79ee13
children
line wrap: on
line source
;(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))
)