# DNASequence 项目简介
DNASequence 是一个专注于 DNA 序列处理的开源项目,核心功能为计算 DNA 片段的互补链并与原序列整合,解决测序中双链方向不确定的问题。以下从核心功能、构建指南、技术细节、性能表现及版权说明等方面展开介绍。
## 核心功能与逻辑
DNA 为双链结构且互为互补链,测序时无法确定片段所属链方向。项目通过计算所有 DNA 片段的互补链,并将其与原序列共同处理组装,实现高效序列整合。
- **输入格式**:默认从项目根目录读取 `filteredReads.txt`,支持类似 FastQ 格式的序列(示例如下),默认最大单条序列长度支持 5×10⁴,可通过代码修改扩容:
```
@SRR13280199.1 1 length=32
ACGTACACATTGCTGTCTGCTGAACCACCTAG
```
## 构建与使用指南
### 环境准备
需安装构建工具及对应依赖:
- 推荐使用 C++ 构建工具(如 Visual Studio、Clang、GCC),并确保路径添加至系统 `PATH`;
- 若在未安装 Visual Studio 的环境中使用编译后代码,需安装 [VCRuntime](https://learn.microsoft.com/zh-cn/cpp/windows/latest-supported-vc-redist?view=msvc-170#visual-studio-2015-2017-2019-and-2022),项目 `dll` 文件夹提供相关依赖。
### 项目克隆与构建
1. **克隆项目**(含子模块):
```bash
git clone --recurse-submodules https://git.zziyu.cn/Zengtudor/DNASequence.git
```
2. **构建方式**(推荐 CMake,xmake 不再维护):
- **CMake 构建**:
```bash
cmake -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build --config Release
```
- **xmake 构建(仅历史支持)**:
```bash
xmake b -v # 编译(-v 输出详细信息)
xmake r # 运行
xmake project -k vsxmake # 生成 Visual Studio 工程文件
```
## 技术细节与扩展支持
### Python 接口(pybind 支持)
编译后生成 `dna.pyd`(动态库)和 `dna.pyi`(类型提示文件),可通过 Python 便捷调用:
```python
import dna
# 查看帮助
help(dna)
# 计算互补链并输出到文件
dna.dna_reverse("filteredReads.txt", "reversedSequence.txt")
```
核心函数 `dna_reverse` 接收输入/输出文件路径,实现互补链计算与写入。
### 关键技术配置
- **并行加速**:基于 OpenMP 实现并行化处理,主流 C++ 编译器(VS、Clang、GCC)默认支持,Windows 平台推荐使用 Visual Studio(MSVC)或 Clang,Linux 推荐 GCC,**不建议使用 MinGW**(IO 优化较差)。
- **内存配置**:默认按 4GB 块内存分块处理文件,可通过修改核心函数参数调整:
```cpp
// 格式:("输入文件", "输出文件", 处理函数)
dna::open_file_and_calculate("input.txt", "output.txt", reverseComplement);
```
## 性能表现
- **最优环境**:经测试,Windows 平台下使用 Visual Studio 编译时性能最佳。
- **实测数据**:处理 800MB 规模的 `filteredReads.txt` 时:
- 分块读取耗时 1031ms,计算互补链耗时 277ms(启用 12 线程并行),写入输出耗时 1169ms,总耗时仅 2479ms。
- 性能分析显示,核心函数 `reverseComplement` 占总计算开销的 73.72%,为优化重点。
## 前置依赖与注意事项
- 需安装对应 Visual C++ 运行时(VCRuntime),详情见 [微软官方指南](https://learn.microsoft.com/zh-cn/cpp/windows/latest-supported-vc-redist?view=msvc-170)。
- 项目配置细节(含性能优化、计算精度相关)需参考 `xmake.lua` 文件。
## 版权说明
- 项目算法版权归原作者所有,不强制遵循开源协议;其他部分使用需遵循开源协议,如需特殊使用可联系咨询。
项目地址:[https://gitcode.com/Zengtudor/DNASequence](https://gitcode.com/Zengtudor/DNASequence)