Ensemble refinement with Phenix
Octav - dec-19
ComQum-X with Phenix-Amber interface
I have made some progress doing quantum refinement with Phenix, so I
thought I would inform you what can be done with phenix.refine so far
after some (small) changes to the code (basically I’m exploiting the
Amber interface already present in phenix.refine).
To use the hacked version, on aurora.lunarc.lu.se:
$ source /lunarc/nobackup/projects/teobio/Kristoffer/phenix-dev/phenix-1.20.1-4487/phenix_env.sh
An initial model + structure factors are needed. If the structure is published you can use
$ phenix.fetch_pdb <PDB accession code> --mtz
to download the files needed.
To prepare the files for running refinement with Phenix and Amber:
$ phenix.AmberPrep <PDB file>
and pray (literally – neutron structures have so far proven difficult). If all goes well, four new files are generated:
4amber_<PDB accession code>.prmtop
4amber_<PDB accession code>.rst7
4amber_<PDB accession code>.order
4phenix_<PDB accession code>.pdb
as well as <PDB accession code>_uc.pdb (and possibly some other files if unusual ligands are parametrized).
To use Amber force fields instead of CDL, supply phenix.refine with the flag use_amber=True. This by default uses the ff14SB force field (and just MM).
To use QM/MM, qmmask=’’ can be supplied to phenix.refine, where between ‘’ should be a string identifying the residues in the QM system following ordinary Amber syntax (you will need to check the Amber manual how to prepare the mask). Per default PM6 is used for the QM system.
Now the interesting parts, I have added a few keywords:
qmatoms = ‘’, where the supplied string would be the atom numbering found in the file <PDB accession code>_uc.pdb file, comma separated (this can easily be changed into reading a file or similar). Currently explicit numbering is needed, i.e. no intervals (also very easy to change). The keywords qmmask and qmatoms are currently mutually exclusive; if both are supplied at the same time, MM will be used over QM/MM.
qmtheory = ‘’, which allows one to change which Hamiltonian is used. Default is PM6 if not supplied (check the Amber manual for supported Hamiltonians and which atom types they in turn can handle). Hopefully I can further exploit this part of the code by linking Amber towards QUICK, which would then allow higher level of theory for the QM system.
qmcut = <float>, specifies the cut-off for electrostatic interaction between QM and MM parts. For some reason this value needs to be rather low to avoid a sander bomb (which I think relates to the box size used by Amber). Defaulted to 4.0, which seems to work fine in terms of at least not crashing.
An example run could thus look something like
$ phenix.fetch_pdb 4Lzt
$ phenix.AmberPrep 4Lzt.pdb
$ phenix.refine 4phenix_4Lzt.pdb 4Lzt.mtz use_amber=True topology_file_name=4amber_4Lzt.prmtop coordinate_file_name=4amber_4Lzt.rst7 order_file_name=4amber_4Lzt.order refinement.input.xray_data.r_free_flags.generate=True qmatoms='371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381'
Kristoffer 16/2-22