foscat 3.0.23__py3-none-any.whl → 3.0.25__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 CHANGED
@@ -32,7 +32,7 @@ class FoCUS:
32
32
  mpi_size=1,
33
33
  mpi_rank=0):
34
34
 
35
- self.__version__ = '3.0.23'
35
+ self.__version__ = '3.0.25'
36
36
  # P00 coeff for normalization for scat_cov
37
37
  self.TMPFILE_VERSION=TMPFILE_VERSION
38
38
  self.P1_dic = None
foscat/Softmax.py CHANGED
@@ -16,7 +16,7 @@ class SoftmaxClassifier:
16
16
  Nhidden (int, optional): Number of neurons in the hidden layer. Defaults to 10.
17
17
  """
18
18
 
19
- def __init__(self, Nval, Nclass, Nhidden=10):
19
+ def __init__(self, Nval, Nclass, Nhidden=10,Nlevel=1):
20
20
  """
21
21
  Initializes the SoftmaxClassifier with a specified number of input features, classes, and hidden neurons.
22
22
 
@@ -28,11 +28,15 @@ class SoftmaxClassifier:
28
28
  Nhidden (int): Number of neurons in the hidden layer.
29
29
  """
30
30
  # Create the model
31
- self.model = Sequential([
32
- Dense(units=Nhidden, activation='relu', input_shape=(Nval,)), # A hidden layer with Nhidden neurons
33
- Dense(units=Nclass), # The output layer with Nclass neurons (for Nclass classes)
34
- Softmax() # Softmax activation for classification
35
- ])
31
+ TheModel=[Dense(units=Nhidden, activation='relu', input_shape=(Nval,))]
32
+
33
+ for k in range(1,Nlevel):
34
+ TheModel=TheModel+[Dense(units=Nhidden, activation='relu', input_shape=(Nhidden,))]
35
+
36
+ TheModel=TheModel+[Dense(units=Nclass), # The output layer with Nclass neurons (for Nclass classes)
37
+ Softmax() # Softmax activation for classification
38
+ ]
39
+ self.model = Sequential(TheModel)
36
40
 
37
41
  # Model compilation
38
42
  self.model.compile(
foscat/scat_cov.py CHANGED
@@ -34,6 +34,9 @@ class scat_cov:
34
34
  self.idx2 = None
35
35
 
36
36
  def numpy(self):
37
+ if self.BACKEND=='numpy':
38
+ return self
39
+
37
40
  if self.S1 is None:
38
41
  s1 = None
39
42
  else:
@@ -688,11 +691,18 @@ class scat_cov:
688
691
  return scat_cov(self.P00,self.C01,self.C11,s1=self.S1,c10=self.C10,backend=self.backend)
689
692
 
690
693
  if self.S1 is not None:
691
- s1=self.S1.numpy()
694
+ if self.BACKEND=='numpy':
695
+ s1=self.S1
696
+ else:
697
+ s1=self.S1.numpy()
692
698
  else:
693
699
  s1=self.S1
694
700
 
695
- p0=self.P00.numpy()
701
+ if self.BACKEND=='numpy':
702
+ p0=self.P00
703
+ else:
704
+ p0=self.P00.numpy()
705
+
696
706
  for k in range(nscale):
697
707
  if constant:
698
708
  if self.S1 is not None:
@@ -706,10 +716,16 @@ class scat_cov:
706
716
  j1,j2=self.get_j_idx()
707
717
 
708
718
  if self.C10 is not None:
709
- c10=self.C10.numpy()
719
+ if self.BACKEND=='numpy':
720
+ c10=self.C10
721
+ else:
722
+ c10=self.C10.numpy()
710
723
  else:
711
724
  c10=self.C10
712
- c01=self.C01.numpy()
725
+ if self.BACKEND=='numpy':
726
+ c01=self.C01
727
+ else:
728
+ c01=self.C01.numpy()
713
729
 
714
730
  for k in range(nscale):
715
731
 
@@ -724,8 +740,12 @@ class scat_cov:
724
740
  c10[:,:,i0]=np.exp(2*np.log(c10[:,:,i1])-np.log(c10[:,:,i2]))
725
741
  c01[:,:,i0]=np.exp(2*np.log(c01[:,:,i1])-np.log(c01[:,:,i2]))
726
742
 
727
-
728
- c11=self.C11.numpy()
743
+
744
+ if self.BACKEND=='numpy':
745
+ c11=self.C11
746
+ else:
747
+ c11=self.C11.numpy()
748
+
729
749
  j1,j2,j3=self.get_jc11_idx()
730
750
 
731
751
  for k in range(nscale):
@@ -1329,14 +1349,20 @@ class scat_cov:
1329
1349
 
1330
1350
  inscale=self.P00.shape[2]
1331
1351
  p00=np.zeros([self.P00.shape[0],self.P00.shape[1],nscale,self.P00.shape[3]],dtype='complex')
1332
- p00[:,:,noff:,:]=self.P00.numpy()
1352
+ if self.BACKEND=='numpy':
1353
+ p00[:,:,noff:,:]=self.P00
1354
+ else:
1355
+ p00[:,:,noff:,:]=self.P00.numpy()
1333
1356
  for i in range(self.P00.shape[0]):
1334
1357
  for j in range(self.P00.shape[1]):
1335
1358
  for k in range(self.P00.shape[3]):
1336
1359
  p00[i,j,0:noff,k]=self.add_data_from_log_slope(p00[i,j,noff:,k],noff,ds=ds)
1337
1360
 
1338
1361
  s1=np.zeros([self.S1.shape[0],self.S1.shape[1],nscale,self.S1.shape[3]])
1339
- s1[:,:,noff:,:]=self.S1.numpy()
1362
+ if self.BACKEND=='numpy':
1363
+ s1[:,:,noff:,:]=self.S1
1364
+ else:
1365
+ s1[:,:,noff:,:]=self.S1.numpy()
1340
1366
  for i in range(self.S1.shape[0]):
1341
1367
  for j in range(self.S1.shape[1]):
1342
1368
  for k in range(self.S1.shape[3]):
@@ -1373,8 +1399,12 @@ class scat_cov:
1373
1399
  for l in range(self.C01.shape[4]):
1374
1400
  for ij in range(noff+1,nscale):
1375
1401
  idx=np.where(jo2==ij)[0]
1376
- c01[i,j,idx[noff:],k,l]=self.C01.numpy()[i,j,j2==ij-noff,k,l]
1377
- c01[i,j,idx[:noff],k,l]=self.add_data_from_slope(self.C01.numpy()[i,j,j2==ij-noff,k,l],noff,ds=ds)
1402
+ if self.BACKEND=='numpy':
1403
+ c01[i,j,idx[noff:],k,l]=self.C01[i,j,j2==ij-noff,k,l]
1404
+ c01[i,j,idx[:noff],k,l]=self.add_data_from_slope(self.C01[i,j,j2==ij-noff,k,l],noff,ds=ds)
1405
+ else:
1406
+ c01[i,j,idx[noff:],k,l]=self.C01.numpy()[i,j,j2==ij-noff,k,l]
1407
+ c01[i,j,idx[:noff],k,l]=self.add_data_from_slope(self.C01.numpy()[i,j,j2==ij-noff,k,l],noff,ds=ds)
1378
1408
 
1379
1409
  for ij in range(nscale):
1380
1410
  idx=np.where(jo1==ij)[0]
@@ -1432,8 +1462,12 @@ class scat_cov:
1432
1462
  for k in range(self.C11.shape[3]):
1433
1463
  for l in range(self.C11.shape[4]):
1434
1464
  for m in range(self.C11.shape[5]):
1435
- c11[i,j,idx2[noff:],k,l,m]=self.C11.numpy()[i,j,idx,k,l,m]
1436
- c11[i,j,idx2[:noff],k,l,m]=self.add_data_from_log_slope(self.C11.numpy()[i,j,idx,k,l,m],noff,ds=ds)
1465
+ if self.BACKEND=='numpy':
1466
+ c11[i,j,idx2[noff:],k,l,m]=self.C11[i,j,idx,k,l,m]
1467
+ c11[i,j,idx2[:noff],k,l,m]=self.add_data_from_log_slope(self.C11[i,j,idx,k,l,m],noff,ds=ds)
1468
+ else:
1469
+ c11[i,j,idx2[noff:],k,l,m]=self.C11.numpy()[i,j,idx,k,l,m]
1470
+ c11[i,j,idx2[:noff],k,l,m]=self.add_data_from_log_slope(self.C11.numpy()[i,j,idx,k,l,m],noff,ds=ds)
1437
1471
 
1438
1472
  idx=np.where(abs(c11[0,0,:,0,0,0])==0)[0]
1439
1473
  for iii in idx:
@@ -1476,15 +1510,25 @@ class funct(FOC.FoCUS):
1476
1510
  S0=None
1477
1511
  for k in list_scat:
1478
1512
  tmp=list_scat[k]
1479
- nS0=np.expand_dims(tmp.S0.numpy(),0)
1480
- nP00=np.expand_dims(tmp.P00.numpy(),0)
1481
- nC01=np.expand_dims(tmp.C01.numpy(),0)
1482
- nC11=np.expand_dims(tmp.C11.numpy(),0)
1483
- if tmp.C10 is not None:
1484
- nC10=np.expand_dims(tmp.C10.numpy(),0)
1485
- if tmp.S1 is not None:
1486
- nS1=np.expand_dims(tmp.S1.numpy(),0)
1487
-
1513
+ if self.BACKEND=='numpy':
1514
+ nS0=np.expand_dims(tmp.S0,0)
1515
+ nP00=np.expand_dims(tmp.P00,0)
1516
+ nC01=np.expand_dims(tmp.C01,0)
1517
+ nC11=np.expand_dims(tmp.C11,0)
1518
+ if tmp.C10 is not None:
1519
+ nC10=np.expand_dims(tmp.C10,0)
1520
+ if tmp.S1 is not None:
1521
+ nS1=np.expand_dims(tmp.S1,0)
1522
+ else:
1523
+ nS0=np.expand_dims(tmp.S0.numpy(),0)
1524
+ nP00=np.expand_dims(tmp.P00.numpy(),0)
1525
+ nC01=np.expand_dims(tmp.C01.numpy(),0)
1526
+ nC11=np.expand_dims(tmp.C11.numpy(),0)
1527
+ if tmp.C10 is not None:
1528
+ nC10=np.expand_dims(tmp.C10.numpy(),0)
1529
+ if tmp.S1 is not None:
1530
+ nS1=np.expand_dims(tmp.S1.numpy(),0)
1531
+
1488
1532
  if S0 is None:
1489
1533
  S0=nS0
1490
1534
  P00=nP00
@@ -1560,7 +1604,12 @@ class funct(FOC.FoCUS):
1560
1604
  ll_nside=int(np.sqrt(tmp.shape[1]//12))
1561
1605
  cc=self.up_grade(cc,ll_nside)
1562
1606
  ss=self.up_grade(ss,ll_nside)
1563
- phase=np.fmod(np.arctan2(ss.numpy(),cc.numpy())+2*np.pi,2*np.pi)
1607
+
1608
+ if self.BACKEND=='numpy':
1609
+ phase=np.fmod(np.arctan2(ss,cc)+2*np.pi,2*np.pi)
1610
+ else:
1611
+ phase=np.fmod(np.arctan2(ss.numpy(),cc.numpy())+2*np.pi,2*np.pi)
1612
+
1564
1613
  iph=(4*phase/(2*np.pi)).astype('int')
1565
1614
  alpha=(4*phase/(2*np.pi)-iph)
1566
1615
  mat=np.zeros([sim.shape[1],4*4])
@@ -1590,7 +1639,10 @@ class funct(FOC.FoCUS):
1590
1639
  cc=self.up_grade(cc,ll_nside)
1591
1640
  ss=self.up_grade(ss,ll_nside)
1592
1641
 
1593
- phase=np.fmod(np.arctan2(ss.numpy(),cc.numpy())+2*np.pi,2*np.pi)
1642
+ if self.BACKEND=='numpy':
1643
+ phase=np.fmod(np.arctan2(ss,cc)+2*np.pi,2*np.pi)
1644
+ else:
1645
+ phase=np.fmod(np.arctan2(ss.numpy(),cc.numpy())+2*np.pi,2*np.pi)
1594
1646
  """
