-
Notifications
You must be signed in to change notification settings - Fork 0
tutorials.3
Vincent Le Garrec edited this page Oct 10, 2025
·
4 revisions
This tutorial demonstrates how to extract RF data from an URX file.
Every times an ultrasound acquisition executes a group, the URX can associate a new group_data to record the RF data.
The field group_data.raw_data is a one-dimensional array. The addressing of the raw_data is explained in the group_data documentation.
import pathlib
import matplotlib.pyplot as plt
import ultrasound_rawdata_exchange as urx
def getRfFromGroupsData(groupData: urx.GroupData):
groupDataReader = urx.GroupDataReader(groupData)
Nsamples = groupDataReader.samplesCount(0)
Nchannels = groupDataReader.channelsCount(0)
Nevents = groupDataReader.eventsCount()
Nsequences = groupDataReader.sequencesCount()
return groupData.raw_data.reshape(Nsamples, Nchannels, Nevents, Nsequences)
# read the input file
dataset = urx.loadFromFile("single_int16_rf.urx")
# groups_data identifier, if there are multiples in the same URX.
gid = 0
# size(rf) = [Nsamples, Nchannels, Nevents, Nsequences]
rf = getRfFromGroupsData(dataset.acquisition.groups_data[gid])
fig = plt.figure()
plt.plot(rf[:, 0, 0, 0])dataset = urx.loadFromFile('single_int16_rf.urx');
% groups_data identifier, if there are multiples in the same URX.
gid = 1;
% size(rf) = [Nsamples, Nchannels, Nevents, Nsequences]
rf = getRfFromGroupsData(dataset.acquisition.groupsData(gid));
window = figure;
plot(rf(:,1,1,1))
function rf = getRfFromGroupsData(groupData)
groupDataReader = urx.GroupDataReader(groupData);
Nsamples = groupDataReader.samplesCount(1);
Nchannels = groupDataReader.channelsCount(1);
Nevents = groupDataReader.eventsCount();
Nsequences = groupDataReader.sequencesCount();
rf = reshape(groupData.rawData.data, Nsamples, Nchannels, Nevents, Nsequences);
end#include <cstddef>
#include <ios>
#include <iostream>
#include <memory>
#include <ostream>
#include <string>
#include <utility>
#include <vector>
#include <urx/acquisition.h>
#include <urx/dataset.h>
#include <urx/group_data.h>
#include <urx/utils/group_data_reader.h>
#include <urx/utils/io/reader.h>
int main(int argc, char** argv) {
// read the input file
const std::shared_ptr<urx::Dataset> dataset = urx::utils::io::reader::loadFromFile(
"single_int16_rf.urx");
const size_t gid = 0;
const auto group_data_reader = urx::utils::GroupDataReader{dataset->acquisition.groups_data[gid]};
std::cout << "Samples count: " << group_data_reader.samplesCount(0) << "\n";
std::cout << "Channels count: " << group_data_reader.channelsCount(0) << "\n";
std::cout << "Events count: " << group_data_reader.eventsCount() << "\n";
std::cout << "Sequences count: " << group_data_reader.sequencesCount() << "\n";
return 0;
}