class_diagram.puml - moduleus/urx GitHub Wiki

@startuml

/' Objects '/

namespace urx { enum DataType { DOUBLE FLOAT INT16 INT32 UNDEFINED }

enum ProbeType {
	CURVILINEAR
	LINEAR
	MATRIX
	RCA
	SPARSE
	UNDEFINED
}

enum SamplingType {
	IQ
	RF
	UNDEFINED
}

enum WaveType {
	CONVERGING_WAVE
	CYLINDRICAL_WAVE
	DIVERGING_WAVE
	PLANE_WAVE
	UNDEFINED
}

class Element {
	+transform : Transform
	+element_geometry : ElementGeometry
	+impulse_response : ImpulseResponse
}

class ElementGeometry {
	+perimeter : Vector3D[]
}

class Excitation {
	+sampling_frequency : DoubleNan
	+transmit_frequency : DoubleNan
	+pulse_shape : string
	+waveform : double[]
}

class GroupData {
	+group_timestamp : DoubleNan
	+raw_data : RawData
	+sequence_timestamps : double[]
	+event_timestamps : double[][]
	+group : Group
}

class ImpulseResponse {
	+sampling_frequency : DoubleNan
	+time_offset : DoubleNan
	+units : string
	+data : double[]
}

class Probe {
	+type : ProbeType
	+transform : Transform
	+description : string
	+elements : Element[]
	+element_geometries : ElementGeometry[]
	+impulse_responses : ImpulseResponse[]
}

class ReceiveSetup {
	+modulation_frequency : DoubleNan
	+sampling_frequency : DoubleNan
	+tgc_sampling_frequency : DoubleNan
	+time_offset : DoubleNan
	+probe_transform : Transform
	+tgc_profile : double[]
	+active_elements : uint32[][]
	+probe : Probe
	+number_samples : uint32
}

class Transform {
	+rotation : Vector3D
	+translation : Vector3D
}

class Vector2D  {
	+x : double
	+y : double
}

class Vector3D  {
	+x : double
	+y : double
	+z : double
}

class Version {
	+major : uint16
	+minor : uint16
	+patch : uint16
}

class Wave {
	+time_zero : DoubleNan
	+time_zero_reference_point : Vector3D
	+type : WaveType
	+parameters : double[]
}

class Acquisition{ +timestamp : DoubleNan +authors : string +country_code : string +description : string +local_time : string +system : string +excitations : Excitation[] +groups : Group[] +probes : Probe[] +groups_data : GroupData[] }

	class Dataset  {
		+acquisition : Acquisition
		+version : Version
	}

	class Event  {
		+receive_setup : ReceiveSetup
		+transmit_setup : TransmitSetup
	}

	class Group  {
		+data_type : DataType
		+sound_speed : DoubleNan
		+sampling_type : SamplingType
		+description : string
		+sequence : Event[]
	}

	class TransmitSetup  {
		+time_offset : DoubleNan
		+probe_transform : Transform
		+wave : Wave
		+delays : double[]
		+active_elements : uint32[][]
		+excitations : Excitation[]
		+probe : Probe
}

}

/' Inheritance relationships '/

/' Aggregation relationships '/

urx.Acquisition *-- urx.GroupData

urx.Acquisition *-- urx.Excitation

urx.Acquisition *-- urx.Group

urx.Acquisition *-- urx.Probe

urx.Dataset *-- urx.Acquisition

urx.Dataset *-- urx.Version

urx.Event *-- urx.ReceiveSetup

urx.Event *-- urx.TransmitSetup

urx.Group *-- urx.DataType

urx.Group *-- urx.Event

urx.Group *-- urx.SamplingType

urx.Probe *-- urx.Element

urx.Probe *-- urx.ElementGeometry

urx.Probe *-- urx.ImpulseResponse

urx.Probe *-- urx.ProbeType

urx.TransmitSetup *-- urx.Wave

urx.Wave *-- urx.WaveType

/' Nested objects '/

@enduml