diff --git a/nifty/field.py b/nifty/field.py index fd5010fb0c5b6e0c3460cbb8fb31ec5240a040c2..eea2af5e1172a0f63ecf4317c4266f9fd185669f 100644 --- a/nifty/field.py +++ b/nifty/field.py @@ -270,13 +270,13 @@ class Field(Loggable, Versionable, object): def power_analyze(self, spaces=None, logarithmic=False, nbin=None, binbounds=None, decompose_power=True): - """ Computes the square root power spectrum for a subspace of the Field. + """ Computes the square root power spectrum for a subspace of `self`. Creates a PowerSpace for the space addressed by `spaces` with the given binning and computes the power spectrum as a Field over this PowerSpace. This can only be done if the subspace to be analyzed is a harmonic space. The resulting field has the same units as the initial - field, corresponding to the square root of the power spectrum. + field, corresponding to the square root of the power spectrum. Parameters ---------- @@ -457,16 +457,10 @@ class Field(Loggable, Versionable, object): def power_synthesize(self, spaces=None, real_power=True, real_signal=True, mean=None, std=None): - """Yields a sampled field with this field squared as its power spectrum. + """ Yields a sampled field with `self`**2 as its power spectrum. - This method draws a Gaussian random field in the harmonic partner domain - of this fields domains, using this field as power spectrum. - - Notes - ----- - For this the spaces specified by `spaces` must be a PowerSpace. - This expects this field to be the square root of a power spectrum, i.e. - to have the unit of the field to be sampled. + This method draws a Gaussian random field in the harmonic partner + domain of this fields domains, using this field as power spectrum. Parameters ---------- @@ -495,12 +489,20 @@ class Field(Loggable, Versionable, object): The output object. A random field created with the power spectrum stored in the `spaces` in `self`. + Notes + ----- + For this the spaces specified by `spaces` must be a PowerSpace. + This expects this field to be the square root of a power spectrum, i.e. + to have the unit of the field to be sampled. + See Also -------- power_analyze - Raises - ------ - ValueError : If domain is not a PowerSpace + + Raises + ------ + ValueError : If domain specified by `spaces` is not a PowerSpace. + """ # check if the `spaces` input is valid diff --git a/nifty/sugar.py b/nifty/sugar.py index 20b68da0065e4e1a76e2c5d223de1bbd0fca8486..d46d25370937fc3d0ebaddb91416801f48e82527 100644 --- a/nifty/sugar.py +++ b/nifty/sugar.py @@ -26,30 +26,34 @@ __all__ = ['create_power_operator'] def create_power_operator(domain, power_spectrum, dtype=None, distribution_strategy='not'): - """ Creates a diagonal operator with a certain power spectrum. + """ Creates a diagonal operator with the given power spectrum. + Constructs a diagonal operator that lives over the specified domain, or - its harmonic domain in case it is not harmonic. + its default harmonic codomain in case it is not harmonic. + Parameters ---------- domain : DomainObject Domain over which the power operator shall live. If this is not a - harmonic domain, it will return an operator for its harmonic domain + harmonic domain, it will return an operator for its harmonic codomain instead. - power_spectrum : {array-like, method} + power_spectrum : (array-like, method) An array-like object, or a method that implements the square root of a power spectrum as a function of k. - dtype : type, *optional* + dtype : type *optional* dtype that the field holding the power spectrum shall use - {default : None} - if dtype == None: passes this on to constructor of Field - distribution_strategy : string, *optional* + (default : None). + if dtype == None: the dtype of `power_spectrum` will be used. + distribution_strategy : string *optional* Distributed strategy to be used by the underlying d2o objects. - {default : 'not'} + (default : 'not') + Returns ------- - DiagonalOperator : An operator that lives that implements the given power - spectrum. + DiagonalOperator : An operator that implements the given power spectrum. + """ + if not domain.harmonic: fft = FFTOperator(domain) domain = fft.target[0]