Skip to content

Instantly share code, notes, and snippets.

@asford
Created May 6, 2015 21:47
Show Gist options
  • Save asford/0ab2f79b8ffcd6518aca to your computer and use it in GitHub Desktop.
Save asford/0ab2f79b8ffcd6518aca to your computer and use it in GitHub Desktop.
Demo rosetta scripts wrapper component.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"import logging\n",
"reload(logging)\n",
"logging.basicConfig(level=logging.INFO)"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"INFO:rosetta:Found rosetta database at: /work/fordas/python_local/rosetta/database\n",
"INFO:rosetta:Version: 1afb81950d464d6243055cb6a566fd124985cd5f\n",
"INFO:rosetta:core.init: Rosetta version from\n",
"INFO:rosetta:core.init: command: pyrosetta -ex1 -ex2aro -database /work/fordas/python_local/rosetta/database\n",
"INFO:rosetta:core.init: 'RNG device' seed mode, using '/dev/urandom', seed=151738479 seed_offset=0 real_seed=151738479\n",
"INFO:rosetta:core.init.random: RandomGenerator:init: Normal mode, seed=151738479 RG_type=mt19937\n"
]
}
],
"source": [
"import rosetta\n",
"rosetta.init()"
]
},
{
"cell_type": "code",
"execution_count": 66,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"from rosetta.protocols.rosetta_scripts import RosettaScriptsParser\n",
"from rosetta.utility.tag import Tag\n",
"from rosetta.protocols.jd2 import JobDistributor, Job\n",
"\n",
"class RosettaScriptWrapper(object):\n",
" \"\"\"Wrapper object that handles parsing a string RosettaScripts protocol and applying the protocol to target poses.\"\"\"\n",
" \n",
" def __init__(self, protocol_xml, starting_pose = None):\n",
" \"\"\"Parse protocol xml, using optional starting_pose if needed by defined movers/filters.\"\"\"\n",
" tag = Tag.create(protocol_xml)\n",
"\n",
" if starting_pose is None:\n",
" self.protocol = RosettaScriptsParser().parse_protocol_tag(tag)\n",
" else:\n",
" self.protocol = RosettaScriptsParser().parse_protocol_tag(starting_pose, tag)\n",
" \n",
" JobDistributor.get_instance().restart()\n",
" self.blank_job = JobDistributor.get_instance().current_job()\n",
" \n",
" def apply(self, target_pose):\n",
" \"\"\"Apply protocol to pose.\n",
" \n",
" Returns:\n",
" (result_pose, filter_score)\n",
" \"\"\"\n",
" \n",
" self.protocol.apply(target_pose)\n",
" record_job = Job(self.blank_job)\n",
" self.protocol.add_values_to_job( target_pose, record_job )\n",
" \n",
" results = {}\n",
" results.update( record_job.get_string_real_pairs() )\n",
" results.update( record_job.get_string_string_pairs() )\n",
" \n",
" return target_pose, results"
]
},
{
"cell_type": "code",
"execution_count": 67,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"INFO:rosetta:core.scoring.ScoreFunctionFactory: SCOREFUNCTION: talaris2013\n"
]
}
],
"source": [
"test_sf = rosetta.core.scoring.getScoreFunction()"
]
},
{
"cell_type": "code",
"execution_count": 68,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"test_script = \"\"\"\n",
"<ROSETTASCRIPTS>\n",
" <SCOREFXNS>\n",
" </SCOREFXNS>\n",
" <TASKOPERATIONS>\n",
" </TASKOPERATIONS>\n",
" <FILTERS>\n",
" <ScoreType name=\"total_score\" score_type=\"total_score\" threshold=100/>\n",
" \n",
" </FILTERS>\n",
" <MOVERS>\n",
" <FastRelax name=\"fastrelax\" repeats=1 />\n",
" </MOVERS>\n",
" <PROTOCOLS>\n",
" <Add mover=\"fastrelax\" filter=\"total_score\"/>\n",
" </PROTOCOLS>\n",
"</ROSETTASCRIPTS>\n",
"\"\"\""
]
},
{
"cell_type": "code",
"execution_count": 69,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"INFO:rosetta:core.scoring.ScoreFunctionFactory: SCOREFUNCTION: talaris2013\n",
"INFO:rosetta:protocols.simple_filters.ScoreTypeFilter: ScoreType filter for score_type total_score with threshold 100\n",
"INFO:rosetta:protocols.rosetta_scripts.RosettaScriptsParser: Defined filter named \"total_score\" of type ScoreType\n",
"INFO:rosetta:protocols.relax.FastRelax: ================== Using default script ==================\n",
"INFO:rosetta:protocols.relax.FastRelax: ================== Using default script ==================\n",
"INFO:rosetta:protocols.rosetta_scripts.RosettaScriptsParser: Defined mover named \"fastrelax\" of type FastRelax\n",
"INFO:rosetta:protocols.rosetta_scripts.ParsedProtocol: ParsedProtocol mover with the following movers and filters\n",
"added mover \"fastrelax\" with filter \"total_score\"\n",
"INFO:rosetta:protocols::checkpoint: Deleting checkpoints of FastRelax\n",
"INFO:rosetta:protocols.evaluation.ChiWellRmsdEvaluatorCreator: Evaluation Creator active ...\n",
"INFO:rosetta:protocols::checkpoint: Deleting checkpoints of FastRelax\n"
]
}
],
"source": [
"wrapper = TestScriptWrapper( test_script )"
]
},
{
"cell_type": "code",
"execution_count": 70,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"test_pose = rosetta.pose_from_sequence(\"TESTTESTTEST\")"
]
},
{
"cell_type": "code",
"execution_count": 71,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"INFO:rosetta:protocols.rosetta_scripts.ParsedProtocol: =======================BEGIN MOVER FastRelax - fastrelax=======================\n",
"INFO:rosetta:protocols.relax.FastRelax: CMD: repeat 1981.38 0 0 0.44\n",
"INFO:rosetta:core.pack.task: Packer task: initialize from command line()\n",
"INFO:rosetta:core.pack.interaction_graph.interaction_graph_factory: Instantiating DensePDInteractionGraph\n",
"INFO:rosetta:core.pack.pack_rotamers: built 297 rotamers at 12 positions.\n",
"INFO:rosetta:core.pack.pack_rotamers: IG: 58660 bytes\n",
"INFO:rosetta:protocols.relax.FastRelax: CMD: ramp_repack_min 7.06057 0.000112984 0.000112984 0.0088\n",
"INFO:rosetta:core.pack.task: Packer task: initialize from command line()\n",
"INFO:rosetta:core.pack.interaction_graph.interaction_graph_factory: Instantiating DensePDInteractionGraph\n",
"INFO:rosetta:core.pack.pack_rotamers: built 283 rotamers at 12 positions.\n",
"INFO:rosetta:core.pack.pack_rotamers: IG: 53980 bytes\n",
"INFO:rosetta:protocols.relax.FastRelax: CMD: ramp_repack_min 8.24648 0.000228142 0.000228142 0.11\n",
"INFO:rosetta:core.pack.task: Packer task: initialize from command line()\n",
"INFO:rosetta:core.pack.interaction_graph.interaction_graph_factory: Instantiating DensePDInteractionGraph\n",
"INFO:rosetta:core.pack.pack_rotamers: built 270 rotamers at 12 positions.\n",
"INFO:rosetta:core.pack.pack_rotamers: IG: 50152 bytes\n",
"INFO:rosetta:protocols.relax.FastRelax: CMD: ramp_repack_min 9.79296 0.000347425 0.000347425 0.242\n",
"INFO:rosetta:core.pack.task: Packer task: initialize from command line()\n",
"INFO:rosetta:core.pack.interaction_graph.interaction_graph_factory: Instantiating DensePDInteractionGraph\n",
"INFO:rosetta:core.pack.pack_rotamers: built 253 rotamers at 12 positions.\n",
"INFO:rosetta:core.pack.pack_rotamers: IG: 44316 bytes\n",
"INFO:rosetta:protocols.relax.FastRelax: CMD: ramp_repack_min -1.90835 1.47654 1.47654 0.44\n",
"INFO:rosetta:protocols.relax.FastRelax: MRP: 0 -1.90835 -1.90835 1.47654 1.47654\n",
"INFO:rosetta:protocols.relax.FastRelax: CMD: accept_to_best -1.90835 1.47654 1.47654 0.44\n",
"INFO:rosetta:protocols.relax.FastRelax: CMD: endrepeat -1.90835 1.47654 1.47654 0.44\n",
"INFO:rosetta:protocols::checkpoint: Deleting checkpoints of FastRelax\n",
"INFO:rosetta:protocols.rosetta_scripts.ParsedProtocol: =======================BEGIN FILTER total_score=======================\n",
"INFO:rosetta:protocols.simple_filters.ScoreTypeFilter: score total_score is -1.90835. passing.\n",
"INFO:rosetta:protocols.rosetta_scripts.ParsedProtocol: =======================END FILTER total_score=======================\n",
"INFO:rosetta:protocols.rosetta_scripts.ParsedProtocol: setting status to success\n",
"INFO:rosetta:protocols.rosetta_scripts.ParsedProtocol.REPORT: ============Begin report for total_score==================\n",
"INFO:rosetta:protocols.rosetta_scripts.ParsedProtocol.REPORT: Weighted score of total_score -1.90835\n",
"============End report for total_score==================\n"
]
},
{
"data": {
"text/plain": [
"(<rosetta.core.pose.__pose_all_at_once_.Pose at 0xd990730>,\n",
" {'total_score': -1.9083521765116358})"
]
},
"execution_count": 71,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"wrapper.apply(test_pose)"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 2",
"language": "python",
"name": "python2"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 2
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython2",
"version": "2.7.3"
}
},
"nbformat": 4,
"nbformat_minor": 0
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment