AlphaFold2配置和部署过程

本文档详细介绍了在Ubuntu20.04.2LTS系统上配置和部署AlphaFold2的步骤,包括环境配置、依赖安装、数据库下载、OpenMM补丁应用和运行流程。特别强调了GPU版本的jaxlib选择和bash脚本的使用,以运行预测蛋白质3D结构的任务。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

AlphaFold2配置和部署过程


参考:https://github.com/kalininalab/alphafold_non_docker

1.Environment

CPU:Intel® Xeon® Gold 6240 CPU @ 2.60GHz
GPU:Tesla V100S PCIe 32GB * 4
OS:Ubuntu 20.04.2 LTS
CUDA:11.3
NVIDIA:NVIDIA driver version: 470.57.02

2.Insatll environment dependencies

cudnn和cudatoolkit根据自己电脑配置

conda install -y -c conda-forge openmm==7.5.1 cudnn==8.2.1.32 cudatoolkit==11.0.3 pdbfixer==1.7
conda install -y -c bioconda hmmer==3.3.2 hhsuite==3.3.0 kalign2==2.04

3.Download chemical properties to the common folder

wget -q -P alphafold/alphafold/common/ https://git.scicore.unibas.ch/schwede/openstructure/-/raw/7102c63615b64735c4941278d92b554ec94415f8/modules/mol/alg/src/stereo_chemical_props.txt

4.Install alphafold dependencies

pip install absl-py==0.13.0 biopython==1.79 chex==0.0.7 dm-haiku==0.0.4 dm-tree==0.1.6 immutabledict==2.0.0 jax==0.2.14 ml-collections==0.1.0 numpy==1.19.5 scipy==1.7.0 tensorflow==2.5.0
pip install --upgrade jax jaxlib==0.1.69+cuda111 -f https://storage.googleapis.com/jax-releases/jax_releases.html

注意点:
1.jaxlib版本要下载正确,与cuda的版本一致,不然在run alphafold的时候不能调用GPU。
2.jaxlib只能在linux下使用,windows下没有这个包,没有linux建议放弃。

5.Apply OpenMM patch

cd ~/anaconda3/envs/alphafold/lib/python3.8/site-packages/ 
patch -p0 < $alphafold_path/docker/openmm.patch

其中$alphafold_path表示自己电脑上alphafold存放的位置

6.Download all databases

跟着官方的下载渠道走: https://github.com/deepmind/alphafold#genetic-databases
解压后的数据大约2.2T,存放在SSD上效果更佳。

7.Run AlphaFold2

两种选择:
1.在源码的run_alphafold.py中将参数中各个数据库的路径、输出结果的路径,以及其他参数(例如GPU设置、需要预测的蛋白质氨基酸序列 [存放在fastashang] )进行配置。
2.写一个script,用于将各个数据库的路径拼接,配置相关的一些参数,以及run run_alphafold.py,具体的如下(该来自参考的作者)

#!/bin/bash
# Description: AlphaFold non-docker version
# Author: Sanjay Kumar Srikakulam

usage() {
        echo ""
        echo "Please make sure all required parameters are given"
        echo "Usage: $0 <OPTIONS>"
        echo "Required Parameters:"
        echo "-d <data_dir>     Path to directory of supporting data"
        echo "-o <output_dir>   Path to a directory that will store the results."
        echo "-m <model_names>  Names of models to use (a comma separated list)"
        echo "-f <fasta_path>   Path to a FASTA file containing one sequence"
        echo "-t <max_template_date> Maximum template release date to consider (ISO-8601 format - i.e. YYYY-MM-DD). Important if folding historical test sets"
        echo "Optional Parameters:"
        echo "-n <openmm_threads>   OpenMM threads (default: all available cores)"
        echo "-b <benchmark>    Run multiple JAX model evaluations to obtain a timing that excludes the compilation time, which should be more indicative of the time required for inferencing many proteins (default: 'False')"
        echo "-g <use_gpu>      Enable NVIDIA runtime to run with GPUs (default: True)"
        echo "-a <gpu_devices>  Comma separated list of devices to pass to 'CUDA_VISIBLE_DEVICES' (default: 0)"
        echo "-p <preset>       Choose preset model configuration - no ensembling and smaller genetic database config (reduced_dbs), no ensembling and full genetic database config  (full_dbs) or full genetic database config and 8 model ensemblings (casp14)"
        echo ""
        exit 1
}

