ift issueshttps://gitlab.mpcdf.mpg.de/groups/ift/-/issues2018-05-23T09:22:38Zhttps://gitlab.mpcdf.mpg.de/ift/nifty/-/issues/238extra.check_value_gradient_consistency does not work for MultiField2018-05-23T09:22:38ZJakob Knollmuellerextra.check_value_gradient_consistency does not work for MultiFieldextra.check_value_gradient_consistency calls Field.from_random, which does not support drawing random MultiFields.
Does it make more sense to remove the static Field.from_random, which always requires an additional domain, and instead i...extra.check_value_gradient_consistency calls Field.from_random, which does not support drawing random MultiFields.
Does it make more sense to remove the static Field.from_random, which always requires an additional domain, and instead introduce something like domain.random(random_type)? Alternatively one has to include checks for MultiField or regular Field.
Jakobhttps://gitlab.mpcdf.mpg.de/ift/nifty/-/issues/237Comparing Fields to floats2018-05-16T10:08:38ZPhilipp Arrasparras@mpa-garching.mpg.deComparing Fields to floatsIs the following behaviour intended?
```
import nifty4 as ift
f = ift.Field.full(ift.RGSpace(1), 1.)
if f == 0.:
print(f==0.)
```
Results in:
```
nifty4.Field instance
- domain = DomainTuple, len: 1
RGSpace(shape=(1,), distan...Is the following behaviour intended?
```
import nifty4 as ift
f = ift.Field.full(ift.RGSpace(1), 1.)
if f == 0.:
print(f==0.)
```
Results in:
```
nifty4.Field instance
- domain = DomainTuple, len: 1
RGSpace(shape=(1,), distances=(1.0,), harmonic=False)
- val = array([False])
```https://gitlab.mpcdf.mpg.de/ift/nifty/-/issues/236try except in InverseEnabler.draw_sample2018-05-02T08:01:18ZChristoph Lienhardtry except in InverseEnabler.draw_samplejust catching every error in the `draw_sample` function of the `InversionEnabler` class might shadow 'real' errors.
IMO only `ValueError`s should be excepted.
(just had a problem and only got the 'cannot draw from inverse of this opera...just catching every error in the `draw_sample` function of the `InversionEnabler` class might shadow 'real' errors.
IMO only `ValueError`s should be excepted.
(just had a problem and only got the 'cannot draw from inverse of this operator', which is weird, if the InversionEnabler is on. Also I was not drawing from the inverse.
The reason was, that the `try` clause caught a completely different error jumped into `except` where it tried to draw a sample from the inverse of said operator, which was not implemented for that operator)https://gitlab.mpcdf.mpg.de/ift/nifty/-/issues/234Documentation for our volume factor approach?2018-06-27T15:54:46ZMartin ReineckeDocumentation for our volume factor approach?Do we have a short document describing why (and how) our approach with almost no volume factors works?
Vanessa Boehm asked me for an explanation, which I can't give, and I expect more requests of that sort.
@reimar, would it be possible...Do we have a short document describing why (and how) our approach with almost no volume factors works?
Vanessa Boehm asked me for an explanation, which I can't give, and I expect more requests of that sort.
@reimar, would it be possible to add something to our documentation?https://gitlab.mpcdf.mpg.de/ift/nifty/-/issues/233Incorrect Energy.curvature() call in minimizers/conjugate_gradient.py?2018-04-20T13:47:34ZLukas PlatzIncorrect Energy.curvature() call in minimizers/conjugate_gradient.py?In [minimization/conjugate_gradient.py, line 76](https://gitlab.mpcdf.mpg.de/ift/NIFTy/blob/NIFTy_4/nifty4/minimization/conjugate_gradient.py#L76) there is a call to 'energy.curvature(d)'.
However all energies defined in NIFTy only have...In [minimization/conjugate_gradient.py, line 76](https://gitlab.mpcdf.mpg.de/ift/NIFTy/blob/NIFTy_4/nifty4/minimization/conjugate_gradient.py#L76) there is a call to 'energy.curvature(d)'.
However all energies defined in NIFTy only have argument-less curvature methods.
Still, the ConjugateGradient Class is usable without error messages. What am I missing?https://gitlab.mpcdf.mpg.de/ift/nifty/-/issues/232Random seed in extra/tests2018-04-26T15:01:09ZPhilipp Arrasparras@mpa-garching.mpg.deRandom seed in extra/testsIf one calls tests like `nifty4.extra.consistency_check(op)` the random seed afterwards is different. Would it be sensible to reset the numpy random seed?If one calls tests like `nifty4.extra.consistency_check(op)` the random seed afterwards is different. Would it be sensible to reset the numpy random seed?https://gitlab.mpcdf.mpg.de/ift/nifty/-/issues/231draw_sample() definition2018-03-28T13:42:23ZChristoph Lienharddraw_sample() definitionthe `draw_sample()` function for linear operators seems to lack a precise definition.
Whereas in the case of a curvature C the `draw_sample` function draws a sample from the corresponding Gaussian approximation of the underlying probab...the `draw_sample()` function for linear operators seems to lack a precise definition.
Whereas in the case of a curvature C the `draw_sample` function draws a sample from the corresponding Gaussian approximation of the underlying probability distribution with said curvature (i.e. exp(-0.5 x^+ Cx) ), in the case of a `DiagonalOperator` D it seems to use the distribution wrt the inverse of it (i.e. exp(-0.5 x^+ D^-1 x) )
I propose changing the latter to match the former for consistency.
The curvature definition is more likely to be the one that someone actually wants (at least for the curvature case. For the diagonal operator case one could start arguing, but ... consistency!). Also the `draw_sample` function for the `DiagonalOperator` class is not that hard to change.https://gitlab.mpcdf.mpg.de/ift/nifty/-/issues/230Generalized DOFDistributor2018-03-23T15:45:22ZMartin ReineckeGeneralized DOFDistributorIf we extend the `DOFDistributor` to allow for an optional set of weights, it becomes much more powerful.
For example, such an enhanced `DOFDistributor` can be used to describe a line-of-sight response, so we don't need a dedicated opera...If we extend the `DOFDistributor` to allow for an optional set of weights, it becomes much more powerful.
For example, such an enhanced `DOFDistributor` can be used to describe a line-of-sight response, so we don't need a dedicated operator for this any more.
(The complicated task of computing the appropriate mappings and weights does not go away of course, but it is now separated from the distribution operation itself, which is good.)
@ensslint, @kjako, @reimar, @pfrank, @parras, would this be a way to go forward?https://gitlab.mpcdf.mpg.de/ift/D2O/-/issues/25Meta-issue: how to deal with open D2O issues?2018-03-20T14:57:13ZMartin ReineckeMeta-issue: how to deal with open D2O issues?@theos, @ensslint:
There are currently 22 open issues in D2O, and I don't expect that Theo will have the time to work on them. Unfortunately, no one else has the necessary knowledge.
Any suggestions how to proceed here?@theos, @ensslint:
There are currently 22 open issues in D2O, and I don't expect that Theo will have the time to work on them. Unfortunately, no one else has the necessary knowledge.
Any suggestions how to proceed here?https://gitlab.mpcdf.mpg.de/ift/nifty/-/issues/229Allow redirection of NIFTy's console output2018-03-14T18:56:03ZMartin ReineckeAllow redirection of NIFTy's console outputNIFTy still prints to the console occasionally (via the dobj.mprint() method). It should be possible to redirect this output to arbitrary file handles (or /dev/null) on user request.NIFTy still prints to the console occasionally (via the dobj.mprint() method). It should be possible to redirect this output to arbitrary file handles (or /dev/null) on user request.https://gitlab.mpcdf.mpg.de/ift/nifty/-/issues/228diagonal Operator with zeros2018-03-13T12:41:15ZReimar H Leikediagonal Operator with zerosCurrently the DiagonalOperator always has the capability of inverse_times. However, this is only legal if there are no zeros on the diagonal. One should either document that a non-zero diagonal is expected or change the properties of the...Currently the DiagonalOperator always has the capability of inverse_times. However, this is only legal if there are no zeros on the diagonal. One should either document that a non-zero diagonal is expected or change the properties of the operator dependent on the input.https://gitlab.mpcdf.mpg.de/ift/nifty/-/issues/226Minimizers don't work reliably on nonlinear problems2019-02-01T08:36:45ZMartin ReineckeMinimizers don't work reliably on nonlinear problemsWe are seeing quite a lot of strange problems in our minimizations, typically when nonlinearities are involved.
So far I have not found any real bugs in our minimizers, so my suspicion is that we have to add constraints to our fields of ...We are seeing quite a lot of strange problems in our minimizations, typically when nonlinearities are involved.
So far I have not found any real bugs in our minimizers, so my suspicion is that we have to add constraints to our fields of unknowns, to prevent them wandering into regions where energy values are too high, gradients too small etc. Our current attempts to clip the nonlinearities or to manually reset the positions whenever they move out of the accepted area do not work well, so I suggest trying algorithms like SciPy's 'L-BFGS-B', 'COBYLA', etc., which have native support for constraints.
If that turns out to work well, we can try to add constraints also to our own solvers.https://gitlab.mpcdf.mpg.de/ift/nifty/-/issues/225broken link in Readme2018-02-22T13:00:52ZSilvan Streitbroken link in ReadmeThe link to the informal introduction in https://gitlab.mpcdf.mpg.de/ift/NIFTy#first-steps is broken.The link to the informal introduction in https://gitlab.mpcdf.mpg.de/ift/NIFTy#first-steps is broken.https://gitlab.mpcdf.mpg.de/ift/nifty/-/issues/224Add kwargs to plotting2018-03-01T20:29:55ZPhilipp Arrasparras@mpa-garching.mpg.deAdd kwargs to plottingCan we add `linewidth` and `alpha` to the kwargs supported by 1d-plotting routines? If so, I can do it.
Are there perhaps additional kwargs you guys need?Can we add `linewidth` and `alpha` to the kwargs supported by 1d-plotting routines? If so, I can do it.
Are there perhaps additional kwargs you guys need?https://gitlab.mpcdf.mpg.de/ift/nifty/-/issues/223power_synthesize() vs. draw_sample()2018-02-21T21:11:06ZMartin Reineckepower_synthesize() vs. draw_sample()Are there any fundamental differences between
- calling `power_synthesize(f)`, and
- calling `DiagonalOperator(diagonal=f).draw_sample()`?
I think we have some duplicate code here, which could be cleaned up.
Related question: does `dra...Are there any fundamental differences between
- calling `power_synthesize(f)`, and
- calling `DiagonalOperator(diagonal=f).draw_sample()`?
I think we have some duplicate code here, which could be cleaned up.
Related question: does `draw_sample()` work if the operator has complex values on the diagonal?
@reimar, @kjako, @parras, any comments?https://gitlab.mpcdf.mpg.de/ift/nifty/-/issues/222Bug in LaplaceOperator2018-02-21T21:21:01ZMartin ReineckeBug in LaplaceOperatorThe current version of `LaplaceOperator` has a bug that causes the input field to be modified whenever its `adjoint_times()` method is called.
The fix is trivial and will be applied in a few minutes.
@kjako, @reimar, @parras, @pfrank, @...The current version of `LaplaceOperator` has a bug that causes the input field to be modified whenever its `adjoint_times()` method is called.
The fix is trivial and will be applied in a few minutes.
@kjako, @reimar, @parras, @pfrank, @dpumpe, please check if this maybe fixes any mysterious problems you have encountered!https://gitlab.mpcdf.mpg.de/ift/nifty/-/issues/221DiagonalOperator diagonal() function as property?2018-02-17T13:58:55ZChristoph LienhardDiagonalOperator diagonal() function as property?The DiagonalOperator class has a function diagonal() returning the respective Field.
IMHO this should be a property, since e.g.
```
diagonal_val = operator.diagonal().val
```
just looks stupid (from a purely designy pythonic point of vi...The DiagonalOperator class has a function diagonal() returning the respective Field.
IMHO this should be a property, since e.g.
```
diagonal_val = operator.diagonal().val
```
just looks stupid (from a purely designy pythonic point of view).
The main philosophy I propose in this case is that from a class point of view 'diagonal' to DiagonalOperator is the same as 'val' to Field.
Following this the getter of the proposed property 'diagonal' should not return a copy of the diagonal (in contrast to what the current function diagonal() returns) since the property 'val' of Field does not do this either.https://gitlab.mpcdf.mpg.de/ift/nifty/-/issues/220Link in docu broken2018-02-12T14:48:28ZPhilipp Arrasparras@mpa-garching.mpg.deLink in docu brokenAlso found by @wmarg: This link [here](https://gitlab.mpcdf.mpg.de/ift/NIFTy/blob/NIFTy_4/docs/source/start.rst#L19) is broken. Where should it actually point?Also found by @wmarg: This link [here](https://gitlab.mpcdf.mpg.de/ift/NIFTy/blob/NIFTy_4/docs/source/start.rst#L19) is broken. Where should it actually point?https://gitlab.mpcdf.mpg.de/ift/nifty/-/issues/219Power space not working in more than 2 dim.2018-02-06T17:18:02ZMargret WesterkampPower space not working in more than 2 dim.For changes in `demos/wiener_filter_via_curvature.py` of the dimension from 2 to 3 comes the error:
```
Traceback (most recent call last):
File "wiener_filter_via_curvature.py", line 43, in <module>
power_space = ift.PowerSpace(ha...For changes in `demos/wiener_filter_via_curvature.py` of the dimension from 2 to 3 comes the error:
```
Traceback (most recent call last):
File "wiener_filter_via_curvature.py", line 43, in <module>
power_space = ift.PowerSpace(harmonic_space)
File "/home/philipp/.local/lib/python3.6/site-packages/nifty4-3.9.0-py3.6.egg/nifty4/spaces/power_space.py", line 139, in __init__
File "/home/philipp/.local/lib/python3.6/site-packages/nifty4-3.9.0-py3.6.egg/nifty4/spaces/rg_space.py", line 93, in get_k_length_array
File "/home/philipp/.local/lib/python3.6/site-packages/nifty4-3.9.0-py3.6.egg/nifty4/field.py", line 77, in __init__
MemoryError
```
What is wrong here?https://gitlab.mpcdf.mpg.de/ift/nifty/-/issues/218Bug in `probe_with_posterior_samples`2018-02-05T13:30:18ZPhilipp Arrasparras@mpa-garching.mpg.deBug in `probe_with_posterior_samples`Please look at the output of `demos/wiener_filter_via_hamiltonian.py` in the branch `work_on_demos`. There is a huge discrepancy between `posterior_mean.png` and `reconstruction.png`.
The formulae in `StatCalculator` seem to be correct.Please look at the output of `demos/wiener_filter_via_hamiltonian.py` in the branch `work_on_demos`. There is a huge discrepancy between `posterior_mean.png` and `reconstruction.png`.
The formulae in `StatCalculator` seem to be correct.