分享两种使用比较广泛的基于深度学习的冷冻电镜颗粒挑选算法。
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、
3、
2、GUI界面
激活环境后使用cryolo_gui.py
命令打开GUI界面。
conda activate cryolo
cryolo_gui.py
左侧主要有五个任务类型:
-
config用于生成json格式的配置文件,后面的训练和预测都需要用这个config文件来读取一些必要参数。
-
train用于设置训练参数和进行训练模型。
-
predict用于使用模型进行预测。
-
evaluation评估模型。
-
boxmanager用于预测完后查看挑选的颗粒,以及可以调整阈值。
3、生成配置文件
在config
任务中:
General arguments
里可以更改配置文件输出名称config_out_path
和训练的模型输出文件saved_weights_name
的名称。
如果要自己进行训练和调整模型,还需要把boxsize
、train_image_folder
和train_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。minsize
和maxsize
在使用通用模型的时候比较有用,决定了目标颗粒的大小范围。
Filament options
和Tomogrampy 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脚本:
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的位置。