Source code for G2pdf_gr

# -*- coding: utf-8 -*-
########### SVN repository information ###################
# $Date: 2023-05-11 18:08:12 -0500 (Thu, 11 May 2023) $
# $Author: toby $
# $Revision: 5577 $
# $URL: https://subversion.xray.aps.anl.gov/pyGSAS/trunk/imports/G2pdf_gr.py $
# $Id: G2pdf_gr.py 5577 2023-05-11 23:08:12Z toby $
########### SVN repository information ###################
'''
'''

from __future__ import division, print_function
import os.path as ospath
import numpy as np
import GSASIIobj as G2obj
import GSASIIpath
GSASIIpath.SetVersionNumber("$Revision: 5577 $")

[docs] class txt_FSQReaderClass(G2obj.ImportPDFData): 'Routines to import S(Q) data from a .fq file' def __init__(self): super(self.__class__,self).__init__( # fancy way to self-reference extensionlist=('.fq','.sq'), strictExtension=False, formatName = 'q (A-1) step S(Q) data', longFormatName = 'q (A-1) stepped S(Q) PDF data from pdfGet or GSAS-II' ) # Validate the contents -- make sure we only have valid lines
[docs] def ContentsValidator(self, filename): 'Look through the file for expected types of lines in a valid r-step file' filepointer = open(filename,'r') Ndata = 0 for i,S in enumerate(filepointer): if '#L' in S[:2]: break if len(S.split()) != 2: break for i,S in enumerate(filepointer): vals = S.split() if len(vals) >= 2: try: data = [float(val) for val in vals] Ndata += 1 except ValueError: pass if not Ndata: self.errors = 'No 2 or more column numeric data found' filepointer.close() return False filepointer.close() return True # no errors encountered
def Reader(self,filename,ParentFrame=None, **unused): print ('Read a q-step text file') x = [] y = [] ifData = False filepointer = open(filename,'r') for i,S in enumerate(filepointer): if not ifData: if '#L' in S[:2]: ifData = True continue if len(S) == 1: #skip blank line continue if len(S.split()) != 2: continue self.comments.append(S[:-1]) else: vals = S.split() if len(vals) >= 2: try: data = [float(val) for val in vals] x.append(float(data[0])) y.append(float(data[1])) except ValueError: msg = 'Error in line '+str(i+1) print (msg,S) continue self.Type = 'X f(q)' #assume X-ray PDF self.pdfdata = np.array([ np.array(x), # x-axis values q np.array(y), # pdf f(q)) ]) self.pdfentry[0] = filename self.pdfentry[2] = 1 # xy file only has one bank self.idstring = ospath.basename(filename) filepointer.close() return True
[docs] class txt_PDFReaderClass(G2obj.ImportPDFData): 'Routines to import PDF G(R) data from a .gr file' def __init__(self): super(self.__class__,self).__init__( # fancy way to self-reference extensionlist=('.gr',), strictExtension=False, formatName = 'r (A) step G(r) data', longFormatName = 'r (A) stepped G(r) PDF data from pdfGet or GSAS-II' ) # Validate the contents -- make sure we only have valid lines
[docs] def ContentsValidator(self, filename): 'Look through the file for expected types of lines in a valid r-step file' filepointer = open(filename,'r') Ndata = 0 for i,S in enumerate(filepointer): if '#L r' in S[:4]: break for i,S in enumerate(filepointer): vals = S.split() if len(vals) >= 2: try: data = [float(val) for val in vals] Ndata += 1 except ValueError: pass if not Ndata: self.errors = 'No 2 or more column numeric data found' filepointer.close() return False filepointer.close() return True # no errors encountered
def Reader(self,filename,ParentFrame=None, **unused): print ('Read a r-step text file') x = [] y = [] ifData = False filepointer = open(filename,'r') self.Type = 'N g(r)' for i,S in enumerate(filepointer): if not ifData: if len(S) == 1: #skip blank line continue if '#L r' in S[:4]: ifData = True if 'X-Ray' in S: self.Type = 'X g(r)' self.comments.append(S[:-1]) else: vals = S.split() if len(vals) >= 2: try: data = [float(val) for val in vals] x.append(float(data[0])) y.append(float(data[1])) except ValueError: msg = 'Error in line '+str(i+1) print (msg,S[:-1]) continue self.pdfdata = np.array([ np.array(x), # x-axis values r np.array(y), # pdf g(r) ]) self.pdfentry[0] = filename self.pdfentry[2] = 1 # xy file only has one bank self.idstring = ospath.basename(filename) filepointer.close() return True
[docs] class txt_PDFReaderClassG(G2obj.ImportPDFData): 'Routines to import PDF G(R) data from a .dat file' def __init__(self): super(self.__class__,self).__init__( # fancy way to self-reference extensionlist=('.dat',), strictExtension=False, formatName = 'gudrun r (A) step G(r) data', longFormatName = 'r (A) stepped G(r) PDF data from gudrun' ) # Validate the contents -- make sure we only have valid lines
[docs] def ContentsValidator(self, filename): 'Look through the file for expected types of lines in a valid r-step file' filepointer = open(filename,'r') Ndata = 0 for i,S in enumerate(filepointer): if i < 2: continue vals = S.split() if len(vals) >= 2: try: data = [float(val) for val in vals] Ndata += 1 except ValueError: pass if not Ndata: self.errors = 'No 2 or more column numeric data found' filepointer.close() return False filepointer.close() return True # no errors encountered
def Reader(self,filename,ParentFrame=None, **unused): print ('Read a r-step text file') x = [] y = [] filepointer = open(filename,'r') for i,S in enumerate(filepointer): if i < 2: continue vals = S.split() if len(vals) >= 2: try: data = [float(val) for val in vals] x.append(float(data[0])) y.append(float(data[1])) except ValueError: msg = 'Error in line '+str(i+1) print (msg) continue else: break self.pdfdata = np.array([ np.array(x), # x-axis values r np.array(y), # pdf g(r) ]) self.Type = 'X g(r)' #assume X-ray PDF self.pdfentry[0] = filename self.pdfentry[2] = 1 # xy file only has one bank self.idstring = ospath.basename(filename) filepointer.close() return True