统计分析 API¶
命名空间:fq::statistic
StatisticCalculatorInterface¶
统计计算任务的抽象接口,通过工厂函数创建实例。
工厂创建¶
fq::statistic::StatisticOptions options;
options.inputFastqPath = "input.fastq.gz";
options.outputStatPath = "output.stat.txt";
options.threadCount = 4;
auto calculator = fq::statistic::createStatisticCalculator(options);
calculator->run();
接口定义¶
class StatisticCalculatorInterface {
public:
virtual ~StatisticCalculatorInterface() = default;
virtual void run() = 0;
};
StatisticOptions¶
统计任务配置。
| 字段 | 类型 | 说明 |
|---|---|---|
inputFastqPath | std::string | 输入 FASTQ 文件路径 |
outputStatPath | std::string | 输出统计文件路径 |
threadCount | size_t | 线程数 |
batchSize | size_t | 批处理大小 |
StatisticInterface¶
统计计算的底层抽象接口,支持自定义统计逻辑扩展。
class StatisticInterface {
public:
using Batch = fq::io::FastqBatch;
using Result = FqStatisticResult;
virtual ~StatisticInterface() = default;
virtual auto calculateStats(const Batch& batch) -> Result = 0;
};
FqStatisticResult¶
统计结果数据结构。
| 字段 | 类型 | 说明 |
|---|---|---|
readCount | uint64_t | 读段总数 |
totalBases | uint64_t | 碱基总数 |
maxReadLength | uint32_t | 最大读长 |
posQualityDist | vector<vector<uint64_t>> | 位置质量分布 |
posBaseDist | vector<vector<uint64_t>> | 位置碱基分布 |
支持 operator+= 合并多个批次的统计结果。
并行处理架构¶
统计分析使用 TBB 并行管道:
- Source(serial_in_order):串行读取 FastqBatch
- Processing(parallel):并行计算每个 batch 的统计信息
- Aggregation(serial_in_order):合并所有统计结果
输出格式¶
统计结果支持 JSON 和文本格式输出,包含:
- 读段总数、有效读段数
- 序列长度分布(最小/最大/平均)
- 碱基组成(A/T/C/G/N 比例)
- GC 含量
- 位置质量分布(Q20/Q30 百分比)