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