diff --git a/maria/atmosphere/__init__.py b/maria/atmosphere/__init__.py index 6fe68d5..6688f21 100644 --- a/maria/atmosphere/__init__.py +++ b/maria/atmosphere/__init__.py @@ -116,7 +116,7 @@ def _simulate_atmospheric_emission(self, units="K_RJ"): ) for band in bands: - band_index = self.instrument.dets(band=band.name).uid + band_index = self.instrument.dets(band=band.name).index if self.verbose: bands.set_description(f"Computing atm. emission ({band.name})") @@ -167,7 +167,7 @@ def _simulate_atmospheric_emission(self, units="K_RJ"): ) for band in bands: - band_index = self.instrument.dets(band=band.name).uid + band_index = self.instrument.dets(band=band.name).index if self.verbose: bands.set_description(f"Computing atm. transmission ({band.name})") diff --git a/maria/atmosphere/turbulent_layer.py b/maria/atmosphere/turbulent_layer.py index 4aa4e8d..cbf0750 100644 --- a/maria/atmosphere/turbulent_layer.py +++ b/maria/atmosphere/turbulent_layer.py @@ -4,7 +4,7 @@ from .. import utils from ..coords import Coordinates, get_center_phi_theta from ..instrument import Instrument -from ..instrument.beam import construct_beam_filter, separably_filter +from ..instrument.beams import construct_beam_filter, separably_filter from .weather import Weather MIN_SAMPLES_PER_RIBBON = 2 @@ -309,7 +309,7 @@ def sample(self): for band in self.instrument.bands: # we assume the atmosphere looks the same for every nu in the band - band_index = self.instrument.dets(band=band.name).uid + band_index = self.instrument.dets(band=band.name).index band_angular_fwhm = self.instrument.angular_fwhm(z=self.depth)[ band_index ].mean() diff --git a/maria/instrument/__init__.py b/maria/instrument/__init__.py index dc10464..098ede7 100644 --- a/maria/instrument/__init__.py +++ b/maria/instrument/__init__.py @@ -1,5 +1,4 @@ import os -from collections.abc import Mapping from dataclasses import dataclass, fields from operator import attrgetter @@ -11,9 +10,9 @@ from matplotlib.patches import Patch from .. import utils -from .band import Band, BandList, generate_bands # noqa F401 -from .beam import compute_angular_fwhm, construct_beam_filter # noqa F401 -from .dets import Detectors, generate_detectors # noqa F401 +from .bands import BandList # noqa F401 +from .beams import compute_angular_fwhm, construct_beam_filter # noqa F401 +from .dets import Detectors # noqa F401 HEX_CODE_LIST = [ mpl.colors.to_hex(mpl.colormaps.get_cmap("Paired")(t)) @@ -30,25 +29,11 @@ INSTRUMENT_CONFIGS = utils.io.read_yaml(f"{here}/instruments.yml") INSTRUMENT_DISPLAY_COLUMNS = [ - "instrument_description", - "field_of_view", - "primary_size", - "bands", + "description", + # "field_of_view", + # "primary_size", + # "bands", ] -instrument_data = pd.DataFrame(INSTRUMENT_CONFIGS).reindex(INSTRUMENT_DISPLAY_COLUMNS).T - -for instrument_name, config in INSTRUMENT_CONFIGS.items(): - instrument_data.at[instrument_name, "bands"] = list(config["bands"].keys()) - -all_instruments = list(instrument_data.index) - - -class InvalidInstrumentError(Exception): - def __init__(self, invalid_instrument): - super().__init__( - f"The instrument '{invalid_instrument}' is not supported." - f"Supported instruments are:\n\n{instrument_data.__repr__()}" - ) def get_instrument_config(instrument_name=None, **kwargs): @@ -62,6 +47,9 @@ def get_instrument(instrument_name="default", **kwargs): """ Get an instrument from a pre-defined config. """ + for key, config in INSTRUMENT_CONFIGS.items(): + if instrument_name in config.get("aliases", []): + instrument_name = key if instrument_name not in INSTRUMENT_CONFIGS.keys(): raise InvalidInstrumentError(instrument_name) instrument_config = INSTRUMENT_CONFIGS[instrument_name].copy() @@ -89,16 +77,11 @@ class Instrument: @classmethod def from_config(cls, config): - if isinstance(config.get("bands"), Mapping): - dets = Detectors.generate( - bands_config=config.pop("bands"), - field_of_view=config.get("field_of_view", 1), - geometry=config.get("geometry", "hex"), - baseline=config.get("baseline", 0), - ) + dets = Detectors.from_config(config=config) - else: - raise ValueError("'bands' must be a dictionary of bands.") + for key in ["dets", "aliases"]: + if key in config: + config.pop(key) return cls(bands=dets.bands, dets=dets, **config) @@ -142,7 +125,7 @@ def baseline_y(self): @property def baselines(self): - return np.c_[self.baseline_x, self.baseline_y] + return np.c_[self.baseline_x, self.baseline_y, self.baseline_z] @staticmethod def beam_profile(r, fwhm): @@ -204,11 +187,11 @@ def plot_dets(self, units="deg"): band_color = HEX_CODE_LIST[iub] - # nom_freq = self.dets.band_center[band_mask].mean() + # band_center = self.dets.band_center[band_mask].mean() # band_res_arcmins = 2 * self.fwhm # 60 * np.degrees( - # 1.22 * 2.998e8 / (1e9 * nom_freq * self.primary_size) + # 1.22 * 2.998e8 / (1e9 * band_center * self.primary_size) # ) # offsets_arcmins = 60 * np.degrees(self.offsets[band_mask]) @@ -240,3 +223,22 @@ def plot_dets(self, units="deg"): ax.set_xlabel(rf"$\theta_x$ offset ({units})") ax.set_ylabel(rf"$\theta_y$ offset ({units})") ax.legend(handles=legend_handles) + + +instrument_data = pd.DataFrame(INSTRUMENT_CONFIGS).reindex(INSTRUMENT_DISPLAY_COLUMNS).T + +for instrument_name, config in INSTRUMENT_CONFIGS.items(): + instrument = get_instrument(instrument_name) + f_list = sorted(np.unique([band.center for band in instrument.dets.bands])) + instrument_data.at[instrument_name, "f [GHz]"] = "/".join([str(f) for f in f_list]) + instrument_data.at[instrument_name, "n"] = instrument.dets.n + +all_instruments = list(instrument_data.index) + + +class InvalidInstrumentError(Exception): + def __init__(self, invalid_instrument): + super().__init__( + f"The instrument '{invalid_instrument}' is not supported. " + f"Supported instruments are:\n\n{instrument_data.__repr__()}" + ) diff --git a/maria/instrument/band.py b/maria/instrument/bands.py similarity index 63% rename from maria/instrument/band.py rename to maria/instrument/bands.py index 0629e14..f031b2f 100644 --- a/maria/instrument/band.py +++ b/maria/instrument/bands.py @@ -1,3 +1,4 @@ +import glob import os from dataclasses import dataclass from typing import Sequence @@ -5,50 +6,41 @@ import numpy as np import pandas as pd +from .. import utils +from ..utils.io import flatten_config, read_yaml + BAND_FIELD_TYPES = { "center": "float", "width": "float", - "type": "str", + "passband_shape": "str", } here, this_filename = os.path.split(__file__) +all_bands = {} +for path in glob.glob(f"{here}/bands/*.yml"): + tag = os.path.split(path)[1].split(".")[0] + all_bands[tag] = read_yaml(path) -def generate_bands(bands_config): - bands = [] - - for band_key, band_config in bands_config.items(): - band_name = band_config.get("band_name", band_key) - band_file = band_config.get("file") +all_bands = flatten_config(all_bands) - if band_file is not None: - if os.path.exists(band_file): - band_df = pd.read_csv(band_file) - elif os.path.exists(f"{here}/{band_file}"): - band_df = pd.read_csv(f"{here}/{band_file}") - else: - raise FileNotFoundError(band_file) - band = Band.from_passband( - name=band_name, nu=band_df.nu_GHz.values, pb=band_df.pb.values - ) - - else: - band = Band( - name=band_name, - center=band_config["band_center"], - width=band_config["band_width"], - white_noise=band_config.get("white_noise", 0), - pink_noise=band_config.get("pink_noise", 0), - tau=band_config.get("tau", 0), - ) +class BandList(Sequence): + @classmethod + def from_config(cls, config): + bands = [] - bands.append(band) + if isinstance(config, str): + config = utils.io.read_yaml(f"{here}/{config}") - return BandList(bands) + for name in config.keys(): + band_config = config[name] + if "file" in band_config.keys(): + band_config = utils.io.read_yaml(f'{here}/{band_config["file"]}') + bands.append(Band(name=name, **band_config)) + return cls(bands=bands) -class BandList(Sequence): def __init__(self, bands: list = []): self.bands = bands @@ -73,8 +65,10 @@ def __len__(self): return len(self.bands) def __repr__(self): - # return f"BandList([{', '.join(self.names)}])" - return self.bands.__repr__() + return self.summary.__repr__() + + def __repr_html__(self): + return self.summary.__repr_html__() def __short_repr__(self): return f"BandList([{', '.join(self.names)}])" @@ -100,10 +94,11 @@ class Band: name: str center: float width: float - type: str = "flat" - tau: float = 0 - white_noise: float = 0 - pink_noise: float = 0 + tau: float = 0.0 + white_noise: float = 0.0 + pink_noise: float = 0.0 + passband_shape: str = "gaussian" + efficiency: float = 1.0 @classmethod def from_passband(cls, name, nu, pb, pb_err=None): @@ -112,7 +107,7 @@ def from_passband(cls, name, nu, pb, pb_err=None): nu[pb > pb.max() / np.e**2].ptp(), 3 ) # width is the two-sigma interval - band = cls(name=name, center=center, width=width, type="custom") + band = cls(name=name, center=center, width=width, passband_shape="custom") band._nu = nu band._pb = pb @@ -121,20 +116,20 @@ def from_passband(cls, name, nu, pb, pb_err=None): @property def nu_min(self) -> float: - if self.type == "flat": + if self.passband_shape == "flat": return self.center - 0.5 * self.width - if self.type == "gaussian": + if self.passband_shape == "gaussian": return self.center - self.width - if self.type == "custom": + if self.passband_shape == "custom": return self._nu[self._pb > 1e-2 * self._pb.max()].min() @property def nu_max(self) -> float: - if self.type == "flat": + if self.passband_shape == "flat": return self.center + 0.5 * self.width - if self.type == "gaussian": + if self.passband_shape == "gaussian": return self.center + self.width - if self.type == "custom": + if self.passband_shape == "custom": return self._nu[self._pb > 1e-2 * self._pb.max()].max() def passband(self, nu): @@ -144,13 +139,13 @@ def passband(self, nu): _nu = np.atleast_1d(nu) - if self.type == "gaussian": + if self.passband_shape == "gaussian": band_sigma = self.width / 4 return np.exp(-0.5 * np.square((_nu - self.center) / band_sigma)) - if self.type == "flat": + if self.passband_shape == "flat": return np.where((_nu > self.nu_min) & (_nu < self.nu_max), 1.0, 0.0) - elif self.type == "custom": + elif self.passband_shape == "custom": return np.interp(_nu, self._nu, self._pb) diff --git a/maria/instrument/bands.yml b/maria/instrument/bands.yml new file mode 100644 index 0000000..e69de29 diff --git a/maria/instrument/bands/act.yml b/maria/instrument/bands/act.yml new file mode 100644 index 0000000..2b0a3fa --- /dev/null +++ b/maria/instrument/bands/act.yml @@ -0,0 +1,65 @@ +pa4: + f150: + center: 150 + width: 30 + passband_shape: gaussian + tau: 0 + white_noise: 266.e-6 + pink_noise: 1.e-1 + efficiency: 0.5 + f220: + center: 220 + width: 30 + passband_shape: gaussian + tau: 0 + white_noise: 266.e-6 + pink_noise: 1.e-1 + efficiency: 0.5 +pa5: + f090: + center: 90 + width: 30 + passband_shape: gaussian + tau: 0 + white_noise: 266.e-6 + pink_noise: 1.e-1 + efficiency: 0.5 + f150: + center: 150 + width: 30 + passband_shape: gaussian + tau: 0 + white_noise: 266.e-6 + pink_noise: 1.e-1 + efficiency: 0.5 +pa6: + f090: + center: 90 + width: 30 + passband_shape: gaussian + tau: 0 + white_noise: 266.e-6 + pink_noise: 1.e-1 + efficiency: 0.5 + f150: + center: 150 + width: 30 + passband_shape: gaussian + tau: 0 + white_noise: 266.e-6 + pink_noise: 1.e-1 + efficiency: 0.5 + + f093: + n_dets: 217 + field_of_view: 0.07 + detector_geometry: hex + + bands: [mustang2/f093] + + # file: data/mustang2/passbands/f093.csv + center: 90 + width: 30 + efficiency: 0.5 + white_noise: 266.e-6 # in K_RJ s^-1/2 + pink_noise: 1.e-1 # in K_RJ s^-1/2 diff --git a/maria/instrument/bands/alma.yml b/maria/instrument/bands/alma.yml new file mode 100644 index 0000000..c1b309e --- /dev/null +++ b/maria/instrument/bands/alma.yml @@ -0,0 +1,89 @@ +f043: + center: 43 + width: 16 + passband_shape: gaussian + tau: 0 + white_noise: 0 + pink_noise: 0 + efficiency: 1.0 + +f078: + center: 78 + width: 22 + passband_shape: gaussian + tau: 0 + white_noise: 0 + pink_noise: 0 + efficiency: 1.0 + +f100: + center: 100 + width: 32 + passband_shape: gaussian + tau: 0 + white_noise: 0 + pink_noise: 0 + efficiency: 1.0 + +f144: + center: 144 + width: 38 + passband_shape: gaussian + tau: 0 + white_noise: 0 + pink_noise: 0 + efficiency: 1.0 + +f187: + center: 187 + width: 48 + passband_shape: gaussian + tau: 0 + white_noise: 0 + pink_noise: 0 + efficiency: 1.0 + +f243: + center: 243 + width: 64 + passband_shape: gaussian + tau: 0 + white_noise: 0 + pink_noise: 0 + efficiency: 1.0 + +f324: + center: 324 + width: 98 + passband_shape: gaussian + tau: 0 + white_noise: 0 + pink_noise: 0 + efficiency: 1.0 + +f447: + center: 447 + width: 114 + passband_shape: gaussian + tau: 0 + white_noise: 0 + pink_noise: 0 + efficiency: 1.0 + +f661: + center: 661 + width: 118 + passband_shape: gaussian + tau: 0 + white_noise: 0 + pink_noise: 0 + efficiency: 1.0 + +f869: + center: 869 + width: 163 + passband_shape: gaussian + tau: 0 + white_noise: 0 + pink_noise: 0 + efficiency: 1.0 diff --git a/maria/instrument/bands/atlast.yml b/maria/instrument/bands/atlast.yml new file mode 100644 index 0000000..53f292b --- /dev/null +++ b/maria/instrument/bands/atlast.yml @@ -0,0 +1,53 @@ +f027: + center: 27 + width: 5 + passband_shape: gaussian + tau: 0 + efficiency: 1.0 + white_noise: 0 + pink_noise: 0 + +f039: + center: 39 + width: 5 + passband_shape: gaussian + tau: 0 + efficiency: 1.0 + white_noise: 0 + pink_noise: 0 + +f093: + center: 93 + width: 10 + passband_shape: gaussian + tau: 0 + efficiency: 1.0 + white_noise: 0 + pink_noise: 0 + +f150: + center: 150 + width: 10 + passband_shape: gaussian + tau: 0 + efficiency: 1.0 + white_noise: 0 + pink_noise: 0 + +f225: + center: 225 + width: 30 + passband_shape: gaussian + tau: 0 + efficiency: 1.0 + white_noise: 0 + pink_noise: 0 + +f280: + center: 280 + width: 40 + passband_shape: gaussian + tau: 0 + efficiency: 1.0 + white_noise: 0 + pink_noise: 0 diff --git a/maria/instrument/bands/mustang2.yml b/maria/instrument/bands/mustang2.yml new file mode 100644 index 0000000..93bff67 --- /dev/null +++ b/maria/instrument/bands/mustang2.yml @@ -0,0 +1,8 @@ +f093: + # file: data/mustang2/passbands/f093.csv + center: 90 + width: 30 + tau: 0 + white_noise: 266.e-6 # in K_RJ s^-1/2 + pink_noise: 1.e-1 # in K_RJ s^-1/2 + efficiency: 0.5 diff --git a/maria/instrument/beam.py b/maria/instrument/beams.py similarity index 100% rename from maria/instrument/beam.py rename to maria/instrument/beams.py diff --git a/maria/instrument/dets/aca.csv b/maria/instrument/data/alma/aca.cfg similarity index 100% rename from maria/instrument/dets/aca.csv rename to maria/instrument/data/alma/aca.cfg diff --git a/maria/instrument/data/alma/alma.cycle1.csv b/maria/instrument/data/alma/alma.cycle1.csv new file mode 100644 index 0000000..4c92921 --- /dev/null +++ b/maria/instrument/data/alma/alma.cycle1.csv @@ -0,0 +1,44 @@ +band,baseline_x,baseline_y,baseline_z,pad +alma,-33.89412596,-712.7516484,-2.330089496,A001 +alma,-17.45390887,-709.6086972,-2.32867142,A002 +alma,-22.5589292,-691.9838607,-2.323742384,A003 +alma,-5.421013146,-723.7911045,-2.334250518,A004 +alma,25.24593899,-744.4318445,-2.336684256,A005 +alma,20.94634824,-721.464646,-2.333017829,A006 +alma,15.93453511,-700.6757482,-2.32967552,A007 +alma,9.482335836,-687.0764746,-2.729176727,A008 +alma,-9.835100334,-663.8265957,-2.722704263,A009 +alma,-20.89371519,-653.559982,-2.43766594,A010 +alma,37.82617818,-735.8760818,-2.484749162,A011 +alma,0.965953711,-702.6549839,-2.325874408,A013 +alma,10.73987943,-659.5673638,-2.726261907,A015 +alma,-20.62042134,-633.9073418,-2.527672839,A016 +alma,-6.712372688,-684.9519378,-2.3269437,A017 +alma,-41.23929872,-725.9777278,-2.33663097,A018 +alma,-50.30411069,-711.209498,-2.332024766,A019 +alma,-43.64407228,-652.7424613,-2.322696805,A022 +alma,-59.4042934,-667.5717395,-2.130365568,A023 +alma,-74.47461587,-684.6574595,-2.129342649,A024 +alma,-84.5230042,-704.8937799,-1.937681767,A025 +alma,-86.87286754,-732.2620426,-1.928810218,A026 +alma,-93.14292454,-745.9594809,-1.941492838,A027 +alma,-57.04992893,-645.4388456,-2.129055948,A028 +alma,-68.48107366,-698.470785,-2.334779889,A030 +alma,-95.8997254,-694.8901111,-1.927739915,A031 +alma,-105.4387377,-755.003357,-1.640752815,A033 +alma,-76.90232093,-718.1727584,-1.929073338,A034 +alma,-26.04186157,-726.1888088,-2.332575051,A035 +alma,-15.39951252,-746.3592279,-2.331879161,A036 +alma,-80.49715673,-765.1118313,-1.942599619,A038 +alma,-64.18907113,-771.1494896,-1.940145207,A039 +alma,-42.33954858,-777.8607093,-2.339781511,A040 +alma,-23.09339256,-778.6079363,-2.340774491,A041 +alma,2.382622676,-763.2855572,-2.838872989,A042 +alma,17.1053716,-766.5338029,-2.842286715,A043 +alma,-80.06703001,-780.3740238,-1.336451415,A044 +alma,-63.50521219,-786.8199568,-1.341060659,A045 +alma,-36.66707354,-762.1662821,-2.339843364,A046 +alma,-19.65399721,-794.5952314,-2.338743316,A047 +alma,-1.523355241,-788.9452581,-2.8370088,A048 +alma,30.35174917,-773.9188068,-3.336231664,A049 +alma,-15.04639784,-764.3348031,-2.335016467,A050 diff --git a/maria/instrument/data/alma/alma.cycle1.f043.csv b/maria/instrument/data/alma/alma.cycle1.f043.csv new file mode 100644 index 0000000..cc94f8f --- /dev/null +++ b/maria/instrument/data/alma/alma.cycle1.f043.csv @@ -0,0 +1,44 @@ +,band,baseline_x,baseline_y,baseline_z,pad +0,alma/f043,-33.89412596,-712.7516484,-2.330089496,A001 +1,alma/f043,-17.45390887,-709.6086972,-2.32867142,A002 +2,alma/f043,-22.5589292,-691.9838607,-2.323742384,A003 +3,alma/f043,-5.421013146,-723.7911045,-2.334250518,A004 +4,alma/f043,25.24593899,-744.4318445,-2.336684256,A005 +5,alma/f043,20.94634824,-721.464646,-2.333017829,A006 +6,alma/f043,15.93453511,-700.6757482,-2.32967552,A007 +7,alma/f043,9.482335836,-687.0764746,-2.729176727,A008 +8,alma/f043,-9.835100334,-663.8265957,-2.722704263,A009 +9,alma/f043,-20.89371519,-653.559982,-2.43766594,A010 +10,alma/f043,37.82617818,-735.8760818,-2.484749162,A011 +11,alma/f043,0.965953711,-702.6549839,-2.325874408,A013 +12,alma/f043,10.73987943,-659.5673638,-2.726261907,A015 +13,alma/f043,-20.62042134,-633.9073418,-2.527672839,A016 +14,alma/f043,-6.712372688,-684.9519378,-2.3269437,A017 +15,alma/f043,-41.23929872,-725.9777278,-2.33663097,A018 +16,alma/f043,-50.30411069,-711.209498,-2.332024766,A019 +17,alma/f043,-43.64407228,-652.7424613,-2.322696805,A022 +18,alma/f043,-59.4042934,-667.5717395,-2.130365568,A023 +19,alma/f043,-74.47461587,-684.6574595,-2.129342649,A024 +20,alma/f043,-84.5230042,-704.8937799,-1.937681767,A025 +21,alma/f043,-86.87286754,-732.2620426,-1.928810218,A026 +22,alma/f043,-93.14292454,-745.9594809,-1.941492838,A027 +23,alma/f043,-57.04992893,-645.4388456,-2.129055948,A028 +24,alma/f043,-68.48107366,-698.470785,-2.334779889,A030 +25,alma/f043,-95.8997254,-694.8901111,-1.927739915,A031 +26,alma/f043,-105.4387377,-755.003357,-1.640752815,A033 +27,alma/f043,-76.90232093,-718.1727584,-1.929073338,A034 +28,alma/f043,-26.04186157,-726.1888088,-2.332575051,A035 +29,alma/f043,-15.39951252,-746.3592279,-2.331879161,A036 +30,alma/f043,-80.49715673,-765.1118313,-1.942599619,A038 +31,alma/f043,-64.18907113,-771.1494896,-1.940145207,A039 +32,alma/f043,-42.33954858,-777.8607093,-2.339781511,A040 +33,alma/f043,-23.09339256,-778.6079363,-2.340774491,A041 +34,alma/f043,2.382622676,-763.2855572,-2.838872989,A042 +35,alma/f043,17.1053716,-766.5338029,-2.842286715,A043 +36,alma/f043,-80.06703001,-780.3740238,-1.336451415,A044 +37,alma/f043,-63.50521219,-786.8199568,-1.341060659,A045 +38,alma/f043,-36.66707354,-762.1662821,-2.339843364,A046 +39,alma/f043,-19.65399721,-794.5952314,-2.338743316,A047 +40,alma/f043,-1.523355241,-788.9452581,-2.8370088,A048 +41,alma/f043,30.35174917,-773.9188068,-3.336231664,A049 +42,alma/f043,-15.04639784,-764.3348031,-2.335016467,A050 diff --git a/maria/instrument/data/alma/alma.cycle1.f078.csv b/maria/instrument/data/alma/alma.cycle1.f078.csv new file mode 100644 index 0000000..6108038 --- /dev/null +++ b/maria/instrument/data/alma/alma.cycle1.f078.csv @@ -0,0 +1,44 @@ +,band,baseline_x,baseline_y,baseline_z,pad +0,alma/f078,-33.89412596,-712.7516484,-2.330089496,A001 +1,alma/f078,-17.45390887,-709.6086972,-2.32867142,A002 +2,alma/f078,-22.5589292,-691.9838607,-2.323742384,A003 +3,alma/f078,-5.421013146,-723.7911045,-2.334250518,A004 +4,alma/f078,25.24593899,-744.4318445,-2.336684256,A005 +5,alma/f078,20.94634824,-721.464646,-2.333017829,A006 +6,alma/f078,15.93453511,-700.6757482,-2.32967552,A007 +7,alma/f078,9.482335836,-687.0764746,-2.729176727,A008 +8,alma/f078,-9.835100334,-663.8265957,-2.722704263,A009 +9,alma/f078,-20.89371519,-653.559982,-2.43766594,A010 +10,alma/f078,37.82617818,-735.8760818,-2.484749162,A011 +11,alma/f078,0.965953711,-702.6549839,-2.325874408,A013 +12,alma/f078,10.73987943,-659.5673638,-2.726261907,A015 +13,alma/f078,-20.62042134,-633.9073418,-2.527672839,A016 +14,alma/f078,-6.712372688,-684.9519378,-2.3269437,A017 +15,alma/f078,-41.23929872,-725.9777278,-2.33663097,A018 +16,alma/f078,-50.30411069,-711.209498,-2.332024766,A019 +17,alma/f078,-43.64407228,-652.7424613,-2.322696805,A022 +18,alma/f078,-59.4042934,-667.5717395,-2.130365568,A023 +19,alma/f078,-74.47461587,-684.6574595,-2.129342649,A024 +20,alma/f078,-84.5230042,-704.8937799,-1.937681767,A025 +21,alma/f078,-86.87286754,-732.2620426,-1.928810218,A026 +22,alma/f078,-93.14292454,-745.9594809,-1.941492838,A027 +23,alma/f078,-57.04992893,-645.4388456,-2.129055948,A028 +24,alma/f078,-68.48107366,-698.470785,-2.334779889,A030 +25,alma/f078,-95.8997254,-694.8901111,-1.927739915,A031 +26,alma/f078,-105.4387377,-755.003357,-1.640752815,A033 +27,alma/f078,-76.90232093,-718.1727584,-1.929073338,A034 +28,alma/f078,-26.04186157,-726.1888088,-2.332575051,A035 +29,alma/f078,-15.39951252,-746.3592279,-2.331879161,A036 +30,alma/f078,-80.49715673,-765.1118313,-1.942599619,A038 +31,alma/f078,-64.18907113,-771.1494896,-1.940145207,A039 +32,alma/f078,-42.33954858,-777.8607093,-2.339781511,A040 +33,alma/f078,-23.09339256,-778.6079363,-2.340774491,A041 +34,alma/f078,2.382622676,-763.2855572,-2.838872989,A042 +35,alma/f078,17.1053716,-766.5338029,-2.842286715,A043 +36,alma/f078,-80.06703001,-780.3740238,-1.336451415,A044 +37,alma/f078,-63.50521219,-786.8199568,-1.341060659,A045 +38,alma/f078,-36.66707354,-762.1662821,-2.339843364,A046 +39,alma/f078,-19.65399721,-794.5952314,-2.338743316,A047 +40,alma/f078,-1.523355241,-788.9452581,-2.8370088,A048 +41,alma/f078,30.35174917,-773.9188068,-3.336231664,A049 +42,alma/f078,-15.04639784,-764.3348031,-2.335016467,A050 diff --git a/maria/instrument/data/alma/alma.cycle1.f100.csv b/maria/instrument/data/alma/alma.cycle1.f100.csv new file mode 100644 index 0000000..a369f64 --- /dev/null +++ b/maria/instrument/data/alma/alma.cycle1.f100.csv @@ -0,0 +1,44 @@ +,band,baseline_x,baseline_y,baseline_z,pad +0,alma/f100,-33.89412596,-712.7516484,-2.330089496,A001 +1,alma/f100,-17.45390887,-709.6086972,-2.32867142,A002 +2,alma/f100,-22.5589292,-691.9838607,-2.323742384,A003 +3,alma/f100,-5.421013146,-723.7911045,-2.334250518,A004 +4,alma/f100,25.24593899,-744.4318445,-2.336684256,A005 +5,alma/f100,20.94634824,-721.464646,-2.333017829,A006 +6,alma/f100,15.93453511,-700.6757482,-2.32967552,A007 +7,alma/f100,9.482335836,-687.0764746,-2.729176727,A008 +8,alma/f100,-9.835100334,-663.8265957,-2.722704263,A009 +9,alma/f100,-20.89371519,-653.559982,-2.43766594,A010 +10,alma/f100,37.82617818,-735.8760818,-2.484749162,A011 +11,alma/f100,0.965953711,-702.6549839,-2.325874408,A013 +12,alma/f100,10.73987943,-659.5673638,-2.726261907,A015 +13,alma/f100,-20.62042134,-633.9073418,-2.527672839,A016 +14,alma/f100,-6.712372688,-684.9519378,-2.3269437,A017 +15,alma/f100,-41.23929872,-725.9777278,-2.33663097,A018 +16,alma/f100,-50.30411069,-711.209498,-2.332024766,A019 +17,alma/f100,-43.64407228,-652.7424613,-2.322696805,A022 +18,alma/f100,-59.4042934,-667.5717395,-2.130365568,A023 +19,alma/f100,-74.47461587,-684.6574595,-2.129342649,A024 +20,alma/f100,-84.5230042,-704.8937799,-1.937681767,A025 +21,alma/f100,-86.87286754,-732.2620426,-1.928810218,A026 +22,alma/f100,-93.14292454,-745.9594809,-1.941492838,A027 +23,alma/f100,-57.04992893,-645.4388456,-2.129055948,A028 +24,alma/f100,-68.48107366,-698.470785,-2.334779889,A030 +25,alma/f100,-95.8997254,-694.8901111,-1.927739915,A031 +26,alma/f100,-105.4387377,-755.003357,-1.640752815,A033 +27,alma/f100,-76.90232093,-718.1727584,-1.929073338,A034 +28,alma/f100,-26.04186157,-726.1888088,-2.332575051,A035 +29,alma/f100,-15.39951252,-746.3592279,-2.331879161,A036 +30,alma/f100,-80.49715673,-765.1118313,-1.942599619,A038 +31,alma/f100,-64.18907113,-771.1494896,-1.940145207,A039 +32,alma/f100,-42.33954858,-777.8607093,-2.339781511,A040 +33,alma/f100,-23.09339256,-778.6079363,-2.340774491,A041 +34,alma/f100,2.382622676,-763.2855572,-2.838872989,A042 +35,alma/f100,17.1053716,-766.5338029,-2.842286715,A043 +36,alma/f100,-80.06703001,-780.3740238,-1.336451415,A044 +37,alma/f100,-63.50521219,-786.8199568,-1.341060659,A045 +38,alma/f100,-36.66707354,-762.1662821,-2.339843364,A046 +39,alma/f100,-19.65399721,-794.5952314,-2.338743316,A047 +40,alma/f100,-1.523355241,-788.9452581,-2.8370088,A048 +41,alma/f100,30.35174917,-773.9188068,-3.336231664,A049 +42,alma/f100,-15.04639784,-764.3348031,-2.335016467,A050 diff --git a/maria/instrument/data/alma/alma.cycle1.f144.csv b/maria/instrument/data/alma/alma.cycle1.f144.csv new file mode 100644 index 0000000..2e41eb5 --- /dev/null +++ b/maria/instrument/data/alma/alma.cycle1.f144.csv @@ -0,0 +1,44 @@ +,band,baseline_x,baseline_y,baseline_z,pad +0,alma/f144,-33.89412596,-712.7516484,-2.330089496,A001 +1,alma/f144,-17.45390887,-709.6086972,-2.32867142,A002 +2,alma/f144,-22.5589292,-691.9838607,-2.323742384,A003 +3,alma/f144,-5.421013146,-723.7911045,-2.334250518,A004 +4,alma/f144,25.24593899,-744.4318445,-2.336684256,A005 +5,alma/f144,20.94634824,-721.464646,-2.333017829,A006 +6,alma/f144,15.93453511,-700.6757482,-2.32967552,A007 +7,alma/f144,9.482335836,-687.0764746,-2.729176727,A008 +8,alma/f144,-9.835100334,-663.8265957,-2.722704263,A009 +9,alma/f144,-20.89371519,-653.559982,-2.43766594,A010 +10,alma/f144,37.82617818,-735.8760818,-2.484749162,A011 +11,alma/f144,0.965953711,-702.6549839,-2.325874408,A013 +12,alma/f144,10.73987943,-659.5673638,-2.726261907,A015 +13,alma/f144,-20.62042134,-633.9073418,-2.527672839,A016 +14,alma/f144,-6.712372688,-684.9519378,-2.3269437,A017 +15,alma/f144,-41.23929872,-725.9777278,-2.33663097,A018 +16,alma/f144,-50.30411069,-711.209498,-2.332024766,A019 +17,alma/f144,-43.64407228,-652.7424613,-2.322696805,A022 +18,alma/f144,-59.4042934,-667.5717395,-2.130365568,A023 +19,alma/f144,-74.47461587,-684.6574595,-2.129342649,A024 +20,alma/f144,-84.5230042,-704.8937799,-1.937681767,A025 +21,alma/f144,-86.87286754,-732.2620426,-1.928810218,A026 +22,alma/f144,-93.14292454,-745.9594809,-1.941492838,A027 +23,alma/f144,-57.04992893,-645.4388456,-2.129055948,A028 +24,alma/f144,-68.48107366,-698.470785,-2.334779889,A030 +25,alma/f144,-95.8997254,-694.8901111,-1.927739915,A031 +26,alma/f144,-105.4387377,-755.003357,-1.640752815,A033 +27,alma/f144,-76.90232093,-718.1727584,-1.929073338,A034 +28,alma/f144,-26.04186157,-726.1888088,-2.332575051,A035 +29,alma/f144,-15.39951252,-746.3592279,-2.331879161,A036 +30,alma/f144,-80.49715673,-765.1118313,-1.942599619,A038 +31,alma/f144,-64.18907113,-771.1494896,-1.940145207,A039 +32,alma/f144,-42.33954858,-777.8607093,-2.339781511,A040 +33,alma/f144,-23.09339256,-778.6079363,-2.340774491,A041 +34,alma/f144,2.382622676,-763.2855572,-2.838872989,A042 +35,alma/f144,17.1053716,-766.5338029,-2.842286715,A043 +36,alma/f144,-80.06703001,-780.3740238,-1.336451415,A044 +37,alma/f144,-63.50521219,-786.8199568,-1.341060659,A045 +38,alma/f144,-36.66707354,-762.1662821,-2.339843364,A046 +39,alma/f144,-19.65399721,-794.5952314,-2.338743316,A047 +40,alma/f144,-1.523355241,-788.9452581,-2.8370088,A048 +41,alma/f144,30.35174917,-773.9188068,-3.336231664,A049 +42,alma/f144,-15.04639784,-764.3348031,-2.335016467,A050 diff --git a/maria/instrument/data/alma/alma.cycle1.f187.csv b/maria/instrument/data/alma/alma.cycle1.f187.csv new file mode 100644 index 0000000..3c8809a --- /dev/null +++ b/maria/instrument/data/alma/alma.cycle1.f187.csv @@ -0,0 +1,44 @@ +,band,baseline_x,baseline_y,baseline_z,pad +0,alma/f187,-33.89412596,-712.7516484,-2.330089496,A001 +1,alma/f187,-17.45390887,-709.6086972,-2.32867142,A002 +2,alma/f187,-22.5589292,-691.9838607,-2.323742384,A003 +3,alma/f187,-5.421013146,-723.7911045,-2.334250518,A004 +4,alma/f187,25.24593899,-744.4318445,-2.336684256,A005 +5,alma/f187,20.94634824,-721.464646,-2.333017829,A006 +6,alma/f187,15.93453511,-700.6757482,-2.32967552,A007 +7,alma/f187,9.482335836,-687.0764746,-2.729176727,A008 +8,alma/f187,-9.835100334,-663.8265957,-2.722704263,A009 +9,alma/f187,-20.89371519,-653.559982,-2.43766594,A010 +10,alma/f187,37.82617818,-735.8760818,-2.484749162,A011 +11,alma/f187,0.965953711,-702.6549839,-2.325874408,A013 +12,alma/f187,10.73987943,-659.5673638,-2.726261907,A015 +13,alma/f187,-20.62042134,-633.9073418,-2.527672839,A016 +14,alma/f187,-6.712372688,-684.9519378,-2.3269437,A017 +15,alma/f187,-41.23929872,-725.9777278,-2.33663097,A018 +16,alma/f187,-50.30411069,-711.209498,-2.332024766,A019 +17,alma/f187,-43.64407228,-652.7424613,-2.322696805,A022 +18,alma/f187,-59.4042934,-667.5717395,-2.130365568,A023 +19,alma/f187,-74.47461587,-684.6574595,-2.129342649,A024 +20,alma/f187,-84.5230042,-704.8937799,-1.937681767,A025 +21,alma/f187,-86.87286754,-732.2620426,-1.928810218,A026 +22,alma/f187,-93.14292454,-745.9594809,-1.941492838,A027 +23,alma/f187,-57.04992893,-645.4388456,-2.129055948,A028 +24,alma/f187,-68.48107366,-698.470785,-2.334779889,A030 +25,alma/f187,-95.8997254,-694.8901111,-1.927739915,A031 +26,alma/f187,-105.4387377,-755.003357,-1.640752815,A033 +27,alma/f187,-76.90232093,-718.1727584,-1.929073338,A034 +28,alma/f187,-26.04186157,-726.1888088,-2.332575051,A035 +29,alma/f187,-15.39951252,-746.3592279,-2.331879161,A036 +30,alma/f187,-80.49715673,-765.1118313,-1.942599619,A038 +31,alma/f187,-64.18907113,-771.1494896,-1.940145207,A039 +32,alma/f187,-42.33954858,-777.8607093,-2.339781511,A040 +33,alma/f187,-23.09339256,-778.6079363,-2.340774491,A041 +34,alma/f187,2.382622676,-763.2855572,-2.838872989,A042 +35,alma/f187,17.1053716,-766.5338029,-2.842286715,A043 +36,alma/f187,-80.06703001,-780.3740238,-1.336451415,A044 +37,alma/f187,-63.50521219,-786.8199568,-1.341060659,A045 +38,alma/f187,-36.66707354,-762.1662821,-2.339843364,A046 +39,alma/f187,-19.65399721,-794.5952314,-2.338743316,A047 +40,alma/f187,-1.523355241,-788.9452581,-2.8370088,A048 +41,alma/f187,30.35174917,-773.9188068,-3.336231664,A049 +42,alma/f187,-15.04639784,-764.3348031,-2.335016467,A050 diff --git a/maria/instrument/data/alma/alma.cycle1.f243.csv b/maria/instrument/data/alma/alma.cycle1.f243.csv new file mode 100644 index 0000000..670c014 --- /dev/null +++ b/maria/instrument/data/alma/alma.cycle1.f243.csv @@ -0,0 +1,44 @@ +,band,baseline_x,baseline_y,baseline_z,pad +0,alma/f243,-33.89412596,-712.7516484,-2.330089496,A001 +1,alma/f243,-17.45390887,-709.6086972,-2.32867142,A002 +2,alma/f243,-22.5589292,-691.9838607,-2.323742384,A003 +3,alma/f243,-5.421013146,-723.7911045,-2.334250518,A004 +4,alma/f243,25.24593899,-744.4318445,-2.336684256,A005 +5,alma/f243,20.94634824,-721.464646,-2.333017829,A006 +6,alma/f243,15.93453511,-700.6757482,-2.32967552,A007 +7,alma/f243,9.482335836,-687.0764746,-2.729176727,A008 +8,alma/f243,-9.835100334,-663.8265957,-2.722704263,A009 +9,alma/f243,-20.89371519,-653.559982,-2.43766594,A010 +10,alma/f243,37.82617818,-735.8760818,-2.484749162,A011 +11,alma/f243,0.965953711,-702.6549839,-2.325874408,A013 +12,alma/f243,10.73987943,-659.5673638,-2.726261907,A015 +13,alma/f243,-20.62042134,-633.9073418,-2.527672839,A016 +14,alma/f243,-6.712372688,-684.9519378,-2.3269437,A017 +15,alma/f243,-41.23929872,-725.9777278,-2.33663097,A018 +16,alma/f243,-50.30411069,-711.209498,-2.332024766,A019 +17,alma/f243,-43.64407228,-652.7424613,-2.322696805,A022 +18,alma/f243,-59.4042934,-667.5717395,-2.130365568,A023 +19,alma/f243,-74.47461587,-684.6574595,-2.129342649,A024 +20,alma/f243,-84.5230042,-704.8937799,-1.937681767,A025 +21,alma/f243,-86.87286754,-732.2620426,-1.928810218,A026 +22,alma/f243,-93.14292454,-745.9594809,-1.941492838,A027 +23,alma/f243,-57.04992893,-645.4388456,-2.129055948,A028 +24,alma/f243,-68.48107366,-698.470785,-2.334779889,A030 +25,alma/f243,-95.8997254,-694.8901111,-1.927739915,A031 +26,alma/f243,-105.4387377,-755.003357,-1.640752815,A033 +27,alma/f243,-76.90232093,-718.1727584,-1.929073338,A034 +28,alma/f243,-26.04186157,-726.1888088,-2.332575051,A035 +29,alma/f243,-15.39951252,-746.3592279,-2.331879161,A036 +30,alma/f243,-80.49715673,-765.1118313,-1.942599619,A038 +31,alma/f243,-64.18907113,-771.1494896,-1.940145207,A039 +32,alma/f243,-42.33954858,-777.8607093,-2.339781511,A040 +33,alma/f243,-23.09339256,-778.6079363,-2.340774491,A041 +34,alma/f243,2.382622676,-763.2855572,-2.838872989,A042 +35,alma/f243,17.1053716,-766.5338029,-2.842286715,A043 +36,alma/f243,-80.06703001,-780.3740238,-1.336451415,A044 +37,alma/f243,-63.50521219,-786.8199568,-1.341060659,A045 +38,alma/f243,-36.66707354,-762.1662821,-2.339843364,A046 +39,alma/f243,-19.65399721,-794.5952314,-2.338743316,A047 +40,alma/f243,-1.523355241,-788.9452581,-2.8370088,A048 +41,alma/f243,30.35174917,-773.9188068,-3.336231664,A049 +42,alma/f243,-15.04639784,-764.3348031,-2.335016467,A050 diff --git a/maria/instrument/data/alma/alma.cycle1.f324.csv b/maria/instrument/data/alma/alma.cycle1.f324.csv new file mode 100644 index 0000000..2206803 --- /dev/null +++ b/maria/instrument/data/alma/alma.cycle1.f324.csv @@ -0,0 +1,44 @@ +,band,baseline_x,baseline_y,baseline_z,pad +0,alma/f324,-33.89412596,-712.7516484,-2.330089496,A001 +1,alma/f324,-17.45390887,-709.6086972,-2.32867142,A002 +2,alma/f324,-22.5589292,-691.9838607,-2.323742384,A003 +3,alma/f324,-5.421013146,-723.7911045,-2.334250518,A004 +4,alma/f324,25.24593899,-744.4318445,-2.336684256,A005 +5,alma/f324,20.94634824,-721.464646,-2.333017829,A006 +6,alma/f324,15.93453511,-700.6757482,-2.32967552,A007 +7,alma/f324,9.482335836,-687.0764746,-2.729176727,A008 +8,alma/f324,-9.835100334,-663.8265957,-2.722704263,A009 +9,alma/f324,-20.89371519,-653.559982,-2.43766594,A010 +10,alma/f324,37.82617818,-735.8760818,-2.484749162,A011 +11,alma/f324,0.965953711,-702.6549839,-2.325874408,A013 +12,alma/f324,10.73987943,-659.5673638,-2.726261907,A015 +13,alma/f324,-20.62042134,-633.9073418,-2.527672839,A016 +14,alma/f324,-6.712372688,-684.9519378,-2.3269437,A017 +15,alma/f324,-41.23929872,-725.9777278,-2.33663097,A018 +16,alma/f324,-50.30411069,-711.209498,-2.332024766,A019 +17,alma/f324,-43.64407228,-652.7424613,-2.322696805,A022 +18,alma/f324,-59.4042934,-667.5717395,-2.130365568,A023 +19,alma/f324,-74.47461587,-684.6574595,-2.129342649,A024 +20,alma/f324,-84.5230042,-704.8937799,-1.937681767,A025 +21,alma/f324,-86.87286754,-732.2620426,-1.928810218,A026 +22,alma/f324,-93.14292454,-745.9594809,-1.941492838,A027 +23,alma/f324,-57.04992893,-645.4388456,-2.129055948,A028 +24,alma/f324,-68.48107366,-698.470785,-2.334779889,A030 +25,alma/f324,-95.8997254,-694.8901111,-1.927739915,A031 +26,alma/f324,-105.4387377,-755.003357,-1.640752815,A033 +27,alma/f324,-76.90232093,-718.1727584,-1.929073338,A034 +28,alma/f324,-26.04186157,-726.1888088,-2.332575051,A035 +29,alma/f324,-15.39951252,-746.3592279,-2.331879161,A036 +30,alma/f324,-80.49715673,-765.1118313,-1.942599619,A038 +31,alma/f324,-64.18907113,-771.1494896,-1.940145207,A039 +32,alma/f324,-42.33954858,-777.8607093,-2.339781511,A040 +33,alma/f324,-23.09339256,-778.6079363,-2.340774491,A041 +34,alma/f324,2.382622676,-763.2855572,-2.838872989,A042 +35,alma/f324,17.1053716,-766.5338029,-2.842286715,A043 +36,alma/f324,-80.06703001,-780.3740238,-1.336451415,A044 +37,alma/f324,-63.50521219,-786.8199568,-1.341060659,A045 +38,alma/f324,-36.66707354,-762.1662821,-2.339843364,A046 +39,alma/f324,-19.65399721,-794.5952314,-2.338743316,A047 +40,alma/f324,-1.523355241,-788.9452581,-2.8370088,A048 +41,alma/f324,30.35174917,-773.9188068,-3.336231664,A049 +42,alma/f324,-15.04639784,-764.3348031,-2.335016467,A050 diff --git a/maria/instrument/data/alma/alma.cycle1.f447.csv b/maria/instrument/data/alma/alma.cycle1.f447.csv new file mode 100644 index 0000000..e6734d3 --- /dev/null +++ b/maria/instrument/data/alma/alma.cycle1.f447.csv @@ -0,0 +1,44 @@ +,band,baseline_x,baseline_y,baseline_z,pad +0,alma/f447,-33.89412596,-712.7516484,-2.330089496,A001 +1,alma/f447,-17.45390887,-709.6086972,-2.32867142,A002 +2,alma/f447,-22.5589292,-691.9838607,-2.323742384,A003 +3,alma/f447,-5.421013146,-723.7911045,-2.334250518,A004 +4,alma/f447,25.24593899,-744.4318445,-2.336684256,A005 +5,alma/f447,20.94634824,-721.464646,-2.333017829,A006 +6,alma/f447,15.93453511,-700.6757482,-2.32967552,A007 +7,alma/f447,9.482335836,-687.0764746,-2.729176727,A008 +8,alma/f447,-9.835100334,-663.8265957,-2.722704263,A009 +9,alma/f447,-20.89371519,-653.559982,-2.43766594,A010 +10,alma/f447,37.82617818,-735.8760818,-2.484749162,A011 +11,alma/f447,0.965953711,-702.6549839,-2.325874408,A013 +12,alma/f447,10.73987943,-659.5673638,-2.726261907,A015 +13,alma/f447,-20.62042134,-633.9073418,-2.527672839,A016 +14,alma/f447,-6.712372688,-684.9519378,-2.3269437,A017 +15,alma/f447,-41.23929872,-725.9777278,-2.33663097,A018 +16,alma/f447,-50.30411069,-711.209498,-2.332024766,A019 +17,alma/f447,-43.64407228,-652.7424613,-2.322696805,A022 +18,alma/f447,-59.4042934,-667.5717395,-2.130365568,A023 +19,alma/f447,-74.47461587,-684.6574595,-2.129342649,A024 +20,alma/f447,-84.5230042,-704.8937799,-1.937681767,A025 +21,alma/f447,-86.87286754,-732.2620426,-1.928810218,A026 +22,alma/f447,-93.14292454,-745.9594809,-1.941492838,A027 +23,alma/f447,-57.04992893,-645.4388456,-2.129055948,A028 +24,alma/f447,-68.48107366,-698.470785,-2.334779889,A030 +25,alma/f447,-95.8997254,-694.8901111,-1.927739915,A031 +26,alma/f447,-105.4387377,-755.003357,-1.640752815,A033 +27,alma/f447,-76.90232093,-718.1727584,-1.929073338,A034 +28,alma/f447,-26.04186157,-726.1888088,-2.332575051,A035 +29,alma/f447,-15.39951252,-746.3592279,-2.331879161,A036 +30,alma/f447,-80.49715673,-765.1118313,-1.942599619,A038 +31,alma/f447,-64.18907113,-771.1494896,-1.940145207,A039 +32,alma/f447,-42.33954858,-777.8607093,-2.339781511,A040 +33,alma/f447,-23.09339256,-778.6079363,-2.340774491,A041 +34,alma/f447,2.382622676,-763.2855572,-2.838872989,A042 +35,alma/f447,17.1053716,-766.5338029,-2.842286715,A043 +36,alma/f447,-80.06703001,-780.3740238,-1.336451415,A044 +37,alma/f447,-63.50521219,-786.8199568,-1.341060659,A045 +38,alma/f447,-36.66707354,-762.1662821,-2.339843364,A046 +39,alma/f447,-19.65399721,-794.5952314,-2.338743316,A047 +40,alma/f447,-1.523355241,-788.9452581,-2.8370088,A048 +41,alma/f447,30.35174917,-773.9188068,-3.336231664,A049 +42,alma/f447,-15.04639784,-764.3348031,-2.335016467,A050 diff --git a/maria/instrument/data/alma/alma.cycle1.f661.csv b/maria/instrument/data/alma/alma.cycle1.f661.csv new file mode 100644 index 0000000..c42fe98 --- /dev/null +++ b/maria/instrument/data/alma/alma.cycle1.f661.csv @@ -0,0 +1,44 @@ +,band,baseline_x,baseline_y,baseline_z,pad +0,alma/f661,-33.89412596,-712.7516484,-2.330089496,A001 +1,alma/f661,-17.45390887,-709.6086972,-2.32867142,A002 +2,alma/f661,-22.5589292,-691.9838607,-2.323742384,A003 +3,alma/f661,-5.421013146,-723.7911045,-2.334250518,A004 +4,alma/f661,25.24593899,-744.4318445,-2.336684256,A005 +5,alma/f661,20.94634824,-721.464646,-2.333017829,A006 +6,alma/f661,15.93453511,-700.6757482,-2.32967552,A007 +7,alma/f661,9.482335836,-687.0764746,-2.729176727,A008 +8,alma/f661,-9.835100334,-663.8265957,-2.722704263,A009 +9,alma/f661,-20.89371519,-653.559982,-2.43766594,A010 +10,alma/f661,37.82617818,-735.8760818,-2.484749162,A011 +11,alma/f661,0.965953711,-702.6549839,-2.325874408,A013 +12,alma/f661,10.73987943,-659.5673638,-2.726261907,A015 +13,alma/f661,-20.62042134,-633.9073418,-2.527672839,A016 +14,alma/f661,-6.712372688,-684.9519378,-2.3269437,A017 +15,alma/f661,-41.23929872,-725.9777278,-2.33663097,A018 +16,alma/f661,-50.30411069,-711.209498,-2.332024766,A019 +17,alma/f661,-43.64407228,-652.7424613,-2.322696805,A022 +18,alma/f661,-59.4042934,-667.5717395,-2.130365568,A023 +19,alma/f661,-74.47461587,-684.6574595,-2.129342649,A024 +20,alma/f661,-84.5230042,-704.8937799,-1.937681767,A025 +21,alma/f661,-86.87286754,-732.2620426,-1.928810218,A026 +22,alma/f661,-93.14292454,-745.9594809,-1.941492838,A027 +23,alma/f661,-57.04992893,-645.4388456,-2.129055948,A028 +24,alma/f661,-68.48107366,-698.470785,-2.334779889,A030 +25,alma/f661,-95.8997254,-694.8901111,-1.927739915,A031 +26,alma/f661,-105.4387377,-755.003357,-1.640752815,A033 +27,alma/f661,-76.90232093,-718.1727584,-1.929073338,A034 +28,alma/f661,-26.04186157,-726.1888088,-2.332575051,A035 +29,alma/f661,-15.39951252,-746.3592279,-2.331879161,A036 +30,alma/f661,-80.49715673,-765.1118313,-1.942599619,A038 +31,alma/f661,-64.18907113,-771.1494896,-1.940145207,A039 +32,alma/f661,-42.33954858,-777.8607093,-2.339781511,A040 +33,alma/f661,-23.09339256,-778.6079363,-2.340774491,A041 +34,alma/f661,2.382622676,-763.2855572,-2.838872989,A042 +35,alma/f661,17.1053716,-766.5338029,-2.842286715,A043 +36,alma/f661,-80.06703001,-780.3740238,-1.336451415,A044 +37,alma/f661,-63.50521219,-786.8199568,-1.341060659,A045 +38,alma/f661,-36.66707354,-762.1662821,-2.339843364,A046 +39,alma/f661,-19.65399721,-794.5952314,-2.338743316,A047 +40,alma/f661,-1.523355241,-788.9452581,-2.8370088,A048 +41,alma/f661,30.35174917,-773.9188068,-3.336231664,A049 +42,alma/f661,-15.04639784,-764.3348031,-2.335016467,A050 diff --git a/maria/instrument/data/alma/alma.cycle1.f869.csv b/maria/instrument/data/alma/alma.cycle1.f869.csv new file mode 100644 index 0000000..301268d --- /dev/null +++ b/maria/instrument/data/alma/alma.cycle1.f869.csv @@ -0,0 +1,44 @@ +,band,baseline_x,baseline_y,baseline_z,pad +0,alma/f869,-33.89412596,-712.7516484,-2.330089496,A001 +1,alma/f869,-17.45390887,-709.6086972,-2.32867142,A002 +2,alma/f869,-22.5589292,-691.9838607,-2.323742384,A003 +3,alma/f869,-5.421013146,-723.7911045,-2.334250518,A004 +4,alma/f869,25.24593899,-744.4318445,-2.336684256,A005 +5,alma/f869,20.94634824,-721.464646,-2.333017829,A006 +6,alma/f869,15.93453511,-700.6757482,-2.32967552,A007 +7,alma/f869,9.482335836,-687.0764746,-2.729176727,A008 +8,alma/f869,-9.835100334,-663.8265957,-2.722704263,A009 +9,alma/f869,-20.89371519,-653.559982,-2.43766594,A010 +10,alma/f869,37.82617818,-735.8760818,-2.484749162,A011 +11,alma/f869,0.965953711,-702.6549839,-2.325874408,A013 +12,alma/f869,10.73987943,-659.5673638,-2.726261907,A015 +13,alma/f869,-20.62042134,-633.9073418,-2.527672839,A016 +14,alma/f869,-6.712372688,-684.9519378,-2.3269437,A017 +15,alma/f869,-41.23929872,-725.9777278,-2.33663097,A018 +16,alma/f869,-50.30411069,-711.209498,-2.332024766,A019 +17,alma/f869,-43.64407228,-652.7424613,-2.322696805,A022 +18,alma/f869,-59.4042934,-667.5717395,-2.130365568,A023 +19,alma/f869,-74.47461587,-684.6574595,-2.129342649,A024 +20,alma/f869,-84.5230042,-704.8937799,-1.937681767,A025 +21,alma/f869,-86.87286754,-732.2620426,-1.928810218,A026 +22,alma/f869,-93.14292454,-745.9594809,-1.941492838,A027 +23,alma/f869,-57.04992893,-645.4388456,-2.129055948,A028 +24,alma/f869,-68.48107366,-698.470785,-2.334779889,A030 +25,alma/f869,-95.8997254,-694.8901111,-1.927739915,A031 +26,alma/f869,-105.4387377,-755.003357,-1.640752815,A033 +27,alma/f869,-76.90232093,-718.1727584,-1.929073338,A034 +28,alma/f869,-26.04186157,-726.1888088,-2.332575051,A035 +29,alma/f869,-15.39951252,-746.3592279,-2.331879161,A036 +30,alma/f869,-80.49715673,-765.1118313,-1.942599619,A038 +31,alma/f869,-64.18907113,-771.1494896,-1.940145207,A039 +32,alma/f869,-42.33954858,-777.8607093,-2.339781511,A040 +33,alma/f869,-23.09339256,-778.6079363,-2.340774491,A041 +34,alma/f869,2.382622676,-763.2855572,-2.838872989,A042 +35,alma/f869,17.1053716,-766.5338029,-2.842286715,A043 +36,alma/f869,-80.06703001,-780.3740238,-1.336451415,A044 +37,alma/f869,-63.50521219,-786.8199568,-1.341060659,A045 +38,alma/f869,-36.66707354,-762.1662821,-2.339843364,A046 +39,alma/f869,-19.65399721,-794.5952314,-2.338743316,A047 +40,alma/f869,-1.523355241,-788.9452581,-2.8370088,A048 +41,alma/f869,30.35174917,-773.9188068,-3.336231664,A049 +42,alma/f869,-15.04639784,-764.3348031,-2.335016467,A050 diff --git a/maria/instrument/data/alma/alma.cycle1.total.csv b/maria/instrument/data/alma/alma.cycle1.total.csv new file mode 100644 index 0000000..cb0ba76 --- /dev/null +++ b/maria/instrument/data/alma/alma.cycle1.total.csv @@ -0,0 +1,431 @@ +,band,baseline_x,baseline_y,baseline_z,pad +0,alma/f043,-33.89412596,-712.7516484,-2.330089496,A001 +1,alma/f043,-17.45390887,-709.6086972,-2.32867142,A002 +2,alma/f043,-22.5589292,-691.9838607,-2.323742384,A003 +3,alma/f043,-5.421013146,-723.7911045,-2.334250518,A004 +4,alma/f043,25.24593899,-744.4318445,-2.336684256,A005 +5,alma/f043,20.94634824,-721.464646,-2.333017829,A006 +6,alma/f043,15.93453511,-700.6757482,-2.32967552,A007 +7,alma/f043,9.482335836,-687.0764746,-2.729176727,A008 +8,alma/f043,-9.835100334,-663.8265957,-2.722704263,A009 +9,alma/f043,-20.89371519,-653.559982,-2.43766594,A010 +10,alma/f043,37.82617818,-735.8760818,-2.484749162,A011 +11,alma/f043,0.965953711,-702.6549839,-2.325874408,A013 +12,alma/f043,10.73987943,-659.5673638,-2.726261907,A015 +13,alma/f043,-20.62042134,-633.9073418,-2.527672839,A016 +14,alma/f043,-6.712372688,-684.9519378,-2.3269437,A017 +15,alma/f043,-41.23929872,-725.9777278,-2.33663097,A018 +16,alma/f043,-50.30411069,-711.209498,-2.332024766,A019 +17,alma/f043,-43.64407228,-652.7424613,-2.322696805,A022 +18,alma/f043,-59.4042934,-667.5717395,-2.130365568,A023 +19,alma/f043,-74.47461587,-684.6574595,-2.129342649,A024 +20,alma/f043,-84.5230042,-704.8937799,-1.937681767,A025 +21,alma/f043,-86.87286754,-732.2620426,-1.928810218,A026 +22,alma/f043,-93.14292454,-745.9594809,-1.941492838,A027 +23,alma/f043,-57.04992893,-645.4388456,-2.129055948,A028 +24,alma/f043,-68.48107366,-698.470785,-2.334779889,A030 +25,alma/f043,-95.8997254,-694.8901111,-1.927739915,A031 +26,alma/f043,-105.4387377,-755.003357,-1.640752815,A033 +27,alma/f043,-76.90232093,-718.1727584,-1.929073338,A034 +28,alma/f043,-26.04186157,-726.1888088,-2.332575051,A035 +29,alma/f043,-15.39951252,-746.3592279,-2.331879161,A036 +30,alma/f043,-80.49715673,-765.1118313,-1.942599619,A038 +31,alma/f043,-64.18907113,-771.1494896,-1.940145207,A039 +32,alma/f043,-42.33954858,-777.8607093,-2.339781511,A040 +33,alma/f043,-23.09339256,-778.6079363,-2.340774491,A041 +34,alma/f043,2.382622676,-763.2855572,-2.838872989,A042 +35,alma/f043,17.1053716,-766.5338029,-2.842286715,A043 +36,alma/f043,-80.06703001,-780.3740238,-1.336451415,A044 +37,alma/f043,-63.50521219,-786.8199568,-1.341060659,A045 +38,alma/f043,-36.66707354,-762.1662821,-2.339843364,A046 +39,alma/f043,-19.65399721,-794.5952314,-2.338743316,A047 +40,alma/f043,-1.523355241,-788.9452581,-2.8370088,A048 +41,alma/f043,30.35174917,-773.9188068,-3.336231664,A049 +42,alma/f043,-15.04639784,-764.3348031,-2.335016467,A050 +43,alma/f078,-33.89412596,-712.7516484,-2.330089496,A001 +44,alma/f078,-17.45390887,-709.6086972,-2.32867142,A002 +45,alma/f078,-22.5589292,-691.9838607,-2.323742384,A003 +46,alma/f078,-5.421013146,-723.7911045,-2.334250518,A004 +47,alma/f078,25.24593899,-744.4318445,-2.336684256,A005 +48,alma/f078,20.94634824,-721.464646,-2.333017829,A006 +49,alma/f078,15.93453511,-700.6757482,-2.32967552,A007 +50,alma/f078,9.482335836,-687.0764746,-2.729176727,A008 +51,alma/f078,-9.835100334,-663.8265957,-2.722704263,A009 +52,alma/f078,-20.89371519,-653.559982,-2.43766594,A010 +53,alma/f078,37.82617818,-735.8760818,-2.484749162,A011 +54,alma/f078,0.965953711,-702.6549839,-2.325874408,A013 +55,alma/f078,10.73987943,-659.5673638,-2.726261907,A015 +56,alma/f078,-20.62042134,-633.9073418,-2.527672839,A016 +57,alma/f078,-6.712372688,-684.9519378,-2.3269437,A017 +58,alma/f078,-41.23929872,-725.9777278,-2.33663097,A018 +59,alma/f078,-50.30411069,-711.209498,-2.332024766,A019 +60,alma/f078,-43.64407228,-652.7424613,-2.322696805,A022 +61,alma/f078,-59.4042934,-667.5717395,-2.130365568,A023 +62,alma/f078,-74.47461587,-684.6574595,-2.129342649,A024 +63,alma/f078,-84.5230042,-704.8937799,-1.937681767,A025 +64,alma/f078,-86.87286754,-732.2620426,-1.928810218,A026 +65,alma/f078,-93.14292454,-745.9594809,-1.941492838,A027 +66,alma/f078,-57.04992893,-645.4388456,-2.129055948,A028 +67,alma/f078,-68.48107366,-698.470785,-2.334779889,A030 +68,alma/f078,-95.8997254,-694.8901111,-1.927739915,A031 +69,alma/f078,-105.4387377,-755.003357,-1.640752815,A033 +70,alma/f078,-76.90232093,-718.1727584,-1.929073338,A034 +71,alma/f078,-26.04186157,-726.1888088,-2.332575051,A035 +72,alma/f078,-15.39951252,-746.3592279,-2.331879161,A036 +73,alma/f078,-80.49715673,-765.1118313,-1.942599619,A038 +74,alma/f078,-64.18907113,-771.1494896,-1.940145207,A039 +75,alma/f078,-42.33954858,-777.8607093,-2.339781511,A040 +76,alma/f078,-23.09339256,-778.6079363,-2.340774491,A041 +77,alma/f078,2.382622676,-763.2855572,-2.838872989,A042 +78,alma/f078,17.1053716,-766.5338029,-2.842286715,A043 +79,alma/f078,-80.06703001,-780.3740238,-1.336451415,A044 +80,alma/f078,-63.50521219,-786.8199568,-1.341060659,A045 +81,alma/f078,-36.66707354,-762.1662821,-2.339843364,A046 +82,alma/f078,-19.65399721,-794.5952314,-2.338743316,A047 +83,alma/f078,-1.523355241,-788.9452581,-2.8370088,A048 +84,alma/f078,30.35174917,-773.9188068,-3.336231664,A049 +85,alma/f078,-15.04639784,-764.3348031,-2.335016467,A050 +86,alma/f100,-33.89412596,-712.7516484,-2.330089496,A001 +87,alma/f100,-17.45390887,-709.6086972,-2.32867142,A002 +88,alma/f100,-22.5589292,-691.9838607,-2.323742384,A003 +89,alma/f100,-5.421013146,-723.7911045,-2.334250518,A004 +90,alma/f100,25.24593899,-744.4318445,-2.336684256,A005 +91,alma/f100,20.94634824,-721.464646,-2.333017829,A006 +92,alma/f100,15.93453511,-700.6757482,-2.32967552,A007 +93,alma/f100,9.482335836,-687.0764746,-2.729176727,A008 +94,alma/f100,-9.835100334,-663.8265957,-2.722704263,A009 +95,alma/f100,-20.89371519,-653.559982,-2.43766594,A010 +96,alma/f100,37.82617818,-735.8760818,-2.484749162,A011 +97,alma/f100,0.965953711,-702.6549839,-2.325874408,A013 +98,alma/f100,10.73987943,-659.5673638,-2.726261907,A015 +99,alma/f100,-20.62042134,-633.9073418,-2.527672839,A016 +100,alma/f100,-6.712372688,-684.9519378,-2.3269437,A017 +101,alma/f100,-41.23929872,-725.9777278,-2.33663097,A018 +102,alma/f100,-50.30411069,-711.209498,-2.332024766,A019 +103,alma/f100,-43.64407228,-652.7424613,-2.322696805,A022 +104,alma/f100,-59.4042934,-667.5717395,-2.130365568,A023 +105,alma/f100,-74.47461587,-684.6574595,-2.129342649,A024 +106,alma/f100,-84.5230042,-704.8937799,-1.937681767,A025 +107,alma/f100,-86.87286754,-732.2620426,-1.928810218,A026 +108,alma/f100,-93.14292454,-745.9594809,-1.941492838,A027 +109,alma/f100,-57.04992893,-645.4388456,-2.129055948,A028 +110,alma/f100,-68.48107366,-698.470785,-2.334779889,A030 +111,alma/f100,-95.8997254,-694.8901111,-1.927739915,A031 +112,alma/f100,-105.4387377,-755.003357,-1.640752815,A033 +113,alma/f100,-76.90232093,-718.1727584,-1.929073338,A034 +114,alma/f100,-26.04186157,-726.1888088,-2.332575051,A035 +115,alma/f100,-15.39951252,-746.3592279,-2.331879161,A036 +116,alma/f100,-80.49715673,-765.1118313,-1.942599619,A038 +117,alma/f100,-64.18907113,-771.1494896,-1.940145207,A039 +118,alma/f100,-42.33954858,-777.8607093,-2.339781511,A040 +119,alma/f100,-23.09339256,-778.6079363,-2.340774491,A041 +120,alma/f100,2.382622676,-763.2855572,-2.838872989,A042 +121,alma/f100,17.1053716,-766.5338029,-2.842286715,A043 +122,alma/f100,-80.06703001,-780.3740238,-1.336451415,A044 +123,alma/f100,-63.50521219,-786.8199568,-1.341060659,A045 +124,alma/f100,-36.66707354,-762.1662821,-2.339843364,A046 +125,alma/f100,-19.65399721,-794.5952314,-2.338743316,A047 +126,alma/f100,-1.523355241,-788.9452581,-2.8370088,A048 +127,alma/f100,30.35174917,-773.9188068,-3.336231664,A049 +128,alma/f100,-15.04639784,-764.3348031,-2.335016467,A050 +129,alma/f144,-33.89412596,-712.7516484,-2.330089496,A001 +130,alma/f144,-17.45390887,-709.6086972,-2.32867142,A002 +131,alma/f144,-22.5589292,-691.9838607,-2.323742384,A003 +132,alma/f144,-5.421013146,-723.7911045,-2.334250518,A004 +133,alma/f144,25.24593899,-744.4318445,-2.336684256,A005 +134,alma/f144,20.94634824,-721.464646,-2.333017829,A006 +135,alma/f144,15.93453511,-700.6757482,-2.32967552,A007 +136,alma/f144,9.482335836,-687.0764746,-2.729176727,A008 +137,alma/f144,-9.835100334,-663.8265957,-2.722704263,A009 +138,alma/f144,-20.89371519,-653.559982,-2.43766594,A010 +139,alma/f144,37.82617818,-735.8760818,-2.484749162,A011 +140,alma/f144,0.965953711,-702.6549839,-2.325874408,A013 +141,alma/f144,10.73987943,-659.5673638,-2.726261907,A015 +142,alma/f144,-20.62042134,-633.9073418,-2.527672839,A016 +143,alma/f144,-6.712372688,-684.9519378,-2.3269437,A017 +144,alma/f144,-41.23929872,-725.9777278,-2.33663097,A018 +145,alma/f144,-50.30411069,-711.209498,-2.332024766,A019 +146,alma/f144,-43.64407228,-652.7424613,-2.322696805,A022 +147,alma/f144,-59.4042934,-667.5717395,-2.130365568,A023 +148,alma/f144,-74.47461587,-684.6574595,-2.129342649,A024 +149,alma/f144,-84.5230042,-704.8937799,-1.937681767,A025 +150,alma/f144,-86.87286754,-732.2620426,-1.928810218,A026 +151,alma/f144,-93.14292454,-745.9594809,-1.941492838,A027 +152,alma/f144,-57.04992893,-645.4388456,-2.129055948,A028 +153,alma/f144,-68.48107366,-698.470785,-2.334779889,A030 +154,alma/f144,-95.8997254,-694.8901111,-1.927739915,A031 +155,alma/f144,-105.4387377,-755.003357,-1.640752815,A033 +156,alma/f144,-76.90232093,-718.1727584,-1.929073338,A034 +157,alma/f144,-26.04186157,-726.1888088,-2.332575051,A035 +158,alma/f144,-15.39951252,-746.3592279,-2.331879161,A036 +159,alma/f144,-80.49715673,-765.1118313,-1.942599619,A038 +160,alma/f144,-64.18907113,-771.1494896,-1.940145207,A039 +161,alma/f144,-42.33954858,-777.8607093,-2.339781511,A040 +162,alma/f144,-23.09339256,-778.6079363,-2.340774491,A041 +163,alma/f144,2.382622676,-763.2855572,-2.838872989,A042 +164,alma/f144,17.1053716,-766.5338029,-2.842286715,A043 +165,alma/f144,-80.06703001,-780.3740238,-1.336451415,A044 +166,alma/f144,-63.50521219,-786.8199568,-1.341060659,A045 +167,alma/f144,-36.66707354,-762.1662821,-2.339843364,A046 +168,alma/f144,-19.65399721,-794.5952314,-2.338743316,A047 +169,alma/f144,-1.523355241,-788.9452581,-2.8370088,A048 +170,alma/f144,30.35174917,-773.9188068,-3.336231664,A049 +171,alma/f144,-15.04639784,-764.3348031,-2.335016467,A050 +172,alma/f187,-33.89412596,-712.7516484,-2.330089496,A001 +173,alma/f187,-17.45390887,-709.6086972,-2.32867142,A002 +174,alma/f187,-22.5589292,-691.9838607,-2.323742384,A003 +175,alma/f187,-5.421013146,-723.7911045,-2.334250518,A004 +176,alma/f187,25.24593899,-744.4318445,-2.336684256,A005 +177,alma/f187,20.94634824,-721.464646,-2.333017829,A006 +178,alma/f187,15.93453511,-700.6757482,-2.32967552,A007 +179,alma/f187,9.482335836,-687.0764746,-2.729176727,A008 +180,alma/f187,-9.835100334,-663.8265957,-2.722704263,A009 +181,alma/f187,-20.89371519,-653.559982,-2.43766594,A010 +182,alma/f187,37.82617818,-735.8760818,-2.484749162,A011 +183,alma/f187,0.965953711,-702.6549839,-2.325874408,A013 +184,alma/f187,10.73987943,-659.5673638,-2.726261907,A015 +185,alma/f187,-20.62042134,-633.9073418,-2.527672839,A016 +186,alma/f187,-6.712372688,-684.9519378,-2.3269437,A017 +187,alma/f187,-41.23929872,-725.9777278,-2.33663097,A018 +188,alma/f187,-50.30411069,-711.209498,-2.332024766,A019 +189,alma/f187,-43.64407228,-652.7424613,-2.322696805,A022 +190,alma/f187,-59.4042934,-667.5717395,-2.130365568,A023 +191,alma/f187,-74.47461587,-684.6574595,-2.129342649,A024 +192,alma/f187,-84.5230042,-704.8937799,-1.937681767,A025 +193,alma/f187,-86.87286754,-732.2620426,-1.928810218,A026 +194,alma/f187,-93.14292454,-745.9594809,-1.941492838,A027 +195,alma/f187,-57.04992893,-645.4388456,-2.129055948,A028 +196,alma/f187,-68.48107366,-698.470785,-2.334779889,A030 +197,alma/f187,-95.8997254,-694.8901111,-1.927739915,A031 +198,alma/f187,-105.4387377,-755.003357,-1.640752815,A033 +199,alma/f187,-76.90232093,-718.1727584,-1.929073338,A034 +200,alma/f187,-26.04186157,-726.1888088,-2.332575051,A035 +201,alma/f187,-15.39951252,-746.3592279,-2.331879161,A036 +202,alma/f187,-80.49715673,-765.1118313,-1.942599619,A038 +203,alma/f187,-64.18907113,-771.1494896,-1.940145207,A039 +204,alma/f187,-42.33954858,-777.8607093,-2.339781511,A040 +205,alma/f187,-23.09339256,-778.6079363,-2.340774491,A041 +206,alma/f187,2.382622676,-763.2855572,-2.838872989,A042 +207,alma/f187,17.1053716,-766.5338029,-2.842286715,A043 +208,alma/f187,-80.06703001,-780.3740238,-1.336451415,A044 +209,alma/f187,-63.50521219,-786.8199568,-1.341060659,A045 +210,alma/f187,-36.66707354,-762.1662821,-2.339843364,A046 +211,alma/f187,-19.65399721,-794.5952314,-2.338743316,A047 +212,alma/f187,-1.523355241,-788.9452581,-2.8370088,A048 +213,alma/f187,30.35174917,-773.9188068,-3.336231664,A049 +214,alma/f187,-15.04639784,-764.3348031,-2.335016467,A050 +215,alma/f243,-33.89412596,-712.7516484,-2.330089496,A001 +216,alma/f243,-17.45390887,-709.6086972,-2.32867142,A002 +217,alma/f243,-22.5589292,-691.9838607,-2.323742384,A003 +218,alma/f243,-5.421013146,-723.7911045,-2.334250518,A004 +219,alma/f243,25.24593899,-744.4318445,-2.336684256,A005 +220,alma/f243,20.94634824,-721.464646,-2.333017829,A006 +221,alma/f243,15.93453511,-700.6757482,-2.32967552,A007 +222,alma/f243,9.482335836,-687.0764746,-2.729176727,A008 +223,alma/f243,-9.835100334,-663.8265957,-2.722704263,A009 +224,alma/f243,-20.89371519,-653.559982,-2.43766594,A010 +225,alma/f243,37.82617818,-735.8760818,-2.484749162,A011 +226,alma/f243,0.965953711,-702.6549839,-2.325874408,A013 +227,alma/f243,10.73987943,-659.5673638,-2.726261907,A015 +228,alma/f243,-20.62042134,-633.9073418,-2.527672839,A016 +229,alma/f243,-6.712372688,-684.9519378,-2.3269437,A017 +230,alma/f243,-41.23929872,-725.9777278,-2.33663097,A018 +231,alma/f243,-50.30411069,-711.209498,-2.332024766,A019 +232,alma/f243,-43.64407228,-652.7424613,-2.322696805,A022 +233,alma/f243,-59.4042934,-667.5717395,-2.130365568,A023 +234,alma/f243,-74.47461587,-684.6574595,-2.129342649,A024 +235,alma/f243,-84.5230042,-704.8937799,-1.937681767,A025 +236,alma/f243,-86.87286754,-732.2620426,-1.928810218,A026 +237,alma/f243,-93.14292454,-745.9594809,-1.941492838,A027 +238,alma/f243,-57.04992893,-645.4388456,-2.129055948,A028 +239,alma/f243,-68.48107366,-698.470785,-2.334779889,A030 +240,alma/f243,-95.8997254,-694.8901111,-1.927739915,A031 +241,alma/f243,-105.4387377,-755.003357,-1.640752815,A033 +242,alma/f243,-76.90232093,-718.1727584,-1.929073338,A034 +243,alma/f243,-26.04186157,-726.1888088,-2.332575051,A035 +244,alma/f243,-15.39951252,-746.3592279,-2.331879161,A036 +245,alma/f243,-80.49715673,-765.1118313,-1.942599619,A038 +246,alma/f243,-64.18907113,-771.1494896,-1.940145207,A039 +247,alma/f243,-42.33954858,-777.8607093,-2.339781511,A040 +248,alma/f243,-23.09339256,-778.6079363,-2.340774491,A041 +249,alma/f243,2.382622676,-763.2855572,-2.838872989,A042 +250,alma/f243,17.1053716,-766.5338029,-2.842286715,A043 +251,alma/f243,-80.06703001,-780.3740238,-1.336451415,A044 +252,alma/f243,-63.50521219,-786.8199568,-1.341060659,A045 +253,alma/f243,-36.66707354,-762.1662821,-2.339843364,A046 +254,alma/f243,-19.65399721,-794.5952314,-2.338743316,A047 +255,alma/f243,-1.523355241,-788.9452581,-2.8370088,A048 +256,alma/f243,30.35174917,-773.9188068,-3.336231664,A049 +257,alma/f243,-15.04639784,-764.3348031,-2.335016467,A050 +258,alma/f324,-33.89412596,-712.7516484,-2.330089496,A001 +259,alma/f324,-17.45390887,-709.6086972,-2.32867142,A002 +260,alma/f324,-22.5589292,-691.9838607,-2.323742384,A003 +261,alma/f324,-5.421013146,-723.7911045,-2.334250518,A004 +262,alma/f324,25.24593899,-744.4318445,-2.336684256,A005 +263,alma/f324,20.94634824,-721.464646,-2.333017829,A006 +264,alma/f324,15.93453511,-700.6757482,-2.32967552,A007 +265,alma/f324,9.482335836,-687.0764746,-2.729176727,A008 +266,alma/f324,-9.835100334,-663.8265957,-2.722704263,A009 +267,alma/f324,-20.89371519,-653.559982,-2.43766594,A010 +268,alma/f324,37.82617818,-735.8760818,-2.484749162,A011 +269,alma/f324,0.965953711,-702.6549839,-2.325874408,A013 +270,alma/f324,10.73987943,-659.5673638,-2.726261907,A015 +271,alma/f324,-20.62042134,-633.9073418,-2.527672839,A016 +272,alma/f324,-6.712372688,-684.9519378,-2.3269437,A017 +273,alma/f324,-41.23929872,-725.9777278,-2.33663097,A018 +274,alma/f324,-50.30411069,-711.209498,-2.332024766,A019 +275,alma/f324,-43.64407228,-652.7424613,-2.322696805,A022 +276,alma/f324,-59.4042934,-667.5717395,-2.130365568,A023 +277,alma/f324,-74.47461587,-684.6574595,-2.129342649,A024 +278,alma/f324,-84.5230042,-704.8937799,-1.937681767,A025 +279,alma/f324,-86.87286754,-732.2620426,-1.928810218,A026 +280,alma/f324,-93.14292454,-745.9594809,-1.941492838,A027 +281,alma/f324,-57.04992893,-645.4388456,-2.129055948,A028 +282,alma/f324,-68.48107366,-698.470785,-2.334779889,A030 +283,alma/f324,-95.8997254,-694.8901111,-1.927739915,A031 +284,alma/f324,-105.4387377,-755.003357,-1.640752815,A033 +285,alma/f324,-76.90232093,-718.1727584,-1.929073338,A034 +286,alma/f324,-26.04186157,-726.1888088,-2.332575051,A035 +287,alma/f324,-15.39951252,-746.3592279,-2.331879161,A036 +288,alma/f324,-80.49715673,-765.1118313,-1.942599619,A038 +289,alma/f324,-64.18907113,-771.1494896,-1.940145207,A039 +290,alma/f324,-42.33954858,-777.8607093,-2.339781511,A040 +291,alma/f324,-23.09339256,-778.6079363,-2.340774491,A041 +292,alma/f324,2.382622676,-763.2855572,-2.838872989,A042 +293,alma/f324,17.1053716,-766.5338029,-2.842286715,A043 +294,alma/f324,-80.06703001,-780.3740238,-1.336451415,A044 +295,alma/f324,-63.50521219,-786.8199568,-1.341060659,A045 +296,alma/f324,-36.66707354,-762.1662821,-2.339843364,A046 +297,alma/f324,-19.65399721,-794.5952314,-2.338743316,A047 +298,alma/f324,-1.523355241,-788.9452581,-2.8370088,A048 +299,alma/f324,30.35174917,-773.9188068,-3.336231664,A049 +300,alma/f324,-15.04639784,-764.3348031,-2.335016467,A050 +301,alma/f447,-33.89412596,-712.7516484,-2.330089496,A001 +302,alma/f447,-17.45390887,-709.6086972,-2.32867142,A002 +303,alma/f447,-22.5589292,-691.9838607,-2.323742384,A003 +304,alma/f447,-5.421013146,-723.7911045,-2.334250518,A004 +305,alma/f447,25.24593899,-744.4318445,-2.336684256,A005 +306,alma/f447,20.94634824,-721.464646,-2.333017829,A006 +307,alma/f447,15.93453511,-700.6757482,-2.32967552,A007 +308,alma/f447,9.482335836,-687.0764746,-2.729176727,A008 +309,alma/f447,-9.835100334,-663.8265957,-2.722704263,A009 +310,alma/f447,-20.89371519,-653.559982,-2.43766594,A010 +311,alma/f447,37.82617818,-735.8760818,-2.484749162,A011 +312,alma/f447,0.965953711,-702.6549839,-2.325874408,A013 +313,alma/f447,10.73987943,-659.5673638,-2.726261907,A015 +314,alma/f447,-20.62042134,-633.9073418,-2.527672839,A016 +315,alma/f447,-6.712372688,-684.9519378,-2.3269437,A017 +316,alma/f447,-41.23929872,-725.9777278,-2.33663097,A018 +317,alma/f447,-50.30411069,-711.209498,-2.332024766,A019 +318,alma/f447,-43.64407228,-652.7424613,-2.322696805,A022 +319,alma/f447,-59.4042934,-667.5717395,-2.130365568,A023 +320,alma/f447,-74.47461587,-684.6574595,-2.129342649,A024 +321,alma/f447,-84.5230042,-704.8937799,-1.937681767,A025 +322,alma/f447,-86.87286754,-732.2620426,-1.928810218,A026 +323,alma/f447,-93.14292454,-745.9594809,-1.941492838,A027 +324,alma/f447,-57.04992893,-645.4388456,-2.129055948,A028 +325,alma/f447,-68.48107366,-698.470785,-2.334779889,A030 +326,alma/f447,-95.8997254,-694.8901111,-1.927739915,A031 +327,alma/f447,-105.4387377,-755.003357,-1.640752815,A033 +328,alma/f447,-76.90232093,-718.1727584,-1.929073338,A034 +329,alma/f447,-26.04186157,-726.1888088,-2.332575051,A035 +330,alma/f447,-15.39951252,-746.3592279,-2.331879161,A036 +331,alma/f447,-80.49715673,-765.1118313,-1.942599619,A038 +332,alma/f447,-64.18907113,-771.1494896,-1.940145207,A039 +333,alma/f447,-42.33954858,-777.8607093,-2.339781511,A040 +334,alma/f447,-23.09339256,-778.6079363,-2.340774491,A041 +335,alma/f447,2.382622676,-763.2855572,-2.838872989,A042 +336,alma/f447,17.1053716,-766.5338029,-2.842286715,A043 +337,alma/f447,-80.06703001,-780.3740238,-1.336451415,A044 +338,alma/f447,-63.50521219,-786.8199568,-1.341060659,A045 +339,alma/f447,-36.66707354,-762.1662821,-2.339843364,A046 +340,alma/f447,-19.65399721,-794.5952314,-2.338743316,A047 +341,alma/f447,-1.523355241,-788.9452581,-2.8370088,A048 +342,alma/f447,30.35174917,-773.9188068,-3.336231664,A049 +343,alma/f447,-15.04639784,-764.3348031,-2.335016467,A050 +344,alma/f661,-33.89412596,-712.7516484,-2.330089496,A001 +345,alma/f661,-17.45390887,-709.6086972,-2.32867142,A002 +346,alma/f661,-22.5589292,-691.9838607,-2.323742384,A003 +347,alma/f661,-5.421013146,-723.7911045,-2.334250518,A004 +348,alma/f661,25.24593899,-744.4318445,-2.336684256,A005 +349,alma/f661,20.94634824,-721.464646,-2.333017829,A006 +350,alma/f661,15.93453511,-700.6757482,-2.32967552,A007 +351,alma/f661,9.482335836,-687.0764746,-2.729176727,A008 +352,alma/f661,-9.835100334,-663.8265957,-2.722704263,A009 +353,alma/f661,-20.89371519,-653.559982,-2.43766594,A010 +354,alma/f661,37.82617818,-735.8760818,-2.484749162,A011 +355,alma/f661,0.965953711,-702.6549839,-2.325874408,A013 +356,alma/f661,10.73987943,-659.5673638,-2.726261907,A015 +357,alma/f661,-20.62042134,-633.9073418,-2.527672839,A016 +358,alma/f661,-6.712372688,-684.9519378,-2.3269437,A017 +359,alma/f661,-41.23929872,-725.9777278,-2.33663097,A018 +360,alma/f661,-50.30411069,-711.209498,-2.332024766,A019 +361,alma/f661,-43.64407228,-652.7424613,-2.322696805,A022 +362,alma/f661,-59.4042934,-667.5717395,-2.130365568,A023 +363,alma/f661,-74.47461587,-684.6574595,-2.129342649,A024 +364,alma/f661,-84.5230042,-704.8937799,-1.937681767,A025 +365,alma/f661,-86.87286754,-732.2620426,-1.928810218,A026 +366,alma/f661,-93.14292454,-745.9594809,-1.941492838,A027 +367,alma/f661,-57.04992893,-645.4388456,-2.129055948,A028 +368,alma/f661,-68.48107366,-698.470785,-2.334779889,A030 +369,alma/f661,-95.8997254,-694.8901111,-1.927739915,A031 +370,alma/f661,-105.4387377,-755.003357,-1.640752815,A033 +371,alma/f661,-76.90232093,-718.1727584,-1.929073338,A034 +372,alma/f661,-26.04186157,-726.1888088,-2.332575051,A035 +373,alma/f661,-15.39951252,-746.3592279,-2.331879161,A036 +374,alma/f661,-80.49715673,-765.1118313,-1.942599619,A038 +375,alma/f661,-64.18907113,-771.1494896,-1.940145207,A039 +376,alma/f661,-42.33954858,-777.8607093,-2.339781511,A040 +377,alma/f661,-23.09339256,-778.6079363,-2.340774491,A041 +378,alma/f661,2.382622676,-763.2855572,-2.838872989,A042 +379,alma/f661,17.1053716,-766.5338029,-2.842286715,A043 +380,alma/f661,-80.06703001,-780.3740238,-1.336451415,A044 +381,alma/f661,-63.50521219,-786.8199568,-1.341060659,A045 +382,alma/f661,-36.66707354,-762.1662821,-2.339843364,A046 +383,alma/f661,-19.65399721,-794.5952314,-2.338743316,A047 +384,alma/f661,-1.523355241,-788.9452581,-2.8370088,A048 +385,alma/f661,30.35174917,-773.9188068,-3.336231664,A049 +386,alma/f661,-15.04639784,-764.3348031,-2.335016467,A050 +387,alma/f869,-33.89412596,-712.7516484,-2.330089496,A001 +388,alma/f869,-17.45390887,-709.6086972,-2.32867142,A002 +389,alma/f869,-22.5589292,-691.9838607,-2.323742384,A003 +390,alma/f869,-5.421013146,-723.7911045,-2.334250518,A004 +391,alma/f869,25.24593899,-744.4318445,-2.336684256,A005 +392,alma/f869,20.94634824,-721.464646,-2.333017829,A006 +393,alma/f869,15.93453511,-700.6757482,-2.32967552,A007 +394,alma/f869,9.482335836,-687.0764746,-2.729176727,A008 +395,alma/f869,-9.835100334,-663.8265957,-2.722704263,A009 +396,alma/f869,-20.89371519,-653.559982,-2.43766594,A010 +397,alma/f869,37.82617818,-735.8760818,-2.484749162,A011 +398,alma/f869,0.965953711,-702.6549839,-2.325874408,A013 +399,alma/f869,10.73987943,-659.5673638,-2.726261907,A015 +400,alma/f869,-20.62042134,-633.9073418,-2.527672839,A016 +401,alma/f869,-6.712372688,-684.9519378,-2.3269437,A017 +402,alma/f869,-41.23929872,-725.9777278,-2.33663097,A018 +403,alma/f869,-50.30411069,-711.209498,-2.332024766,A019 +404,alma/f869,-43.64407228,-652.7424613,-2.322696805,A022 +405,alma/f869,-59.4042934,-667.5717395,-2.130365568,A023 +406,alma/f869,-74.47461587,-684.6574595,-2.129342649,A024 +407,alma/f869,-84.5230042,-704.8937799,-1.937681767,A025 +408,alma/f869,-86.87286754,-732.2620426,-1.928810218,A026 +409,alma/f869,-93.14292454,-745.9594809,-1.941492838,A027 +410,alma/f869,-57.04992893,-645.4388456,-2.129055948,A028 +411,alma/f869,-68.48107366,-698.470785,-2.334779889,A030 +412,alma/f869,-95.8997254,-694.8901111,-1.927739915,A031 +413,alma/f869,-105.4387377,-755.003357,-1.640752815,A033 +414,alma/f869,-76.90232093,-718.1727584,-1.929073338,A034 +415,alma/f869,-26.04186157,-726.1888088,-2.332575051,A035 +416,alma/f869,-15.39951252,-746.3592279,-2.331879161,A036 +417,alma/f869,-80.49715673,-765.1118313,-1.942599619,A038 +418,alma/f869,-64.18907113,-771.1494896,-1.940145207,A039 +419,alma/f869,-42.33954858,-777.8607093,-2.339781511,A040 +420,alma/f869,-23.09339256,-778.6079363,-2.340774491,A041 +421,alma/f869,2.382622676,-763.2855572,-2.838872989,A042 +422,alma/f869,17.1053716,-766.5338029,-2.842286715,A043 +423,alma/f869,-80.06703001,-780.3740238,-1.336451415,A044 +424,alma/f869,-63.50521219,-786.8199568,-1.341060659,A045 +425,alma/f869,-36.66707354,-762.1662821,-2.339843364,A046 +426,alma/f869,-19.65399721,-794.5952314,-2.338743316,A047 +427,alma/f869,-1.523355241,-788.9452581,-2.8370088,A048 +428,alma/f869,30.35174917,-773.9188068,-3.336231664,A049 +429,alma/f869,-15.04639784,-764.3348031,-2.335016467,A050 diff --git a/maria/instrument/dets/alma.cycle10.2.cfg b/maria/instrument/data/alma/alma.cycle10.2.cfg similarity index 100% rename from maria/instrument/dets/alma.cycle10.2.cfg rename to maria/instrument/data/alma/alma.cycle10.2.cfg diff --git a/maria/instrument/dets/alma.cycle10.3.cfg b/maria/instrument/data/alma/alma.cycle10.3.cfg similarity index 100% rename from maria/instrument/dets/alma.cycle10.3.cfg rename to maria/instrument/data/alma/alma.cycle10.3.cfg diff --git a/maria/instrument/dets/alma.cycle10.4.cfg b/maria/instrument/data/alma/alma.cycle10.4.cfg similarity index 100% rename from maria/instrument/dets/alma.cycle10.4.cfg rename to maria/instrument/data/alma/alma.cycle10.4.cfg diff --git a/maria/instrument/dets/alma.cycle10.5.cfg b/maria/instrument/data/alma/alma.cycle10.5.cfg similarity index 100% rename from maria/instrument/dets/alma.cycle10.5.cfg rename to maria/instrument/data/alma/alma.cycle10.5.cfg diff --git a/maria/instrument/dets/alma.cycle10.6.cfg b/maria/instrument/data/alma/alma.cycle10.6.cfg similarity index 100% rename from maria/instrument/dets/alma.cycle10.6.cfg rename to maria/instrument/data/alma/alma.cycle10.6.cfg diff --git a/maria/instrument/dets/alma.cycle10.7.cfg b/maria/instrument/data/alma/alma.cycle10.7.cfg similarity index 100% rename from maria/instrument/dets/alma.cycle10.7.cfg rename to maria/instrument/data/alma/alma.cycle10.7.cfg diff --git a/maria/instrument/dets/alma.cycle10.8.cfg b/maria/instrument/data/alma/alma.cycle10.8.cfg similarity index 100% rename from maria/instrument/dets/alma.cycle10.8.cfg rename to maria/instrument/data/alma/alma.cycle10.8.cfg diff --git a/maria/instrument/dets.py b/maria/instrument/dets.py index 346e27d..b358486 100644 --- a/maria/instrument/dets.py +++ b/maria/instrument/dets.py @@ -5,7 +5,8 @@ import numpy as np import pandas as pd -from .band import Band, BandList, generate_bands # noqa F401 +from .. import utils +from .bands import BandList, all_bands here, this_filename = os.path.split(__file__) @@ -17,9 +18,10 @@ REQUIRED_DET_CONFIG_KEYS = ["n", "band_center", "band_width"] DET_COLUMN_TYPES = { - "uid": "int", + "tag": "str", + "uid": "str", "band": "str", - "nom_freq": "float", + "band_center": "float", "offset_x": "float", "offset_y": "float", "baseline_x": "float", @@ -27,103 +29,139 @@ "baseline_z": "float", "pol_angle": "float", "efficiency": "float", + "primary_size": "float", } +SUPPORTED_GEOMETRIES = ["flower", "hex", "square"] -def generate_instrument_offsets(geometry, field_of_view, n): - valid_instrument_types = ["flower", "hex", "square"] + +def generate_offsets(n, geometry="hex"): + if geometry not in SUPPORTED_GEOMETRIES: + raise ValueError(f"'geometry' must be one of {SUPPORTED_GEOMETRIES}.") + + if geometry == "hex": + angles = np.linspace(0, 2 * np.pi, 6 + 1)[1:] + np.pi / 2 + z = np.array([0]) + layer = 0 + while len(z) < n: + for angle in angles: + for _z in layer * np.exp(1j * angle) + np.arange(layer) * np.exp( + 1j * (angle + 2 * np.pi / 3) + ): + z = np.r_[z, _z] + layer += 1 + z -= z.mean() + z *= 0.5 / np.abs(z).max() + + return np.c_[np.real(np.array(z[:n])), np.imag(np.array(z[:n]))].T if geometry == "flower": - phi = np.pi * (3.0 - np.sqrt(5.0)) # golden angle in radians - dzs = np.zeros(n).astype(complex) + golden_ratio = np.pi * (3.0 - np.sqrt(5.0)) # golden angle in radians + z = np.zeros(n).astype(complex) for i in range(n): - dzs[i] = np.sqrt((i / (n - 1)) * 2) * np.exp(1j * phi * i) - od = np.abs(np.subtract.outer(dzs, dzs)) - dzs *= field_of_view / od.max() - return np.c_[np.real(dzs), np.imag(dzs)] - if geometry == "hex": - return generate_hex_offsets(n, field_of_view) + z[i] = np.sqrt((i / (n - 1)) * 2) * np.exp(1j * golden_ratio * i) + z *= 0.5 / np.abs(z.max()) + return np.c_[np.real(z), np.imag(z)].T + if geometry == "square": - dxy_ = np.linspace(-field_of_view, field_of_view, int(np.ceil(np.sqrt(n)))) / ( - 2 * np.sqrt(2) - ) - DX, DY = np.meshgrid(dxy_, dxy_) - return np.c_[DX.ravel()[:n], DY.ravel()[:n]] - - raise ValueError( - "Please specify a valid instrument type. Valid instrument types are:\n" - + "\n".join(valid_instrument_types) - ) - - -def generate_hex_offsets(n, d): - angles = np.linspace(0, 2 * np.pi, 6 + 1)[1:] + np.pi / 2 - zs = np.array([0]) - layer = 0 - while len(zs) < n: - for angle in angles: - for z in layer * np.exp(1j * angle) + np.arange(layer) * np.exp( - 1j * (angle + 2 * np.pi / 3) - ): - zs = np.append(zs, z) - layer += 1 - zs -= zs.mean() - zs *= 0.5 * d / np.abs(zs).max() - - return np.c_[np.real(np.array(zs[:n])), np.imag(np.array(zs[:n]))] - - -def generate_detectors( - bands_config: Mapping, - field_of_view: float = 1, - geometry: str = "hex", - baseline: float = 0, + side = np.linspace(-0.5, 0.5, int(np.ceil(np.sqrt(n)))) + DX, DY = np.meshgrid(side, side) + return np.c_[DX.ravel()[:n], DY.ravel()[:n]].T + + +def generate_dets( + n: int = 1, + field_of_view: float = 0.0, + boresight_offset: tuple = (0.0, 0.0), + detector_geometry: tuple = "hex", + baseline_offset: tuple = (0.0, 0.0, 0.0), + baseline_diameter: float = 0.0, + baseline_geometry: str = "flower", + bands: list = [], ): - dets = pd.DataFrame(columns=list(DET_COLUMN_TYPES.keys()), dtype=object) + dets = pd.DataFrame() + + detector_offsets = field_of_view * generate_offsets(n=n, geometry=detector_geometry) - for band_key, band_config in bands_config.items(): - band_name = band_config.get("band_name", band_key) + baselines = baseline_diameter * generate_offsets(n=n, geometry=baseline_geometry) + for band in bands: band_dets = pd.DataFrame( - columns=dets.columns, index=np.arange(band_config["n_dets"]) + index=np.arange(n), columns=["band", "offset_x", "offset_y"], dtype=float ) - band_dets.loc[:, "band"] = band_name - det_offsets_radians = np.radians( - generate_instrument_offsets(geometry, field_of_view, len(band_dets)) - ) + band_dets.loc[:, "band"] = band + band_dets.loc[:, "offset_x"] = boresight_offset[0] + detector_offsets[0] + band_dets.loc[:, "offset_y"] = boresight_offset[1] + detector_offsets[1] + + band_dets.loc[:, "baseline_x"] = baseline_offset[0] + baselines[0] + band_dets.loc[:, "baseline_y"] = baseline_offset[1] + baselines[1] + band_dets.loc[:, "baseline_z"] = baseline_offset[2] - # should we make another function for this? - det_baselines_meters = generate_instrument_offsets( - geometry, baseline, len(band_dets) + dets = pd.concat([dets, band_dets]) + + return dets + + +class Detectors: + @classmethod + def from_config(cls, config): + dets_config = utils.io.flatten_config(config["dets"]) + + df = pd.DataFrame( + {col: pd.Series(dtype=dtype) for col, dtype in DET_COLUMN_TYPES.items()} ) - # if randomize_offsets: - # np.random.shuffle(offsets_radians) # this is a stupid function. + for tag, dets_config in utils.io.flatten_config(config["dets"]).items(): + if "file" in dets_config: + tag_df = pd.read_csv(f'{here}/{dets_config["file"]}', index_col=0) - band_dets.loc[:, "nom_freq"] = band_config.get("band_center") + else: + tag_df = generate_dets(**dets_config) - band_dets.loc[:, "offset_x"] = det_offsets_radians[:, 0] - band_dets.loc[:, "offset_y"] = det_offsets_radians[:, 1] - band_dets.loc[:, "baseline_x"] = det_baselines_meters[:, 0] - band_dets.loc[:, "baseline_y"] = det_baselines_meters[:, 1] - band_dets.loc[:, "baseline_z"] = 0 * det_baselines_meters[:, 1] + fill_level = int(np.log(len(tag_df) - 1) / np.log(10) + 1) + tag_df.insert( + 0, + "uid", + [f"{tag}_{str(i).zfill(fill_level)}" for i in range(len(tag_df))], + ) + tag_df.insert(1, "tag", tag) - band_dets.loc[:, "pol_angle"] = 0 - band_dets.loc[:, "efficiency"] = band_config.get("efficiency", 1.0) + df = pd.concat([df, tag_df]) - dets = pd.concat([dets, band_dets], axis=0) + df.index = np.arange(len(df)) - dets.loc[:, "uid"] = np.arange(len(dets)) - dets.index = np.arange(len(dets)) + for col in ["primary_size"]: + if df.loc[:, col].isna().any(): + df.loc[:, col] = config[col] - for col, dtype in DET_COLUMN_TYPES.items(): - dets.loc[:, col] = dets.loc[:, col].astype(dtype) + for col in [ + "offset_x", + "offset_y", + "baseline_x", + "baseline_y", + "baseline_z", + "pol_angle", + ]: + if df.loc[:, col].isna().any(): + df.loc[:, col] = 0 - return dets + # get the bands + bands_config = {} + for band in sorted(np.unique(df.band)): + if isinstance(band, Mapping): + bands_config[band] = band + if isinstance(band, str): + bands_config[band] = all_bands[band] + bands = BandList.from_config(bands_config) + + for band in bands: + df.loc[df.band == band.name, "band_center"] = band.center + df.loc[df.band == band.name, "efficiency"] = band.efficiency + + return cls(df=df, bands=bands) -class Detectors: def __repr__(self): return self.df.__repr__() @@ -147,25 +185,6 @@ def subset(self, band=None): mask = self.band == band return Detectors(bands=bands, df=self.df.loc[mask]) - @classmethod - def generate( - cls, - bands_config: Mapping, - field_of_view: float = 1, - geometry: str = "hex", - baseline: float = 0, - ): - dets_df = generate_detectors( - bands_config=bands_config, - field_of_view=field_of_view, - geometry=geometry, - baseline=baseline, - ) - - bands = generate_bands(bands_config=bands_config) - - return cls(df=dets_df, bands=bands) - @property def n(self): return len(self.df) @@ -190,6 +209,10 @@ def band_width(self): def __len__(self): return len(self.df) + @property + def index(self): + return self.df.index.values + @property def ubands(self): return list(self.bands.keys()) diff --git a/maria/instrument/dets/alma1.csv b/maria/instrument/dets/alma1.csv deleted file mode 100644 index a0ea235..0000000 --- a/maria/instrument/dets/alma1.csv +++ /dev/null @@ -1,44 +0,0 @@ -band,baseline_x,baseline_y,baseline_z,primary_size,pad -alma,-33.89412596,-712.7516484,-2.330089496,12.0, A001 -alma,-17.45390887,-709.6086972,-2.32867142,12.0, A002 -alma,-22.5589292,-691.9838607,-2.323742384,12.0, A003 -alma,-5.421013146,-723.7911045,-2.334250518,12.0, A004 -alma,25.24593899,-744.4318445,-2.336684256,12.0, A005 -alma,20.94634824,-721.464646,-2.333017829,12.0, A006 -alma,15.93453511,-700.6757482,-2.32967552,12.0, A007 -alma,9.482335836,-687.0764746,-2.729176727,12.0, A008 -alma,-9.835100334,-663.8265957,-2.722704263,12.0, A009 -alma,-20.89371519,-653.559982,-2.43766594,12.0, A010 -alma,37.82617818,-735.8760818,-2.484749162,12.0, A011 -alma,0.965953711,-702.6549839,-2.325874408,12.0, A013 -alma,10.73987943,-659.5673638,-2.726261907,12.0, A015 -alma,-20.62042134,-633.9073418,-2.527672839,12.0, A016 -alma,-6.712372688,-684.9519378,-2.3269437,12.0, A017 -alma,-41.23929872,-725.9777278,-2.33663097,12.0, A018 -alma,-50.30411069,-711.209498,-2.332024766,12.0, A019 -alma,-43.64407228,-652.7424613,-2.322696805,12.0, A022 -alma,-59.4042934,-667.5717395,-2.130365568,12.0, A023 -alma,-74.47461587,-684.6574595,-2.129342649,12.0, A024 -alma,-84.5230042,-704.8937799,-1.937681767,12.0, A025 -alma,-86.87286754,-732.2620426,-1.928810218,12.0, A026 -alma,-93.14292454,-745.9594809,-1.941492838,12.0, A027 -alma,-57.04992893,-645.4388456,-2.129055948,12.0, A028 -alma,-68.48107366,-698.470785,-2.334779889,12.0, A030 -alma,-95.8997254,-694.8901111,-1.927739915,12.0, A031 -alma,-105.4387377,-755.003357,-1.640752815,12.0, A033 -alma,-76.90232093,-718.1727584,-1.929073338,12.0, A034 -alma,-26.04186157,-726.1888088,-2.332575051,12.0, A035 -alma,-15.39951252,-746.3592279,-2.331879161,12.0, A036 -alma,-80.49715673,-765.1118313,-1.942599619,12.0, A038 -alma,-64.18907113,-771.1494896,-1.940145207,12.0, A039 -alma,-42.33954858,-777.8607093,-2.339781511,12.0, A040 -alma,-23.09339256,-778.6079363,-2.340774491,12.0, A041 -alma,2.382622676,-763.2855572,-2.838872989,12.0, A042 -alma,17.1053716,-766.5338029,-2.842286715,12.0, A043 -alma,-80.06703001,-780.3740238,-1.336451415,12.0, A044 -alma,-63.50521219,-786.8199568,-1.341060659,12.0, A045 -alma,-36.66707354,-762.1662821,-2.339843364,12.0, A046 -alma,-19.65399721,-794.5952314,-2.338743316,12.0, A047 -alma,-1.523355241,-788.9452581,-2.8370088,12.0, A048 -alma,30.35174917,-773.9188068,-3.336231664,12.0, A049 -alma,-15.04639784,-764.3348031,-2.335016467,12.0, A050 diff --git a/maria/instrument/instruments.yml b/maria/instrument/instruments.yml index 3745357..562f400 100644 --- a/maria/instrument/instruments.yml +++ b/maria/instrument/instruments.yml @@ -1,206 +1,78 @@ -default: - description: A dummy instrument. - bands: - f150: - n_dets: 19 - band_center: 150 - band_width: 10 - efficiency: 1 - field_of_view: 1 - geometry: hex - primary_size: 10 - documentation: - - -MUSTANG-2: - description: MUSTANG-2 (Multiplexed SQUID TES Array for Ninety Gigahertz) - bands: - f093: - n_dets: 217 - # file: data/mustang2/passbands/f093.csv - band_center: 90 - band_width: 30 - efficiency: 0.5 - white_noise: 266.e-6 # in K_RJ s^-1/2 - pink_noise: 1.e-1 # in K_RJ s^-1/2 - field_of_view: 0.07 # in degrees - geometry: hex - primary_size: 100 # in meters - bath_temp: 100.e-3 # in K - documentation: https://greenbankobservatory.org/science/gbt-observers/mustang-2/ - ABS: + aliases: ["abs"] description: Atacama B-Mode Search + documentation: https://almascience.nrao.edu/about-alma/alma-basics bands: - f150: - n_dets: 217 - band_center: 150 - band_width: 10 - efficiency: 1 + abs: + n_dets: 250 + center: 150 + width: 10 + efficiency: 1.9 + bands: [abs/f150] field_of_view: 25 geometry: hex primary_size: 0.5 - documentation: https://almascience.nrao.edu/about-alma/alma-basics -ACT-PA4: - description: AdvACT Polarization Array 4 - bands: - f150: - n_dets: 750 - band_center: 150 - band_width: 10 - f220: - n_dets: 750 - band_center: 220 - band_width: 20 - field_of_view: 0.8 - geometry: hex - primary_size: 6 +AdvACT: + aliases: ["act", "advact"] + description: Atacama Cosmology Telescope documentation: https://act.princeton.edu/overview/camera-specifications/advact - - -ACT-PA5: - description: AdvACT Polarization Array 5 - bands: - f150: - n_dets: 750 - band_center: 150 - band_width: 10 - f220: - n_dets: 750 - band_center: 220 - band_width: 20 - field_of_view: 0.8 - geometry: hex + dets: + pa4: + n: 750 + boresight_offset: [-0.8, -0.5] + field_of_view: 0.8 + detector_geometry: hex + bands: [act/pa4/f150, act/pa4/f220] + pa5: + n: 750 + boresight_offset: [0.0, 1.0] + field_of_view: 0.8 + detector_geometry: hex + bands: [act/pa5/f090, act/pa5/f150] + pa6: + n: 750 + boresight_offset: [0.8, -0.5] + field_of_view: 0.8 + detector_geometry: hex + bands: [act/pa6/f090, act/pa6/f150] primary_size: 6 - documentation: https://act.princeton.edu/overview/camera-specifications/advact - - -ACT-PA7: - description: AdvACT Polarization Array 5 - bands: - f030: - n_dets: 50 - band_center: 30 - band_width: 10 - f040: - n_dets: 50 - band_center: 40 - band_width: 10 - field_of_view: 0.8 - geometry: hex - primary_size: 6 - documentation: https://act.princeton.edu/overview/camera-specifications/advact - ALMA: - description: ALMA (Atacama Large Millimeter Array) - bands: - f043: - n_dets: 66 - band_center: 43 - band_width: 16 - f078: - n_dets: 66 - band_center: 78 - band_width: 22 - f100: - n_dets: 66 - band_center: 100 - band_width: 32 - f144: - n_dets: 66 - band_center: 144 - band_width: 38 - f187: - n_dets: 66 - band_center: 187 - band_width: 48 - f243: - n_dets: 66 - band_center: 243 - band_width: 64 - f324: - n_dets: 66 - band_center: 324 - band_width: 98 - f447: - n_dets: 66 - band_center: 447 - band_width: 114 - f661: - n_dets: 66 - band_center: 661 - band_width: 118 - f869: - n_dets: 66 - band_center: 869 - band_width: 163 - - field_of_view: 0 - baseline: 12000 # meters - geometry: hex + aliases: ["alma"] + description: ALMA Configuration 1 + documentation: https://www.eso.org/public/teles-instr/alma/ + dets: + alma: + file: data/alma/alma.cycle1.total.csv primary_size: 12 - documentation: https://almascience.nrao.edu/about-alma/alma-basics - -AtLAST: - description: AtLAST (Atacama Large-Aperture Submillimeter Telescope) - bands: - f027: - n_dets: 750 - band_center: 27 - band_width: 5 - f039: - n_dets: 750 - band_center: 39 - band_width: 5 - f093: - n_dets: 750 - band_center: 93 - band_width: 10 - f150: - n_dets: 750 - band_center: 150 - band_width: 10 - f225: - n_dets: 750 - band_center: 225 - band_width: 30 - f280: - n_dets: 750 - band_center: 280 - band_width: 40 - geometry: hex - field_of_view: 2.0 - primary_size: 50 - documentation: https://www.atlast.uio.no/ -SCUBA-2: - description: SCUBA-2 (Submillimetre Common-User Bolometer Instrument 2) - bands: - f350: - n_dets: 5120 - band_center: 350 - band_width: 10 - f650: - n_dets: 5120 - band_center: 650 - band_width: 10 - field_of_view: 0.12 +AtLAST: + description: Atacama Large Aperture Submillimeter Telescope + dets: + atlast: + n: 217 + field_of_view: 0.07 + detector_geometry: hex + bands: [atlast/f027, atlast/f039, atlast/f093, atlast/f150, atlast/f225, atlast/f280] + field_of_view: 0.07 # in degrees geometry: hex - primary_size: 15 - documentation: https://www.eaobservatory.org/jcmt/instrumentation/continuum/scuba-2/ + primary_size: 100 # in meters + bath_temp: 100.e-3 # in K + documentation: https://greenbankobservatory.org/science/gbt-observers/mustang-2/ -SO_SAT: - description: SCUBA-2 (Submillimetre Common-User Bolometer Instrument 2) - bands: - f150: - n_dets: 217 - band_center: 150 - band_width: 20 - field_of_view: 10 +MUSTANG-2: + description: MUSTANG-2 (Multiplexed SQUID TES Array for Ninety Gigahertz) + dets: + m2: + n: 217 + field_of_view: 0.07 + detector_geometry: hex + bands: [mustang2/f093] + field_of_view: 0.07 # in degrees geometry: hex - primary_size: 0.5 - documentation: https://www.eaobservatory.org/jcmt/instrumentation/continuum/scuba-2/ + primary_size: 100 # in meters + bath_temp: 100.e-3 # in K + documentation: https://www.atlast.uio.no/ diff --git a/maria/map/__init__.py b/maria/map/__init__.py index a0d5112..430be17 100644 --- a/maria/map/__init__.py +++ b/maria/map/__init__.py @@ -11,7 +11,7 @@ from tqdm import tqdm from .. import utils -from ..instrument import beam +from ..instrument import beams @dataclass @@ -235,13 +235,13 @@ def _sample_maps(self): freqs.set_description("Sampling input map") # nu is in GHz, f is in Hz - nu_fwhm = beam.compute_angular_fwhm( + nu_fwhm = beams.compute_angular_fwhm( fwhm_0=self.instrument.primary_size, z=np.inf, f=1e9 * nu ) - nu_map_filter = beam.construct_beam_filter( + nu_map_filter = beams.construct_beam_filter( fwhm=nu_fwhm, res=self.input_map.res ) - filtered_nu_map_data = beam.separably_filter( + filtered_nu_map_data = beams.separably_filter( self.input_map.data[i], nu_map_filter ) diff --git a/maria/map/mappers.py b/maria/map/mappers.py index 9b18aa6..23e2267 100644 --- a/maria/map/mappers.py +++ b/maria/map/mappers.py @@ -96,8 +96,8 @@ def save_maps(self, filepath): save_maps = np.zeros((len(self.map.freqs), self.n_x, self.n_y)) for i, key in enumerate(self.band_data.keys()): - self.header["CRVAL3"] = self.band_data[key]["nom_freq"] * 1e9 - self.header["CDELT3"] = self.band_data[key]["nom_freqwidth"] * 1e9 + self.header["CRVAL3"] = self.band_data[key]["band_center"] * 1e9 + self.header["CDELT3"] = self.band_data[key]["band_centerwidth"] * 1e9 save_maps[i] = self.map.data[i] @@ -227,8 +227,8 @@ def run(self): self.raw_map_sums[band] += map_sum self.raw_map_cnts[band] += map_cnt - self.band_data[band]["nom_freq"] = tod.dets.nom_freq.mean() - self.band_data[band]["nom_freqwidth"] = 30 + self.band_data[band]["band_center"] = tod.dets.band_center.mean() + self.band_data[band]["band_centerwidth"] = 30 band_map_numer = self.raw_map_sums[band].copy() band_map_denom = self.raw_map_cnts[band].copy() @@ -254,7 +254,7 @@ def run(self): self.map = Map( data=self.map_data, - freqs=np.array([self.band_data[band]["nom_freq"] for band in self.band]), + freqs=np.array([self.band_data[band]["band_center"] for band in self.band]), width=np.degrees(self.width) if self.degrees else self.width, height=np.degrees(self.height) if self.degrees else self.height, center=np.degrees(self.center) if self.degrees else self.center, diff --git a/maria/noise/__init__.py b/maria/noise/__init__.py index 3072c49..5aa75b6 100644 --- a/maria/noise/__init__.py +++ b/maria/noise/__init__.py @@ -11,7 +11,7 @@ def _simulate_noise(self): self.data["noise"] = np.zeros((self.instrument.n_dets, self.pointing.n_time)) for band in self.instrument.dets.bands: - band_index = self.instrument.dets(band=band.name).uid + band_index = self.instrument.dets(band=band.name).index if band.white_noise > 0: self.data["noise"][band_index] += ( diff --git a/maria/sim/__init__.py b/maria/sim/__init__.py index 00cd714..69d9c91 100644 --- a/maria/sim/__init__.py +++ b/maria/sim/__init__.py @@ -22,7 +22,7 @@ def from_config(cls, config: dict = {}, **params): def __init__( self, - instrument: str or Instrument = "default", + instrument: str or Instrument = "MUSTANG-2", pointing: str or Pointing = "stare", site: str or Site = "hoagie_haven", verbose: bool = True, diff --git a/maria/sim/default_params.yml b/maria/sim/default_params.yml index b15d8e7..7925e1c 100644 --- a/maria/sim/default_params.yml +++ b/maria/sim/default_params.yml @@ -3,15 +3,13 @@ instrument: # defaults to a small test instrument instrument_description: - bands: + dets: f090: n: 60 - band_center: 90 - band_width: 10 + bands: ["act/pa5/f090"] f150: n: 60 - band_center: 150 - band_width: 20 + bands: ["act/pa5/f150"] field_of_view: 0.8 baseline: 0 # meters geometry: hex diff --git a/maria/tests/test_pipeline.py b/maria/tests/test_pipeline.py index 07aea6e..f3963f9 100644 --- a/maria/tests/test_pipeline.py +++ b/maria/tests/test_pipeline.py @@ -49,7 +49,7 @@ def test_mustang2(): map_res=pixel_size, # resolution of the map map_center=pointing_center, # RA & Dec in degree map_freqs=[93], - bands={"f093": {"n_dets": 217, "band_center": 93, "band_width": 10}}, + dets={"f093": {"n": 217, "bands": ["mustang2/f093"]}}, # MUSTANG-2 Observational setup # ----------------------------s scan_options={ diff --git a/maria/tod/__init__.py b/maria/tod/__init__.py index 2741b36..292d753 100644 --- a/maria/tod/__init__.py +++ b/maria/tod/__init__.py @@ -7,7 +7,7 @@ import scipy as sp from astropy.io import fits -from .. import site +from .. import instrument, site from ..coords import Coordinates, get_center_phi_theta from ..instrument.dets import Detectors @@ -78,15 +78,10 @@ def _from_mustang2(cls, fname: str, hdu: int = 1): frame="ra_dec", ) - dets = Detectors.generate( - bands_config={ - "f093": { - "n_dets": n_dets, - "band_center": 93, - "band_width": 30, - } - } - ) + m2_config = instrument.get_instrument_config(instrument_name="MUSTANG-2") + m2_config["dets"]["m2"]["n"] = n_dets + + dets = Detectors.from_config(m2_config) return cls(coords=coords, dets=dets, data=data, units={"data": "K"}) diff --git a/maria/utils/io.py b/maria/utils/io.py index 1895971..7b8746f 100644 --- a/maria/utils/io.py +++ b/maria/utils/io.py @@ -1,6 +1,7 @@ import os import pathlib import time as ttime +from collections.abc import Mapping from datetime import datetime import pytz @@ -8,6 +9,17 @@ import yaml +def flatten_config(m, prefix=""): + items = [] + for k, v in m.items(): + new_key = f"{prefix}/{k}" if prefix else k + if any(isinstance(vv, Mapping) for kk, vv in v.items()): + items.extend(flatten_config(v, new_key).items()) + else: + items.append((new_key, v)) + return dict(items) + + def read_yaml(path): """ Return a YAML file as a dict