MPoL-dev / MPoL

A flexible Python platform for Regularized Maximum Likelihood imaging
https://mpol-dev.github.io/MPoL/
MIT License
33 stars 11 forks source link

Add theoretical noise calculation to DirtyImager #256

Open iancze opened 4 months ago

iancze commented 4 months ago

Is your feature request related to a problem or opportunity? Please describe.

In practice, one calculates the noise in a synthesized image by taking the RMS of some signal-free region.

But the theoretical thermal noise of the synthesized map can also be calculated directly from the imaging weights. See Dan Briggs's thesis, Eqn 3.3.

Describe the solution you'd like We implemented this calculation in an example script, for natural weighting and no taper.

It should be relatively straightforward to extend this to include those terms.

To DirtyImager, add a

def get_thermal_noise(
        self,
        weighting: str = "uniform",
        robust: float | None = None,
        taper_function: Callable[
            [npt.NDArray[np.floating[Any]], npt.NDArray[np.floating[Any]]],
            npt.NDArray[np.floating[Any]],
        ]
        | None = None,
        unit: str = "Jy/beam")

routine.

Additional context It'd be worthwhile comparing this to the calculation from CASA.