Rosetta Tutorials 1-5 翻译 | 基础概念为主

该文档翻译自Rosetta官网的教程性文档 Rosetta Tutorials, Demos, and Protocol Captures,原文链接:https://www.rosettacommons.org/demos/latest/Home 。“😇”内的内容为译者添加。

Tutorials

该部分是一个介绍性教程,旨在初步介绍 Rosetta 的概念和常见功能。有关 Rosetta 使用的其他示例和信息,请参阅 DemosRosetta 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 的行从ATOMHETATMTER开始。

...
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.pdb1qys_0002.PDBscore.sc。使用评分文件中带有较低 total_score 的 PDB 作为 protocol 的输入 PDB。如果需要,你还可以添加ignore_unrecognized_resignore_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.pdb4eq1_0002.pdbscore.sc

4.1.5. Changing Input Representation - Centroid or Full Atom

Rosetta 使用了两种结构表示方式——更细致的全原子和更粗粒化的质心表示。关于两者的区别和使用的详细教程可以在这里找到。为了确保 Rosetta 理解输入文件的表示形式,我们使用了in:file:centroidin: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_00071qys_00051qys_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.pdb1qys_0005.pdb1qys_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.pdbpre_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>所对应的详细程度:

IntegerLevel
0Fatal
100Error
200Warning
300Info
400Debug
500Trace

默认情况下,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.pdb1qys_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)进行更有效的采样。这样做有两个意义:

  1. 在没有对另一个扭转角进行代偿性改变的情况下,对一个骨架扭转角的任何改变都会导致杠杆效应;即使它们被标记为不移动,down-tree 的残基也会在三维空间中移动。
  2. 默认情况下,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 结果的科学价值,包括统计上的和实验上的。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值