samer@0
|
1 ;(load "view3d.scm")
|
samer@0
|
2 (load "models.scm")
|
samer@0
|
3 (load "functions.scm")
|
samer@0
|
4
|
samer@0
|
5 (define o CompoundFunction.)
|
samer@0
|
6
|
samer@0
|
7 (define distances null)
|
samer@0
|
8 (define reset-P null)
|
samer@0
|
9 (define computeD null)
|
samer@0
|
10 (define get-P null)
|
samer@0
|
11
|
samer@0
|
12
|
samer@0
|
13 (define (stats->mds stats mds)
|
samer@0
|
14 (let* ((N (.N$# mds))
|
samer@0
|
15 (R (Matrix. "R" N N))
|
samer@0
|
16 (stats->corr (task (.getCorrelation stats R)))
|
samer@0
|
17 (corr->D (samer.mds.CorrelationTask. mds R)))
|
samer@0
|
18 (set! distances (VVector. "distances" (.getLinkArray mds)))
|
samer@0
|
19 (set! computeD
|
samer@0
|
20 (seq stats->corr corr->D
|
samer@0
|
21 (Ops.apply (o (vscale 16.0) (vpower 1.0)) distances)
|
samer@0
|
22 (Ops.update distances)
|
samer@0
|
23 )
|
samer@0
|
24 )
|
samer@0
|
25 (matexec R "image")
|
samer@0
|
26 computeD
|
samer@0
|
27 )
|
samer@0
|
28 )
|
samer@0
|
29
|
samer@0
|
30 (define (R->mds R mds)
|
samer@0
|
31 (set! distances (VVector. "distances" (.getLinkArray mds)))
|
samer@0
|
32 (set! computeD
|
samer@0
|
33 (seq
|
samer@0
|
34 (samer.mds.CorrelationTask. mds R)
|
samer@0
|
35 (Ops.apply (o (vscale 16.0) (vpower 1.0)) distances)
|
samer@0
|
36 (Ops.update distances)
|
samer@0
|
37 )
|
samer@0
|
38 )
|
samer@0
|
39 (matexec R "image")
|
samer@0
|
40 computeD
|
samer@0
|
41 )
|
samer@0
|
42
|
samer@0
|
43
|
samer@0
|
44 (define (analyse x)
|
samer@0
|
45 (define N (.size x))
|
samer@0
|
46 ; (define hist (histogram x 256))
|
samer@0
|
47 (define stats (node (child x "statistics") (GaussianStatsOnline. x)))
|
samer@0
|
48 (define P (node (.getNode x) (Matrix. "P" N 3))) ; 4D points
|
samer@0
|
49 (define mds (samer.mds.MDS. P))
|
samer@0
|
50 (define tasks (seq stats))
|
samer@0
|
51
|
samer@0
|
52 (set! reset-P (lambda () (.set P (samer.maths.random.NormalisedGaussian.))))
|
samer@0
|
53 (set! get-P (lambda () P))
|
samer@0
|
54 ;(matexec P "load")
|
samer@0
|
55
|
samer@0
|
56 (reset-P)
|
samer@0
|
57 ;(.setMetric mds (samer.mds.Manhatten.))
|
samer@0
|
58 ;(exec (viewable "mds.stress") "trace")
|
samer@0
|
59 (matexec P "image")
|
samer@0
|
60 ;(exec (.getLikelihoodSignal hist) "trace")
|
samer@0
|
61
|
samer@0
|
62 (with-tasks tasks
|
samer@0
|
63 (addtasks
|
samer@0
|
64 ; hist
|
samer@0
|
65 (sub 128 (stats->mds stats mds))
|
samer@0
|
66 (sub 24 mds))
|
samer@0
|
67 ; (view3d x P id)
|
samer@0
|
68 )
|
samer@0
|
69 tasks
|
samer@0
|
70 )
|
samer@0
|
71
|
samer@0
|
72 (define (analyse-mds x)
|
samer@0
|
73 (define N (.size x))
|
samer@0
|
74 (define R (Matrix. "R" N N))
|
samer@0
|
75 (define P (node (.getNode x) (Matrix. "P" N 3))) ; 4D points
|
samer@0
|
76 (define mds (samer.mds.MDS. P))
|
samer@0
|
77
|
samer@0
|
78 (set! reset-P (lambda () (.set P (samer.maths.random.NormalisedGaussian.))))
|
samer@0
|
79 (set! get-P (lambda () P))
|
samer@0
|
80 ;(matexec P "load")
|
samer@0
|
81
|
samer@0
|
82 (reset-P)
|
samer@0
|
83 ;(.setMetric mds (samer.mds.Manhatten.))
|
samer@0
|
84 ;(exec (viewable "mds.stress") "trace")
|
samer@0
|
85 (matexec P "image")
|
samer@0
|
86
|
samer@0
|
87 (seq
|
samer@0
|
88 (sub 128 (R->mds R mds))
|
samer@0
|
89 (sub 24 mds))
|
samer@0
|
90 )
|