Changeset 3169


Ignore:
Timestamp:
Nov 30, 2017 4:01:26 PM (4 years ago)
Author:
vondreele
Message:

more complete fixes to G2phase_CIF.py importer for incommensurate structures

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/imports/G2phase_CIF.py

    r3168 r3169  
    7272            '_chemical_formula_sum'
    7373            )
    74         cf = G2obj.ReadCIF(filename)
     74        try:
     75            cf = G2obj.ReadCIF(filename)
     76        except:
     77            msg = 'Unreadable cif file'
     78            self.errors = msg
     79            self.warnings += msg
     80            return False
    7581        # scan blocks for structural info
    7682        self.errors = 'Error during scan of blocks for datasets'
     
    9399                choice[-1] += blknm + ': '
    94100                for i in phasenamefields: # get a name for the phase
    95                     name = cf[blknm].get(i).strip()
     101                    name = cf[blknm].get(i,'phase name').strip()
    96102                    if name is None or name == '?' or name == '.':
    97103                        continue
     
    134140            if not SpGrp:
    135141                SpGrp = blk.get("_parent_space_group.name_H-M",'')
    136                 magnetic = True
    137                 self.Phase['General']['Type'] = 'magnetic'
    138                 self.Phase['General']['AtomPtrs'] = [3,1,10,12]
     142                if SpGrp:
     143                    magnetic = True
     144                    self.Phase['General']['Type'] = 'magnetic'
     145                    self.Phase['General']['AtomPtrs'] = [3,1,10,12]
    139146            if Super:
    140147                sspgrp = blk.get("_space_group_ssg_name",'').split('(')
     
    179186                waveloop = blk.GetLoop('_cell_wave_vector_seq_id')
    180187                waveDict = dict(waveloop.items())
    181                 SuperVec = [[float(waveDict['_cell_wave_vector_x'][0]),
    182                     float(waveDict['_cell_wave_vector_y'][0]),
    183                     float(waveDict['_cell_wave_vector_z'][0])],False,4]
     188                SuperVec = [[float(waveDict['_cell_wave_vector_x'][0].replace('?','0')),
     189                    float(waveDict['_cell_wave_vector_y'][0].replace('?','0')),
     190                    float(waveDict['_cell_wave_vector_z'][0].replace('?','0'))],False,4]
    184191            # read in atoms
    185192            self.errors = 'Error during reading of atoms'
     
    334341                        nim = -1
    335342                        Sadp = np.zeros((4,12))
    336                         for i,item in enumerate(UijFdict['_atom_site_U_fourier_atom_site_label']):
     343                        for i,item in enumerate(UijFdict['_atom_site_u_fourier_atom_site_label']):
    337344                            if item == atomlist[0]:
    338                                 ix = ['U11','U22','U33','U12','U13','U23'].index(UijFdict['_atom_site_U_fourier_tens_elem'][i])
    339                                 im = int(UijFdict['_atom_site_U_fourier_wave_vector_seq_id'][i])
     345                                ix = ['U11','U22','U33','U12','U13','U23'].index(UijFdict['_atom_site_u_fourier_tens_elem'][i])
     346                                im = int(UijFdict['_atom_site_u_fourier_wave_vector_seq_id'][i])
    340347                                if im != nim:
    341348                                    nim = im
    342                                 val = UijFdict['_atom_site_U_fourier_param_sin'][i]
     349                                val = UijFdict['_atom_site_u_fourier_param_sin'][i]
    343350                                Sadp[im-1][ix] = cif.get_number_with_esd(val)[0]
    344                                 val = UijFdict['_atom_site_U_fourier_param_cos'][i]
     351                                val = UijFdict['_atom_site_u_fourier_param_cos'][i]
    345352                                Sadp[im-1][ix+6] = cif.get_number_with_esd(val)[0]
    346353                        if nim >= 0:
Note: See TracChangeset for help on using the changeset viewer.