RosettaScripts: A Scripting Language Interface to the Rosetta Macromolecular Modeling Suite Fleishman SJ, Leaver-Fay A, Corn JE, Strauch EM, Khare SD, et al. (2011) RosettaScripts: A Scripting Language Interface to the Rosetta Macromolecular Modeling Suite. PLOS ONE 6(6): e20161. https://doi.org/10.1371/journal.pone.0020161
刚好前几天查了一下Fleishman SJ的资料,现在放一下
Sarel Fleishman
以色列科学家,目前在以色列魏茨曼科学研究所(Weizmann Institute of Science),
研究所主页:https://www.weizmann.ac.il/pages/,个人主页:https://fleishmanlab.weizmann.ac.il,
除了PROSS,还有FUNLIB等,rosetta套装中的AbDesign,AbPredict,RosettaScripts等也是由Fleishman主导的,
有很多软件均可以在官网进行online版本的使用,local版本是否学术用户可以本地下载使用未知,不过Fleishman好像很钟情于RosettaScripts。
XML骨架
按照昨天的理解,<ROSETTASCRIPTS>
为根节点,剩余的均为其子节点,任何在<>
之外的字符都会被忽略,仅有output
没有闭合,
对了XML格式大小写敏感,所以SCOREFXNS不等于scorefxns
先看一个骨架XML格式
<ROSETTASCRIPTS>
<SCOREFXNS>
</SCOREFXNS>
<RESIDUE_SELECTORS>
</RESIDUE_SELECTORS>
<TASKOPERATIONS>
</TASKOPERATIONS>
<SIMPLE_METRICS>
</SIMPLE_METRICS>
<FILTERS>
</FILTERS>
<MOVERS>
</MOVERS>
<PROTOCOLS>
</PROTOCOLS>
<OUTPUT />
</ROSETTASCRIPTS>
一般描述以及案例
RosettaScripts旨在提供一个xml脚本化接口,开发人员的所有任务。
有了这样一个可编写脚本的界面,希望非程序员能够将不同的设计策略进行组合,并将它们应用到自己的实际中。也希望通过一个通用界面,人与人之间的代码共享会更加顺畅。
此应用程序中实现的movers和filters如下所述。未来会不断更新。
protein-interface design, protein docking, enzyme-design, ligand-docking and -design, monomer design, and DNA-interface design此类设计可以被RosettaScripts实现,loop modeling and structure relaxation也ok
在最抽象的层次上,interface design
需要的所有计算分为两类:Movers
和 Filters
。
RosettaScript仅仅是一个Movers和Filter序列。Movers改变复合物的构象,例如对接/设计/最小化;Filter决定改变后的构象是否应继续进行后续步骤。Filter是为了减少计算量。RosettaScript仅仅是一个Movers和Filter序列。
XML案例
以下现代示例使用:in:file:native
,用于最小化蛋白的CDR loop
,计算minimization
前后的各种度量。所有指标都将输出到指定前缀/后缀的scorefile。
<ROSETTASCRIPTS>
<SCOREFXNS>
</SCOREFXNS>
<RESIDUE_SELECTORS>
<CDR name="L1" cdrs="L1"/>
</RESIDUE_SELECTORS>
<MOVE_MAP_FACTORIES>
<MoveMapFactory name="movemap_L1" bb="0" chi="0">
<Backbone residue_selector="L1" />
<Chi residue_selector="L1" />
</MoveMapFactory>
</MOVE_MAP_FACTORIES>
<SIMPLE_METRICS>
<TimingProfileMetric name="timing" />
<RMSDMetric name="rmsd" rmsd_type="rmsd_protein_bb_heavy" residue_selector="L1" use_native="1"/>
<SelectedResiduesMetric name="rosetta_sele" residue_selector="L1" rosetta_numbering="1"/>
<SelectedResiduesPyMOLMetric name="pymol_selection" residue_selector="L1" />
<SequenceMetric name="sequence" residue_selector="L1" />
<SecondaryStructureMetric name="ss" residue_selector="L1" />
</SIMPLE_METRICS>
<MOVERS>
<MinMover name="min_mover" movemap_factory="movemap_L1" tolerance=".1" />
<RunSimpleMetrics name="run_metrics1" metrics="pymol_selection,sequence,ss,rosetta_sele" prefix="m1_" />
<RunSimpleMetrics name="run_metrics2" metrics="rmsd,timing,ss" prefix="m2_" />
</MOVERS>
<PROTOCOLS>
<Add mover_name="run_metrics1"/>
<Add mover_name="min_mover" />
<Add mover_name="run_metrics2" />
</PROTOCOLS>
</ROSETTASCRIPTS>
Rosetta
将执行PROTOCOLS
中规定的操作顺序。重要的是,SimpleMetrics and Filters
永远不会改变结构的序列或构象。Movers
改变了Pose
,输出文件是按顺序应用movers
的结果。