mailr25867 - in /branches/frame_order_cleanup/specific_analyses/frame_order: api.py optimisation.py uf.py


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

Header


Content

Posted by edward on September 17, 2014 - 17:11:
Author: bugman
Date: Wed Sep 17 17:11:20 2014
New Revision: 25867

URL: http://svn.gna.org/viewcvs/relax?rev=25867&view=rev
Log:
Converted all of the specific_analyses.frame_order package to the Sobol' 
point oversampling design.

The correct values are now sent into the target function and all references 
to cdp.num_int_pts has
been replaced with the cdp.sobol_max_points and cdp.sobol_oversample pair of 
variables.

The frame_order.count_sobol_points user function backend has also been 
updated to show the total
number of oversampling points and the number of points used.

Modified:
    branches/frame_order_cleanup/specific_analyses/frame_order/api.py
    branches/frame_order_cleanup/specific_analyses/frame_order/optimisation.py
    branches/frame_order_cleanup/specific_analyses/frame_order/uf.py

Modified: branches/frame_order_cleanup/specific_analyses/frame_order/api.py
URL: 
http://svn.gna.org/viewcvs/relax/branches/frame_order_cleanup/specific_analyses/frame_order/api.py?rev=25867&r1=25866&r2=25867&view=diff
==============================================================================
--- branches/frame_order_cleanup/specific_analyses/frame_order/api.py   
(original)
+++ branches/frame_order_cleanup/specific_analyses/frame_order/api.py   Wed 
Sep 17 17:11:20 2014
@@ -130,7 +130,7 @@
         param_vector, full_tensors, full_in_ref_frame, rdcs, rdc_err, 
rdc_weight, rdc_vect, rdc_const, pcs, pcs_err, pcs_weight, atomic_pos, temp, 
frq, paramag_centre, com, ave_pos_pivot, pivot, pivot_opt = 
target_fn_data_setup(sim_index=sim_index, verbosity=verbosity, 
unset_fail=True)
 
         # Set up the optimisation target function class.
-        target_fn = frame_order.Frame_order(model=cdp.model, 
init_params=param_vector, full_tensors=full_tensors, 
full_in_ref_frame=full_in_ref_frame, rdcs=rdcs, rdc_errors=rdc_err, 
rdc_weights=rdc_weight, rdc_vect=rdc_vect, dip_const=rdc_const, pcs=pcs, 
pcs_errors=pcs_err, pcs_weights=pcs_weight, atomic_pos=atomic_pos, temp=temp, 
frq=frq, paramag_centre=paramag_centre, scaling_matrix=scaling_matrix[0], 
com=com, ave_pos_pivot=ave_pos_pivot, pivot=pivot, pivot_opt=pivot_opt, 
num_int_pts=cdp.num_int_pts)
+        target_fn = frame_order.Frame_order(model=cdp.model, 
init_params=param_vector, full_tensors=full_tensors, 
full_in_ref_frame=full_in_ref_frame, rdcs=rdcs, rdc_errors=rdc_err, 
rdc_weights=rdc_weight, rdc_vect=rdc_vect, dip_const=rdc_const, pcs=pcs, 
pcs_errors=pcs_err, pcs_weights=pcs_weight, atomic_pos=atomic_pos, temp=temp, 
frq=frq, paramag_centre=paramag_centre, scaling_matrix=scaling_matrix[0], 
com=com, ave_pos_pivot=ave_pos_pivot, pivot=pivot, pivot_opt=pivot_opt, 
sobol_max_points=cdp.sobol_max_points, sobol_oversample=cdp.sobol_oversample)
 
         # Make a single function call.  This will cause back calculation and 
the data will be stored in the class instance.
         chi2 = target_fn.func(param_vector)
@@ -481,7 +481,7 @@
             memo = Frame_order_memo(sim_index=sim_index, 
scaling_matrix=scaling_matrix[0])
 
             # Set up the command object to send to the slave and execute.
