该文档翻译自Rosetta官网的教程性文档 Rosetta Tutorials, Demos, and Protocol Captures,原文链接:https://www.rosettacommons.org/demos/latest/Home 。“😇”内的内容为译者添加。
Contents
- Tutorials
- 1. How To Read These Tutorials
- 2. Installing and Building Rosetta
- 3. Working With Rosetta (Required Software)
- 4. Controlling Input and Output
- 4.1. Controlling Input
- 4.2. Controlling Output
- 4.2.1. Common Structure Output Files
- 4.2.2. Score File Formats
- 4.2.3.- 4.2.4. Adding Prefixes and Suffixes to the Output Files & Setting Output Paths
- 4.2.5. Forcing and Supressing Output of Files
- 4.2.6. Adjusting Detail Level in Logs
- 4.2.7. Replicating Output in Rosetta Protocols
- 4.2.8. Near-realtime Visualization in PyMOL
- 4.2.9. Overwriting Previously Generated Output
- 4.3. List of Other Options
- 5. Core Rosetta Concepts
Tutorials
该部分是一个介绍性教程,旨在初步介绍 Rosetta 的概念和常见功能。有关 Rosetta 使用的其他示例和信息,请参阅 Demos 或 Rosetta Document 。
教程的完整输入文件位于Rosetta发行版的demo/tutorials/
目录中。
1. How To Read These Tutorials
KEYWORDS: CORE_CONCEPTS GENERAL
Written by Frank Teets Last Modified Jun 21 2016
这一系列的教程是为了让一个刚接触 Rosetta 的用户对其基本机制有一个初步的了解,从而。除了入门教程中介绍的基本协议之外,Rosetta 中还有更多进阶的协议,其中很多都有演示(见 Demo 部分)。
Before Running Any of the Other Tutorials
要运行这些教程,您应该先安装并编译 Rosetta。如果还没有安装,Installation and Building 教程应该能协助您完成整个过程。请检查<path_to_Rosetta_directory>/main/bin
目录是否包含适合您安装的可执行文件。
Rosetta 提供的教程和演示假定设置了以下环境变量:
env $ROSETTA3=the path to your Rosetta/source directory
env $ROSETTA3_DB=the path to your Rosetta/database directory
env $ROSETTA_TOOLS=the path to your Rosetta/tools directory
Do The Following for Each Tutorial
为了让这些教程的操作正确运行,你必须将当前的工作目录设置为教程希望你所在的目录;对于本教程,您的当前工作目录必须是${ROSETTA3}/demos/tutorials/How_To_Read_These_Tutorials
。
您还必须更改可执行文件的名称,以反映在您的系统上编译的版本。也就是说,从可执行文件和 tab-complete 的名称中删除最终的.(os)(compiler)(mode)
部分,更换成你所编译的版本的类似样式,然后在所有教程中使用该后缀。
如果你之前运行过一个教程,并希望重新运行它,请确保你删除了教程创建的任何输出(例如tutorial_output
文件夹的内容)。默认情况下,如果给定输出文件夹内容非空,Rosetta 将放弃运行,而不是覆盖现有的输出文件。因此输出目录必须是干净的,以便正确地执行教程。一种建议是复制教程目录并在其中运行示例,这样可以更容易地将教程目录重置为干净的状态。
2. Installing and Building Rosetta
😇见博客😇
3. Working With Rosetta (Required Software)
为了良好的运行 Rosetta,我和你还需要一系列辅助软件:
- 能够输出纯文本文件的文本编辑器。对于命令行工具,大多数人使用Emacs、Vim、Nano或类似的工具。对于基于gui的工具,Sublime Text 和 TextMate 在 Mac 上非常好用,Gedit 也包含在 Ubuntu Linux 中。请注意,像 Microsoft word 和 Libre/Open Office 这样的文字处理程序并不令人满意,因为它们引入的额外格式会让 Rosetta 感到困惑。
- 分子可视化工具。Rosetta 不包含一种实际可视化它所创建的输出文件的工具;需要使用 PyMOL 或 Chimera 等工具来检查输出的PDB文件。Rosetta 包含一个 PyMOLObserver,用于直接查看 PyMOL 中的输出,在这里可以找到设置 PyMOLObserver 的说明。
- 一个终端。Unix 和 Apple 用户默认安装了合适的终端。试图在 Mac 或 Unix 机器上远程运行 Rosetta 的 Windows 用户将需要像 PuTTY 这样的工具来提供必要的接口。
您最好也熟悉命令行界面的基本知识,一些特别有用的命令:
ls foo # displays a list of files in the directory foo
cd foo # moves the current working directory to the directory foo
mv foo bar # moves all of foo into bar if bar is a directory or into a file called bar if not
cp foo bar # moves all of foo into bar if bar is a directory or into a file called bar if not
ln -s <path_to_bar> foo # establishes a link called a symbolic link or symlink from foo to bar
top # lists the currently running processes, together with their process IDs. This is useful for how much computational resource your pro
4. Controlling Input and Output
KEYWORDS: CORE_CONCEPTS GENERAL UTILITIES
Tutorial by Shourya S. Roy Burman (ssrb@jhu.edu). Edited by Parisa Hosseinzadeh (parisah@uw.edu).
Created 21 June 2016
有多种方法可以控制 Rosetta protocols 如何读取输入😇原文的 nput 是不是打错了? 😇并产生输出。借助本教程,你应该学会:
- Rosetta 支持哪些输入/输出格式 ············ 😇 4.1.1. / 4.2.1.
- 如何处理经常导致罗塞塔崩溃的奇怪残基 ············ 😇 4.1.2.
- 如何最好地准备一个输入结构 ············ 😇 4.1.3.
- 如何将输出结构与已知结构进行比较 ············ 😇 4.1.6.
- 如何改变 Rosetta 的输入和输出路径 ············ 😇 4.1.4.
- 如何确保你得到一个一致的运行轨迹,尽管是一个Monte Carlo protocol ············ 😇 4.2.7.
- 如何在 PyMOL 中将结构变化可视化 ············ 😇 4.2.8.
- 如何覆盖现有的输出 ············ 😇 4.2.9.
注意:该教程将涵盖许多可执行文件,它们的功能将不会被详细解释。请参考教程中相应的章节来正确理解这个特定程序的功能。
这些演示位于<path_to_Rosetta_directory>/demos/tutorials/input_and_output
。本教程中列出的所有演示命令都应该在这个目录下执行。这里所有的演示都使用linuxgccrelease
二进制文件。根据您的操作系统和编译器,您可能需要将其更改为相应的内容。
4.1. Controlling Input
4.1.1. Common Stucture Input Files
您可以向 Rosetta 提供各种保存生物分子结构坐标的输入文件。
4.1.1.1 PDB File
最常见的输入文件格式是PDB格式。PDB格式的详细说明可以在 WorldWide Protein Data Bank 网站上找到。涉及 Rosetta 的行从ATOM
,HETATM
和TER
开始。
...
ATOM 1477 3HD2 LEU A 94 10.910 -5.038 7.227 1.00 0.00 H
TER
HETATM 1479 O HOH A 107 10.027 -4.206 14.093 1.00 0.00 O
...
在上面的例子中,Rosetta 识别到ATOM
记录了A链中坐标为( 10.910, -5.038, 7.227 )的亮氨酸-94的一个 Hδ 原子,其占用率 (occupancy) 为 1,温度因子 (temperature factor) 为 0。Rosetta 将忽略第二列的原子编号 (1477) 和最后一列的元素符号 (H)。TER
记录表示链断裂。同样,HETATM
记录与A链相关的水分子的氧原子,其坐标( 10.027, -4.206, 14.093 ),占用率为 1,温度因子为 0。Rosetta 也忽略了这条记录中的原子编号和元素符号。Rosetta 存储温度因子,但假定所有非零的占用率都为1。同时,需要注意:如果残基具有多种构象,Rosetta 只加载第一构象。
要导入一个PDB,请使用in:file:s
选项。例如,下面可以用来计算一个精化的 PDBID 1QYS 的能量(calculate the energy 操作,😇由score_jd2
程序完成,将在后续教程中详细讲解😇)。(输入 PDB 位于input_files
文件夹中。在所有教程的任何地方,$ROSETTA3
意味着path-to-Rosetta/main/source
):
$ROSETTA3/bin/score_jd2.default.linuxgccrelease -in:file:s input_files/1qys.pdb
运行该命令应该会产生一个名为score.sc
的文件,内为 1QYS 的能量得分。注意:进行下一步之前,请删除键入rm score.sc
删除该文件;否则,后续计算的结构的能量分数将被附加到这个文件中。
4.1.1.2 List of PDBs
假设你想把多个输入结构传递给一个可执行文件,使用:file:l
中的选项。例如,您想计算两个PDB 1QYS 和 1UBQ 的能量得分,我们可以生成一个名为pdblist
的 PDB 列表,它每行包含一个PDB的路径(用空格分隔PDB,但不能用逗号或分号分隔),像这样:
input_files/1qys.pdb
input_files/1ubq.pdb
运行下述指令:
$ROSETTA3/bin/score_jd2.default.linuxgccrelease -in:file:l input_files/pdblist
同样,运行该命令应该会产生一个名为score.sc
的文件,进行下一步之前,请删除键入rm score.sc
删除该文件;否则,后续计算的结构的能量分数将被附加到这个文件中。
4.1.1.3 Silent File
Silent File 是特定于 Rosetta 的紧凑格式文件,它存储来自多个结构的信息。当运行带有大量输出结构的模拟时,它特别有用;而对于其他格式,在这种情况下,许多文件系统在运行批处理操作时会遇到问题。许多Rosetta 模拟都可以生成 Silent File。一个二进制 Silent File 的例子可以在<path_to_Rosetta_directory>/demos/tutorials/input_and_output/input_files/1qys_10.o
处找到。该例子前几行表示有关链的序列、能量和相对旋转/平移的信息。然而,它的内容不是人类可读的。还有另一种静默文件格式称为蛋白质静默结构文件,它是人类可读的,但 Rosetta 有时无法以这种格式输出,因此,本教程中不进行讨论。详情可以在这里找到。
使用静默文件作为输入需要使用in:file:silent
选项(in:file:silent
也可以用来输入一个静默文件列表):
$ROSETTA3/bin/score_jd2.default.linuxgccrelease -in:file:silent input_files/1qys_10.o
同样,运行该命令应该会产生一个名为score.sc
的文件,进行下一步之前,请删除键入rm score.sc
删除该文件;否则,后续计算的结构的能量分数将被附加到这个文件中。
4.1.2. Dealing with Odd Residues and Water Molecules
4.1.2.1 General Condition
大多数 Rosetta protocols 期望他们正在研究的结构具有一系列特定的属性,例如,所有重原子都应该存在,所有残基的名称都应该可识别等等。有时 Rosetta 可以猜测添加哪些原子。在这个例子中,我们获取 PDB 1QYS 的评分:
$ROSETTA3/bin/score_jd2.default.linuxgccrelease -in:file:s input_files/from_rcsb/1qys.pdb
在log
文件中,你可以看到:
...
core.io.pose_from_sfr.PoseFromSFRBuilder: Reading MSE as MET!
...
core.pack.pack_missing_sidechains: packing residue number 13 because of missing atom number 6 atom name CG
...
第一行表示它将残基MSE,即硒代蛋氨酸转化为MET(常规蛋氨酸)。第二行告诉你,Rosetta 发现13号残基缺少Cγ原子,并为13号残基构建了侧链。
4.1.2.2 Unrecognized Residues
直接从 Protein Data Bank 下载的 PDB 未必全部适用于一般的 Rosetta。这里有一个例子,我们试图给 PDB 3TDM 评分。运行:
$ROSETTA3/bin/score_jd2.default.linuxgccrelease -in:file:s input_files/from_rcsb/3tdm.pdb
程序会退出并报错:
ERROR: Unrecognized residue: PO4
这个 PDB 含有一个磷酸盐离子,如果没有额外选项,Rosetta 无法处理。要对这个 PDB 进行评分,我们将添加一个选项-ignore_unrecognized_res
,它将忽略 PDB 中的磷酸盐。
$ROSETTA3/bin/score_jd2.default.linuxgccrelease -in:file:s input_files/from_rcsb/3tdm.pdb -ignore_unrecognized_res
现在该 PDB 将被评分,评分将显示在 score.sc
中。进行下一步之前,请删除键入rm score.sc
删除该文件;否则,后续计算的结构的能量分数将被附加到这个文件中。需要注意的是:ignore_unrecognized_res
选项也会忽略结构中的水分子。这可能会改变你的结构的能量分数。
4.1.2.3 Zero Occupancy
占有率 Occupancy 表示观察到特定构象的情况的比例。虽然大多数原子的占位率为1,但如果某个残基具有多种构象,其特定构象的占位率将低于1。占用率为0表示原子从未在晶体中观察到(但估计存在于该位置)。Rosetta 会忽略这些原子;如果它是一个非骨架重原子,它可能会为你重新构建侧链;如果它是像 N 或 CA 这样的主链重原子,它将删除整个残基。
我们已经修改了1QYS的占用率并得到了一个新文件<path_to_Rosetta_directory>/demos/tutorials/input_and_output/input_files/1qys_zero_occ.pdb
,它的前几个原子的占有率被修改成了0:
ATOM 1 N ASP A 3 -4.524 18.589 17.199 0.00 0.00 N
ATOM 2 CA ASP A 3 -3.055 18.336 17.160 0.00 0.00 C
...
运行:
$ROSETTA3/bin/score_jd2.default.linuxgccrelease -in:file:s input_files/1qys_zero_occ.pdb
在log
文件中会有:
...
core.io.pose_from_sfr.PoseFromSFRBuilder: PDB reader is ignoring atom N in residue 3 A. Pass flag -ignore_zero_occupancy false to change this behavior
core.io.pose_from_sfr.PoseFromSFRBuilder: PDB reader is ignoring atom CA in residue 3 A. Pass flag -ignore_zero_occupancy false to change this behavior
...
core.io.pose_from_sfr.PoseFromSFRBuilder: [ WARNING ] skipping pdb residue b/c it's missing too many mainchain atoms: 3 A ASP ASP:NtermProteinFull
...
还要注意,score.sc
中的分数比前几次运行高,这是因为 Rosetta 删除了残基3,因此失去了残基的大约 -3 REU 的分数。同样的,进行下一步之前,请删除键入rm score.sc
删除该文件;否则,后续计算的结构的能量分数将被附加到这个文件中。
有几个 Rosetta 应用程序,它们要求比较的东西之间具有相同的序列长度,比如 docking_protocol
,如果占用原子为0,它甚至可能在没有报错的情况下崩溃。要解决这个问题,我们需要使用一个选项类-ignore_zero_occupancy
,该选项类在默认情况下被设置为true
。添加选项-ignore_zero_occupancy false
将强制 Rosetta 读取占用率为0的原子,如下所示:
$ROSETTA3/bin/score_jd2.default.linuxgccrelease -in:file:s input_files/1qys_zero_occ.pdb -ignore_zero_occupancy false
现在你会发现score.sc
中的分数比前几次较为匹配。
4.1.3. Preparing a Structure by Refinement
为大多数 Rosetta protocols 准备输入结构的推荐方法是运行 refinement protocols(精化步骤),以在运行您想要的 Rosetta 应用程序之前放松您的结构。在这里可以找到关于弛豫的详细教程。虽然我们希望缓解输入结构中的冲突,并确保满足 Rosetta 的所有规范,但我们不希望我们的骨架移动太多。<path_to_Rosetta_directory>/demos/tutorials/input_and_output/flag_input_relax
中指定了一组通用选项:
-nstruct 2
-relax:constrain_relax_to_start_coords
-relax:ramp_constraints false
-ex1
-ex2
-use_input_sc
-flip_HNQ
-no_optH false
设置一个更高的nstruct
,例如nstruct 10
,将增加弛豫运行的次数,可能产生更好的结果,但也可能消耗大量的时间。我们将使用这个标志文件来弛豫直接从蛋白质数据库获得的 PDB 1QYS。这可能需要几分钟:
$ROSETTA3/bin/relax.default.linuxgccrelease -in:file:s input_files/from_rcsb/1qys.pdb @flag_input_relax
这将生成三个文件:1qys_0001.pdb
,1qys_0002.PDB
和score.sc
。使用评分文件中带有较低 total_score 的 PDB 作为 protocol 的输入 PDB。如果需要,你还可以添加ignore_unrecognized_res
和ignore_zero_occupany false
等选项。使用ignore_unrecognized_res
这样的标志可以移除您想要考虑的配体和水。但一定要确保您想要建模的所有残基都存在于要精化的PDB中。
4.1.4. Setting the Input Search Path
如果我们有多个输入文件,那么有一个路径位置来搜索输入可能会有帮助。例如,在同型二聚体 PDB 4EQ1 上运行弛豫步骤时,我们可能希望限制蛋白质-蛋白质界面的距离,防止它们移动(可以在这里找到关于约束的详细教程),为此,我们需要一个约束文件constrained_atompairs.CST
,其位于input_files/
中。当我们有多个这样的文件时,使用in:path
和指定的input_directory/
会方便我们操作,如下所示:
$ROSETTA3/bin/relax.default.linuxgccrelease -in:path input_files -in:file:s 4eq1.pdb -constraints:cst_fa_file constrained_atompairs.cst -ignore_unrecognized_res @flag_input_relax
运行大概需要超过15min,完成后将会产生4eq1_0001.pdb
,4eq1_0002.pdb
及score.sc
。
4.1.5. Changing Input Representation - Centroid or Full Atom
Rosetta 使用了两种结构表示方式——更细致的全原子和更粗粒化的质心表示。关于两者的区别和使用的详细教程可以在这里找到。为了确保 Rosetta 理解输入文件的表示形式,我们使用了in:file:centroid
或in:file:fullatom
选项。运行示例可以在上面链接的教程中找到。
4.1.6. Input a Known Structure For Comparison
通常,比较 Rosetta所得结构 与原生结构的相似程度是很有用的,尤其对于基准测试而言。它还可以用于检查 Rosetta 将输入 PDB 移动了多远。为此,我们使用in:file:native
选项。需要注意的是:原生PDB必须包含与 protocol 之后 Rosetta 输出结构相同数量、顺序的残基和相同的链顺序。如果两者的残基数目不同,Rosetta 将报错;如果残基编号不匹配,Rosetta 会错误计算。
在下面的示例中,我们将运行先前的评分应用程序,以检查改进后的 1QYS 与原始 PDB 1QYS 的差异:
$ROSETTA3/bin/score.default.linuxgccrelease -in:file:s input_files/1qys.pdb -in:file:native input_files/from_rcsb/1qys.pdb -ignore_waters
将产生一个打分文件default.sc
:
SCORE: score fa_atr fa_rep fa_sol fa_intra_rep fa_elec pro_close hbond_sr_bb hbond_lr_bb hbond_bb_sc hbond_sc dslf_fa13 rama omega fa_dun p_aa_pp yhh_planarity ref allatom_rms gdtmm gdtmm1_1 gdtmm2_2 gdtmm3_3 gdtmm4_3 gdtmm7_4 irms maxsub maxsub2.0 rms description
SCORE: -167.539 -414.834 48.380 225.004 1.040 -45.212 0.000 -25.491 -26.998 -2.986 -9.394 0.000 -4.905 4.211 109.662 -13.603 0.230 -12.643 1.050 1.000 1.000 1.000 1.000 1.000 1.000 0.000 92.000 92.000 0.135 1qys_0001
在这个打分文件中,列allatom_rms
表示到原结构的全原子 RMSD,这里是 1.050。这是因为Rosetta 压缩了侧链,以缓解冲突并在精化时优化了相互作用。rms
列代表到原结构 Cα 的 RMSD ,为0.135,表明 Rosetta 没有对骨架移动太多。此外还有一些其他的全局距离指标。需要注意的是:如果Rosetta发现有太多重原子丢失,它也会重建原生结构中残基的侧链,因此每次运行的 metrics 可能略有不同。
4.2. Controlling Output
4.2.1. Common Structure Output Files
4.2.1.1 PDBs
这是 Rosetta 的默认输出格式。对于默认情况下不输出结构的应用程序(如评分应用程序),选项out:pdb
强制 Rosetta 输出 PDB。
4.2.1.2 Silent File
要将输出文件格式改为静默文件,我们将使用标签out:file:silent <filename>
。由于静默文件能够在一个文件中存储多个结构,因此我们只需要指定一个输出结构文件的名称。我们将运行上面的结构准备示例来生成一个二进制的静默结构文件:
$ROSETTA3/bin/relax.default.linuxgccrelease -in:file:s input_files/from_rcsb/1qys.pdb -out:file:silent output_files/1qys.o @flag_input_relax
几分钟后将在output_files/
中产生一个 silent file 1qys.o
4.2.1.3 Extracting PDBs from Silent Files
为了可视化和分析,您可能希望从静默文件中提取一些结构作为 PDB。例如,<path_to_Rosetta_directory>/demos/tutorials/input_and_output/input_files/1qys.o
包含10个结构,假设我们想提取最优的3个结构为 PDB,我们首先需要将分数存储在一个单独的文件中:
grep '^SCORE' input_files/1qys_10.o > output_files/1qys_silent_scores.sc
这将会产生一个类似于<path_to_Rosetta_directory>/demos/tutorials/input_and_output/output_files/expected_output/1qys_silent_scores.sc
的文件,其内容为:
SCORE: score fa_atr fa_rep fa_sol fa_intra_rep fa_elec pro_close hbond_sr_bb hbond_lr_bb hbond_bb_sc hbond_sc dslf_fa13 coordinate_constraint rama omega fa_dun p_aa_pp yhh_planarity ref time description
SCORE: -145.658 -416.906 48.038 235.048 1.023 -47.764 0.000 -25.252 -27.431 -4.739 -10.754 0.000 19.154 -4.561 4.169 110.657 -13.935 0.237 -12.643 121.000 1qys_0001
...
SCORE: -146.560 -421.948 49.483 239.471 1.031 -49.106 0.000 -25.940 -27.309 -4.230 -13.052 0.000 20.385 -5.436 4.646 110.952 -13.316 0.453 -12.643 115.000 1qys_0010
最后一列description
为用于提取文件的标签,使用下列语句来按score
排序:
sort -k1,1 -k2n output_files/1qys_silent_scores.sc
会得到:
SCORE: -148.368 -417.523 46.620 235.293 1.049 -47.662 0.000 -25.448 -26.996 -3.816 -12.297 0.000 20.283 -4.757 5.036 107.503 -13.480 0.470 -12.643 111.000 1qys_0007
SCORE: -148.283 -423.099 47.967 241.560 1.046 -48.530 0.000 -25.397 -26.949 -4.226 -13.621 0.000 19.796 -4.907 5.043 108.665 -13.450 0.461 -12.643 110.000 1qys_0005
SCORE: -147.763 -416.130 46.386 235.877 1.023 -47.914 0.000 -25.787 -27.212 -3.864 -12.092 0.000 20.623 -4.800 4.678 107.706 -13.821 0.205 -12.643 118.000 1qys_0009
...
可以看到1qys_0007
,1qys_0005
和 1qys_0009
是得分最低的三个结构,这也是我们想要提取的。当然,您可以自由地对您想要的任何度量进行排序。随后准备这些标记的列表文件1qys_top3.tag
,其内容如下所示:
1qys_0007
1qys_0005
1qys_0009
我们将使用:file:tagfile
中的选项将这个标记文件输入可执行程序extract_pdbs
,以生成所需的结果:
$ROSETTA3/bin/extract_pdbs.default.linuxgccrelease -in:file:silent input_files/1qys_10.o -in:file:tagfile input_files/1qys_top3.tag
现在当前文件夹下就会出现1qys_0007.pdb
,1qys_0005.pdb
和1qys_0009.pdb
。
4.2.1.4 Compressed Files
为了节省生成大量结构而占用的空间,Rosetta 可以自动对输出文件进行 gzip 压缩。添加选项-out:pdb_gz
替代-out:pdb
来生成压缩的 PDB。使用标签out:file:silent <filename>
生成名为<filename>.gz
的压缩版静默文件。
4.2.2. Score File Formats
Rosetta支持两种格式的评分文件:文本(默认)和 json。要切换到 json 格式,我们可以使用这个选项-out:file:scorefile_format json
:
$ROSETTA3/bin/score_jd2.default.linuxgccrelease -in:file:s input_files/1qys.pdb -out:file:scorefile_format json
输出的 json 格式score.sc
内容如下:
{"decoy":"1qys_0001","dslf_fa13":0.0,"fa_atr":-423.6380475930665,"fa_dun":109.6621482859311,"fa_elec":-46.14556889816026,"fa_intra_rep":1.039804508830972,"fa_rep":49.11676788120327,"fa_sol":241.3087947011393,"hbond_bb_sc":-3.934076636117379,"hbond_lr_bb":-26.99785324074625,"hbond_sc":-11.23440113070099,"hbond_sr_bb":-25.49074432555559,"linear_chainbreak":0.0,"omega":4.210525847130253,"overlap_chainbreak":0.0,"p_aa_pp":-13.60293063430587,"pro_close":0.0,"rama":-4.90454720392658,"ref":-12.642703,"score":-163.0225982666016,"time":1.0,"total_score":-163.0225937016587,"yhh_planarity":0.2302377366858926}
4.2.3.- 4.2.4. Adding Prefixes and Suffixes to the Output Files & Setting Output Paths
😇这部分有点啰嗦,所以进行了适当的删减😇
默认情况下,Rosetta 使用输入结构的文件名来生成输出结构,方法是在输出结构后面附加像 _0001 和 _0002 这样的数字后缀。如果您想在输出结构中添加前缀或后缀,请使用-out:prefix <string>
或者-out:suffix <string>
。在本例中,我们将在输出中添加字符串 pre_
作为前缀,字符串_suf
作为后缀,文件将会被命名为pre_1qys_suf_0001.pdb
及pre_score_suf.sc
:
$ROSETTA3/bin/score_jd2.default.linuxgccrelease -in:file:s input_files/1qys.pdb -out:pdb -out:prefix pre_ -out:suffix _suf
使用-out:path:all
选项改变输出目录,下面的实例将输出目录切换到output_files/
:
$ROSETTA3/bin/score_jd2.default.linuxgccrelease -in:file:s input_files/1qys.pdb -out:pdb -out:path:all output_files
你也可以使用-out:path:score
和-out:path:pdb
将结构与打分文件输出到不同的文件夹中。
4.2.5. Forcing and Supressing Output of Files
在关于输出PDB文件的一节中,我们已经看到了如何通过使用标记-out:pdb
强制 score_jd2
程序输出它实际上正在评分的PDB文件。如果你想抑制输出文件,我们可以使用标志-out:nooutput
。如果您只是想查看日志,但不想检查输出,这一点尤其重要。该标志的另一个潜在用途是在某些 protocols 中直接写入非结构、非分数文件。
4.2.5.1 Only Output a Structure File
如果您特别想要屏蔽特定类型的文件,比如打分文件,您可以将其定向到一个名为/dev/null
的UNIX设备。在下面的示例中,我们强制score_jd2
输出一个PDB文件,但是不输出任何打分文件:
$ROSETTA3/bin/score_jd2.default.linuxgccrelease -in:file:s input_files/1qys.pdb -out:pdb -out:path:score /dev/null
运行结束后,当前文件夹下应当只有1qys_0001.pdb
,而没有score.sc
。
4.2.5.2 Only Output a Score File
使用-out:file:score_only <score_file_name>
以仅输出打分文件:
$ROSETTA3/bin/relax.default.linuxgccrelease -in:file:s input_files/1qys.pdb -out:file:score_only output_files/score.sc @flag_input_relax
4.2.6. Adjusting Detail Level in Logs
当您运行 Rosetta 时,日志显示了大量的信息。有时,您可能希望对过程有更多了解,例如,当您遇到错误或意外结果时;有时,您可能想减少日志中的细节。Rosetta 允许您通过选项-out:level <integer>
来调整日志中的详细级别,以下是<integer>
所对应的详细程度:
Integer | Level |
---|---|
0 | Fatal |
100 | Error |
200 | Warning |
300 | Info |
400 | Debug |
500 | Trace |
默认情况下,Rosetta 使用 300。在本教程中,我们将提高级别以包括对调试score_jd2
有用的信息:
$ROSETTA3/bin/score_jd2.default.linuxgccrelease -in:file:s input_files/1qys.pdb -out:level 400
下面是你应该看到的日志文件的一个片段:
...
core.chemical: New atom type: aroC C
...
core.chemical.ElementSet: New element: Pt
...
core.chemical: Reading patch file: /home/ssrb/Rosetta/main/database/chemical/residue_type_sets/fa_standard/patches/CtermProteinFull.txt
...
core.pose.util: new fold tree FOLD_TREE EDGE 1 92 -1 EDGE 1 93 1 EDGE 1 94 2 EDGE 1 95 3 EDGE 1 96 4 EDGE 1 97 5 EDGE 1 98 6 EDGE 1 99 7
...
现在你会看到一堆之前没有出现的信息。在上面的代码片段中,我们可以看到,Rosetta 识别的残基类型和元素类型(与芳香环和铂相关的C)、可应用的所有补丁(使残基成为C末端的补丁)和修改后的折叠树(fold tree)。
4.2.7. Replicating Output in Rosetta Protocols
大多数 Rosetta protocols 使用蒙特卡罗抽样。虽然这种随机抽样方法加快了寻找能量最小值的速度,但它在每次运行中都会产生不同的轨迹。Rosetta 使用系统的/dev/urandom
设备提供的随机数种子来生成它用于应用程序的伪随机数。这个种子可以是 c++ int 数据类型,可以容纳的任何整数,建议的范围是 ±seed106 - 109。在每次运行开始时的日志中可以发现:
...
core.init: 'RNG device' seed mode, using '/dev/urandom', seed=340573764 seed_offset=0 real_seed=340573764
...
该运行的随机种子为 340573764。在其他条件相同的情况下,在具有相同种子的相同系统上运行的 Rosetta protocols 的每次运行都应该具有相同的轨迹。如果您想在以后复现一次运行,您应该存储该运行的种子,然后重复使用它。
在本例中,我们将使用的relax
程序,通过指定一个常量种子产生相同的输出。要做到这一点,我们需要标志-run:constant_seed
,以确保种子是常量。默认常量种子是 1111111,我们将使用-run:jran
选项将其更改为 12345678。当在相同的系统中运行时,每次运行以下命令都应该产生相同的结构集和打分文件:
$ROSETTA3/bin/relax.default.linuxgccrelease -in:file:s input_files/1qys.pdb -run:constant_seed -run:jran 12345678 @flag_input_relax
# log file
...
core.init: Constant seed mode, seed=12345678 seed_offset=0 real_seed=12345678
...
4.2.8. Near-realtime Visualization in PyMOL
在模拟过程中,可视化 Rosetta 如何修改生物分子是很有用的。你可以在分子可视化包 PyMOL 中这样做。要将 PyMOL Observer 附加到您的运行,您需要首先在 Rosetta 和 PyMOL 之间创建一个链接。打开 PyMOL,在 PyMOL 的命令行中运行:
run <path_to_Rosetta_directory>/main/source/src/python/bindings/PyMOLPyRosettaServer.py
PyMOL 中应当显示:
PyMOL <---> PyRosetta link started!
使用run:-show_simulation_in_pymol <time_in_seconds>
展示生物分子。默认情况下,Observer 每5秒捕获一次状态,我们可以根据需求进行更改。为了保存运行期间访问的状态的历史,我们将使用选项-keep_pymol_simulation_history
。这对于制作运动影像特别有用,但这确实会稍微减慢运行速度。在本例中,我们将使用 PyMOL 捕获本地 PDB 1QYS 的relax
运行,并通过每4.5秒捕获一个快照来记录relax
的过程:
$ROSETTA3/bin/relax.default.linuxgccrelease -in:file:s input_files/from_rcsb/1qys.pdb -show_simulation_in_pymol 4.5 -keep_pymol_simulation_history @flag_input_relax
你将观察到结构的不同部分正在经历微小运动。这就是弛豫(带约束)对结构的作用,直到它到达一个令人满意的结构。PyMOL 显示的状态表示 protocol 每 n 秒尝试的状态。它们在模拟过程中可能被接受,也可能不被接受。还有其他特定的选项,比如只有在结构的能量分数发生变化时才改变 PyMOL 状态的选项-update_pymol_on_energy_changes_only
,或者只有构象发生变化时才改变状态的选项-update_pymol_on_conformation_changes_only
。
4.2.9. Overwriting Previously Generated Output
如果在相同的目录下有与模拟生成的输出结构文件命名相似的结构文件,将会有报错:
...
protocols.jd2.JobDistributor: no jobs were attempted, did you forget to pass -overwrite?
...
如果要覆盖文件,请使用选项-overwrite
,否则在再次运行之前将输出文件保存在其他位置。现在假设您在前一节中完成了弛豫模拟,然后重新运行相同的命令,您将看到上面的错误。现在我们将运行本质上相同的协议,但带上-overwrite
选项:
# without -overwrite
$ROSETTA3/bin/relax.default.linuxgccrelease -in:file:s input_files/from_rcsb/1qys.pdb @flag_input_relax
# with -overwrite
$ROSETTA3/bin/relax.default.linuxgccrelease -in:file:s input_files/from_rcsb/1qys.pdb -overwrite @flag_input_relax
您将看到有两个输出结构文件,1qys_0001.pdb
和1qys_0002.pdb
,但是它们是最近才编写的,您可以使用ls -l 1qys_000*.pdb
检查输出时间。但需要注意的是
:-overwrite
选项不会覆盖打分文件😇原文为 does overwrite,我怀疑他写错了😇,打分条目仍然会被追加到现有的分数文件中,所以评分文件必须在每次运行前手动移动或删除。
4.3. List of Other Options
所有其他选项可以在此查询。
5. Core Rosetta Concepts
KEYWORDS: CORE_CONCEPTS GENERAL
Author: Frank Teets(teetsf@gmail.com), Parisa Hosseinzadeh(parisah@uw.edu)
Rosetta Numbering
蛋白质结构中残基的 Rosetta 编号,有时称为姿态编号(Pose numbering),是不同于输入的 PDB 文件中的 PDB 残基编号的。对于第一个残基,Rosetta 编号总是从1开始,后续残基递增1,同时忽略链编号;这对残基鉴定有一定的意义。因此,当 Rosetta 读取或输出残基编号时,链编号的存在表示使用 PDB 编号,而链编号的缺失通常表示使用的是 Rosetta 编号。如果 Rosetta 警告 PDB 中不存在的残基,那么该 PDB 可能正在使用其他的编号方案。
Pose
Rosetta 对蛋白质结构的内部表征称为姿态(pose)。它包含结构中的原子和化学键,以及其他信息,例如 Rosetta 中坐标/笛卡尔坐标(FoldTree)相互转换、当前能量、应用于结构的约束和来自原始 PDB 的注释。特定的 protocols 可以添加更多的信息到姿态中。
Internal Coordinates
Rosetta 以笛卡尔坐标和内坐标两种形式存储结构,并处理两者之间的相互转换。这允许 protocols通过直接处理内坐标对扭转空间(torsion space)进行更有效的采样。这样做有两个意义:
- 在没有对另一个扭转角进行代偿性改变的情况下,对一个骨架扭转角的任何改变都会导致杠杆效应;即使它们被标记为不移动,down-tree 的残基也会在三维空间中移动。
- 默认情况下,Rosetta 不优化(或评分)键的长度和角度,要么保持输入几何形状,要么根据“理想”值构建它们。Rosetta 有专门优化和评分键连的 protocols,但必须被显式地调用以纠正不良的键连参数。
Monte Carlo Sampling
Rosetta是随机软件;考虑到庞大的采样空间,我们采样随机采样,而不是穷举的方式。因此,一个模拟必须运行多次,以产生一个称为诱饵(decoys)的结果群并进行统计分析。通常,输出结构的数量可以通过-nstruct
选项来控制。请参阅 Rosetta at Different Scales,了解不同任务的推荐输出结构数量,并参阅文档和演示,了解具体 protocols 的详细信息。
Rotamers
Rotameric isomers 或 rotamers 代表给定氨基酸侧链的位置;由氨基酸特性和侧链重原子的 Ꭓ 角组成。Rosetta 使用 Dunbrack 骨架依赖的 rotamer 库,该库来源于高质量的蛋白质晶体结构。😇下面这段话来自教程 9,译者认为有助于读者理解 rotamer 的概念: 假设我们有一个结构 (我们将其称为姿态),其具有固定的主结构。在结构的每一个位置,我们都有一个关于侧链的离散可能性的列表,我们称之为 rotamers,其中一个 rotamer 是一个特定残基类型侧链的特定构象。😇
Rosetta 没有对氨基酸 rotamer 集合内部和集合间的采样进行基本的区分;也就是说,封装(pack,😇对侧链的优化过程😇)和设计都是通过从库中选择侧链来进行的,而不是由用于对库进行采样的氨基酸来决定。
Limitations of Rosetta and things that can go wrong 😇
😇建议初学者跳过,用处不大;这一部分等到熟悉了 Rosetta 的使用后再看也无妨😇
Rosetta 是一个强大的工具,已被证明在许多应用程序中是成功的,包括许多教程、演示和发表的论文中描述的。然而,与大多数尖端科学软件一样,它也有其局限性。本教程的这一部分旨在让您了解 Rosetta 的一些局限性以及如何将它们的影响最小化。我们应该始终牢记编程格言“garbage in, garbage out” :Rosetta 输出的质量受到输入数据的谨慎程度,以及建模任务与所使用 protocols 所做假设的匹配程度的限制。此外,计算设计和建模应该被视为减少工作量的工具,而不是提供单一的、绝对“正确”解决方案。
Scoring and scoring-dependent biases
当前的 Rosetta 评分有一些已知的局限性(见下面的列表)。虽然这些并不重要,但它们偶尔会导致某些行为,从而影响最终输出的质量。
- 偏爱芳香烃(优于脂肪族或含硫(=MET));
- 氢键优于其它静电相互作用;
- 弱静电排斥项与上述项有关;
- 对溶剂化埋藏极性的弱罚分;
- 对静电相互作用的背景依赖性描述不佳;
- 偏好螺旋(可以从结构预测中观察到);
- pre-Pro / cis-Pro偏好描述不佳;
- 在某些氨基酸中错误的侧链旋转异构偏好(这有点依赖于应用程序,但对于 MET/ASP/ASN/TRP 可能较差)。
在本教程中的许多示例中,我们会根据最终分数对结果进行排序。但由于score函数中的上述限制,单纯按分数排序可能返回的不是最优的结构。经典例子有“全 ALA” 螺旋设计、设计具有许多芳香环或具有高电荷表面的结构。这是因为 Rosetta 试图通过添加上述偏好的相互作用来最大化最终分数,这在现实世界中是不可能或者对后期的实验分析是不理想的(高带电表面不利于晶体学分析;Ala 残基不能提供任何特殊的相互作用,尽管高度倾向于螺旋)。
你能做的:
最好的办法是意识到在 Rosetta 中评分函数的局限性,并且总是仔细检查你的结构。上面提到的一些偏好可以通过新增的氨基酸组成功能来控制。此外,不要仅仅根据最终分数,还要根据您设置的一些额外的过滤值来对您的结构排序。查看评分文件中的其他列,看看它们是否正常。有关评分函数的更多信息,请参阅评分教程。
Rosetta’s defaults
对于新用户来说,有一件事不是很明显,那就是一些 Rosetta 默认值不再被推荐,但仍然是默认值。你可以在演示和教程中发现一些选项文件被设置为 false
(例如no-OptH
),或者当您创建一个新的肽(例如使用PeptideStubMover
)时,Rosetta 对 omega
的默认值是 0,而实际值应该是 180。这些隐藏的默认值会极大地影响输出,而您却不知道哪里出了问题。另一个例子可以在折叠树教程中找到,您可以看到使用默认树如何导致不真实的输出。还有就是,约束分数在默认情况下是 OFF 的,因此如果您有约束,您需要打开它们。有些函数会自动完成这个操作,但不是全部。
你能做的:
Rosetta 开发人员正在不断更新设置,以使其更好地工作,但其中一些问题是不可避免的。再次强调,一定要检查输出结构,看看它是否有意义。化学键,角度和扭转看起来对吗?氨基酸在正确的 Ramachandran bin 中吗?如果您对某个任务不熟悉,请阅读演示和教程,检查它们设置了哪些选项,并阅读文档以获得关于每个选项的详细信息。
Fragments and Rosetta
Rosetta 在很大程度上依赖于来自实验结构的数据——无论是统计势能,还是通过 fragment picking 和 rotamer 库进行的采样。这意味着 Rosetta 的结构偏好于现有的实验结构中存在的结构基序。因此,如果您正在设计或建模一个从未或很少在 PDB 中观察到的拓扑或结构,那么您就面临着无法准确建模的风险。这也意味着在 PDB 中很少发现的分子,如非经典氨基酸,可能不会被恰当地取样或评分(见下文)。
你能做的:
对于这样的问题,可以使用无片段算法。
The curse of oversampling
要记住的一件事是“你得到了你想要的”。最后,Rosetta 会执行您要求它做的事情。例如,如果你运行一个严格优化界面能的蒙特卡罗算法,你可能会得到界面能非常好的设计,但疏水氨基酸的数量不合理,或侧链取向不合理。
你能做的:
尽量避免过度抽样,不要对其他评分项进行优化,以免损害实际评分。
Something old something new: noncanonicals
Rosetta 最初是为蛋白质设计的,其折叠预测和评分高度依赖于 PDB 片段。近年来,越来越多的新功能被添加到 Rosetta 中。现在它可以很好地处理结构中的核酸;在给定的参数文件、约束条件以及有时略微改变数据库下,也可以处理配体和金属;同样D-氨基酸也可以相对容易地使用了,并且许多非经典氨基酸及其 rotamer 库可以与主程序一起使用或根据要求提供;糖的处理和弛豫正在进行中。然而,在 Rosetta 的非常规使用中仍然面临许多挑战,特别是在评分和分析方面。β-氨基酸不能很好地评分,许多非经典氨基酸缺失,而且我们仍然缺乏一种为长度超过40个氨基酸且含有D氨基酸的结构进行评分的好方法。
你能做的:
许多研究人员正在努力提高 Rosetta 的能力,以处理和评分这些非经典。但是,如果您使用的是非典型的,则需要熟悉当前的限制和最新的进展。你可能需要从你的评分分析中移除非规范区域,或者使用其他方法来对你的结果进行排名。
Final points
Rosetta 在检测无意义的启动条件和一系列内部完整性检查方面的能力有限。它无法知道其结果对特定问题的适用性。您,最终用户,必须评估您的输入和 Rosetta 结果的科学价值,包括统计上的和实验上的。