复现phbradley/alphafold_finetune历程

Philip Bradly等2022年7月在bioRxiv上发表《Peptide binding specificity prediction using fine-tuned protein structure prediction networks》。文章指出,深度神经网络已经实现了很高结构的预测精度,最成功的案例是AlphaFold2。但是,实际使用中会发现AF2预测MHC~抗原肽之间结合的特异性和准确度不高,极有可能是因为AF2的训练集的建立并未考虑阴性样本。由此,作者介绍了一种扩展这种网络以联合预测蛋白质结构和结合特异性的方法。一方面修改成熟的AF原生代码,另一方面根据MHC I类和II类结构和多肽结合数据微调其参数。微调(fine-tuning)模型在多肽-MHC结合特异性预测方面较为优秀,并可以推广到其他肽结合系统,如PDZ和SH3结构域。

Fig1 from doi: https://doi.org/10.1101/2022.07.12.499365

目前,尽管文章尚未正式发表,但是项目代码已在GitHub释出。值得注意的是:“This repository is still under development. We plan to have everything squared away prior to publication. In the meantime, feel free to reach out with questions, comments, or other feedback. You can open a github issue or email pbradley@fredhutch.org.”本文旨在记录复现相关数据的历程。

为了解决「模型能否确定其预测中可能可靠的部分」的问题,研究人员在 AlphaFold 网络的基础上引入了两个信任度量:

第一个度量是 pLDDT(预测的 lDDT-Cα),它是在 0 -100范围内对局部置信度的每个残基的度量。pLDDT可以沿着一条链显著变化,使得模型能够表达结构域的高置信度,但在结构域之间的连接子(linker)上置信度低。研究人员提出了一些证据,证明低 pLDDT 的区域可能是孤立的非结构。pLDDT<50 的区域不应被解释,或者被解释为「可能的无序预测」

第二个度量是 PAE(预测对齐误差),当预测和真实结构在残基y上对齐时,它报告AlphaFold在残基x处的预期位置误差。这对于评估对全局特征(尤其是域包装)的信心很有用。对于来自两个不同结构域的残基x和y,在(x,y)处始终较低的PAE表明α折叠对相对结构域位置更可信;在(x,y)处始终较高的PAE表明不应解释域的相对位置。用于生成PAE的一般方法,同样适用于预测各种基于叠加的度量,包括 TM-score 和 GDT。

1.准备工作

1.1.Linux服务器:由于项目关键包optax及其依赖包只支持Linux系统,所以我选择借助Linux服务器完成后面的运行工作。(配置待公布)

1.2.代码及文件资源下载:

除了Github代码文件外,还需移步下载训练集和测试集https://www.dropbox.com/s/k4gay3hwyq3k0rb/datasets_alphafold_finetune_v1_2022-08-02.tgz?dl=0;或http://123.121.7.172:10003/d/datasets_alphafold_finetune_v1_2022-08-02.tgz),并且根据作者的指示将下载的文件解压到alphafold_finetune/处:

```

tar -xzvf datasets_alphafold_finetune_v1_2022-08-02.tgz

```

如果是成功在alphafold_finetune/下生成包含4个文件(文件夹)的名为datasets_alphafold_finetune的子文件夹时,说明成功。另外,后续运行会报错

```

FileNotFoundError: [Errno 2] No such file or directory: '/home/pbradley/csdat/alphafold/data/params/params_model_2_ptm.npz'

```

这是因为目前GitHub中没有提供默认的AF2相关资料(已向原作者反馈),在/home下新建一个名为params/的子文件夹后,我们还需要直接在Linux服务器上输入

```

wget https://storage.googleapis.com/alphafold/alphafold_params_2022-03-02.tar

tar --extract --verbose --file=./alphafold_params_2022-03-02.tar --directory="./params/" --preserve-permissions

```

以下载并解压相关资源(一共16个文件)。注意:为了避免不必要的麻烦,可以选择将解压后的文件拷贝一份,一个放在/home/pbradley/csdat/alphafold/data/params/下,另一个放在/home/alphafold_finetune/alphafold/data/params/下。

最后是依赖列表的缺失(已有人建议提供),需要移步至AF处下载requirements.txt文件,为了起到提醒作用,我将文件名改为requirements_af2.txt。

将以上文件按要求整理到服务器/home/alphafold_finetune/等处,上传方法可参考https://www.cnblogs.com/marvin-wen/p/13064815.html。整理好后如下:

