foscat 3.1.0__tar.gz → 3.1.2__tar.gz

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.
Files changed (31) hide show
  1. {foscat-3.1.0 → foscat-3.1.2}/PKG-INFO +1 -1
  2. {foscat-3.1.0 → foscat-3.1.2}/setup.py +1 -1
  3. {foscat-3.1.0 → foscat-3.1.2}/src/foscat/FoCUS.py +12 -6
  4. {foscat-3.1.0 → foscat-3.1.2}/src/foscat/scat_cov.py +117 -52
  5. {foscat-3.1.0 → foscat-3.1.2}/src/foscat.egg-info/PKG-INFO +1 -1
  6. {foscat-3.1.0 → foscat-3.1.2}/README.md +0 -0
  7. {foscat-3.1.0 → foscat-3.1.2}/setup.cfg +0 -0
  8. {foscat-3.1.0 → foscat-3.1.2}/src/foscat/CNN.py +0 -0
  9. {foscat-3.1.0 → foscat-3.1.2}/src/foscat/CircSpline.py +0 -0
  10. {foscat-3.1.0 → foscat-3.1.2}/src/foscat/GCNN.py +0 -0
  11. {foscat-3.1.0 → foscat-3.1.2}/src/foscat/GetGPUinfo.py +0 -0
  12. {foscat-3.1.0 → foscat-3.1.2}/src/foscat/Softmax.py +0 -0
  13. {foscat-3.1.0 → foscat-3.1.2}/src/foscat/Spline1D.py +0 -0
  14. {foscat-3.1.0 → foscat-3.1.2}/src/foscat/Synthesis.py +0 -0
  15. {foscat-3.1.0 → foscat-3.1.2}/src/foscat/__init__.py +0 -0
  16. {foscat-3.1.0 → foscat-3.1.2}/src/foscat/backend.py +0 -0
  17. {foscat-3.1.0 → foscat-3.1.2}/src/foscat/backend_tens.py +0 -0
  18. {foscat-3.1.0 → foscat-3.1.2}/src/foscat/loss_backend_tens.py +0 -0
  19. {foscat-3.1.0 → foscat-3.1.2}/src/foscat/loss_backend_torch.py +0 -0
  20. {foscat-3.1.0 → foscat-3.1.2}/src/foscat/scat.py +0 -0
  21. {foscat-3.1.0 → foscat-3.1.2}/src/foscat/scat1D.py +0 -0
  22. {foscat-3.1.0 → foscat-3.1.2}/src/foscat/scat2D.py +0 -0
  23. {foscat-3.1.0 → foscat-3.1.2}/src/foscat/scat_cov1D.old.py +0 -0
  24. {foscat-3.1.0 → foscat-3.1.2}/src/foscat/scat_cov1D.py +0 -0
  25. {foscat-3.1.0 → foscat-3.1.2}/src/foscat/scat_cov2D.py +0 -0
  26. {foscat-3.1.0 → foscat-3.1.2}/src/foscat/scat_cov_map.py +0 -0
  27. {foscat-3.1.0 → foscat-3.1.2}/src/foscat/scat_cov_map2D.py +0 -0
  28. {foscat-3.1.0 → foscat-3.1.2}/src/foscat.egg-info/SOURCES.txt +0 -0
  29. {foscat-3.1.0 → foscat-3.1.2}/src/foscat.egg-info/dependency_links.txt +0 -0
  30. {foscat-3.1.0 → foscat-3.1.2}/src/foscat.egg-info/requires.txt +0 -0
  31. {foscat-3.1.0 → foscat-3.1.2}/src/foscat.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: foscat
3
- Version: 3.1.0
3
+ Version: 3.1.2
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
@@ -3,7 +3,7 @@ from setuptools import setup, find_packages
3
3
 
