Author: bugman Date: Sun Dec 9 19:34:57 2007 New Revision: 4161 URL: http://svn.gna.org/viewcvs/relax?rev=4161&view=rev Log: Implemented the get_specific_fn() function. Modified: 1.3/specific_fns/__init__.py Modified: 1.3/specific_fns/__init__.py URL: http://svn.gna.org/viewcvs/relax/1.3/specific_fns/__init__.py?rev=4161&r1=4160&r2=4161&view=diff ============================================================================== --- 1.3/specific_fns/__init__.py (original) +++ 1.3/specific_fns/__init__.py Sun Dec 9 19:34:57 2007 @@ -55,6 +55,175 @@ def get_specific_fn(eqi, function_type, raise_error=1): """The function for returning the requested specific function.""" + # Initialise. + function = None + + # Get the class instance corresponding to function_type. + inst = get_instance(function_type) + + # Attempt to retrieve the function. + try: + # Back-calculate function. + if eqi == 'back_calc': + function = inst.back_calc + + # Calculate function. + if eqi == 'calculate': + function = inst.calculate + + # Copy function. + if eqi == 'copy': + function = inst.copy + + # Create Monte Carlo data function. + if eqi == 'create_mc_data': + function = inst.create_mc_data + + # Duplicate data function. + if eqi == 'duplicate_data': + function = inst.duplicate_data + + # Eliminate models. + if eqi == 'eliminate': + function = inst.eliminate + + # Grid search function. + if eqi == 'grid_search': + function = inst.grid_search + + # Initial Monte Carlo parameter value search function. + if eqi == 'init_sim_values': + function = inst.sim_init_values + + # Map bounds function. + if eqi == 'map_bounds': + function = inst.map_bounds + + # Minimise function. + if eqi == 'minimise': + function = inst.minimise + + # Model statistics. + if eqi == 'model_stats': + function = inst.model_statistics + + # Molmol macro creation. + if eqi == 'molmol_macro': + function = inst.molmol.macro + + # Number of instances. + if eqi == 'num_instances': + function = inst.num_instances + + # Overfit deselect. + if eqi == 'overfit_deselect': + function = inst.overfit_deselect + + # Pack Monte Carlo simulation data function. + if eqi == 'pack_sim_data': + function = inst.sim_pack_data + + # Parameter names function. + if eqi == 'param_names': + function = inst.get_param_names + + # Parameter values function. + if eqi == 'param_values': + function = inst.get_param_values + + # Read results file function (Columnar format). + if eqi == 'read_columnar_results': + function = inst.read_columnar_results + + # Read results file function (XML format). + #if eqi == 'read_xml_results': + # function = inst.read_xml_results + + # Data returning function. + if eqi == 'return_data': + function = inst.return_data + + # Data or parameter name returning function. + if eqi == 'return_data_name': + function = inst.return_data_name + + # Data error returning function. + if eqi == 'return_error': + function = inst.return_error + + # Factor of conversion between different parameter units returning function. + if eqi == 'return_conversion_factor': + function = inst.return_conversion_factor + + # Grace string returning function. + if eqi == 'return_grace_string': + function = inst.return_grace_string + + # Selected simulation array returning function. + if eqi == 'return_selected_sim': + function = inst.sim_return_selected + + # Simulation chi-squared array returning function. + if eqi == 'return_sim_chi2': + function = inst.sim_return_chi2 + + # Simulation parameter array returning function. + if eqi == 'return_sim_param': + function = inst.sim_return_param + + # String of the external parameter units returning function. + if eqi == 'return_units': + function = inst.return_units + + # Value and error returning function. + if eqi == 'return_value': + function = inst.return_value + + # Set function. + if eqi == 'set': + function = inst.set + + # Set error function. + if eqi == 'set_error': + function = inst.set_error + + # Set the selected simulations array. + if eqi == 'set_selected_sim': + function = inst.set_selected_sim + + # Skip function. + if eqi == 'skip_function': + function = inst.skip_function + + # Unselect function. + if eqi == 'unselect': + function = inst.unselect + + # Write results function (Columnar format). + if eqi == 'write_columnar_results': + function = inst.write_columnar_results + + # Write results function (XML format). + #if eqi == 'write_xml_results': + # function = inst.write_xml_results + + # Catch if the function is missing. + except AttributeError: + function = None + + # Raise an error if the function doesn't exist. + if raise_error and function == None: + # Some debugging output. + if Debug: + print "Function type: " + `function_type` + print "Eqi: " + `eqi` + + # Raise the error. + raise RelaxFuncSetupError, get_string(function_type) + + # Return the function. + return function + def get_instance(function_type): """Function for returning the class instance corresponding to the function type."""