Rework methods taking an "axes" keyword
At the moment, there are a lot of routines which take an "axes" keyword, and in many of these, it could be avoided altogether or reduced to an integer.
Example 1: the "weight" method of DomainObject and derived classes
axes is mostly used to determine, which particular axes in a
Field belong to the space. In principle, all of this could be avoided if this method simply returned an array with one weight per pixel (or a scalar if all weights are equal), and leave all the juggling with array indices to Field.weight().
As things are, there are various alternative implementations of the re-shaping task (look for example at the
weight methods of
My suggestion is to simplify
weight method to:
def volfactor(self): """ Returns an array containing the object's volume factors. The array must be broadcastable to the space's dimensions (useful if the volume factors are uniform in a direction, e.g. for GLSpace). Alternatively, if all volume factors are equal, returns a scalar. """
... and leave all the operations involving powers, reshaping etc. to the calling
axes variable always contains a tuple with as many entries as the space has dimensions, and the entries take the form
i+2, ... I suggest to pass a scalar integer with the name
first_axis instead, which should be less error-prone.
If there is agreement to go into this direction, there are more cases, but we can discuss them later :)