当前位置: 首页 > article >正文

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.3

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

conda 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/bash

set -xe
# PROJECT_DIR=$(cd "$(dirname $0)" && pwd)/..
source activate cryoem-opt

export 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}" ]; then
  mkdir -p "results/${Date}"
fi

export 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 epoch

save_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


http://www.kler.cn/news/361222.html

相关文章:

  • CMakeLists.txt 编写规则
  • 1971. 寻找图中是否存在路径
  • centos 安装达梦数据库
  • Prometheus 抓取 nginx 访问日志的指标
  • Counter()函数统计元素出现频率
  • LeetCode 精选 75 回顾
  • Redis 哨兵与集群:高可用与可扩展的解决方案
  • 2.3 朴素贝叶斯(基础分类)
  • C语言数据结构之双向链表(LIST)的实现
  • 独立构件风格
  • 二分图染色法
  • 帝国CMS – AutoTitlePic 自动生成文章标题图片插件
  • Centos7 安装 Openssl 和 Nginx
  • 微分方程(Blanchard Differential Equations 4th)中文版Exercise 1.4
  • postgresql14主从同步流复制搭建
  • 跨域问题和前端攻击
  • 【开源免费】基于SpringBoot+Vue.JS母婴商城系统 (JAVA毕业设计)
  • 【Flutter】基础组件:Container
  • 逐行讲解大模型生成解码超参数源码(temperature、top-k、top-p等)
  • 【Flutter】配置:远程开发
  • 循环移位的学习
  • 【部署篇】rabbitmq-01介绍
  • FPGA 小鸟避障游戏
  • 磁编码器的工作原理和特点
  • 练习题(动态规划)
  • curl支持ssl报错:SSL certificate problem: unable to get local issuer certificate