4
4
  setup(
5
5
  name='foscat',
6
- version='3.1.0',
6
+ version='3.1.2',
7
7
  description='Generate synthetic Healpix or 2D data using Cross Scattering Transform' ,
8
8
  long_description='Utilize the Cross Scattering Transform (described in https://arxiv.org/abs/2207.12527) to synthesize Healpix or 2D data that is suitable for component separation purposes, such as denoising. \n A demo package for this process can be found at https://github.com/jmdelouis/FOSCAT_DEMO. \n Complete doc can be found at https://foscat-documentation.readthedocs.io/en/latest/index.html. \n\n List of developers : J.-M. Delouis, T. Foulquier, L. Mousset, T. Odaka, F. Paul, E. Allys ' ,
9
9
  license='MIT',
@@ -33,7 +33,7 @@ class FoCUS:
33
33
  mpi_size=1,
34
34
  mpi_rank=0):
35
35
 
36
- self.__version__ = '3.1.0'
36
+ self.__version__ = '3.1.2'
37
37
  # P00 coeff for normalization for scat_cov
38
38
  self.TMPFILE_VERSION=TMPFILE_VERSION
39
39
  self.P1_dic = None
@@ -251,11 +251,17 @@ class FoCUS:
251
251
  if KERNELSZ==5:
252
252
  xx=np.arange(5)-2
253
253
  w=np.exp(-0.25*(xx)**2)
254
- c=np.cos((xx)*np.pi/2)
255
- s=np.sin((xx)*np.pi/2)
256
-
257
- self.ww_RealT[1]=self.backend.constant(np.array(w*c).reshape(xx.shape[0],1,1))
258
- self.ww_ImagT[1]=self.backend.constant(np.array(w*s).reshape(xx.shape[0],1,1))
254
+ c=w*np.cos((xx)*np.pi/2)
255
+ s=w*np.sin((xx)*np.pi/2)
256
+
257
+ w=w/np.sum(w)
258
+ c=c-np.mean(c)
259
+ s=s-np.mean(s)
260
+ r=np.sum(np.sqrt(c*c+s*s))
261
+ c=c/r
262
+ s=s/r
263
+ self.ww_RealT[1]=self.backend.constant(np.array(c).reshape(xx.shape[0],1,1))
264
+ self.ww_ImagT[1]=self.backend.constant(np.array(s).reshape(xx.shape[0],1,1))
259
265
  self.ww_SmoothT[1] = self.backend.constant(np.array(w).reshape(xx.shape[0],1,1))
260
266
 
261
267
  else:
@@ -22,7 +22,7 @@ def read(filename):
22
22
  testwarn=0
23
23
 
24
24
  class scat_cov:
25
- def __init__(self, s0, p00, c01, c11, s1=None, c10=None,backend=None):
25
+ def __init__(self, s0, p00, c01, c11, s1=None, c10=None,backend=None,use_1D=False):
26
26
  self.S0 = s0
27
27
  self.P00 = p00
28
28
  self.C01 = c01
@@ -32,6 +32,7 @@ class scat_cov:
32
32
  self.backend = backend
33
33
  self.idx1 = None
34
34
  self.idx2 = None
35
+ self.use_1D = use_1D
35
36
 
36
37
  def numpy(self):
37
38
  if self.BACKEND=='numpy':
@@ -50,7 +51,9 @@ class scat_cov:
50
51
  (self.P00.numpy()),
51
52
  (self.C01.numpy()),
52
53
  (self.C11.numpy()),
53
- s1=s1, c10=c10,backend=self.backend)
54
+ s1=s1, c10=c10,
55
+ backend=self.backend,
56
+ use_1D=self.use_1D)
54
57
 
55
58
  def constant(self):
56
59
 
@@ -67,7 +70,8 @@ class scat_cov:
67
70
  self.backend.constant(self.P00),
68
71
  self.backend.constant(self.C01),
69
72
  self.backend.constant(self.C11),
70
- s1=s1, c10=c10,backend=self.backend)
73
+ s1=s1, c10=c10,backend=self.backend,
74
+ use_1D=self.use_1D)
71
75
 
72
76
  def conv2complex(self,val):
73
77
  if val.dtype=='complex64' or val.dtype=='complex128' :
@@ -78,20 +82,37 @@ class scat_cov:
78
82
  # ---------------------------------------------−---------
79
83
  def flatten(self):
80
84
  tmp=[self.conv2complex(self.backend.bk_reshape(self.S0,[self.S1.shape[0],self.S0.shape[1]]))]
