class.acquisition - moduleus/urx GitHub Wiki
Describes an ultrasound acquisition.
| UAC | URX | Parameter | Datatype | Description | 
|---|---|---|---|---|
| ✓ | ✓ | authors | string | Authors of the data, semicolon-separated. Example: "Alice Foo;Bob Bar". | 
| ✓ | ✓ | country_code | string | Country following ISO 3166-1 alpha-2. Example: "FR" for France. | 
| ✓ | ✓ | description | string | User description. | 
| ✓ | ✓ | excitations | Array of excitation | Array of unique excitations. Stored as a vector of shared pointers. | 
| ✓ | initial_group | igroup | First group executed when the acquisition starts. Stored as a weak pointer from field groups or super_groups. | |
| ✓ | ✓ | groups | Array of group | Array of unique groups. Stored as a vector of shared pointers. | 
| ✓ | groups_data | Array of group_data | Recording of executed group. The order in the array does not have to follow the physical order of the execution. Field group_data.group_timestampwill be used.Stored as a vector of raw objets. | |
| ✓ | hw_config | hw_config | Hardware configuration of the acquisition. Stored as a raw objet. | |
| ✓ | ✓ | local_time | string | Time, in ISO 8601, at which the dataset was acquired. Example "2023-10-24T13:40:06.254Z". | 
| ✓ | ✓ | probes | Array of probe | Array of probes used to transmit and receive. Each physical probe is represented by a different entry in this array. Stored as a vector of shared pointers. | 
| ✓ | super_groups | Array of super_group | Array of super_group. Stored as a vector of shared pointers. | |
| ✓ | ✓ | system | string | Name of the system used to acquire the dataset. | 
| ✓ | timestamp | double | Start time of the acquisition, in [s]. Default NaN. The value is hardware dependent and should only be used as a reference value for other timestamps. | |
| ✓ | time_offset | double | Delay between the start of the acquisition and the execution of the initial_group, in [s]. | |
| ✓ | trigger_in | trigger_in | Optional acquisition trigger input. Stored as an optional objet. | |
| ✓ | trigger_out | trigger_out | Optional acquisition trigger output. Stored as an optional objet. | 
The SuperGroup class allows a serie a group to be repeated to create complex acquisitions. The IGroup class purpose is only to abstract the group and super_group under the same mother class.
The following diagram shows an example of acquisition with multiples groups:
The same group can be executed multiples times during an acquisition. Each time a group executes, it produces an entry in acquisition.group_data. In this example, 4 group_data are created as shown bellow. The field group_data.group reference one of the unique group in  acquisition.groups. The field group_data.group_timestamp gives the time at which the group_data started.
acquisition.group_data = [
    {
         group : "acquisition.groups[1]",
         group_timestamp : 10
    },
    {
         group : "acquisition.groups[2]",
         group_timestamp : 20
    },
    {
         group : "acquisition.groups[1]",
         group_timestamp : 40
    },
    {
         group : "acquisition.groups[3]",
         group_timestamp : 50
    }
]
The URX keep record of which group where executed and when.
dataset | excitation | group | group_data | hw_config | igroup | probe | trigger_in | trigger_out