1595
1647
  for k in range(4):
1596
1648
  hp.mollview(np.fmod(phase+np.pi,2*np.pi),cmap='jet',nest=True,hold=False,sub=(2,2,1+k))
foscat/scat_cov1D.py CHANGED
@@ -375,14 +375,15 @@ class scat_cov1D:
375
375
  (self.C01 - other),
376
376
  c11,
377
377
  s1=s1, c10=c10,backend=self.backend)
378
- def domult(self,x,y):
378
+
379
+ def domult(self,x,y):
379
380
  try:
380
381
  return x*y
381
382
  except:
382
383
  if x.dtype==y.dtype:
383
384
  return x*y
384
385
  if self.backend.bk_is_complex(x):
385
-
386
+
386
387
  return self.backend.bk_complex(self.backend.bk_real(x)*y,self.backend.bk_imag(x)*y)
387
388
  else:
388
389
  return self.backend.bk_complex(self.backend.bk_real(y)*x,self.backend.bk_imag(y)*x)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: foscat
3
- Version: 3.0.23
3
+ Version: 3.0.25
4
4
  Summary: Generate synthetic Healpix or 2D data using Cross Scattering Transform
5
5
  Home-page: https://github.com/jmdelouis/FOSCAT
6
6
  Author: Jean-Marc DELOUIS
