Author: bugman
Date: Fri Sep 12 15:45:45 2014
New Revision: 25795
URL: http://svn.gna.org/viewcvs/relax?rev=25795&view=rev
Log:
The frame_order.pdb_model user function can now properly handle a failed pivot
optimisation.
This is when the pivot point optimises to a coordinate outside of the PDB
limits.
Now all calls to specific_analyses.frame_order.data.generate_pivot() from the
module
specific_analyses.frame_order.geometric set the pdb_limit flag to True. This
allows all
representation objects to be within the PDB limits. The algorithm in
generate_pivot() has been
extended to allow higher positive values, as the real PDB limits are [-999.999,
9999.999]. And a
RelaxWarning is called when the pivot is outside to tell the user about it.
Modified:
branches/frame_order_cleanup/specific_analyses/frame_order/data.py
branches/frame_order_cleanup/specific_analyses/frame_order/geometric.py
Modified: branches/frame_order_cleanup/specific_analyses/frame_order/data.py
URL:
http://svn.gna.org/viewcvs/relax/branches/frame_order_cleanup/specific_analyses/frame_order/data.py?rev=25795&r1=25794&r2=25795&view=diff
==============================================================================
--- branches/frame_order_cleanup/specific_analyses/frame_order/data.py
(original)
+++ branches/frame_order_cleanup/specific_analyses/frame_order/data.py Fri Sep
12 15:45:45 2014
@@ -24,9 +24,11 @@
# Python module imports.
from numpy import array, float64, zeros
+from warnings import warn
# relax module imports.
from lib.errors import RelaxError
+from lib.warnings import RelaxWarning
from lib.geometry.rotations import euler_to_R_zyz
from pipe_control import pipes
from pipe_control.interatomic import interatomic_loop
@@ -164,11 +166,23 @@
# PDB limits.
if pivot != None and pdb_limit:
+ # The original pivot, as text.
+ orig_pivot = "[%.3f, %.3f, %.3f]" % (pivot[0], pivot[1], pivot[2])
+
+ # Check each coordinate.
+ out = False
for i in range(3):
- if pivot[i] < -1000.0:
- pivot[i] = -999.999
- elif pivot[i] > 1000.0:
- pivot[i] = 999.999
+ if pivot[i] <= -1000.0:
+ pivot[i] = -950.0
+ out = True
+ elif pivot[i] > 10000.0:
+ pivot[i] = 9500.0
+ out = True
+
+ # Failure.
+ if out:
+ new_pivot = "[%.3f, %.3f, %.3f]" % (pivot[0], pivot[1], pivot[2])
+ warn(RelaxWarning("The pivot point %s is outside of the PDB
coordinate limits of [-999.999, 9999.999], shifting to %s." % (orig_pivot,
new_pivot)))
# Return the pivot.
return pivot
Modified:
branches/frame_order_cleanup/specific_analyses/frame_order/geometric.py
URL:
http://svn.gna.org/viewcvs/relax/branches/frame_order_cleanup/specific_analyses/frame_order/geometric.py?rev=25795&r1=25794&r2=25795&view=diff
==============================================================================
--- branches/frame_order_cleanup/specific_analyses/frame_order/geometric.py
(original)
+++ branches/frame_order_cleanup/specific_analyses/frame_order/geometric.py
Fri Sep 12 15:45:45 2014
@@ -80,8 +80,8 @@
mol = structure.get_molecule(mol_name, model=model_nums[i])
# The pivot points.
- pivot1 = generate_pivot(order=1, sim_index=sim_indices[i])
- pivot2 = generate_pivot(order=2, sim_index=sim_indices[i])
+ pivot1 = generate_pivot(order=1, sim_index=sim_indices[i],
pdb_limit=True)
+ pivot2 = generate_pivot(order=2, sim_index=sim_indices[i],
pdb_limit=True)
# A single z-axis, when no rotor object is present.
if cdp.model in [MODEL_ISO_CONE_TORSIONLESS]:
@@ -182,7 +182,7 @@
mol = structure.get_molecule('cones', model=model_nums[i])
# The 1st pivot point.
- pivot = generate_pivot(order=1, sim_index=sim_indices[i])
+ pivot = generate_pivot(order=1, sim_index=sim_indices[i],
pdb_limit=True)
# The rotation matrix (rotation from the z-axis to the cone axis).
R = zeros((3, 3), float64)
@@ -344,8 +344,8 @@
T = eye(3)
# The pivot points.
- pivot1 = generate_pivot(order=1)
- pivot2 = generate_pivot(order=2)
+ pivot1 = generate_pivot(order=1, pdb_limit=True)
+ pivot2 = generate_pivot(order=2, pdb_limit=True)
# The models to loop over.
model_nums = [None]
@@ -430,8 +430,8 @@
# Loop over the models.
for i in range(len(model_nums)):
# The pivot points.
- pivot1 = generate_pivot(order=1, sim_index=sim_indices[i])
- pivot2 = generate_pivot(order=2, sim_index=sim_indices[i])
+ pivot1 = generate_pivot(order=1, sim_index=sim_indices[i],
pdb_limit=True)
+ pivot2 = generate_pivot(order=2, sim_index=sim_indices[i],
pdb_limit=True)
# The single rotor models.
if cdp.model in [MODEL_ROTOR, MODEL_FREE_ROTOR, MODEL_ISO_CONE,
MODEL_ISO_CONE_FREE_ROTOR, MODEL_PSEUDO_ELLIPSE,
MODEL_PSEUDO_ELLIPSE_FREE_ROTOR]:
_______________________________________________
relax (http://www.nmr-relax.com)
This is the relax-commits mailing list
[email protected]
To unsubscribe from this list, get a password
reminder, or change your subscription options,
visit the list information page at
https://mail.gna.org/listinfo/relax-commits