-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Hi Ryan--

> 
> 1) What is the difference, if any, between potList.add vs.
> potList.append?

There is no difference. I now prefer append, because it's the name used
for Python lists.

> 
> 2) For ensemble-averaging the NOEs, the script eginput/gb3_ensemble/
> tor_cross_two_all.py gives values for an NOE term and an 'enoe' term.
> Why are there two NOE potentials with the same data? The data
> 'hbond.tbl' is inputed twice, once using legacy XPLOR syntax and the
> other using the Python interface. The enoe is added to the potList
> immediately after inputting. But the AvePot function is only applied
> to NOE (not enoe).

There are two distinct potential terms. The AvePot version restrains
each individual ensemble member to obey the noe restraints, while the
ensemble term applies ensures that the ensemble average distances are
restrained. There is no reason the XplorPot was used instead of an NOE
pot- either is fine.

> 
> 3) Is the correct way to implement the ensemble averaging to first
> load the potentials as if it's a single-conformer simulation and
> subsequently apply AvePot? I seem to get into trouble when I directly
> load the restraints with AvePot (into a potList), getting errors that
> say something along the lines of "XplorPot requires an Xplor
> simulation." Where I'm going with this: how do I ensemble average
> some terms and not others? Should I use functions like create_NOEPot
> and protocol.initDihedrals to input the data, apply AvePot to the
> potential terms I want ensemble averaged, and then append all of them
> (ensemble-averaged and -nonaveraged) into a single potList?

The potential term must support ensemble averaging in order to use it
with the EnsembleSimulation- XplorPot does not, which is why you get
those errors. All you can do with non-ensemble aware terms is to
ensemble-average the resulting energies using AvePot. The easiest way to
use AvePot is
  AvePot(OtherPot,args)
where OtherPot is some other (probably non-ensemble-aware term like
XplorPot), and args are the arguments usually passed to the potential
term's constructor. Hence:
  AvePot(XplorPot,"BOND")
will instantiate an ensemble-averaged bond energy term.

You can also ensemble average terms which have previously been created
from the underlying (non-ensemble) Simulation:

from noePotTools import create_NOEPot
rawHB = create_NOEPot("noe-HB","hbond.tbl",esim=xplor.simulation)
noeHB  = AvePot(rawHB)

but here you must be very careful which Simulation the averaged term is
referencing. Constrast that line with

noe = create_NOEPot("noe","noe.tbl")

which creates an energy term to restraint the ensemble-averaged NOE
restraints. 

You can use noeHB and noe together in ensemble refinement. rawHB should
not be used except in construction of noeHB.


> 
> 4) I have a PDB that fails to generate a well-behaved PSF with the
> following sequence:
>    from psfGen import pdbToPSF
>    protocol.initCoords(myPDB)
>    pdbToPSF(myPDB)
> 
> At least I think it fails; I get a crash with a "singular D matrix"
> message. 

The message is from the IVM, probably because all the coordinates are
undefined... 

The sequence should be:

from psfGen import pdbToPSF
pdbToPSF(myPDB)
protocol.initCoords(myPDB)

You may still have some uninitialized atom positions in the PDB file, so
you might try protocol.addUnknownAtoms() in that case.

best regards--
Charles
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.3 (GNU/Linux)
Comment: Processed by Mailcrypt 3.5.8 <http://mailcrypt.sourceforge.net/>

iD8DBQFEotAePK2zrJwS/lYRAp2wAJoCeBzkgnnLW9gGI4KtwpCGcGPHRACcCLlY
C08yAWHE+KNLGLY8q/a87Z8=
=g52M
-----END PGP SIGNATURE-----

Reply via email to