77from autoarray .dataset .abstract .dataset import AbstractDataset
88from autoarray .dataset .interferometer .w_tilde import WTildeInterferometer
99from autoarray .dataset .grids import GridsDataset
10+ from autoarray .operators .transformer import TransformerDFT
1011from autoarray .operators .transformer import TransformerNUFFT
1112from autoarray .mask .mask_2d import Mask2D
1213from autoarray .structures .visibilities import Visibilities
1314from autoarray .structures .visibilities import VisibilitiesNoiseMap
1415
16+ from autoarray import exc
1517from autoarray .inversion .inversion .interferometer import (
1618 inversion_interferometer_util ,
1719)
1820
19- from autoarray import exc
20-
2121logger = logging .getLogger (__name__ )
2222
2323
@@ -30,6 +30,7 @@ def __init__(
3030 real_space_mask : Mask2D ,
3131 transformer_class = TransformerNUFFT ,
3232 w_tilde : Optional [WTildeInterferometer ] = None ,
33+ raise_error_dft_visibilities_limit : bool = True ,
3334 ):
3435 """
3536 An interferometer dataset, containing the visibilities data, noise-map, real-space msk, Fourier transformer and
@@ -103,6 +104,19 @@ def __init__(
103104
104105 self .w_tilde = w_tilde
105106
107+ if raise_error_dft_visibilities_limit :
108+ if self .uv_wavelengths .shape [0 ] > 10000 and transformer_class == TransformerDFT :
109+ raise exc .DatasetException (
110+ """
111+ Interferometer datasets with more than 10,000 visibilities should use the TransformerNUFFT class for
112+ efficient Fourier transforms between real and uv-space. The DFT (Discrete Fourier Transform) is too slow for
113+ large datasets.
114+
115+ If you are certain you want to use the TransformerDFT class, you can disable this error by passing
116+ the input `raise_error_dft_visibilities_limit=False` when loading the Interferometer dataset.
117+ """
118+ )
119+
106120 @classmethod
107121 def from_fits (
108122 cls ,
0 commit comments