Barnase-Barstar#
The structure with PDB id 1BRS has three barnase-barstar complexes in its unit cell, but none of them has their monomers sequences complete. However, we can find a barnase and a barstar monomer without missing residues coming from different dimers. If we want to prepare a good complex with them, we only need to follow these steps:
1- Download the molecular system from the protein data bank.
2- Inspect the molecular system to identify the monomers we want to extract.
3- Form a new complex with the chosen monomers.
4- Complete the complex with the missing atoms.
5- Write the new barnase-barstar complex as a pdb file.
Download the molecular system#
Let’s download the 1BRS molecular system with MolSysMT:
import molsysmt as msm
molecular_system = msm.convert('1BRS')
Inspect the molecular system#
The basic method molsysmt.basic.info()
it is a good tool to inspect the molecular system at different levels. Let’s ask this method for a first overview of the molecular system:
msm.info(molecular_system)
form | n_atoms | n_groups | n_components | n_chains | n_molecules | n_entities | n_waters | n_proteins | n_structures |
---|---|---|---|---|---|---|---|---|---|
molsysmt.MolSys | 5153 | 1101 | 521 | 12 | 519 | 3 | 513 | 6 | 1 |
Note
All methods defined in the molsysmt.basic
module can be invoked also from the main level of the library. As such, molsysmt.info
is the same method as molsysmt.basic.info
.
The system has water molecules. Let’s work only with the proteins.
molecular_system = msm.extract(molecular_system, selection='molecule_type=="protein"')
msm.info(molecular_system)
form | n_atoms | n_groups | n_components | n_chains | n_molecules | n_entities | n_proteins | n_structures |
---|---|---|---|---|---|---|---|---|
molsysmt.MolSys | 4640 | 588 | 8 | 6 | 6 | 2 | 6 | 1 |
As we said above, molsysmt.basic.info()
can be used to get descriptions of the molecular system at different levels of complexity looking accordint to its composing elements: atoms, groups, components, chains, molecules or entities.
msm.info(molecular_system, element='molecule')
index | name | type | n atoms | n groups | n components | chain index | entity index | entity name |
---|---|---|---|---|---|---|---|---|
0 | Barnase | protein | 864 | 108 | 1 | 0 | 0 | Barnase |
1 | Barnase | protein | 878 | 110 | 1 | 1 | 0 | Barnase |
2 | Barnase | protein | 839 | 108 | 1 | 2 | 0 | Barnase |
3 | Barstar | protein | 695 | 87 | 2 | 3 | 1 | Barstar |
4 | Barstar | protein | 665 | 86 | 2 | 4 | 1 | Barstar |
5 | Barstar | protein | 699 | 89 | 1 | 5 | 1 | Barstar |
msm.info(molecular_system, element='chain')
index | id | name | n atoms | n groups | n components | molecule index | molecule type | entity index | entity name |
---|---|---|---|---|---|---|---|---|---|
0 | A | A | 864 | 108 | 1 | 0 | protein | 0 | Barnase |
1 | B | B | 878 | 110 | 1 | 1 | protein | 0 | Barnase |
2 | C | C | 839 | 108 | 1 | 2 | protein | 0 | Barnase |
3 | D | D | 695 | 87 | 2 | 3 | protein | 1 | Barstar |
4 | E | E | 665 | 86 | 2 | 4 | protein | 1 | Barstar |
5 | F | F | 699 | 89 | 1 | 5 | protein | 1 | Barstar |
This way we get to know that the system is composed by three barnase and three barstar monomers. Those with chain name \(B\) and \(F\) are longer and compact (they have all their atoms covalently bonded -no missing residues-). Unfortunately, these monomers belong to different dimers as we can see with molsysmt.basic.view()
:
msm.view(molecular_system, viewer='NGLView')
Form a new complex#
To form a new barnase-barstar complex, let’s make a structural alignment of the barstar with chain name \(F\) over the barstar with chain name \(E\). This way, \(F\) will be in its bounded position to barnase (\(B\)). But first let’s extract these three monomers:
barnase = msm.extract(molecular_system, selection="chain_name=='B'")
barstar_E = msm.extract(molecular_system, selection="chain_name=='E'")
barstar_F = msm.extract(molecular_system, selection="chain_name=='F'")
msm.view([barnase, barstar_E, barstar_F], viewer='NGLView')
We can already work with molsysmt.structure.align()
to overlap the structure of \(E\) over \(F\):
barstar_F_over_E = msm.structure.align(barstar_F, selection='atom_name=="CA"',
reference_molecular_system=barstar_E, reference_selection='atom_name=="CA"')
msm.view([barnase, barstar_E, barstar_F_over_E], viewer='NGLView')
We can finnally produce our new dimer with molsysmt.basic.merge()
:
barnase_barstar = msm.merge([barnase, barstar_F_over_E])
msm.view(barnase_barstar, viewer='NGLView')
Complete the molecular system#
Some structures deposited in the Protein Data Bank have atoms with alternate locations, and missing residues or atoms. Let’s check if this is the case of our new dimer with the assitance of molsysmt.build.get_atoms_with_alternate_locations()
, molsysmt.build.get_missing_heavy_atoms()
, molsysmt.build.get_missing_residues()
, and molsysmt.basic.contains()
:
msm.build.get_atoms_with_alternate_locations(barnase_barstar)
[]
msm.build.get_missing_heavy_atoms(barnase_barstar)
{131: ['CD', 'CE', 'NZ'],
137: ['CG', 'CD', 'OE1', 'OE2'],
155: ['CG', 'CD', 'OE1', 'OE2'],
173: ['CG', 'CD', 'OE1', 'OE2'],
174: ['CG', 'OD1', 'ND2'],
198: ['O']}
msm.build.get_missing_residues(barnase_barstar)
{}
msm.contains(barnase_barstar, hydrogens=True)
False
Our complex has no hydrogens -1BRS was solved indeed by x ray crystallography- and some heavy atoms are missing. Let’s solve these defects with molsysmt.build.add_missing_heavy_atoms()
and molsysmt.build.add_missing_hydrogens()
:
barnase_barstar = msm.build.add_missing_heavy_atoms(barnase_barstar)
Warning: importing 'simtk.openmm' is deprecated. Import 'openmm' instead.
barnase_barstar = msm.build.add_missing_hydrogens(barnase_barstar, pH=7.4)
msm.get(barnase_barstar, element='atom', selection='atom_type=="H"', n_atoms=True)
1563
Write a pdb file with the new dimer#
To conclude this exercise, the new molecular system can be converted to a pdb file:
msm.convert(barnase_barstar, to_form='barnase_barstar.pdb')
'barnase_barstar.pdb'