///|
/// Paired comparison between two HRV recordings.
pub(all) struct RecordingComparison {
left_mean : Double
right_mean : Double
mean_delta : Double
left_rmssd : Double
right_rmssd : Double
rmssd_delta : Double
standardized_delta : Double
agreement_bias : Double
agreement_limits_lower : Double
agreement_limits_upper : Double
distance : Double
} derive(FromJson, ToJson, Debug, Eq)
///|
/// Calculate a paired comparison and Bland-Altman-style agreement limits.
pub fn compare_recordings(
left : Array[Double],
right : Array[Double],
) -> RecordingComparison {
let n = if left.length() < right.length() {
left.length()
} else {
right.length()
}
let left_prefix = []
let right_prefix = []
let differences = []
for i in 0.. Double {
let n = if left.length() < right.length() {
left.length()
} else {
right.length()
}
if n == 0 {
0.0
} else {
let differences = []
for i in 0.. Double {
let n = if left.length() < right.length() {
left.length()
} else {
right.length()
}
if n == 0 {
0.0
} else {
let limit = if tolerance < 0.0 { 0.0 } else { tolerance }
let mut agreed = 0
for i in 0.. Array[Double] {
[
comparison.left_mean,
comparison.right_mean,
comparison.mean_delta,
comparison.left_rmssd,
comparison.right_rmssd,
comparison.rmssd_delta,
comparison.standardized_delta,
comparison.agreement_bias,
comparison.agreement_limits_lower,
comparison.agreement_limits_upper,
comparison.distance,
]
}