目录
简介
RELION(REgularised LIkelihood OptimisatioN)是一个基于贝叶斯参数估计的统计学算法细化电子冷冻显微镜(cryo-EM)中的(多个)3D重建或2D类平均数),在其正则化似然优化算法中,可以从数据中以迭代的方式学习不同傅里叶分量对确定方向以及对三维重构的贡献的最佳权重。它是由MRC分子生物学实验室的Sjors Scheres组开发的。电子冷冻显微镜(cryo-EM)可以可视化单个蛋白质复合物,直至原子级细节。这些复合物迅速冻结在薄薄的冰层中,可以自由采集其任何功能状态。可以从单个低温EM样品中沿这些蛋白质复合物的功能周期获得有关一系列“快照”的结构信息。然后,将多个快照组合到功能蛋白的三维影片中。简而言之,在相应的贝叶斯框架中,从数据中了解统计模型的许多参数,从而无需用户专业知识即可获得客观且高质量的结果。RELION已被证明可以有效地对各种结构变异进行分类,例如蛋白质结构域内的构象动力学。
整体框架
使用relion进行cryo-EM结构确定。整个单粒子分析工作流程:束诱导运动校正,CTF估计;自动化粒子拣选;颗粒提取; 2D类平均;基于SGD的初始模型生成; 3D分类;高分辨率3D细化; CTF细化和高阶像差校正;直接电子探测器处理影像;最后的图像锐化和局部分辨率估算。
最新relion-3.1的主要新功能之一是对数据中高阶像差的校正,即,除了在relion-3.0中已经存在的波束倾斜校正之外,当前版本还可以估算和校正三叶形和四叶形,以及与标称球差(Cs)的偏差。估计这些像差的信号是通过对多个显微照片中的粒子进行平均计算得出的。
为了允许具有不同Zernike系数的数据集的多个子集,relion-3.1引入实现了光学组的新概念。光学组在STAR文件顶部的一个单独的表data_optics中定义,该表还将包含一个名为data_movies,data_micrographs或data_particles的表,具体取决于它所指的图像类型。
第二个表与以前版本中的STAR文件的内容相似,但是包含一个名为rlnOpticsGroup的新列,它也存在于data_optics表中。常见的CTF参数,例如rlnVoltage和_rlnSphericalAberration,以及新的rlnOddZernike和rlnEvenZernike,可以在data_optics表中为每个光学组存储一次,而无需在第二张表中为每个粒子/显微照片存储它们。
处理高阶像差的相同程序也可以用于细化参考粒子(和粒子组)之间(各向异性)倍率的差异。除了校正数据中的各向异性倍率外,这在组合来自不同范围的数据时也很有用。从3.1版开始,执行2D / 3D分类和3D细化(relion_refine)的程序可以在一次细化中合并具有不同框大小和像素大小的粒子,并且可以使用放大细化来纠正(校准的)像素尺寸。输入参考(或2D分类中的第一个光学组)的框和像素大小将用于重建/类平均。可能需要在运行分类或细化之前检查它们是否在所需的比例上。
GPU支持情况
GPU已经加速的工具:
-
relion_refine (针对Class2D, Class3D, Refine3D, Multibody refinement)
-
relion_autopick
注意: 没有对齐的分类不会加速。
安装
github源码
git clone https://github.com/3dem/relion.git
RELION3依赖
1.需要预装:mpi(openmpi、intelmpi、mpich、mvapich),openmp;
2.fftw 和 fltk 可以根据安装时提示的MD5验证码预先下载相应的版本,分别放在external/fftw 和 external/fltk目录下;
RELION3编译安装
cuda GPU版本安装
mkdir build; cd build;
cmake –DGUI=OFF -DFORCE_OWN_FFTW=ON -DFORCE_OWN_FLTK=ON -DCUDA=ON -DCudaTexture=OFF –DCMAKE_BUILD_TYPE=XXXX ..
make -j XXX
默认情况下采用单精度进行计算,GUI 和CudaTexture 都可以打开。
HIP GPU版本安装
使用CMake配置编译如下:
mkdir build
cd build
cmake -DGUI=OFF -DHIP=ON -DHipTexture=OFF -D DCMAKE_BUILD_TYPE=XXXX ..
ROCm 3.9.0+中可能需要设置:-DCMAKE_CXX_COMPILER=hipcc -DCMAKE_C_COMPILER=hipcc
cmake -DGUI=OFF -DHIP=ON -DHipTexture=OFF -DCMAKE_CXX_COMPILER=hipcc -DCMAKE_C_COMPILER=hipcc -DCMAKE_BUILD_TYPE=Release ..
编译RELION3需要的额外库大部分在RELION软件包中的external目录下,主要包括:fftw、fltk、png、tiff、openmp(可能在aomp或llvm路径下)。
算例
-
eLife 2014中提出的疟原虫核糖体数据集:
wget ftp://ftp.mrc-lmb.cam.ac.uk/pub/scheres/relion_benchmark.tar.gz
-
从EMPIAR和EMDB下载中获得的:
ascp -QT -l 2G -i ~/.aspera/connect/etc/asperaweb_id_dsa.openssh emp_ext@fasp.ebi.ac.uk:archive/10028/data/Particles . wget ftp://ftp.ebi.ac.uk/pub/databases/emdb/structures/EMD-2660/map/emd_2660.map.gz . gunzip emd_2660.map.gz
测试命令
2D分类
relion_refine使用以下命令行参数运行程序的(XXX实例)(的MPI版本):
mpirun -n XXX `which relion_refine_mpi` --i Particles/shiny_2sets.star --ctf --iter 25 --tau2_fudge 2 --particle_diameter 360 --K 200 --zero_mask --oversampling 1 --psi_step 6 --offset_range 5 --offset_step 2 --norm --scale --random_seed 0 --o class2d
3D分类
relion_refine使用以下命令行参数运行(mpi版本的)程序的(XXX个实例):
mpirun -n XXX `which relion_refine_mpi` --i Particles/shiny_2sets.star --ref emd_2660.map:mrc --firstiter_cc --ini_high 60 --ctf --ctf_corrected_ref --iter 25 --tau2_fudge 4 --particle_diameter 360 --K 6 --flatten_solvent --zero_mask --oversampling 1 --healpix_order 2 --offset_range 5 --offset_step 2 --sym C1 --norm --scale --random_seed 0 --o class3d
本算例测试命令
mpirun -np xxx `which relion_refine_mpi` --i Select/after_sort/particles.star --firstiter_cc --ini_high 60 --ctf --ctf_corrected_ref --iter 25 --tau2_fudge 4 --particle_diameter 360 --K 6 --flatten_solvent --zero_mask --oversampling 1 --healpix_order 2 --offset_range 5 --offset_step 2 --sym C1 --norm --scale --random_seed 0 --o class3d --gpu --pool 50 --j 1
CPU多线程版命令(仅供参考)
time mpirun --allow-run-as-root -np 4 --mca plm_rsh_no_tree_spawn 1 --mca plm_rsh_num_concurrent 1000 -mca routed _radix 1000 -mca pml ucx -x MXM_IB_USE_GRH=yes -x MXM_IB_GID_INDEX=0 -x UCX_IB_ADDR_TYPE=ib_global -x UCX_TLS=sm,rc _x -x UCX_RNDV_THRESH=16384 -x UCX_ZCOPY_THRESH=16384 -x UCX_MAX_EAGER_LANES=4 -x UCX_MAX_RNDV_LANES=4 -x LD_LIBRAR Y_PATH -mca btl_openib_warn_default_gid_prefix 0 -mca btl_openib_warn_no_device_params_found sh ${RELION_DIR}/app.sh
CPU_CORES_PER_RANK=8
RANK_PER_NODE=4
lrank=$OMPI_COMM_WORLD_LOCAL_RANK
APP=" `which relion_refine_mpi` --i ./Select/after_sort/particles.star --firstiter_cc --ini_high 60 --ctf --ctf_corrected_ref --iter 25 --tau2_fudge 4 --particle_diameter 360 --K 6 --flatten_solvent --zero_mask --oversampling 1 --healpix_order 2 --offset_range 5 --offset_step 2 --sym C1 --norm --scale --random_seed 0 --o ./class3d/data --pool 40 --j ${CPU_CORES_PER_RANK} "
numactl --cpunodebind=${lrank} --membind=${lrank} ${APP}
详细绑定可以参考:首页 · 计算服务
测试结果
2Iters耗时(s) | 25Iters耗时(s) | |
---|---|---|
DCU | 109.2 | 1373.5 |
P100 | 71.6 | 933.8 |