整理好后的文件夹构造

1.3.服务器环境配置:

这一部分主要请提供服务器的同学安装(感激!这篇稿子也是他力推我写的),存留的文件如下仅供参考:

服务器配置:Linux(系统)、cuda(用于AI训练)、conda(用于建立虚拟环境)

CUDA安装可参考https://blog.csdn.net/xiaopang_love_study/article/details/116661915;

Conda安装使用可以参考https://www.jianshu.com/p/4e5c1ff7c784;https://zhuanlan.zhihu.com/p/84568790和https://zhuanlan.zhihu.com/p/489499097。

1.4.依赖包配置:

```

cd /home/alphafold_finetune/   #更改工作目录

conda create -n test python=3.7   #创建名为test的虚拟环境,py版本至少为3.7

conda activate test   #激活环境

pip3 install -r requirements_af2.txt -i https://pypi.tuna.tsinghua.edu.cn/simple   #根据依赖列表批量配置包

pip list   #查看安装的包及其版本,此时直接运行finetune的命令会持续报错,因为尚且缺少必要的包,于是接下来继续安装

pip install optax==0.1.3   #此时运行finetune的命令会被告知jax与jaxlib版本不合

pip install -U jaxlib==0.3.14+cuda11.cudnn82 -f https://storage.googleapis.com/jax-releases/jax_cuda_releases.html   #jaxlib需要下载GPU/TPU版本的(参考https://github.com/google/jax/discussions/10323)。但是如果此时运行代码,会出现AttributeError: module 'jaxlib.xla_extension' has no attribute 'CpuDevice'报错,实际上仍然是jax~jaxlib包版本选择问题,接下来进行处理。

pip install chex --upgrade   #方法参考https://github.com/google/jax/issues/10331

pip install torch==1.13.0 -i https://pypi.tuna.tsinghua.edu.cn/simple   #继续补充包

#此时运行finetune命令会提示AttributeError: module 'jax.ops' has no attribute 'index_add',有人指出这是由于jax包版本过新所致(保持平静)。

pip install jax==0.2.19

pip install -U jaxlib==0.1.69+cuda111 -f https://storage.googleapis.com/jax-releases/jax_cuda_releases.html   #此处感谢wangy9711指路

#新报错:AttributeError: module 'jax.random' has no attribute 'KeyArray',有人指出是chex版本不适配,于是:

pip3 install chex==0.1.2

#新报错:AttributeError: module 'jaxlib.xla_extension' has no attribute 'CompiledFunction',原因不详,但是降低dm-haiku版本后不再出现(参考了wang9711的信息)。

pip install dm-haiku==0.0.5

#新报错:OSError: /root/anaconda3/envs/finetune/lib/python3.7/site-packages/torch/lib/../../nvidia/cublas/lib/libcublas.so.11: undefined symbol: cublasLtGetStatusString, version libcublasLt.so.11,有人认为可能是pytorch的版本与cuda不合,因此需要移步pytorch官网找到安装cuda对应版本的pytorch下载。

pip install torch==1.12.1+cu113 torchvision==0.13.1+cu113 torchaudio==0.12.1 --extra-index-url https://download.pytorch.org/whl/cu113

```

#运行命令:python run_finetuning.py \

    --binder_intercepts 0.80367635 --binder_intercepts 0.43373787  \

    --freeze_binder  \

    --train_dataset examples/tiny_pmhc_finetune/tiny_example_train.tsv \

    --valid_dataset examples/tiny_pmhc_finetune/tiny_example_valid.tsv > log.out 2>&1 &

#其中> log.out 2>&1 &后缀表示将日志文件保存到当前工作目录的log.out文件中,最后的&要求脚本在后台运行

#查看日志文件的更新情况:

tail -f /home/alphafold_finetune/log.out

```

到目前为止,再运行GitHub主页给出的测试代码已经可以运行。如果被告知:

```

RuntimeError: Resource exhausted: Out of memory while trying to allocate 3251417472 bytes.

```

即内存空间不够。

```

nvidia-smi  #查看GPU使用情况

```

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,607评论 6 507
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,239评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,960评论 0 355
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,750评论 1 294
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,764评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,604评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,347评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,253评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,702评论 1 315
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,893评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,015评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,734评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,352评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,934评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,052评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,216评论 3 371
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,969评论 2 355

推荐阅读更多精彩内容