diff --git a/resolve/__init__.py b/resolve/__init__.py index 19433247bf696d0c8a817aaab98975edd4c01566..fadc803f26d1ea7207a44529460770d600f58865 100644 --- a/resolve/__init__.py +++ b/resolve/__init__.py @@ -18,7 +18,7 @@ from .plotter import MfPlotter, Plotter from .points import PointInserter from .polarization import polarization_matrix_exponential from .primary_beam import vla_beam -from .response import MfResponse, ResponseDistributor, StokesIResponse +from .response import MfResponse, ResponseDistributor, StokesIResponse, SingleResponse from .simple_operators import * from .util import ( Reshaper, diff --git a/resolve/observation.py b/resolve/observation.py index 5aa10fec4a31ce9010e1e146c405d4e3b8e8f1dd..69735a556c9ccc6ab33efe716f6bb4192b86abe4 100644 --- a/resolve/observation.py +++ b/resolve/observation.py @@ -93,7 +93,7 @@ class Observation: f(file_name, **dct) @staticmethod - def load(file_name): + def load(file_name, lo_hi_index=None): dct = dict(np.load(file_name)) antpos = [] for ii in range(4): @@ -103,12 +103,13 @@ class Observation: antpos.append(val) pol = Polarization.from_list(dct["polarization"]) direction = Direction.from_list(dct["direction"]) + slc = slice(None) if lo_hi_index is None else slice(*lo_hi_index) return Observation( AntennaPositions.from_list(antpos), - dct["vis"], - dct["weight"], + dct["vis"][..., slc], + dct["weight"][..., slc], pol, - dct["freq"], + dct["freq"][slc], direction, ) diff --git a/resolve/response.py b/resolve/response.py index d303ea49403e71c78d8a688627a1b51298768bfb..89dbe37499bea61dc3ca1c2c314fa6f4d36da032 100644 --- a/resolve/response.py +++ b/resolve/response.py @@ -100,7 +100,7 @@ class MfResponse(ift.LinearOperator): Contains the the :class:`nifty7.RGSpace` for the positions. """ - def __init__(self, observation, frequency_domain, position_domain): + def __init__(self, observation, frequency_domain, position_domain, verbose=True): my_assert_isinstance(observation, Observation) # FIXME Add polarization support my_asserteq(observation.npol, 1) @@ -130,6 +130,7 @@ class MfResponse(ift.LinearOperator): observation.freq[sel], mask[0, :, sel].T, sp, + verbose ) self._r.append((band_index, sel, r)) # Double check that all channels are written to @@ -203,7 +204,7 @@ class FullResponse(ift.LinearOperator): class SingleResponse(ift.LinearOperator): - def __init__(self, domain, uvw, freq, mask, single_precision): + def __init__(self, domain, uvw, freq, mask, single_precision, verbose=True): # FIXME Currently only the response uses single_precision if possible. # Could be rolled out to the whole likelihood self._domain = ift.DomainTuple.make(domain) @@ -225,7 +226,7 @@ class SingleResponse(ift.LinearOperator): self._vol = self._domain[0].scalar_dvol self._target_dtype = np.complex64 if single_precision else np.complex128 self._domain_dtype = np.float32 if single_precision else np.float64 - self._verbt, self._verbadj = True, True + self._verbt, self._verbadj = verbose, verbose def apply(self, x, mode): self._check_input(x, mode)