[phenixbb] Planarity restraint ignored when dist_esd equal to 0
pafonine at lbl.gov
Tue Sep 27 19:33:54 PDT 2016
thanks for feedback! It is always very much appreciated!
> I have recently encountered a similar situation, where I
> took a CIF file for a ligand from the CCP4 monomer library
> and found planarity restraints are silently ignored in PHENIX.
> This is very confusing and dangerous.
I can see how this may be confusing so I agree with Keitaro that a
warning would be good to have. Also, phenix.refine always outputs .geo
file that lists all the restraints for all atoms, which allows to check
presence or absence of particular restraints for atoms in question.
> > with this logic you interpret the number and not use it. Follow this
> > road you may end up with odd things, like let's treat 0 as
> > "constraints", 0.1 as "strong restraints", 1.5 as "weak restraints",
> > and in each case do something very different - I hope you get the idea.
> The "zero sigma" limit of a Gaussian is an infinitely sharp
> probability distribution (= delta function). So I think the transition
> from restraints to constraints is not "odd" but quite natural both
> mathematically and semantically.
Theoretically it is all right of course, but in terms of code it may be
quite different pieces of code. It is much less cryptic if a decision to
use one option (restraints) or another (constraints) is a made based on
a clearly named parameter rather than inferring from interpreting a number.
> Anyway, if PHENIX does not want to treat 0 as constraints,
> I would prefer an error stop, not just a warning,
It is always a balance between being conservative vs relaxed, automated
vs less automated. There is no perfect solution for drawing the line,
Iafraid. I'm sure if we make phenix.refine stop every time it sees esd=0
there will be a great deal of people flooding mailboxes saying "why it's
stopping, I don't care, I want my refinement job finished", etc.
phenix.refine favors automation paradigm while providing a lot of room
for flexibility. You can define custom bonds, angles, torsions, planes,
groups of planes to be parallel, as many as you wish and for any atoms
of your choice. And you can make sure that what you defined was actually
used by inspecting .geo files.
A practical solution to "esd=0 issue" that is somewhere in between the
two extremes ("stop if esd=0" vs "ignore and keep going") is to replace
esd=0 with say esd=0.01 (or whatever is used for rings in TYR or PHE).
This will let program going as before and you will get your plane that I
bet one wouldn't be able to tell that it is not perfect just by looking
> because most people
> don't mean "ignore this record" by zero sigma.
Frankly, I don't know and I wouldn't be so sure. I'd say many wouldn't
tell (and care about) the difference between restraints vs constrains,
not to mention nuances about meaning of esd=0, which is fine.
Those who don't mean "ignore this record" are probably trained to use
the program X, where this assumption is made. Perhaps it's not too
unreasonable to realize that not everything adopted in program X is
equally and fully adopted in program Y.
I can make a list of hundreds other similar decisions that are made
under the hood of phenix.refine automatically.
- Do hydrogens participate in bulk-solvent mask calculation?
- Do vdw radii of non-H change when H are used in refinement?
- What program does if it sees non-positive definite anisotropic ADP or
any of T, L or S matrix?
- What happens if input PDB has ANISOU records, TLS is not requested and
resolution is not great for anisotropic refinement?
- Are H treated as riding or freely refined if data resolution is 0.73A?
- What data resolution is used when you request to do rigid-body refinement?
- What refinement target is used (LS or ML) if there is less than 50
test (free) reflections?
... Yep, I can go on for 100+ more items like this. If every time we
stop and ask users what to do that would not go well!
All the best,
More information about the phenixbb