def test_rstn(parse_path_moc): start_time = Time('2020-01-01T06:17:38.000') end_time = Time('2020-01-01T15:27:43.000') meta = { 'instrument': 'RSTN', 'observatory': 'San Vito', 'start_time': start_time, 'end_time': end_time, 'detector': 'RSTN', 'wavelength': a.Wavelength(25000.0 * u.kHz, 180000.0 * u.kHz), 'freqs': np.concatenate([np.linspace(25, 75, 401), np.linspace(75, 180, 401)])*u.MHz, 'times': start_time + np.linspace(0, (end_time-start_time).to_value('s'), 11003)*u.s } array = np.zeros((802, 11003)) parse_path_moc.return_value = [(array, meta)] file = Path('fakes.srs') spec = Spectrogram(file) assert isinstance(spec, RSTNSpectrogram) assert spec.observatory == 'SAN VITO' assert spec.instrument == 'RSTN' assert spec.detector == 'RSTN' assert spec.start_time.datetime == datetime(2020, 1, 1, 6, 17, 38) assert spec.end_time.datetime == datetime(2020, 1, 1, 15, 27, 43) assert spec.wavelength.min == 25000 * u.kHz assert spec.wavelength.max == 180000 * u.kHz
def test_psp_rfs_hfr(parse_path_moc): start_time = Time('2019-04-09 00:01:13.904188') end_time = Time('2019-04-10 00:01:02.758315') meta = { 'cdf_meta': { 'TITLE': 'PSP FIELDS RFS HFR data', 'Project': 'PSP', 'Source_name': 'PSP_FLD>Parker Solar Probe FIELDS', 'Descriptor': 'RFS_HFR>Radio Frequency Spectrometer HFR', 'Data_type': 'L2>Level 2 Data', 'Data_version': '01', 'MODS': 'Revision 1', 'Logical_file_id': 'psp_fld_l2_rfs_lfr_20190409_v01', 'Mission_group': 'PSP' }, 'detector': 'hfr', 'instrument': 'FIELDS/RFS', 'observatory': 'PSP', 'start_time': start_time, 'end_time': end_time, 'wavelength': a.Wavelength(1275.0 * u.kHz, 19171.876 * u.kHz), 'times': start_time + np.linspace(0, (end_time - start_time).to_value('s'), 12359) * u.s, 'freqs': [ 1275000., 1321875., 1378125., 1425000., 1471875., 1575000., 1621875., 1678125., 1771875., 1828125., 1921875., 2025000., 2128125., 2221875., 2278125., 2371875., 2521875., 2625000., 2728125., 2878125., 2971875., 3121875., 3271875., 3375000., 3525000., 3721875., 3871875., 4021875., 4228125., 4425000., 4575000., 4771875., 5025000., 5221875., 5475000., 5728125., 5971875., 6225000., 6478125., 6778125., 7078125., 7425000., 7725000., 8071875., 8428125., 8821875., 9178125., 9571875., 10021875., 10471875., 10921875., 11428125., 11925000., 12421875., 13021875., 13575000., 14175000., 14821875., 15478125., 16125000., 16875000., 17625000., 18375000., 19171876. ] * u.Hz } array = np.zeros((64, 12359)) parse_path_moc.return_value = [(array, meta)] file = Path('fake.cdf') spec = Spectrogram(file) assert isinstance(spec, RFSSpectrogram) assert spec.observatory == 'PSP' assert spec.instrument == 'FIELDS/RFS' assert spec.detector == 'HFR' # TODO check why not exact prob base on spacecrast ET so won't match utc exacly assert spec.start_time.datetime == datetime(2019, 4, 9, 0, 1, 13, 904188) assert spec.end_time.datetime == datetime(2019, 4, 10, 0, 1, 2, 758315) assert spec.wavelength.min == 1275.0 * u.kHz assert spec.wavelength.max == 19171.876 * u.kHz assert spec.level == 'L2' assert spec.version == 1
def test_psp_rfs_lfr(parse_path_moc): start_time = Time('2019-04-09 00:01:16.197889') end_time = Time('2019-04-10 00:01:04.997573') meta = { 'cdf_meta': { 'TITLE': 'PSP FIELDS RFS LFR data', 'Project': 'PSP', 'Source_name': 'PSP_FLD>Parker Solar Probe FIELDS', 'Descriptor': 'RFS_LFR>Radio Frequency Spectrometer LFR', 'Data_type': 'L2>Level 2 Data', 'Data_version': '01', 'MODS': 'Revision 1', 'Logical_file_id': 'psp_fld_l2_rfs_lfr_20190409_v01', 'Mission_group': 'PSP' }, 'detector': 'lfr', 'instrument': 'FIELDS/RFS', 'observatory': 'PSP', 'start_time': start_time, 'end_time': end_time, 'wavelength': a.Wavelength(10.546879882812501 * u.kHz, 1687.5 * u.kHz), 'times': start_time + np.linspace(0, (end_time - start_time).to_value('s'), 12359) * u.s, 'freqs': [ 10546.88, 18750., 28125., 37500., 46875., 56250., 65625., 75000., 84375., 89062.5, 94921.88, 100781.25, 106640.62, 112500., 118359.38, 125390.62, 132421.88, 140625., 146484.38, 157031.25, 166406.25, 175781.25, 186328.12, 196875., 208593.75, 220312.5, 233203.12, 247265.62, 261328.12, 276562.5, 292968.75, 309375., 328125., 346875., 366796.88, 387890.62, 411328.12, 434765.62, 459375., 486328.12, 514453.12, 544921.9, 576562.5, 609375., 645703.1, 682031.25, 721875., 764062.5, 808593.75, 855468.75, 904687.5, 957421.9, 1013671.9, 1072265.6, 1134375., 1196484.4, 1265625., 1312500., 1368750., 1425000., 1481250., 1565625., 1621875., 1687500. ] * u.Hz } array = np.zeros((64, 12359)) parse_path_moc.return_value = [(array, meta)] file = Path('fake.cdf') spec = Spectrogram(file) assert isinstance(spec, RFSSpectrogram) assert spec.observatory == 'PSP' assert spec.instrument == 'FIELDS/RFS' assert spec.detector == 'LFR' # TODO check why not exact prob base on spacecrast ET so won't match utc exacly assert spec.start_time.datetime == datetime(2019, 4, 9, 0, 1, 16, 197889) assert spec.end_time.datetime == datetime(2019, 4, 10, 0, 1, 4, 997573) assert spec.wavelength.min.round(1) == 10.5 * u.kHz assert spec.wavelength.max == 1687.5 * u.kHz assert spec.level == 'L2' assert spec.version == 1
def test_eovsa_xpall(parse_path_moc, eovsa_data): meta, array = eovsa_data parse_path_moc.return_value = [(array, meta)] file = Path('fake.fts') spec = Spectrogram(file) assert isinstance(spec, EOVSASpectrogram) assert spec.observatory == 'OWENS VALLEY' assert spec.instrument == 'EOVSA' assert spec.detector == 'EOVSA' assert spec.start_time.datetime == datetime(2021, 2, 13, 15, 41, 20, 999000) assert spec.end_time.datetime == datetime(2021, 2, 13, 20, 43, 18, 999000) assert spec.wavelength.min.to(u.GHz) == 1.105371117591858 * u.GHz assert spec.wavelength.max.to(u.GHz) == 17.979686737060547 * u.GHz assert spec.polarisation == 'I'
def test_swaves_lfr(parse_path_moc): meta = { 'instrument': 'swaves', 'observatory': 'STEREO A', 'product': 'average', 'start_time': Time('2020-11-28 00:00:00'), 'end_time': Time('2020-11-28 23:59:00'), 'wavelength': a.Wavelength(2.6 * u.kHz, 153.4 * u.kHz), 'detector': 'lfr', 'freqs': [ 2.6, 2.8, 3.1, 3.4, 3.7, 4., 4.4, 4.8, 5.2, 5.7, 6.2, 6.8, 7.4, 8.1, 8.8, 9.6, 10.4, 11.4, 12.4, 13.6, 14.8, 16.1, 17.6, 19.2, 20.9, 22.8, 24.9, 27.1, 29.6, 32.2, 35.2, 38.3, 41.8, 45.6, 49.7, 54.2, 59.1, 64.5, 70.3, 76.7, 83.6, 91.2, 99.4, 108.4, 118.3, 129., 140.6, 153.4 ] * u.kHz, 'times': np.arange(1440) * u.min } array = np.zeros((48, 1440)) parse_path_moc.return_value = [(array, meta)] file = Path('fake.dat') spec = Spectrogram(file) assert isinstance(spec, SWAVESSpectrogram) assert spec.observatory == 'STEREO A' assert spec.instrument == 'SWAVES' assert spec.detector == 'LFR' assert spec.start_time.datetime == datetime(2020, 11, 28, 0, 0) assert spec.end_time.datetime == datetime(2020, 11, 28, 23, 59) assert spec.wavelength.min == 2.6 * u.kHz assert spec.wavelength.max == 153.4 * u.kHz
def test_waves_rad2(parse_path_moc): meta = { 'instrument': 'WAVES', 'observatory': 'WIND', 'start_time': Time('2020-11-28 00:00:00'), 'end_time': Time('2020-11-28 23:59:00'), 'wavelength': a.Wavelength(1.075 * u.MHz, 13.825 * u.MHz), 'detector': 'RAD2', 'freqs': np.linspace(1.075, 13.825, 256) * u.MHz, 'times': np.arange(1440) * u.min, } array = np.zeros((319, 1440)) parse_path_moc.return_value = [(array, meta)] file = Path('fake.dat') spec = Spectrogram(file) assert isinstance(spec, WAVESSpectrogram) assert spec.observatory == 'WIND' assert spec.instrument == 'WAVES' assert spec.detector == 'RAD2' assert spec.start_time.datetime == datetime(2020, 11, 28, 0, 0) assert spec.end_time.datetime == datetime(2020, 11, 28, 23, 59) assert spec.wavelength.min == 1.075 * u.MHz assert spec.wavelength.max == 13.825 * u.MHz
def test_swaves_hfr(parse_path_moc): meta = { 'instrument': 'swaves', 'observatory': 'STEREO A', 'product': 'average', 'start_time': Time('2020-11-28 00:00:00'), 'end_time': Time('2020-11-28 23:59:00'), 'wavelength': a.Wavelength(125.0 * u.kHz, 16025.0 * u.kHz), 'detector': 'hfr', 'freqs': np.linspace(125, 16025, 319) * u.kHz, 'times': np.arange(1440) * u.min, } array = np.zeros((319, 1440)) parse_path_moc.return_value = [(array, meta)] file = Path('fake.dat') spec = Spectrogram(file) assert isinstance(spec, SWAVESSpectrogram) assert spec.observatory == 'STEREO A' assert spec.instrument == 'SWAVES' assert spec.detector == 'HFR' assert spec.start_time.datetime == datetime(2020, 11, 28, 0, 0) assert spec.end_time.datetime == datetime(2020, 11, 28, 23, 59) assert spec.wavelength.min == 125 * u.kHz assert spec.wavelength.max == 16025 * u.kHz
def test_callisto(parse_path_moc): start_time = Time('2011-06-07 06:24:00.213') meta = { 'fits_meta': { 'OBS_LAC': 'N', 'OBS_LAT': 53.0941390991211, 'OBS_LOC': 'E', 'OBS_LON': 7.92012977600098, 'OBS_ALT': 416.5 }, 'detector': 'e-CALLISTO', 'instrument': 'e-CALLISTO', 'observatory': 'BIR', 'start_time': Time('2011-06-07 06:24:00.213'), 'end_time': Time('2011-06-07 06:39:00.000'), 'wavelength': a.Wavelength(20000.0 * u.kHz, 91813.00 * u.kHz), 'times': start_time + np.arange(3600) * 0.25 * u.s, 'freqs': [ 91.81300354003906, 91.25, 91.06300354003906, 90.625, 90.43800354003906, 89.75, 89.68800354003906, 89.0, 88.625, 88.25, 88.06300354003906, 87.56300354003906, 87.43800354003906, 87.06300354003906, 86.5, 86.06300354003906, 85.875, 85.56300354003906, 84.875, 84.68800354003906, 84.31300354003906, 83.875, 83.68800354003906, 83.0, 82.75, 82.43800354003906, 81.875, 81.75, 81.18800354003906, 80.75, 80.625, 80.25, 79.68800354003906, 79.25, 79.125, 78.68800354003906, 78.43800354003906, 78.06300354003906, 77.43800354003906, 77.0, 76.625, 76.56300354003906, 76.0, 75.56300354003906, 75.125, 75.0, 74.68800354003906, 74.31300354003906, 73.68800354003906, 73.31300354003906, 72.875, 72.625, 72.125, 71.75, 71.56300354003906, 71.0, 70.93800354003906, 70.25, 70.18800354003906, 69.68800354003906, 69.43800354003906, 69.06300354003906, 68.43800354003906, 68.06300354003906, 67.93800354003906, 67.31300354003906, 66.93800354003906, 66.81300354003906, 66.125, 66.06300354003906, 65.43800354003906, 65.0, 64.875, 64.25, 64.06300354003906, 63.8129997253418, 63.3129997253418, 62.75, 62.5, 62.0, 61.9379997253418, 61.5629997253418, 60.875, 60.75, 60.3129997253418, 59.9379997253418, 59.6879997253418, 59.0, 58.625, 58.25, 58.1879997253418, 57.5, 57.125, 56.9379997253418, 56.5, 56.3129997253418, 55.9379997253418, 55.4379997253418, 54.9379997253418, 54.8129997253418, 54.4379997253418, 53.9379997253418, 53.4379997253418, 53.125, 52.9379997253418, 52.5629997253418, 51.875, 51.5629997253418, 51.1879997253418, 50.8129997253418, 50.5629997253418, 50.0629997253418, 49.6879997253418, 49.3129997253418, 48.9379997253418, 48.8129997253418, 48.125, 48.0629997253418, 47.4379997253418, 47.25, 46.9379997253418, 46.25, 45.875, 45.8129997253418, 45.3129997253418, 45.0629997253418, 44.375, 44.1879997253418, 43.8129997253418, 43.3129997253418, 43.1879997253418, 42.5, 42.125, 42.0629997253418, 41.5629997253418, 41.1879997253418, 40.6879997253418, 40.4379997253418, 39.875, 39.8129997253418, 39.4379997253418, 38.75, 38.375, 38.0629997253418, 37.6879997253418, 37.5629997253418, 36.875, 36.8129997253418, 36.25, 36.0629997253418, 35.6879997253418, 35.0629997253418, 34.875, 34.5, 34.125, 33.8129997253418, 33.125, 33.0, 32.5629997253418, 32.0629997253418, 31.937999725341797, 31.25, 30.875, 30.562999725341797, 30.125, 30.062999725341797, 29.375, 29.312999725341797, 28.875, 28.25, 28.187999725341797, 27.562999725341797, 27.125, 26.75, 26.687999725341797, 26.125, 25.75, 25.375, 25.0, 24.812999725341797, 24.125, 23.812999725341797, 23.437999725341797, 23.125, 22.812999725341797, 22.437999725341797, 21.875, 21.812999725341797, 21.125, 20.75, 20.375, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0 ] * u.MHz } array = np.zeros((200, 3600)) parse_path_moc.return_value = [(array, meta)] file = Path('fake.fit.gz') spec = Spectrogram(file) assert isinstance(spec, CALISTOSpectrogram) assert spec.observatory == 'BIR' assert spec.instrument == 'E-CALLISTO' assert spec.detector == 'E-CALLISTO' assert spec.start_time.datetime == datetime(2011, 6, 7, 6, 24, 0, 213000) assert spec.end_time.datetime == datetime(2011, 6, 7, 6, 39) assert spec.wavelength.min.to(u.MHz) == 20 * u.MHz assert spec.wavelength.max.to(u.MHz).round(1) == 91.8 * u.MHz assert str(spec.observatory_location ) == '(3801942.21260148, 528924.60367802, 5077174.56861812) m'