85
+ if self.use_1D:
86
+ if self.S1 is not None:
87
+ tmp=tmp+[self.conv2complex(self.backend.bk_reshape(self.S1,
88
+ [self.S1.shape[0],self.S1.shape[1]*self.S1.shape[2]]))]
89
+ tmp=tmp+[self.conv2complex(self.backend.bk_reshape(self.P00,
90
+ [self.S1.shape[0],self.S1.shape[1]*self.S1.shape[2]])),
91
+ self.conv2complex(self.backend.bk_reshape(self.C01,
92
+ [self.C01.shape[0],self.C01.shape[1]*self.C01.shape[2]]))]
93
+ if self.C10 is not None:
94
+ tmp=tmp+[self.conv2complex(self.backend.bk_reshape(self.C10,
95
+ [self.C01.shape[0],self.C01.shape[1]*self.C01.shape[2]]))]
96
+
97
+ tmp=tmp+[self.conv2complex(self.backend.bk_reshape(self.C11,
98
+ [self.C01.shape[0],self.C11.shape[1]*self.C11.shape[2]]))]
99
+
100
+ return self.backend.bk_concat(tmp,1)
101
+
81
102
  if self.S1 is not None:
82
103
  tmp=tmp+[self.conv2complex(self.backend.bk_reshape(self.S1,
83
- [self.S1.shape[0],self.S1.shape[1]*self.S1.shape[2]*self.S1.shape[3]]))]
104
+ [self.S1.shape[0],self.S1.shape[1]*self.S1.shape[2]*self.S1.shape[3]]))]
84
105
  tmp=tmp+[self.conv2complex(self.backend.bk_reshape(self.P00,
85
- [self.S1.shape[0],self.S1.shape[1]*self.S1.shape[2]*self.S1.shape[3]])),
106
+ [self.S1.shape[0],self.S1.shape[1]*self.S1.shape[2]*self.S1.shape[3]])),
86
107
  self.conv2complex(self.backend.bk_reshape(self.C01,
87
- [self.C01.shape[0],self.C01.shape[1]*self.C01.shape[2]*self.C01.shape[3]*self.C01.shape[4]]))]
108
+ [self.C01.shape[0],self.C01.shape[1]*self.C01.shape[2]*self.C01.shape[3]*self.C01.shape[4]]))]
88
109
  if self.C10 is not None:
89
110
  tmp=tmp+[self.conv2complex(self.backend.bk_reshape(self.C10,
90
- [self.C01.shape[0],self.C01.shape[1]*self.C01.shape[2]*self.C01.shape[3]*self.C01.shape[4]]))]
91
-
111
+ [self.C01.shape[0],self.C01.shape[1]*self.C01.shape[2]*self.C01.shape[3]*self.C01.shape[4]]))]
112
+
92
113
  tmp=tmp+[self.conv2complex(self.backend.bk_reshape(self.C11,
93
- [self.C01.shape[0],self.C11.shape[1]*self.C11.shape[2]*self.C11.shape[3]*self.C11.shape[4]*self.C11.shape[5]]))]
94
-
114
+ [self.C01.shape[0],self.C11.shape[1]*self.C11.shape[2]*self.C11.shape[3]*self.C11.shape[4]*self.C11.shape[5]]))]
115
+
95
116
  return self.backend.bk_concat(tmp,1)
96
117
 
97
118
  # ---------------------------------------------−---------
@@ -319,12 +340,16 @@ class scat_cov:
319
340
  return scat_cov(self.doadd(self.S0,other.S0),
320
341
  self.doadd(self.P00,other.P00),
321
342
  (self.C01 + other.C01),
322
- c11,s1=s1, c10=c10,backend=self.backend)
343
+ c11,s1=s1, c10=c10,
344
+ backend=self.backend,
345
+ use_1D=self.use_1D)
323
346
  else:
324
347
  return scat_cov((self.S0 + other),
325
348
  (self.P00 + other),
326
349
  (self.C01 + other),
327
- c11,s1=s1, c10=c10,backend=self.backend)
350
+ c11,s1=s1, c10=c10,
351
+ backend=self.backend,
352
+ use_1D=self.use_1D)
328
353
 
