本指南适用于Linux系统。Alphafold官方也强调尽量使用Linux系统!官方提供了docker版安装步骤。

  • Alphafold简介:

  • 软硬件条件:

    • python版本:建议使用python3.8。

    • 建议使用conda创建python环境。

      conda安装参见:https://conda.io/projects/conda/en/latest/user-guide/install/index.html

    • 硬件条件(搭建本地预测服务器参考条件):

      • 硬盘1T至2T以上,建议3T。

        注1:Alphafold预测的准确度依赖于共进化信息的丰富度,所以要完整的预测或全提高准确度,就需要下载好几个数据库,下载的脚本在Alphafold包的script文件夹下。所以需要这么大的存储,在超算上这都不是事。但是,个人PC就有点大了!

        注2:如果只是简单预测或测试,可以不用下载官方给出的全部数据库,准备1T足以,视所需数据库的大小。

      • CPU: 8至12核以上。

      • 内存:16G至48G以上。

      • GPU:支持CUDA11(不用GPU会很费时间,尽量使用GPU加速。)

      • 注:如果只是想在个人PC上简单测试,以上硬件条件可忽略。也可以使用在线版Alphafold进行预测。

  • 安装步骤:

    • 第一步:从github下载Alphafold包。

      git clone https://github.com/deepmind/alphafold.git

    • 第二步:进入alphafold文件夹,配置python环境。

      pip install -r requirements.txt

    • 第三步:修改jaxlib版本。

      使用官方的jaxlib会报错:AttributeError: module 'jaxlib.pocketfft' has no attribute 'pocketfft'

      pip install --upgrade jax==0.2.14 jaxlib==0.1.69

    • 第四步:安装openMM。

      官方建议使用conda安装。参见:https://openmm.org/

      建议使用openmm7.5.1版本,7.6.0会报错:ModuleNotFoundError: No module named 'simtk.openmm.app.internal'

      • conda install -c conda-forge openmm=7.5.1

      • 验证openmm:python -m simtk.testInstallation

        • 直接执行python -m openmm.testInstallation 会报错找不到openmm

        • 输出以下内容就说明安装好了。

          OpenMM Version: 7.5.1 Git Revision:

          There are 4 Platforms available:

          1 Reference - Successfully computed forces 2 CPU - Successfully computed forces 3 CUDA - Successfully computed forces 4 OpenCL - Successfully computed forces

          Median difference in forces between platforms:

          Reference vs. CPU:  Reference vs. CUDA: CPU vs. CUDA: Reference vs. OpenCL:  CPU vs. OpenCL: CUDA vs. OpenCL:

          All differences are within tolerance.

        • 如果输出内容里出现:CUDA - Error computing forces with CUDA platform,原因在于cudatookit不对。首先使用 nvidia-smi 查看CUDA Version,然后使用 conda install -c conda-forge cudatoolkit= CUDA Version(对应的版本号),就可以解决问题。当然没有cuda也能跑起来,只是费时间。

    • 验证Alphafold:

      • 进入alphafold,执行 python run_alphafold_test.py

      • 出现以下内容,就说明安装好了。

        [ RUN ] RunAlphafoldTest.test_end_to_end_no_relax I0814 21:46:41.874690 140372256589632 run_alphafold.py:161] Predicting test I0814 21:46:41.875205 140372256589632 run_alphafold.py:190] Running model model1 on test I0814 21:46:41.875339 140372256589632 run_alphafold.py:202] Total JAX model model1 on test predict time (includes compilation time, see --benchmark): 0.0s I0814 21:46:41.878139 140372256589632 run_alphafold.py:271] Final timings for test: {'features': 3.409385681152344e-05, 'process_features_model1': 3.838539123535156e-05, 'predict_and_compile_model1': 2.0742416381835938e-05} [ OK ] RunAlphafoldTest.test_end_to_end_no_relax [ RUN ] RunAlphafoldTest.test_end_to_end_relax I0814 21:46:41.880331 140372256589632 run_alphafold.py:161] Predicting test I0814 21:46:41.880626 140372256589632 run_alphafold.py:190] Running model model1 on test I0814 21:46:41.880749 140372256589632 run_alphafold.py:202] Total JAX model model1 on test predict time (includes compilation time, see --benchmark): 0.0s I0814 21:46:41.883405 140372256589632 run_alphafold.py:271] Final timings for test: {'features': 3.0994415283203125e-05, 'process_features_model1': 3.409385681152344e-05, 'predict_and_compile_model1': 1.6450881958007812e-05, 'relax_model1': 2.9087066650390625e-05}

        [ OK ] RunAlphafoldTest.test_end_to_end_relax

        Ran 2 tests in 0.011s

        OK

  • 后记:

