#!/usr/bin/env python # coding: utf-8 # # XmlObjects的基本用法 # # @Author: 吴炜坤 # # @E-mail: weikun.wu@xtalpi.com # ### 1. 为什么有XmlObject? # 在最早期,Rosetta的mover、filter等都没有为python api流程参数控制的接口,导致部分的组件无法直接调用,只能通过xml脚本读取参数,然后生成对应的对象。 # # XmlObjects是在PyRosetta中直接使用xml脚本最直接的方法,特别是某些Mover没有做好Pyrosetta接口时特别有用。但是缺点是加载XmlObjects的速度并不理想,比纯粹的PyRosetta脚本启动要慢。 # ### 2. 如何使用XmlObject? # 最方便的方法有两种调用方式: # 1. create_from_string # 2. create_from_file # #### 2.1 create_from_string # 从字符串文本中提取信息,返回XmlObjects # In[3]: from pyrosetta.rosetta.protocols import rosetta_scripts from pyrosetta import init # 初始化脚本: init() xml = rosetta_scripts.XmlObjects.create_from_string(''' ''') # **提取Filter、Mover、Selector、SimpleMetric、TaskOperation的语法语句** # In[9]: # get a mover: mover_ = xml.get_mover("setTorsion") mover_ # 如此类推: # filter_ = xml.get_filter(name) # selector_ = xml.get_residue_selector(name) # score_ = xml.get_score_function(name) # sm_ = xml.get_simple_metric(name) # tf_ = xml.get_task_operation(name) # In[10]: #列表式所选内容。 xml.list_movers() # 如此类推: # xml.list_filters() # xml.list_residue_selectors() # xml.list_score_functions() # xml.list_simple_metrics() # xml.list_task_operations() # #### 2.2 create_from_file # 从字符串文本中提取信息,返回XmlObjects # In[11]: from pyrosetta.rosetta.protocols import rosetta_scripts xml = rosetta_scripts.XmlObjects.create_from_file('./data/Example2-MinMover.xml') # ### 3. RosettaScript所有的API # # 详见: https://new.rosettacommons.org/docs/latest/scripting_documentation/RosettaScripts/RosettaScripts # #### 结语: # RosettaScript大而全,Python API灵活速度快! # In[ ]: