Tools to build an acquisition model and invert it
The PySimulators package provides tools to represent the data acquisition by an instrument and solvers to invert it. The acquisition is decomposed in sub-systems that are represented by operators. The package also provides additional helpers to manipulate maps and timelines.
What’s new ?
- New operator:
ConvolutionTruncatedExponentialOperator
- An
Acquisition
contains now a Scene
, an Instrument
and a Sampling
instance
- MPI-fied
Acquisition
- MPI-fied
Instrument
- MPI-fied
PackedTable
PackedTable
improvements:
– generic superclass for: Scene
, Layout
and Sampling
– instance attributes now correspond to the packed arrays. Unpacked arrays are available through the all
attribute
– optimisation when no element is removed or when the packed elements are a slice of all the elements.
– implement __getitem__
– add column
and row
special attributes to LayoutGrid
as functions.
– Add startswith1
keyword in LayoutGrid
to start column and row indexing from 0 or 1.
- Implement
FSCRot2dMatrix
and FSRRot2dMatrix
sparse storage schemes.
- Add method
get_projection_nbytes
to estimate the size of the pointing matrix without requiring to build it
- Implement
Instrument
__getitem__
to select detectors
- Implement
Acquisition
__getitem__
to select detectors and/or samplings
Under the hood:
- Orthogonalize the Galactic-to-Ecliptic rotation matrix to machine precision to avoid loss of precision when using the transpose for the inverse.
- Fix in get_noise, draw one realization per detector.
- For quantities with structured dtype, getitem should never make a copy.
- Implement projection’s
restrict
method in Fortran, to avoid large temporaries and significantly improve memory handling
What’s new ?
- New Operators for coordinate conversions:
– CartesianEquatorial2GalacticOperator
– CartesianGalactic2EquatorialOperator
– CartesianEquatorial2HorizontalOperator
– CartesianHorizontal2EquatorialOperator
– SphericalEquatorial2GalacticOperator
– SphericalGalactic2EquatorialOperator
– SphericalEquatorial2HorizontalOperator
– SphericalHorizontal2EquatorialOperator
- New interface to healpy, with operators:
– Healpix2CartesianOperator
– Cartesian2HealpixOperator
– Healpix2SphericalOperator
– Spherical2HealpixOperator
– HealpixConvolutionGaussianOperator
- New sparse storages:
– fsc (fixed size sparse column)
– fsr (fixed size sparse row)
– fsc_rotation3d (fsc for polarized data)
– fsr_rotation3d (fsr for polarized data)
- Implement ProjectionOperator (as a SparseOperator subclass), using sparse matrix types FSRMatrix and FSRRotation3dMatrix. This class will supersede ProjectionInMemoryOperator and ProjectionOnFlyOperator. Implemented methods are:
– canonical_basis_in_kernel
– restrict
– pT1
– pTx_pT1
- In Layout
– allow unpacked special attributes to be set
– expose attribute spacing, layout_center, layout_angle, layout_xreflection, layout_yreflection
– remove autoscale keyword in plot method. Make sure transform has no side effects
- Make Pointing a general purpose class. Add PointingEquatorial, PointingScanEquatorial and PointingHorizontal
Under the hood:
- Make MADmap1 a package inside directory interfaces
- Lazy loading of interface modules
- In Layout
– use vertices to compute centers
– enforce attribute ‘removed’ to be an array of the layout’s shape
- Make PySimulators compatible with gfortran 4.5
What’s new ?
- Use the Layout class in Instrument instances to represent the detectors. Remove nvertices attribute
- Add keywords commin and commout in Instrument’s
__init__
(instead of a single comm)
- Add convex_hull function in geometry.py, using scipy.spatial.Delaunay
- Add method get_projection_operator and abstract get_projection_matrix to the Acquisition class
- Implement Acquisition.get_noise and Acquisition.get_invntt_operator methods. Add file noises.py
- MADmap1 interface implementation
Under the hood:
- In Layout, handle all dtype’s kinds for the unpacked removed value
- Switch off composition rule for ProjectionOperator and DiagonalOperator with rightward broadcasting
- In Acquisition, use instrument’s communicators: comm_map → commin and comm_tod → commout