Exemple #1
0
def main():
    parser = argparse.ArgumentParser()
    parser.add_argument("filename")
    args = parser.parse_args()
    filename = args.filename

    record = recording.load(filename)

    print_record(record)

    fig, ax = plt.subplots()

    depths = utils.get_range_depths(record.sensor_config, record.session_info)

    if len(record.data.shape) == 3:  # Envelope, IQ, Power bins
        x = np.arange(len(record.data))
        y = depths
        z = np.abs(record.data[:, 0, :]).T

        ax.pcolormesh(x, y, z)
        ax.set_xlabel("Sweep index")
        ax.set_ylabel("Depth (m)")
    else:
        y = np.abs(record.data[:, 0, :, :].mean(axis=1))

        ax.plot(y)
        ax.set_xlabel("Frame index")
        ax.set_ylabel("Mean sweep amplitude")

        ax.legend([f"{d:.2f}" for d in depths], title="Depth")

    fig.tight_layout()
    plt.show()
Exemple #2
0
def test_recording(tmp_path, mode):
    config = configs.MODE_TO_CONFIG_CLASS_MAP[mode]()
    config.downsampling_factor = 2

    mocker = clients.MockClient()
    mocker.squeeze = False
    session_info = mocker.start_session(config)

    recorder = recording.Recorder(
        sensor_config=config,
        session_info=session_info,
    )

    for _ in range(10):
        data_info, data = mocker.get_next()
        recorder.sample(data_info, data)

    recorder.close()
    record = recorder.record

    assert record.mode == mode
    assert record.sensor_config_dump == config._dumps()
    assert len(record.data) == 10
    assert len(record.data_info) == 10
    assert isinstance(record.data, np.ndarray)

    for ext in ["h5", "npz"]:
        filename = os.path.join(tmp_path, "record." + ext)

        recording.save(filename, record)
        loaded_record = recording.load(filename)

        for a in attr.fields(recording.Record):
            if a.name == "data":
                continue

            assert getattr(record, a.name) == getattr(loaded_record, a.name)

        assert np.all(record.data == loaded_record.data)

    assert record.sensor_config.downsampling_factor == config.downsampling_factor
Exemple #3
0
def main():
    parser = argparse.ArgumentParser()
    parser.add_argument("filename")
    args = parser.parse_args()
    filename = args.filename

    record = recording.load(filename)

    print_record(record)

    if len(record.data.shape) == 3:  # Envelope, IQ, Power bins
        x = np.arange(len(record.data))
        y = utils.get_range_depths(record.sensor_config, record.session_info)
        z = np.abs(record.data[:, 0, :]).T

        fig, ax = plt.subplots()
        ax.pcolormesh(x, y, z)
        ax.set_xlabel("Sweep index")
        ax.set_ylabel("Depth (m)")
        fig.tight_layout()
        plt.show()
Exemple #4
0
def test_recording(tmp_path, mode, ext, give_pathlib_path):
    config = configs.MODE_TO_CONFIG_CLASS_MAP[mode]()
    config.downsampling_factor = 2

    mocker = clients.MockClient()
    mocker.squeeze = False
    session_info = mocker.start_session(config)

    recorder = recording.Recorder(
        sensor_config=config,
        session_info=session_info,
    )

    for _ in range(10):
        data_info, data = mocker.get_next()
        recorder.sample(data_info, data)

    recorder.close()
    record = recorder.record

    assert record.mode == mode
    assert record.sensor_config_dump == config._dumps()
    assert len(record.data) == 10
    assert len(record.data_info) == 10
    assert isinstance(record.data, np.ndarray)

    filename = Path(tmp_path).joinpath("record." + ext)

    if not give_pathlib_path:
        filename = str(filename)

    recording.save(filename, record)
    loaded_record = recording.load(filename)

    for a in attr.fields(recording.Record):
        assert np.all(
            getattr(record, a.name) == getattr(loaded_record, a.name))

    assert record.sensor_config.downsampling_factor == config.downsampling_factor