def get_param_values(self, model_info=None, sim_index=None): """Return a vector of parameter values. @keyword model_info: The model information from model_loop(). This is unused. @type model_info: None @keyword sim_index: The optional Monte Carlo simulation index. @type sim_index: int @return: The vector of parameter values. @rtype: list of str """ # Return the vector. return assemble_param_vector(sim_index=sim_index)
def get_param_values(self, model_info=None, sim_index=None): """Return a vector of parameter values. @keyword model_info: The model information from model_loop(). This is unused. @type model_info: None @keyword sim_index: The optional Monte Carlo simulation index. @type sim_index: int @return: The vector of parameter values. @rtype: list of str """ # Return the vector. return assemble_param_vector(sim_index=sim_index)
def target_fn_setup(sim_index=None, scaling_matrix=None, verbosity=0): """Initialise the target function for optimisation or direct calculation. @keyword sim_index: The index of the simulation to optimise. This should be None if normal optimisation is desired. @type sim_index: None or int @keyword scaling_matrix: The diagonal and square scaling matrix. @type scaling_matrix: numpy rank-2, float64 array or None @keyword verbosity: A flag specifying the amount of information to print. The higher the value, the greater the verbosity. @type verbosity: int """ # Test if the N-state model has been set up. if not hasattr(cdp, 'model'): raise RelaxNoModelError('N-state') # '2-domain' model setup tests. if cdp.model == '2-domain': # The number of states. if not hasattr(cdp, 'N'): raise RelaxError("The number of states has not been set.") # The reference domain. if not hasattr(cdp, 'ref_domain'): raise RelaxError("The reference domain has not been set.") # Update the model parameters if necessary. update_model() # Create the initial parameter vector. param_vector = assemble_param_vector(sim_index=sim_index) # Replace all NaNs with 0.0. fix_invalid(param_vector, copy=False, fill_value=0.0) # Determine if alignment tensors or RDCs are to be used. data_types = base_data_types() # The probabilities. probs = None if hasattr(cdp, 'probs') and len(cdp.probs) and cdp.probs[0] != None: probs = cdp.probs # Diagonal scaling. if len(param_vector) and scaling_matrix is not None: param_vector = dot(inv(scaling_matrix), param_vector) # Get the data structures for optimisation using the tensors as base data sets. full_tensors, red_tensor_elem, red_tensor_err, full_in_ref_frame = None, None, None, None if 'tensor' in data_types: full_tensors, red_tensor_elem, red_tensor_err, full_in_ref_frame = minimise_setup_tensors(sim_index=sim_index) # Get the data structures for optimisation using PCSs as base data sets. pcs, pcs_err, pcs_weight, temp, frq, pcs_pseudo_flags = None, None, None, None, None, None if 'pcs' in data_types: pcs, pcs_err, pcs_weight, temp, frq, pcs_pseudo_flags = return_pcs_data(sim_index=sim_index, verbosity=verbosity) # Get the data structures for optimisation using RDCs as base data sets. rdcs, rdc_err, rdc_weight, rdc_vector, rdc_dj, absolute_rdc, T_flags, j_couplings, rdc_pseudo_flags = None, None, None, None, None, None, None, None, None if 'rdc' in data_types: # The data. rdcs, rdc_err, rdc_weight, rdc_vector, rdc_dj, absolute_rdc, T_flags, j_couplings, rdc_pseudo_flags = return_rdc_data(sim_index=sim_index, verbosity=verbosity) # Get the fixed tensors. fixed_tensors = None if 'rdc' in data_types or 'pcs' in data_types: full_tensors = minimise_setup_fixed_tensors() # The flag list. fixed_tensors = [] for i in range(len(cdp.align_tensors)): # Skip non-optimised data. if not opt_uses_align_data(cdp.align_tensors[i].name): continue if cdp.align_tensors[i].fixed: fixed_tensors.append(True) else: fixed_tensors.append(False) # Get the atomic_positions. atomic_pos, paramag_centre, centre_fixed = None, None, True if 'pcs' in data_types or 'pre' in data_types: atomic_pos, paramag_centre = minimise_setup_atomic_pos(sim_index=sim_index) # Optimisation of the centre. if hasattr(cdp, 'paramag_centre_fixed'): centre_fixed = cdp.paramag_centre_fixed # Set up the class instance containing the target function. model = N_state_opt(model=cdp.model, N=cdp.N, init_params=param_vector, probs=probs, full_tensors=full_tensors, red_data=red_tensor_elem, red_errors=red_tensor_err, full_in_ref_frame=full_in_ref_frame, fixed_tensors=fixed_tensors, pcs=pcs, rdcs=rdcs, pcs_errors=pcs_err, rdc_errors=rdc_err, T_flags=T_flags, j_couplings=j_couplings, rdc_pseudo_flags=rdc_pseudo_flags, pcs_pseudo_flags=pcs_pseudo_flags, pcs_weights=pcs_weight, rdc_weights=rdc_weight, rdc_vect=rdc_vector, temp=temp, frq=frq, dip_const=rdc_dj, absolute_rdc=absolute_rdc, atomic_pos=atomic_pos, paramag_centre=paramag_centre, scaling_matrix=scaling_matrix, centre_fixed=centre_fixed) # Return the data. return model, param_vector, data_types
def target_fn_setup(sim_index=None, scaling_matrix=None, verbosity=0): """Initialise the target function for optimisation or direct calculation. @keyword sim_index: The index of the simulation to optimise. This should be None if normal optimisation is desired. @type sim_index: None or int @keyword scaling_matrix: The diagonal and square scaling matrix. @type scaling_matrix: numpy rank-2, float64 array or None @keyword verbosity: A flag specifying the amount of information to print. The higher the value, the greater the verbosity. @type verbosity: int """ # Test if the N-state model has been set up. if not hasattr(cdp, 'model'): raise RelaxNoModelError('N-state') # '2-domain' model setup tests. if cdp.model == '2-domain': # The number of states. if not hasattr(cdp, 'N'): raise RelaxError("The number of states has not been set.") # The reference domain. if not hasattr(cdp, 'ref_domain'): raise RelaxError("The reference domain has not been set.") # Update the model parameters if necessary. update_model() # Create the initial parameter vector. param_vector = assemble_param_vector(sim_index=sim_index) # Replace all NaNs with 0.0. fix_invalid(param_vector, copy=False, fill_value=0.0) # Determine if alignment tensors or RDCs are to be used. data_types = base_data_types() # The probabilities. probs = None if hasattr(cdp, 'probs') and len(cdp.probs) and cdp.probs[0] != None: probs = cdp.probs # Diagonal scaling. if len(param_vector) and scaling_matrix is not None: param_vector = dot(inv(scaling_matrix), param_vector) # Get the data structures for optimisation using the tensors as base data sets. full_tensors, red_tensor_elem, red_tensor_err, full_in_ref_frame = None, None, None, None if 'tensor' in data_types: full_tensors, red_tensor_elem, red_tensor_err, full_in_ref_frame = minimise_setup_tensors( sim_index=sim_index) # Get the data structures for optimisation using PCSs as base data sets. pcs, pcs_err, pcs_weight, temp, frq, pcs_pseudo_flags = None, None, None, None, None, None if 'pcs' in data_types: pcs, pcs_err, pcs_weight, temp, frq, pcs_pseudo_flags = return_pcs_data( sim_index=sim_index, verbosity=verbosity) # Get the data structures for optimisation using RDCs as base data sets. rdcs, rdc_err, rdc_weight, rdc_vector, rdc_dj, absolute_rdc, T_flags, j_couplings, rdc_pseudo_flags = None, None, None, None, None, None, None, None, None if 'rdc' in data_types: # The data. rdcs, rdc_err, rdc_weight, rdc_vector, rdc_dj, absolute_rdc, T_flags, j_couplings, rdc_pseudo_flags = return_rdc_data( sim_index=sim_index, verbosity=verbosity) # Get the fixed tensors. fixed_tensors = None if 'rdc' in data_types or 'pcs' in data_types: full_tensors = minimise_setup_fixed_tensors() # The flag list. fixed_tensors = [] for i in range(len(cdp.align_tensors)): # Skip non-optimised data. if not opt_uses_align_data(cdp.align_tensors[i].name): continue if cdp.align_tensors[i].fixed: fixed_tensors.append(True) else: fixed_tensors.append(False) # Get the atomic_positions. atomic_pos, paramag_centre, centre_fixed = None, None, True if 'pcs' in data_types or 'pre' in data_types: atomic_pos, paramag_centre = minimise_setup_atomic_pos( sim_index=sim_index) # Optimisation of the centre. if hasattr(cdp, 'paramag_centre_fixed'): centre_fixed = cdp.paramag_centre_fixed # Set up the class instance containing the target function. model = N_state_opt(model=cdp.model, N=cdp.N, init_params=param_vector, probs=probs, full_tensors=full_tensors, red_data=red_tensor_elem, red_errors=red_tensor_err, full_in_ref_frame=full_in_ref_frame, fixed_tensors=fixed_tensors, pcs=pcs, rdcs=rdcs, pcs_errors=pcs_err, rdc_errors=rdc_err, T_flags=T_flags, j_couplings=j_couplings, rdc_pseudo_flags=rdc_pseudo_flags, pcs_pseudo_flags=pcs_pseudo_flags, pcs_weights=pcs_weight, rdc_weights=rdc_weight, rdc_vect=rdc_vector, temp=temp, frq=frq, dip_const=rdc_dj, absolute_rdc=absolute_rdc, atomic_pos=atomic_pos, paramag_centre=paramag_centre, scaling_matrix=scaling_matrix, centre_fixed=centre_fixed) # Return the data. return model, param_vector, data_types