Changeset 2738 for trunk/exports


Ignore:
Timestamp:
Mar 4, 2017 8:34:05 AM (5 years ago)
Author:
vondreele
Message:

removed all "except Exception as detail" blocks from importers & G2export_CIF. Were in the way of effective debugging of import codes.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/exports/G2export_CIF.py

    r2733 r2738  
    18941894            #=== multiblock: multiple phases and/or histograms ====================
    18951895            nsteps = 1 + len(self.Phases) + len(self.powderDict) + len(self.xtalDict)
    1896             try:
    1897                 dlg = wx.ProgressDialog('CIF progress','starting',nsteps,parent=self.G2frame)
     1896            dlg = wx.ProgressDialog('CIF progress','starting',nsteps,parent=self.G2frame)
    18981897#                Size = dlg.GetSize()
    18991898#                Size = (int(Size[0]*3),Size[1]) # increase size along x
    19001899#                dlg.SetSize(Size)
    1901                 dlg.CenterOnParent()
    1902 
    1903                 # publication info
    1904                 step = 1
    1905                 dlg.Update(step,"Exporting overall section")
    1906                 WriteCIFitem('\ndata_'+self.CIFname+'_publ')
    1907                 WriteAudit()
    1908                 WriteCIFitem('_pd_block_id',
    1909                              str(self.CIFdate) + "|" + str(self.CIFname) + "|" +
    1910                              str(self.shortauthorname) + "|Overall")
    1911                 writeCIFtemplate(self.OverallParms['Controls'],'publ') #insert the publication template
    1912                 # ``template_publ.cif`` or a modified version
    1913                 # overall info
    1914                 WriteCIFitem('data_'+str(self.CIFname)+'_overall')
    1915                 WriteOverall()
    1916                 #============================================================
    1917                 WriteCIFitem('# POINTERS TO PHASE AND HISTOGRAM BLOCKS')
    1918                 datablockidDict = {} # save block names here -- N.B. check for conflicts between phase & hist names (unlikely!)
    1919                 # loop over phase blocks
    1920                 if len(self.Phases) > 1:
    1921                     loopprefix = ''
    1922                     WriteCIFitem('loop_   _pd_phase_block_id')
    1923                 else:
    1924                     loopprefix = '_pd_phase_block_id'
    1925 
    1926                 for phasenam in sorted(self.Phases.keys()):
    1927                     i = self.Phases[phasenam]['pId']
    1928                     datablockidDict[phasenam] = (str(self.CIFdate) + "|" + str(self.CIFname) + "|" +
    1929                                  'phase_'+ str(i) + '|' + str(self.shortauthorname))
    1930                     WriteCIFitem(loopprefix,datablockidDict[phasenam])
    1931                 # loop over data blocks
    1932                 if len(self.powderDict) + len(self.xtalDict) > 1:
    1933                     loopprefix = ''
    1934                     WriteCIFitem('loop_   _pd_block_diffractogram_id')
    1935                 else:
    1936                     loopprefix = '_pd_block_diffractogram_id'
    1937                 for i in sorted(self.powderDict.keys()):
    1938                     hist = self.powderDict[i]
    1939                     histblk = self.Histograms[hist]
    1940                     instnam = histblk["Sample Parameters"]['InstrName']
    1941                     instnam = instnam.replace(' ','')
    1942                     j = histblk['hId']
    1943                     datablockidDict[hist] = (str(self.CIFdate) + "|" + str(self.CIFname) + "|" +
    1944                                              str(self.shortauthorname) + "|" +
    1945                                              instnam + "_hist_"+str(j))
    1946                     WriteCIFitem(loopprefix,datablockidDict[hist])
    1947                 for i in sorted(self.xtalDict.keys()):
    1948                     hist = self.xtalDict[i]
    1949                     histblk = self.Histograms[hist]
    1950                     instnam = histblk["Instrument Parameters"][0]['InstrName']
    1951                     instnam = instnam.replace(' ','')
    1952                     i = histblk['hId']
    1953                     datablockidDict[hist] = (str(self.CIFdate) + "|" + str(self.CIFname) + "|" +
    1954                                              str(self.shortauthorname) + "|" +
    1955                                              instnam + "_hist_"+str(i))
    1956                     WriteCIFitem(loopprefix,datablockidDict[hist])
    1957                 #============================================================
    1958                 # loop over phases, exporting them
    1959                 phasebyhistDict = {} # create a cross-reference to phases by histogram
    1960                 for j,phasenam in enumerate(sorted(self.Phases.keys())):
     1900            dlg.CenterOnParent()
     1901
     1902            # publication info
     1903            step = 1
     1904            dlg.Update(step,"Exporting overall section")
     1905            WriteCIFitem('\ndata_'+self.CIFname+'_publ')
     1906            WriteAudit()
     1907            WriteCIFitem('_pd_block_id',
     1908                         str(self.CIFdate) + "|" + str(self.CIFname) + "|" +
     1909                         str(self.shortauthorname) + "|Overall")
     1910            writeCIFtemplate(self.OverallParms['Controls'],'publ') #insert the publication template
     1911            # ``template_publ.cif`` or a modified version
     1912            # overall info
     1913            WriteCIFitem('data_'+str(self.CIFname)+'_overall')
     1914            WriteOverall()
     1915            #============================================================
     1916            WriteCIFitem('# POINTERS TO PHASE AND HISTOGRAM BLOCKS')
     1917            datablockidDict = {} # save block names here -- N.B. check for conflicts between phase & hist names (unlikely!)
     1918            # loop over phase blocks
     1919            if len(self.Phases) > 1:
     1920                loopprefix = ''
     1921                WriteCIFitem('loop_   _pd_phase_block_id')
     1922            else:
     1923                loopprefix = '_pd_phase_block_id'
     1924
     1925            for phasenam in sorted(self.Phases.keys()):
     1926                i = self.Phases[phasenam]['pId']
     1927                datablockidDict[phasenam] = (str(self.CIFdate) + "|" + str(self.CIFname) + "|" +
     1928                             'phase_'+ str(i) + '|' + str(self.shortauthorname))
     1929                WriteCIFitem(loopprefix,datablockidDict[phasenam])
     1930            # loop over data blocks
     1931            if len(self.powderDict) + len(self.xtalDict) > 1:
     1932                loopprefix = ''
     1933                WriteCIFitem('loop_   _pd_block_diffractogram_id')
     1934            else:
     1935                loopprefix = '_pd_block_diffractogram_id'
     1936            for i in sorted(self.powderDict.keys()):
     1937                hist = self.powderDict[i]
     1938                histblk = self.Histograms[hist]
     1939                instnam = histblk["Sample Parameters"]['InstrName']
     1940                instnam = instnam.replace(' ','')
     1941                j = histblk['hId']
     1942                datablockidDict[hist] = (str(self.CIFdate) + "|" + str(self.CIFname) + "|" +
     1943                                         str(self.shortauthorname) + "|" +
     1944                                         instnam + "_hist_"+str(j))
     1945                WriteCIFitem(loopprefix,datablockidDict[hist])
     1946            for i in sorted(self.xtalDict.keys()):
     1947                hist = self.xtalDict[i]
     1948                histblk = self.Histograms[hist]
     1949                instnam = histblk["Instrument Parameters"][0]['InstrName']
     1950                instnam = instnam.replace(' ','')
     1951                i = histblk['hId']
     1952                datablockidDict[hist] = (str(self.CIFdate) + "|" + str(self.CIFname) + "|" +
     1953                                         str(self.shortauthorname) + "|" +
     1954                                         instnam + "_hist_"+str(i))
     1955                WriteCIFitem(loopprefix,datablockidDict[hist])
     1956            #============================================================
     1957            # loop over phases, exporting them
     1958            phasebyhistDict = {} # create a cross-reference to phases by histogram
     1959            for j,phasenam in enumerate(sorted(self.Phases.keys())):
     1960                step += 1
     1961                dlg.Update(step,"Exporting phase "+phasenam+' (#'+str(j+1)+')')
     1962                i = self.Phases[phasenam]['pId']
     1963                WriteCIFitem('\ndata_'+self.CIFname+"_phase_"+str(i))
     1964                WriteCIFitem('# Information for phase '+str(i))
     1965                WriteCIFitem('_pd_block_id',datablockidDict[phasenam])
     1966                # report the phase
     1967                writeCIFtemplate(self.Phases[phasenam]['General'],'phase',phasenam) # write phase template
     1968                WritePhaseInfo(phasenam)
     1969                # preferred orientation
     1970                if self.ifPWDR:
     1971                    SH = FormatSH(phasenam)
     1972                    MD = FormatHAPpo(phasenam)
     1973                    if SH and MD:
     1974                        WriteCIFitem('_pd_proc_ls_pref_orient_corr', SH + '\n' + MD)
     1975                    elif SH or MD:
     1976                        WriteCIFitem('_pd_proc_ls_pref_orient_corr', SH + MD)
     1977                    else:
     1978                        WriteCIFitem('_pd_proc_ls_pref_orient_corr', 'none')
     1979                # report sample profile terms
     1980                PP = FormatPhaseProfile(phasenam)
     1981                if PP:
     1982                    WriteCIFitem('_pd_proc_ls_profile_function',PP)
     1983
     1984            #============================================================
     1985            # loop over histograms, exporting them
     1986            for i in sorted(self.powderDict.keys()):
     1987                hist = self.powderDict[i]
     1988                histblk = self.Histograms[hist]
     1989                if hist.startswith("PWDR"):
    19611990                    step += 1
    1962                     dlg.Update(step,"Exporting phase "+phasenam+' (#'+str(j+1)+')')
    1963                     i = self.Phases[phasenam]['pId']
    1964                     WriteCIFitem('\ndata_'+self.CIFname+"_phase_"+str(i))
    1965                     WriteCIFitem('# Information for phase '+str(i))
    1966                     WriteCIFitem('_pd_block_id',datablockidDict[phasenam])
    1967                     # report the phase
    1968                     writeCIFtemplate(self.Phases[phasenam]['General'],'phase',phasenam) # write phase template
    1969                     WritePhaseInfo(phasenam)
    1970                     # preferred orientation
    1971                     if self.ifPWDR:
    1972                         SH = FormatSH(phasenam)
    1973                         MD = FormatHAPpo(phasenam)
    1974                         if SH and MD:
    1975                             WriteCIFitem('_pd_proc_ls_pref_orient_corr', SH + '\n' + MD)
    1976                         elif SH or MD:
    1977                             WriteCIFitem('_pd_proc_ls_pref_orient_corr', SH + MD)
    1978                         else:
    1979                             WriteCIFitem('_pd_proc_ls_pref_orient_corr', 'none')
    1980                     # report sample profile terms
    1981                     PP = FormatPhaseProfile(phasenam)
    1982                     if PP:
    1983                         WriteCIFitem('_pd_proc_ls_profile_function',PP)
    1984 
    1985                 #============================================================
    1986                 # loop over histograms, exporting them
    1987                 for i in sorted(self.powderDict.keys()):
    1988                     hist = self.powderDict[i]
    1989                     histblk = self.Histograms[hist]
    1990                     if hist.startswith("PWDR"):
    1991                         step += 1
    1992                         dlg.Update(step,"Exporting "+hist.strip())
    1993                         WriteCIFitem('\ndata_'+self.CIFname+"_pwd_"+str(i))
    1994                         #instnam = histblk["Sample Parameters"]['InstrName']
    1995                         # report instrumental profile terms
    1996                         WriteCIFitem('_pd_proc_ls_profile_function',
    1997                             FormatInstProfile(histblk["Instrument Parameters"],histblk['hId']))
    1998                         WriteCIFitem('# Information for histogram '+str(i)+': '+hist)
    1999                         WriteCIFitem('_pd_block_id',datablockidDict[hist])
    2000                         histprm = self.Histograms[hist]["Sample Parameters"]
    2001                         writeCIFtemplate(histprm,'powder',histprm['InstrName']) # powder template
    2002                         WritePowderData(hist)
    2003                 for i in sorted(self.xtalDict.keys()):
    2004                     hist = self.xtalDict[i]
    2005                     histblk = self.Histograms[hist]
    2006                     if hist.startswith("HKLF"):
    2007                         step += 1
    2008                         dlg.Update(step,"Exporting "+hist.strip())
    2009                         WriteCIFitem('\ndata_'+self.CIFname+"_sx_"+str(i))
    2010                         #instnam = histblk["Instrument Parameters"][0]['InstrName']
    2011                         WriteCIFitem('# Information for histogram '+str(i)+': '+hist)
    2012                         WriteCIFitem('_pd_block_id',datablockidDict[hist])
    2013                         histprm = self.Histograms[hist]["Instrument Parameters"][0]
    2014                         writeCIFtemplate(histprm,'single',histprm['InstrName']) # single crystal template
    2015                         WriteSingleXtalData(hist)
    2016 
    2017             except Exception:
    2018                 import traceback
    2019                 print(traceback.format_exc())
    2020                 self.G2frame.ErrorDialog('Exception',
    2021                                          'Error occurred in CIF creation. '+
    2022                                          'See full error message in console output ')
    2023             finally:
    2024                 dlg.Destroy()
     1991                    dlg.Update(step,"Exporting "+hist.strip())
     1992                    WriteCIFitem('\ndata_'+self.CIFname+"_pwd_"+str(i))
     1993                    #instnam = histblk["Sample Parameters"]['InstrName']
     1994                    # report instrumental profile terms
     1995                    WriteCIFitem('_pd_proc_ls_profile_function',
     1996                        FormatInstProfile(histblk["Instrument Parameters"],histblk['hId']))
     1997                    WriteCIFitem('# Information for histogram '+str(i)+': '+hist)
     1998                    WriteCIFitem('_pd_block_id',datablockidDict[hist])
     1999                    histprm = self.Histograms[hist]["Sample Parameters"]
     2000                    writeCIFtemplate(histprm,'powder',histprm['InstrName']) # powder template
     2001                    WritePowderData(hist)
     2002            for i in sorted(self.xtalDict.keys()):
     2003                hist = self.xtalDict[i]
     2004                histblk = self.Histograms[hist]
     2005                if hist.startswith("HKLF"):
     2006                    step += 1
     2007                    dlg.Update(step,"Exporting "+hist.strip())
     2008                    WriteCIFitem('\ndata_'+self.CIFname+"_sx_"+str(i))
     2009                    #instnam = histblk["Instrument Parameters"][0]['InstrName']
     2010                    WriteCIFitem('# Information for histogram '+str(i)+': '+hist)
     2011                    WriteCIFitem('_pd_block_id',datablockidDict[hist])
     2012                    histprm = self.Histograms[hist]["Instrument Parameters"][0]
     2013                    writeCIFtemplate(histprm,'single',histprm['InstrName']) # single crystal template
     2014                    WriteSingleXtalData(hist)
     2015
     2016            dlg.Destroy()
    20252017
    20262018        WriteCIFitem('#--' + 15*'eof--' + '#')
     
    27282720        dlg.Destroy()
    27292721        if ret == wx.ID_OK:
    2730             try:
    2731                 cf = G2IO.ReadCIF(fil)
    2732                 if len(cf.keys()) == 0:
    2733                     raise Exception,"No CIF data_ blocks found"
    2734                 if len(cf.keys()) != 1:
    2735                     raise Exception, 'Error, CIF Template has more than one block: '+fil
    2736                 self.dict["CIF_template"] = fil
    2737             except Exception as err:
    2738                 print('\nError reading CIF: '+fil)
    2739                 dlg = wx.MessageDialog(self.cifdefs,
    2740                                    'Error reading CIF '+fil,
    2741                                    'Error in CIF file',
    2742                                    wx.OK)
    2743                 dlg.ShowModal()
    2744                 dlg.Destroy()
    2745                 print(err.message)
    2746                 return
     2722            cf = G2IO.ReadCIF(fil)
     2723            if len(cf.keys()) == 0:
     2724                raise Exception,"No CIF data_ blocks found"
     2725            if len(cf.keys()) != 1:
     2726                raise Exception, 'Error, CIF Template has more than one block: '+fil
     2727            self.dict["CIF_template"] = fil
    27472728            self.repaint() #EditCIFDefaults()
    27482729
Note: See TracChangeset for help on using the changeset viewer.