#!/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[ ]: