Last edited 6/26/09. Code and documentation by Frank DiMaio
dimaio@u.washington.edu.
Three scoring functions have been added to Rosetta which describe how well a structure agrees to experimental density data. Density map data is read in CCP4/MRC format (the density has to minimally cover the asymmetric unit). The various scoring functions trade off speed versus accuracy, and their use should be primarily determined by the resolution of the density map data:
- elec_dens_whole_structure_ca - Low resolution (5A+) - Uses the correlation of the whole structure density versus the experimental data; structure density only uses C-alphas.
- elec_dens_whole_structure_allatom - Medium resolution (4-6A) - Uses the correlation of the whole structure density versus the experimental data; structure density only uses all heavy atoms.
- elec_dens_window - High resolution (2-4A) - Uses the sum of correlations of a sliding window of residues versus the experimental data; structure density only uses all heavy atoms. Unlike the other two scoring functions, this uses the fit-to-density score when repacking the structure.
These scoring functions may be combined and are user-controlled by a set of command-line flags (see sample command lines and options below). They may also be specified in weights file/patch files like any other scoring function.
This scoring function may be used like any other scoring function in rosetta with one key exception. Because (unlike any other scoring function) the fit-to-density score depends on the overall rigid-body orientation of the molecule, all poses to be scored must be rooted on a virtual residue, with a jump to the remainder of the pose. Convience methods to set this up are shown below. Additionally, for some protocols, it makes sense to allow movement along this jump. For example, when relaxing a structure into density, '-jump_move true' should generally be given.
Sample 1: relax a structure 1cid.pdb into a map 1cid_5A.mrc using the hi-res scoring function (with a sliding window width of 5):
bin/relax.linuxgccrelease \
-database ~/minirosetta_database \
-in:file:s 1cid.pdb \
-score:weights score13_env_hb \
-relax:fast \
-relax:fastrelax_repeats 4 \
-relax:jump_move true \
-edensity:mapfile 1cid_5A.mrc \
-edensity:mapreso 5.0 \
-edensity:grid_spacing 2.0 \
-edensity:realign min \
-edensity:sliding_window_wt 0.2 \
-edensity:sliding_window 5 \
-out::nstruct 5 \
-ex1 -ex2aro
Sample 2: remodel the loops specified in 1cid.loopfile in structure 1cid.pdb into map 1cid_5A.mrc, using the medium-res scoring function:
bin/loopmodel.linuxgccrelease \
-database ~/minirosetta_database \
-loops:input_pdb 1cid.pdb \
-score:weights score13_env_hb \
-loops::frag_sizes 9 3 1 \
-loops::frag_files aa1cid_09_05.200_v1_3.gz aa1cid_03_05.200_v1_3.gz none \
-loops::build_attempts 10 \
-loops::remodel quick_ccd_moves \
-loops::intermedrelax no \
-loops::refine no \
-loops::relax fastrelax \
-loops::strict_loops \
-relax:fastrelax_repeats 4 \
-relax:jump_move true \
-edensity:mapfile 1cid_5A.mrc \
-edensity:mapreso 5.0 \
-edensity:grid_spacing 2.0 \
-edensity:realign min \
-edensity:whole_structure_allatom_wt 0.05 \
-out::nstruct 5
- -edensity:mapfile
- -edensity:mapreso
- -edensity:grid_spacing
Input map in CCP4/MRC format covering asymmetric unit. Compute rho_c using 'mapreso' resolution, resampling map to 'grid_spacing' per voxel. If grid_sampling exceeds mapreso/2, the derivatives will not be properly computed.
- -edensity:sliding_window_wt
- -edensity:whole_structure_ca_wt
- -edensity:whole_structure_allatom_wt
IF SUPPORTED BY THE PROTOCOL (see below for supported protocols), set the weight on the three scoring functions.
Width (# residues) to use for sliding window scoring [default 1]
- -edensity:atom_mask
- -edensity:ca_mask
Mask width around each atom/CA [default resolution-dependent]
- -edensity:realign {no | min}
IF SUPPORTED BY THE PROTOCOL, how to initially align the pose to the map (6D docking options coming soon!)
Supported protocols:
- score app
- relax
- loopmodel
- ca_to_allatom
- ab initio (through the topology broker) - density scores must be set through patches (command-line density weights are ignored)
To enable fit-to-density scoring during ab initio, a claimer must be added to the topology broker file:
CLAIMER DensityScoringClaimer
anchor 98
END_CLAIMER
In general the anchor residue should be in a region that will remain fixed throughout the protocol (to avoid unintentional rigid-body movement of the entire structure); for example within a rigid chunk in the RigidChunkClaimer. In general, fit-to-density weight should not be turned on until very late in the protocol (stage 3 or stage 4).
A mover,
protocols::electron_density::SetupForDensityScoringMover has been added which does the following in preparatio for scoring a structure against density:
- Ensures pose is rooted on VRT
- Uses -edensity:realign flag value to dock pose to dens map
- [OPTIONALLY] Use only a subset of residues to initially dock pose
The third option is intended for comparative modelling cases where there may be missing density in the starting pose.
A function has also been added, core::scoring::electron_density::add_dens_scores_from_cmdline_to_scorefxn(ScoreFunction&), which uses values of -edensity:sliding_window_wt, edensity:whole_structure_ca_wt and edensity:whole_structure_allatom_wt to update the score function.
For protocols which do not modify the root of the fold tree, this is all that is needed to make use of fit-to-density scoring (although additional moves that modify the rigid-body orientation of the system may be necessary to produce meaningful results).