def on_read_initial_file(self): a = P4Rm() b = ReadFile() if (os.path.exists(a.PathDict['DW_file']) and os.path.exists(a.PathDict['Strain_file']) and os.path.exists(a.PathDict['XRD_file'])) is True: try: """READING DW FILE""" b.read_dw_file(a.PathDict['DW_file']) """READING Strain FILE""" b.read_strain_file(a.PathDict['Strain_file']) """READING XRD FILE""" b.read_xrd_file(a.PathDict['XRD_file']) self.on_calc_from_xrd() P4Rm.ParamDictbackup['dwp'] = a.ParamDict['dwp'] P4Rm.ParamDictbackup['sp'] = a.ParamDict['sp'] P4Rm.ParamDict['sp_abrupt'] = a.ParamDict['sp'] P4Rm.ParamDict['dwp_abrupt'] = a.ParamDict['dwp'] P4Rm.ParamDict['sp_smooth'] = a.ParamDict['sp'] P4Rm.ParamDict['dwp_smooth'] = a.ParamDict['dwp'] except TypeError: logger.log(logging.WARNING, "!Please check your input file!") else: return True else: msg_ = "Please, check that the input files really exists" dlg = GMD.GenericMessageDialog(None, msg_, "Attention", agwStyle=wx.OK | wx.ICON_INFORMATION) dlg.ShowModal() return False
def calc_XRD(self, paths): """ Loading and extracting of XRD data file with no default extension, but needed a two columns format file """ b = ReadFile() P4Rm.DefaultDict['XRD_folder'] = os.path.split(paths[0])[0] P4Rm.PathDict['XRD_file'] = paths[0] self.on_update_config_file('XRD_folder') try: """READING XRD FILE""" b.read_xrd_file(paths[0]) self.on_calc_from_xrd() pub.sendMessage(pubsub_Draw_XRD, b=1) except TypeError: logger.log(logging.WARNING, "!Please check your input file!")
def on_load_project(self, paths): a = P4Rm() b = ReadFile() b.on_read_init_parameters(paths, p4R.ExperimentFile) datafromini = b.read_result_value() self.on_reset_deformation_multiplication() self.on_init_dictionnaries() P4Rm.ProjectFileData = datafromini[5:] i = 0 for k in p4R.Exp_file_all_section: if k in p4R.Exp_read_only: P4Rm.AllDataDict[k] = float(datafromini[i]) else: P4Rm.AllDataDict[k] = datafromini[i] i += 1 i = 0 for name in ['Compound_name', 'substrate_name', 'DW_file', 'Strain_file', 'XRD_file']: P4Rm.PathDict[name] = datafromini[i] i += 1 P4Rm.DefaultDict['project_folder'] = os.path.split(paths)[0] P4Rm.PathDict['path2ini'] = os.path.split(paths)[0] P4Rm.PathDict['path2inicomplete'] = paths P4Rm.PathDict['namefromini'] = os.path.splitext( os.path.basename(paths))[0] self.on_update_config_file('project_folder') if a.ProjectFileData == []: msg_ = ("Please, pay attention to your input files," + "there are some mistakes in the data") dlg = GMD.GenericMessageDialog(None, msg_, "Attention", agwStyle=wx.OK | wx.ICON_INFORMATION) dlg.ShowModal() else: P4Rm.PathDict['project_name'] = os.path.splitext( os.path.basename(paths))[0] success = self.on_read_initial_file() if success: self.on_load_and_read_data()
def calc_DW(self, paths=None, choice=None): """ Reading and calcul DW coefficient """ if paths: P4Rm.DefaultDict['DW_folder'] = os.path.split(paths[0])[0] self.on_update_config_file('DW_folder') a = P4Rm() b = ReadFile() c = SaveFile4Diff() spline_DW = a.spline_DW if choice == 0: data = b.read_dw_xy_file(paths[0]) if spline_DW == 2: t = data[0].max() P4Rm.ParamDict['t_l'] = t/a.AllDataDict['number_slices'] P4Rm.ParamDict['z'] = (arange(a.AllDataDict['number_slices'] + 1) * a.ParamDict['t_l']) P4Rm.ParamDict['depth'] = t - a.ParamDict['z'] else: t = a.AllDataDict['damaged_depth'] P4Rm.ParamDict['dwp'] = fit_input_DW(data, a.AllDataDict['dw_basis_func'], a.AllDataDict['damaged_depth'], spline_DW) else: t = a.AllDataDict['damaged_depth'] P4Rm.ParamDictbackup['dwp'] = a.ParamDict['dwp'] P4Rm.ParamDict['dw_basis'] = float(a.AllDataDict['strain_basis_func']) P4Rm.ParamDict['DW_i'] = f_strain(a.ParamDict['z'], a.ParamDict['dwp'], t, spline_DW) self.on_shifted_dwp_curves(t) P4Rm.from_calc_DW = 1 self.draw_curves() if choice == 0: c.save_deformation('DW_file', 'DW', a.ParamDict['dwp'])
def __init__(self, parent): pos = wx.DefaultPosition screen_size = wx.GetDisplaySize() if screen_size[1] <= 1000: size = (1000, 900) else: size = (1180, 1035) no_resize = wx.DEFAULT_FRAME_STYLE wx.Frame.__init__(self, None, wx.ID_ANY, p4R.Application_name, pos, size, style=no_resize) wx.Frame.CenterOnScreen(self) self.Bind(wx.EVT_CLOSE, self.on_close) # self.Bind(wx.EVT_SIZE, self.on_size) self.locale = wx.Locale(wx.LANGUAGE_ENGLISH) self.sb = wx.StatusBar(self, -1) self.sb.SetFieldsCount(3) self.SetStatusBar(self.sb) self.SetStatusWidths([-4, -1, -1]) self.SetIcon(prog_icon.GetIcon()) self.m_menubar = wx.MenuBar() self.NewP_ID = wx.ID_NEW self.LoadP_ID = wx.NewId() self.Load_XRD_ID = wx.NewId() self.Load_Strain_ID = wx.NewId() self.Load_DW_ID = wx.NewId() self.Export_data_ID = wx.NewId() self.Save_ID = wx.NewId() self.SaveP_ID = wx.NewId() self.log_ID = wx.NewId() self.paramoption_ID = wx.NewId() self.spdwpvalues_ID = wx.NewId() self.fitreport_ID = wx.NewId() self.colorwindow_ID = wx.NewId() self.Update = wx.NewId() self.Reloadini = wx.NewId() self.About = wx.NewId() self.Exit = wx.NewId() """File menu""" self.m_menufile = wx.Menu() self.m_menunewproject = wx.MenuItem(self.m_menufile, self.NewP_ID, u"New Project" + u"\t" + u"Ctrl+N", u"Begin a new project", wx.ITEM_NORMAL) self.m_menunewproject.SetBitmap(NewP24.GetBitmap()) self.m_menuload = wx.MenuItem(self.m_menufile, self.LoadP_ID, u"Load Project" + u"\t" + u"Ctrl+O", u"Load .ini file", wx.ITEM_NORMAL) self.m_menuload.SetBitmap(LoadP24.GetBitmap()) self.m_menuloadXRD = wx.MenuItem(self.m_menufile, self.Load_XRD_ID, u"Import XRD data" + u"\t" + u"Alt-O", u"Import XRD data file", wx.ITEM_NORMAL) self.m_menuloadStrain = wx.MenuItem(self.m_menufile, self.Load_Strain_ID, u"Import Strain", wx.EmptyString, wx.ITEM_NORMAL) self.m_menuloadDW = wx.MenuItem(self.m_menufile, self.Load_DW_ID, u"Import DW", wx.EmptyString, wx.ITEM_NORMAL) self.m_menuexportData = wx.MenuItem(self.m_menufile, self.Export_data_ID, u"Export Strain - DW - XRD fit", wx.EmptyString, wx.ITEM_NORMAL) self.m_menusave = wx.MenuItem(self.m_menufile, self.Save_ID, u"Save" + u"\t" + u"Ctrl+S", wx.EmptyString, wx.ITEM_NORMAL) self.m_menusave.SetBitmap(saveP24.GetBitmap()) self.m_menusaveas = wx.MenuItem(self.m_menufile, self.SaveP_ID, u"Save As" + u"\t" + u"Ctrl-Shift+S", wx.EmptyString, wx.ITEM_NORMAL) self.m_menusaveas.SetBitmap(saveasP24.GetBitmap()) self.m_menuexit = wx.MenuItem(self.m_menufile, self.Exit, u"Exit" + u"\t" + u"Alt-X", wx.EmptyString, wx.ITEM_NORMAL) self.m_menuexit.SetBitmap(shutdown24.GetBitmap()) self.m_menubar.Append(self.m_menufile, u"&File") """Option menu""" self.m_menuoptions = wx.Menu() self.m_menubar.Append(self.m_menuoptions, u"O&ptions") self.m_menulog = wx.MenuItem(self.m_menuoptions, self.log_ID, u"Log file", u"Open log file", wx.ITEM_NORMAL) self.m_menulog.SetBitmap(logP32.GetBitmap()) text_ = u"Open Color and style graph window" self.m_menucolor = wx.MenuItem(self.m_menuoptions, self.colorwindow_ID, u"Graph Style", text_, wx.ITEM_NORMAL) self.HideShowDatabase = wx.NewId() self.m_menuhide_show_database = wx.MenuItem(self.m_menufile, self.HideShowDatabase, u"Use Database", wx.EmptyString, wx.ITEM_CHECK) """Fit menu""" self.m_menufit = wx.Menu() self.m_menubar.Append(self.m_menufit, u"F&it") self.m_menu_fit = wx.MenuItem(self.m_menufit, self.paramoption_ID, u"Fitting options", u"Open Parameters window", wx.ITEM_NORMAL) self.m_menu_strain_dw = wx.MenuItem(self.m_menufit, self.spdwpvalues_ID, (u"Strain and DW Values" + u"\t" + u"Ctrl+G"), u"Open Strain & DW Values window", wx.ITEM_NORMAL) self.m_menu_report_fit = wx.MenuItem(self.m_menufit, self.fitreport_ID, (u"Fitting report" + u"\t" + u"Ctrl+R"), u"Open Lmfit report window", wx.ITEM_NORMAL) """About menu""" self.m_menuhelp = wx.Menu() self.m_menuabout = wx.MenuItem(self.m_menuhelp, self.About, u"About." + u"\t" + u"Alt-L", wx.EmptyString, wx.ITEM_NORMAL) self.m_menuabout.SetBitmap(About_icon_24.GetBitmap()) self.m_menubar.Append(self.m_menuhelp, u"&Help") if 'phoenix' in wx.PlatformInfo: self.m_menufile.Append(self.m_menunewproject) self.m_menufile.Append(self.m_menuload) self.m_menufile.AppendSeparator() self.m_menufile.Append(self.m_menuloadXRD) self.m_menufile.Append(self.m_menuloadStrain) self.m_menufile.Append(self.m_menuloadDW) self.m_menufile.AppendSeparator() self.m_menufile.Append(self.m_menuexportData) self.m_menufile.AppendSeparator() self.m_menufile.Append(self.m_menusave) self.m_menufile.Append(self.m_menusaveas) self.m_menufile.Append(self.m_menuexit) self.m_menuoptions.Append(self.m_menulog) self.m_menuoptions.Append(self.m_menuhide_show_database) self.m_menuoptions.Append(self.m_menucolor) self.m_menufit.Append(self.m_menu_fit) self.m_menufit.Append(self.m_menu_strain_dw) self.m_menufit.Append(self.m_menu_report_fit) self.m_menuhelp.Append(self.m_menuabout) else: self.m_menufile.AppendItem(self.m_menunewproject) self.m_menufile.AppendItem(self.m_menuload) self.m_menufile.AppendSeparator() self.m_menufile.AppendItem(self.m_menuloadXRD) self.m_menufile.AppendItem(self.m_menuloadStrain) self.m_menufile.AppendItem(self.m_menuloadDW) self.m_menufile.AppendSeparator() self.m_menufile.AppendItem(self.m_menuexportData) self.m_menufile.AppendSeparator() self.m_menufile.AppendItem(self.m_menusave) self.m_menufile.AppendItem(self.m_menusaveas) self.m_menufile.AppendItem(self.m_menuexit) self.m_menuoptions.AppendItem(self.m_menulog) self.m_menuoptions.AppendItem(self.m_menuhide_show_database) self.m_menuoptions.AppendItem(self.m_menucolor) self.m_menufit.AppendItem(self.m_menu_fit) self.m_menufit.AppendItem(self.m_menu_strain_dw) self.m_menufit.AppendItem(self.m_menu_report_fit) self.m_menuhelp.AppendItem(self.m_menuabout) self.SetMenuBar(self.m_menubar) self.Bind(wx.EVT_MENU, self.set_menu_all) self.Bind(wx.EVT_MENU, self.on_close, id=self.Exit) self.Bind(wx.EVT_MENU, self.on_about_box, id=self.About) # ---------------------------------------------------------------------- # Definition of shortcut used in RaDMax: # ctrl+U emulate the update button # ctrl+I reload the last open project self.accel_tbl = wx.AcceleratorTable([(wx.ACCEL_CTRL, ord('U'), self.Update), (wx.ACCEL_CTRL, ord('I'), self.Reloadini)]) self.SetAcceleratorTable(self.accel_tbl) self.frame_Fit_Param_window = None self.frame_Fit_Report_window = None self.frame_GSA_window = None self.frame_color_window = None self.frame_data_coef_window = None self.Fit_Param_window_launch = 0 self.Fit_Report_window_launch = 0 self.GSA_window_launch = 0 self.color_window_launch = 0 self.data_coef_window_launch = 0 try: import lmfit vers = lmfit.__version__ if LooseVersion(vers) < LooseVersion("0.9.0"): print("\nYou are using Lmfit version number %s" % vers) print("To run, RaDMaX needs Lmfit version 0.9.0 or higher") print("Please, install a new Lmfit version to be able" + " to use it with RaDMaX") print("Lmfit will not be used in this session\n") P4Rm.lmfit_install = False else: print ("Lmfit: %s" % (lmfit.__version__)) P4Rm.lmfit_install = True except ImportError: print ("\nLmfit module is recommanded but not mandatory") pub.subscribe(self.on_change_title, pubsub_ChangeFrameTitle) pub.subscribe(self.on_activate_import, pubsub_Activate_Import) pub.subscribe(self.on_display_option_window, pubsub_Hide_Show_Option) pub.subscribe(self.on_display_GSA_window, pubsub_Hide_Show_GSA) pub.subscribe(self.on_display_Color_window, pubsub_Hide_Show_Color) pub.subscribe(self.on_display_fit_report_window, pubsub_Hide_Show_FitReport) pub.subscribe(self.on_display_data_coef_window, pubsub_Hide_Show_data_coef) pub.subscribe(self.on_save, pubsub_save_from_DB) pub.subscribe(self.on_save_before_fit, pubsub_save_project_before_fit) pub.subscribe(self.on_add_damaged, pubsub_add_damaged_before_fit) from Read4Radmax import ReadFile b = ReadFile() b.on_read_init_parameters(os.path.join(p4R.current_dir, p4R.filename + '.ini'), p4R.RadmaxFile) config_File_extraction = b.read_result_value() i = 2 a = P4Rm() for k, v in a.DefaultDict.items(): P4Rm.DefaultDict[k] = config_File_extraction[i] i += 1 for k, v in p4R.FitParamDefault.items(): if k == 'maxfev': P4Rm.DefaultDict[k] = int(float(a.DefaultDict[k])) elif k in p4R.s_radmax_7: P4Rm.DefaultDict[k] = a.DefaultDict[k] elif k in p4R.s_radmax_8: if a.DefaultDict[k] == 'True': P4Rm.DefaultDict[k] = True else: P4Rm.DefaultDict[k] = False else: P4Rm.DefaultDict[k] = float(a.DefaultDict[k]) if os.listdir(p4R.structures_name): P4Rm.crystal_list = sorted(list(os.listdir(p4R.structures_name))) if a.DefaultDict['use_database']: self.m_menuhide_show_database.Check(True) else: self.m_menuhide_show_database.Check(False) load_random_voice = randint(0, 3) Sound_Launcher(self, 2, load_random_voice) MainPanel(self, self.sb) self.Show()