# 合成教学配置；请与同目录的ASC和DBC配套使用。
config_version: 4                   # 声明分析配置结构版本；当前必须填写整数4
dataset:                            # 设置本次分析名称及可选的对象、会话和时间范围
  name: current_example             # 命名本次分析数据集；名称写入结果身份字段
  domain:                           # 限定本次分析请求的起止时间；应与来源采用相同时间基准
    start: 0s                       # 设置分析起点，包含该时刻；按希望分析的范围填写
    end: 0.6s                       # 设置分析终点；连续时长不包含该端点，按希望分析的范围填写
sources:                            # 列出输入来源；每项规定数据位置、格式和时间解释方式
  - paths: meter.asc                # 选择输入文件、连续分卷列表或目录；相对路径基于本配置，目录按自然序读取
    dbc_by_channel:                 # 为每个CAN通道指定解码用DBC文件；键是通道编号的字符串
      '1': meter.dbc                # 为这个通道指定DBC文件；路径相对当前配置文件，通道键须为字符串
signals:                            # 把输入字段定义为有名称、类型、单位和有效期的分析信号
  - name: current                   # 给分析信号取名称；后续表达式和计算通过此名称引用它
    field:                          # 指定来源中的原始字段；CSV填表头，CAN填写通道/报文ID/DBC信号名
      frame_id: 256                 # 选择包含信号的报文ID；从对应DBC取得，可写整数或支持的进制文本
      signal: Current               # 填写DBC中的信号名称，大小写须一致
    dtype: float64                  # 选择分析值类型；float64小数、int64有符号整数、uint64非负整数、bool真假、enum状态名称
    valid_for: 0.4s                 # 设置一次有效更新最多沿用多久；依据采样周期和允许数据陈旧程度填写
transforms:                         # 声明有时刻、单位和有效性的网格输出或相邻变化率
  - name: average                   # 命名这一条时序结果，后续表达式按此名称引用
    operation: rolling_time_mean    # 指定内置或宿主已注册的时序操作
    expr: current                   # 指定数值输入表达式
    window: 0.1s                    # 设置按所选口径回看的窗口宽度
    step: 0.1s                      # 设置实际时间轴上的输出网格间隔
  - name: low                       # 命名这一条时序结果，后续表达式按此名称引用
    operation: rolling_minimum      # 指定内置或宿主已注册的时序操作
    expr: current                   # 指定数值输入表达式
    window: 0.1s                    # 设置按所选口径回看的窗口宽度
    step: 0.1s                      # 设置实际时间轴上的输出网格间隔
  - name: high                      # 命名这一条时序结果，后续表达式按此名称引用
    operation: rolling_maximum      # 指定内置或宿主已注册的时序操作
    expr: current                   # 指定数值输入表达式
    window: 0.1s                    # 设置按所选口径回看的窗口宽度
    step: 0.1s                      # 设置实际时间轴上的输出网格间隔
  - name: charge                    # 命名这一条时序结果，后续表达式按此名称引用
    operation: rolling_integral     # 指定内置或宿主已注册的时序操作
    expr: current                   # 指定数值输入表达式
    window: 0.1s                    # 设置按所选口径回看的窗口宽度
    step: 0.1s                      # 设置实际时间轴上的输出网格间隔
  - name: adjacent                  # 命名这一条时序结果，后续表达式按此名称引用
    operation: adjacent_rate        # 指定内置或宿主已注册的时序操作
    expr: current                   # 指定数值输入表达式
    max_gap: 0.3s                   # 限定相邻真实样本允许的最大实际时间距离
  - name: endpoints                 # 命名这一条时序结果，后续表达式按此名称引用
    operation: window_rate          # 指定内置或宿主已注册的时序操作
    expr: current                   # 指定数值输入表达式
    window: 0.2s                    # 设置按所选口径回看的窗口宽度
    step: 0.1s                      # 设置实际时间轴上的输出网格间隔
  - name: fit                       # 命名这一条时序结果，后续表达式按此名称引用
    operation: sample_fit_slope     # 指定内置或宿主已注册的时序操作
    expr: current                   # 指定数值输入表达式
    window: 0.2s                    # 设置按所选口径回看的窗口宽度
    step: 0.1s                      # 设置实际时间轴上的输出网格间隔
calculations:                       # 列出希望获得的统计或积分结果，每项独立选择范围和算法
  - name: average_rows              # 为这项计算结果取唯一名称；结果表用它区分计算项
    operation: select               # 选择计算方法；本例逐行保留范围内被选择的样本，不生成汇总数值
    expr: average                   # 指定参与计算的数值或信号表达式；引用前面已定义的信号
  - name: low_rows                  # 为这项计算结果取唯一名称；结果表用它区分计算项
    operation: select               # 选择计算方法；本例逐行保留范围内被选择的样本，不生成汇总数值
    expr: low                       # 指定参与计算的数值或信号表达式；引用前面已定义的信号
  - name: high_rows                 # 为这项计算结果取唯一名称；结果表用它区分计算项
    operation: select               # 选择计算方法；本例逐行保留范围内被选择的样本，不生成汇总数值
    expr: high                      # 指定参与计算的数值或信号表达式；引用前面已定义的信号
  - name: charge_rows               # 为这项计算结果取唯一名称；结果表用它区分计算项
    operation: select               # 选择计算方法；本例逐行保留范围内被选择的样本，不生成汇总数值
    expr: charge                    # 指定参与计算的数值或信号表达式；引用前面已定义的信号
  - name: adjacent_rows             # 为这项计算结果取唯一名称；结果表用它区分计算项
    operation: select               # 选择计算方法；本例逐行保留范围内被选择的样本，不生成汇总数值
    expr: adjacent                  # 指定参与计算的数值或信号表达式；引用前面已定义的信号
  - name: endpoint_rows             # 为这项计算结果取唯一名称；结果表用它区分计算项
    operation: select               # 选择计算方法；本例逐行保留范围内被选择的样本，不生成汇总数值
    expr: endpoints                 # 指定参与计算的数值或信号表达式；引用前面已定义的信号
  - name: fit_rows                  # 为这项计算结果取唯一名称；结果表用它区分计算项
    operation: select               # 选择计算方法；本例逐行保留范围内被选择的样本，不生成汇总数值
    expr: fit                       # 指定参与计算的数值或信号表达式；引用前面已定义的信号
intervals:                          # 选择时间计算使用实际间隔还是指定周期；不修改原记录时间
  default:                          # 设置未单独覆盖的计算节点采用的时间间隔依据
    mode: dbc                       # 选择actual实际时间差、fixed固定周期或dbc报文周期
    driver: current                 # 选择提供周期和更新计数的信号；填写已有signals名称
execution:                          # 设置计算实现、资源上限和数据不全时的处理方式
  process_count: 4                  # 最多4个文件工作进程；实际并行数不超过输入文件数
  batch_rows: 16                    # 限制一次交给分析层的记录数；按内存和处理开销选择，不是采样周期
