Ejemplo n.º 1
0
    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
Ejemplo n.º 2
0
 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!")
Ejemplo n.º 3
0
 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!")
Ejemplo n.º 4
0
    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()
Ejemplo n.º 5
0
    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
Ejemplo n.º 6
0
    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()
Ejemplo n.º 7
0
 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'])
Ejemplo n.º 8
0
 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'])
Ejemplo n.º 9
0
    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()