while getopts ":d:o:m:f:t:g:n:a:p:b" i; do
        case "${i}" in
        d)
                data_dir=$OPTARG
        ;;
        o)
                output_dir=$OPTARG
        ;;
        m)
                model_names=$OPTARG
        ;;
        f)
                fasta_path=$OPTARG
        ;;
        t)
                max_template_date=$OPTARG
        ;;
        g)
                use_gpu=$OPTARG
        ;;
        n)
                openmm_threads=$OPTARG
        ;;
        a)
                gpu_devices=$OPTARG
        ;;
        p)
                preset=$OPTARG
        ;;
        b)
                benchmark=true
        ;;
        esac
done

# Parse input and set defaults
if [[ "$data_dir" == "" || "$output_dir" == "" || "$model_names" == "" || "$fasta_path" == "" || "$max_template_date" == "" ]] ; then
    usage
fi

if [[ "$benchmark" == "" ]] ; then
    benchmark=false
fi

if [[ "$use_gpu" == "" ]] ; then
    use_gpu=true
fi

if [[ "$gpu_devices" == "" ]] ; then
    gpu_devices=0
fi

if [[ "$preset" == "" ]] ; then
    preset="full_dbs"
fi

if [[ "$preset" != "full_dbs" && "$preset" != "casp14" && "$preset" != "reduced_dbs" ]] ; then
    echo "Unknown preset! Using default ('full_dbs')"
    preset="full_dbs"
fi

# This bash script looks for the run_alphafold.py script in its current working directory, if it does not exist then exits
current_working_dir=$(pwd)
alphafold_script="$current_working_dir/run_alphafold.py"

if [ ! -f "$alphafold_script" ]; then
    echo "Alphafold python script $alphafold_script does not exist."
    exit 1
fi

# Export ENVIRONMENT variables and set CUDA devices for use
# CUDA GPU control
export CUDA_VISIBLE_DEVICES=-1
if [[ "$use_gpu" == true ]] ; then
    export CUDA_VISIBLE_DEVICES=0

    if [[ "$gpu_devices" ]] ; then
        export CUDA_VISIBLE_DEVICES=$gpu_devices
    fi
fi

# OpenMM threads control
if [[ "$openmm_threads" ]] ; then
    export OPENMM_CPU_THREADS=$openmm_threads
fi

# TensorFlow control
export TF_FORCE_UNIFIED_MEMORY='1'

# JAX control
export XLA_PYTHON_CLIENT_MEM_FRACTION='4.0'

# Path and user config (change me if required)
bfd_database_path="$data_dir/bfd/bfd_metaclust_clu_complete_id30_c90_final_seq.sorted_opt"
small_bfd_database_path="$data_dir/small_bfd/bfd-first_non_consensus_sequences.fasta"
mgnify_database_path="$data_dir/mgnify/mgy_clusters.fa"
template_mmcif_dir="$data_dir/pdb_mmcif/mmcif_files"
obsolete_pdbs_path="$data_dir/pdb_mmcif/obsolete.dat"
pdb70_database_path="$data_dir/pdb70/pdb70"
uniclust30_database_path="$data_dir/uniclust30/uniclust30_2018_08/uniclust30_2018_08"
uniref90_database_path="$data_dir/uniref90/uniref90.fasta"

# Binary path (change me if required)
hhblits_binary_path=$(which hhblits)
hhsearch_binary_path=$(which hhsearch)
jackhmmer_binary_path=$(which jackhmmer)
kalign_binary_path=$(which kalign)

# Run AlphaFold with required parameters
# 'reduced_dbs' preset does not use bfd and uniclust30 databases
if [[ "$preset" == "reduced_dbs" ]]; then
    $(python $alphafold_script --hhblits_binary_path=$hhblits_binary_path --hhsearch_binary_path=$hhsearch_binary_path --jackhmmer_binary_path=$jackhmmer_binary_path --kalign_binary_path=$kalign_binary_path --small_bfd_database_path=$small_bfd_database_path --mgnify_database_path=$mgnify_database_path --template_mmcif_dir=$template_mmcif_dir --obsolete_pdbs_path=$obsolete_pdbs_path --pdb70_database_path=$pdb70_database_path --uniref90_database_path=$uniref90_database_path --data_dir=$data_dir --output_dir=$output_dir --fasta_paths=$fasta_path --model_names=$model_names --max_template_date=$max_template_date --preset=$preset --benchmark=$benchmark --logtostderr)