329
354
 
330
355
  def relu(self):
@@ -350,7 +375,8 @@ class scat_cov:
350
375
  c11,
351
376
  s1=s1,
352
377
  c10=c10,
353
- backend=self.backend)
378
+ backend=self.backend,
379
+ use_1D=self.use_1D)
354
380
 
355
381
  def __radd__(self, other):
356
382
  return self.__add__(other)
@@ -396,12 +422,14 @@ class scat_cov:
396
422
  return scat_cov(self.dodiv(self.S0,other.S0),
397
423
  self.dodiv(self.P00,other.P00),
398
424
  self.dodiv(self.C01,other.C01),
399
- c11,s1=s1, c10=c10,backend=self.backend)
425
+ c11,s1=s1, c10=c10,backend=self.backend,
426
+ use_1D=self.use_1D)
400
427
  else:
401
428
  return scat_cov((self.S0 / other),
402
429
  (self.P00 / other),
403
430
  (self.C01 / other),
404
- c11,s1=s1, c10=c10,backend=self.backend)
431
+ c11,s1=s1, c10=c10,backend=self.backend,
432
+ use_1D=self.use_1D)
405
433
 
406
434
  def __rtruediv__(self, other):
407
435
  assert isinstance(other, float) or isinstance(other, np.float32) or isinstance(other, int) or \
@@ -438,13 +466,15 @@ class scat_cov:
438
466
  return scat_cov(self.dodiv(other.S0,self.S0),
439
467
  self.dodiv(other.P00,self.P00),
440
468
  (other.C01 / self.C01),
441
- c11,s1=s1, c10=c10,backend=self.backend)
469
+ c11,s1=s1, c10=c10,backend=self.backend,
470
+ use_1D=self.use_1D)
442
471
  else:
443
472
  return scat_cov((other/self.S0 ),
444
473
  (other/self.P00 ),
445
474
  (other/self.C01 ),
446
475
  (other/self.C11 ),
447
- s1=s1, c10=c10,backend=self.backend)
476
+ s1=s1, c10=c10,backend=self.backend,
477
+ use_1D=self.use_1D)
448
478
 
449
479
  def __rsub__(self, other):
450
480
 
@@ -489,13 +519,15 @@ class scat_cov:
489
519
  self.domin(other.P00,self.P00),
490
520
  (other.C01 - self.C01),
491
521
  c11,s1=s1, c10=c10,
492
- backend=self.backend)
522
+ backend=self.backend,
523
+ use_1D=self.use_1D)
493
524
  else:
494
525
  return scat_cov((other-self.S0),
495
526
  (other-self.P00),
496
527
  (other-self.C01),
497
528
  c11,s1=s1, c10=c10,
498
- backend=self.backend)
529
+ backend=self.backend,
530
+ use_1D=self.use_1D)
499
531
 
500
532
  def __sub__(self, other):
501
533
  assert isinstance(other, float) or isinstance(other, np.float32) or isinstance(other, int) or \
@@ -539,13 +571,15 @@ class scat_cov:
539
571
  self.domin(self.P00,other.P00),
540
572
  (self.C01 - other.C01),
541
573
  c11,
542
- s1=s1, c10=c10,backend=self.backend)
574
+ s1=s1, c10=c10,backend=self.backend,
575
+ use_1D=self.use_1D)
543
576
  else:
544
577
  return scat_cov((self.S0 - other),
545
578
  (self.P00 - other),
546
579
  (self.C01 - other),
547
580
  c11,
548
- s1=s1, c10=c10,backend=self.backend)
581
+ s1=s1, c10=c10,backend=self.backend,
582
+ use_1D=self.use_1D)
549
583
 
550
584
  def domult(self,x,y):
551
585
  try:
@@ -639,13 +673,15 @@ class scat_cov:
639
673
  self.domult(self.P00,other.P00),
640
674
  self.domult(self.C01,other.C01),
641
675
  c11,
642
- s1=s1, c10=c10,backend=self.backend)
676
+ s1=s1, c10=c10,backend=self.backend,
677
+ use_1D=self.use_1D)
643
678
  else:
