"mineru.template.json" did not exist on "f407079bc3d24350825b2124440343b65a4a5ce0"
README.md 6.09 KB
Newer Older
zhuwenwen's avatar
zhuwenwen committed
1
2
3
4
<!--
 * @Author: zhuww
 * @email: zhuww@sugon.com
 * @Date: 2023-04-06 18:04:07
zhuwenwen's avatar
zhuwenwen committed
5
 * @LastEditTime: 2023-08-24 09:34:01
zhuwenwen's avatar
zhuwenwen committed
6
7
-->
# AlphaFold2
zhuwenwen's avatar
zhuwenwen committed
8
9
10
## 论文
- [https://www.nature.com/articles/s41586-021-03819-2](https://www.nature.com/articles/s41586-021-03819-2)

zhuwenwen's avatar
zhuwenwen committed
11
12
13
## 模型结构
模型核心是一个基于Transformer架构的神经网络,包括两个主要组件:Sequence to Sequence Model和Structure Model,这两个组件通过迭代训练进行优化,以提高其预测准确性。

zhuwenwen's avatar
zhuwenwen committed
14
15
![img](./docs/alphafold2.png)

zhuwenwen's avatar
zhuwenwen committed
16
17
## 算法原理
AlphaFold2通过从蛋白质序列和结构数据中提取信息,使用神经网络模型来预测蛋白质三维结构。
zhuwenwen's avatar
zhuwenwen committed
18

zhuwenwen's avatar
zhuwenwen committed
19
## 环境配置
zhuwenwen's avatar
zhuwenwen committed
20
提供[光源](https://www.sourcefind.cn/#/service-details)拉取推理的docker镜像:
zhuwenwen's avatar
zhuwenwen committed
21
22
23
24
```
docker pull image.sourcefind.cn:5000/dcu/admin/base/custom:alphafold2-2.2.1-centos7.6-dtk-22.04.2-py38
docker run -it --name alphafold --shm-size=32G  --device=/dev/kfd --device=/dev/dri/ --cap-add=SYS_PTRACE --security-opt seccomp=unconfined --ulimit memlock=-1:-1 --ipc=host --network host --group-add video image.sourcefind.cn:5000/dcu/admin/base/custom:alphafold2-2.2.1-centos7.6-dtk-22.04.2-py38 /bin/bash
```
zhuwenwen's avatar
zhuwenwen committed
25

zhuwenwen's avatar
zhuwenwen committed
26
27
28
镜像版本依赖:
* DTK驱动:dtk22.04.2
* Jax: 0.3.14
zhuwenwen's avatar
zhuwenwen committed
29
* TensorFlow2: 2.10.0
zhuwenwen's avatar
zhuwenwen committed
30
31
* python: python3.8

zhuwenwen's avatar
zhuwenwen committed
32
激活镜像环境:
dcuai's avatar
dcuai committed
33

zhuwenwen's avatar
zhuwenwen committed
34
`source /opt/dtk-22.04.2/env.sh`
dcuai's avatar
dcuai committed
35

zhuwenwen's avatar
zhuwenwen committed
36
37
`source /opt/openmm-hip/env.sh`

zhuwenwen's avatar
zhuwenwen committed
38
39
测试目录:

zhuwenwen's avatar
zhuwenwen committed
40
`/opt/docker/tests/alphafold`
zhuwenwen's avatar
zhuwenwen committed
41

zhuwenwen's avatar
zhuwenwen committed
42
## 数据集
zhuwenwen's avatar
zhuwenwen committed
43
推荐使用AlphaFold2中的开源数据集,包括BFD、MGnify、PDB70、Uniclust、Uniref90等,数据集大小约2.2TB。数据集格式如下:
zhuwenwen's avatar
zhuwenwen committed
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
```
$DOWNLOAD_DIR/                             # Total: ~ 2.2 TB (download: 438 GB)
    bfd/                                   # ~ 1.7 TB (download: 271.6 GB)
        # 6 files.
    mgnify/                                # ~ 64 GB (download: 32.9 GB)
        mgy_clusters_2018_12.fa
    params/                                # ~ 3.5 GB (download: 3.5 GB)
        # 5 CASP14 models,
        # 5 pTM models,
        # 5 AlphaFold-Multimer models,
        # LICENSE,
        # = 16 files.
    pdb70/                                 # ~ 56 GB (download: 19.5 GB)
        # 9 files.
    pdb_mmcif/                             # ~ 206 GB (download: 46 GB)
        mmcif_files/
            # About 180,000 .cif files.
        obsolete.dat
    pdb_seqres/                            # ~ 0.2 GB (download: 0.2 GB)
        pdb_seqres.txt
    small_bfd/                             # ~ 17 GB (download: 9.6 GB)
        bfd-first_non_consensus_sequences.fasta
    uniclust30/                            # ~ 86 GB (download: 24.9 GB)
        uniclust30_2018_08/
            # 13 files.
    uniprot/                               # ~ 98.3 GB (download: 49 GB)
        uniprot.fasta
    uniref90/                              # ~ 58 GB (download: 29.7 GB)
        uniref90.fasta
```
zhuwenwen's avatar
zhuwenwen committed
74
75

此处提供了一个脚本download_all_data.sh用于下载使用的数据集和模型文件:
zhuwenwen's avatar
zhuwenwen committed
76

zhuwenwen's avatar
zhuwenwen committed
77
78
79
80
    ./scripts/download_all_data.sh 数据集下载目录

## 推理
分别提供了基于Jax的单体和多体的推理脚本.
zhuwenwen's avatar
zhuwenwen committed
81
设置DOWNLOAD_DIR路径和output_dir路径。确保输出目录存在,并且您有足够的权限对其进行写入。
dcuai's avatar
dcuai committed
82

zhuwenwen's avatar
zhuwenwen committed
83
84
    # Set to target of download all databases
    DOWNLOAD_DIR = '/path/to/database'
zhuwenwen's avatar
zhuwenwen committed
85
    
zhuwenwen's avatar
zhuwenwen committed
86
87
88
    # Path to a directory that will store the results.
    output_dir = '/path/to/output_dir'

zhuwenwen's avatar
zhuwenwen committed
89
### 单体
zhuwenwen's avatar
zhuwenwen committed
90
91
92
93
94
95
96
97
98
99
100

    python3 run_alphafold.py \
    --fasta_paths=monomer.fasta \
    --output_dir=./ \
    --max_template_date=2020-05-14 \
    --model_preset=monomer \
    --run_relax=true \
    --use_gpu_relax=true

或者使用`./run_monomer.sh`

zhuwenwen's avatar
zhuwenwen committed
101
#### 单体推理参数说明
zhuwenwen's avatar
zhuwenwen committed
102
monomer.fasta为推理的单体序列;`--output_dir`为输出目录;`--model_preset`选择模型配置;`--run_relax=true`为进行relax操作;`--use_gpu_relax=true`为使用gpu进行relax操作(速度更快,但可能不太稳定),`--use_gpu_relax=false`为使用CPU进行relax操作(速度慢,但稳定);若添加--use_precomputed_msas=true则可以加载已经搜索对齐的序列,否则默认进行搜索对齐;
zhuwenwen's avatar
zhuwenwen committed
103

zhuwenwen's avatar
zhuwenwen committed
104
### 多体
zhuwenwen's avatar
zhuwenwen committed
105
106
107
108
109
110
111
112
113
114
115
116
117
118

    python3 run_alphafold.py \
    --fasta_paths=multimer.fasta \
    --output_dir=./ \
    --uniprot_database_path=/data/uniprot/uniprot_trembl.fasta \
    --pdb_seqres_database_path=/data/pdb_seqres/pdb_seqres.txt \
    --pdb70_database_path= \
    --max_template_date=2020-05-14 \
    --model_preset=multimer \
    --run_relax=true \
    --use_gpu_relax=true

或者使用`./run_multimer.sh`

zhuwenwen's avatar
zhuwenwen committed
119
#### 多体推理参数说明
zhuwenwen's avatar
zhuwenwen committed
120
121
multimer.fasta为推理的多体序列,data为数据集下载路径,其他参数同单体推理参数说明一致。

zhuwenwen's avatar
zhuwenwen committed
122
## result
zhuwenwen's avatar
zhuwenwen committed
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
`--output_dir`目录结构如下:
```
<target_name>/
    features.pkl
    ranked_{0,1,2,3,4}.pdb
    ranking_debug.json
    relaxed_model_{1,2,3,4,5}.pdb
    result_model_{1,2,3,4,5}.pkl
    timings.json
    unrelaxed_model_{1,2,3,4,5}.pdb
    msas/
        bfd_uniclust_hits.a3m
        mgnify_hits.sto
        uniref90_hits.sto
        ...
```

zhuwenwen's avatar
zhuwenwen committed
140
141
![img](./docs/result_pdb.png)

zhuwenwen's avatar
zhuwenwen committed
142
## 精度
zhuwenwen's avatar
zhuwenwen committed
143
144
145
测试数据:[casp14](https://www.predictioncenter.org/casp14/targetlist.cgi)[uniprot](https://www.uniprot.org/)
使用的加速卡:1张 DCU 1代-16G

zhuwenwen's avatar
zhuwenwen committed
146
147
1、计算lddt的值

zhuwenwen's avatar
zhuwenwen committed
148
    python3 pkl2plddt.py
zhuwenwen's avatar
zhuwenwen committed
149
150
151
152
153
    其中,data_path为推理生成的pkl文件路径。


2、其它精度值计算:[https://zhanggroup.org/TM-score/](https://zhanggroup.org/TM-score/)

zhuwenwen's avatar
zhuwenwen committed
154
155
156
157
158
159
160
准确性数据:
| 数据类型 | 序列类型 | 序列标签 | 序列长度 | GDT-TS | GDT-HA | LDDT | TM score | MaxSub | RMSD |
| :------: | :------: | :------: | :------: |:------: |:------: | :------: | :------: | :------: |:------: |
| fp32 | 单体 | T1026 | 172 | 0.849 | 0.658 | 75.050 | 0.901 | 0.851 | 1.6 |
| fp32 | 单体 | T1053 | 580 | 0.941 | 0.789 | 92.316 | 0.985 | 0.935 | 1.1 |
| fp32 | 单体 | T1091 | 863 | 0.492 | 0.332 | 85.083 | 0.740 | 0.388 | 6.7 |

zhuwenwen's avatar
zhuwenwen committed
161
162
163
164
165
## 应用场景

### 算法类别
NLP

zhuwenwen's avatar
zhuwenwen committed
166
167
168
### 热点应用行业
医疗,科研,教育

zhuwenwen's avatar
zhuwenwen committed
169
## 源码仓库及问题反馈
zhuwenwen's avatar
zhuwenwen committed
170
171
* [https://developer.hpccube.com/codes/modelzoo/AlphaFold2](https://developer.hpccube.com/codes/modelzoo/AlphaFold2)

zhuwenwen's avatar
zhuwenwen committed
172
173
174
## 参考
* [https://github.com/deepmind/alphafold](https://github.com/deepmind/alphafold)