@@ -20,13 +20,13 @@ 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 , FUN = " + " )
24
24
# ## WCC: temp dmat
25
- # tmp.1 <- sweep(.pmclustEnv$W.dmat, 2, PARAM$log.ETA)
25
+ # tmp.1 <- sweep(.pmclustEnv$W.dmat, 2, PARAM$log.ETA, FUN = "+" )
26
26
# .pmclustEnv$U.dmat <- tmp.1
27
27
# ## WCC: temp spmd
28
28
# tmp.1 <- as.matrix(.pmclustEnv$W.dmat)
29
- # tmp.2 <- sweep(tmp.1, 2, PARAM$log.ETA)
29
+ # tmp.2 <- sweep(tmp.1, 2, PARAM$log.ETA, FUN = "+" )
30
30
# .pmclustEnv$U.dmat <- as.ddmatrix(tmp.2)
31
31
32
32
# ## WCC: original
@@ -60,53 +60,53 @@ update.expectation.dmat <- function(PARAM, update.logL = TRUE){
60
60
tmp.flag <- sum(tmp.id )
61
61
if (tmp.flag > 0 ){
62
62
# ## WCC: original
63
- tmp.dmat <- .pmclustEnv $ U.dmat [tmp.id ,]
63
+ # tmp.dmat <- .pmclustEnv$U.dmat[tmp.id,]
64
64
# ## WCC: temp spmd
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)
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 )
71
71
72
72
if (tmp.flag == 1 ){
73
73
# ## WCC: original
74
- tmp.scale <- max(tmp.dmat ) - .pmclustEnv $ CONTROL $ exp.max / K
75
- tmp.scale <- as.vector(tmp.scale )
74
+ # tmp.scale <- max(tmp.dmat) - .pmclustEnv$CONTROL$exp.max / K
75
+ # tmp.scale <- as.vector(tmp.scale)
76
76
# ## WCC: temp dmat
77
77
# tmp.1 <- max(tmp.dmat)
78
78
# tmp.2 <- tmp.1 - .pmclustEnv$CONTROL$exp.max / K
79
79
# tmp.3 <- as.vector(tmp.2)
80
80
# tmp.scale <- tmp.3
81
81
# ## WCC: temp spmd
82
- # tmp.1 <- as.vector(tmp.dmat)
83
- # 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
84
84
} else {
85
85
# ## WCC: original
86
- tmp.scale <- apply(tmp.dmat , 1 , max ) - .pmclustEnv $ CONTROL $ exp.max / K
87
- 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)
88
88
# ## WCC: temp dmat
89
89
# tmp.1 <- apply(tmp.dmat, 1, max)
90
90
# tmp.2 <- tmp.1 - .pmclustEnv$CONTROL$exp.max / K
91
91
# tmp.3 <- as.vector(tmp.2)
92
92
# tmp.scale <- tmp.3
93
93
# ## WCC: temp spmd
94
- # tmp.1 <- as.matrix(tmp.dmat)
95
- # tmp.scale <- unlist(apply(tmp.1, 1, max)) -
96
- # .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
97
97
}
98
98
# ## WCC: original
99
- .pmclustEnv $ Z.dmat [tmp.id ,] <- exp(tmp.dmat - tmp.scale )
99
+ # .pmclustEnv$Z.dmat[tmp.id,] <- exp(tmp.dmat - tmp.scale)
100
100
# ## WCC: temp dmat
101
101
# tmp.1 <- exp(tmp.dmat - tmp.scale)
102
102
# .pmclustEnv$Z.dmat[tmp.id,] <- tmp.1
103
103
# ## WCC: temp spmd
104
- # tmp.1 <- as.matrix(tmp.dmat)
105
- # tmp.1 <- exp(tmp.1 - tmp.scale)
106
- # tmp.id <- which(tmp.id)
107
- # tmp.2 <- as.matrix(.pmclustEnv$Z.dmat)
108
- # tmp.2[tmp.id,] <- tmp.1
109
- # .pmclustEnv$Z.dmat <- as.ddmatrix(Z.dmat )
104
+ tmp.1 <- as.matrix(tmp.dmat )
105
+ tmp.1 <- exp(tmp.1 - tmp.scale )
106
+ tmp.id <- which(tmp.id )
107
+ tmp.2 <- as.matrix(.pmclustEnv $ Z.dmat )
108
+ tmp.2 [tmp.id ,] <- tmp.1
109
+ .pmclustEnv $ Z.dmat <- as.ddmatrix(tmp.2 )
110
110
}
111
111
112
112
# ## WCC: original
@@ -133,14 +133,14 @@ update.expectation.dmat <- function(PARAM, update.logL = TRUE){
133
133
# }
134
134
135
135
# ## WCC: original
136
- .pmclustEnv $ Z.colSums <- as.vector(colSums(.pmclustEnv $ Z.dmat ))
136
+ # .pmclustEnv$Z.colSums <- as.vector(colSums(.pmclustEnv$Z.dmat))
137
137
# ## WCC: temp dmat
138
138
# tmp.1 <- colSums(.pmclustEnv$Z.dmat)
139
139
# tmp.2 <- as.vector(tmp.1)
140
140
# .pmclustEnv$Z.colSums <- tmp.2
141
141
# ## WCC: temp spmd
142
- # tmp.1 <- as.matrix(.pmclustEnv$Z.dmat)
143
- # .pmclustEnv$Z.colSums <- colSums(tmp.1)
142
+ tmp.1 <- as.matrix(.pmclustEnv $ Z.dmat )
143
+ .pmclustEnv $ Z.colSums <- colSums(tmp.1 )
144
144
145
145
if (update.logL ){
146
146
.pmclustEnv $ W.rowSums <- log(.pmclustEnv $ W.rowSums )
@@ -149,6 +149,7 @@ update.expectation.dmat <- function(PARAM, update.logL = TRUE){
149
149
.pmclustEnv $ W.rowSums [tmp.id ] + tmp.scale
150
150
}
151
151
}
152
+
152
153
invisible ()
153
154
} # End of update.expectation.dmat().
154
155
@@ -166,18 +167,6 @@ m.step.dmat <- function(PARAM){
166
167
p <- PARAM $ p
167
168
p.2 <- p * p
168
169
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
-
181
170
# ## MLE for MU
182
171
# ## WCC: original
183
172
# B <- colSums(X.dmat * as.vector(.pmclustEnv$Z.dmat[, i.k])) /
@@ -317,16 +306,13 @@ em.onestep.dmat <- function(PARAM){
317
306
# Rprof(filename = "em.Rprof", append = TRUE)
318
307
# }
319
308
320
- comm.print(" em.onestep.dmat m" )
321
309
PARAM <- m.step.dmat(PARAM )
322
- comm.print(" em.onestep.dmat e" )
323
310
e.step.dmat(PARAM )
324
311
325
312
# if(.pmclustEnv$COMM.RANK == 0){
326
313
# Rprof(NULL)
327
314
# }
328
315
329
- comm.print(" em.onestep.dmat logL" )
330
316
PARAM $ logL <- logL.step.dmat()
331
317
332
318
if (.pmclustEnv $ CONTROL $ debug > 0 ){
0 commit comments