-            command = Frame_order_grid_command(points=subdivision, 
scaling_matrix=scaling_matrix[0], sim_index=sim_index, model=cdp.model, 
param_vector=param_vector, full_tensors=full_tensors, 
full_in_ref_frame=full_in_ref_frame, rdcs=rdcs, rdc_err=rdc_err, 
rdc_weight=rdc_weight, rdc_vect=rdc_vect, rdc_const=rdc_const, pcs=pcs, 
pcs_err=pcs_err, pcs_weight=pcs_weight, atomic_pos=atomic_pos, temp=temp, 
frq=frq, paramag_centre=paramag_centre, com=com, ave_pos_pivot=ave_pos_pivot, 
pivot=pivot, pivot_opt=pivot_opt, num_int_pts=cdp.num_int_pts, 
verbosity=verbosity)
+            command = Frame_order_grid_command(points=subdivision, 
scaling_matrix=scaling_matrix[0], sim_index=sim_index, model=cdp.model, 
param_vector=param_vector, full_tensors=full_tensors, 
full_in_ref_frame=full_in_ref_frame, rdcs=rdcs, rdc_err=rdc_err, 
rdc_weight=rdc_weight, rdc_vect=rdc_vect, rdc_const=rdc_const, pcs=pcs, 
pcs_err=pcs_err, pcs_weight=pcs_weight, atomic_pos=atomic_pos, temp=temp, 
frq=frq, paramag_centre=paramag_centre, com=com, ave_pos_pivot=ave_pos_pivot, 
pivot=pivot, pivot_opt=pivot_opt, sobol_max_points=cdp.sobol_max_points, 
sobol_oversample=cdp.sobol_oversample, verbosity=verbosity)
 
             # Add the slave command and memo to the processor queue.
             processor.add_to_queue(command, memo)
@@ -572,7 +572,7 @@
         memo = Frame_order_memo(sim_index=sim_index, 
scaling_matrix=scaling_matrix[0])
 
         # Set up the command object to send to the slave and execute.
-        command = Frame_order_minimise_command(min_algor=min_algor, 
min_options=min_options, func_tol=func_tol, grad_tol=grad_tol, 
max_iterations=max_iterations, scaling_matrix=scaling_matrix[0], 
constraints=constraints, sim_index=sim_index, model=cdp.model, 
param_vector=param_vector, full_tensors=full_tensors, 
full_in_ref_frame=full_in_ref_frame, rdcs=rdcs, rdc_err=rdc_err, 
rdc_weight=rdc_weight, rdc_vect=rdc_vect, rdc_const=rdc_const, pcs=pcs, 
pcs_err=pcs_err, pcs_weight=pcs_weight, atomic_pos=atomic_pos, temp=temp, 
frq=frq, paramag_centre=paramag_centre, com=com, ave_pos_pivot=ave_pos_pivot, 
pivot=pivot, pivot_opt=pivot_opt, num_int_pts=cdp.num_int_pts, 
verbosity=verbosity)
+        command = Frame_order_minimise_command(min_algor=min_algor, 
min_options=min_options, func_tol=func_tol, grad_tol=grad_tol, 
max_iterations=max_iterations, scaling_matrix=scaling_matrix[0], 
constraints=constraints, sim_index=sim_index, model=cdp.model, 
param_vector=param_vector, full_tensors=full_tensors, 
full_in_ref_frame=full_in_ref_frame, rdcs=rdcs, rdc_err=rdc_err, 
rdc_weight=rdc_weight, rdc_vect=rdc_vect, rdc_const=rdc_const, pcs=pcs, 
pcs_err=pcs_err, pcs_weight=pcs_weight, atomic_pos=atomic_pos, temp=temp, 
frq=frq, paramag_centre=paramag_centre, com=com, ave_pos_pivot=ave_pos_pivot, 
pivot=pivot, pivot_opt=pivot_opt, sobol_max_points=cdp.sobol_max_points, 
sobol_oversample=cdp.sobol_oversample, verbosity=verbosity)
 
         # Add the slave command and memo to the processor queue.
         processor.add_to_queue(command, memo)

