Changeset 796 for trunk/GSASII.py
- Timestamp:
- Nov 7, 2012 2:54:48 PM (10 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/GSASII.py
r795 r796 533 533 self.Bind(wx.EVT_MENU, self.OnImportPowder, id=item.GetId()) 534 534 535 def ReadPowderInstprm(self,instfile): 535 def ReadPowderInstprm(self,instfile): #fix the write routine for [inst1,inst2] style 536 536 '''Read a GSAS-II (new) instrument parameter file''' 537 537 if os.path.splitext(instfile)[1].lower() != '.instprm': # invalid file … … 656 656 data.extend([0.0,0.0,0.002,azm]) #OK defaults if fxn #3 not 1st in iprm file 657 657 codes.extend([0,0,0,0,0,0,0]) 658 return G2IO.makeInstDict(names,data,codes)658 return [G2IO.makeInstDict(names,data,codes),{}] 659 659 elif 'T' in DataType: 660 660 names = ['Type','2-theta','difC','difA','Zero','alpha','beta-0','beta-1','var-inst','X','Y','Azimuth'] … … 681 681 s = Iparm['INS 1PRCF12'].split() 682 682 data.extend([G2IO.sfloat(s[0]),0.0,0.0,azm]) 683 Inst = G2IO.makeInstDict(names,data,codes) 683 Inst1 = G2IO.makeInstDict(names,data,codes) 684 Inst2 = {} 684 685 if pfType < 0: 685 686 Ipab = 'INS 1PAB'+str(-pfType) 686 687 Npab = int(Iparm[Ipab+' '].strip()) 687 Inst ['Pdabc'] = []688 Inst2['Pdabc'] = [] 688 689 for i in range(Npab): 689 690 k = Ipab+str(i+1).rjust(2) 690 691 s = Iparm[k].split() 691 Inst['Pdabc'].append([float(t) for t in s]) 692 Inst['Pdabc'] = np.array(Inst['Pdabc']) 692 Inst2['Pdabc'].append([float(t) for t in s]) 693 Inst2['Pdabc'] = np.array(Inst2['Pdabc']) 694 Inst2['Pdabc'][3] += Inst2['Pdabc'][0]*Inst1['difC'][0] #turn 3rd col into TOF 693 695 if 'INS 1I ITYP' in Iparm: 694 Ityp = int(Iparm['INS 1I ITYP'].split()[0]) 695 if Ityp in [1,2,3,4,5]: 696 Inst['Itype'] = Ityp 696 s = Iparm['INS 1I ITYP'].split() 697 Ityp = int(s[0]) 698 Tminmax = [float(s[1])*1000.,float(s[2])*1000.] 699 Itypes = ['Exponential','Maxwell/Exponential','','Maxwell/Chebyschev',''] 700 if Ityp in [1,2,4]: 701 Inst2['Itype'] = Itypes[Ityp-1] 702 Inst2['Tminmax'] = Tminmax 697 703 Icoeff = [] 698 704 Iesd = [] … … 706 712 s = Iparm['INS 1IECOR'+str(i+1)].split() 707 713 Icovar += [float(S) for S in s] 708 Inst ['Icoeff'] = Icoeff709 Inst ['Iesd'] = Iesd710 Inst ['Icovar'] = Icovar711 return Inst714 Inst2['Icoeff'] = Icoeff 715 Inst2['Iesd'] = Iesd 716 Inst2['Icovar'] = Icovar 717 return [Inst1,Inst2] 712 718 713 719 # stuff we might need from the reader … … 737 743 return SetPowderInstParms(Iparm,rd) 738 744 else: 739 self.ErrorDialog('Open Error', 740 'Error opening instrument parameter file ' 741 +str(instfile) 742 +' requested by file '+ filename) 745 self.ErrorDialog('Open Error','Error opening instrument parameter file ' 746 +str(instfile)+' requested by file '+ filename) 743 747 # is there an instrument parameter file matching the current file 744 748 # with extension .inst or .prm? If so read it … … 851 855 for rd in rdlist: 852 856 # get instrument parameters for each dataset 853 instParmList= self.GetPowderIparm(rd, Iparm, lastIparmfile, lastdatafile)857 Iparm1,Iparm2 = self.GetPowderIparm(rd, Iparm, lastIparmfile, lastdatafile) 854 858 lastIparmfile = rd.instfile 855 859 lastdatafile = rd.powderentry[0] … … 860 864 Id = self.PatternTree.AppendItem(parent=self.root, 861 865 text='PWDR '+rd.idstring) 862 self.PatternTree.SetItemPyData(Id,[{'wtFactor':1.0},rd.powderdata]) 863 self.PatternTree.SetItemPyData( 864 self.PatternTree.AppendItem(Id,text='Comments'), 865 rd.comments) 866 if 'T' in instParmList['Type'][0]: 866 if 'T' in Iparm1['Type'][0]: 867 867 if not rd.clockWd and rd.GSAS: 868 868 rd.powderdata[0] *= 100. … … 870 870 rd.powderdata[0] = rd.powderdata[0][:-1]+cw/2. 871 871 rd.powderdata[1] = rd.powderdata[1][:-1]/cw 872 rd.powderdata[2] = rd.powderdata[2][:-1] 873 rd.powderdata[3] = rd.powderdata[3][:-1] 874 rd.powderdata[4] = rd.powderdata[4][:-1] 875 rd.powderdata[5] = rd.powderdata[5][:-1] 876 if 'Itype' in instParmList: 877 incident = G2pwd.calcIncident(instParmList,rd.powderdata[0]) 872 rd.powderdata[2] = rd.powderdata[2][:-1]/cw**2 873 if 'Itype' in Iparm2: 874 Ibeg = np.searchsorted(rd.powderdata[0],Iparm2['Tminmax'][0]) 875 Ifin = np.searchsorted(rd.powderdata[0],Iparm2['Tminmax'][1]) 876 print Ibeg,Ifin,Iparm2['Tminmax'] 877 rd.powderdata[0] = rd.powderdata[0][Ibeg:Ifin] 878 YI,WYI = G2pwd.calcIncident(Iparm2,rd.powderdata[0]) 879 rd.powderdata[1] = rd.powderdata[1][Ibeg:Ifin]/YI 880 rd.powderdata[2] = rd.powderdata[2][Ibeg:Ifin]+(rd.powderdata[1]**2+WYI) 881 rd.powderdata[2] /= YI**2 882 rd.powderdata[3] = np.zeros_like(rd.powderdata[0]) 883 rd.powderdata[4] = np.zeros_like(rd.powderdata[0]) 884 rd.powderdata[5] = np.zeros_like(rd.powderdata[0]) 878 885 Tmin = min(rd.powderdata[0]) 879 886 Tmax = max(rd.powderdata[0]) 887 self.PatternTree.SetItemPyData(Id,[{'wtFactor':1.0},rd.powderdata]) 888 self.PatternTree.SetItemPyData( 889 self.PatternTree.AppendItem(Id,text='Comments'), 890 rd.comments) 880 891 self.PatternTree.SetItemPyData( 881 892 self.PatternTree.AppendItem(Id,text='Limits'), … … 888 899 self.PatternTree.SetItemPyData( 889 900 self.PatternTree.AppendItem(Id,text='Instrument Parameters'), 890 instParmList)901 [Iparm1,Iparm2]) 891 902 self.PatternTree.SetItemPyData( 892 903 self.PatternTree.AppendItem(Id,text='Sample Parameters'), … … 1159 1170 names = ['Type','Lam','Zero'] 1160 1171 codes = [0,0,0] 1161 inst = G2IO.makeInstDict(names,data,codes)1172 inst = [G2IO.makeInstDict(names,data,codes),{}] 1162 1173 self.PatternTree.SetItemPyData(self.PatternTree.AppendItem(Id,text='Instrument Parameters'),inst) 1163 1174 self.PatternTree.SetItemPyData(self.PatternTree.AppendItem(Id,text='Comments'),comments) … … 1470 1481 SumList = [] 1471 1482 Names = [] 1472 Inst = {}1483 Inst = None 1473 1484 SumItemList = [] 1474 1485 Comments = ['Sum equals: \n']
Note: See TracChangeset
for help on using the changeset viewer.