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'