644
679
  return scat_cov((self.S0 * other),
645
680
  (self.P00 * other),
646
681
  (self.C01 * other),
647
682
  c11,
648
- s1=s1, c10=c10,backend=self.backend)
683
+ s1=s1, c10=c10,backend=self.backend,
684
+ use_1D=self.use_1D)
649
685
 
650
686
 
651
687
  def __rmul__(self, other):
@@ -734,7 +770,8 @@ class scat_cov:
734
770
  c10=self.backend.constant(c10)
735
771
 
736
772
  return scat_cov(self.S0,self.backend.constant(p0),self.backend.constant(c01),
737
- self.backend.constant(c11),s1=s1,c10=c10,backend=self.backend)
773
+ self.backend.constant(c11),s1=s1,c10=c10,backend=self.backend,
774
+ use_1D=self.use_1D)
738
775
 
739
776
  def plot(self, name=None, hold=True, color='blue', lw=1, legend=True,norm=False):
740
777
 
@@ -1087,7 +1124,8 @@ class scat_cov:
1087
1124
  outlist=pickle.load(open("%s.pkl"%(filename),"rb"))
1088
1125
 
1089
1126
  return scat_cov(outlist[0],outlist[5], outlist[3], outlist[4], \
1090
- s1=outlist[1], c10=outlist[2],backend=self.backend)
1127
+ s1=outlist[1], c10=outlist[2],backend=self.backend,
1128
+ use_1D=self.use_1D)
1091
1129
 
1092
1130
  def std(self):
1093
1131
  if self.S1 is not None: # Auto
@@ -1147,7 +1185,8 @@ class scat_cov:
1147
1185
  c01=self.backend.bk_sqrt(self.C01)
1148
1186
  c11=self.backend.bk_sqrt(self.C11)
1149
1187
 
1150
- return scat_cov(s0,p00, c01, c11, s1=s1, c10=c10,backend=self.backend)
1188
+ return scat_cov(s0,p00, c01, c11, s1=s1, c10=c10,backend=self.backend,
1189
+ use_1D=self.use_1D)
1151
1190
 
1152
1191
  def L1(self):
1153
1192
 
@@ -1164,7 +1203,8 @@ class scat_cov:
1164
1203
  c01=self.backend.bk_L1(self.C01)
1165
1204
  c11=self.backend.bk_L1(self.C11)
1166
1205
 
1167
- return scat_cov(s0,p00, c01, c11, s1=s1, c10=c10,backend=self.backend)
1206
+ return scat_cov(s0,p00, c01, c11, s1=s1, c10=c10,backend=self.backend,
1207
+ use_1D=self.use_1D)
1168
1208
 
1169
1209
 
1170
1210
  def square_comp(self):
@@ -1182,7 +1222,8 @@ class scat_cov:
1182
1222
  c01=self.backend.bk_square_comp(self.C01)
1183
1223
  c11=self.backend.bk_square_comp(self.C11)
1184
1224
 
1185
- return scat_cov(s0,p00, c01, c11, s1=s1, c10=c10,backend=self.backend)
1225
+ return scat_cov(s0,p00, c01, c11, s1=s1, c10=c10,backend=self.backend,
1226
+ use_1D=self.use_1D)
1186
1227
 
1187
1228
  def iso_mean(self,repeat=False):
1188
1229
  shape=list(self.P00.shape)
@@ -1271,7 +1312,8 @@ class scat_cov:
1271
1312
  self.backend.backend.matmul(C11,lmat_T),
1272
1313
  [shape[0],shape[1],shape[2],norient,norient,norient])
1273
1314
 
1274
- return scat_cov(self.S0,P00, C01, C11, s1=S1, c10=C10,backend=self.backend)
1315
+ return scat_cov(self.S0,P00, C01, C11, s1=S1, c10=C10,backend=self.backend,
1316
+ use_1D=self.use_1D)
1275
1317
 
1276
1318
 
1277
1319
  def fft_ang(self,nharm=1,imaginary=False):
@@ -1345,7 +1387,8 @@ class scat_cov:
1345
1387
  lmat),
1346
1388
  [shape[0],shape[1],shape[2],nout,nout,nout])
