@@ -20,138 +20,111 @@ update.expectation.dmat <- function(PARAM, update.logL = TRUE){
20
20
K <- PARAM $ K
21
21
22
22
# ## WCC: original
23
- # .pmclustEnv$U.dmat <- sweep(.pmclustEnv$W.dmat, 2, PARAM$log.ETA)
23
+ .pmclustEnv $ U.dmat <- sweep(.pmclustEnv $ W.dmat , 2 , PARAM $ log.ETA )
24
24
# ## WCC: temp dmat
25
25
# tmp.1 <- sweep(.pmclustEnv$W.dmat, 2, PARAM$log.ETA)
26
26
# .pmclustEnv$U.dmat <- tmp.1
27
27
# ## WCC: temp spmd
28
- tmp.1 <- as.matrix(.pmclustEnv $ W.dmat )
29
- tmp.2 <- sweep(tmp.1 , 2 , PARAM $ log.ETA )
30
- .pmclustEnv $ U.dmat <- as.ddmatrix(tmp.2 )
28
+ # tmp.1 <- as.matrix(.pmclustEnv$W.dmat)
29
+ # tmp.2 <- sweep(tmp.1, 2, PARAM$log.ETA)
30
+ # .pmclustEnv$U.dmat <- as.ddmatrix(tmp.2)
31
31
32
32
# ## WCC: original
33
- # .pmclustEnv$Z.dmat <- exp(.pmclustEnv$U.dmat)
33
+ .pmclustEnv $ Z.dmat <- exp(.pmclustEnv $ U.dmat )
34
34
# ## WCC: temp dmat
35
35
# tmp.1 <- exp(.pmclustEnv$U.dmat)
36
36
# .pmclustEnv$Z.dmat <- tmp.1
37
37
# ## WCC: temp spmd
38
- tmp.1 <- as.matrix(.pmclustEnv $ U.dmat )
39
- tmp.2 <- exp(tmp.1 )
40
- .pmclustEnv $ Z.dmat <- as.ddmatrix(tmp.2 )
38
+ # tmp.1 <- as.matrix(.pmclustEnv$U.dmat)
39
+ # tmp.2 <- exp(tmp.1)
40
+ # .pmclustEnv$Z.dmat <- as.ddmatrix(tmp.2)
41
41
42
42
# ## WCC: original
43
- # tmp.id <- rowSums(.pmclustEnv$U.dmat < .pmclustEnv$CONTROL$exp.min) == K |
44
- # rowSums(.pmclustEnv$U.dmat > .pmclustEnv$CONTROL$exp.max) > 0
45
- # tmp.id <- as.vector(tmp.id)
43
+ tmp.id <- rowSums(.pmclustEnv $ U.dmat < .pmclustEnv $ CONTROL $ exp.min ) == K |
44
+ rowSums(.pmclustEnv $ U.dmat > .pmclustEnv $ CONTROL $ exp.max ) > 0
45
+ tmp.id <- as.logical(as. vector(tmp.id ) )
46
46
# ## WCC: temp dmat
47
- tmp.1 <- .pmclustEnv $ U.dmat < .pmclustEnv $ CONTROL $ exp.min
48
- tmp.1 <- as.matrix(tmp.1 )
49
- tmp.2 <- rowSums(tmp.1 )
50
- tmp.3 <- tmp.2 == K
51
- tmp.4 <- .pmclustEnv $ U.dmat > .pmclustEnv $ CONTROL $ exp.max
52
- tmp.4 <- as.matrix(tmp.4 )
53
- tmp.5 <- rowSums(tmp.4 )
54
- tmp.6 <- tmp.5 > 0
55
- tmp.7 <- tmp.3 | tmp.6
56
- tmp.8 <- as.vector(tmp.7 )
57
- tmp.id <- tmp.8
58
- # ## WCC: bug
59
- # comm.print(str(tmp.id), all.rank = TRUE)
60
- tmp.id <- as.logical(tmp.id )
47
+ # tmp.1 <- .pmclustEnv$U.dmat < .pmclustEnv$CONTROL$exp.min
48
+ # tmp.1 <- as.matrix(tmp.1)
49
+ # tmp.2 <- rowSums(tmp.1)
50
+ # tmp.3 <- tmp.2 == K
51
+ # tmp.4 <- .pmclustEnv$U.dmat > .pmclustEnv$CONTROL$exp.max
52
+ # tmp.4 <- as.matrix(tmp.4)
53
+ # tmp.5 <- rowSums(tmp.4)
54
+ # tmp.6 <- tmp.5 > 0
55
+ # tmp.7 <- tmp.3 | tmp.6
56
+ # tmp.8 <- as.vector(tmp.7)
57
+ # tmp.id <- tmp.8
58
+ # tmp.id <- as.logical(tmp.id)
61
59
62
60
tmp.flag <- sum(tmp.id )
63
61
if (tmp.flag > 0 ){
64
62
# ## WCC: original
65
- # tmp.dmat <- .pmclustEnv$U.dmat[tmp.id,]
66
- # ## WCC: temp dmat
67
- # tmp.1 <- .pmclustEnv$U.dmat[tmp.id,]
68
- # tmp.dmat <- tmp.1
63
+ tmp.dmat <- .pmclustEnv $ U.dmat [tmp.id ,]
69
64
# ## WCC: temp spmd
70
- tmp.1 <- as.matrix(.pmclustEnv $ U.dmat )
71
- tmp.2 <- tmp.1 [tmp.id ,]
72
- if (tmp.flag == 1 ){
73
- tmp.2 <- matrix (tmp.2 , nrow = 1 )
74
- }
75
- tmp.dmat <- as.ddmatrix(tmp.2 )
65
+ # tmp.1 <- as.matrix(.pmclustEnv$U.dmat)
66
+ # tmp.2 <- tmp.1[tmp.id,]
67
+ # if(tmp.flag == 1){
68
+ # tmp.2 <- matrix(tmp.2, nrow = 1)
69
+ # }
70
+ # tmp.dmat <- as.ddmatrix(tmp.2)
76
71
77
72
if (tmp.flag == 1 ){
78
73
# ## WCC: original
79
- # tmp.scale <- max(tmp.dmat) - .pmclustEnv$CONTROL$exp.max / K
80
- # tmp.scale <- as.vector(tmp.scale)
74
+ tmp.scale <- max(tmp.dmat ) - .pmclustEnv $ CONTROL $ exp.max / K
75
+ tmp.scale <- as.vector(tmp.scale )
81
76
# ## WCC: temp dmat
82
77
# tmp.1 <- max(tmp.dmat)
83
78
# tmp.2 <- tmp.1 - .pmclustEnv$CONTROL$exp.max / K
84
79
# tmp.3 <- as.vector(tmp.2)
85
80
# tmp.scale <- tmp.3
86
81
# ## WCC: temp spmd
87
- tmp.1 <- as.matrix (tmp.dmat )
88
- tmp.scale <- max(tmp.1 ) - .pmclustEnv $ CONTROL $ exp.max / K
82
+ # tmp.1 <- as.vector (tmp.dmat)
83
+ # tmp.scale <- max(tmp.1) - .pmclustEnv$CONTROL$exp.max / K
89
84
} else {
90
85
# ## WCC: original
91
- # tmp.scale <- apply(tmp.dmat, 1, max) - .pmclustEnv$CONTROL$exp.max / K
92
- # tmp.scale <- as.vector(tmp.scale)
86
+ tmp.scale <- apply(tmp.dmat , 1 , max ) - .pmclustEnv $ CONTROL $ exp.max / K
87
+ tmp.scale <- as.vector(tmp.scale )
93
88
# ## WCC: temp dmat
94
89
# tmp.1 <- apply(tmp.dmat, 1, max)
95
90
# tmp.2 <- tmp.1 - .pmclustEnv$CONTROL$exp.max / K
96
91
# tmp.3 <- as.vector(tmp.2)
97
92
# tmp.scale <- tmp.3
98
93
# ## WCC: temp spmd
99
- tmp.1 <- as.matrix(tmp.dmat )
100
- tmp.scale <- unlist(apply(tmp.1 , 1 , max )) -
101
- .pmclustEnv $ CONTROL $ exp.max / K
94
+ # tmp.1 <- as.matrix(tmp.dmat)
95
+ # tmp.scale <- unlist(apply(tmp.1, 1, max)) -
96
+ # .pmclustEnv$CONTROL$exp.max / K
102
97
}
103
98
# ## WCC: original
104
- # .pmclustEnv$Z.dmat[tmp.id,] <- exp(tmp.dmat - tmp.scale)
99
+ .pmclustEnv $ Z.dmat [tmp.id ,] <- exp(tmp.dmat - tmp.scale )
105
100
# ## WCC: temp dmat
106
101
# tmp.1 <- exp(tmp.dmat - tmp.scale)
102
+ # .pmclustEnv$Z.dmat[tmp.id,] <- tmp.1
103
+ # ## WCC: temp spmd
107
104
# tmp.1 <- as.matrix(tmp.dmat)
108
105
# tmp.1 <- exp(tmp.1 - tmp.scale)
109
-
110
- # ## WCC: bug
111
106
# tmp.id <- which(tmp.id)
112
- # .pmclustEnv$Z.dmat[tmp.id,] <- tmp.1
113
-
114
- # ## To DMS
115
- # comm.print(tmp.id)
116
- # a <- as.matrix(tmp.1)
117
- # comm.print(head(a))
118
- # b <- as.matrix(.pmclustEnv$Z.dmat)
119
- # comm.print(b[tmp.id,])
120
- # c <- as.matrix(rowSums(.pmclustEnv$Z.dmat))
121
- # comm.print(c[tmp.id])
122
-
123
- # ## WCC: fix spmd
124
- Z.dmat <- as.matrix(.pmclustEnv $ Z.dmat )
125
- Z.dmat [tmp.id ,] <- as.matrix(tmp.1 )
126
- .pmclustEnv $ Z.dmat <- as.ddmatrix(Z.dmat )
107
+ # tmp.2 <- as.matrix(.pmclustEnv$Z.dmat)
108
+ # tmp.2[tmp.id,] <- tmp.1
109
+ # .pmclustEnv$Z.dmat <- as.ddmatrix(Z.dmat)
127
110
}
128
111
129
112
# ## WCC: original
130
- # .pmclustEnv$W.rowSums <- as.vector(rowSums(.pmclustEnv$Z.dmat))
113
+ .pmclustEnv $ W.rowSums <- as.vector(rowSums(.pmclustEnv $ Z.dmat ))
131
114
# ## WCC: temp dmat
132
115
# tmp.1 <- rowSums(.pmclustEnv$Z.dmat)
133
116
# tmp.2 <- as.vector(tmp.1)
134
117
# .pmclustEnv$W.rowSums <- tmp.2
135
118
# ## WCC: temp spmd
136
- tmp.1 <- as.matrix(.pmclustEnv $ Z.dmat )
137
- .pmclustEnv $ W.rowSums <- rowSums(tmp.1 )
119
+ # tmp.1 <- as.matrix(.pmclustEnv$Z.dmat)
120
+ # .pmclustEnv$W.rowSums <- rowSums(tmp.1)
138
121
139
122
# ## WCC: original
140
123
# .pmclustEnv$Z.dmat <- .pmclustEnv$Z.dmat / .pmclustEnv$W.rowSums
141
- # ## WCC: temp dmat
142
-
143
-
144
- # ## bug
145
- # tmp.1 <- .pmclustEnv$Z.dmat / .pmclustEnv$W.rowSums
146
- # .pmclustEnv$Z.dmat <- tmp.1
147
- # a <- as.matrix(tmp.1)
148
- # comm.print(head(a))
149
-
150
- # ## WCC: fix spmd
124
+ # ## WCC: temp spmd
151
125
tmp.1 <- as.matrix(.pmclustEnv $ Z.dmat )
152
126
tmp.2 <- tmp.1 / .pmclustEnv $ W.rowSums
153
127
.pmclustEnv $ Z.dmat <- as.ddmatrix(tmp.2 )
154
- # comm.print(head(tmp.2))
155
128
156
129
157
130
# ## For semi-supervised clustering.
@@ -160,18 +133,18 @@ update.expectation.dmat <- function(PARAM, update.logL = TRUE){
160
133
# }
161
134
162
135
# ## WCC: original
163
- # .pmclustEnv$Z.colSums <- as.vector(colSums(.pmclustEnv$Z.dmat))
136
+ .pmclustEnv $ Z.colSums <- as.vector(colSums(.pmclustEnv $ Z.dmat ))
164
137
# ## WCC: temp dmat
165
138
# tmp.1 <- colSums(.pmclustEnv$Z.dmat)
166
139
# tmp.2 <- as.vector(tmp.1)
167
140
# .pmclustEnv$Z.colSums <- tmp.2
168
141
# ## WCC: temp spmd
169
- tmp.1 <- as.matrix(.pmclustEnv $ Z.dmat )
170
- .pmclustEnv $ Z.colSums <- colSums(tmp.1 )
142
+ # tmp.1 <- as.matrix(.pmclustEnv$Z.dmat)
143
+ # .pmclustEnv$Z.colSums <- colSums(tmp.1)
171
144
172
145
if (update.logL ){
173
146
.pmclustEnv $ W.rowSums <- log(.pmclustEnv $ W.rowSums )
174
- if (tmp.flag ){
147
+ if (tmp.flag > 0 ){
175
148
.pmclustEnv $ W.rowSums [tmp.id ] <-
176
149
.pmclustEnv $ W.rowSums [tmp.id ] + tmp.scale
177
150
}
@@ -193,6 +166,18 @@ m.step.dmat <- function(PARAM){
193
166
p <- PARAM $ p
194
167
p.2 <- p * p
195
168
for (i.k in 1 : PARAM $ K ){
169
+
170
+ # ## Bug?
171
+ B <- X.dmat * as.vector(.pmclustEnv $ Z.dmat [, i.k ])
172
+ B <- as.matrix(B )
173
+ comm.print(head(B ))
174
+
175
+ tmp.1 <- as.matrix(X.dmat )
176
+ tmp.2 <- as.matrix(.pmclustEnv $ Z.dmat )
177
+ B <- tmp.1 * tmp.2 [, i.k ]
178
+ comm.print(head(B ))
179
+ comm.stop(" bug here" )
180
+
196
181
# ## MLE for MU
197
182
# ## WCC: original
198
183
# B <- colSums(X.dmat * as.vector(.pmclustEnv$Z.dmat[, i.k])) /
@@ -366,15 +351,15 @@ comm.print("em.onestep.dmat logL")
366
351
# ## Obtain classifications.
367
352
em.update.class.dmat <- function (){
368
353
# ## WCC: original
369
- # .pmclustEnv$CLASS.dmat <- apply(.pmclustEnv$Z.dmat, 1, which.max)
354
+ .pmclustEnv $ CLASS.dmat <- apply(.pmclustEnv $ Z.dmat , 1 , which.max )
370
355
# ## WCC: temp dmat
371
356
# tmp.1 <- apply(.pmclustEnv$Z.dmat, 1, which.max)
372
357
# .pmclustEnv$CLASS.dmat <- tmp.1
373
358
# ## WCC: temp spmd
374
- tmp.1 <- as.matrix(.pmclustEnv $ Z.dmat )
375
- tmp.2 <- matrix (apply(tmp.1 , 1 , which.max ), ncol = 1 )
376
- tmp.3 <- as.ddmatrix(tmp.2 )
377
- .pmclustEnv $ CLASS.dmat <- tmp.3
359
+ # tmp.1 <- as.matrix(.pmclustEnv$Z.dmat)
360
+ # tmp.2 <- matrix(apply(tmp.1, 1, which.max), ncol = 1)
361
+ # tmp.3 <- as.ddmatrix(tmp.2)
362
+ # .pmclustEnv$CLASS.dmat <- tmp.3
378
363
379
364
invisible ()
380
365
} # End of em.update.class.dmat().
0 commit comments