else
    $(python $alphafold_script --hhblits_binary_path=$hhblits_binary_path --hhsearch_binary_path=$hhsearch_binary_path --jackhmmer_binary_path=$jackhmmer_binary_path --kalign_binary_path=$kalign_binary_path --bfd_database_path=$bfd_database_path --mgnify_database_path=$mgnify_database_path --template_mmcif_dir=$template_mmcif_dir --obsolete_pdbs_path=$obsolete_pdbs_path --pdb70_database_path=$pdb70_database_path --uniclust30_database_path=$uniclust30_database_path --uniref90_database_path=$uniref90_database_path --data_dir=$data_dir --output_dir=$output_dir --fasta_paths=$fasta_path --model_names=$model_names --max_template_date=$max_template_date --preset=$preset --benchmark=$benchmark --logtostderr)
fi

如果在源码上修改,则直接 python run_alphafold.py
如果使用bash script,则可以使用以下命令,-d 后是数据库存放的位置,-o 是结果输出的路径,-m 是选择模型(可以选多个), -f 是查询序列方法的路径,-t 是使用该时间之前的数据库内容。

# Example run (Uses the GPU with index id 0 as default)
bash run_alphafold.sh -d ./alphafold_data/ -o ./outputs/ -m model_1 -f ./xxx/T100.fasta -t 2020-05-14

# OR for CPU only run
bash run_alphafold.sh -d ./alphafold_data/ -o ./outputs/ -m model_1 -f ./xxx/T100.fasta -t 2020-05-14 -g False

8.View protein 3D structure

1.安装生物大分子展示软件PyMOL,具体参考:http://pymol.chenzhaoqiang.com/intro/overview.html
我使用的是alphafold2作者在colab上 Single sequence input (no MSA)使用的序列,如下:

query_sequence = "GWSTELEKHREELKEFLKKEGITNVEIRIDNGRLEVRVEGGTERLKRFLEELRQKLEKKGYTVDIKIE"

在运行代码后在outputs里包含多个文件,现在后缀名为pdb的文件在PyMOL中打开,可以看到如下:
在这里插入图片描述
可以在pdb数据库中查找一些已有蛋白质三维结构的氨基酸序列进行验证。

