mailRe: Final model-free run with dauvergne_protocol.py


Others Months | Index by Date | Thread Index
>>   [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Header


Content

Posted by Edward d'Auvergne on September 25, 2012 - 12:59:
Hi Nick,

I'll respond below:

Do you know why only 2 iterations for each diffusion tensor was completed?


I was kind of hoping you could suggest a few possibilities for such an
issue. I'm having a hard time figuring out why.

This may or may not be a problem.  It could be that the structure is
so well defined (well the NH backbone vector orientations at least)
and the combined dynamic parameter and model spaces are simple enought
that the algorithm converges incredibly quickly.  relax is designed to
produce an huge quantity of messages for the sole purpose of being
able to understand what is happening.

Instead of being a blackbox like the other model-free programs, you
can carefully go through the relax logs and see exactly what has
happened at each step - relax hides nothing from you.  To understand,
It is good to know the protocol that is being used.  My 2007 and 2008b
papers, PhD thesis on Amazon or a free PDF at
http://www.nmr-relax.com/refs.html#dAuvergne06, and/or the model-free
chapter of the relax user manual (specifically the current figure 8.3)
are all useful for understanding what is happening.  Then after
carefully checking the logs can you be certain of your result.

You can also look at the results from each of the diffusion models.
The final results for each are preserved at the end of the model-free
analysis.  You just have to use the data pipe editor window to switch
to the different data pipes for each diffusion model and then use the
'User function' menu system to visualise and output the results.

Another validation would be to run your data through the consistency
testing analysis added to relax by Sebastien Morin.  See that chapter
of the user manual for more details
(http://www.nmr-relax.com/manual/Consistency_testing.html).  This will
tell you if you have inconsistencies in your R2 data.


To rule out a possible PDB problem, I wanted to try the same calculations
with another PDB. The first PDB we used is an NMR structure of the protein,
which includes the HN protons (all labeled H). It got loaded appropriately
by relax. However, whenever I try a crystal structure PDB to which protons
are added (e.g. with PyMOL or DSVisualizer), relax spits out errors.

Example:

I added protons to a crystal structure PDB and the file looks something like
this:

...
ATOM    218  N   ALA A  12      60.379   7.496  -2.579  1.00 21.96
[snip]
ATOM    223  HN  ALA A  12      60.890   6.559  -2.506  1.00 24.77
[snip]
...

Evidently, relax doesn't recognize 'HN' as the proton spin. I tried changing
the spin_id='@HN' in the dauvergne script but it doesn't work.

In relax, nothing is assumed!  You can call your proton spins
'Puff_the_magic_dragon' and relax will accept that (whitespace and the
characters '#', '@', and ':" are the only problems).  Then again, the
PDB format itself might constrain you a bit so if you are using a PDB
file, you will have to shorten it to 'PUFF' or 'PTMD'.  In reality,
relax has no special atom naming translation tables (maybe in the
future this could be added if it doesn't break things for the RNA/DNA,
sugar, and organic molecule people).  So when using a PDB file, you
are constrained by the convention used in that file.  You do have one
option though, you can load all the 'HN' spins and then rename them
with the commands:

structure.load_spins('@HN')
spin.name(name='Puff_the_magic_dragon', spin_id='@HN', force=True)

Then you should be able to subsequently set up your
'Puff_the_magic_dragon' protons as the source of your dipole-dipole
relaxation.


I also tried
replacing all 'HN' by 'H' in the PDB but I get the following error:
[snip]
relax> structure.read_pdb(file='test.pdb', dir=None, read_mol=None,
set_mol_name=None, read_model=None, set_model_num=None, parser='internal')

Internal relax PDB parser.
Opening the file 'test.pdb' for reading.
Traceback (most recent call last):
  File "/usr/local/relax-2.1.0/multi/processor.py", line 479, in run
    self.callback.init_master(self)
  File "/usr/local/relax-2.1.0/multi/__init__.py", line 318, in
default_init_master
    self.master.run()
  File "/usr/local/relax-2.1.0/relax.py", line 182, in run
    self.interpreter.run(self.script_file)
  File "/usr/local/relax-2.1.0/prompt/interpreter.py", line 279, in run
    return run_script(intro=self.__intro_string, local=locals(),
script_file=script_file, quit=self.__quit_flag,
show_script=self.__show_script, raise_relax_error=self.__raise_relax_error)
  File "/usr/local/relax-2.1.0/prompt/interpreter.py", line 569, in
run_script
    return console.interact(intro, local, script_file, quit,
show_script=show_script, raise_relax_error=raise_relax_error)
  File "/usr/local/relax-2.1.0/prompt/interpreter.py", line 454, in
interact_script
    exec_script(script_file, local)
  File "/usr/local/relax-2.1.0/prompt/interpreter.py", line 328, in
exec_script
    runpy.run_module(module, globals)
  File "/usr/lib/python2.7/runpy.py", line 180, in run_module
    fname, loader, pkg_name)
  File "/usr/lib/python2.7/runpy.py", line 72, in _run_code
    exec code in run_globals
  File
"/home/dgagne/nmrdata5/DG12-116_15SEP2012_ModelFree_Analysis_of_ECP_Free_Form/dauvergne_protocol/dauvergne_protocol.py",
line 184, in <module>
    structure.read_pdb('test.pdb')
  File "/usr/local/relax-2.1.0/prompt/uf_objects.py", line 219, in __call__
    self._backend(*new_args, **uf_kargs)
  File "/usr/local/relax-2.1.0/generic_fns/structure/main.py", line 505, in
read_pdb
    cdp.structure.load_pdb(file_path, read_mol=read_mol,
set_mol_name=set_mol_name, read_model=read_model,
set_model_num=set_model_num, verbosity=verbosity)
  File "/usr/local/relax-2.1.0/generic_fns/structure/internal.py", line
1090, in load_pdb
    mol.fill_object_from_pdb(mol_records)
  File "/usr/local/relax-2.1.0/generic_fns/structure/internal.py", line
2096, in fill_object_from_pdb
    record = self._parse_pdb_record(record)
  File "/usr/local/relax-2.1.0/generic_fns/structure/internal.py", line
1932, in _parse_pdb_record
    fields[11] = float(fields[11])
ValueError: invalid literal for float(): 1.00 5
---------------------------------------------------------------------------

This it the classic message from the relax internal PDB reader for a
corrupted PDB file.  I should one day modify the parser to catch
character shifts in the PDB file, as this is a commonly encountered
problem.  The issue is that in the PDB, the columns are defined by
absolute character position
(http://www.nmr-relax.com/api/generic_fns.structure.internal.MolContainer-class.html#_parse_pdb_record).
 You would need to replace 'HN' with ' N' rather than 'N'.  Note the
single space in front of the 'N' here, this is needed to preserve the
rigid position based column definitions.


I tried several different PDBs of the protein and I always run into similar
'PDB parser' errors. How do you typically prepare your PDBs to make sure
they are properly loaded by relax?

For this you can use the PDB validation server at
http://deposit.rcsb.org/validate/.  If it passes there, then relax
will be able to handle it.  The more difficult part will be then to
match your PDB spins to that in your other data files loaded into
relax, but for protons which are only used in the definition of the
magnetic dipole-dipole interaction, this should be no issue.

Regards,

Edward



Related Messages


Powered by MHonArc, Updated Thu Sep 27 16:20:10 2012