@@ -1,9 +1,9 @@
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=zQ3X_iFWofiJnB54Gb4SCD8carkIykXqSrhMbfWDWoc,67309
3
+ foscat/FoCUS.py,sha256=iN4hnwt2DUYhDZ9JgFFe_ElHVmeOUHIBV-35aASlM3k,67309
4
4
  foscat/GCNN.py,sha256=TEW81DGRM4WL7RzH50VKQ-_oHbl5i3iQKuhdkkgKEO8,3831
5
5
  foscat/GetGPUinfo.py,sha256=6sJWKO_OeiA0SoGQQdCT_h3D8rZtrv_4hpBc8H3nZls,731
6
- foscat/Softmax.py,sha256=aCghstI2fchd8FHsBUcmPR4FGlCH9DglS7XMEWlKr8A,2709
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
@@ -14,12 +14,12 @@ foscat/loss_backend_torch.py,sha256=Fj_W3VwGgeD79eQ4jOxOmhZ548UKDRUb3JjUo2-gSWM,
14
14
  foscat/scat.py,sha256=Ht_xyo7XKJJrUIbQIeucjhIrJo4RGrE63EyhTH8IYig,60061
15
15
  foscat/scat1D.py,sha256=7egOWL7GXcJEenl8r1DSdArpE1Yvywgo-vxHAQ1gMzY,46269
