foscat 3.0.28__py3-none-any.whl → 3.0.30__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- foscat/FoCUS.py +88 -54
- foscat/backend.py +14 -2
- foscat/scat_cov1D.py +7 -7
- {foscat-3.0.28.dist-info → foscat-3.0.30.dist-info}/METADATA +1 -1
- {foscat-3.0.28.dist-info → foscat-3.0.30.dist-info}/RECORD +7 -7
- {foscat-3.0.28.dist-info → foscat-3.0.30.dist-info}/WHEEL +1 -1
- {foscat-3.0.28.dist-info → foscat-3.0.30.dist-info}/top_level.txt +0 -0
foscat/FoCUS.py
CHANGED
|
@@ -32,7 +32,7 @@ class FoCUS:
|
|
|
32
32
|
mpi_size=1,
|
|
33
33
|
mpi_rank=0):
|
|
34
34
|
|
|
35
|
-
self.__version__ = '3.0.
|
|
35
|
+
self.__version__ = '3.0.30'
|
|
36
36
|
# P00 coeff for normalization for scat_cov
|
|
37
37
|
self.TMPFILE_VERSION=TMPFILE_VERSION
|
|
38
38
|
self.P1_dic = None
|
|
@@ -140,6 +140,9 @@ class FoCUS:
|
|
|
140
140
|
self.ww_Imag = {}
|
|
141
141
|
self.ww_CNN_Transpose = {}
|
|
142
142
|
self.ww_CNN = {}
|
|
143
|
+
self.X_CNN = {}
|
|
144
|
+
self.Y_CNN = {}
|
|
145
|
+
self.Z_CNN = {}
|
|
143
146
|
|
|
144
147
|
wwc=np.zeros([KERNELSZ**2,l_NORIENT]).astype(all_type)
|
|
145
148
|
wws=np.zeros([KERNELSZ**2,l_NORIENT]).astype(all_type)
|
|
@@ -288,6 +291,9 @@ class FoCUS:
|
|
|
288
291
|
self.remove_border[lout]=None
|
|
289
292
|
self.ww_CNN_Transpose[lout]=None
|
|
290
293
|
self.ww_CNN[lout]=None
|
|
294
|
+
self.X_CNN[lout]=None
|
|
295
|
+
self.Y_CNN[lout]=None
|
|
296
|
+
self.Z_CNN[lout]=None
|
|
291
297
|
|
|
292
298
|
self.loss={}
|
|
293
299
|
|
|
@@ -317,72 +323,99 @@ class FoCUS:
|
|
|
317
323
|
# ---------------------------------------------−---------
|
|
318
324
|
# make the CNN working : index reporjection of the kernel on healpix
|
|
319
325
|
|
|
326
|
+
def calc_indices_convol(self,nside,kernel):
|
|
327
|
+
to,po=hp.pix2ang(nside,np.arange(12*nside*nside),nest=True)
|
|
328
|
+
x,y,z=hp.pix2vec(nside,np.arange(12*nside*nside),nest=True)
|
|
329
|
+
|
|
330
|
+
idx=np.argsort((x-1.0)**2+y**2+z**2)[0:kernel]
|
|
331
|
+
im=np.ones([12*nside**2])*-1
|
|
332
|
+
im[idx]=np.arange(len(idx))
|
|
333
|
+
xc,yc,zc=hp.pix2vec(nside,idx,nest=True)
|
|
334
|
+
|
|
335
|
+
vec=np.concatenate([np.expand_dims(x,-1),
|
|
336
|
+
np.expand_dims(y,-1),
|
|
337
|
+
np.expand_dims(z,-1)],1)
|
|
338
|
+
|
|
339
|
+
tc,pc=hp.pix2ang(nside,idx,nest=True)
|
|
340
|
+
|
|
341
|
+
indices=np.zeros([12*nside**2*250,2],dtype='int')
|
|
342
|
+
weights=np.zeros([12*nside**2*250])
|
|
343
|
+
nn=0
|
|
344
|
+
for k in range(0,12*nside*nside):
|
|
345
|
+
if k%(nside*nside)==nside*nside-1:
|
|
346
|
+
print('Nside=%d KenelSZ=%d %.2f%%'%(nside,kernel,k/(12*nside**2)*100))
|
|
347
|
+
idx2=hp.query_disc(nside, vec[k], np.pi/nside, inclusive=True,nest=True)
|
|
348
|
+
t2,p2=hp.pix2ang(nside,idx2,nest=True)
|
|
349
|
+
rot=[po[k]/np.pi*180.0,90+(-to[k])/np.pi*180.0]
|
|
350
|
+
r=hp.Rotator(rot=rot)
|
|
351
|
+
t2,p2=r(t2,p2)
|
|
352
|
+
idx3=hp.ang2pix(nside,t2,p2,nest=True)
|
|
353
|
+
ii,ww=hp.get_interp_weights(nside,t2,p2,nest=True)
|
|
354
|
+
|
|
355
|
+
ii=im[ii]
|
|
356
|
+
|
|
357
|
+
for l in range(4):
|
|
358
|
+
iii=np.where(ii[l]!=-1)[0]
|
|
359
|
+
if len(iii)>0:
|
|
360
|
+
indices[nn:nn+len(iii),1]=idx2[iii]
|
|
361
|
+
indices[nn:nn+len(iii),0]=k*kernel+ii[l,iii]
|
|
362
|
+
weights[nn:nn+len(iii)]=ww[l,iii]
|
|
363
|
+
nn+=len(iii)
|
|
364
|
+
|
|
365
|
+
indices=indices[0:nn]
|
|
366
|
+
weights=weights[0:nn]
|
|
367
|
+
print('Nside=%d KenelSZ=%d Total Number of value=%d Ratio of the matrix %.2g%%'%(nside,
|
|
368
|
+
kernel,
|
|
369
|
+
nn,
|
|
370
|
+
100*nn/(kernel*12*nside**2*12*nside**2)))
|
|
371
|
+
return indices,weights,xc,yc,zc
|
|
372
|
+
|
|
320
373
|
def init_CNN_index(self,nside,transpose=False):
|
|
321
374
|
l_kernel=int(self.KERNELSZ*self.KERNELSZ)
|
|
322
|
-
weights=self.backend.bk_cast(np.ones([12*nside*nside*l_kernel],dtype='float'))
|
|
323
375
|
try:
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
376
|
+
indices=np.load('%s/FOSCAT_%s_I%d_%d_%d_CNNV2.npy'%(self.TEMPLATE_PATH,TMPFILE_VERSION,l_kernel,self.NORIENT,nside))
|
|
377
|
+
weights=np.load('%s/FOSCAT_%s_W%d_%d_%d_CNNV2.npy'%(self.TEMPLATE_PATH,TMPFILE_VERSION,l_kernel,self.NORIENT,nside))
|
|
378
|
+
xc=np.load('%s/FOSCAT_%s_X%d_%d_%d_CNNV2.npy'%(self.TEMPLATE_PATH,TMPFILE_VERSION,l_kernel,self.NORIENT,nside))
|
|
379
|
+
yc=np.load('%s/FOSCAT_%s_Y%d_%d_%d_CNNV2.npy'%(self.TEMPLATE_PATH,TMPFILE_VERSION,l_kernel,self.NORIENT,nside))
|
|
380
|
+
zc=np.load('%s/FOSCAT_%s_Z%d_%d_%d_CNNV2.npy'%(self.TEMPLATE_PATH,TMPFILE_VERSION,l_kernel,self.NORIENT,nside))
|
|
328
381
|
except:
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
indices[k,:,0]=k*l_kernel+np.arange(l_kernel).astype('int')
|
|
347
|
-
indices[k,:,1]=hp.ang2pix(nside,ty,tx,nest=True)
|
|
348
|
-
if transpose:
|
|
349
|
-
indices[:,:,1]=indices[:,:,1]//4
|
|
350
|
-
np.save('%s/FOSCAT_%s_W%d_%d_%d_CNN_Transpose.npy'%(self.TEMPLATE_PATH,TMPFILE_VERSION,l_kernel,self.NORIENT,nside),indices)
|
|
351
|
-
if not self.silent:
|
|
352
|
-
print('Write %s/FOSCAT_%s_W%d_%d_%d_CNN_Transpose.npy'%(self.TEMPLATE_PATH,TMPFILE_VERSION,l_kernel,self.NORIENT,nside))
|
|
353
|
-
else:
|
|
354
|
-
np.save('%s/FOSCAT_%s_W%d_%d_%d_CNNnpy'%(self.TEMPLATE_PATH,TMPFILE_VERSION,l_kernel,self.NORIENT,nside),indices)
|
|
355
|
-
if not self.silent:
|
|
356
|
-
print('Write %s/FOSCAT_%s_W%d_%d_%d_CNN.npy'%(self.TEMPLATE_PATH,TMPFILE_VERSION,l_kernel,self.NORIENT,nside))
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
if transpose:
|
|
360
|
-
self.ww_CNN_Transpose[nside]=self.backend.bk_SparseTensor(indices.reshape(12*nside*nside*l_kernel,2),
|
|
361
|
-
weights,[12*nside*nside*l_kernel,
|
|
362
|
-
3*nside*nside])
|
|
363
|
-
else:
|
|
364
|
-
self.ww_CNN[nside]=self.backend.bk_SparseTensor(indices.reshape(12*nside*nside*l_kernel,2),
|
|
365
|
-
weights,[12*nside*nside*l_kernel,
|
|
366
|
-
12*nside*nside])
|
|
382
|
+
indices,weights,xc,yc,zc=self.calc_indices_convol(nside,l_kernel)
|
|
383
|
+
np.save('%s/FOSCAT_%s_I%d_%d_%d_CNNV2.npy'%(self.TEMPLATE_PATH,TMPFILE_VERSION,l_kernel,self.NORIENT,nside),indices)
|
|
384
|
+
np.save('%s/FOSCAT_%s_W%d_%d_%d_CNNV2.npy'%(self.TEMPLATE_PATH,TMPFILE_VERSION,l_kernel,self.NORIENT,nside),weights)
|
|
385
|
+
np.save('%s/FOSCAT_%s_X%d_%d_%d_CNNV2.npy'%(self.TEMPLATE_PATH,TMPFILE_VERSION,l_kernel,self.NORIENT,nside),xc)
|
|
386
|
+
np.save('%s/FOSCAT_%s_Y%d_%d_%d_CNNV2.npy'%(self.TEMPLATE_PATH,TMPFILE_VERSION,l_kernel,self.NORIENT,nside),yc)
|
|
387
|
+
np.save('%s/FOSCAT_%s_Z%d_%d_%d_CNNV2.npy'%(self.TEMPLATE_PATH,TMPFILE_VERSION,l_kernel,self.NORIENT,nside),zc)
|
|
388
|
+
if not self.silent:
|
|
389
|
+
print('Write %s/FOSCAT_%s_W%d_%d_%d_CNNV2.npy'%(self.TEMPLATE_PATH,TMPFILE_VERSION,l_kernel,self.NORIENT,nside))
|
|
390
|
+
|
|
391
|
+
self.X_CNN[nside]=xc
|
|
392
|
+
self.Y_CNN[nside]=yc
|
|
393
|
+
self.Z_CNN[nside]=zc
|
|
394
|
+
print(weights.min(),weights.max())
|
|
395
|
+
self.ww_CNN[nside]=self.backend.bk_SparseTensor(indices,
|
|
396
|
+
weights,[12*nside*nside*l_kernel,
|
|
397
|
+
12*nside*nside])
|
|
367
398
|
|
|
399
|
+
# ---------------------------------------------−---------
|
|
400
|
+
def healpix_layer_coord(self,im):
|
|
401
|
+
nside=int(np.sqrt(im.shape[0]//12))
|
|
402
|
+
l_kernel=self.KERNELSZ*self.KERNELSZ
|
|
403
|
+
if self.ww_CNN[nside] is None:
|
|
404
|
+
self.init_CNN_index(nside)
|
|
405
|
+
return self.X_CNN[nside],self.Y_CNN[nside],self.Z_CNN[nside]
|
|
406
|
+
|
|
368
407
|
# ---------------------------------------------−---------
|
|
369
408
|
def healpix_layer_transpose(self,im,ww):
|
|
370
|
-
nside=
|
|
409
|
+
nside=int(np.sqrt(im.shape[0]//12))
|
|
371
410
|
l_kernel=self.KERNELSZ*self.KERNELSZ
|
|
372
411
|
|
|
373
412
|
if im.shape[1]!=ww.shape[1]:
|
|
374
413
|
if not self.silent:
|
|
375
414
|
print('Weights channels should be equal to the input image channels')
|
|
376
415
|
return -1
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
tmp=self.backend.bk_sparse_dense_matmul(self.ww_CNN_Transpose[nside],im)
|
|
382
|
-
|
|
383
|
-
density=self.backend.bk_reshape(tmp,[12*nside*nside,l_kernel*im.shape[1]])
|
|
384
|
-
|
|
385
|
-
return self.backend.bk_matmul(density,self.backend.bk_reshape(ww,[l_kernel*im.shape[1],ww.shape[2]]))
|
|
416
|
+
tmp=self.healpix_layer(im,ww)
|
|
417
|
+
|
|
418
|
+
return self.up_grade(tmp,2*nside)
|
|
386
419
|
|
|
387
420
|
# ---------------------------------------------−---------
|
|
388
421
|
# ---------------------------------------------−---------
|
|
@@ -399,6 +432,7 @@ class FoCUS:
|
|
|
399
432
|
self.init_CNN_index(nside,transpose=False)
|
|
400
433
|
|
|
401
434
|
tmp=self.backend.bk_sparse_dense_matmul(self.ww_CNN[nside],im)
|
|
435
|
+
print(tmp.shape)
|
|
402
436
|
density=self.backend.bk_reshape(tmp,[12*nside*nside,l_kernel*im.shape[1]])
|
|
403
437
|
|
|
404
438
|
return self.backend.bk_matmul(density,self.backend.bk_reshape(ww,[l_kernel*im.shape[1],ww.shape[2]]))
|
foscat/backend.py
CHANGED
|
@@ -684,9 +684,21 @@ class foscat_backend:
|
|
|
684
684
|
|
|
685
685
|
if self.BACKEND==self.TENSORFLOW or self.BACKEND==self.TORCH:
|
|
686
686
|
if axis is None:
|
|
687
|
-
|
|
687
|
+
if data[0].dtype==self.all_cbk_type:
|
|
688
|
+
ndata=len(data)
|
|
689
|
+
xr=self.backend.concat([self.bk_real(data[k]) for k in range(ndata)])
|
|
690
|
+
xi=self.backend.concat([self.bk_imag(data[k]) for k in range(ndata)])
|
|
691
|
+
return self.backend.complex(xr,xi)
|
|
692
|
+
else:
|
|
693
|
+
return(self.backend.concat(data))
|
|
688
694
|
else:
|
|
689
|
-
|
|
695
|
+
if data[0].dtype==self.all_cbk_type:
|
|
696
|
+
ndata=len(data)
|
|
697
|
+
xr=self.backend.concat([self.bk_real(data[k]) for k in range(ndata)],axis=axis)
|
|
698
|
+
xi=self.backend.concat([self.bk_imag(data[k]) for k in range(ndata)],axis=axis)
|
|
699
|
+
return self.backend.complex(xr,xi)
|
|
700
|
+
else:
|
|
701
|
+
return(self.backend.concat(data,axis=axis))
|
|
690
702
|
else:
|
|
691
703
|
if axis is None:
|
|
692
704
|
return np.concatenate(data,axis=0)
|
foscat/scat_cov1D.py
CHANGED
|
@@ -794,19 +794,19 @@ class scat_cov1D:
|
|
|
794
794
|
|
|
795
795
|
# ---------------------------------------------−---------
|
|
796
796
|
def flatten(self):
|
|
797
|
-
tmp=[self.build_flat(self.P00)]
|
|
797
|
+
tmp=[self.backend.bk_real(self.build_flat(self.P00))]
|
|
798
798
|
|
|
799
799
|
if self.S1 is not None:
|
|
800
|
-
tmp=tmp+[self.build_flat(self.S1)]
|
|
800
|
+
tmp=tmp+[self.backend.bk_real(self.build_flat(self.S1))]
|
|
801
801
|
|
|
802
|
-
tmp=tmp+[self.build_flat(self.C01)]
|
|
802
|
+
tmp=tmp+[self.backend.bk_real(self.build_flat(self.C01))]
|
|
803
803
|
|
|
804
804
|
if self.C10 is not None:
|
|
805
|
-
tmp=tmp+[self.build_flat(self.C10)]
|
|
805
|
+
tmp=tmp+[self.backend.bk_real(self.build_flat(self.C10))]
|
|
806
806
|
|
|
807
|
-
tmp=tmp+[self.build_flat(self.C11)]
|
|
808
|
-
|
|
809
|
-
if isinstance(self.
|
|
807
|
+
tmp=tmp+[self.backend.bk_real(self.build_flat(self.C11))]
|
|
808
|
+
|
|
809
|
+
if isinstance(self.C11,np.ndarray):
|
|
810
810
|
return np.concatenate(tmp,1)
|
|
811
811
|
else:
|
|
812
812
|
return self.backend.bk_concat(tmp,1)
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
foscat/CNN.py,sha256=BVf-uD5K-_Tb_Q9xdckLF7PZq-Wcs6qexP9J2K8KCq0,4231
|
|
2
2
|
foscat/CircSpline.py,sha256=610sgsWeZzRXYh7gYEqUmGQVrXoHSaFGKjH5mCdh4jU,1684
|
|
3
|
-
foscat/FoCUS.py,sha256=
|
|
3
|
+
foscat/FoCUS.py,sha256=A_rppGtJOcxZ96sNa6cyWpFWjNDFkVrTYDcI0Dxt_d0,68791
|
|
4
4
|
foscat/GCNN.py,sha256=TEW81DGRM4WL7RzH50VKQ-_oHbl5i3iQKuhdkkgKEO8,3831
|
|
5
5
|
foscat/GetGPUinfo.py,sha256=6sJWKO_OeiA0SoGQQdCT_h3D8rZtrv_4hpBc8H3nZls,731
|
|
6
6
|
foscat/Softmax.py,sha256=UDc8Kbl0qWfH1bqDDwfLnkxhON7p93ueZ-Qg2oY4Ke4,2874
|
|
7
7
|
foscat/Spline1D.py,sha256=9oeM8SSHjpfUE5z72YxGt1RVt22vJYM1zhHbNBW8phw,1232
|
|
8
8
|
foscat/Synthesis.py,sha256=oYtHFVTqalVzBQs5okJBnP4pzXFhBMds-pytdEm4Bqs,12611
|
|
9
9
|
foscat/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
10
|
-
foscat/backend.py,sha256=
|
|
10
|
+
foscat/backend.py,sha256=43Q-OtWlB-S14LH5IiUTxg9j_1WvOBZea3DkuEET7aY,31066
|
|
11
11
|
foscat/backend_tens.py,sha256=zEFZ71j0nMNP9_91tz21ZVBTayr75l-sfONOLkJ8DyI,1432
|
|
12
12
|
foscat/loss_backend_tens.py,sha256=WbGC4vy1pBg_bxUXnlCRiXX9WszN6MaUWUc_lUvZNvQ,1667
|
|
13
13
|
foscat/loss_backend_torch.py,sha256=Fj_W3VwGgeD79eQ4jOxOmhZ548UKDRUb3JjUo2-gSWM,1755
|
|
@@ -15,11 +15,11 @@ foscat/scat.py,sha256=Ht_xyo7XKJJrUIbQIeucjhIrJo4RGrE63EyhTH8IYig,60061
|
|
|
15
15
|
foscat/scat1D.py,sha256=fiGxyWSASGik9BimBKz_Z07jSPywJckLXaHDB_v5HHQ,45847
|
|
16
16
|
foscat/scat2D.py,sha256=Xtisjc5KsbLQAlbn71P0Xg1UIu3r1gUKXoYG2vIMK1M,523
|
|
17
17
|
foscat/scat_cov.py,sha256=uST8ij9o1sJh2AKhFffxMUr0WFQX9vz3VK4LGfiSOlE,110188
|
|
18
|
-
foscat/scat_cov1D.py,sha256=
|
|
18
|
+
foscat/scat_cov1D.py,sha256=I2GgEo7ASkb7JW443SAp25tmI2Rvuy4xggW8WMHI-L4,60591
|
|
19
19
|
foscat/scat_cov2D.py,sha256=8_XvC-lOEVUWP9vT3Wx10G_ATeVeh0SdrSWuBV7Xf5k,536
|
|
20
20
|
foscat/scat_cov_map.py,sha256=ocU2xd41GtJhiU9S3dEv38KfPCvz0tJKY2f8lPxpm5c,2729
|
|
21
21
|
foscat/scat_cov_map2D.py,sha256=t4llIt7DVIyU1b_u-dJSX4lBr2FhDict8RnNnHpRvHM,2754
|
|
22
|
-
foscat-3.0.
|
|
23
|
-
foscat-3.0.
|
|
24
|
-
foscat-3.0.
|
|
25
|
-
foscat-3.0.
|
|
22
|
+
foscat-3.0.30.dist-info/METADATA,sha256=5w2eBts5NhenffKMyMXGVM7_G5nzt62aimtutSjsNjM,1013
|
|
23
|
+
foscat-3.0.30.dist-info/WHEEL,sha256=oiQVh_5PnQM0E3gPdiz09WCNmwiHDMaGer_elqB3coM,92
|
|
24
|
+
foscat-3.0.30.dist-info/top_level.txt,sha256=AGySXBBAlJgb8Tj8af6m_F-aiNg2zNTcybCUPVOKjAg,7
|
|
25
|
+
foscat-3.0.30.dist-info/RECORD,,
|
|
File without changes
|