# 数据

## 来源与构建方式

相互作用记录来自 [Human–Virus Interaction Database（HVIDB）](https://zzdlab.com/hvidb/)，蛋白序列来自 [Universal Protein Resource（UniProt）](https://www.uniprot.org/)。作者根据 HVIDB 中的蛋白标识符匹配 UniProt 条目，取得相应序列并组成人类—病毒蛋白配对。仓库中的向量表是经过匹配、整理和特征处理的派生文件。

HVIDB 引用：Yang X, Lian X, Fu C, Wuchty S, Yang S, Zhang Z. *HVIDB: a comprehensive database for human-virus protein-protein interactions*. Briefings in Bioinformatics, 2021, 22:832–844. [doi:10.1093/bib/bbaa425](https://doi.org/10.1093/bib/bbaa425)。UniProt 引用信息见[官方引用页面](https://www.uniprot.org/help/publications)。

UniProt 的数据库许可为 [CC BY 4.0](https://www.uniprot.org/help/license)。HVIDB 汇集多个公开数据来源；本项目保留其来源与论文引用，不为整个派生数据集另行指定代码的 MIT 许可；详见[许可证说明](licensing.md)。原始数据库下载日期、版本、完整 ID 映射表和未匹配记录清单尚未提供，因此目前只能通过随包 SHA-256 固定已发布数据快照，尚不能保证从当前在线数据库重新构建出逐行相同的数据。

原始数据：[百度网盘](https://pan.baidu.com/s/1Ygk06WfLfOzHvYW7N4y6qQ)，提取码 `g9cn`。

该链接是作者整理的数据副本，不是 HVIDB 或 UniProt 的官方数据库入口。

## 文件

| 路径 | 行数 | 用途 |
| --- | ---: | --- |
| data/training/SH_SV_feature_with_vectors.csv | 33,468 | 无标签预训练输入、ESM 缓存生成 |
| data/training/SH_SV_feature_with_vectors_0.5.csv | 36,465 | 分类训练，24,312 正样本、12,153 负样本 |
| data/auxiliary/SH_SV_feature_with_vectors_partial.csv | 26,990 | 部分序列特征表 |
| data/auxiliary/human_virus_test.csv | 7,623 | 带蛋白 ID 的有标签配对 |
| data/auxiliary/S.csv | 90,057 | 候选配对 |
| data/auxiliary/inference_processed.csv | 90,052 | 处理后的候选配对 |
| data/archives/data.7z | — | 原始下载归档 |

两个训练 CSV 分别包含 28,931 和 34,195 个唯一序列配对。详细统计及 SHA-256 见 `data/provenance/training_statistics.json`。论文总数据规模与实际可用训练记录采用不同统计口径。

## 输入格式

标准字段为 `pair_id,human_seq,viral_seq,label`。CLI 也识别 `S_H,S_V,label` 和 `seq_a,seq_b,label`。预测可以省略标签；分类训练使用 0/1 标签。可通过 `--human-col`、`--viral-col`、`--label-col` 指定字段。

AAindex 特征由每条序列前 100 个残基的 12 项性质组成，形成 1,200 维向量。编码时使用安装包内的表重新计算，短序列补零。

```bash
uv run deephvi inspect-data --input data/training/SH_SV_feature_with_vectors_0.5.csv --count
```

## 原始归档解压

```bash
uv run deephvi prepare-data --archive data/archives/data.7z --dest runs/extracted
```

归档包含顶层 `data/`。解压器会记录末尾不完整 CSV 记录的修复情况，随后可按文件用途放入 `data/training/` 和 `data/auxiliary/`。

## 特征与划分

`prepare-features` 为每个唯一序列生成 ESM、AAindex 特征，并保存配对索引、标签和 ID。`make-splits` 保存具体样本索引及数据指纹。资源包的 `data/splits/cpu_smoke/` 同时提供划分和对应的有序 `pairs.csv`。

- `paper`：外层 80/20，训练部分三折验证。
- `group`：按蛋白连接组或病毒物种划分。
- `server_historical`：服务器的随机十折划分及内部 90/10 划分。
- `legacy`：早期代码的十折约定，供历史对照。

每份划分记录蛋白在分区间的重叠统计。使用 `--strict-leakage` 可要求蛋白集合互斥。

现代 `paper`、`group` 流程在划分前按完整序列配对去重，保留首次出现的记录；标签冲突会报错。`prepare-features`、`make-splits` 和 `reproduce` 使用同一政策，处理数量记录在划分 manifest 的 `preprocessing` 中。分类文件去重后为 34,195 对。旧特征与旧划分应一起重建，不能混用。

`legacy`、`server_historical` 为历史对照保留原始行顺序和重复记录，不能将其指标当作去重后的独立测试结果。分阶段使用历史协议时，特征与划分命令必须使用同一份历史配置。预测命令保留输入重复行和样本 ID。
