예제 #1
0
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
예제 #2
0
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
예제 #3
0
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
예제 #4
0
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'
예제 #5
0
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
예제 #6
0
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
예제 #7
0
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
예제 #8
0
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'