Modified: 
branches/frame_order_cleanup/specific_analyses/frame_order/optimisation.py
URL: 
http://svn.gna.org/viewcvs/relax/branches/frame_order_cleanup/specific_analyses/frame_order/optimisation.py?rev=25867&r1=25866&r2=25867&view=diff
==============================================================================
--- 
branches/frame_order_cleanup/specific_analyses/frame_order/optimisation.py  
(original)
+++ 
branches/frame_order_cleanup/specific_analyses/frame_order/optimisation.py  
Wed Sep 17 17:11:20 2014
@@ -84,7 +84,7 @@
         param_vector, full_tensors, full_in_ref_frame, rdcs, rdc_err, 
rdc_weight, rdc_vect, rdc_const, pcs, pcs_err, pcs_weight, atomic_pos, temp, 
frq, paramag_centre, com, ave_pos_pivot, pivot, pivot_opt = 
target_fn_data_setup(verbosity=0, unset_fail=True)
 
         # Set up the optimisation target function class.
-        target_fn = Frame_order(model=cdp.model, init_params=param_vector, 
full_tensors=full_tensors, full_in_ref_frame=full_in_ref_frame, rdcs=rdcs, 
rdc_errors=rdc_err, rdc_weights=rdc_weight, rdc_vect=rdc_vect, 
dip_const=rdc_const, pcs=pcs, pcs_errors=pcs_err, pcs_weights=pcs_weight, 
atomic_pos=atomic_pos, temp=temp, frq=frq, paramag_centre=paramag_centre, 
scaling_matrix=None, com=com, ave_pos_pivot=ave_pos_pivot, pivot=pivot, 
pivot_opt=pivot_opt, num_int_pts=cdp.num_int_pts)
+        target_fn = Frame_order(model=cdp.model, init_params=param_vector, 
full_tensors=full_tensors, full_in_ref_frame=full_in_ref_frame, rdcs=rdcs, 
rdc_errors=rdc_err, rdc_weights=rdc_weight, rdc_vect=rdc_vect, 
dip_const=rdc_const, pcs=pcs, pcs_errors=pcs_err, pcs_weights=pcs_weight, 
atomic_pos=atomic_pos, temp=temp, frq=frq, paramag_centre=paramag_centre, 
scaling_matrix=None, com=com, ave_pos_pivot=ave_pos_pivot, pivot=pivot, 
pivot_opt=pivot_opt, sobol_max_points=cdp.sobol_max_points, 
sobol_oversample=cdp.sobol_oversample)
 
     # The Sobol' sequence dimensions.
     if cdp.model in [MODEL_ISO_CONE, MODEL_ISO_CONE_FREE_ROTOR, 
MODEL_PSEUDO_ELLIPSE, MODEL_PSEUDO_ELLIPSE_FREE_ROTOR]:
@@ -128,8 +128,9 @@
         cone_theta = cdp.cone_theta
 
     # Loop over the Sobol' points to count them.
+    total_num = len(target_fn.sobol_angles)
     count = 0
-    for i in range(len(target_fn.sobol_angles)):
+    for i in range(total_num):
         # Pseudo-elliptic cone opening angle.
         if pe and theta[i] > theta_max[i]:
             continue
@@ -149,13 +150,17 @@
         # Increment the point count.
         count += 1
 
+        # Maximum reached.
+        if count == cdp.sobol_max_points:
+            break
+
     # Store the count.
     cdp.used_sobol_points = count
 
     # Printout.
-    print("\n%-20s %20s" % ("Total points:", cdp.num_int_pts))
+    print("\n%-20s %20s" % ("Total points:", total_num))
     print("%-20s %20s" % ("Used points:", count))
