Learn how to to assign a sequence to a model or to guess the sequence from the density.
First, let's set up the example data (described in more detail here):
Get the files from the Phenix regression directory and change into the new folder:
phenix.setup_tutorial tutorial_name=model-building-scripting
cd model-building-scripting
Type phenix.python
to start up Python with the Phenix environment all set up:
phenix.python
Set up the high level objects, so we can start our task:
from iotbx.data_manager import DataManager # Load in the DataManager
dm = DataManager() # Initialize the DataManager and call it dm
dm.set_overwrite(True) # Overwrite files with the same name
The model_building object has a tool that examines the density in a map at the positions of each side-chain in a model and tries to figure out what side chain belongs there. This can be used to assign a sequence to a model or to guess the sequence from the density. Let’s use it to assign a sequence to a model.
Use the DataManager to read in a model and map from our working directory:
mmm = dm.get_map_model_manager( # getting a map_model_manager
model_file="short_model_main_chain_box.pdb", # model file
map_files="short_model_box.ccp4") # map file
The model consists of alanine residues:
We need one extra file this time, a sequence file. Let’s read our sequence as an object from seq.dat:
seq_object=dm.get_sequence("seq.dat") # read sequence object from seq file
Our sequence as text is available from the sequence object:
sequence_as_text = seq_object[0].sequence # get simple text sequence
We can set the resolution and experiment type and get a model_building object:
mmm.set_resolution(3.0) # working (nominal) resolution of map
mmm.set_experiment_type('xray') # define experiment type
build = mmm.model_building() # get a model-building object
Now we are all set. We can just say:
build.sequence_from_map(sequence=sequence_as_text) # get sequence from the map
...and our working model will be replaced by a model with sequence assigned (if we are lucky). We can write out the new model and compare it with the original in Coot or Chimera along with the map in short_model_box.ccp4:
dm.write_model_file(build.model(), 'sequence_assigned.pdb') # write out model