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.
- {foscat-3.1.0 → foscat-3.1.2}/PKG-INFO +1 -1
- {foscat-3.1.0 → foscat-3.1.2}/setup.py +1 -1
- {foscat-3.1.0 → foscat-3.1.2}/src/foscat/FoCUS.py +12 -6
- {foscat-3.1.0 → foscat-3.1.2}/src/foscat/scat_cov.py +117 -52
- {foscat-3.1.0 → foscat-3.1.2}/src/foscat.egg-info/PKG-INFO +1 -1
- {foscat-3.1.0 → foscat-3.1.2}/README.md +0 -0
- {foscat-3.1.0 → foscat-3.1.2}/setup.cfg +0 -0
- {foscat-3.1.0 → foscat-3.1.2}/src/foscat/CNN.py +0 -0
- {foscat-3.1.0 → foscat-3.1.2}/src/foscat/CircSpline.py +0 -0
- {foscat-3.1.0 → foscat-3.1.2}/src/foscat/GCNN.py +0 -0
- {foscat-3.1.0 → foscat-3.1.2}/src/foscat/GetGPUinfo.py +0 -0
- {foscat-3.1.0 → foscat-3.1.2}/src/foscat/Softmax.py +0 -0
- {foscat-3.1.0 → foscat-3.1.2}/src/foscat/Spline1D.py +0 -0
- {foscat-3.1.0 → foscat-3.1.2}/src/foscat/Synthesis.py +0 -0
- {foscat-3.1.0 → foscat-3.1.2}/src/foscat/__init__.py +0 -0
- {foscat-3.1.0 → foscat-3.1.2}/src/foscat/backend.py +0 -0
- {foscat-3.1.0 → foscat-3.1.2}/src/foscat/backend_tens.py +0 -0
- {foscat-3.1.0 → foscat-3.1.2}/src/foscat/loss_backend_tens.py +0 -0
- {foscat-3.1.0 → foscat-3.1.2}/src/foscat/loss_backend_torch.py +0 -0
- {foscat-3.1.0 → foscat-3.1.2}/src/foscat/scat.py +0 -0
- {foscat-3.1.0 → foscat-3.1.2}/src/foscat/scat1D.py +0 -0
- {foscat-3.1.0 → foscat-3.1.2}/src/foscat/scat2D.py +0 -0
- {foscat-3.1.0 → foscat-3.1.2}/src/foscat/scat_cov1D.old.py +0 -0
- {foscat-3.1.0 → foscat-3.1.2}/src/foscat/scat_cov1D.py +0 -0
- {foscat-3.1.0 → foscat-3.1.2}/src/foscat/scat_cov2D.py +0 -0
- {foscat-3.1.0 → foscat-3.1.2}/src/foscat/scat_cov_map.py +0 -0
- {foscat-3.1.0 → foscat-3.1.2}/src/foscat/scat_cov_map2D.py +0 -0
- {foscat-3.1.0 → foscat-3.1.2}/src/foscat.egg-info/SOURCES.txt +0 -0
- {foscat-3.1.0 → foscat-3.1.2}/src/foscat.egg-info/dependency_links.txt +0 -0
- {foscat-3.1.0 → foscat-3.1.2}/src/foscat.egg-info/requires.txt +0 -0
- {foscat-3.1.0 → foscat-3.1.2}/src/foscat.egg-info/top_level.txt +0 -0
|
@@ -3,7 +3,7 @@ from setuptools import setup, find_packages
|
|
|
3
3
|
|
|
4
4
|
setup(
|
|
5
5
|
name='foscat',
|
|
6
|
-
version='3.1.
|
|
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.
|
|
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
|
-
|
|
258
|
-
|
|
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,
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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,
|
|
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,
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
|
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
|
|
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
|