-    percent = "%s" % (float(count)/float(cdp.num_int_pts)*100) + '%'
+    percent = "%s" % (float(count)/float(total_num)*100) + '%'
     print("%-20s %20s" % ("Percentage:", percent))
 
 
@@ -778,10 +783,6 @@
     if pivot_fixed():
         pivot_opt = False
 
-    # The number of integration points.
-    if not hasattr(cdp, 'num_int_pts'):
-        cdp.num_int_pts = 200000
-
     # The centre of mass of the moving domain - to use as the centroid for 
the average domain position rotation.
     ave_pos_pivot = pipe_centre_of_mass(atom_id=domain_moving(), verbosity=0)
 
@@ -799,7 +800,6 @@
             sys.stdout.write("The centre of mass reference coordinate for 
the rotor models is:\n    %s\n" % list(com))
         if cdp.model != MODEL_RIGID:
             sys.stdout.write("Numerical integration:  Quasi-random Sobol' 
sequence.\n")
-            sys.stdout.write("Number of integration points:  %s\n" % 
cdp.num_int_pts)
         base_data = []
         if rdcs != None and len(rdcs):
             base_data.append("RDCs")
@@ -914,7 +914,7 @@
 class Frame_order_grid_command(Slave_command):
     """Command class for relaxation dispersion optimisation on the slave 
processor."""
 
-    def __init__(self, points=None, scaling_matrix=None, sim_index=None, 
model=None, param_vector=None, full_tensors=None, full_in_ref_frame=None, 
rdcs=None, rdc_err=None, rdc_weight=None, rdc_vect=None, rdc_const=None, 
pcs=None, pcs_err=None, pcs_weight=None, atomic_pos=None, temp=None, 
frq=None, paramag_centre=None, com=None, ave_pos_pivot=None, pivot=None, 
pivot_opt=None, num_int_pts=None, verbosity=None):
+    def __init__(self, points=None, scaling_matrix=None, sim_index=None, 
model=None, param_vector=None, full_tensors=None, full_in_ref_frame=None, 
rdcs=None, rdc_err=None, rdc_weight=None, rdc_vect=None, rdc_const=None, 
pcs=None, pcs_err=None, pcs_weight=None, atomic_pos=None, temp=None, 
frq=None, paramag_centre=None, com=None, ave_pos_pivot=None, pivot=None, 
pivot_opt=None, sobol_max_points=None, sobol_oversample=None, verbosity=None):
         """Initialise the base class, storing all the master data to be sent 
to the slave processor.
 
         This method is run on the master processor whereas the run() method 
is run on the slave processor.
@@ -965,8 +965,10 @@
         @type pivot:                numpy rank-1, 3D array or None
         @keyword pivot_opt:         A flag which if True will allow the 
pivot point of the motion to be optimised.
         @type pivot_opt:            bool
-        @keyword num_int_pts:       The number of points to use for the 
numerical integration technique.
-        @type num_int_pts:          int
+        @keyword sobol_max_points:  The maximum number of Sobol' points to 
use for the numerical PCS integration technique.
+        @type sobol_max_points:     int
+        @keyword sobol_oversample:  The oversampling factor Ov used for the 
total number of points N * Ov * 10**M, where N is the maximum number of 
Sobol' points and M is the number of dimensions or torsion-tilt angles for 
the system.
+        @type sobol_oversample:     int
         @keyword verbosity:         The verbosity level.  This is used by 
the result command returned to the master for printouts.
         @type verbosity:            int
         """
@@ -994,7 +996,8 @@
         self.ave_pos_pivot = ave_pos_pivot
         self.pivot = pivot
         self.pivot_opt = pivot_opt
-        self.num_int_pts = num_int_pts
+        self.sobol_max_points = sobol_max_points
+        self.sobol_oversample = sobol_oversample
         self.verbosity = verbosity
 
 
@@ -1002,7 +1005,7 @@
         """Set up and perform the optimisation."""
 
         # Set up the optimisation target function class.
-        target_fn = Frame_order(model=self.model, 
init_params=self.param_vector, full_tensors=self.full_tensors, 
full_in_ref_frame=self.full_in_ref_frame, rdcs=self.rdcs, 
rdc_errors=self.rdc_err, rdc_weights=self.rdc_weight, rdc_vect=self.rdc_vect, 
dip_const=self.rdc_const, pcs=self.pcs, pcs_errors=self.pcs_err, 
pcs_weights=self.pcs_weight, atomic_pos=self.atomic_pos, temp=self.temp, 
frq=self.frq, paramag_centre=self.paramag_centre, 
scaling_matrix=self.scaling_matrix, com=self.com, 
ave_pos_pivot=self.ave_pos_pivot, pivot=self.pivot, pivot_opt=self.pivot_opt, 
num_int_pts=self.num_int_pts)
+        target_fn = Frame_order(model=self.model, 
init_params=self.param_vector, full_tensors=self.full_tensors, 
full_in_ref_frame=self.full_in_ref_frame, rdcs=self.rdcs, 
rdc_errors=self.rdc_err, rdc_weights=self.rdc_weight, rdc_vect=self.rdc_vect, 
dip_const=self.rdc_const, pcs=self.pcs, pcs_errors=self.pcs_err, 
pcs_weights=self.pcs_weight, atomic_pos=self.atomic_pos, temp=self.temp, 
frq=self.frq, paramag_centre=self.paramag_centre, 
scaling_matrix=self.scaling_matrix, com=self.com, 
ave_pos_pivot=self.ave_pos_pivot, pivot=self.pivot, pivot_opt=self.pivot_opt, 
sobol_max_points=self.sobol_max_points, 
sobol_oversample=self.sobol_oversample)
 
         # Grid search.
         results = grid_point_array(func=target_fn.func, args=(), 
points=self.points, verbosity=self.verbosity)
@@ -1047,7 +1050,7 @@
 class Frame_order_minimise_command(Slave_command):
     """Command class for relaxation dispersion optimisation on the slave 
processor."""
 
-    def __init__(self, min_algor=None, min_options=None, func_tol=None, 
grad_tol=None, max_iterations=None, scaling_matrix=None, constraints=False, 
sim_index=None, model=None, param_vector=None, full_tensors=None, 
full_in_ref_frame=None, rdcs=None, rdc_err=None, rdc_weight=None, 
rdc_vect=None, rdc_const=None, pcs=None, pcs_err=None, pcs_weight=None, 
atomic_pos=None, temp=None, frq=None, paramag_centre=None, com=None, 
ave_pos_pivot=None, pivot=None, pivot_opt=None, num_int_pts=None, 
verbosity=None):
+    def __init__(self, min_algor=None, min_options=None, func_tol=None, 
grad_tol=None, max_iterations=None, scaling_matrix=None, constraints=False, 
sim_index=None, model=None, param_vector=None, full_tensors=None, 
full_in_ref_frame=None, rdcs=None, rdc_err=None, rdc_weight=None, 
rdc_vect=None, rdc_const=None, pcs=None, pcs_err=None, pcs_weight=None, 
atomic_pos=None, temp=None, frq=None, paramag_centre=None, com=None, 
ave_pos_pivot=None, pivot=None, pivot_opt=None, sobol_max_points=None, 
sobol_oversample=None, verbosity=None):
         """Initialise the base class, storing all the master data to be sent 
to the slave processor.
 
         This method is run on the master processor whereas the run() method 
is run on the slave processor.
@@ -1106,8 +1109,10 @@
         @type pivot:                numpy rank-1, 3D array or None
         @keyword pivot_opt:         A flag which if True will allow the 
pivot point of the motion to be optimised.
         @type pivot_opt:            bool
-        @keyword num_int_pts:       The number of points to use for the 
numerical integration technique.
-        @type num_int_pts:          int
+        @keyword sobol_max_points:  The maximum number of Sobol' points to 
use for the numerical PCS integration technique.
+        @type sobol_max_points:     int
+        @keyword sobol_oversample:  The oversampling factor Ov used for the 
total number of points N * Ov * 10**M, where N is the maximum number of 
Sobol' points and M is the number of dimensions or torsion-tilt angles for 
the system.
+        @type sobol_oversample:     int
         @keyword scaling_matrix:    The diagonal, square scaling matrix.
         @type scaling_matrix:       numpy diagonal matrix
         """
@@ -1139,7 +1144,8 @@
         self.ave_pos_pivot = ave_pos_pivot
         self.pivot = pivot
         self.pivot_opt = pivot_opt
-        self.num_int_pts = num_int_pts
+        self.sobol_max_points = sobol_max_points
+        self.sobol_oversample = sobol_oversample
         self.verbosity = verbosity
 
         # Linear constraints.
@@ -1163,7 +1169,7 @@
         """Set up and perform the optimisation."""
 
         # Set up the optimisation target function class.
-        target_fn = Frame_order(model=self.model, 
init_params=self.param_vector, full_tensors=self.full_tensors, 
full_in_ref_frame=self.full_in_ref_frame, rdcs=self.rdcs, 
rdc_errors=self.rdc_err, rdc_weights=self.rdc_weight, rdc_vect=self.rdc_vect, 
dip_const=self.rdc_const, pcs=self.pcs, pcs_errors=self.pcs_err, 
pcs_weights=self.pcs_weight, atomic_pos=self.atomic_pos, temp=self.temp, 
frq=self.frq, paramag_centre=self.paramag_centre, 
scaling_matrix=self.scaling_matrix, com=self.com, 
ave_pos_pivot=self.ave_pos_pivot, pivot=self.pivot, pivot_opt=self.pivot_opt, 
num_int_pts=self.num_int_pts)
+        target_fn = Frame_order(model=self.model, 
init_params=self.param_vector, full_tensors=self.full_tensors, 
full_in_ref_frame=self.full_in_ref_frame, rdcs=self.rdcs, 
rdc_errors=self.rdc_err, rdc_weights=self.rdc_weight, rdc_vect=self.rdc_vect, 
dip_const=self.rdc_const, pcs=self.pcs, pcs_errors=self.pcs_err, 
pcs_weights=self.pcs_weight, atomic_pos=self.atomic_pos, temp=self.temp, 
frq=self.frq, paramag_centre=self.paramag_centre, 
scaling_matrix=self.scaling_matrix, com=self.com, 
ave_pos_pivot=self.ave_pos_pivot, pivot=self.pivot, pivot_opt=self.pivot_opt, 
sobol_max_points=self.sobol_max_points, 
sobol_oversample=self.sobol_oversample)
 
         # Minimisation.
         results = generic_minimise(func=target_fn.func, args=(), 
x0=self.param_vector, min_algor=self.min_algor, min_options=self.min_options, 
func_tol=self.func_tol, grad_tol=self.grad_tol, maxiter=self.max_iterations, 
A=self.A, b=self.b, full_output=True, print_flag=self.verbosity)

Modified: branches/frame_order_cleanup/specific_analyses/frame_order/uf.py
URL: 
http://svn.gna.org/viewcvs/relax/branches/frame_order_cleanup/specific_analyses/frame_order/uf.py?rev=25867&r1=25866&r2=25867&view=diff
==============================================================================
--- branches/frame_order_cleanup/specific_analyses/frame_order/uf.py    
(original)
+++ branches/frame_order_cleanup/specific_analyses/frame_order/uf.py    Wed 
Sep 17 17:11:20 2014
@@ -385,7 +385,7 @@
  
     # Store the values.
     cdp.sobol_max_points = max_num
-    cdp.sobol_oversample_factor = oversample
+    cdp.sobol_oversample = oversample
 
     # Count the number of Sobol' points for the current model.
     count_sobol_points()




Related Messages


Powered by MHonArc, Updated Wed Sep 17 17:20:03 2014