ift issueshttps://gitlab.mpcdf.mpg.de/groups/ift/-/issues2018-04-02T09:42:38Zhttps://gitlab.mpcdf.mpg.de/ift/nifty/-/issues/62FFTOperator fails for zerocenter=True spaces.2018-04-02T09:42:38ZDixit, Jait (jaitd)FFTOperator fails for zerocenter=True spaces.Both scenarios fail:
```
from nifty import *
x = RGSpace((16,), zerocenter=True)
f = Field((x,x), val=1)
fft = FFTOperator(x)
fft(f, spaces=(1,))
```
```
from nifty import *
x = RGSpace((16,), zerocenter=True)
f = Field((x,), val=1)
fft ...Both scenarios fail:
```
from nifty import *
x = RGSpace((16,), zerocenter=True)
f = Field((x,x), val=1)
fft = FFTOperator(x)
fft(f, spaces=(1,))
```
```
from nifty import *
x = RGSpace((16,), zerocenter=True)
f = Field((x,), val=1)
fft = FFTOperator(x)
fft(f)
```https://gitlab.mpcdf.mpg.de/ift/nifty/-/issues/61Unreachable code in _local_transform in rg_transforms.py?2018-04-02T09:42:38ZTheo SteiningerUnreachable code in _local_transform in rg_transforms.py? In rg_transform.py in _local_transform the following check is made:
if axes is None or 0 in axes:
local_offset_Q = val.distributor.local_shape[0] % 2
Since _local_transform is only called `if not ( axes is None or 0 ... In rg_transform.py in _local_transform the following check is made:
if axes is None or 0 in axes:
local_offset_Q = val.distributor.local_shape[0] % 2
Since _local_transform is only called `if not ( axes is None or 0 in axes)` (see line 424 in rg_transform.py) this line of code is rever reached. https://gitlab.mpcdf.mpg.de/ift/D2O/-/issues/21Create dedicated object for 'distribution_strategy'2017-07-06T05:50:22ZTheo SteiningerCreate dedicated object for 'distribution_strategy'Only global-type distribution strategies are comparable by their name directly. In order to compare local-type distribution strategies as well -> implement an object which represents the distribution strategy. For 'freeform' this include...Only global-type distribution strategies are comparable by their name directly. In order to compare local-type distribution strategies as well -> implement an object which represents the distribution strategy. For 'freeform' this includes the individual slices lengths. Theo SteiningerTheo Steiningerhttps://gitlab.mpcdf.mpg.de/ift/D2O/-/issues/20Initialization: prefer global_shape/local_shape over shape of data2017-07-06T05:50:22ZTheo SteiningerInitialization: prefer global_shape/local_shape over shape of dataRight now, durring initialization if some init-data is provided, the shape of this data is prefered over an explicitly given shape.
-> Change the behavior in Distributor-Factory.
-> Make a disperse_data instead of a distribute_data a...Right now, durring initialization if some init-data is provided, the shape of this data is prefered over an explicitly given shape.
-> Change the behavior in Distributor-Factory.
-> Make a disperse_data instead of a distribute_data at the end of init.
Theo SteiningerTheo Steiningerhttps://gitlab.mpcdf.mpg.de/ift/nifty/-/issues/60Configuration for FFT during (de)briefing.2016-10-25T13:23:30ZTheo SteiningerConfiguration for FFT during (de)briefing.Make it optional, whether the briefing should try to (FFT-)transform the input. By this the user could avoid that somewhere still a FFT takes place, although not wanted.Make it optional, whether the briefing should try to (FFT-)transform the input. By this the user could avoid that somewhere still a FFT takes place, although not wanted.Theo SteiningerTheo Steiningerhttps://gitlab.mpcdf.mpg.de/ift/nifty/-/issues/59PowerSpectrumOperator2016-10-25T13:26:17ZTheo SteiningerPowerSpectrumOperatorEvaluate if it makes sense to create an operator which extracts the power spectrum from a given field along a certain 'space-axis'. Evaluate if it makes sense to create an operator which extracts the power spectrum from a given field along a certain 'space-axis'. Theo SteiningerTheo Steiningerhttps://gitlab.mpcdf.mpg.de/ift/nifty/-/issues/58Operator behaviour being faced with fields on multiple spaces2016-10-25T13:26:02ZTheo SteiningerOperator behaviour being faced with fields on multiple spacesBy default: The domains on which the operator is defined must match completely.
Optional: 'spaces'-keyword which tells the operator which of the field's spaces correspond to its domains.
By default: The domains on which the operator is defined must match completely.
Optional: 'spaces'-keyword which tells the operator which of the field's spaces correspond to its domains.
Theo SteiningerTheo Steiningerhttps://gitlab.mpcdf.mpg.de/ift/nifty/-/issues/57Add sanity checks to power_space_paradict.2017-01-20T00:36:37ZTheo SteiningerAdd sanity checks to power_space_paradict.Theo SteiningerTheo Steiningerhttps://gitlab.mpcdf.mpg.de/ift/nifty/-/issues/56RGSpace smoothing2016-10-25T13:23:45ZTheo SteiningerRGSpace smoothingRewrite the RGSpace smoothing method such that it uses a Fourier Transformation Operator instead of self.calc_transform(...).Rewrite the RGSpace smoothing method such that it uses a Fourier Transformation Operator instead of self.calc_transform(...).Theo SteiningerTheo Steiningerhttps://gitlab.mpcdf.mpg.de/ift/nifty/-/issues/55Reduce rg_power_space to generic power_space2016-07-22T20:57:33ZTheo SteiningerReduce rg_power_space to generic power_spaceThe rg_power_space can be made generic enough to be suitable for all spaces.
The power_indices get injected as a reference to the certain class.
The space-specific parameters get passed in terms of the paradict. -> The __init__ of th...The rg_power_space can be made generic enough to be suitable for all spaces.
The power_indices get injected as a reference to the certain class.
The space-specific parameters get passed in terms of the paradict. -> The __init__ of the (RG/LM)PowerIndices classes must be changed such that it accepts paradicts. Theo SteiningerTheo Steiningerhttps://gitlab.mpcdf.mpg.de/ift/nifty/-/issues/54Move get_codomain from space to Transformator classes2018-04-02T09:42:38ZTheo SteiningerMove get_codomain from space to Transformator classeshttps://gitlab.mpcdf.mpg.de/ift/nifty/-/issues/53Add check_codomain cache to Transformation Classes2018-04-02T09:42:38ZTheo SteiningerAdd check_codomain cache to Transformation Classeshttps://gitlab.mpcdf.mpg.de/ift/nifty/-/issues/52Merge Transform and Transformation classes2018-04-02T09:42:38ZTheo SteiningerMerge Transform and Transformation classeshttps://gitlab.mpcdf.mpg.de/ift/nifty/-/issues/51Make HPSpace, LMSpace, GLSpace available even if the needed modules are not a...2016-07-22T22:57:35ZTheo SteiningerMake HPSpace, LMSpace, GLSpace available even if the needed modules are not available....just raise an exception in doubt....just raise an exception in doubt.Theo SteiningerTheo Steiningerhttps://gitlab.mpcdf.mpg.de/ift/nifty/-/issues/50Use gdi(gc[fft_module]) in RGRGTransformation.__init__2018-04-02T09:42:38ZTheo SteiningerUse gdi(gc[fft_module]) in RGRGTransformation.__init__https://gitlab.mpcdf.mpg.de/ift/nifty/-/issues/49Move `check_codomain` in Transformation to child classes2018-04-02T09:42:38ZTheo SteiningerMove `check_codomain` in Transformation to child classeshttps://gitlab.mpcdf.mpg.de/ift/nifty/-/issues/48LMSpace with complex signal space partners2017-01-20T00:46:08ZTheo SteiningerLMSpace with complex signal space partnersLMSpace stores only one half of the complex-conjugated pairs one gets if the signal field was real valued. In this case the dot product between a=(a_-1, a_0, a_1) and b=(...) can be computed by simply taking a_0*b*0 + 2*(a_1.real*b_1.rea...LMSpace stores only one half of the complex-conjugated pairs one gets if the signal field was real valued. In this case the dot product between a=(a_-1, a_0, a_1) and b=(...) can be computed by simply taking a_0*b*0 + 2*(a_1.real*b_1.real + a_1.imag*b_1.imag) as a_-1 and a_1 are complex-conjugated.
If the signal space field was complex, one gets something with cc-symmetry for the real and the imaginary part of this field respectively; modulo i. FFT is linear -> the result has no cc-symmetry anymore.
Solution: Store the full lm spectrum for LMSpace. Apply the action of libsharp (transform, smooth) on the half sum and half difference of a field with its transposed as this reconstructs the cc-symmetric parts comming from the real (imaginary, resp.)-part of the signal field. Theo SteiningerTheo Steiningerhttps://gitlab.mpcdf.mpg.de/ift/nifty/-/issues/47meta_volume vs volume2016-07-22T20:57:34ZTheo Steiningermeta_volume vs volumeSpace.weight methods use volume instead of meta volume.
Isn't this choice arbitrary? By excluding pixes from the weight that contain no new information, we weight according to the 'information volume' instead with the 'geometrical volu...Space.weight methods use volume instead of meta volume.
Isn't this choice arbitrary? By excluding pixes from the weight that contain no new information, we weight according to the 'information volume' instead with the 'geometrical volume'. Also: LMspace (at least for real signal space partners) stores only one half of the pair-wise complex conjugated numbers, RGSpace with complexity==1 stores the full thing. The inner dot product treats them differently.
Definition of meta-volume:
The meta volumes are the volumes associated with each component of a field, taking into account field components that are not explicitly included in the array of field values but are determined by symmetry conditions.Theo SteiningerTheo Steiningerhttps://gitlab.mpcdf.mpg.de/ift/nifty/-/issues/46Implement real <-> complex decorator2016-07-20T23:32:35ZTheo SteiningerImplement real <-> complex decoratorSpaces that naturally act on real arrays should apply their action on the real and imaginary part of complex input arrays independently. Maybe the most conventient solution for this is to write a decorator, which
- decomposes complex i...Spaces that naturally act on real arrays should apply their action on the real and imaginary part of complex input arrays independently. Maybe the most conventient solution for this is to write a decorator, which
- decomposes complex input arrays
- applies the space action on .real and .imag independently
- composes the complex return array
https://gitlab.mpcdf.mpg.de/ift/D2O/-/issues/19reshaping -> enfold/defold2017-07-06T05:50:22ZTheo Steiningerreshaping -> enfold/defoldenfold in the slicing distributor relies on the fact, that the global axes correspond to the local array axes, as it operates on local data from `get_local_data()`.
In general this is not true for generic distribution strategies. enfold in the slicing distributor relies on the fact, that the global axes correspond to the local array axes, as it operates on local data from `get_local_data()`.
In general this is not true for generic distribution strategies. Theo SteiningerTheo Steininger