Chronaxis用户手册English
本页目录

chronaxis.execution.transform_partial

源码基线:8904c2f744951857659abd40aaa3535d57faf53c

1"""区分滚动输入窗口的部分性和下游查询轴的覆盖率,只标记确实参与的原值。"""23from dataclasses import replace4from ..core.types import QualityFlag as Q567def partial_in_block(rows, window, *, samples):8    """核实当前有限块是否实际使用部分值或部分选择条件。910    参数: rows 为点/值/有效截止/条件/条件截止及可选真实更新,window 为实际计算请求。11    返回: 有属于半开窗口的真实选中样本,或有选中且有效的正长度保持区间时返回 True。12    异常: 内部行损坏时传播结构错误;不把末端共享点计入两块。13    """14    for index in range(len(rows)-1):15        time,value,deadline,condition,condition_deadline=rows[index][:5]16        if not (value.partial or condition is not None and condition.partial):17            continue18        if not value.valid or condition is not None and (not condition.valid or not condition.value):19            continue20        if samples:21            if (len(rows[index])>5 and rows[index][5] and window.start_ns<=time<window.end_ns22                    and (deadline is None or time<deadline) and (condition_deadline is None or time<condition_deadline)):23                return True24        else:25            left=max(time,window.start_ns)26            right=min(rows[index+1][0],window.end_ns)27            if deadline is not None:28                right=min(right,deadline)29            if condition_deadline is not None:30                right=min(right,condition_deadline)31            if left<right:32                return True33    return False343536def partial_result(result, policy):37    """保留原失败,或将有限估算按当前指标政策输出。参数: 冻结归约结果和report/strict。返回: 新结果。异常: 非结果对象。"""38    quality=result.quality|Q.ESTIMATED39    if result.value is None:40        return replace(result,quality=quality)41    strict=policy=='strict'42    return replace(result,value=None if strict else result.value,status='indeterminate' if strict else 'partial',43                   reason='partial_input',quality=quality)44
Chronaxis 用户手册 · 离线阅读