<think>嗯,用户遇到了开机黑屏,显示Windows Boot Manager错误,需要手动选择其他系统才能进入。这个问题可能比较复杂,我需要一步步分析可能的原因解决方法。 首先,我得回想一下常见的启动问题。Windows Boot Manager负责引导系统,如果它出问题,可能的原因包括引导配置数据(BCD)损坏、系统分区问题、硬盘故障或者系统更新导致的兼容性问题。用户提到必须手动选择其他系统,这说明可能有多个引导项,或者默认引导项配置错误。 接下来,我应该考虑引导修复的方法。使用Windows安装介质进入恢复环境,然后运行bootrec命令是常见做法。比如bootrec /fixmbr修复主引导记录,bootrec /fixboot修复引导扇区,bootrec /rebuildbcd重建BCD。这些步骤可能会解决问题,但需要用户有安装U盘。 另外,检查启动顺序也很重要。有时候BIOS/UEFI设置中的启动顺序不正确,导致系统尝试从错误的设备启动。用户可能需要进入BIOS调整硬盘的启动优先级,确保系统盘是第一选项。 还有可能是系统文件损坏。运行sfc /scannowchkdsk命令可以检查修复系统文件及磁盘错误。如果用户能进入系统,这些命令会有帮助,但如果是黑屏无法进入,可能需要通过恢复环境来执行。 如果问题是由于最近的更新或驱动安装引起的,安全模式启动可能有效。用户可以尝试进入安全模式,回滚驱动或卸载最近的更新。不过,安全模式也需要引导管理器正常工作,可能这时候已经无法进入,所以这个方法可能不适用。 硬件方面,硬盘连接问题或故障也会导致引导失败。检查硬盘数据线电源线是否松动,或者更换接口试试。如果有其他硬盘,可以暂时断开,排除干扰。 此外,用户提到需要手动选择其他系统,可能涉及到多系统引导的问题。比如安装了Linux双系统,导致引导配置冲突。使用EasyUEFI或bcdedit调整引导顺序,设置正确的默认系统可能解决。 如果所有方法都无效,可能需要考虑系统还原或重装。系统还原点可以回退到之前正常的状态,但如果没有创建还原点,就只能备份数据后重装系统了。 总结下来,可能的解决步骤是:先尝试自动修复命令行工具,检查启动顺序硬件连接,调整引导配置,最后考虑系统还原或重装。需要根据用户的具体情况一步步排查,同时注意数据安全,避免操作导致数据丢失。</think>针对**Windows Boot Manager异常导致开机黑屏**的问题,以下是逐步排查与解决方案: --- ### **一、问题原因分析** 1. **引导文件损坏** - BCD(引导配置数据)丢失或损坏。 - 系统分区(EFI分区或保留分区)文件异常。 2. **硬件问题** - 硬盘连接不良或存在物理损坏。 - BIOS/UEFI设置中启动顺序错误。 3. **系统更新或驱动冲突** - 近期更新补丁或驱动安装导致引导异常。 4. **多系统冲突** - 双系统(如Windows+Linux)引导配置被覆盖。 --- ### **二、解决方法** #### **步骤1:尝试自动修复** 1. **插入Windows安装U盘**,重启电脑并按启动键(如F12/F2/Del)选择从U盘启动。 2. 进入安装界面后选择**“修复计算机” > 疑难解答 > 高级选项 > 启动修复**。 3. 系统会自动检测并修复引导问题。 --- #### **步骤2:手动修复引导文件(命令行)** 若自动修复无效,需手动操作: 1. 在**高级选项**中选择**“命令提示符”**。 2. 依次输入以下命令(每行输入后按回车): ```bash bootrec /fixmbr # 修复主引导记录 bootrec /fixboot # 修复引导扇区 bootrec /scanos # 扫描已安装的Windows系统 bootrec /rebuildbcd # 重建BCD引导配置 ``` 3. 完成后重启,检查是否正常引导。 --- #### **步骤3:检查启动顺序与硬盘状态** 1. 进入BIOS/UEFI设置(开机时按Del/F2/F10等键),确认: - 系统硬盘被识别且位于**启动设备首位**。 - 启动模式(UEFI/Legacy)与系统安装方式一致。 2. 检查硬盘连接线是否松动,尝试更换SATA接口或数据线。 --- #### **步骤4:重建BCD文件(针对多系统冲突)** 若手动修复无效,需彻底重建BCD: 1. 在命令提示符中输入: ```bash diskpart # 进入磁盘分区工具 list disk # 列出所有磁盘 select disk 0 # 选择系统硬盘(根据实际编号调整) list partition # 查看分区 select partition X # 选择EFI分区(通常为100~500MB的FAT32分区) assign letter=S: # 分配盘符为S exit # 退出diskpart ``` 2. 继续输入: ```bash bcdboot C:\Windows /s S: /f UEFI # 重建BCD文件(C为系统盘符,S为EFI分区盘符) ``` 3. 完成后重启,观察是否修复。 --- #### **步骤5:检查系统文件完整性** 若可进入系统,运行以下命令: 1. 以管理员身份打开CMD,输入: ```bash sfc /scannow # 扫描并修复系统文件 chkdsk C: /f /r # 检查磁盘错误(C为系统盘符) ``` --- #### **步骤6:终极方案** 若以上均无效,可能需要: 1. **重置系统**:通过“恢复”功能保留文件重装系统。 2. **更换硬盘**:排除硬盘物理损坏问题。 --- ### **三、预防措施** 1. 定期备份重要数据。 2. 避免突然断电或强制关机。 3. 多系统安装时,建议使用**独立硬盘**或第三方引导工具(如EasyBCD)。 --- **提示**:操作前建议备份数据,若对命令行不熟悉,可寻求专业人士协助。
评论 24
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值