Changes in / [316b9c1:1270e3c] in sasview
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
src/sas/sasgui/perspectives/calculator/model_editor.py
rd247504b rc6dfb9f 663 663 Do the layout for parameter related widgets 664 664 """ 665 param_txt = wx.StaticText(self, -1, 'Fit Parameters: ') 666 667 param_tip = "#Set the parameters and their initial values.\n" 665 param_txt = wx.StaticText(self, -1, 'Fit Parameters NOT requiring' + \ 666 ' polydispersity (if any): ') 667 668 param_tip = "#Set the parameters NOT requiring polydispersity " + \ 669 "and their initial values.\n" 668 670 param_tip += "#Example:\n" 669 671 param_tip += "A = 1\nB = 1" … … 679 681 (self.param_tcl, 1, wx.EXPAND | wx.ALL, 10)]) 680 682 683 # Parameters with polydispersity 684 pd_param_txt = wx.StaticText(self, -1, 'Fit Parameters requiring ' + \ 685 'polydispersity (if any): ') 686 687 pd_param_tip = "#Set the parameters requiring polydispersity and " + \ 688 "their initial values.\n" 689 pd_param_tip += "#Example:\n" 690 pd_param_tip += "C = 2\nD = 2" 691 newid = wx.NewId() 692 self.pd_param_tcl = EditWindow(self, newid, wx.DefaultPosition, 693 wx.DefaultSize, 694 wx.CLIP_CHILDREN | wx.SUNKEN_BORDER) 695 self.pd_param_tcl.setDisplayLineNumbers(True) 696 self.pd_param_tcl.SetToolTipString(pd_param_tip) 697 698 self.param_sizer.AddMany([(pd_param_txt, 0, wx.LEFT, 10), 699 (self.pd_param_tcl, 1, wx.EXPAND | wx.ALL, 10)]) 681 700 682 701 def _layout_function(self): … … 880 899 description = self.desc_tcl.GetValue() 881 900 param_str = self.param_tcl.GetText() 901 pd_param_str = self.pd_param_tcl.GetText() 882 902 func_str = self.function_tcl.GetText() 883 903 # No input for the model function … … 885 905 if func_str.count('return') > 0: 886 906 self.write_file(self.fname, name, description, param_str, 887 func_str)907 pd_param_str, func_str) 888 908 try: 889 909 result, msg = check_model(self.fname), None … … 925 945 self.warning = msg 926 946 927 def write_file(self, fname, name, desc_str, param_str, func_str):947 def write_file(self, fname, name, desc_str, param_str, pd_param_str, func_str): 928 948 """ 929 949 Write content in file … … 932 952 :param desc_str: content of the description strings 933 953 :param param_str: content of params; Strings 954 :param pd_param_str: content of params requiring polydispersity; Strings 934 955 :param func_str: content of func; Strings 935 956 """ … … 945 966 # Write out parameters 946 967 param_names = [] # to store parameter names 968 pd_params = [] 947 969 out_f.write('parameters = [ \n') 948 970 out_f.write('# ["name", "units", default, [lower, upper], "type", "description"],\n') … … 951 973 out_f.write(" ['%s', '', %s, [-inf, inf], '', '%s'],\n" 952 974 % (pname, pvalue, desc)) 975 for pname, pvalue, desc in self.get_param_helper(pd_param_str): 976 param_names.append(pname) 977 pd_params.append(pname) 978 out_f.write(" ['%s', '', %s, [-inf, inf], 'volume', '%s'],\n" 979 % (pname, pvalue, desc)) 953 980 out_f.write(' ]\n') 954 981 955 982 # Write out function definition 956 out_f.write('\n')957 983 out_f.write('def Iq(%s):\n' % ', '.join(['x'] + param_names)) 958 984 out_f.write(' """Absolute scattering"""\n') … … 964 990 out_f.write(' import numpy as np') 965 991 for func_line in func_str.split('\n'): 966 out_f.write('%s%s\n' % ( ' ', func_line))992 out_f.write('%s%s\n' % (spaces4, func_line)) 967 993 out_f.write('## uncomment the following if Iq works for vector x\n') 968 994 out_f.write('#Iq.vectorized = True\n') 995 996 # If polydisperse, create place holders for form_volume, ER and VR 997 if pd_params: 998 out_f.write('\n') 999 out_f.write(CUSTOM_TEMPLATE_PD % {'args': ', '.join(pd_params)}) 969 1000 970 1001 # Create place holder for Iqxy … … 1097 1128 description = """%(description)s""" 1098 1129 1130 ''' 1131 1132 CUSTOM_TEMPLATE_PD = '''\ 1133 def form_volume(%(args)s): 1134 """ 1135 Volume of the particles used to compute absolute scattering intensity 1136 and to weight polydisperse parameter contributions. 1137 """ 1138 return 0.0 1139 1140 def ER(%(args)s): 1141 """ 1142 Effective radius of particles to be used when computing structure factors. 1143 1144 Input parameters are vectors ranging over the mesh of polydispersity values. 1145 """ 1146 return 0.0 1147 1148 def VR(%(args)s): 1149 """ 1150 Volume ratio of particles to be used when computing structure factors. 1151 1152 Input parameters are vectors ranging over the mesh of polydispersity values. 1153 """ 1154 return 1.0 1099 1155 ''' 1100 1156 -
src/sas/sasgui/perspectives/fitting/media/fitting_help.rst
r8b89396 r47ace50 180 180 *checked*\ . 181 181 182 Also note that the 'Fit Parameters' have been split into two sections: those 183 which can be polydisperse (shape and orientation parameters) and those which are 184 not (eg, scattering length densities). 185 182 186 A model file generated by this option can be viewed and further modified using 183 187 the :ref:`Advanced_Plugin_Editor` . 184 188 185 Note that the New Plugin Model Feature currently does not allow for parameters 186 to be polydisperse. However they can be edited in the Advanced Editor. 187 188 189 **SasView version 4.2** made it possible to specify whether a plugin created 190 with the *New Plugin Model* dialog is actually a form factor P(Q) or a structure 191 factor S(Q). To do this, simply add one or other of the following lines under 192 the *import* statements. 189 **SasView version 4.2** made it possible to specify whether a plugin created with 190 the *New Plugin Model* dialog is actually a form factor P(Q) or a structure factor 191 S(Q). To do this, simply add one or other of the following lines under the *import* 192 statements. 193 193 194 194 For a form factor:: … … 200 200 structure_factor = True 201 201 202 If the plugin is a structure factor it is *also* necessary to add two variables 203 t o the parameter list::202 If the plugin is a structure factor it is *also* necessary to add two variables to 203 the parameter list:: 204 204 205 205 parameters = [ -
test/corfunc/test/utest_corfunc.py
r6ef75fa6 rf53d684 74 74 while True: 75 75 time.sleep(0.001) 76 if (not self.calculator.transform_isrunning() and 77 self.transformation is not None): 76 if not self.calculator.transform_isrunning(): 78 77 break 79 78 80 transform1, transform3, idf = self.transformation 79 def transform_callback(self, transforms): 80 transform1, transform3, idf = transforms 81 81 self.assertIsNotNone(transform1) 82 82 self.assertAlmostEqual(transform1.y[0], 1) 83 83 self.assertAlmostEqual(transform1.y[-1], 0, 5) 84 85 def transform_callback(self, transforms):86 84 self.transformation = transforms 87 85
Note: See TracChangeset
for help on using the changeset viewer.