欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 房产 > 建筑 > CryoEM - 冷冻电镜 基于深度学习的 从头重构(Ab-initio Reconstruction) 开源项目 教程

CryoEM - 冷冻电镜 基于深度学习的 从头重构(Ab-initio Reconstruction) 开源项目 教程

2024/11/30 10:10:03 来源:https://blog.csdn.net/u012515223/article/details/143162494  浏览:    关键词:CryoEM - 冷冻电镜 基于深度学习的 从头重构(Ab-initio Reconstruction) 开源项目 教程

欢迎关注我的CSDN:https://spike.blog.csdn.net/
本文地址:https://spike.blog.csdn.net/article/details/143162494

免责声明:本文来源于个人知识与公开资料,仅用于学术交流,欢迎讨论,不支持转载。


CryoDragon

来源于 CryoDragon 算法

冷冻电镜(CryoEM) 是一种成像方式,为蛋白质和其他生命基本组成部分的动态,提供独特的观察方式。从数百万噪声和随机取向的二维投影中,以计算效率高的方式,联合估计生物大分子的姿态、三维结构和构象异质性。

使用 Docker 环境,激活 Conda 环境,即:

docker pull cryoem:1.3docker run -it \
--privileged \
--network host \
--shm-size 64G \
--gpus all \
--ipc host \
--name cryoem \
-v [your path]:[your path] \
cryoem:1.3 \
/bin/bashconda activate cryoem-opt

Conda 运行环境构建,请参考:构建 冷冻电镜算法 的高性能 PyTorch 环境 (PyTorch3D 和 FairScale) 教程

测试数据,原始地址:

[your path]/datasets/cryoem_empiar/10028

下载 Empiar 数据集,请参考:使用 Aspera 工具下载冷冻电镜数据集 EMPIAR 教程

CryoSparc 运行的数据地址:

[your path]/cryosparc

启动 CryoSparc 服务,请参考:CryoEM - 冷冻电镜 CryoSPARC 软件的安装与环境配置(BugFix) 教程

使用 CryoSparc 进行降采样:

  • 输入:[your path]/cryoem_empiar/10028/data/Particles/shiny_2sets.star
  • 输出:[your path]/cryosparc/P1/J2/downsampled_particles.cs

转换为 Star 格式:

  1. 下载 pyem 项目,使用 Python 处理冷冻电镜数据的库。
  2. 使用 downsampled_particles.csPx_Jx_passthrough_particles.cs 构建 star 文件。

即:

cd [your path]/cryosparc/P1/J2/python [your path]/cryoem_project/pyem/csparc2star.py downsampled_particles.cs P1_J2_passthrough_particles.cs ../downsampled_particles.star# python [your path]/cryoem_project/pyem/csparc2star.py downsampled_particles.cs P1_J14_passthrough_particles.cs ../downsampled_particles_r10028_256.star
# python [your path]/cryoem_project/pyem/csparc2star.py downsampled_particles.cs P1_J15_passthrough_particles.cs ../downsampled_particles_splice_128.star

CryoSparc 的降采样操作,参考:冷冻电镜 CryoSPARC 软件 导入(Import) 单颗粒图像(SPI) 数据集 教程

输出的格式文件:[your path]/cryosparc/P1/downsampled_particles.star,位于 Project P1 文件夹,而不是 Job 文件夹。

注意:downsampled_particles.star 的内容中,包括 Job 地址,需要存储至上一层文件夹,才能定位具体数据。

使用 LMDB 预生成数据库,解决权限问题,即:

cd [your path]/workspace/cryoem-project/python test_newloader.py \
--particles_meta "[your path]/cryosparc/P1/downsampled_particles_splice_128.star" \
--data_path "[your path]/cryosparc/P1/" \
--db_path "[your path]/cryoem_project/lmdb/splice_128"chmod a+w -R [your path]/cryoem_project/lmdb/
chown [xxx] [your path]/cryoem_project/lmdb/

运行脚本 run_r10028.sh,修改配置,参数仅作为参考,如下:

#!/bin/bashset -xe
# PROJECT_DIR=$(cd "$(dirname $0)" && pwd)/..
source activate cryoem-optexport PATH="/usr/local/cuda-11.6/bin:$PATH"
export LD_LIBRARY_PATH="/usr/local/cuda-11.6/lib64:$LD_LIBRARY_PATH"Date=$(date "+%Y%m%d-%H%M%S")  # 使用系统时间if [ ! -d "results/${Date}" ]; thenmkdir -p "results/${Date}"
fiexport OMP_NUM_THREADS=1# 手动构建数据集
#python test_newloader.py \
#--particles_meta ${splice_200_half1} \
#--data_path ${splice_path} \
#--db_path /data2/kongfang/data/lmdb/splice_200_half1#python test_newloader.py \
#--particles_meta "[your path]/cryosparc/P1/downsampled_particles_splice_128.star" \
#--data_path "[your path]/cryosparc/P1/" \
#--db_path "[your path]/cryoem_project/lmdb/splice_128"export CUDA_VISIBLE_DEVICES="0,1,2"
n_gpu=3         # GPU 数量data_path="[your path]/cryosparc/P1/"
particles_meta="[your path]/cryosparc/P1/downsampled_particles_r10028_256.star"
lmdb_path="[your path]/cryoem_project/lmdb/r10028_256"
img_size=256      # 图像尺寸
batch_size=16     # batch size 16 显存占用是逐步增大的
mask_steps=32     # mask steps
mask_epoch=2      # mask epochsave_dir="results/${Date}/r10028_r${img_size}_b${batch_size}_g${n_gpu}_outputs/"torchrun --master_port 12128 \
--nproc_per_node ${n_gpu} \
--nnode 1 \
--node_rank=0 \
kryoAE.py \
--latent_code_dim 0 \
--decoder_layers 2 \
--decoder_hidden_dim 256 \
--render_path ${save_dir} \
--num-epochs 800 \
--minibatch-size ${batch_size} \
--mask \
--input_radius 0.475 \
--reconstruct_radius 0.44 \
--w0 48 \
--w 32 \
--activation SIREN \
--encoder_backbone resnet \
--encoder_basename resnet18 \
--save-interval 10 \
--split_rate 1 \
--particles_meta ${particles_meta} \
--using_shift_coords \
--data_path ${data_path} \
--decoder_add_layers 2 \
--encoder_activation gelu \
--last_activation tanh \
--lowpassmask \
--mask_steps ${mask_steps} \
--mask_epoch ${mask_epoch} \
--fourier \
--imgsize ${img_size} \
--lowpass \
--preprocessing_output_channels 2 \
--skip_read_pose \
--lmdb_path ${lmdb_path} \
--float16 \
--reduce_input \
--start_resolution 100 \
--sym \
--encoder_hidden_dim 256 \
--sym_factor 8 \
--rotation6d \
--world_size ${n_gpu} \
--render_number 1

注意:在运行时,显存占用逐步提升,可能会导致溢出。

测试输出的开源数据集 R10028 的蛋白质结构 (rec_800.mrc),如下:

Structure

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com