-
Add complete HWP Jones formalism, including band integration #499
-
Refactor
input_sky.SkyGeneratorto reduce duplicated logic between channel/detector mode and frequency mode by using shared component-generation helpers for CMB, foregrounds, and dipole #501 -
Simple pair differencing map-maker #509
-
Update dependency on Ducc and Numba #502
-
Add multi-frequency support to HealpixMap and SphericalHarmonics. New option for generation of multi-frequency maps in input_sky #496
-
Fix normalization in the generation of gaussian beam alms #494
-
Ducc0 1/f noise generation module included #490
-
Small optimizations in beam convolver #492
-
Fixed a TypeError in Observation when allocate_tod=False in MPI jobs #491
-
Save memory in pointing generation #488
-
Breaking change: Major reworking of the interfaces and handling of inputs across the framework #479, in detail:
- Rework the handling of spherical harmonics by integrating ducc0 as the primary engine for SHT operations, including interpolation.
- New container for healpix maps called HealpixMap and further improvement of the class SphericalHarmonics. All the simulation modules are now only compatible with these new classes.
- MBs replaced by a more flexible and simple module called input_sky.
- Expansion of the class Units with several new functionalities. Integration with astropy and pysm3 improved.
-
Add automatic type-checking with ty #481
-
Stop using sphinxcontrib-asciinema #478
-
TODs handling improved #472
-
Optimize actions and add automatic publishing #465
-
Improve caching system of CI tests #462
-
Use
uvto manage dependencies, run and build the package #462 -
Refurbish HWP handling #463, in detail:
- Create NonIdealHWP class.
- Remove HwpSys class.
- Rename hwp_sys.py to hwp_harmonics.py.
- Unify map scanning methods by making hwp_harmonics.fill_tod() a low-level method which is now executed by the high-level scan_map_in_observations.py.
-
Fix angle in hwp differential emission #452
-
New method
Imo.open_data_file#449 -
Improved
SphericalHarmonicsclass, algebra and I/O implemented #448 -
Change hwp_angle calculation to the complex domain #433
-
Add pre-commit hook to keep syntax compliant with
py3.10+#461 -
Fix issue #459
-
Fix issue #457
-
Fix incorrect handling of HWP with precomputed pointing #456
-
Improve the documentation #450
-
Import Yusuke Takase's grasp2alm code #447
-
Fix the computation of HWP angles #444
-
Add low-level interface to
BrahMap#440 -
Set Mueller matrix phases in Hwp_sys module as class attributes, instead of being hardcoded #442
- Add more tutorials #443
-
Fixed s4,s5,d9,d10 and added s7 in Mbs #437
-
Make sure that the PTEP IMo, the Madam templates, and the static files required to create the HTML reports are installed properly by
pipand enable Binder/Google Colab #436 -
Make the HWP_sys module able to deal with missing pixels, let the output maps to use a different NSIDE than the one of the inputs #432
-
Fix bug in the computation of pointings for the HWP_sys module #429
-
Upgrade PySM to 3.4.2 #431
-
Breaking change: New improved seeding strategy using
RNGHierarchy#414 -
Breaking change: Drop support for Python 3.9, add support for 3.13. Note that this implies that we do no longer support TOAST2, as it does not work with Python 3.10 #409
-
Breaking change: The HWP and ψ angles in the HWP Systematics module have been redefined to be consistent #377
-
Breaking change: The two parameters
ChannelandMbsparamsused inHwpSys.set_parameters()have been renamed tochannelandmbs_params#422 -
Remove extra dependencies from
pyproject.toml#423 -
Add interpolation to
hwp_sys#420 -
Change default ellipticity in IMo vPTEP #419 and improved documentation for beam synthesis #416
-
Measure code coverage in PRs #415
-
Move map rotation from galactic to ecliptic at generation in
mbsand test #413 -
Make actual use of
[skipci]andskip ci]in commit messages #410 -
New option in
Simulation.get_sky()for generating maps per channel, option for storing sky and beam alms in the observations #408 -
Make MPI tests more robusts and produce a “MPI” section in the output report #405
-
Add interface to BrahMap GLS mapmaker and relative tests #400.
-
Replace allreduce with Allreduce in binning.py #407.
-
Function for nullifying tods in the class
Simulation#389. -
Save
det_idxin HDF5 files and make MPI test fail properly #402 -
Option for centering the pointing in the beam convolution plus some reworking of the pointing API (new methods added to the class Observation) #397
-
Bug in
Simulation.get_sky()fixed #398 -
Fix a bug in
prepare_pointings#396 -
Deprecate
apply_hwp_to_obs()andHWP.add_hwp_angle(), remove deprecated functionsSimulation.generate_spin2ecl_quaternions()andwrite_observations() -
Fix docstrings and type hints for
mueller_hwp#381 -
Fix the formatting of a few docstrings #391
-
Common interface to compute pointings and detector polarization angle #378
-
Module for performing the 4π beam convolution #338
-
Make
@_profilepreserve docstrings #371 -
Upgrade Ducc0 to 0.38.0 and clarify how to compile Ducc0 from sources #383, #390, #394
-
Update documentation for hwp_sys and non_linearity modules #404
-
Add non-linearity coupling with hwp systematic effects #395
-
Set numba parallelization (only) in compute_signal_for_one_detector in hwp_sys #395
-
Update test_hwp_sys.py #395
-
Change hwp angle variable name in hwp_sys.py so it is cohererent with documentation #395
-
Remove the optical optical power argument from the 2f hwpss code #395
-
Update test_hwp_diff_emiss.py #395
-
Add option to pass a seed to generate a random g_1 term in the non-linearity module #395
-
Fix a bug in using MPI parallelization in hwp_sys #395
-
Breaking change: Bug in the 1/f noise generation has been corrected. Previously, the frequency array was miscalculated due to an incorrect factor of 2 in the sample spacing passed to the SciPy function fft.rfftfreq. #362.
-
Breaking change: Change to the pointing API #358, in detail:
- DetectorInfo has three new attributes: pol_angle_rad (polarization angle), pol_efficiency (polarization efficiency)and mueller_hwp (mueller matrix of the HWP).
- get_pointings() return only the orientation ψ of the detector, the polarization angle is a separate variable stored in the
Observationclass. The same class also handles the mueller_hwp for each detector, and it has a new bool variablehas_hwpthat is set to true if an HWP object is passed toprepare_pointings(). - The mock vPTEP IMo has been updated accordingly.
- The
HWPclass has a new field called mueller, that contains the mueller matrix of the HWP. - The function
scan_map()now handles three possible algebras: (i) no HWP, (ii) ideal HWP, (iii) generic optical chain.
-
Implementation of distributing detectors across the MPI processes by grouping them according to given attributes #334
-
Breaking change:
PointingSys()now requiresObservationas an argument. And several functions to add pointing systematics are merged intoleft_multiply_syst_quats(). -
Breaking change: Redefinition (ωt instead of 2ωt) of the hwp angle returned by
get_pointings(). Change in the pointing returned byObservation.get_pointings(), now behaving as it was before this commit. Documentation updated accordingly. #340 -
Restructure the manual and use a new, cleaner style #342
-
Module for including nonlinearity in the simulations #331
-
Improve the documentation of the binner and the destriper #333
-
Make the code compatible with Python 3.12 #332
-
plot_fp.py which visualizes focal plane and
DetectorInfois implemented. Also it can generate a dector list file by clicking visualized detectors. The function is executable by:python -m litebird_sim.plot_fp#345 -
Simulation.add_noise() uses self.random as default random number generator #349
-
Mbs updated, code aligned to pysm 3.4.0, CO lines included plus other new foreground models #347
-
Breaking change: new API for pointing computation #319. Here is a in-depth list of all the breaking changes in this PR:
- Quaternions describing the orientation of the detectors must now be encoded using a
RotQuaternionobject; plain NumPy arrays are no longer supported. - Quaternions are now computed using the function
prepare_pointings()(low-level) and the methodSimulation.prepare_pointings()(high-level, you should use this). Pointings are no longer kept in memory until you retrieve them usingObservation.get_pointings(). - Pointings are no longer accessible using the field
pointingsin theObservationclass. (Not 100% true, see below.) They are computed on the fly by the methodObservation.get_pointings(). - The way pointings are returned differs from how they were stored before. The result of a call to
Observation.get_pointings()is a 2-element tuple: the first element contains a(N, 3)NumPy array containing the colatitude θ, the longitude φ, and the orientation ψ, while the second element is an array of the angles of the HWP. Thus, the orientation angle ψ is now stored together with θ and φ. - If you want to pre-compute all the pointings instead of computing them on the fly each time you call
Observation.get_pointings(), you can use the functionprecompute_pointings()(low-level) and the methodSimulation.precompute_pointings()(high-level). This initializes a number of fields in eachObservationobject, but they are shaped as described in the previous point, i.e., ψ is kept in the same matrix as θ and φ. - The argument
dtype_todof the methodSimulation.create_observationshas becometod_typefor consistency with other similar parameters. - The format of the HDF5 files has been slightly changed to let additional information about pointings to be stored.
See the comments in PR#319 and discussion #312 for more details.
- Quaternions describing the orientation of the detectors must now be encoded using a
-
Add data splits in time and detector space to destriped maps #309
-
Fix issue #317
-
Implement a time profiler #308
-
Breaking change: Disambiguate between “polarization angle” and “orientation” #305. A few functions have been renamed as a consequence of this change; however, they are low-level functions that are used internally (
compute_pointing_and_polangle,all_compute_pointing_and_polangle,polarization_angle), so external codes should be unaffected by this PR. -
Breaking change: Reworking of the IO,
write_observationsandread_observationsare now part of the class simulation #293 -
Mbs optionally returns alms instead of maps #306
-
Include the possibility to pass components to fill_tods, add_dipole and add_noise #302
-
Add data splits in time and detector space to binned maps #291
-
Add support for partial multithreading using Numba #276
-
Fixing bug in mbs to pass general bandpass to mbs #271
-
Support for numpy.float128 made optional, this fixes importing issue on ARM architectures #286
-
Improve the documentation about noise simulations #283
-
Use libinsdb to access the IMO #282
-
Move from
flake8/blacktoruff#281 -
New module to simulate HWP systematics #232
-
Breaking change: Change the interface to the binner, implement a new destriper, and make the dependency on TOAST optional #260
-
Breaking change: Drop support for Python 3.7 and 3.8 #254
-
Breaking change: Fix noise seed inconsistency #256
-
Be more robust when parsing UUIDs and URLs coming from the IMo #274
-
Solve typing error in destriper #272
-
Include default PTEP IMO for tests and demos #230
-
Fixed typo in timeordered.rst #250
-
Fix error in reading observation when it does not have tod field #262
-
Bug in mbs for band integration solved #251
-
Some memory optimization #245
-
Improve the docstring for
scan_map_in_observations#248 -
New interface for
make_bin_mapinSimulation#244 -
Added gain drift simulation module #243
-
Enable the use of other names than
todwhen calling the TOAST2 destriper #242 -
Use Poetry instead of Pip to specify the dependencies for the documentation #237
-
Remove bandpass-related warnings #236
-
Add TOD interpolation #233
-
Improve the documentation #231
-
Mbs supports generic bandpasses and can generate solar dipole #227
-
Improve the support for multiple TODs in the same
Observation#225
-
Some memory optimization in pointing production #222, coordinate rotation and noise #223
-
Implement new methods in the
Simulationclass:fill_tods,compute_pos_and_vel,add_dipoleandadd_noise#221 -
Breaking change: add multiple TOD support to
describe_mpi_distributionand make the fieldMpiObservationDescr.tod_dtypea list of strings #220 -
Add links to the manual in the example notebook #219
-
Implement new methods in the
Simulationclass:set_scanning_strategy,set_instrument,set_hwp, and deprecategenerate_spin2ecl_quaternions#217 -
Add
gzip_compressionkeyword towrite_observations#214 -
Run more comprehensive tests on different TOD components #212
-
Add a link to the IMO webpage @SSDC for each entity/quantity/data file included in simulation reports #211
-
Fix issue #209 #210
-
Add flag for coordinate system choice of madam output maps #208
-
Improve support for multiple TODs #205
-
Breaking change Interface of
get_pointingsmodified, new functionget_pointings_for_observationsimplifies the pointing generation for a list of observations #198 -
Ensure chronological order for Madam FITS files and make sure that exporting them to Madam works with MPI #204
-
Properly install Madam template files #202
-
Mark installation errors for rich traceback in CI builds as non fatal #199
-
Fix bug in
make_bin_map#196
-
Update and fix dependencies #192
-
Allow nnz=1 in the destriper #191
-
Improve the performance of the pointing generator #190
-
Add support for Madam (through an external call) #186
- Breaking change The wrapper to the TOAST2 mapmaker has been fixed, and the parameter
baseline_lengthwas renamed tobaseline_length_sto make clear what the measurement unit is #182
-
Breaking change New API for noise module #151:
-
Function
add_noisehas been renamed toadd_noise_to_observations, and its parameternoisetypehas been renamed intonoise_typefor consistency with other parameters (breaking) -
New functions
add_white_noiseandadd_one_over_f_noiseare exported (they were already implemented but were not visible) -
Each
Simulationobject creates random number generators (fieldSimulation.random), in a way that is safe even for MPI applications
-
-
Breaking change New API for
scan_map_in_observationsandadd_dipole_to_observations, which now accept list of pointing matrices and simplify the parameters describing the HWP #171 -
Add a notebook to show an example of how to use the framework (#178)
-
Support the production of maps in Galactic coordinates through the TOAST2 wrapper to the Madam map-maker (#177)
-
Make
make_bin_mapcompute pixel indices instead of requiring them as input, add support for Galactic coordinates #176 -
Use a more robust algorithm to compute pointings #175
-
Improve the documentation for the destriper #172
-
Add a high-pass filter for the noise #169
-
Upgrade NumPy from 1.20 to 1.21, Numba from 0.54 to 0.55, Rich from 6.2 to 11.0 #152
-
Add the ability to create Singularity container from branches different than
master#163 -
Make MBS tests more robust against disappearing temporary directories #162
-
Remove NumPy's and Healpy's deprecation warnings #158
-
Use a cache to speed up CI builds PR#147
-
Create a script that fetches information about the latest release and produce a release announcement PR#156
-
Option for rotating the pointing from ecliptic to galactic coordinates in scan_map #164
-
Fix issue #148
-
Breaking change Drop support for Python 3.6, enable Python 3.9 #136
-
Breaking change Rename keyword
distributetosplit_list_over_processesinSimulation.create_observations#110 -
Breaking change Switch to thermodynamic units in the MBS module #123
-
Functions to write/load TODs to HDF5 files #139
-
Module for simulating hwp systematics (hwp_sys) PR#117. The algebra is described in Giardiello et al.
-
Fix Singularity builds #145
-
Make the TOAST destriper more robust when MPI is/isn't present #106
-
Option in Mbs for maps in ecliptic coordinates #133
-
Module for scanning a map and filling TOD #131
-
Add a text-mode browser for the IMO PR#103
-
Implement the tools to build a Singularity container PR#96
-
Implement an interface to the TOAST mapmaker PR#86
-
Fix issue #101 (No proper "parents" in Entry objects) PR#102
-
Make the README point to the latest version of the documentation PR#99
-
Ensure that tests do not write within the source-code directory PR#97
-
Add a
STATUS.mdfile showing the overall implementation status of the simulation modules PR#87 -
Clarify how the IMO is used by
litebird_simPR#94 -
Make tests run faster by using ducc0 0.8.0 PR#92
-
Misc minor changes: gitignore .DS_Store; losslessly compress some assets PR#88
-
Improve the
ObservationAPI. Deprecate the pointing-related methods (moved toscanning), quantities are local by default PR#84 -
Permit to use pre-allocated buffers when generating quaternions and pointing angles PR#83
-
Add support for PySM3 in new class
MbsPR#76 -
Add the parameter
include_git_diffinSimulation.flush()PR#81 -
Add the ability to specify the size of the floating-point type used in
Observationobjects PR#79 -
Simple bin map-maker PR#73
-
Use SI units in class
SpinningScanningStrategy(breaking change) PR#69 -
Use dataclasses, rename
DetectortoDetectorInfoandInstrumenttoInstrumentInfo(breaking change) PR#60 -
Code cleanups PR#71
-
Improve the README PR#70
- First release