# NOT RUN {
##Basic Examples
#build list
K<-1
N<-4*K
M<-9
d<-2
data.list<-vector("list",N)
###image_mat
for (i in 1:K){
U<-runif(M)
U<-U/sum(U)
data.list[[i]]<-matrix(U,sqrt(M))
}
#wpp
for (i in (K+1):(2*K)){
U<-runif(M)
U<-U/sum(U)
pos<-matrix(runif(d*M),M,d)
data.list[[i]]<-transport::wpp(pos,U)
}
#point pattern
for (i in (2*K+1):(3*K)){
pos<-matrix(runif(d*M),M,d)
data.list[[i]]<-list(positions=pos)
}
#weighted point pattern
for (i in (3*K+1):(4*K)){
U<-runif(M)
U<-U/sum(U)
pos<-matrix(runif(d*M),M,d)
data.list[[i]]<-list(positions=pos,weights=U)
}
system.time(res1<-wasserstein_bary(data.list,return_type = "wpp",method="lp"))
frechet_func(res1,data.list)
# }
# NOT RUN {
system.time(res2<-wasserstein_bary(data.list,return_type = "wpp",method="alternating",
supp.size = M*N-N+1,warmstartlength = 3,pos_maxIter = 100,weights_maxIter = 100))
frechet_func(res2,data.list)
# }
# NOT RUN {
system.time(res3<-wasserstein_bary(data.list,return_type = "wpp",
method="fixed_support",warmstartlength = 3,weights_maxIter = 100,output.supp = res1$coordinates))
frechet_func(res3,data.list)
system.time(res4<-wasserstein_bary(data.list,return_type = "wpp",
method="sampling",sample.size=8,warmstartlength = 3,pos_maxIter = 100))
frechet_func(res4,data.list)
# }
# NOT RUN {
##Visual Examples
###ellipses
set.seed(420)
N<-20
supp.size<-10^2
L<-sqrt(supp.size)
d<-2
data.list<-vector("list",N)
image.list<-vector("list",N)
for (i in 1:N){
t.vec<-seq(0,2*pi,length.out=supp.size)
pos<-cbind(cos(t.vec)*runif(1,0.2,1),sin(t.vec)*runif(1,0.2,1))
theta<-runif(1,0,2*pi)
rotation<-matrix(c(cos(theta),sin(theta),-1*sin(theta),cos(theta)),2,2)
pos<-pos%*%rotation
pos<-pos+1
pos<-pos/2
W<-rep(1/supp.size,supp.size)
data.list[[i]]<-transport::wpp(pos,W)
I<-bin2d(data.list[[i]]$coordinates,data.list[[i]]$mass,c(L*2,L*2))
I<-smear(I,1,1)
I<-I/sum(I)
image.list[[i]]<-I
}
system.time(res1<-wasserstein_bary(data.list,return_type = "wpp",method="alternating"
,supp.size = supp.size,warmstartlength = 0,pos_maxIter = 10,weights_maxIter = 10,maxIter = 10))
plot(res1)
system.time(res2<-wasserstein_bary(data.list,return_type = "wpp",
method="fixed_support",warmstartlength = 0,weights_maxIter = 50,maxIter=1,
output.supp = grid_positions(2*L,2*L)))
plot(res2)
system.time(res3<-wasserstein_bary(data.list,return_type = "wpp",method="sampling",
sample.size=400,warmstartlength = 0,pos_maxIter = 100,stepsize = 1,maxIter=1))
plot(res3)
system.time(res4<-wasserstein_bary(image.list,return_type = "wpp",
method="regular",stepsize = 1,weights_maxIter = 50))
plot(res4)
system.time(res5<-wasserstein_bary(image.list,return_type = "wpp",
method="fixed_support",shared=TRUE,warmstartlength = 0,weights_maxIter = 50,maxIter=1,
output.supp = grid_positions(2*L,2*L)))
plot(res5)
# }
Run the code above in your browser using DataLab