source: trunk/G2importsfact.py @ 580

Last change on this file since 580 was 580, checked in by toby, 10 years ago

finish import structure factor; refactor import classes

File size: 2.3 KB
Line 
1########### SVN repository information ###################
2# $Date: 2012-02-13 11:33:35 -0600 (Mon, 13 Feb 2012) $
3# $Author: vondreele & toby $
4# $Revision: 482 $
5# $URL: https://subversion.xor.aps.anl.gov/pyGSAS/trunk/G2importphase.py $
6# $Id: G2importphase.py 482 2012-02-13 17:33:35Z vondreele $
7########### SVN repository information ###################
8# short routines to read in structure factors from simple file formats
9#
10import sys
11import numpy as np
12import GSASIIIO as G2IO
13
14class HKLF_ReaderClass(G2IO.ImportStructFactor):
15    'Routines to import reflections from a HKLF file'
16    def __init__(self):
17        super(self.__class__,self).__init__( # fancy way to self-reference
18            extensionlist=('.hkl','.HKL'),
19            strictExtension=False,
20            formatName = 'HKL',
21            longFormatName = 'Simple (hkl Fo sig(Fo)) Structure factor file'
22            )
23    # Validate the contents
24    def ContentsValidator(self, filepointer):
25        S = filepointer.readline() 
26        while '#' in S[0]:        #get past comments, if any
27            S = filepointer.readline()       
28        for i in range(3): # scan a few lines
29            S = S.split()
30            if len(S) != 5: return False
31            for v in S:
32                try:
33                    float(v)
34                except ValueError:
35                    return False           
36            S = filepointer.readline()
37        return True
38
39    def Reader(self,filename,filepointer, ParentFrame=None):
40        try:
41            for S in filepointer:
42                if S[0] == '#': continue       #ignore comments, if any
43                h,k,l,Fo,sigFo = S.split()
44                HKL = np.array([int(h),int(k),int(l)])
45                Fo = float(Fo)
46                sigFo = float(sigFo)
47                self.RefList.append([HKL,Fo**2,2.*Fo*sigFo,0,0,0,0])  # HKL. Fo**2, sig(Fo**2), Fc, Fcp, Fcpp & phase
48                #print HKL,Fo**2,2.*Fo*sigFo
49            self.UpdateControls(Type='Fosq',FcalcPresent=False) # set Fobs type & if Fcalc values are loaded
50            self.UpdateParameters(Type='SXC',Wave=None) # histogram type
51            return True
52        except Exception as detail:
53            print self.formatName+' read error:'+str(detail) # for testing
54            import traceback
55            traceback.print_exc(file=sys.stdout)
56            return False
Note: See TracBrowser for help on using the repository browser.