Andrew Leaver-Fay, PhD Baker Lab University of Washington.
Post on 13-Dec-2015
215 Views
Preview:
Transcript
Speed. Flexibility. Usability.Speed vs. Flexibility
Hard coded parameters (e.g. pair_cutoffs, count_pair)
R++: Score terms responsible for entire structure (e.g. constraints)
All scorers (score function, packer, minimizer) know what score terms exist
Mini: Score terms responsible for entire residue pairs
Communication through global variables instead of input parameters
Context is not tracked
Packer’s sparse matrix for RPEs assumes AA’s being packed
Speed. Flexibility. Usability.Speed vs. UsabilityRefold by hand from carefully chosen starting points
Lazy refold
Plan and optimize for a single mode of interaction
Design-in efficiency for all possible future uses
Hidden assumptions (e.g. refold assumes ideal bond geometry)
Track old scores in global arrays (e.g. best_bumps)
Speed. Flexibility. Usability.Flexibility vs. UsabilityComplete Generality: C, Unix Specific, reliable, understandable
functionality that can’t be modified
Job Distributor generalized for arbitrary movers
Flag report (“What flags are used in this protocol?” ~ halting problem)
Thread Safety
Model Protocol
Pose pose;
ScoreFunction * sfxn;
Mover * mover;
…
MonteCarlo MC( sfxn );
…
for i = 1 to X
mover->apply( pose );
MC.boltzman( pose ); // 1 sfxn call, 1 pose copy
Model Protocol
Pose pose;
ScoreFunctionOP sfxn;
MoverOP mover;
…
MonteCarlo MC( sfxn );
…
for i = 1 to X
mover->apply( pose );
MC.boltzman( pose ); // 1 sfxn call, 1 pose copy
O(N2) O(NlgN) Scoring
• Neighbor detection: O(N2) O(N lg N)• NxN tables sparse graph• Score terms left to themselves
ScoreFunction evaluates terms for neighboring residue pairs*
• O(N2) terms replaced with O(N) equivalents
O(NlgN)O(N)
O(N + k)
O(N)
a b
ab
ScoringRealScoreFunction::operator()( Pose & pose) const pose.update_residue_neighbors( info_ ); setup_for_scoring( pose ); for e = {u,v } pose.energy_graph() eval_cd_2b( pose.res(u), pose.res(v) ); if ( pose.moved_relative( u, v ) ) total += eval_ci_2b( pose.res(u), pose.res(v), e); else
total += e; total += eval_cd_1b( pose ); total += eval_ci_1b( pose ); finalize( total ); return total;
• Holds EnergyMethods that the user wants evaluated
• Input to – minimizer – pack_rotamers– rotamer_trials
ScoreFunction as a Container
• Holds EnergyMethods that the user wants evaluated
• Input to – minimizer – pack_rotamers– rotamer_trials
ScoreFunction as a Container
• Holds EnergyMethods that the user wants evaluated
• Input to – minimizer – pack_rotamers– rotamer_trials– OnTheFlyInteractionGraph– GreenPacker
ScoreFunction as a Container
GreenPacker
Reuses RPEs for groups of residues that aren’t moving wrt each other.
For Example:
Fixed-backbone ligand docking
Fixed backbone protein docking
GreenPacker
Reuses RPEs for groups of residues that aren’t moving wrt each other.
Prot/Prot CI 2B energies reusedProt/Prot CI 2B energies reused
Prot/Prot CD 2B energies freshly calculatedProt/Prot CD 2B energies freshly calculated
All Prot/Prot 2B energies freshly calculated
GreenPacker
Reuses RPEs for groups of residues that aren’t moving wrt each other.
Prot/Prot CI 2B energies reusedProt/Prot CI 2B energies reused
Prot/Prot CD 2B energies freshly calculatedProt/Prot CD 2B energies freshly calculated
All Prot/Prot 2B energies freshly calculated
GreenPacker
• User identifies residue groups that remain fixed wrt each other• 1st packing:
– save rotamer internal geometry– save CI 2B energies
• Subsequent packings: – Find correspondence between original rotamers and new rotamers based
on internal geometry– Intra-group:
• Reuse saved CI 2B energies for rotamers that have a correspondence• Compute fresh CI 2B energies for those that don’t• Compute CD 2B energies
– Inter-group:• Compute all 2B energies
• Holds EnergyMethods that the user wants evaluated• Input to
– minimizer – pack_rotamers– rotamer_trials– OnTheFlyInteractionGraph– GreenPacker
ScoreFunction as a Container
• Holds EnergyMethods that the user wants evaluated• Input to
– minimizer – pack_rotamers– rotamer_trials– OnTheFlyInteractionGraph– GreenPacker– Enzyme Multi State Interaction Graph*– LoopScoreFunction*– LoopPacker*– Sidechain Minimizer*
ScoreFunction as a Container
Minimization
• update_domain_map: O(N)• setup_for_derivatives: O(N)• set_DOF + refold: O(N)• eval_atom_derivative: O(k) -- (Phil?)• score: O(N + k)
Efficient to minimize all residues, inefficient to minimize one residue
Output Sensitive Refold
set_chi Problem: after m updates to the DOFs of an atom tree, refold.
k = # atoms that move
1) O(N+m): refold from root
2) O(m2+k) (complicated)
3) O(k+m): DFS -- Snoeyink
Output Sensitive RefoldDFS:
Record each atom with a DOF change -- O(m)
Mark each atom with a DOF change as “unreached”
Start a DFS from each unvisited atom, stopping at atoms that have already been visited in the DFS. Mark reached atoms -- O(k)
Refold from unreached atoms with DOF changes
Output Sensitive RefoldDFS:
Record each atom with a DOF change -- O(m)
Mark each atom with a DOF change as “unreached”
Start a DFS from each unvisited atom, stopping at atoms that have already been visited in the DFS. Mark reached atoms -- O(k)
Refold from unreached atoms with DOF changes
Output Sensitive RefoldDFS:
Record each atom with a DOF change -- O(m)
Mark each atom with a DOF change as “unreached”
Start a DFS from each unvisited atom, stopping at atoms that have already been visited in the DFS. Mark reached atoms -- O(k)
Refold from unreached atoms with DOF changes
Output Sensitive RefoldDFS:
Record each atom with a DOF change -- O(m)
Mark each atom with a DOF change as “unreached”
Start a DFS from each unvisited atom, stopping at atoms that have already been visited in the DFS. Mark reached atoms -- O(k)
Refold from unreached atoms with DOF changes
O(k) minimization
• “Sidechain minimizer”– Rotamer trials w/ minimization– Pre-minimize rotamers– Pre-minimize rotamer pairs*
• Without modifying core::pack!– class RotamerOperation– class RotamerSetOperation
Acknowledgementsashworth dmandell johnk pbradley shefflerbblum ekellogg kaufmann renfrew sidchu flo kevin rhiju smlewisCruiseControl gktaylor leaverfa ronj sramancsmith glemmon momeara rvernon stuartmcyanover havranek monica rwalton texdavis ion mtyka sarel treuilledekim jecorn murphp scooper yabdimaio jeff olange sergey yiliu
Mini Community
David Baker
Brian Kuhlman
Jeff Gray
top related