16
16
  foscat/scat2D.py,sha256=Xtisjc5KsbLQAlbn71P0Xg1UIu3r1gUKXoYG2vIMK1M,523
17
- foscat/scat_cov.py,sha256=62FqSBnU_Gow6YCwqJpQti6AyDOXqCICMLlqQIe9BLA,108094
18
- foscat/scat_cov1D.py,sha256=inAy_TWtUwJr6l9hX3u7r2Jud7DGy_CkjCfcjaUIdJI,58885
17
+ foscat/scat_cov.py,sha256=uST8ij9o1sJh2AKhFffxMUr0WFQX9vz3VK4LGfiSOlE,110188
18
+ foscat/scat_cov1D.py,sha256=wh65aUkqvkwDKykPrl7ZUpB-nw1Jf2zVOvcM0jHWY_k,58898
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.dist-info/METADATA,sha256=JnSj9sqewiygAjaD3RT_X6ju_0EF8g3G-lQ_HQMrGms,1013
23
- foscat-3.0.23.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
24
- foscat-3.0.23.dist-info/top_level.txt,sha256=AGySXBBAlJgb8Tj8af6m_F-aiNg2zNTcybCUPVOKjAg,7
25
- foscat-3.0.23.dist-info/RECORD,,
22
+ foscat-3.0.25.dist-info/METADATA,sha256=SWGvgdVYdhR4gWNcoFTYto-f2kG8bMaV8uFwrQoQtmg,1013
23
+ foscat-3.0.25.dist-info/WHEEL,sha256=oiQVh_5PnQM0E3gPdiz09WCNmwiHDMaGer_elqB3coM,92
24
+ foscat-3.0.25.dist-info/top_level.txt,sha256=AGySXBBAlJgb8Tj8af6m_F-aiNg2zNTcybCUPVOKjAg,7
25
+ foscat-3.0.25.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: bdist_wheel (0.43.0)
2
+ Generator: bdist_wheel (0.42.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5