(防坑)Alphafold 非docker 安装指南的更多相关文章

  1. Centos 7 中 部署 asp.net core 3.0 + nginx + mongodb 的一些新手简单入门,非docker

    目录 零.准备工作 一.部署Mongodb 1.安装Mongodb 2.创建mongodb的数据目录 3.设置目录权限 4.设置mongodb启动 5.修改mongodb的配置文件 6.启动Mongo ...

  2. Golang的防坑小技巧

    Golang的防坑小技巧 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 作为一名小白,在之前没有接触到编程的小伙伴,难免会踩到一些坑,比如说刚刚入门的时候你需要安装环境,学习Gol ...

  3. Hadoop基础-常见异常剖析之防坑小技巧

    Hadoop基础-常见异常剖析之防坑小技巧 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.

  4. Linux下,非Docker启动Elasticsearch 6.3.0,安装ik分词器插件,以及使用Kibana测试Elasticsearch,

    Linux下,非Docker启动Elasticsearch 6.3.0 查看java版本,需要1.8版本 java -version yum -y install java 创建用户,因为elasti ...

  5. SpringBoot整合log4j2进行日志配置及防坑指南

    写在前面 最近项目经理要求将原先项目中的日志配置logBack,修改为log4j2,据说是log4j2性能更优于logback,具体快多少,网上有说快10多倍,看来还是很快的,于是新的一波挑战又开始了 ...

  6. Python语言防坑小技巧

    Python语言防坑小技巧 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.赋值即定义  1>.运行以下代码会出现报错 #!/usr/bin/env python #_*_ ...

  7. position: sticky 防坑指南

    position: sticky 防坑指南:https://www.jianshu.com/p/e217905e8b87 今天在写小程序项目的时候碰到一个需求是要把轮播图下面的标签栏滑动到顶部后固定, ...

  8. 阿里巴巴泰山版《Java 开发者手册》,也是一份防坑指南

    我是风筝,公众号「古时的风筝」,一个不只有技术的技术公众号,一个在程序圈混迹多年,主业 Java,另外 Python.React 也玩儿的 6 的斜杠开发者. Spring Cloud 系列文章已经完 ...

  9. linux centos 安装Jenkins(非docker方式)

    写在前面 我之前写过Asp.net Core 使用Jenkins + Dockor 实现持续集成.自动化部署(一):Jenkins安装这jenkisn的安装过程,但这篇使用的是docker的方式安装的 ...

随机推荐

  1. poj1475 -- Pushing Boxes

    这道题其实挺有趣 的,这让我想起小时候诺基亚手机上的推箱子游戏(虽然一点也不好玩) (英文不好-->)  题意翻译: 初始人(S),箱子(B),目的地(T)用人把箱子推到 T最小步数及其路径(满 ...

  2. .NET C#基础(5):结构体 - 高性能代码的基石

    0. 文章目的   本文面向有一定.NET C#基础知识的学习者,介绍C#中结构体定义.使用以及特点. 1. 阅读基础   了解C#基本语法   了解.NET中的栈与托管堆 2. 值类型 2.1 .N ...

  3. Java开发学习(五)----bean的生命周期

    一.什么是生命周期 首先理解下什么是生命周期? 从创建到消亡的完整过程,例如人从出生到死亡的整个过程就是一个生命周期. bean生命周期是什么? bean对象从创建到销毁的整体过程. bean生命周期 ...

  4. react的setState到底是同步还是异步

    在介绍这个问题之前,我们先来看一下一个例子: state = {number:1};componentDidMount(){this.setState({number:3})console.log(t ...

  5. 使用Playbook批量部署多台LAMP环境

    1. 安装ansible yum install epel-release -y yum install ansible -y Playbook是一个不同于使用ansible命令行执行方式的模式,功能 ...

  6. Python爬虫+数据可视化教学:分析猫咪交易数据

    猫猫这么可爱 不会有人不喜欢吧: 猫猫真的很可爱,和我女朋友一样可爱~你们可以和女朋友一起养一只可爱猫猫女朋友都有的吧?啊没有的话当我没说-咳咳网上的数据太多.太杂,而且我也不知道哪个网站的数据比较好 ...

  7. Python程序入口 __name__ == ‘__main__‘ 有重要功能(多线程)而非编程习惯

    文章来源于互联网(https://jq.qq.com/?_wv=1027&k=rX9CWKg4) 在Python中,被称为「程序的入口」的 if name =='main': 总是出现在各种示 ...

  8. nifi从入门到实战(保姆级教程)——flow

    本文章首发于博客园,转载请标明出处 经过前两篇文章(环境篇,身份验证),我们已经有了nifi可以运行的基础,今天就来实现一个案例吧. 假设我们要从ftp上获取一个zip包,里面有两个csv文件,一个是 ...

  9. 抓到 Netty 一个隐藏很深的内存泄露 Bug | 详解 Recycler 对象池的精妙设计与实现

    欢迎关注公众号:bin的技术小屋,如果大家在看文章的时候发现图片加载不了,可以到公众号查看原文 本系列Netty源码解析文章基于 4.1.56.Final版本 最近在 Review Netty 代码的 ...

  10. 对象数组和对象对象数组的for-each循环

    对象数组的声明 类名称 对象数组名[] = null: 对象数组名 = new 类名称[长度] 定义并开辟数组 类名称 对象数据名[] = new 类名称[长度]; 在声明一个对象数组后,必须对每个数 ...