chronaxis.core.calculation_output_reference
源码基线:8904c2f744951857659abd40aaa3535d57faf53c
1"""将一个已归约的数值换到目标单位,保留空值和数值质量。23输入为标量归约结果、原类型和编译期转换;输出数值及质量标志。4复用参考仿射核,在归约结束后只换算一次,不重算样本,不读写文件。5"""67from .affine import affine_reference8from .numeric import ScalarValue9from .types import SignalDType as D, QualityFlag as Q101112def convert_result_reference(value, input_dtype, conversion):13 """以参考数值核换算单个非空结果,合法温度抵消为零保持有效。1415 参数: value为int/float或None;input_dtype为原数值类型;conversion为单位描述符。16 返回: (数值或None, QualityFlag),失败不把结果当成正常零。17 异常: 非法模型或系数错误传播,数值范围错误由质量表示。18 """19 # 无样本的空值不能因为有温度偏移而产生数值。20 if value is None:21 return None, Q.NONE22 if conversion.factor == 1 and conversion.offset == 0:23 return value, Q.NONE24 dtype = D.FLOAT64 if type(value) is float else input_dtype25 converted = affine_reference(ScalarValue(value, dtype), conversion.factor,26 conversion.offset, conversion.dtype(dtype))27 return converted.value if converted.valid else None, converted.quality28