颗粒挑选

分享两种使用比较广泛的基于深度学习的冷冻电镜颗粒挑选算法。

crYOLO

crYOLO是基于深度学习的冷冻电镜颗粒挑选软件,所谓YOLO框架全称为You Only Look Once,意为你只需要看一次,减少反复地进行颗粒清理的过程。

Wagner, T., Merino, F., Stabrin, M., Moriya, T., Antoni, C., Apelbaum, A., Hagel, P., Sitsel, O., Raisch, T., Prumbaum, D., Quentin, D., Roderer, D., Tacke, S., Siebolds, B., Schubert, E., Shaikh, T.R., Lill, P., Gatsogiannis, C., Raunser, S., 2019. SPHIRE-crYOLO is a fast and accurate fully automated particle picker for cryo-EM. Commun Biol 2. https://doi.org/10.1038/s42003-019-0437-z

1、安装

# For CUDA 11
conda create -n cryolo pyqt=5 python=3 numpy=1.18.5 libtiff wxPython=4.1.1  adwaita-icon-theme 'setuptools<66' -c conda-forge -c anaconda 
conda activate cryolo
pip install nvidia-pyindex
pip install 'cryolo[c11]'

安装napari-boxmanager

# 这是官网的教程
conda create -n napari-cryolo python=3.10 napari=0.4.17 pyqt pip -c conda-forge
conda activate napari-cryolo
pip install napari-boxmanager
# 用官网的我在pip的时候遇到了依赖错误,软件打开会出错。用这个可以试试
conda create -n napari-cryolo python=3.10 napari pyqt napari-boxmanager

将napari-boxmanager链接到cryolo的环境

conda activate cryolo
cryolo_dir=$(realpath $(dirname $(which cryolo_predict.py)))
napari_link_file=${cryolo_dir}/napari_boxmanager
conda activate napari-cryolo
echo -e "#\!/usr/bin/bash\nexport NAPARI_EXE=$(which napari)\nnapari_exe='$(which napari_boxmanager)'\n\${napari_exe} \"\${@}\""> ${napari_link_file}
chmod +x ${napari_link_file}
conda activate cryolo

crYOLO还提供了几个预训练的模型,能很好地应付一般的场景而不用重新训练模型,或是用作底座模型训练,效果会好一些。

1、低通滤波的冷冻电镜图模型

2、JANNI神经网络去噪的冷冻电镜图模型

3、负染模型

2、GUI界面

激活环境后使用cryolo_gui.py命令打开GUI界面。

conda activate cryolo
cryolo_gui.py

左侧主要有五个任务类型:

  1. config用于生成json格式的配置文件,后面的训练和预测都需要用这个config文件来读取一些必要参数。

  2. train用于设置训练参数和进行训练模型。

  3. predict用于使用模型进行预测。

  4. evaluation评估模型。

  5. boxmanager用于预测完后查看挑选的颗粒,以及可以调整阈值。

3、生成配置文件

config任务中:

General arguments里可以更改配置文件输出名称config_out_path和训练的模型输出文件saved_weights_name的名称。

如果要自己进行训练和调整模型,还需要把boxsizetrain_image_foldertrain_annot_folder填上,分别是颗粒的大小、用于训练的照片路径和用于训练的颗粒坐标路径。

Denoising options里可以根据情况酌情调整low_pass_cutoff调整低通滤波的效果。filter默认是LOWPASS,也可以选择用JANNI神经网络去噪,并在janni_model中选择对应的模型。

Training option里,如果优化现有的模型,把pretrain_weights填入对应的模型路径。

其他的参数一般默认就可以。

点击右下角Start

4、训练模型

Train任务中:

Required arguments里将刚刚生成的配置文件选上。

Optional arguments里可以选择要用的GPU。如果对模型进行优化,可以选择fine_tune

点击Start

5、预测

Predict任务中:

Required arguments里将生成的配置文件、模型、需要预测的照片所在路径以及结果输出路径分别填好。

Optional arguments里,threshold决定了颗粒挑选的阈值,也可以在后面boxmanager里更为直观地调整,这里可以默认。gpu选择要用的GPU。minsizemaxsize在使用通用模型的时候比较有用,决定了目标颗粒的大小范围。

Filament optionsTomogrampy options在选择Filament和对Tomogram挑选的时候选择Active

点击Start

6、查看

预测输出的结果有四个文件夹CBOX、STAR、EMAN、DISTR,EMAN和STAR分别保存了eman box格式和relion star格式的坐标文件,DISTR保存了置信度和大小分布之类的结果,CBOX可以在napari-boxmanager中打开。

boxmanager > General arguments里选择照片的路径和预测输出里的CBOX路径。点击Start

会弹出napari-boxmanager的界面,这里可以查看预测的结果,还可以调整threshold。

Topaz

使用卷积神经网络进行cryoEM图中挑选颗粒。Topaz还可以使用深度去噪模型进行显微照片和断层图去噪。

比较好的一点是集成在了CryoSPARC的工作流中,在Job Builder中可以直接找到Topaz相关任务,但是需要管理员先进行一定的设置。

1、安装

# python>=3.8
conda create -n topaz python=3.8
source activate topaz
conda install topaz fsspec pytorch-cuda=11.8 -c tbepler -c pytorch -c nvidia

2、使用

CryoSPARC中整合了Topaz任务,只需要在Path to Topaz executable中输入/path/to/anaconda/envs/topaz/bin/topaz对应的路径就行。

官方担心如果环境冲突了,可以试试改用bash脚本:

#!/usr/bin/env bash
if command -v conda > /dev/null 2>&1; then
    conda deactivate > /dev/null 2>&1 || true  # ignore any errors
    conda deactivate > /dev/null 2>&1 || true  # ignore any errors
fi
unset _CE_CONDA
unset CONDA_DEFAULT_ENV
unset CONDA_EXE
unset CONDA_PREFIX
unset CONDA_PROMPT_MODIFIER
unset CONDA_PYTHON_EXE
unset CONDA_SHLVL
unset PYTHONPATH
unset LD_PRELOAD
unset LD_LIBRARY_PATH

source $HOME/anaconda3/etc/profile.d/conda.sh # 把这个换成对应conda的位置
conda activate topaz
exec topaz $@

然后chmod +x topaz.sh,在Path to Topaz executable中改为输入这个topaz.sh的位置。

RELION中同样也整合了Topaz的接口。

留下评论

您的邮箱地址不会被公开。 必填项已用 * 标注