Download presentation
Presentation is loading. Please wait.
Published byLetitia Green Modified over 9 years ago
1
Rotamer Trie: Storing & evaluating sets of rotamers Andrew Leaver-Fay, UNC Comp Sci Brian Kuhlman, UNC Biochem Jack Snoeyink, UNC Comp Sci
2
Outline Motivation Trie Data Structure Rotamer Trie Trie vs. Trie Subtree Pruning Results
3
Graphs & Trees G = {V,E} Tree –Connected –|E| = |V| - 1 Rooted Tree –Edges have direction –Point away from “root” Subtree
5
Trie Rooted Tree Vertices hold objects Each root-to-leaf path describes a string of objects
6
Dictionary Trie Rooted Tree Vertices hold letters Each root-to-leaf path describes a word ex. ‘Apple,’ ‘Apply,’ and ‘Appear’ “Shared Prefix” A P P E A R L EY
7
Rotamer Trie Rooted Tree Vertices hold atoms Each root-to-leaf path describes a rotamer
8
C O N H CA HA CB 1HB 2HB CG HG CD1 1HD1 2HD1 3HD1 CD2 1HD2 2HD2 3HD2 1 = 180° 1 = 60° 1 = -60° Nine Leucine Rotamers
9
Outline Motivation Trie Data Structure Rotamer Trie Trie vs. Trie Subtree Pruning Results
10
Trie vs Trie Input: –Two rotamer tries, R and S Output –Rotamer pair energies
11
Trie vs. Trie Algorithm uses two recursive functions –Atom vs Trie –Trie vs Trie Algorithm uses three global variables –ARStackTop –AREnergies –RREnergies
12
Trie vs Trie Tries R and S; trie_vs_trie(R.root, S) atom_vs_trie(r, s*, ancestral_E) ancestral_E += atom_atom_energy(r, s); … for (int i = 0; i < s.num_children; i++) atom_vs_trie(r, s.child[i], ancestral_E); return; trie_vs_trie(r*, S) atom_vs_trie(r, S.root, 0); … for (int i = 0; i < r.num_children, i++) … trie_vs_trie(r.child[i], S); return;
13
Trie vs Trie Global Variables –ARStackTop –AREnergies: Atom/Rotamer energies Stack 4 x S.num_rotamers (Why 4?) –RREnergies Rotamer/Rotamer energies R.num_rotamers x S.num_rotamers
14
Trie vs Trie Tries R and S; trie_vs_trie(R.root, S) atom_vs_trie(r, s*, ancestral_E) ancestral_E += atom_atom_energy(r, s); if (s.terminal_rotamer_id != -1) AREnergies[ARStackTop] [s.terminal_rotamer_id] += ancestral_E; for (int i = 0; i < s.num_children; i++) atom_vs_trie(r, s.child[i], ancestral_E); return; trie_vs_trie(r*, S) atom_vs_trie(r, S.root, 0); if (r.terminal_rotamer_id != -1) RREnergies[r.terminal_rotamer_id] = AREnergies[ARStackTop]; if (r.num_children > 0) ARStackTop++; for (int i = 0; i < r.num_children-1, i++) AREnergies[ARStackTop] = AREnergies[ARStackTop - 1]; trie_vs_trie(r.child[i], S); ARStackTop--; trie_vs_trie(r.child[++ii], S); return;
15
Atom vs Trie atom_vs_trie(r, s*, ancestral_E) ancestral_E += atom_atom_energy(r, s); if (s.terminal_rotamer_id != -1) AREnergies[ARStackTop] [s.terminal_rotamer_id] += ancestral_E; for (int i = 0; i < s.num_children; i++) { atom_vs_trie(r, s.child[i], ancestral_E); } return;
16
Trie vs Trie trie_vs_trie(r*, S) atom_vs_trie(r, S.root, 0); if (r.terminal_rotamer_id != -1) RREnergies[r.terminal_rotamer_id] = AREnergies[ARStackTop]; if (r.num_children > 0) ARStackTop++; for (int i = 0; i < r.num_children-1, i++) { AREnergies[ARStackTop] = AREnergies[ARStackTop - 1]; trie_vs_trie(r.child[i], S); } ARStackTop--; trie_vs_trie(r.child[++ii], S); return;
17
Iterative Implementation Trie_vs_Trie(R, S) for r R for s S … atom_atom_energy(r, s); … return;
18
Outline Motivation Trie Data Structure Rotamer Trie Trie vs. Trie Pruning 5.5 Å Results
19
Types Of Prunes Heavy Atom / Subtree Prune Subtree / Subtree Prune –Collision Prune optional 20 kcal/mol collision threshold
20
Outline Motivation Trie Data Structure Rotamer Trie Trie vs. Trie Subtree Pruning Results
21
Results Rotamer / Rotamer energies: 4x Speedup Experiment: 55 complete protein redesign tasks: Command line: rosetta.gcc -l pdb_list -design -fixbb -ex1 -ex2aro_only -chain_inc -sqc seqcompare
22
Results
23
Rotamer / Background energies: 2.4x Speedup Experiment: Single protein relaxation task Command line: rosetta.mac aa h008 _ -relax -farlx silent_input -s start.out -all -nstruct 3 -ex1 -ex2 -overwrite -constant_seed
24
Results Rotamer Trials: 2.406x Speedup –Test case: 1225 calls to fullatom_rotamer_trials() –Original running time average: 0.2406 sec –Trie running time average: 0.1006 sec Beginning to end: 1.524x Speedup –Original running time: 16:03 –With trie: 10:21 Includes trie_vs_trie as well as trie_vs_background
25
June 24 th, 2005 August 20 th, 2005
26
Trie algorithms speed protein structure prediction by 2.2x. Original (seconds)Trie vs Trie (seconds) Trie vs Trie, Trie vs Background (seconds) 1utg_11.975.335.77 1tig_25.9813.2312.19 1erv_25.6914.3313.33 1tif_12.456.835.71 1aa3_15.36.715.8 1ail_17.298.367.41 1ig5_14.827.676.76 1b72_11.175.294.59 1pgx_10.674.874.52 1r69_11.56.145.21 1acp_15.257.646.79 Speedup1.9917822.204022 Data Courtesy of Lars Malmstroem (U.Wash)
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.