Log message:
What?s new ?
Python 3 support
add settingerr context manager to contextually set error behaviour
add environment variables PYOPERATORS_NO_MPI (to prevent importing mpi4py on \
supercomputers such as NERSC?s edison to avoid crashes on login nodes), \
PYOPERATORS_GC_NBYTES_THRESHOLD, PYOPERATORS_MEMORY_ALIGNMENT, \
PYOPERATORS_MEMORY_TOLERANCE and PYOPERATORS_VERBOSE (see config.py file)
add helpers last, last_is_not, ilast and ilast_is_not, split
improved ProxyOperator: operators in a proxy group may have different \
shapes, and can access the operator?s attributes
Return algorithm instance in pcg ?s output
add pool_threading context manager
add MPI rank in strinfo
in iterative algorithms, silence MPI processes with rank>0
add timers to measure the time spent in Operator?s __call__ method and in \
MPI operations
API changes, deprecations:
rename openmp_num_threads ? omp_num_threads
deprecate distribute and distribute_slice
change isclassattr calling sequence
Under the hood:
common superclass for DiagonalOperator, DiagonalNumexprOperator and MaskOperator
add Cartcomm communicator and Comm.Create_cart method in fake_mpi module
morph MPIDistributionIdentityOperator into IdentityOperator is communicator \
size is 1
allow implicit shape SparseBase subclasss
update for scipy 0.14
new decorator deprecated
add setup.py?s clean command (contributed by G. Vaillant)
automatic cythonization of files (contributed by G. Vaillant)
14 May 2014
PyOperators 0.12
What?s new ?
add a nbytes property, indicating the operator storage footprint.
delete method for operators, to force deletion of an operator, alongside its \
associated operators. If the storage footprint of the deleted operators exceeds \
a certain threshold GC_NBYTES_THRESHOLD, a garbage collection is triggered.
ProxyOperator for on-the-fly computations. In a group of proxy operators, \
only one actual operator is cached. The proxy operators inherit all the \
properties from the actual operators.
add a context manager setting to change a global variable value.
Under the hood:
Renamed operator flag ?inplace_reduction? ? ?update_output?. And make it a \
regular flag, i.e. the ?update_output? is no more inferred from the direct \
method signature.
allow generators in composite operators.
26 Feb 2014
PyOperators 0.11
What?s new ?
New rule manager: new mechanism to enable or disable simplification rules \
inside a with context. The rule trigger none is implemented and it inhibits all \
algebraic simplifications if set to True.
API change: the multiplication sign * is now context-dependent: composition \
for linear operators and element-wise multiplication otherwise.
New operator DenseBlockDiagonalOperator. Extra dimensions of arrays are \
interpreted as diagonal blocks. This operator is broadcastable:
? against vectors: multiplying a DenseBlockDiagonalOperator initialised with \
an array of shape (L, 1, M, N) by a tensor of shape (P, N) gives a tensor of \
shape (L, P, M)
? against other DenseBlockDiagonalOperators: multiplying two of them \
initialised with arrays of shapes (K, 1, M, N) and (L, N, P) gives a \
DenseBlockDiagonalOperator initialised with an array of shape (K, L, M, P)
DenseOperator is now implicit shape and broadcastable: an M?N DenseOperator \
multiplied by a tensor of shape (P, Q, N) gives a tensor of shape (P, Q, M).
Make asoperator return an explicit shape DiagonalOperator, DenseOperator or \
DenseBlockDiagonalOperator for arrays of dimensions 1, 2 or more if the keyword \
constant is not set to True.
New operators: PowerOperator, ReciprocalOperator, SqrtOperator and \
SquareOperator.
Helper functions:
? reshape_broadcast to reshape an array to a broadcastable shape, by using \
0-strides along the missing dimensions
? broadcast_shapes to return the shape of the output obtained by \
broadcasting arrays of given shapes
? add reverse option for first, first_is_not, ifirst and ifirst_is_not.
Improved __str__ for non-linear operators.
New ufunc abs2, which returns the square modulus of a complex input.
DEPRECATED: use isscalarlike instead of isscalar.
Under the hood:
Add PyOperatorsWarning and PyOperatorsDeprecationWarnings.
Rename the decorators module ? flags.
Move operator?s rules ? rules module.
Add CopyOperator.
16 Jan 2014
PyOperators 0.10
What?s new ?
SparseOperator. The sparse storage can be anyone from the scipy.sparse \
package (except the LIL format, which is not suited for matrix-vector \
multiplication)
Change binary rule priorities to favour specialized rules and subclasses
Add mechanism to prevent CompositeOperator from morphing into their unique \
component. This mechanism allow GroupOperator to only have one operand
Remove DiagonalNumexprNonSeparableOperator, it?s not possible to avoid \
calling get_data in __init__ and it complicates the broadcasting operators too \
much
API change: the mask convention for PackOperator and UnpackOperator is \
changed. True means kept (similar to Fortran?s pack & unpack). Make \
PackOperator and UnpackOperator subclass BroadcastingBase
Under the hood:
Handle infinity in assert_same
Improve rule?s __str__ when the predicate in a lambda function
Add ?_reset? method for Operators
Add ?broadcast? keyword to strshape
Add debugging for the composition and commutative rules
Cleanup broadcasting operators, including shape and dtype. Improved testing
Fix ?square? flag when morphing from a DiagonalOperator or a MaskOperator to \
ZeroOperator
In ?todense?, use dtype=int when the operator?s dtype is None
Hack to add shapein and shapeout to Operator?s __repr__
In CommutativeCompositeOperator, get info from the operands before applying \
the simplification rules
Add ZeroOperator rule for MultiplicationOperator. Make sure a copy of the \
other operator is done for AdditionOperator
In ?uninterruptible? contextmanager, ensure that the SIGINT handler is \
always put back in
14 Oct 2013
PyOperators 0.9
What?s new ?
Rotation2dOperator for rotations in a plane
Rotation3dOperator, about 1 axis (3 conventions), 2 axes (6 conventions, \
including intrinsic and extrinsic rotations) or 3 axes (12 conventions)
Spherical2CartesianOperator & Cartesian2SphericalOperator with \
conventions ?zenith,azimuth?, ?azimuth,zenith?, ?elevation,azimuth? and \
?azimuth,elevation?
NormalizeOperator to obtain unit vectors
DegreesOperator & RadiansOperator for degrees/radians conversions
Implement __ne__ for Operators
Add helper function float_dtype. Rename complex_dtype_for?complex_dtype
Add helper functions one, pi and zero, which return a value of the specified \
dtype.
API change in Operator?s rule:
? in unary rules, use ?C?, ?T?, ?H? or ?I? instead of ?.C?, ?.T?, ?.H? or ?.I?
? binary rule subjects are now specified by a 2-tuple
? use Operator subclass type instead of the string ?{MyOperator}?
API change: IntegrationTrapezeWeightOperator ? IntegrationTrapezeOperator
Under the hood:
benchmark and memory_usage functions moved to a distinct distribution \
pybenchmarks
Add test and coverage commands in setup.py
Automatically compute adjoint from transpose, transpose from adjoint, \
inverse_adjoint from inverse_transpose and inverse_tranpose from inverse_adjoint
Fix attribute copy during scalar absorption
In binary rules, use ?==? instead of ?is? in subject matching
In assert_same, allow broadcasting for integer types
Remove obsolete Operator?s isalias method
Make shape_input, shape_output and inplace_reduction non-settable flags
Take forward FFTW instance dtype into account for the backward instance
Remove DirectOperatorFactory and ReverseOperatorFactory
DenseOperator output and input shapes can now be implicit. Don?t rely on \
this feature yet, it will be changed in future versions.
|