Changes in src/sas/sasgui/perspectives/fitting/basepage.py [b76e65a:33dc18f] in sasview
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
src/sas/sasgui/perspectives/fitting/basepage.py
rb76e65a r33dc18f 1841 1841 if models.name != "NoStructure": 1842 1842 mlist.append((models.name, models)) 1843 1844 1843 # Sort the models 1845 1844 mlist_sorted = sorted(mlist) … … 2929 2928 return False 2930 2929 2931 2932 def _get_copy_params_details(self):2933 """2934 Combines polydisperse parameters with self.parameters so that they can2935 be written to the clipboard (for Excel or LaTeX). Also returns a list of2936 the names of parameters that have been fitted2937 2938 :returns: all_params - A list of all parameters, in the format of2939 self.parameters2940 :returns: fitted_par_names - A list of the names of parameters that have2941 been fitted2942 """2943 # Names of params that are being fitted2944 fitted_par_names = [param[1] for param in self.param_toFit]2945 # Names of params with associated polydispersity2946 disp_params = [param[1].split('.')[0] for param in self.fittable_param]2947 2948 # Create array of all parameters2949 all_params = copy.copy(self.parameters)2950 for param in self.parameters:2951 if param[1] in disp_params:2952 # Polydisperse params aren't in self.parameters, so need adding2953 # to all_params2954 name = param[1] + ".width"2955 index = all_params.index(param) + 12956 to_insert = []2957 if name in fitted_par_names:2958 # Param is fitted, so already has a param list in self.param_toFit2959 to_insert = self.param_toFit[fitted_par_names.index(name)]2960 else:2961 # Param isn't fitted, so mockup a param list2962 to_insert = [None, name, self.model.getParam(name), None, None]2963 all_params.insert(index, to_insert)2964 return all_params, fitted_par_names2965 2966 2930 def get_copy_excel(self): 2967 2931 """ … … 2977 2941 Get the string copies of the param names and values in the tap 2978 2942 """ 2979 if not self.parameters:2980 # Do nothing if parameters doesn't exist2981 return False2982 2983 2943 content = '' 2944 2984 2945 crlf = chr(13) + chr(10) 2985 2946 tab = chr(9) 2986 2947 2987 all_params, fitted_param_names = self._get_copy_params_details() 2988 2989 # Construct row of parameter names 2990 for param in all_params: 2991 name = param[1] # Parameter name 2992 content += name 2993 content += tab 2994 if name in fitted_param_names: 2995 # Only print errors for fitted parameters 2996 content += name + "_err" 2948 # Do it if params exist 2949 if self.parameters: 2950 2951 for param in self.parameters: 2952 content += param[1] # parameter name 2997 2953 content += tab 2998 2999 content += crlf 3000 3001 # Construct row of parameter values and errors 3002 for param in all_params: 3003 value = param[2] 3004 if hasattr(value, 'GetValue'): 3005 # param[2] is a text box 3006 value = value.GetValue() 3007 else: 3008 # param[2] is a float (from our self._get_copy_params_details) 3009 value = str(value) 3010 content += value 3011 content += tab 3012 if param[1] in fitted_param_names: 3013 # Only print errors for fitted parameters 3014 content += param[4].GetValue() 3015 content += tab 3016 3017 return content 2954 content += param[1] + "_err" 2955 content += tab 2956 2957 content += crlf 2958 2959 # row of values and errors... 2960 for param in self.parameters: 2961 content += param[2].GetValue() # value 2962 content += tab 2963 content += param[4].GetValue() # error 2964 content += tab 2965 2966 return content 2967 else: 2968 return False 3018 2969 3019 2970 def get_copy_latex(self): … … 3030 2981 Get the string copies of the param names and values in the tap 3031 2982 """ 3032 if not self.parameters:3033 # Do nothing if self.parameters doesn't exist3034 return False3035 3036 2983 content = '\\begin{table}' 3037 2984 content += '\\begin{tabular}[h]' … … 3040 2987 tab = chr(9) 3041 2988 3042 all_params, fitted_param_names = self._get_copy_params_details() 3043 3044 content += '{|' 3045 for param in all_params: 3046 content += 'l|l|' 3047 content += '}\hline' 3048 content += crlf 3049 3050 # Construct row of parameter names 3051 for index, param in enumerate(all_params): 3052 name = param[1] # Parameter name 3053 content += name.replace('_', '\_') # Escape underscores 3054 if name in fitted_param_names: 3055 # Only print errors for fitted parameters 2989 # Do it if params exist 2990 if self.parameters: 2991 2992 content += '{|' 2993 for param in self.parameters: 2994 content += 'l|l|' 2995 content += '}\hline' 2996 content += crlf 2997 2998 for index, param in enumerate(self.parameters): 2999 content += param[1].replace('_', '\_') # parameter name 3056 3000 content += ' & ' 3057 content += name.replace('_', '\_') + "\_err" 3058 if index < len(all_params) - 1: 3001 content += param[1].replace('_', '\_') + "\_err" 3002 if index < len(self.parameters) - 1: 3003 content += ' & ' 3004 content += '\\\\ \\hline' 3005 content += crlf 3006 3007 # row of values and errors... 3008 for index, param in enumerate(self.parameters): 3009 content += param[2].GetValue() # parameter value 3059 3010 content += ' & ' 3060 3061 content += '\\\\ \\hline' 3062 content += crlf 3063 3064 # Construct row of values and errors 3065 for index, param in enumerate(all_params): 3066 value = param[2] 3067 if hasattr(value, "GetValue"): 3068 # value is a text box 3069 value = value.GetValue() 3070 else: 3071 # value is a float (from self._get_copy_params_details) 3072 value = str(value) 3073 content += value 3074 if param[1] in fitted_param_names: 3075 # Only print errors for fitted params 3076 content += ' & ' 3077 content += param[4].GetValue() 3078 if index < len(all_params) - 1: 3079 content += ' & ' 3080 3081 content += '\\\\ \\hline' 3082 content += crlf 3083 content += '\\end{tabular}' 3084 content += '\\end{table}' 3085 3086 return content 3011 content += param[4].GetValue() # parameter error 3012 if index < len(self.parameters) - 1: 3013 content += ' & ' 3014 content += '\\\\ \\hline' 3015 content += crlf 3016 3017 content += '\\end{tabular}' 3018 content += '\\end{table}' 3019 return content 3020 else: 3021 return False 3087 3022 3088 3023 def set_clipboard(self, content=None):
Note: See TracChangeset
for help on using the changeset viewer.