Changeset 940aca7 in sasview
- Timestamp:
- May 19, 2012 12:17:02 PM (13 years ago)
- Branches:
- master, ESS_GUI, ESS_GUI_Docs, ESS_GUI_batch_fitting, ESS_GUI_bumps_abstraction, ESS_GUI_iss1116, ESS_GUI_iss879, ESS_GUI_iss959, ESS_GUI_opencl, ESS_GUI_ordering, ESS_GUI_sync_sascalc, costrafo411, magnetic_scatt, release-4.1.1, release-4.1.2, release-4.2.2, release_4.0.1, ticket-1009, ticket-1094-headless, ticket-1242-2d-resolution, ticket-1243, ticket-1249, ticket885, unittest-saveload
- Children:
- baa915c
- Parents:
- d225e32
- Files:
-
- 23 edited
Legend:
- Unmodified
- Added
- Removed
-
fittingview/src/sans/perspectives/fitting/basepage.py
r19e614a r940aca7 113 113 self.enable2D = False 114 114 self.is_mac = ON_MAC 115 115 self.formfactorbox = None 116 self.structurebox = None 116 117 ##list of model parameters. each item must have same length 117 118 ## each item related to a given parameters … … 882 883 self.state.disp_list = copy.deepcopy(self.disp_list) 883 884 self.state.model = self.model.clone() 885 886 #model combobox: complex code because of mac's silent error 887 if self.structurebox != None: 888 if self.structurebox.IsShown(): 889 self.state.structurecombobox = 'None' 890 s_select = self.structurebox.GetSelection() 891 if s_select > 0: 892 self.state.structurecombobox = self.structurebox.\ 893 GetString(s_select) 894 if self.formfactorbox != None: 895 f_select = self.formfactorbox.GetSelection() 896 if f_select > 0: 897 self.state.formfactorcombobox = self.formfactorbox.\ 898 GetString(f_select) 899 884 900 #save radiobutton state for model selection 885 901 self.state.shape_rbutton = self.shape_rbutton.GetValue() … … 887 903 self.state.struct_rbutton = self.struct_rbutton.GetValue() 888 904 self.state.plugin_rbutton = self.plugin_rbutton.GetValue() 889 #model combobox890 self.state.structurebox = self.structurebox.GetLabel()891 self.state.formfactorbox = self.formfactorbox.GetLabel()892 905 893 906 self.state.enable2D = copy.deepcopy(self.enable2D) … … 1231 1244 structfactor_pos = 0 1232 1245 for ind_struct in range(self.structurebox.GetCount()): 1233 if self.structurebox.GetString(ind_struct) == (state.structurecombobox) > 0:1246 if self.structurebox.GetString(ind_struct) == (state.structurecombobox): 1234 1247 structfactor_pos = int(ind_struct) 1235 1248 break … … 1428 1441 self.state.struct_rbutton = self.struct_rbutton.GetValue() 1429 1442 self.state.plugin_rbutton = self.plugin_rbutton.GetValue() 1430 self.state.structure box = self.structurebox.GetLabel()1431 self.state.formfactor box = self.formfactorbox.GetLabel()1443 self.state.structurecombobox = self.structurebox.GetLabel() 1444 self.state.formfactorcombobox = self.formfactorbox.GetLabel() 1432 1445 1433 1446 ## post state to fit panel -
fittingview/src/sans/perspectives/fitting/batchfitpage.py
r978feaa r940aca7 38 38 self.window_caption = "BatchFit" 39 39 self._set_save_flag(False) 40 self._set_bookmark_flag(False) 40 41 41 42 def _fill_range_sizer(self): … … 365 366 self._set_paste_flag(True) 366 367 if self.data != None: 367 self._set_bookmark_flag( True)368 self._keep.Enable( True)368 self._set_bookmark_flag(False) 369 self._keep.Enable(False) 369 370 370 371 temp_smear = None … … 552 553 else: 553 554 if self.model != None: 554 self._set_bookmark_flag( True)555 self._keep.Enable( True)556 self._set_save_flag( True)555 self._set_bookmark_flag(False) 556 self._keep.Enable(False) 557 self._set_save_flag(False) 557 558 self._set_preview_flag(True) 558 559 """ -
fittingview/src/sans/perspectives/fitting/fit_thread.py
raff2913 r940aca7 26 26 completefn = None, 27 27 updatefn = None, 28 yieldtime = 0.0 1,29 worktime = 0.0 1,28 yieldtime = 0.03, 29 worktime = 0.03, 30 30 ftol = None, 31 31 reset_flag = False): -
fittingview/src/sans/perspectives/fitting/fitpage.py
rac2b835 r940aca7 1220 1220 is_data = check_data_validity(self.data) 1221 1221 if is_data: 1222 self._set_bookmark_flag( True)1223 self._keep.Enable( True)1222 self._set_bookmark_flag(not self.batch_on) 1223 self._keep.Enable(not self.batch_on) 1224 1224 self._set_save_flag(True) 1225 1225 # Reset smearer, model and data … … 1482 1482 if len(self.parameters) > 0: 1483 1483 for item in self.parameters: 1484 #Skip t ifhe angle parameters if 1D data 1485 if self.data.__class__.__name__ != "Data2D" and \ 1486 not self.enable2D: 1487 if item in self.orientation_params: 1484 if item[0].IsShown(): 1485 #Skip t ifhe angle parameters if 1D data 1486 if self.data.__class__.__name__ != "Data2D" and \ 1487 not self.enable2D: 1488 if item in self.orientation_params: 1489 continue 1490 if item in self.param_toFit: 1488 1491 continue 1489 if item in self.param_toFit: 1490 continue 1491 ## hide statictext +/- 1492 if len(item) < 4: 1493 continue 1494 if item[3] != None and item[3].IsShown(): 1495 item[3].Hide() 1496 ## hide textcrtl for error after fit 1497 if item[4] != None and item[4].IsShown(): 1498 item[4].Hide() 1492 ## hide statictext +/- 1493 if len(item) < 4: 1494 continue 1495 if item[3] != None and item[3].IsShown(): 1496 item[3].Hide() 1497 ## hide textcrtl for error after fit 1498 if item[4] != None and item[4].IsShown(): 1499 item[4].Hide() 1499 1500 1500 1501 if len(self.fittable_param) > 0: 1501 1502 for item in self.fittable_param: 1502 #Skip t ifhe angle parameters if 1D data 1503 if self.data.__class__.__name__ != "Data2D" and \ 1504 not self.enable2D: 1505 if item in self.orientation_params: 1503 if item[0].IsShown(): 1504 #Skip t ifhe angle parameters if 1D data 1505 if self.data.__class__.__name__ != "Data2D" and \ 1506 not self.enable2D: 1507 if item in self.orientation_params: 1508 continue 1509 if item in self.param_toFit: 1506 1510 continue 1507 if item in self.param_toFit: 1508 continue 1509 if len(item) < 4: 1510 continue 1511 ## hide statictext +/- 1512 if item[3] != None and item[3].IsShown(): 1513 item[3].Hide() 1514 ## hide textcrtl for error after fit 1515 if item[4] != None and item[4].IsShown(): 1516 item[4].Hide() 1511 if len(item) < 4: 1512 continue 1513 ## hide statictext +/- 1514 if item[3] != None and item[3].IsShown(): 1515 item[3].Hide() 1516 ## hide textcrtl for error after fit 1517 if item[4] != None and item[4].IsShown(): 1518 item[4].Hide() 1517 1519 return 1518 1520 … … 1847 1849 else: 1848 1850 if self.model != None: 1849 self._set_bookmark_flag( True)1850 self._keep.Enable( True)1851 self._set_bookmark_flag(not self.batch_on) 1852 self._keep.Enable(not self.batch_on) 1851 1853 1852 1854 self._set_save_flag(True) … … 1941 1943 #replace data plot on combo box selection 1942 1944 #by removing the previous selected data 1943 wx.PostEvent(self._manager.parent,1944 NewPlotEvent(action="remove",1945 group_id=self.graph_id, id=id))1945 #wx.PostEvent(self._manager.parent, 1946 # NewPlotEvent(action="remove", 1947 # group_id=self.graph_id, id=id)) 1946 1948 #plot the current selected data 1947 1949 wx.PostEvent(self._manager.parent, 1948 NewPlotEvent( plot=self.data,1950 NewPlotEvent(action="check", plot=self.data, 1949 1951 title=str(self.data.title))) 1950 1952 self._draw_model() … … 2077 2079 for item in self.param_toFit: 2078 2080 if len(item) > 5 and item != None: 2079 ## reset error value to initial state 2080 if not self.is_mac: 2081 item[3].Hide() 2082 item[4].Hide() 2083 for ind in range(len(out)): 2084 if item[1] == p_name[ind]: 2085 break 2086 if len(out) <= len(self.param_toFit) and out[ind] != None: 2087 val_out = format_number(out[ind], True) 2088 item[2].SetValue(val_out) 2089 2090 if(cov != None and len(cov) == len(out)): 2091 try: 2092 if dispersity != None: 2093 if self.enable_disp.GetValue(): 2094 if hasattr(self, "text_disp_1"): 2095 if self.text_disp_1 != None: 2096 if not self.text_disp_1.IsShown()\ 2097 and not self.is_mac: 2098 self.text_disp_1.Show(True) 2099 except: 2100 pass 2101 2102 if cov[ind] != None: 2103 if numpy.isfinite(float(cov[ind])): 2104 val_err = format_number(cov[ind], True) 2105 if not self.is_mac: 2106 item[3].Show(True) 2107 item[4].Show(True) 2108 item[4].SetValue(val_err) 2109 has_error = True 2081 if item[0].IsShown(): 2082 ## reset error value to initial state 2083 if not self.is_mac: 2084 item[3].Hide() 2085 item[4].Hide() 2086 for ind in range(len(out)): 2087 if item[1] == p_name[ind]: 2088 break 2089 if len(out) > 0 and out[ind] != None: 2090 val_out = format_number(out[ind], True) 2091 item[2].SetValue(val_out) 2092 2093 if(cov != None and len(cov) == len(out)): 2094 try: 2095 if dispersity != None: 2096 if self.enable_disp.GetValue(): 2097 if hasattr(self, "text_disp_1"): 2098 if self.text_disp_1 != None: 2099 if not self.text_disp_1.IsShown()\ 2100 and not self.is_mac: 2101 self.text_disp_1.Show(True) 2102 except: 2103 pass 2104 2105 if cov[ind] != None: 2106 if numpy.isfinite(float(cov[ind])): 2107 val_err = format_number(cov[ind], True) 2108 if not self.is_mac: 2109 item[3].Show(True) 2110 item[4].Show(True) 2111 item[4].SetValue(val_err) 2112 has_error = True 2110 2113 i += 1 2114 else: 2115 raise ValueError, "onsetValues: Invalid parameters..." 2111 2116 #Show error title when any errors displayed 2112 2117 if has_error: … … 2606 2611 for item in self.parameters: 2607 2612 if item[0].GetValue() and item not in self.param_toFit: 2608 self.param_toFit.append(item) 2613 if item[0].IsShown(): 2614 self.param_toFit.append(item) 2609 2615 for item in self.fittable_param: 2610 2616 if item[0].GetValue() and item not in self.param_toFit: 2611 self.param_toFit.append(item) 2617 if item[0].IsShown(): 2618 self.param_toFit.append(item) 2612 2619 self.save_current_state_fit() 2613 2620 … … 2616 2623 param2fit = [] 2617 2624 for item in self.param_toFit: 2618 if item[0] :2625 if item[0] and item[0].IsShown(): 2619 2626 param2fit.append(item[1]) 2620 2627 self.parent._manager.set_param2fit(self.uid, param2fit) … … 2628 2635 if self.cb1.GetValue(): 2629 2636 for item in self.parameters: 2630 ## for data2D select all to fit 2631 if self.data.__class__.__name__ == "Data2D" or \ 2632 self.enable2D: 2633 item[0].SetValue(True) 2634 self.param_toFit.append(item) 2635 else: 2636 ## for 1D all parameters except orientation 2637 if not item in self.orientation_params: 2637 if item[0].IsShown(): 2638 ## for data2D select all to fit 2639 if self.data.__class__.__name__ == "Data2D" or \ 2640 self.enable2D: 2638 2641 item[0].SetValue(True) 2639 2642 self.param_toFit.append(item) 2643 else: 2644 ## for 1D all parameters except orientation 2645 if not item in self.orientation_params: 2646 item[0].SetValue(True) 2647 self.param_toFit.append(item) 2648 else: 2649 item[0].SetValue(False) 2640 2650 #if len(self.fittable_param)>0: 2641 2651 for item in self.fittable_param: 2642 if self.data.__class__.__name__ == "Data2D" or \ 2643 self.enable2D: 2644 item[0].SetValue(True) 2645 self.param_toFit.append(item) 2646 try: 2647 if len(self.values[item[1]]) > 0: 2648 item[0].SetValue(False) 2649 except: 2650 pass 2651 2652 else: 2653 ## for 1D all parameters except orientation 2654 if not item in self.orientation_params_disp: 2652 if item[0].IsShown(): 2653 if self.data.__class__.__name__ == "Data2D" or \ 2654 self.enable2D: 2655 2655 item[0].SetValue(True) 2656 2656 self.param_toFit.append(item) … … 2660 2660 except: 2661 2661 pass 2662 2663 else: 2664 ## for 1D all parameters except orientation 2665 if not item in self.orientation_params_disp: 2666 item[0].SetValue(True) 2667 self.param_toFit.append(item) 2668 try: 2669 if len(self.values[item[1]]) > 0: 2670 item[0].SetValue(False) 2671 except: 2672 pass 2673 else: 2674 item[0].SetValue(False) 2662 2675 2663 2676 else: … … 2677 2690 param2fit = [] 2678 2691 for item in self.param_toFit: 2679 if item[0] :2692 if item[0] and item[0].IsShown(): 2680 2693 param2fit.append(item[1]) 2681 2694 self.parent._manager.set_param2fit(self.uid, param2fit) … … 2694 2707 continue 2695 2708 #Select parameters to fit for list of primary parameters 2696 if item[0].GetValue() :2709 if item[0].GetValue() and item[0].IsShown(): 2697 2710 if not (item in self.param_toFit): 2698 2711 self.param_toFit.append(item) … … 2710 2723 if item in self.orientation_params: 2711 2724 continue 2712 if item[0].GetValue() :2725 if item[0].GetValue() and item[0].IsShown(): 2713 2726 if not (item in self.param_toFit): 2714 2727 self.param_toFit.append(item) … … 2742 2755 param2fit = [] 2743 2756 for item in self.param_toFit: 2744 if item[0] :2757 if item[0] and item[0].IsShown(): 2745 2758 param2fit.append(item[1]) 2746 2759 self.parent._manager.set_param2fit(self.uid, param2fit) -
fittingview/src/sans/perspectives/fitting/fitting.py
rb9dd680 r940aca7 48 48 49 49 50 if sys.platform .count("darwin") == 0:50 if sys.platform == "win32": 51 51 ON_MAC = False 52 52 else: … … 73 73 self.weight = None 74 74 self.fit_panel = None 75 self.plot_panel = None 75 76 # Start with a good default 76 77 self.elapsed = 0.022 … … 460 461 461 462 """ 463 self.plot_panel = plotpanel 462 464 graph = plotpanel.graph 463 465 fit_option = "Select data for fitting" … … 483 485 else: 484 486 return [] 487 return [[fit_option, fit_hint, self._onSelect]] 485 488 return [] 486 489 … … 1281 1284 added to self.page_finder 1282 1285 """ 1283 self.panel = event.GetEventObject() 1286 panel = self.plot_panel 1287 if panel == None: 1288 raise ValueError, "Fitting:_onSelect: NonType panel" 1284 1289 Plugin.on_perspective(self, event=event) 1285 self.select_data( self.panel)1290 self.select_data(panel) 1286 1291 1287 1292 def select_data(self, panel): 1288 1293 """ 1289 1294 """ 1290 self.panel = panel 1291 for plottable in self.panel.graph.plottables: 1295 for plottable in panel.graph.plottables: 1292 1296 if plottable.__class__.__name__ in ["Data1D", "Theory1D"]: 1293 data_id = self.panel.graph.selected_plottable1294 if plottable == self.panel.plots[data_id]:1297 data_id = panel.graph.selected_plottable 1298 if plottable == panel.plots[data_id]: 1295 1299 data = plottable 1296 1300 self.add_fit_page(data=[data]) … … 1880 1884 1881 1885 if len(title) > 1: 1882 new_plot.title = "Model2D for "+ data_name1886 new_plot.title = "Model2D for %s "% model.name + data_name 1883 1887 new_plot.name = model.name + " [" + \ 1884 data_name + " -2D]"1888 data_name + "]" 1885 1889 theory_data = deepcopy(new_plot) 1886 theory_data.name = "Unknown"1887 1890 1888 1891 self.page_finder[page_id].set_theory_data(data=theory_data, … … 2128 2131 residuals.xaxis('\\rm{Q} ', 'A^{-1}') 2129 2132 residuals.yaxis('\\rm{Residuals} ', 'normalized') 2133 theory_name = str(theory_data.name.split()[0]) 2130 2134 new_plot = residuals 2131 new_plot.name = "Residuals for " + str(theory_data.name.split()[0]) + "[" + str(data.name) +"]" 2135 new_plot.name = "Residuals for " + str(theory_name) + "[" +\ 2136 str(data.name) +"]" 2132 2137 ## allow to highlight data when plotted 2133 2138 new_plot.interactive = True 2134 2139 ## when 2 data have the same id override the 1 st plotted 2135 new_plot.id = "res" + str(data_copy.id) 2140 new_plot.id = "res" + str(data_copy.id) + str(theory_name) 2136 2141 ##group_id specify on which panel to plot this data 2137 2142 group_id = self.page_finder[page_id].get_graph_id() -
fittingview/src/sans/perspectives/fitting/simfitpage.py
rf32d144 r940aca7 215 215 216 216 self._update_easy_setup_cb() 217 self.Layout() 217 218 self.Refresh() 218 219 … … 664 665 ## some model or parameters can be constrained 665 666 self._show_constraint() 667 self.sizer3.Layout() 668 self.Layout() 669 self.Refresh() 666 670 667 671 def _fill_sizer_fit(self): -
park_integration/src/sans/fit/ParkFitting.py
r06e7c26 r940aca7 435 435 if result is not None: 436 436 for p in result.parameters: 437 if p.data.name == small_result.data.name: 437 if p.data.name == small_result.data.name and \ 438 p.model.name == small_result.model.name: 438 439 small_result.index = m.data.idx 439 440 small_result.fitness = result.fitness -
plottools/src/danse/common/plottools/SizeDialog.py
r10bfeb3 r940aca7 10 10 textbox = wx.BoxSizer(wx.HORIZONTAL) 11 11 hbox = wx.BoxSizer(wx.HORIZONTAL) 12 text1 = "Enter in a custom size ( float values> 0 accepted)"12 text1 = "Enter in a custom size (> 0 accepted)" 13 13 msg = wx.StaticText(self, -1, text1, (30,15), style=wx.ALIGN_CENTRE) 14 14 msg.SetLabel(text1) … … 16 16 17 17 textbox.Add(self.myTxtCtrl, flag=wx.LEFT|wx.RIGHT|wx.ADJUST_MINSIZE, 18 border=10 , proportion=2)18 border=10) 19 19 vbox.Add(msg, flag=wx.ALL, border=10, proportion=1) 20 20 vbox.Add(textbox, flag=wx.EXPAND|wx.TOP|wx.BOTTOM|wx.ADJUST_MINSIZE, 21 21 border=10) 22 self.myTxtCtrl.SetValue(str( 10))22 self.myTxtCtrl.SetValue(str(5)) 23 23 24 24 okButton = wx.Button(self, wx.ID_OK, 'OK', size=(70, 25)) -
sansguiframe/src/sans/guiframe/gui_manager.py
r6306f2f r940aca7 452 452 return 453 453 _, ext = os.path.splitext(name) 454 fd = open(file_name, 'w') 454 try: 455 fd = open(file_name, 'w') 456 except: 457 # On Permission denied: IOError 458 temp_dir = get_user_directory() 459 temp_file_name = os.path.join(temp_dir, name) 460 fd = open(temp_file_name, 'w') 455 461 separator = "\t" 456 462 if ext.lower() == ".csv": … … 491 497 excel_app.Visible = 1 492 498 except: 493 msg = "Error occured when calling Excel \n"494 msg += "Check that Excel in installed in this machine or \n"495 msg += " Check that %s really exists.\n" % str(file_name)499 msg = "Error occured when calling Excel.\n" 500 msg += "Check that Excel installed in this machine or \n" 501 msg += "check that %s really exists.\n" % str(file_name) 496 502 wx.PostEvent(self, StatusEvent(status=msg, 497 503 info="error")) … … 1031 1037 return menu_list 1032 1038 1033 1039 def get_current_context_menu(self, plotpanel=None): 1040 """ 1041 Get the context menu items made available 1042 by the current plug-in. 1043 This function is used by the plotting module 1044 """ 1045 if plotpanel is None: 1046 return 1047 menu_list = [] 1048 item = self._current_perspective 1049 if item != None: 1050 menu_list.extend(item.get_context_menu(plotpanel=plotpanel)) 1051 return menu_list 1052 1034 1053 def on_panel_close(self, event): 1035 1054 """ … … 2598 2617 if has_errors: 2599 2618 if data.dx != [] and data.dx[i] != None: 2600 out.write("%g %g %g %g\n" % (data.x[i], 2601 data.y[i], 2602 data.dy[i], 2603 data.dx[i])) 2619 if data.dx[i] != None: 2620 out.write("%g %g %g %g\n" % (data.x[i], 2621 data.y[i], 2622 data.dy[i], 2623 data.dx[i])) 2624 else: 2625 out.write("%g %g %g\n" % (data.x[i], 2626 data.y[i], 2627 data.dy[i])) 2604 2628 else: 2605 2629 out.write("%g %g %g\n" % (data.x[i], -
sansguiframe/src/sans/guiframe/gui_statusbar.py
r199fdec r940aca7 238 238 clear the progress bar 239 239 """ 240 flag = False 241 if (self.nb_start <= self.nb_stop) or \ 242 (self.nb_progress <= self.nb_stop): 243 flag = True 240 flag = True 241 # Why we do this? 242 #if (self.nb_start <= self.nb_stop) or \ 243 # (self.nb_progress <= self.nb_stop): 244 # flag = True 244 245 return flag 245 246 -
sansguiframe/src/sans/guiframe/local_perspectives/plotting/AnnulusSlicer.py
r13382fc7 r940aca7 167 167 168 168 new_plot.group_id = "AnnulusPhi" + self.base.data2D.name 169 new_plot.id = None170 #new_plot.is_data= True169 new_plot.id = "AnnulusPhi" + self.base.data2D.name 170 new_plot.is_data= True 171 171 new_plot.xtransform = "x" 172 172 new_plot.ytransform = "y" -
sansguiframe/src/sans/guiframe/local_perspectives/plotting/Plotter1D.py
r78919f45 r940aca7 41 41 DEFAULT_BEAM = 0.005 42 42 BIN_WIDTH = 1 43 43 IS_MAC = (sys.platform == 'darwin') 44 44 45 45 class ModelPanel1D(PlotPanel, PanelBase): … … 174 174 # It was found that wx >= 2.9.3 sends an event even if no size changed. 175 175 # So manually recode the size (=x_size) and compare here. 176 # Massy code to work around:< 177 if self.parent._mgr != None: 178 max_panel = self.parent._mgr.GetPane(self) 179 if max_panel.IsMaximized(): 180 self.parent._mgr.RestorePane(max_panel) 181 max_panel.Maximize() 176 182 if self.x_size != None: 177 183 if self.x_size == self.GetSize(): … … 286 292 try: 287 293 self._onEVT_FUNC_PROPERTY() 294 if IS_MAC: 295 # MAC: forcing to plot 2D avg 296 self.canvas._onDrawIdle() 288 297 except: 289 298 msg=" Encountered singular points..." … … 409 418 if plot != self.plots[self.graph.selected_plottable]: 410 419 continue 420 421 id = wx.NewId() 422 plot_menu.Append(id, "&DataInfo", name) 423 wx.EVT_MENU(self, id, self. _onDataShow) 424 id = wx.NewId() 425 plot_menu.Append(id, "&Save Points as a File", name) 426 wx.EVT_MENU(self, id, self._onSave) 427 plot_menu.AppendSeparator() 428 411 429 #add menu of other plugins 412 item_list = self.parent.get_c ontext_menu(self)430 item_list = self.parent.get_current_context_menu(self) 413 431 414 432 if (not item_list == None) and (not len(item_list) == 0): … … 425 443 pass 426 444 plot_menu.AppendSeparator() 427 428 id = wx.NewId() 429 plot_menu.Append(id, "&DataInfo", name) 430 wx.EVT_MENU(self, id, self. _onDataShow) 431 id = wx.NewId() 432 plot_menu.Append(id, "&Save Points as a File", name) 433 wx.EVT_MENU(self, id, self._onSave) 434 plot_menu.AppendSeparator() 445 435 446 if self.parent.ClassName.count('wxDialog') == 0: 436 447 id = wx.NewId() -
sansguiframe/src/sans/guiframe/local_perspectives/plotting/Plotter2D.py
r2778c4f r940aca7 321 321 if len(self.data2D.detector) == 1: 322 322 323 item_list = self.parent.get_c ontext_menu(self)323 item_list = self.parent.get_current_context_menu(self) 324 324 if (not item_list == None) and (not len(item_list) == 0) and\ 325 325 self.data2D.name.split(" ")[0] != 'Residuals': … … 631 631 new_plot.yaxis("\\rm{Intensity} ", "cm^{-1}") 632 632 633 new_plot.group_id = " Circ avg "+ self.data2D.name633 new_plot.group_id = "2daverage" + self.data2D.name 634 634 new_plot.id = "Circ avg " + self.data2D.name 635 635 new_plot.is_data = True -
sansguiframe/src/sans/guiframe/local_perspectives/plotting/SectorSlicer.py
r789ffc6 r940aca7 183 183 new_plot.yaxis("\\rm{Residuals} ", "/") 184 184 185 new_plot.group_id = " SectorQ" + self.base.data2D.name186 new_plot.id = None185 new_plot.group_id = "2daverage" + self.base.data2D.name 186 new_plot.id = "SectorQ" + self.base.data2D.name 187 187 new_plot.is_data = True 188 188 self.base.parent.update_theory(data_id=data, \ -
sansguiframe/src/sans/guiframe/local_perspectives/plotting/SlicerParameters.py
r8c347a6 r940aca7 87 87 ctl.SetValue(format_number(str(params[item]))) 88 88 self.Bind(wx.EVT_TEXT_ENTER, self.onTextEnter) 89 ctl.Bind(wx.EVT_KILL_FOCUS, self.onTextEnter)90 89 self.parameters.append([item, ctl]) 91 90 self.bck.Add(ctl, (iy, ix), (1, 1), -
sansguiframe/src/sans/guiframe/local_perspectives/plotting/boxSlicer.py
r13382fc7 r940aca7 198 198 new_plot.yaxis("\\rm{Residuals} ", "/") 199 199 200 new_plot.group_id = str(self.averager.__name__)+ self.base.data2D.name201 #new_plot.id = str(self.averager.__name__)202 #new_plot.is_data= True200 new_plot.group_id = "2daverage" + self.base.data2D.name 201 new_plot.id = (self.averager.__name__) + self.base.data2D.name 202 new_plot.is_data= True 203 203 self.base.parent.update_theory(data_id=self.base.data2D.id, \ 204 204 theory=new_plot) -
sansguiframe/src/sans/guiframe/local_perspectives/plotting/plotting.py
r48832ac r940aca7 276 276 277 277 """ 278 action_check = False 278 279 if hasattr(event, 'action'): 279 group_id = event.group_id 280 if group_id in self.plot_panels.keys(): 281 #remove data from panel 282 if event.action.lower().strip() == 'remove': 283 id = event.id 284 return self.remove_plot(group_id, id) 285 if event.action.lower().strip() == 'hide': 286 return self.hide_panel(group_id) 287 if event.action.lower().strip() == 'delete': 288 panel = self.plot_panels[group_id] 289 uid = panel.uid 290 return self.parent.delete_panel(uid) 291 if event.action.lower().strip() == "clear": 292 return self.clear_panel_by_id(group_id) 280 action_string = event.action.lower().strip() 281 if action_string == 'check': 282 action_check = True 283 else: 284 group_id = event.group_id 285 if group_id in self.plot_panels.keys(): 286 #remove data from panel 287 if action_string == 'remove': 288 id = event.id 289 return self.remove_plot(group_id, id) 290 if action_string == 'hide': 291 return self.hide_panel(group_id) 292 if action_string == 'delete': 293 panel = self.plot_panels[group_id] 294 uid = panel.uid 295 return self.parent.delete_panel(uid) 296 if action_string == "clear": 297 return self.clear_panel_by_id(group_id) 298 293 299 if not hasattr(event, 'plot'): 294 300 return 295 301 title = None 296 302 if hasattr(event, 'title'): 297 title = 'Graph'#event.title 298 303 title = 'Graph'#event.title 299 304 data = event.plot 300 group_id = data.group_id 301 302 if group_id in self.plot_panels.keys(): 305 group_id = data.group_id 306 if group_id in self.plot_panels.keys(): 307 if action_check: 308 # Check if the plot already exist. if it does, do nothing. 309 if data.id in self.plot_panels[group_id].plots.keys(): 310 return 303 311 #update a panel graph 304 312 panel = self.plot_panels[group_id] … … 309 317 new_panel = self.create_1d_panel(data, group_id) 310 318 else: 319 # Need to make the group_id consistent with 1D thus no if below 320 if len(self.plot_panels.values()) > 0: 321 for p_group_id in self.plot_panels.keys(): 322 p_plot = self.plot_panels[p_group_id] 323 if data.id in p_plot.plots.keys(): 324 p_plot.plots[data.id] = data 325 self.plot_panels[group_id] = p_plot 326 if group_id != p_group_id: 327 del self.plot_panels[p_group_id] 328 if p_group_id in data.list_group_id: 329 data.list_group_id.remove(p_group_id) 330 if group_id not in data.list_group_id: 331 data.list_group_id.append(group_id) 332 p_plot.group_id = group_id 333 return 334 311 335 new_panel = self.create_2d_panel(data, group_id) 312 self.create_panel_helper(new_panel, data, group_id, title) 313 336 self.create_panel_helper(new_panel, data, group_id, title) 314 337 return 315 338 -
sansguiframe/src/sans/guiframe/local_perspectives/plotting/profile_dialog.py
r2d443fd r940aca7 53 53 self.SetTitle("Scattering Length Density Profile") 54 54 self.parent = parent 55 self._mgr = None 55 56 self.data = data 56 57 self.str = self.data.__str__() … … 75 76 self.newplot.dy = None 76 77 self.newplot.name = 'SLD' 78 self.newplot.id = self.newplot.name 77 79 self.plotpanel.add_image(self.newplot) 78 80 self.plotpanel.subplot.set_ylim(min(data_plot.y) - _Y_OFF , … … 81 83 max(data_plot.x) + _X_OFF) 82 84 #self.Centre() 85 self.plotpanel.resizing = False 86 self.plotpanel.canvas.set_resizing(self.plotpanel.resizing) 87 self.plotpanel.subplot.figure.canvas.draw_idle() 83 88 self.Layout() 84 89 … … 175 180 self.parent.parent.parent.on_change_caption(name, old_caption, new_caption) 176 181 182 def disable_app_menu(self, panel): 183 """ 184 Disable menu bar 185 """ 186 # Not implemented! 187 return 177 188 178 189 class SLDplotpanel(PlotPanel): … … 203 214 self.yaxis_label = '' 204 215 self.yaxis_unit = '' 216 self.resizing = True 205 217 206 218 def add_image(self, plot): … … 208 220 Add image(Theory1D) 209 221 """ 210 self.plots[plot.name] = plot 211 self.plots[plot.name].is_data = False 212 #init graph 213 #self.gaph = Graph() 222 self.plots[plot.id] = plot 223 self.plots[plot.id].is_data = True 214 224 #add plot 215 225 self.graph.add(plot) … … 222 232 self.yaxis_unit = '10^{-6}A^{-2}' 223 233 self.graph.yaxis(self.yaxis_label, self.yaxis_unit) 234 #self.subplot.figure.canvas.draw_idle() 235 # For latter scale changes 236 self.plots[plot.id].xaxis('\\rm{%s} '% x1_label, 'A') 237 self.plots[plot.id].yaxis('\\rm{SLD} ', '10^{-6}A^{-2}') 224 238 #draw 225 239 self.graph.render(self) 226 self.subplot.figure.canvas.draw_idle()227 228 # For latter scale changes229 self.plots[plot.name].xaxis('\\rm{%s} '% x1_label, 'A')230 self.plots[plot.name].yaxis('\\rm{SLD} ', '10^{-6}A^{-2}')231 240 232 241 def on_set_focus(self, event): … … 257 266 """ 258 267 pass 259 268 260 269 def _onSave(self, evt): 261 270 """ … … 265 274 266 275 """ 267 268 path = None 269 wildcard = "Text files (*.txt)|*.txt|"\ 270 "CanSAS 1D files(*.xml)|*.xml" 271 default_name = "sld_profile" 276 menu = evt.GetEventObject() 277 id = evt.GetId() 278 self.set_selected_from_menu(menu, id) 279 data = self.plots[self.graph.selected_plottable] 280 default_name = data.label 281 if default_name.count('.') > 0: 282 default_name = default_name.split('.')[0] 283 default_name += "_out" 272 284 if self.parent != None: 273 self._default_save_location = self.parent.parent._default_save_location 274 dlg = wx.FileDialog(self, "Choose a file", 275 self._default_save_location, 276 default_name, wildcard , wx.SAVE) 277 278 if dlg.ShowModal() == wx.ID_OK: 279 path = dlg.GetPath() 280 # ext_num = 0 for .txt, ext_num = 1 for .xml 281 # This is MAC Fix 282 ext_num = dlg.GetFilterIndex() 283 if ext_num == 0: 284 format = '.txt' 285 else: 286 format = '.xml' 287 path = os.path.splitext(path)[0] + format 288 mypath = os.path.basename(path) 289 290 #TODO: This is bad design. The DataLoader is designed 291 #to recognize extensions. 292 # It should be a simple matter of calling the . 293 #save(file, data, '.xml') method 294 # of the sans.dataloader.loader.Loader class. 295 from sans.dataloader.loader import Loader 296 #Instantiate a loader 297 loader = Loader() 298 data = self.parent.data 299 format = ".txt" 300 if os.path.splitext(mypath)[1].lower() == format: 301 # Make sure the ext included in the file name 302 # especially on MAC 303 fName = os.path.splitext(path)[0] + format 304 self._onsaveTXT(fName) 305 format = ".xml" 306 if os.path.splitext(mypath)[1].lower() == format: 307 # Make sure the ext included in the file name 308 # especially on MAC 309 fName = os.path.splitext(path)[0] + format 310 loader.save(fName, data, format) 311 try: 312 self._default_save_location = os.path.dirname(path) 313 self.parent.parent._default_save_location = self._default_save_location 314 except: 315 pass 316 dlg.Destroy() 317 285 # What an ancestor! 286 fit_panel = self.parent.parent.parent 287 fit_panel.parent.save_data1d(data, default_name) 288 318 289 class ViewerFrame(wx.Frame): 319 290 """ -
sansguiframe/src/sans/guiframe/media/Graph_help.html
rd874092 r940aca7 7 7 <li><a href="#reset">Reset Graph</a></li> 8 8 <li><a href="#hide">Hide/Show/Delete Graph</a></li> 9 <li><a href="#info">Data Info</a></li> 9 10 <li><a href="#save">Save plot Image</a></li> 10 11 <li><a href="#savedata">Save Data</a></li> 11 12 <li><a href="#drag">Drag plot</a></li> 12 <li><a href="#select">Select Data</a></li>13 13 <li><a href="#zoom">Zoom In/Out</a></li> 14 14 <li><a href="#remove">Remove Data</a></li> … … 33 33 <h5><a name="hide">Hide/Show/Delete Graph</a></h5> 34 34 <p> 35 To Hide, click the Hide ( closed eye) button in the tool bar.<br>35 To Hide, click the Hide (bar) button in the tool bar.<br> 36 36 To Show, select the the 'Show' menuitem in the 'Graph' menu in the menu bar.<br> 37 37 To Delete, click the 'x' button in the title bar.<br> … … 43 43 Right click on plot. Context menu will pop-up select save image [file name].A dialog 44 44 window opens and write a the name of the file to save and click on <b>Save Image.</b> 45 </p> 46 47 <h5><a name="info"> Data Info</a></h5> 48 <p> 49 From the context menu, select 'Data Info' to see the data information dialog panel. 45 50 </p> 46 51 -
sansmodels/src/libigor/libStructureFactor.c
r67424cd r940aca7 7 7 #include "StandardHeaders.h" // Include ANSI headers, Mac headers, IgorXOP.h, XOP.h and XOPSupport.h 8 8 #include "libStructureFactor.h" 9 10 static double gMSAWave[17]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17};11 9 12 10 //Hard Sphere Structure Factor … … 177 175 HayterPenfoldMSA(double dp[], double q) 178 176 { 177 double gMSAWave[17]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17}; 179 178 double Elcharge=1.602189e-19; // electron charge in Coulombs (C) 180 179 double kB=1.380662e-23; // Boltzman constant in J/K … … 231 230 232 231 ierr=0; 233 ierr=sqcoef(ierr );232 ierr=sqcoef(ierr, gMSAWave); 234 233 if (ierr>=0) { 235 SofQ=sqhcal(Qdiam );234 SofQ=sqhcal(Qdiam, gMSAWave); 236 235 }else{ 237 236 //SofQ=NaN; … … 269 268 // 270 269 int 271 sqcoef(int ir )270 sqcoef(int ir, double gMSAWave[]) 272 271 { 273 272 int itm=40,ix,ig,ii; 274 273 double acc=5.0E-6,del,e1,e2,f1,f2; 275 274 276 275 // WAVE gMSAWave = $"root:HayPenMSA:gMSAWave" 277 276 f1=0; //these were never properly initialized... … … 284 283 gMSAWave[16]=gMSAWave[4]; 285 284 ix=1; 286 ir = sqfun(ix,ir );285 ir = sqfun(ix,ir,gMSAWave); 287 286 gMSAWave[14]=gMSAWave[15]; 288 287 gMSAWave[4]=gMSAWave[16]; … … 310 309 gMSAWave[16]=e1; 311 310 ix=2; 312 ir = sqfun(ix,ir );311 ir = sqfun(ix,ir,gMSAWave); 313 312 f1=gMSAWave[15]; 314 313 e1=gMSAWave[16]; … … 317 316 gMSAWave[16]=e2; 318 317 ix=2; 319 ir = sqfun(ix,ir );318 ir = sqfun(ix,ir,gMSAWave); 320 319 f2=gMSAWave[15]; 321 320 e2=gMSAWave[16]; … … 327 326 gMSAWave[16]=e2; 328 327 ix=4; 329 ir = sqfun(ix,ir );328 ir = sqfun(ix,ir,gMSAWave); 330 329 gMSAWave[14]=gMSAWave[15]; 331 330 e2=gMSAWave[16]; … … 338 337 gMSAWave[16]=gMSAWave[4]; 339 338 ix=3; 340 ir = sqfun(ix,ir );339 ir = sqfun(ix,ir,gMSAWave); 341 340 gMSAWave[14]=gMSAWave[15]; 342 341 gMSAWave[4]=gMSAWave[16]; … … 349 348 350 349 int 351 sqfun(int ix, int ir )350 sqfun(int ix, int ir, double gMSAWave[]) 352 351 { 353 352 double acc=1.0e-6; … … 712 711 713 712 double 714 sqhcal(double qq )713 sqhcal(double qq, double gMSAWave[]) 715 714 { 716 715 double SofQ,etaz,akz,gekz,e24,x1,x2,ck,sk,ak2,qk,q2k,qk2,qk3,qqk,sink,cosk,asink,qcosk,aqk,inter; 717 716 // WAVE gMSAWave = $"root:HayPenMSA:gMSAWave" 718 717 719 718 etaz = gMSAWave[10]; 720 719 akz = gMSAWave[12]; -
sansmodels/src/libigor/libStructureFactor.h
r67424cd r940aca7 10 10 11 11 //function prototypes 12 double sqhcal(double qq );13 int sqfun(int ix, int ir );14 int sqcoef(int ir );12 double sqhcal(double qq, double gMSAWave[]); 13 int sqfun(int ix, int ir, double gMSAWave[]); 14 int sqcoef(int ir, double gMSAWave[]); -
sansmodels/src/sans/models/media/model_functions.html
r57eab9e r940aca7 5749 5749 <p class="MsoNormal">The contrast is defined as SLD(core) 5750 5750 SLD(shell) or 5751 SLD(shell solvent). In the parameters, equat_core = equatorial radius 5752 of the 5753 core, polar_core = polar radius of the core, equat_shell = r<sub>min</sub> 5754 (or 5755 equatorial radius of the shell), and polar_shell = = r<sub>maj</sub> 5756 (or polar radius 5757 of the shell).</p> 5751 SLD(shell solvent). In the parameters, equat_core = equatorial core radius, 5752 polar_core = polar core radius, equat_shell = r<sub>min</sub> 5753 (or equatorial outer radius), and polar_shell = = r<sub>maj</sub> 5754 (or polar outer radius).</p> 5758 5755 <p class="MsoNormal"> </p> 5759 5756 <p class="MsoNormal">For P*S: The 2<sup>nd</sup> -
sansview/README.txt
rfa00944 r940aca7 94 94 - run 'python sansview.py' under the 'sansview' folder. 95 95 - The following modules are required: 96 * matplotlib >= 0.99.0(WIN), 0.99.1.1(MAC) 97 * numpy >= 1.4.1 98 * scipy >= 0.7.2 99 * wxpython 2.8.11 unicode(WIN), 2.8.12.0(MAC) < 2.9.xx 100 * lxml >= 2.2.2 101 * multiprocessing-2.6.2(X) 102 * comtypes (for PDF window)(WIN) 103 * pywin32 (to read ms office)(WIN) 104 * PIL (Python Image Library) 105 * Pyparsing (apply for periodictable and bundling) 106 * periodictable = 1.3.0 (using 'easy_install periodictable') 107 * pisa (html to pdf : MAC) 108 * MinGW/Cygwin (for Windows) or other GNU compiler (gcc) 109 * Optional: setuptools, svn, Innosetup, py2exe(WIN),and/or py2app(MAC) to build App from the source. 96 - wxPython 2.8.12.1 97 - matplotlib 1.1.0 98 - SciPy 0.10.1 99 - py2app (MAC) 100 101 (The following three are easily installed using easy_install) 102 - lxml 2.3.0 103 - numpy 1.6.1 104 - periodictable 1.3.0 105 106 (The following are additional dependencies for Windows) 107 - comtypes 0.6.2 108 - pywin32 build 217 109 - pisa 3.0.27 (NOT 3.0.33) 110 - html5lib 0.95 111 - reportlab 2.5 112 - pyparsing 1.5.5 113 - PIL 1.1.7 114 - setuptools 0.6c11 115 - py2exe 0.6.9 (WIN) 116 - svn 117 - MinGW w/ gcc version 4.6.1 (WIN) 118 - Innosetup (WIN). 119 120 (On Windows, the following site has all the dependencies nicely packaged) 121 http://www.lfd.uci.edu/~gohlke/pythonlibs/ 110 122 111 123
Note: See TracChangeset
for help on using the changeset viewer.