Author: varioustoxins Date: Tue Mar 27 17:04:02 2007 New Revision: 3242 URL: http://svn.gna.org/viewcvs/relax?rev=3242&view=rev Log: changes to add minimise command processing for multiprocessing Modified: branches/multi_processor/specific_fns/model_free.py Modified: branches/multi_processor/specific_fns/model_free.py URL: http://svn.gna.org/viewcvs/relax/branches/multi_processor/specific_fns/model_free.py?rev=3242&r1=3241&r2=3242&view=diff ============================================================================== --- branches/multi_processor/specific_fns/model_free.py (original) +++ branches/multi_processor/specific_fns/model_free.py Tue Mar 27 17:04:02 2007 @@ -28,11 +28,14 @@ from re import match, search from string import replace, split import sys +import cStringIO #FIXME: temporary for pickle tests +import marshal #FIXME: temporary for pickle tests from base_class import Common_functions from maths_fns.mf import Mf from minimise.generic import generic_minimise -from float import isNaN,isInf +from float import isNaN,isInf +from multi.mpi4py_processor import MF_minimise_command class Model_free(Common_functions): @@ -2325,12 +2328,84 @@ - # Initialise the function to minimise. - ###################################### - - self.mf = Mf(init_params=self.param_vector, param_set=self.param_set, diff_type=diff_type, diff_params=diff_params, scaling_matrix=self.scaling_matrix, num_res=num_res, equations=equations, param_types=param_types, param_values=param_values, relax_data=relax_data, errors=relax_error, bond_length=r, csa=csa, num_frq=num_frq, frq=frq, num_ri=num_ri, remap_table=remap_table, noe_r1_table=noe_r1_table, ri_labels=ri_labels, gx=self.relax.data.gx, gh=self.relax.data.gh, g_ratio=self.relax.data.g_ratio, h_bar=self.relax.data.h_bar, mu0=self.relax.data.mu0, num_params=num_params, vectors=xh_unit_vectors) - - +# # Initialise the function to minimise. +# ###################################### +# print 'initialise Mf' +# print 'init_params',self.param_vector +# print 'param_se',self.param_set +# print 'diff_type',diff_type +# print 'diff_params',diff_params +# print 'scaling_matrix',self.scaling_matrix +# print 'num_res',num_res +# print 'equations',equations +# print 'param_types',param_types +# print 'param_values',param_values +# print 'relax_data',relax_data +# print 'errors',relax_error +# print 'bond_length',r +# print 'csa=',csa +# print 'num_frq',num_frq +# print 'frq',frq +# print 'num_ri',num_ri +# print 'remap_table',remap_table +# print 'noe_r1_table',noe_r1_table +# print 'ri_labels',ri_labels +# print 'gx',self.relax.data.gx +# print 'gh',self.relax.data.gh +# print 'g_ratio',self.relax.data.g_ratio +# print 'h_bar',self.relax.data.h_bar +# print 'mu0',self.relax.data.mu0 +# print 'num_params',num_params +# print 'vectors',xh_unit_vectors +# +# data_list = [ 'initialise Mf', +# 'init_params',self.param_vector, +# 'param_set',self.param_set, +# 'diff_type',diff_type, +# 'diff_params',diff_params, +# 'scaling_matrix',self.scaling_matrix, +# 'num_res',num_res, +# 'equations',equations, +# 'param_types',param_types, +# 'param_values',param_values, +# 'relax_data',relax_data, +# 'errors',relax_error, +# 'bond_length',r, +# 'csa=',csa, +# 'num_frq',num_frq, +# 'frq',frq, +# 'num_ri',num_ri, +# 'remap_table',remap_table, +# 'noe_r1_table',noe_r1_table, +# 'ri_labels',ri_labels, +# 'gx',self.relax.data.gx, +# 'gh',self.relax.data.gh,\ +# 'g_ratio',self.relax.data.g_ratio, +# 'h_bar',self.relax.data.h_bar, +# 'mu0',self.relax.data.mu0, +# 'num_params',num_params, +# 'vectors',xh_unit_vectors] +# for elem in data_list: +# marshal.loads(marshal.dumps(elem)) +# self.mf = Mf(init_params=self.param_vector, param_set=self.param_set, diff_type=diff_type, +# diff_params=diff_params, scaling_matrix=self.scaling_matrix, num_res=num_res, +# equations=equations, param_types=param_types, param_values=param_values, +# relax_data=relax_data, errors=relax_error, bond_length=r, csa=csa, num_frq=num_frq, +# frq=frq, num_ri=num_ri, remap_table=remap_table, noe_r1_table=noe_r1_table, +# ri_labels=ri_labels, gx=self.relax.data.gx, gh=self.relax.data.gh, +# g_ratio=self.relax.data.g_ratio, h_bar=self.relax.data.h_bar, +# mu0=self.relax.data.mu0, num_params=num_params, vectors=xh_unit_vectors) + command=MF_minimise_command() + command.set_mf(init_params=self.param_vector, param_set=self.param_set, diff_type=diff_type, + diff_params=diff_params, scaling_matrix=self.scaling_matrix, num_res=num_res, + equations=equations, param_types=param_types, param_values=param_values, + relax_data=relax_data, errors=relax_error, bond_length=r, csa=csa, num_frq=num_frq, + frq=frq, num_ri=num_ri, remap_table=remap_table, noe_r1_table=noe_r1_table, + ri_labels=ri_labels, gx=self.relax.data.gx, gh=self.relax.data.gh, + g_ratio=self.relax.data.g_ratio, h_bar=self.relax.data.h_bar, + mu0=self.relax.data.mu0, num_params=num_params, vectors=xh_unit_vectors) + #test.assert_mf_equivalent(self.mf) + ##self.mf=test.mf # Setup the minimisation algorithm when constraints are present. ################################################################ @@ -2362,20 +2437,32 @@ # Back-calculation. ################### + #FIXME could be neater? if min_algor == 'back_calc': - return self.mf.calc_ri() + return command.build_mf().calc_ri() # Minimisation. ############### - + #FIXME remove old version +# if constraints: +# results = generic_minimise(func=self.mf.func, dfunc=self.mf.dfunc, d2func=self.mf.d2func, args=(), x0=self.param_vector, min_algor=min_algor, min_options=min_options, func_tol=func_tol, grad_tol=grad_tol, maxiter=max_iterations, A=A, b=b, full_output=1, print_flag=print_flag) +# else: +# results = generic_minimise(func=self.mf.func, dfunc=self.mf.dfunc, d2func=self.mf.d2func, args=(), x0=self.param_vector, min_algor=min_algor, min_options=min_options, func_tol=func_tol, grad_tol=grad_tol, maxiter=max_iterations, full_output=1, print_flag=print_flag) +# if results == None: +# return + #FIXME??? strange contraints if constraints: - results = generic_minimise(func=self.mf.func, dfunc=self.mf.dfunc, d2func=self.mf.d2func, args=(), x0=self.param_vector, min_algor=min_algor, min_options=min_options, func_tol=func_tol, grad_tol=grad_tol, maxiter=max_iterations, A=A, b=b, full_output=1, print_flag=print_flag) + command.set_minimise(args=(), x0=self.param_vector, min_algor=min_algor, min_options=min_options, + func_tol=func_tol, grad_tol=grad_tol, maxiter=max_iterations, A=A, b=b, full_output=1, + print_flag=print_flag) else: - results = generic_minimise(func=self.mf.func, dfunc=self.mf.dfunc, d2func=self.mf.d2func, args=(), x0=self.param_vector, min_algor=min_algor, min_options=min_options, func_tol=func_tol, grad_tol=grad_tol, maxiter=max_iterations, full_output=1, print_flag=print_flag) - if results == None: - return - self.param_vector, self.func, iter, fc, gc, hc, self.warning = results + command.set_minimise(args=(), x0=self.param_vector, min_algor=min_algor, min_options=min_options, + func_tol=func_tol, grad_tol=grad_tol, maxiter=max_iterations, full_output=1, + print_flag=print_flag) + command.run(None) + + self.param_vector, self.func, iter, fc, gc, hc, self.warning = command.results self.iter_count = self.iter_count + iter self.f_count = self.f_count + fc self.g_count = self.g_count + gc