def test_to_and_from_bytes():

    acquisition = ismrmrd.Acquisition.from_array(common.create_random_data())

    deserialized_acquisition = ismrmrd.Acquisition.from_bytes(acquisition.to_bytes())

    common.compare_acquisitions(acquisition, deserialized_acquisition)
def test_serialization_with_header_fields():

    properties = common.create_random_acquisition_properties()
    data = common.create_random_data()
    trajectory = common.create_random_trajectory()

    acquisition = ismrmrd.Acquisition.from_array(data, trajectory, **properties)
    deserialized_acquisition = ismrmrd.Acquisition.from_bytes(acquisition.to_bytes())

    common.compare_acquisitions(acquisition, deserialized_acquisition)
def test_initialization_from_array():

    nchannels = 32
    nsamples = 256

    data = common.create_random_data((nchannels, nsamples))
    acquisition = ismrmrd.Acquisition.from_array(data)

    assert np.array_equal(acquisition.data, data), \
        "Acquisition data does not match data used to initialize acquisition."
def test_serialize_and_deserialize():

    acquisition = ismrmrd.Acquisition.from_array(common.create_random_data())

    with io.BytesIO() as stream:
        acquisition.serialize_into(stream.write)

        # Rewind the stream, so we can read the bytes back.
        stream.seek(0)

        deserialized_acquisition = ismrmrd.Acquisition.deserialize_from(stream.read)

        common.compare_acquisitions(acquisition, deserialized_acquisition)
def test_initialization_with_header_fields():

    fields = {
        'version': 2,
        'measurement_uid':  123456789,
        'available_channels': 64,
    }

    data = common.create_random_data()
    acquisition = ismrmrd.Acquisition.from_array(data, **fields)

    for field in fields:

        assert fields.get(field) == getattr(acquisition, field), \
            "Field {} not preserved by acquisition. ({} != {})".format(field, fields.get(field),
                                                                       getattr(acquisition, field))
def test_initialization_from_arrays():

    nchannels = 32
    nsamples = 256
    trajectory_dimensions = 2

    data = common.create_random_data((nchannels, nsamples))
    trajectory = common.create_random_trajectory((nsamples, trajectory_dimensions))

    acquisition = ismrmrd.Acquisition.from_array(data, trajectory)

    assert np.array_equal(acquisition.data, data), \
        "Acquisition data does not match data used to initialize acquisition."

    assert np.array_equal(acquisition.traj, trajectory), \
        "Acquisition trajectory does not match trajectory used to initialize acquisition."
def test_initialization_with_illegal_header_value():
    ismrmrd.Acquisition.from_array(common.create_random_data(), version='Bad version')
def test_initialization_sets_nonzero_version():

    acquisition = ismrmrd.Acquisition.from_array(common.create_random_data())

    assert acquisition.version is not 0, \
        "Default acquisition version should not be zero."