On 9/29/06, Alexandar Hansen <viochemist@xxxxxxxxx> wrote:
Hello again,
I'm having some problems getting relax to read in an RNA pdb. When I use MI
(local_tm) it runs perfectly well, but when I go to sphere, it crashes.
I realized quickly that I needed to tell the pdb input function to look for
different nuclei so I changed those lines (380 and 174) in full_analysis.py
to:
pdb(name, 'etar_au22_phage_df_pt.pdb', heteronuc='N1', proton='H1')
And that helped, but still it crashed. I was using a pdb where the
residues weren't numbered sequentially, so I tried one where they were
sequential and that didn't help. I simplified the PDB and input down to one
residue and it still failed. Using the Input and PDB I have below, this is
my full result when setting self.diff_model = 'sphere':
Are these three failures identical? Do they print out the same error
message (the traceback)?
$ python relax full_analysis.py
relax> run.create(run='sphere', run_type='mf')
relax> results.read(run='sphere', file='results', dir='local_tm/aic',
format='columnar')
Opening the file 'local_tm/aic/results.bz2' for reading.
relax> model_free.remove_tm(run='sphere', res_num=None)
relax> pdb(run='sphere', file='etar_au22_phage_df_pt.pdb',
dir=None, model=None, heteronuc='N1', proton='H1', load_seq=1)
Loading all structures from the PDB file.
Structure('etar_au22_phage_df_pt.pdb', model=1):
Nucleotide chain of length 1
Calculating unit XH vectors.
Structure 1
Traceback (most recent call last):
File "relax", line 458, in ?
Relax()
File "relax", line 170, in __init__
self.interpreter.run()
File
"/local/home/viochem/relax_1.2.7/prompt/interpreter.py",
line 213, in run
run_script(intro=self.relax.intro_string, local=self.local,
script_file=self.relax.script_file, quit=1)
File
"/local/home/viochem/relax_1.2.7/prompt/interpreter.py",
line 388, in run_script
console.interact (intro, local, script_file, quit)
File
"/local/home/viochem/relax_1.2.7/prompt/interpreter.py",
line 340, in interact_script
execfile(script_file, local)
File "full_analysis.py", line 412, in ?
Main()
File "full_analysis.py", line 174, in __init__
pdb(name, 'etar_au22_phage_df_pt.pdb', heteronuc='N1', proton='H1')
File "/local/home/viochem/relax_1.2.7/prompt/pdb.py",
line 129, in pdb
self.relax.generic.pdb.load(run=run, file=file, dir=dir, model=model,
heteronuc=heteronuc, proton=proton, load_seq=load_seq)
File
"/local/home/viochem/relax_1.2.7/generic_fns/pdb.py", line
198, in load
self.vectors()
File
"/local/home/viochem/relax_1.2.7/generic_fns/pdb.py", line
229, in vectors
pdb_residues =
self.relax.data.pdb[self.run].structures[i].peptide_chains[0].residues
IndexError: list index out of range
Is this a bug, or is there something else I'm forgetting? I find the
second
to last line a little curious (pdb_residues = ... .peptide_chains[0]... )
since I'm using a nucleic acid.
Yep, that is most definitely a bug! For your molecule it should be
'nucleotide_chains' rather than 'peptide_chains'. Could you please
create another bug report for this one? Thanks. All that's needed is
the print out from the program together with the traceback message, a
link to your post which is now archived at
https://mail.gna.org/public/relax-users/ (don't forget to include the
message ID as this helps others to precisely identify the post in
their archived email messages), and possibly the sample data from the
end of your message.
Now, the difference between 'nucleotide_chains' and 'peptide_chains'
brings up an interesting problem. For a PDB file with a single
protein/peptide or a single nucleic acid molecule, there should be no
problems. But what happens if a PDB file is input which has one
protein molecule and one RNA molecule? In this case there will be
both 'nucleotide_chains' and 'peptide_chains'. How will relax know
whether the user is studying the protein or the RNA (or both)? Or
what if there are two protein molecules? Or two RNA molecules? The
solution to all these questions should probably be implemented in
relax as a fix to the bug. The current 'pdb()' user function is very
limited.
So, In relation to this, what are the important features of the input pdb?
1) sequential numbering of the residues
This I don't know. The PDB file is being read by the PDB reader from
Scientific python
(http://starship.python.net/~hinsen/ScientificPython/). The
description of the resultant data structure is given in the Scientific
python manual at
http://starship.python.net/~hinsen/ScientificPython/ScientificPythonManual/Scientific_25.html.
If Scientific python can't handle a certain PDB file, unfortunately
there's not much I can do about it. For most PDB files this shouldn't
be a problem.
2) sequential numbering of the atoms
Again this is up to Scientific python.
3) spacing of the columns
This shouldn't be a problem (unless two columns are fused due to
insufficient whitespace).
4) first line (MODEL #)
5) Last two lines (ENDMDL and END)
The Scientific PDB reader handles all PDB types so these lines should
not be a worry.
In the distant past relax had two user functions, one called 'pdb()'
and the other 'vectors()'. These were fused into the single 'pdb()'
function. Thinking about how RNA has multiple data sets per residue,
each of which is specified by different atom names in the PDB, I think
the function should be separated again. Then the PDB would be loaded
once and the XH unit vectors calculated separately for each data set
type.
I hope this info helps,
Edward