def sum_scales(data: list[list[tuple[int, int, int, int, int]]]): """Calculate the sum of scales for each axis across multiple datasets.""" if not data or not data[0]: raise ValueError("Input data must be a non-empty list of non-empty lists.") result = [] for i, base_item in enumerate(data[0]): val1, val2, val3, base_scale1, base_scale2 = base_item summed_scale1 = base_scale1 summed_scale2 = base_scale2 # Sum corresponding scales from all other datasets for dataset_idx in range(1, len(data)): if i < len(data[dataset_idx]): # Check if index exists in this dataset _, _, _, scale1, scale2 = data[dataset_idx][i] summed_scale1 += scale1 summed_scale2 += scale2 # Create new tuple with summed scales result.append((val1, val2, val3, summed_scale1, summed_scale2)) return result def difference_scales(data1: list[tuple[int, int, int, int, int]], data2: list[tuple[int, int, int, int, int]]) -> list[tuple[int, int, int, int, int]]: """ Calculate the difference between scales of two datasets. For each pair of tuples, calculates the square root of the squared difference between corresponding scales, divided by 2. Args: data1: First dataset with 5-tuple elements data2: Second dataset with 5-tuple elements Returns: List of tuples with differences between scales """ import math result = [] # Use the shorter dataset length to avoid index errors min_length = min(len(data1), len(data2)) for i in range(min_length): val1_1, val1_2, val1_3, scale1_1, scale1_2 = data1[i] val2_1, val2_2, val2_3, scale2_1, scale2_2 = data2[i] # Calculate scale differences using the formula diff_scale1 = math.sqrt((scale1_1 - scale2_1) ** 2) / 2 diff_scale2 = math.sqrt((scale1_2 - scale2_2) ** 2) / 2 # Create new tuple: keeping val2_1, val2_2, val2_3 from second dataset # and including the calculated scale differences result.append((val2_1, val2_2, val2_3, diff_scale1, diff_scale2)) return result def difference_values(data1: list[tuple[int, int, int, int, int]], data2: list[tuple[int, int, int, int, int]]) -> list[tuple[int, int, int, int, int]]: """ Calculate the difference between values of two datasets. (as scales) For each pair of tuples, calculates the square root of the squared difference between corresponding values. Args: data1: First dataset with 5-tuple elements data2: Second dataset with 5-tuple elements Returns: List of tuples with differences between values """ import math result = [] # Use the shorter dataset length to avoid index errors min_length = min(len(data1), len(data2)) for i in range(min_length): val1_1, val1_2, val1_3, scale1_1, scale1_2 = data1[i] val2_1, val2_2, val2_3, scale2_1, scale2_2 = data2[i] # Calculate scale differences using the formula diff_scale_tmp = val1_3 - val2_3 diff_scale1 = diff_scale_tmp if diff_scale_tmp > 0 else 0 diff_scale2 = diff_scale_tmp if diff_scale_tmp < 0 else 0 # Create new tuple: keeping val2_1, val2_2, val2_3 from second dataset # and including the calculated scale differences result.append((val2_1, val2_2, val2_3, diff_scale1, diff_scale2)) return result def sum_quad_scales(data: list[list[tuple[int, int, int, int, int]]]): """Calculate the sum of scales for each axis across multiple datasets.""" from math import sqrt if not data or not data[0]: raise ValueError("Input data must be a non-empty list of non-empty lists.") result = [] for i, base_item in enumerate(data[0]): val1, val2, val3, base_scale1, base_scale2 = base_item summed_scale1 = base_scale1**2 summed_scale2 = base_scale2**2 # Sum corresponding scales from all other datasets for dataset_idx in range(1, len(data)): if i < len(data[dataset_idx]): # Check if index exists in this dataset _, _, _, scale1, scale2 = data[dataset_idx][i] summed_scale1 += scale1**2 summed_scale2 += scale2**2 # Create new tuple with summed scales result.append((val1, val2, val3, sqrt(summed_scale1), sqrt(summed_scale2))) return result def two_scales_envelope(data1: list[tuple[int, int, int, int, int]], data2: list[tuple[int, int, int, int, int]]) -> list[tuple[int, int, int, int, int]]: """ Calculate the envelope between two datasets. (as scales) For each pair of tuples, calculates max of each scale. Args: data1: First dataset with 5-tuple elements data2: Second dataset with 5-tuple elements Returns: List of tuples with envelope between values """ import math result = [] # Use the shorter dataset length to avoid index errors min_length = min(len(data1), len(data2)) for i in range(min_length): val1_1, val1_2, val1_3, scale1_1, scale1_2 = data1[i] val2_1, val2_2, val2_3, scale2_1, scale2_2 = data2[i] assert val1_3 == val2_3, "Values must be equal for envelope calculation" diff_scale1 = max(scale1_1, scale2_1) diff_scale2 = max(scale1_2, scale2_2) # Create new tuple: keeping val2_1, val2_2, val2_3 from second dataset # and including the calculated scale differences result.append((val2_1, val2_2, val2_3, diff_scale1, diff_scale2)) return result