pysanepic 0.2.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,4 @@
1
+ __pycache__/
2
+ *.egg-info/
3
+ /sims/
4
+ docs/_build/
@@ -0,0 +1,49 @@
1
+ # Changelog
2
+
3
+ ## 0.2.1
4
+
5
+ Packaging for PyPI: metadata, source distribution without the C++ code, and
6
+ publication from GitHub releases. No code changes.
7
+
8
+ ## 0.2.0 (2026-10-14)
9
+
10
+ First release: a standalone Python port of the SANEPIC GLS map-maker for
11
+ correlated (1/f) noise, used by litebird_sim (`make_sanepic_maps`).
12
+
13
+ ### Map-making
14
+
15
+ - GLS solution of $(P^T N^{-1} P)\,m = P^T N^{-1} d$ with a preconditioned
16
+ conjugate gradient; $N^{-1}$ applied per chunk as a Fourier filter (ducc0
17
+ FFTs), I or I/Q/U maps, optional HWP angle.
18
+ - Block 3×3 preconditioner (Jacobi still available) and the Q/U
19
+ angle-coverage criterion `min_pol_rcond` (#2).
20
+ - Chunk padding, as SANEPIC's `-m`/`-q` options (#4).
21
+ - `GLSParameters` collects the solver options (#6).
22
+
23
+ ### Interface
24
+
25
+ - `Pointing`: either angles (θ, φ, ψ in some coordinates), rotated and
26
+ pixelized by `make_maps` at the output nside and coordinates, or HEALPix
27
+ pixels already computed (RING or NESTED), used as they are; the arrays are
28
+ checked when the object is created. `DetectorData` takes a `Pointing` (#6,
29
+ #7, #12).
30
+ - Low-level `GLS` class: `apply_A` and `rhs` work on the pixels of the MPI
31
+ rank, `GLS.full` gathers a per-pixel array (#14).
32
+
33
+ ### Parallelism and memory
34
+
35
+ - MPI: the PCG state is distributed by pixel; the $P^T$ maps are summed with a
36
+ reduce-scatter and the search direction is rebuilt with an allgather. Maps
37
+ up to nside 4096 with MPI (#14).
38
+ - Threads (`nthreads`, default `OMP_NUM_THREADS`) for the FFTs and the numba
39
+ kernels; $P^T$ shares one map among the threads, each owning a range of
40
+ pixels (#3, #5, #15).
41
+ - 8 bytes per sample besides the TODs: int32 pixel and 2a in float32;
42
+ γ cos 2a and γ sin 2a recomputed for each chunk (#6, #8, #11).
43
+ - Faster setup: counting sort by pixel and one irfft per weights array (#13);
44
+ cos and sin from a table, 10 times faster than libm without SVML (#16).
45
+
46
+ ### Documentation
47
+
48
+ - Sphinx documentation on Read the Docs, with notebooks, MPI and memory
49
+ notes and benchmarks on G100 (#9, #17).