?
Rosetta是大分子模型设计软件,拥有310万行代码和许多最先进的应用程序。自1990年代中期以来,这个软件由RosettaCommons共同开发维护。RosettaCommons是一个来自60多个机构的学术社区,具有包括化学、生物学、生理学、物理学、工程学、数学和计算机科学在内的不同学科背景。
Rosetta早期的代码库是用Fortran编写的,后来由Objexx Engineering机翻成C++。2005年夏季发布为Rosetta++(也称为Rosetta2)。在接下来的两年中,发现自动翻译对于软件的持续发展是不可行的,因此雇用了一名软件工程师来将软件转变为面向对象的库,称为librosetta。首次创建面向对象层次结构的尝试被证明是笨重的,最终被放弃,但是提供了中心对象和其间关系的参考。下一个面向对象的代码库重写是由两个核心开发人员(Andrew Leaver-Fay,Kuhlman实验室的成员和Fred Hutchinson癌症研究中心的Phil Bradley)在2007年夏季启动的,该代码最初被称为miniRosetta,后来成为Rosetta3,在2009年初发布。MiniRosetta还纠正了Rosetta++的设计缺陷,它是一个整体应用软件,其中输入选项允许调用许多不同的Protocol。而在Rosetta3中,Protocl通常是具有自己名称的独立应用程序。目前容纳了超过200个应用程序。
Rosetta还支持两个脚本接口:RosettaScripts是基于XML的接口,允许从模块化构建块开发协议而无需进行额外的编译;PyRosetta允许使用Python开发协议并轻松集成第三方工具。这些不同的接口都根源于2007年的Rosetta3代码库,该代码库仍在使用、开发和维护中。
2011年,Fleishman等人创建RosettaScripts,这是一种基于XML的接口,用于在 Rosetta 框架中指定建模任务。它允许在不需要修改或重新编译底层 C++ 代码的情况下快速测试和部署复杂的协议,因为RosettaScripts中使用的大多数对象都在网上有文档记录。RosettaScripts还得益于XML Schema Definition (XSD)框架,可以在运行时识别XML脚本中的错误,提供详细的错误消息,并且现在已经集成到用户面向文档中。其目前支持蛋白质稳定、生成计算约束库以选择更高亲和力的结合蛋白、loop remodel、小分子对接、配体结合蛋白的设计以及 DNA 结合蛋白的重设计等功能。
<ROSETTASCRIPTS>
<SCOREFXNS>
</SCOREFXNS>
<RESIDUE_SELECTORS>
</RESIDUE_SELECTORS>
<FILTERS>
</FILTERS>
<SIMPLE_METRICS>
</SIMPLE_METRICS>
<TASKOPERATIONS>
</TASKOPERATIONS>
<MOVERS>
</MOVERS>
<PROTOCOLS>
</PROTOCOLS>
</ROSETTASCRIPTS>
RosettaScript是由一系列类XML的标签(Tag)组成的,可以递归地进行解析。XML的写作规则可以直接谷歌查询,这里不再赘述。每个Tag实例都包含两个映射关系:从字符串到字符串(例如选项),以及从字符串到Tag(子标签)。
一个RosettaScript包含五个Tag:MOVERS、FILTERS、SCOREFXNS、TASKOPERATIONS和PROTOCOLS。必须存在的Tag有MOVERS和PROTOCOLS。PROTOCOLS部分则定义了每次计算要执行的Movers和Filters的顺序。
用于修改结构,XML中的基本组成对象,单一的Mover可以在不同的步骤中使用多次。
示例:
<MOVERS>
<PackRotamersMover name=“repack1” scorefxn=“ref2015” />
</MOVERS>
解释:
参见:
用于评估结构,来判断输出结构是否合适。如果输出结果不好,可以提前停止运行。也可以用于计算蛋白质度量(metrics),但是建议使用Simple Metrics来进行计算。
示例:
<FILTERS>
<ScoreType name=“score_type_filter” scorefxn=“ref2015” score_type=“total_score” Threshold=“-500” />
<AverageDegree name=“avg_deg” threshold=“8” distance_threshold=“10” task_operations=“rtiv” />
</FILTERS>
解释:
Predefined Filters
参见:https://www.rosettacommons.org/docs/latest/scripting_documentation/RosettaScripts/Filters/Filters-RosettaScripts
用于评估结构能量,打分函数,可以自定义修改一些权重, 不同的动作可以使用不同的打分函数
示例:
<SCOREFXNS>
<ScoreFunction name=“ref2015” weights=“ref2015.wts” />
<ScoreFunction name=“ref2015_soft” weights=“ref2015_soft.wts”>
<Reweight scoretype=“atom_pair_constraint” weight=“1.0” /> </ScoreFunction>
</SCOREFXNS>
Predefined Scorefunctions
选择残基,指定侧链移动的方式,指定允许设计的残基。Rosetta中的离散构象采样功能都是使用快速的Metropolis-Monte Carlo模拟退火引擎实现的,称为packer。packer用于搜索低能量的侧链构象组合。
TaskOperations一般有三种类型:
示例:
<TASKOPERATIONS>
<ReadResfile name=“rrf” filename=“resfile” />
<RestrictToRepacking name=“rtrp” />
<RestrictResidueToRepacking name=“restrict_Y100” resnum=“100” />
</TASKOPERATIONS>
<PackRotamersMover name=“repack1” taskoperations=“rtrp” />
Predefined TaskOperations???
参见:
它们根据不同的属性指定不同的残基集合。并且由mover、filter和task operations在运行时自己指定选择的残基运行。
示例:
<RESIDUE_SELECTORs>
<Chain name=“chA” chains=“A”/>
</RESIDUE_SELECTORS>
<MOVERS>
<AwesomeScienceMover name=“solve” residue_selector=“chA” />
</MOVERS>
解释:
选择链A,命名为chA,并且在 solve这个mover中应用
Predefined RESIDUE_SELECTORS
参见: https://www.rosettacommons.org/docs/latest/scripting_documentation/RosettaScripts/ResidueSelectors/ResidueSelectors
? 用于计算蛋白质指标 ? 可以在Protocol的不同阶段运行,并将结果输出到得分文件中 ? 与 RunSimpleMetrics Mover 结合使用
示例:
<SIMPLE_METRICS>
<TotalEnergyMetric name=“total_energy” residue_selector=“L1” />
</SIMPLE_METRICS>
<MOVERS>
<RunSimpleMetrics name="run_metrics1" metrics="total_energy" prefix="m1_" />
</MOVERS>
解释:
计算整体能量命名为total_energy,选择子为L1,在run_metrics1这个mover中使用
Predefined SIMPLE_METRICS
参见:https://www.rosettacommons.org/docs/latest/scripting_documentation/RosettaScripts/SimpleMetrics/SimpleMetrics
PROTOCOLS是XML的顺序部分,实际上指定了XML如何运行。
通常,PROTOCOLS部分是一系列<Add ../> Tags。每个标签将指定要应用的mover、filter和simple metric。
RosettaScript协议按顺序逐个步骤遍历每个子标签,并进行运算。
示例:
<PROTOCOLS>
<Add mover=“Repack1”/>
<Add mover=“Repack2” filter=“avg_deg” />
<Add mover=“iface” />
</PROTOCOLS>
$> rosetta_scripts.static.macosclangrelease -s 1ubq.pdb -parser:protocol anything.xml
以下实例均来自于:https://journals.plos.org/plosone/article/file?type=supplementary&id=10.1371/journal.pone.0020161.s001
注:注意检查拼写错误;可以使用tools/xsd_xrw/rewrite_rosetta_script.py
重写老的XML;有问题直接邮件开发人员列表,SLACK,或者Rosetta论坛
<ROSETTASCRIPTS>
<SCOREFXNS>
<ScoreFunction name="SFXN1" weights="score12_w_corrections">
<Reweight scoretype="atom_pair_constraint" weight="1.0"/>
</ScoreFunction>
</SCOREFXNS>
<TASKOPERATIONS>
<LayerDesign name="layer" layer="core_boundary_surface"/>
</TASKOPERATIONS>
<FILTERS>
<PackStat name="pstat" threshold="0.60"/>
</FILTERS>
<MOVERS>
<FlxbbDesign name="flxbb" ncycles="3" constraints_sheet="100.0" sfxn_design="SFXN1" sfxn_relax="SFXN1" clear_all_residues="1" task_operations="layer"/>
</MOVERS>
<PROTOCOLS>
<Add mover="flxbb"/>
<Add filter="pstat"/>
</PROTOCOLS>
<OUTPUT />
</ROSETTASCRIPTS>
rosetta_scripts.static.macosclangrelease -s motif.pdb -parser:protocol fbb.xml -restore_pre_talaris_2013_behavior
<ROSETTASCRIPTS>
<TASKOPERATIONS>
ProteinInterfaceDesign name=pido repack_chain1=1 repack_chain2=1 design_chain1=0 design_chain2=1 interface_distance_cutoff=10/> task operation that designates which residues are designable and repackable at the interface
</TASKOPERATIONS>
<FILTERS>
<Ddg name="ddG" scorefxn="score12" threshold="-15" repeats="2"/> binding energy calculation; an average of two repeats is computed for better numerical accuracy
<Sasa name="sasa" threshold="800"/> Buried surface area upon complex formation
<Rmsd name="rmsd" confidence="0"/> confidence=0 means that the filter will be evaluated but not used as an acceptance criterion
<CompoundStatement name="ddg_sasa"> combine filters into a single logical statement
<AND filter_name="ddG"/>
<AND filter_name="sasa"/>
</CompoundStatement>
</FILTERS>
<MOVERS>
<Docking name="docking" score_high="soft_rep" fullatom="1" local_refine="1"/> Invokes RosettaDock local-refinement (in full-atom) with a soft potential
<BackrubDD name="backrubdd" partner1="0" partner2="1" interface_distance_cutoff="8.0" moves="1000" sc_move_probability="0.25" scorefxn="score12" small_move_probability="0.15" bbg_move_probability="0.25"/> perturb the backbone of chain2
<RepackMinimize name="des1" scorefxn_repack="soft_rep" scorefxn_minimize="soft_rep" minimize_bb="0" minimize_rb="1"/>
<RepackMinimize name="des2" scorefxn_repack="score12" scorefxn_minimize="score12" minimize_bb="0" minimize_rb="1"/> Design and minimizatio
n at the interface
<RepackMinimize name="des3" minimize_bb="1"/>
<ParsedProtocol name="design">
<Add mover_name="des1"/>
<Add mover_name="des2"/>
<Add mover_name="des3"/>
<Add mover_name="backrubdd"/>
<Add mover_name="des3" filter_name="ddg_sasa"/>
</ParsedProtocol>
<GenericMonteCarlo name="iterate" scorefxn_name="score12" mover_name="design" trials="10"/>
</MOVERS>
<PROTOCOLS>
<Add mover="docking"/>
<Add mover="iterate"/>
<Add filter="ddG"/>
<Add filter="sasa"/>
<Add filter="rmsd"/>
</PROTOCOLS>
</ROSETTASCRIPTS>
-s 2wpt.ppk.pdb
-restore_pre_talaris_2013_behavior
-ex1
-ex2
-extrachi_cutoff 5
-ignore_unrecognized_res
-run:constant_seed
-nstruct 1
-jd2:ntrials 10
-parser:protocol flexbb-interfacedesign_2.xml
-docking:no_filters
-overwrite
rosetta_scripts.static.macosclangrelease @flags