Ignore:
Timestamp:
May 17, 2020 4:31:21 PM (19 months ago)
Author:
vondreele
Message:

fix generation of fullrmc pdb file for structures with partial substitutions & vacancies.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/imports/G2pdf_gr.py

    r4339 r4425  
    2323GSASIIpath.SetVersionNumber("$Revision$")
    2424
     25class txt_FSQReaderClass(G2obj.ImportPDFData):
     26    'Routines to import S(Q) data from a .fq file'
     27    def __init__(self):
     28        super(self.__class__,self).__init__( # fancy way to self-reference
     29            extensionlist=('.fq','.sq'),
     30            strictExtension=False,
     31            formatName = 'q (A-1) step S(Q) data',
     32            longFormatName = 'q (A-1) stepped S(Q) PDF data from pdfGet or GSAS-II'
     33            )
     34
     35    # Validate the contents -- make sure we only have valid lines
     36    def ContentsValidator(self, filename):
     37        'Look through the file for expected types of lines in a valid r-step file'
     38        filepointer = open(filename,'r')
     39        Ndata = 0
     40        for i,S in enumerate(filepointer):
     41            if '#' in S[:2]:
     42                break
     43            if len(S.split()) != 2:
     44                break
     45        for i,S in enumerate(filepointer):           
     46            vals = S.split()
     47            if len(vals) >= 2:
     48                try:
     49                    data = [float(val) for val in vals]
     50                    Ndata += 1
     51                except ValueError:
     52                    pass
     53        if not Ndata:     
     54            self.errors = 'No 2 or more column numeric data found'
     55            filepointer.close()
     56            return False
     57        filepointer.close()
     58        return True # no errors encountered
     59
     60    def Reader(self,filename,ParentFrame=None, **unused):
     61        print ('Read a q-step text file')
     62        x = []
     63        y = []
     64        ifData = False
     65        filepointer = open(filename,'r')
     66        for i,S in enumerate(filepointer):
     67            if not ifData:
     68                if len(S) == 1:     #skip blank line
     69                    continue
     70                if len(S.split()) != 2:
     71                    continue
     72                self.comments.append(S[:-1])
     73                if '#' in S[:2]:
     74                    ifData = True
     75            else:
     76                vals = S.split()
     77                if len(vals) >= 2:
     78                    try:
     79                        data = [float(val) for val in vals]
     80                        x.append(float(data[0]))
     81                        y.append(float(data[1]))
     82                    except ValueError:
     83                        msg = 'Error in line '+str(i+1)
     84                        print (msg)
     85                        continue
     86        self.pdfdata = np.array([
     87            np.array(x), # x-axis values q
     88            np.array(y), # pdf f(q))
     89            ])
     90        self.pdfentry[0] = filename
     91        self.pdfentry[2] = 1 # xy file only has one bank
     92        self.idstring = ospath.basename(filename)
     93
     94        return True
     95
    2596class txt_PDFReaderClass(G2obj.ImportPDFData):
    2697    'Routines to import PDF G(R) data from a .gr file'
     
    39110        Ndata = 0
    40111        for i,S in enumerate(filepointer):
    41             if '#L' in S[:2]:
     112            if '#' in S[:2]:
    42113                break
    43114        for i,S in enumerate(filepointer):           
     
    67138                    continue
    68139                self.comments.append(S[:-1])
    69                 if '#L' in S[:2]:
     140                if '#' in S[:2]:
    70141                    ifData = True
    71142            else:
Note: See TracChangeset for help on using the changeset viewer.