1347
1389
 
1348
- return scat_cov(self.S0,P00, C01, C11, s1=S1, c10=C10,backend=self.backend)
1390
+ return scat_cov(self.S0,P00, C01, C11, s1=S1, c10=C10,backend=self.backend,
1391
+ use_1D=self.use_1D)
1349
1392
 
1350
1393
  def iso_std(self,repeat=False):
1351
1394
 
@@ -1386,7 +1429,8 @@ class scat_cov:
1386
1429
  (self.C01),
1387
1430
  (self.C11),
1388
1431
  s1=self.S1,
1389
- c10=self.C10,backend=self.backend)
1432
+ c10=self.C10,backend=self.backend,
1433
+ use_1D=self.use_1D)
1390
1434
 
1391
1435
  inscale=self.P00.shape[2]
1392
1436
  p00=np.zeros([self.P00.shape[0],self.P00.shape[1],nscale,self.P00.shape[3]],dtype='complex')
@@ -1538,7 +1582,8 @@ class scat_cov:
1538
1582
  (p00),
1539
1583
  (c01),
1540
1584
  (c11),
1541
- s1=(s1),backend=self.backend)
1585
+ s1=(s1),backend=self.backend,
1586
+ use_1D=self.use_1D)
1542
1587
 
1543
1588
  class funct(FOC.FoCUS):
1544
1589
 
@@ -1612,8 +1657,10 @@ class funct(FOC.FoCUS):
1612
1657
  sS1=None
1613
1658
  mS1=None
1614
1659
 
1615
- return scat_cov(mS0, mP00, mC01, mC11, s1=mS1,c10=mC10,backend=self.backend), \
1616
- scat_cov(sS0, sP00, sC01, sC11, s1=sS1,c10=sC10,backend=self.backend)
1660
+ return scat_cov(mS0, mP00, mC01, mC11, s1=mS1,c10=mC10,backend=self.backend,
1661
+ use_1D=self.use_1D), \
1662
+ scat_cov(sS0, sP00, sC01, sC11, s1=sS1,c10=sC10,backend=self.backend,
1663
+ use_1D=self.use_1D)
1617
1664
 
1618
1665
  # compute local direction to make the statistical analysis more efficient
1619
1666
  def stat_cfft(self,im,image2=None,upscale=False,smooth_scale=0):
@@ -2334,16 +2381,22 @@ class funct(FOC.FoCUS):
2334
2381
 
2335
2382
  if calc_var:
2336
2383
  if not cross:
2337
- return scat_cov(s0,P00, C01, C11, s1=S1,backend=self.backend), \
2338
- scat_cov(vs0,VP00, VC01, VC11, s1=VS1,backend=self.backend)
2384
+ return scat_cov(s0,P00, C01, C11, s1=S1,backend=self.backend,
2385
+ use_1D=self.use_1D), \
2386
+ scat_cov(vs0,VP00, VC01, VC11, s1=VS1,backend=self.backend,
2387
+ use_1D=self.use_1D)
2339
2388
  else:
2340
- return scat_cov(s0,P00, C01, C11, s1=S1,c10=C10,backend=self.backend), \
2341
- scat_cov(vs0,VP00, VC01, VC11, s1=VS1,c10=VC10,backend=self.backend)
2389
+ return scat_cov(s0,P00, C01, C11, s1=S1,c10=C10,backend=self.backend,
2390
+ use_1D=self.use_1D), \
2391
+ scat_cov(vs0,VP00, VC01, VC11, s1=VS1,c10=VC10,backend=self.backend,
2392
+ use_1D=self.use_1D)
2342
2393
  else:
2343
2394
  if not cross:
2344
- return scat_cov(s0,P00, C01, C11, s1=S1,backend=self.backend)
2395
+ return scat_cov(s0,P00, C01, C11, s1=S1,backend=self.backend,
2396
+ use_1D=self.use_1D)
2345
2397
  else:
2346
- return scat_cov(s0,P00, C01, C11, s1=S1,c10=C10,backend=self.backend)
2398
+ return scat_cov(s0,P00, C01, C11, s1=S1,c10=C10,backend=self.backend,
2399
+ use_1D=self.use_1D)
2347
2400
 
