Commit 5766432b authored by Marco Selig's avatar Marco Selig
Browse files

in power_operator repleced len(set(pindex)) by max(pindex); pseudo info...

in power_operator repleced len(set(pindex)) by max(pindex); pseudo info commented out and else added to projection_operator.pseudo_tr; several AttributeError changed to NotImplementedError.
parent 04de24ba
...@@ -965,7 +965,7 @@ class space(object): ...@@ -965,7 +965,7 @@ class space(object):
dim : {int, numpy.ndarray} dim : {int, numpy.ndarray}
Dimension(s) of the space. Dimension(s) of the space.
""" """
raise AttributeError(about._errors.cstring("ERROR: no generic instance method 'dim'.")) raise NotImplementedError(about._errors.cstring("ERROR: no generic instance method 'dim'."))
##+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ##+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
...@@ -978,7 +978,7 @@ class space(object): ...@@ -978,7 +978,7 @@ class space(object):
dof : int dof : int
Number of degrees of freedom of the space. Number of degrees of freedom of the space.
""" """
raise AttributeError(about._errors.cstring("ERROR: no generic instance method 'dof'.")) raise NotImplementedError(about._errors.cstring("ERROR: no generic instance method 'dof'."))
##+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ##+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
...@@ -1006,7 +1006,7 @@ class space(object): ...@@ -1006,7 +1006,7 @@ class space(object):
Scale of each band. Scale of each band.
""" """
raise AttributeError(about._errors.cstring("ERROR: no generic instance method 'enforce_power'.")) raise NotImplementedError(about._errors.cstring("ERROR: no generic instance method 'enforce_power'."))
##+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ##+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
...@@ -1043,7 +1043,7 @@ class space(object): ...@@ -1043,7 +1043,7 @@ class space(object):
space and contains the indices of the associated bands. space and contains the indices of the associated bands.
kindex and rho are each one-dimensional arrays. kindex and rho are each one-dimensional arrays.
""" """
raise AttributeError(about._errors.cstring("ERROR: no generic instance method 'get_power_index'.")) raise NotImplementedError(about._errors.cstring("ERROR: no generic instance method 'get_power_index'."))
def get_power_undex(self,pindex=None): def get_power_undex(self,pindex=None):
""" """
...@@ -1260,7 +1260,7 @@ class space(object): ...@@ -1260,7 +1260,7 @@ class space(object):
codomain : nifty.space codomain : nifty.space
A compatible codomain. A compatible codomain.
""" """
raise AttributeError(about._errors.cstring("ERROR: no generic instance method 'get_codomain'.")) raise NotImplementedError(about._errors.cstring("ERROR: no generic instance method 'get_codomain'."))
##+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ##+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
...@@ -1284,7 +1284,7 @@ class space(object): ...@@ -1284,7 +1284,7 @@ class space(object):
mol : {numpy.ndarray, float} mol : {numpy.ndarray, float}
Meta volume of the field components or the complete space. Meta volume of the field components or the complete space.
""" """
raise AttributeError(about._errors.cstring("ERROR: no generic instance method 'get_meta_volume'.")) raise NotImplementedError(about._errors.cstring("ERROR: no generic instance method 'get_meta_volume'."))
##+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ##+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
...@@ -1396,7 +1396,7 @@ class space(object): ...@@ -1396,7 +1396,7 @@ class space(object):
iter : int, *optional* iter : int, *optional*
Number of iterations (default: 0). Number of iterations (default: 0).
""" """
raise AttributeError(about._errors.cstring("ERROR: no generic instance method 'calc_smooth'.")) raise NotImplementedError(about._errors.cstring("ERROR: no generic instance method 'calc_smooth'."))
##+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ##+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
...@@ -1426,7 +1426,7 @@ class space(object): ...@@ -1426,7 +1426,7 @@ class space(object):
rho : numpy.ndarray, *optional* rho : numpy.ndarray, *optional*
Number of degrees of freedom per band (default: None). Number of degrees of freedom per band (default: None).
""" """
raise AttributeError(about._errors.cstring("ERROR: no generic instance method 'calc_power'.")) raise NotImplementedError(about._errors.cstring("ERROR: no generic instance method 'calc_power'."))
##+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ##+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
...@@ -1484,7 +1484,7 @@ class space(object): ...@@ -1484,7 +1484,7 @@ class space(object):
iter : int, *optional* iter : int, *optional*
Number of iterations (default: 0). Number of iterations (default: 0).
""" """
raise AttributeError(about._errors.cstring("ERROR: no generic instance method 'get_plot'.")) raise NotImplementedError(about._errors.cstring("ERROR: no generic instance method 'get_plot'."))
##+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ##+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
...@@ -7193,19 +7193,19 @@ class operator(object): ...@@ -7193,19 +7193,19 @@ class operator(object):
##+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ##+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
def _multiply(self,x,**kwargs): ## > applies the operator to a given field def _multiply(self,x,**kwargs): ## > applies the operator to a given field
raise AttributeError(about._errors.cstring("ERROR: no generic instance method 'multiply'.")) raise NotImplementedError(about._errors.cstring("ERROR: no generic instance method 'multiply'."))
def _adjoint_multiply(self,x,**kwargs): ## > applies the adjoint operator to a given field def _adjoint_multiply(self,x,**kwargs): ## > applies the adjoint operator to a given field
raise AttributeError(about._errors.cstring("ERROR: no generic instance method 'adjoint_multiply'.")) raise NotImplementedError(about._errors.cstring("ERROR: no generic instance method 'adjoint_multiply'."))
def _inverse_multiply(self,x,**kwargs): ## > applies the inverse operator to a given field def _inverse_multiply(self,x,**kwargs): ## > applies the inverse operator to a given field
raise AttributeError(about._errors.cstring("ERROR: no generic instance method 'inverse_multiply'.")) raise NotImplementedError(about._errors.cstring("ERROR: no generic instance method 'inverse_multiply'."))
def _adjoint_inverse_multiply(self,x,**kwargs): ## > applies the inverse adjoint operator to a given field def _adjoint_inverse_multiply(self,x,**kwargs): ## > applies the inverse adjoint operator to a given field
raise AttributeError(about._errors.cstring("ERROR: no generic instance method 'adjoint_inverse_multiply'.")) raise NotImplementedError(about._errors.cstring("ERROR: no generic instance method 'adjoint_inverse_multiply'."))
def _inverse_adjoint_multiply(self,x,**kwargs): ## > applies the adjoint inverse operator to a given field def _inverse_adjoint_multiply(self,x,**kwargs): ## > applies the adjoint inverse operator to a given field
raise AttributeError(about._errors.cstring("ERROR: no generic instance method 'inverse_adjoint_multiply'.")) raise NotImplementedError(about._errors.cstring("ERROR: no generic instance method 'inverse_adjoint_multiply'."))
##+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ##+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
...@@ -7651,7 +7651,7 @@ class operator(object): ...@@ -7651,7 +7651,7 @@ class operator(object):
det : float det : float
The determinant The determinant
""" """
raise AttributeError(about._errors.cstring("ERROR: no generic instance method 'det'.")) raise NotImplementedError(about._errors.cstring("ERROR: no generic instance method 'det'."))
def inverse_det(self): def inverse_det(self):
""" """
...@@ -7662,7 +7662,7 @@ class operator(object): ...@@ -7662,7 +7662,7 @@ class operator(object):
det : float det : float
The determinant The determinant
""" """
raise AttributeError(about._errors.cstring("ERROR: no generic instance method 'inverse_det'.")) raise NotImplementedError(about._errors.cstring("ERROR: no generic instance method 'inverse_det'."))
##+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ##+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
...@@ -8620,7 +8620,7 @@ class power_operator(diagonal_operator): ...@@ -8620,7 +8620,7 @@ class power_operator(diagonal_operator):
raise ValueError(about._errors.cstring("ERROR: shape mismatch ( "+str(np.array(np.shape(pindex)))+" <> "+str(self.domain.dim(split=True))+" ).")) raise ValueError(about._errors.cstring("ERROR: shape mismatch ( "+str(np.array(np.shape(pindex)))+" <> "+str(self.domain.dim(split=True))+" )."))
## set diagonal ## set diagonal
try: try:
diag = self.domain.enforce_power(spec,size=len(set(pindex.flatten(order='C'))))[pindex] diag = self.domain.enforce_power(spec,size=np.max(pindex,axis=None,out=None)+1)[pindex]
except(AttributeError): except(AttributeError):
raise ValueError(about._errors.cstring("ERROR: invalid input.")) raise ValueError(about._errors.cstring("ERROR: invalid input."))
## weight if ... ## weight if ...
...@@ -8680,7 +8680,7 @@ class power_operator(diagonal_operator): ...@@ -8680,7 +8680,7 @@ class power_operator(diagonal_operator):
raise ValueError(about._errors.cstring("ERROR: shape mismatch ( "+str(np.array(np.shape(pindex)))+" <> "+str(self.domain.dim(split=True))+" ).")) raise ValueError(about._errors.cstring("ERROR: shape mismatch ( "+str(np.array(np.shape(pindex)))+" <> "+str(self.domain.dim(split=True))+" )."))
## set diagonal ## set diagonal
try: try:
diag = self.domain.enforce_power(newspec,size=len(set(pindex.flatten(order='C'))))[pindex] diag = self.domain.enforce_power(newspec,size=np.max(pindex,axis=None,out=None)+1)[pindex]
except(AttributeError): except(AttributeError):
raise ValueError(about._errors.cstring("ERROR: invalid input.")) raise ValueError(about._errors.cstring("ERROR: invalid input."))
## weight if ... ## weight if ...
...@@ -8911,7 +8911,7 @@ class projection_operator(operator): ...@@ -8911,7 +8911,7 @@ class projection_operator(operator):
about.warnings.cprint("WARNING: empty projection band removed.") about.warnings.cprint("WARNING: empty projection band removed.")
self.sym = True self.sym = True
about.infos.cprint("INFO: pseudo unitary projection operator.") #about.infos.cprint("INFO: pseudo unitary projection operator.")
self.uni = False self.uni = False
self.imp = True self.imp = True
...@@ -9083,6 +9083,9 @@ class projection_operator(operator): ...@@ -9083,6 +9083,9 @@ class projection_operator(operator):
if(not self.domain.discrete): if(not self.domain.discrete):
x = self.domain.calc_weight(x,power=1) x = self.domain.calc_weight(x,power=1)
else:
raise TypeError(about._errors.cstring("ERROR: invalid input."))
x = np.real(x) x = np.real(x)
if(not self.domain.dim(split=False)==self.domain.dof()): if(not self.domain.dim(split=False)==self.domain.dof()):
x *= np.round(np.real(self.domain.calc_weight(self.domain.get_meta_volume(total=False),power=-1)),decimals=0,out=None).astype(np.int) ## meta degrees of freedom x *= np.round(np.real(self.domain.calc_weight(self.domain.get_meta_volume(total=False),power=-1)),decimals=0,out=None).astype(np.int) ## meta degrees of freedom
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment