cpn tools查看运行时间_Rosetta基础2: 运行Rosetta的程序的基本步骤

作者: 吴炜坤

导读:

使用Commandline界面来运行Rosetta程序是Rosetta应用的最主要的形式,使用Commandline可以非常方便地在linux或超算集群系统上进行Rosetta的运算。本文我们将进一步带领大家学习如何去运行Rosetta以及需要准备些什么。

1. 我如何在Linux系统下找到Rosetta应用?

在Rosetta整个框架内,每个经过测试的Protocol都会被整合成独立的应用(app),这些app跟我们手机上的应用是一样的,需要哪个就用哪个,每个app都具有独立的功能。大部分的app的二进制文件位于$ROSETTA/main/source/bin/这个文件夹里面。值得注意的是,app的命名与编译环境和方式有关系,app的通用命名规则是app.[mpi].system+complier+version的形式。

比如我在Mac系统下使用clang来编译,使用的并行版本。那么app的命名就是relax.mpi.macosclangrelease. relax是app的名字,mpi代表并行版本,macos是系统名,clang是编译Rosetta时使用的编译器类型,release代表稳定发行版本的意思。如此类推,如果我在CentOS7下使用gcc编译,使用的串行版本,那么,app的命名就是relax.linuxgccrelease。

如果你是根据我的安装教程来配置Rosetta的话,可以通过以下命令来查询app的具体名称:

ls $ROSETTA/main/source/bin/

运行结果:

2b100133c8d26cde1fe983b9eedde07b.png

所列出的就是你所有的Rosetta app名称。

2. 准备输入文件

Rosetta的输入文件形式比较多样,一般以PDB文件作为输入。除此以外,不同的app要求的输入文件可能并不一样。比如在结构预测时需要定义Fragment文件、膜蛋白设计中需要使用Span文件,在Loop建模中需要定义Loop文件等。更多的输入文件类型详见: List of file types in Rosetta

Rosetta以”什么都能读“著称,就算你给一个缺失侧链或含有底物小分子复合物的PDB结构,Rosetta都能自动进行预处理,比如出去水分子,删除不识别的残基等。但一般在读入晶体PDB数据到Rosetta时,尽量需要先带着约束进行一下Relax处理。

此处可以使用Rosetta自带的脚本进行PDB文件的预处理:

  1. 当结构中没有底物小分子时:
python $ROSETTA/tools/protein_tools/scripts/clean_pdb.py <pdb> <chain id>
  1. 当处理带小分子的结构时:
python clean_pdb_keep_ligand.py <pdb> -ignorechain

3. 执行Rosetta app程序

此处以Relax程序作为实例。

Rosetta不是exe应用,并不能像在windows系统下,双击后打开界面,然后用鼠标操作,我们所有操作必须通过命令行来执行。一般来说,运行任何Rosetta应用的方法都是由Command、options、@flags以及SourceData四个部分组成。

此处总结Rosetta使用的万金油公式:

# running in shell
Command options @flags

注意: options可以统一放到flags文件中。

参数说明:

  • Command指的是我们运行的具体应用名(根据Q5中app的命名规则来查找);
  • options指的是每个app中支持的选项命令,每个不同的app都有通用或则专属的输入选项;
  • flag指的是记录着多个options的文件名称,我们一般需要使用@符号来让应用读取这个文件。用flags文件来存储options会使得输入命令更加简洁,也便于后面进行参数的修改等。
  • SourceData指的是Rosetta app必要的输入文件,比如准备的Fasta或是PDB文件。

对于options或flag的编写,我们一定要去阅读开发者给出的输入选项解释,我们可以很方便地在Rosetta APP文档或则在Options_list页面中找到对应的解释,以及默认设置的参数值。

以relax的app文档为例: https://www.rosettacommons.org/docs/latest/application_documentation/structure_prediction/relax

b1dd933584cebb61b06e1de3942d9a80.png

注意只有在弄清楚选项的作用时,我们才需要将其写入flag文件中,否则其余参数均按默认设置,胡乱设置参数,可能会对结果造成很大影响。

举个例子具体说明: 我现在使用Relax app对某个晶体结构进行带约束结构优化和能量最小化。首先需要打开终端或则命令行工具,并进入教程(或自己准备好输入文件)所在文件夹:

# 首先进入工作目录,以Rosetta demo教程为例:
cd $ROSETTA/main/demos/tutorials/Relax_Tutorial

然后在终端或命令行中输入以下命令:

# 运行relax app
relax.mpi.macosclangrelease -s 1ubq.pdb -relax:constrain_relax_to_start_coords -relax:coord_constrain_sidechains -relax:ramp_constraints false -ex1
-ex2 -use_input_sc -flip_HNQ -no_optH false @general_relax_flags

此处relax.mpi.macosclangrelease就是万金油公式中的Command,-s是Command的一个option, -s代表输入的蛋白质结构文件选项,后面的1ubq.pdb就是pdb的文件(SourceData)名,添加这个选项就是告诉Rosetta Relax程序我的结构文件名称是什么。general_relax_flags是更多运行参数的记录文件,通过@符号告诉Rosetta Relax程序,我设置的所有参数都存储在名为general_relax_flags的文件当中,请自动调用这些参数来计算。(注: 当然如果想更省事,就直接把-s 1ubq.pdb也放在general_relax_flags中也行。)

其中,约束参数使用的命令是-relax:constrain_relax_to_start_coords, -relax:coord_constrain_sidechains以及-relax:ramp_constraints false。含义是添加约束维持结构的初始坐标以及侧链重原子坐标,并且在Relax过程中不放松约束权重。一般而言这样就足够应对大部分的初始结构优化的需求了。

按下回车键,就能发现Rosetta relax app正在运行中, 所有输出在屏幕上的是Rosetta Tracer的记录,也就是Rosetta程序运行的日志,可以通过shell的重定向功能来输出到特定的文件(体积比较大)。

681a6458a2ffd935b5ba1a09a1417586.png

如果需要进一步控制realx app的行为,我们就需要修改general_relax_flags文件中的参数选项数值,此处做一些简单的介绍:

  • -nstruct 代表进行几次relax计算
  • -relax:default_repeats 代表relax过程中,算法进行多少次退火模拟
  • -out:path:pdb 代表在哪个文件夹中输出结果文件(pdb格式)
  • -out:path:score 代表在哪个文件夹中输出打分结果文件
# 以Demo为general_relax_flags文件例,其中包括以下内容:
-nstruct 2
-relax:default_repeats 5
-out:path:pdb ./tutorial_output
-out:path:score ./expected_output

(其实这些细节可以先不了解)

4 分析和利用Rosetta Relax输出的结果

Rosetta Relax输出的结果为PDB结构文件以及Rosetta的打分文件,在实际使用过程中,一般会对输出的结构进行排名优选结构更加合理或则能量更低的蛋白质构象作为后续的输入。

先打开打分结构文件score.sc:

3856313505eb288332bfaaa6ee527d4e.png

其中每一列代表一种Rosetta的打分项,比如第一列是蛋白质的总能,可以根据此进行排名(不同的应用筛选方法可能会不一致,根据实际而定)。其余比如fa_atr代表范德华力总和,fa_elec代表静电相互作用能量的总和等。具体打分项含义可查看Energy Terms In Rosetta

同时这些打分不仅记录在打分文件中,PDB文件中也是被记录了打分的细节,我们可以使用文编编辑器打开输出的PDB文件1ubq_0001.pdb1ubq_0002.pdb查看每一项的细节也是可以的。

6de97f5533037ea39ed66f6211920aed.png

题外话:

Rosetta的结果分析是一个非常复杂的话题,这关乎到你所采用的计算方法、打分函数以及人类直觉。原则上我们应该先首先参考原文献作者对结果的分析方法,因为没有人比开发者更懂这个程序以及参数的优化。

其次,Rosetta大多采用的是蒙卡退火和能量最小化的思路来寻找局部能量极小值,因此我们应该提供足够的计算资源来保证采样充分,不可以对小规模的采样结果就轻易下结论,甚至我们需要对结果进一步的进行聚类分析、结构微调,并从中提取有价值的信息。

再次,我们应该谨慎地对待Rosetta的打分输出结果,Rosetta的打分并不等于实际的能量值,并且很有可能存在"假阳性"值,我们需要仔细对模型、计算参数进行检查,多选几个模型总是好的。

最后,在实验上尽可能多的验证我们所作出的预测结果。

参考阅读1: 分析Rosetta结果

参考阅读2: Rosetta打分

参考:

  1. https://www.rosettacommons.org/docs/latest/application_documentation/structure_prediction/relax
  2. https://www.rosettacommons.org/docs/latest/rosetta_basics/preparation/preparing-structures#how-do-i-prepare-structures
  3. https://www.rosettacommons.org/docs/latest/rosetta_basics/options/options-overview
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值