2348
2401
  def clean_norm(self):
2349
2402
  self.P1_dic = None
@@ -2432,13 +2485,15 @@ class funct(FOC.FoCUS):
2432
2485
  return scat_cov(self.backend.bk_square(self.backend.bk_abs(x.S0)),
2433
2486
  self.backend.bk_square(self.backend.bk_abs(x.P00)),
2434
2487
  self.backend.bk_square(self.backend.bk_abs(x.C01)),
2435
- self.backend.bk_square(self.backend.bk_abs(x.C11)),backend=self.backend)
2488
+ self.backend.bk_square(self.backend.bk_abs(x.C11)),backend=self.backend,
2489
+ use_1D=self.use_1D)
2436
2490
  else:
2437
2491
  return scat_cov(self.backend.bk_square(self.backend.bk_abs(x.S0)),
2438
2492
  self.backend.bk_square(self.backend.bk_abs(x.P00)),
2439
2493
  self.backend.bk_square(self.backend.bk_abs(x.C01)),
2440
2494
  self.backend.bk_square(self.backend.bk_abs(x.C11)),
2441
- s1=self.backend.bk_square(self.backend.bk_abs(x.S1)),backend=self.backend)
2495
+ s1=self.backend.bk_square(self.backend.bk_abs(x.S1)),backend=self.backend,
2496
+ use_1D=self.use_1D)
2442
2497
  else:
2443
2498
  return self.backend.bk_abs(self.backend.bk_square(x))
2444
2499
 
@@ -2448,13 +2503,15 @@ class funct(FOC.FoCUS):
2448
2503
  return scat_cov(self.backend.bk_sqrt(self.backend.bk_abs(x.S0)),
2449
2504
  self.backend.bk_sqrt(self.backend.bk_abs(x.P00)),
2450
2505
  self.backend.bk_sqrt(self.backend.bk_abs(x.C01)),
2451
- self.backend.bk_sqrt(self.backend.bk_abs(x.C11)),backend=self.backend)
2506
+ self.backend.bk_sqrt(self.backend.bk_abs(x.C11)),backend=self.backend,
2507
+ use_1D=self.use_1D)
2452
2508
  else:
2453
2509
  return scat_cov(self.backend.bk_sqrt(self.backend.bk_abs(x.S0)),
2454
2510
  self.backend.bk_sqrt(self.backend.bk_abs(x.P00)),
2455
2511
  self.backend.bk_sqrt(self.backend.bk_abs(x.C01)),
2456
2512
  self.backend.bk_sqrt(self.backend.bk_abs(x.C11)),
2457
- s1=self.backend.bk_sqrt(self.backend.bk_abs(x.S1)),backend=self.backend)
2513
+ s1=self.backend.bk_sqrt(self.backend.bk_abs(x.S1)),backend=self.backend,
2514
+ use_1D=self.use_1D)
2458
2515
  else:
2459
2516
  return self.backend.bk_abs(self.backend.bk_sqrt(x))
2460
2517
 
@@ -2535,13 +2592,15 @@ class funct(FOC.FoCUS):
2535
2592
  x.domult(sig.C01,x.C01)*x.domult(sig.C01,x.C01),
2536
2593
  x.domult(sig.C11,x.C11)*x.domult(sig.C11,x.C11),
2537
2594
  C10=x.domult(sig.C10,x.C10)*x.domult(sig.C10,x.C10),
2538
- backend=self.backend)
2595
+ backend=self.backend,
2596
+ use_1D=self.use_1D)
2539
2597
  else:
2540
2598
  return scat_cov(x.domult(sig.S0,x.S0)*x.domult(sig.S0,x.S0),
2541
2599
  x.domult(sig.P00,x.P00)*x.domult(sig.P00,x.P00),
2542
2600
  x.domult(sig.C01,x.C01)*x.domult(sig.C01,x.C01),
2543
2601
  x.domult(sig.C11,x.C11)*x.domult(sig.C11,x.C11),
2544
- backend=self.backend)
2602
+ backend=self.backend,
2603
+ use_1D=self.use_1D)
2545
2604
  else:
2546
2605
  if x.C10 is None:
2547
2606
  return scat_cov(x.domult(sig.S0,x.S0)*x.domult(sig.S0,x.S0),
@@ -2550,14 +2609,16 @@ class funct(FOC.FoCUS):
2550
2609
  x.domult(sig.C11,x.C11)*x.domult(sig.C11,x.C11),
2551
2610
  S1=x.domult(sig.S1,x.S1)*x.domult(sig.S1,x.S1),
2552
2611
  C10=x.domult(sig.C10,x.C10)*x.domult(sig.C10,x.C10),
2553
- backend=self.backend)
2612
+ backend=self.backend,
2613
+ use_1D=self.use_1D)
2554
2614
  else:
2555
2615
  return scat_cov(x.domult(sig.S0,x.S0)*x.domult(sig.S0,x.S0),
2556
2616
  x.domult(sig.P00,x.P00)*x.domult(sig.P00,x.P00),
2557
2617
  x.domult(sig.C01,x.C01)*x.domult(sig.C01,x.C01),
2558
2618
  x.domult(sig.C11,x.C11)*x.domult(sig.C11,x.C11),
2559
2619
  S1=x.domult(sig.S1,x.S1)*x.domult(sig.S1,x.S1),
2560
- backend=self.backend)
2620
+ backend=self.backend,
2621
+ use_1D=self.use_1D)
2561
2622
 
2562
2623
 
2563
2624
  def log(self, x):
@@ -2595,13 +2656,15 @@ class funct(FOC.FoCUS):
2595
2656
  x.domult(sig.C01,x.C01)*x.domult(sig.C01,x.C01),
2596
2657
  x.domult(sig.C11,x.C11)*x.domult(sig.C11,x.C11),
2597
2658
  C10=x.domult(sig.C10,x.C10)*x.domult(sig.C10,x.C10),
2598
- backend=self.backend)
2659
+ backend=self.backend,
2660
+ use_1D=self.use_1D)
2599
2661
  else:
2600
2662
  return scat_cov(x.domult(sig.S0,x.S0)*x.domult(sig.S0,x.S0),
2601
2663
  x.domult(sig.P00,x.P00)*x.domult(sig.P00,x.P00),
2602
2664
  x.domult(sig.C01,x.C01)*x.domult(sig.C01,x.C01),
2603
2665
  x.domult(sig.C11,x.C11)*x.domult(sig.C11,x.C11),
2604
- backend=self.backend)
2666
+ backend=self.backend,
2667
+ use_1D=self.use_1D)
2605
2668
  else:
2606
2669
  if res.C10 is None:
2607
2670
  return scat_cov(x.domult(sig.S0,x.S0)*x.domult(sig.S0,x.S0),
@@ -2616,7 +2679,8 @@ class funct(FOC.FoCUS):
2616
2679
  x.domult(sig.S1,x.S1)*x.domult(sig.S1,x.S1),
2617
2680
  x.domult(sig.C01,x.C01)*x.domult(sig.C01,x.C01),
2618
2681
  x.domult(sig.C11,x.C11)*x.domult(sig.C11,x.C11),
2619
- backend=self.backend)
2682
+ backend=self.backend,
2683
+ use_1D=self.use_1D)
2620
2684
  return(self.NORIENT)
2621
2685
 
2622
2686
  @tf_function
@@ -2627,6 +2691,7 @@ class funct(FOC.FoCUS):
2627
2691
 
2628
2692
  def eval_fast(self, image1, image2=None,mask=None,norm=None, Auto=True,cmat=None,cmat2=None):
2629
2693
  s0,p0,s1,c01,c11,c10=self.eval_comp_fast(image1, image2=image2,mask=mask,Auto=Auto,cmat=cmat,cmat2=cmat2)
2630
- return scat_cov(s0, p0, c01, c11, s1=s1,c10=c10,backend=self.backend)
2694
+ return scat_cov(s0, p0, c01, c11, s1=s1,c10=c10,backend=self.backend,
2695
+ use_1D=self.use_1D)
2631
2696
 
2632
2697
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: foscat
3
- Version: 3.1.0
3
+ Version: 3.1.2
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
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes