Changeset 2753
- Timestamp:
- Mar 10, 2017 12:01:46 PM (6 years ago)
- Location:
- trunk
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/GSASII.py
r2739 r2753 217 217 wx.ID_ANY, 'Expand tree items', expandmenu, 218 218 help='Expand items of type in GSAS-II data tree') 219 for s in 'all','IMG','PWDR','PDF','HKLF','SASD' :219 for s in 'all','IMG','PWDR','PDF','HKLF','SASD','REFD': 220 220 if s == 'all': 221 221 help = 'Expand all items in GSAS-II data tree' … … 228 228 wx.ID_ANY, 'Move tree items', movemenu, 229 229 help='Move items of type items to end of GSAS-II data tree') 230 for s in 'IMG','PWDR','PDF','HKLF','SASD',' Phase':230 for s in 'IMG','PWDR','PDF','HKLF','SASD','REFD','Phase': 231 231 help = 'Move '+s+' type items to end of GSAS-II data tree' 232 232 item = movemenu.Append(wx.ID_ANY,kind=wx.ITEM_NORMAL,text=s,help=help) … … 280 280 self.ImportSmallAngleReaderlist = [] 281 281 self._init_Import_routines('sad',self.ImportSmallAngleReaderlist,'SmallAngle_Data') 282 self.ImportReflectometryReaderlist = [] 283 self._init_Import_routines('rfd',self.ImportReflectometryReaderlist,'Reflectometry_Data') 282 284 self.ImportImageReaderlist = [] 283 285 self._init_Import_routines('img',self.ImportImageReaderlist,'Images') … … 373 375 374 376 Called from :meth:`GSASII.OnImportPhase`, :meth:`GSASII.OnImportImage`, 375 :meth:`GSASII.OnImportSfact`, :meth:`GSASII.OnImportPowder` and376 :meth:`GSASII.OnImportSmallAngle` 377 :meth:`GSASII.OnImportSfact`, :meth:`GSASII.OnImportPowder`, 378 :meth:`GSASII.OnImportSmallAngle` and :meth:'GSASII.OnImportReflectometry` 377 379 378 380 Uses reader_objects subclassed from :class:`GSASIIIO.ImportPhase`, … … 1971 1973 if not newHistList: return # somehow, no new histograms 1972 1974 return # success 1975 1976 def _Add_ImportMenu_reflectometry(self,parent): 1977 '''configure the reflectometry Data menus accord to the readers found in _init_Imports 1978 ''' 1979 submenu = wx.Menu() 1980 item = parent.AppendMenu(wx.ID_ANY, 'Reflectometry Data', 1981 submenu, help='Import reflectometry data') 1982 for reader in self.ImportReflectometryReaderlist: 1983 item = submenu.Append(wx.ID_ANY,help=reader.longFormatName, 1984 kind=wx.ITEM_NORMAL,text='from '+reader.formatName+' file') 1985 self.ImportMenuId[item.GetId()] = reader 1986 self.Bind(wx.EVT_MENU, self.OnImportReflectometry, id=item.GetId()) 1987 # item = submenu.Append(wx.ID_ANY, 1988 # help='Import reflectometry data, use file to try to determine format', 1989 # kind=wx.ITEM_NORMAL,text='guess format from file') 1990 # self.Bind(wx.EVT_MENU, self.OnImportReflectometry, id=item.GetId()) 1991 1992 def OnImportReflectometry(self,event): 1993 '''Called in response to an Import/Small Angle Data/... menu item 1994 to read a small angle diffraction data set. 1995 dict self.ImportMenuId is used to look up the specific 1996 reader item associated with the menu item, which will be 1997 None for the last menu item, which is the "guess" option 1998 where all appropriate formats will be tried. 1999 2000 ''' 2001 2002 def GetREFDIparm(reader): 2003 parm = reader.instdict 2004 Iparm = {'Type':[parm['type'],parm['type'],0],'Lam':[parm['wave'], 2005 parm['wave'],0],'Azimuth':[0.,0.,0]} 2006 return Iparm,{} 2007 2008 # get a list of existing histograms 2009 REFDlist = [] 2010 if self.PatternTree.GetCount(): 2011 item, cookie = self.PatternTree.GetFirstChild(self.root) 2012 while item: 2013 name = self.PatternTree.GetItemText(item) 2014 if name.startswith('REFD ') and name not in REFDlist: 2015 REFDlist.append(name) 2016 item, cookie = self.PatternTree.GetNextChild(self.root, cookie) 2017 # look up which format was requested 2018 reqrdr = self.ImportMenuId.get(event.GetId()) 2019 rdlist = self.OnImportGeneric( 2020 reqrdr,self.ImportReflectometryReaderlist,'Reflectometry Data',multiple=True) 2021 if len(rdlist) == 0: return 2022 self.CheckNotebook() 2023 newHistList = [] 2024 self.EnablePlot = False 2025 for rd in rdlist: 2026 HistName = rd.idstring 2027 HistName = 'REFD '+HistName 2028 # make new histogram names unique 2029 HistName = G2obj.MakeUniqueLabel(HistName,REFDlist) 2030 print 'Read reflectometry data '+HistName+ \ 2031 ' from file '+self.lastimport 2032 # data are read, now store them in the tree 2033 Id = self.PatternTree.AppendItem(parent=self.root,text=HistName) 2034 Iparm1,Iparm2 = GetREFDIparm(rd) 2035 # if 'T' in Iparm1['Type'][0]: 2036 # if not rd.clockWd and rd.GSAS: 2037 # rd.powderdata[0] *= 100. #put back the CW centideg correction 2038 # cw = np.diff(rd.powderdata[0]) 2039 # rd.powderdata[0] = rd.powderdata[0][:-1]+cw/2. 2040 # rd.powderdata[1] = rd.powderdata[1][:-1]/cw 2041 # rd.powderdata[2] = rd.powderdata[2][:-1]*cw**2 #1/var=w at this point 2042 # if 'Itype' in Iparm2: 2043 # Ibeg = np.searchsorted(rd.powderdata[0],Iparm2['Tminmax'][0]) 2044 # Ifin = np.searchsorted(rd.powderdata[0],Iparm2['Tminmax'][1]) 2045 # rd.powderdata[0] = rd.powderdata[0][Ibeg:Ifin] 2046 # YI,WYI = G2pwd.calcIncident(Iparm2,rd.powderdata[0]) 2047 # rd.powderdata[1] = rd.powderdata[1][Ibeg:Ifin]/YI 2048 # var = 1./rd.powderdata[2][Ibeg:Ifin] 2049 # var += WYI*rd.powderdata[1]**2 2050 # var /= YI**2 2051 # rd.powderdata[2] = 1./var 2052 # rd.powderdata[3] = np.zeros_like(rd.powderdata[0]) 2053 # rd.powderdata[4] = np.zeros_like(rd.powderdata[0]) 2054 # rd.powderdata[5] = np.zeros_like(rd.powderdata[0]) 2055 Tmin = min(rd.reflectometrydata[0]) 2056 Tmax = max(rd.reflectometrydata[0]) 2057 valuesdict = { 2058 'wtFactor':1.0, 2059 'Dummy':False, 2060 'ranId':ran.randint(0,sys.maxint), 2061 } 2062 rd.Sample['ranId'] = valuesdict['ranId'] # this should be removed someday 2063 self.PatternTree.SetItemPyData(Id,[valuesdict,rd.reflectometrydata]) 2064 self.PatternTree.SetItemPyData( 2065 self.PatternTree.AppendItem(Id,text='Comments'), 2066 rd.comments) 2067 self.PatternTree.SetItemPyData( 2068 self.PatternTree.AppendItem(Id,text='Limits'), 2069 [(Tmin,Tmax),[Tmin,Tmax]]) 2070 self.PatternId = G2gd.GetPatternTreeItemId(self,Id,'Limits') 2071 self.PatternTree.SetItemPyData( 2072 self.PatternTree.AppendItem(Id,text='Instrument Parameters'), 2073 [Iparm1,Iparm2]) 2074 self.PatternTree.SetItemPyData( 2075 self.PatternTree.AppendItem(Id,text='Substances'),G2pdG.SetDefaultSubstances()) 2076 self.PatternTree.SetItemPyData( 2077 self.PatternTree.AppendItem(Id,text='Sample Parameters'), 2078 rd.Sample) 2079 self.PatternTree.SetItemPyData( 2080 self.PatternTree.AppendItem(Id,text='Models'),G2pdG.SetDefaultREFDModel()) 2081 newHistList.append(HistName) 2082 else: 2083 self.EnablePlot = True 2084 self.PatternTree.Expand(Id) 2085 self.PatternTree.SelectItem(Id) 2086 2087 if not newHistList: return # somehow, no new histograms 2088 return # success 1973 2089 1974 2090 def OnMacroRecordStatus(self,event,setvalue=None): … … 2259 2375 self._Add_ImportMenu_Sfact(Import) 2260 2376 self._Add_ImportMenu_smallangle(Import) 2377 self._Add_ImportMenu_reflectometry(Import) 2261 2378 2262 2379 #====================================================================== … … 3145 3262 DelList = [] 3146 3263 DelItemList = [] 3147 nItems = {'PWDR':0,'SASD':0,' IMG':0,'HKLF':0,'PDF':0}3264 nItems = {'PWDR':0,'SASD':0,'REFD':0,'IMG':0,'HKLF':0,'PDF':0} 3148 3265 PDFnames = [] 3149 3266 if self.PatternTree.GetCount(): … … 3155 3272 if 'PWDR' in name[:4]: nItems['PWDR'] += 1 3156 3273 if 'SASD' in name[:4]: nItems['SASD'] += 1 3274 if 'REFD' in name[:4]: nItems['REFD'] += 1 3157 3275 if 'IMG' in name[:3]: nItems['IMG'] += 1 3158 3276 if 'HKLF' in name[:4]: nItems['HKLF'] += 1 … … 3178 3296 if 'PWDR' in itemName[:4]: nItems['PWDR'] -= 1 3179 3297 elif 'SASD' in itemName[:4]: nItems['SASD'] -= 1 3298 elif 'REFD' in itemName[:4]: nItems['REFD'] -= 1 3180 3299 elif 'IMG' in itemName[:3]: nItems['IMG'] -= 1 3181 3300 elif 'HKLF' in itemName[:4]: nItems['HKLF'] -= 1 … … 3255 3374 def StartProject(self): 3256 3375 '''Opens a GSAS-II project file & selects the 1st available data set to 3257 display (PWDR, HKLF or SASD)3376 display (PWDR, HKLF, REFD or SASD) 3258 3377 ''' 3259 3378 … … 3267 3386 while item and not Id: 3268 3387 name = self.PatternTree.GetItemText(item) 3269 if name[:4] in ['PWDR','HKLF','IMG ','PDF ','SASD', ]:3388 if name[:4] in ['PWDR','HKLF','IMG ','PDF ','SASD','REFD']: 3270 3389 Id = item 3271 3390 elif name == "Phases": -
trunk/GSASIIconstrGUI.py
r2707 r2753 2060 2060 #ResidueRB.DestroyChildren() # bad, deletes scrollbars on Mac! 2061 2061 if ResidueRB.GetSizer(): 2062 ResidueRB.DestroyChildren()2063 #ResidueRB.GetSizer().Clear(True)2062 # ResidueRB.DestroyChildren() 2063 ResidueRB.GetSizer().Clear(True) 2064 2064 2065 2065 ResidueRBDisplay = wx.Panel(ResidueRB) -
trunk/GSASIIpwdGUI.py
r2749 r2753 207 207 'Current':'Size dist.','BackFile':'', 208 208 } 209 210 def SetDefaultREFDModel(): 211 'Fills in default items for the SASD Models dictionary' 212 return {'Back':[0.0,False],'Layers':[{'Thickness':[1000.,False],'Name':'vacuum'},],'BackFile':'',} 209 213 210 214 def SetDefaultSubstances(): -
trunk/GSASIIspc.py
r2567 r2753 2003 2003 [[1,2,2,3,3,4],[ 1.0, 1.0, 1.0, 1.0,-1.0, 1.0],[1,1,0,1,0,1],[1.0,1.0,1.0,0.0,0.0,0.0]], #23 A B B D -D F 2004 2004 [[1,2,2,3,3,4],[ 1.0, 1.0, 1.0, 1.0, 1.0, 1.0],[1,1,0,1,0,1],[1.0,1.0,1.0,0.0,0.0,0.0]], #24 A B B D D F 2005 [[1,2,3,2,4,4],[ 1.0, 1.0, 1.0, 0.5, 0.5, 1.0],[1,1,1,0,0,1],[1.0,1.0,1.0,0.5,0.0,0.0]], #25 A B C B/2 F/2 F2005 [[1,2,3,2,4,4],[ 1.0, 1.0, 1.0, 0.5, 1.0, 2.0],[1,1,1,0,0,1],[1.0,1.0,1.0,0.5,0.0,0.0]], #25 A B C B/2 F/2 F 2006 2006 [[1,2,3,1,0,4],[ 1.0, 1.0, 1.0, 0.5, 0.0, 1.0],[1,1,1,0,0,1],[1.0,1.0,1.0,0.5,0.0,0.0]], #26 A B C A/2 0 F 2007 2007 [[1,2,3,2,4,0],[ 1.0, 1.0, 1.0, 0.5, 1.0, 0.0],[1,1,1,0,1,0],[1.0,1.0,1.0,0.5,0.0,0.0]], #27 A B C B/2 E 0 -
trunk/GSASIIstrIO.py
r2752 r2753 1177 1177 at[cs] = Sytsym 1178 1178 xId,xCoef = G2spc.GetCSxinel(at[cs]) 1179 xId,xCoef = G2spc.GetCSxinel(at[cs])1180 1179 names = [pfx+'dAx:'+str(i),pfx+'dAy:'+str(i),pfx+'dAz:'+str(i)] 1181 1180 equivs = [[],[],[]] … … 1201 1200 at[cs] = Sytsym 1202 1201 uId,uCoef = G2spc.GetCSuinel(at[cs])[:2] 1203 uId,uCoef = G2spc.GetCSuinel(at[cs])[:2]1204 1202 names = [pfx+'AU11:'+str(i),pfx+'AU22:'+str(i),pfx+'AU33:'+str(i), 1205 1203 pfx+'AU12:'+str(i),pfx+'AU13:'+str(i),pfx+'AU23:'+str(i)] … … 1215 1213 for eqv in equiv[1:]: 1216 1214 eqv[1] /= coef 1217 G2mv.StoreEquivalence(name,equiv[1:])1215 G2mv.StoreEquivalence(name,(eqv,)) 1218 1216 if 'M' in at[ct+1]: 1219 1217 SytSym,Mul,Nop,dupDir = G2spc.SytSym(at[cx:cx+3],SGData) … … 1284 1282 for eqv in equiv[1:]: 1285 1283 eqv[1] /= coef 1286 G2mv.StoreEquivalence(name,equiv[1:])1284 G2mv.StoreEquivalence(name,(eqv,)) 1287 1285 maxSSwave[pfx][Stype] = max(maxSSwave[pfx][Stype],iw+1) 1288 1286 textureData = General['SH Texture'] -
trunk/GSASIIstrMath.py
r2752 r2753 870 870 Tindx = np.array([refDict['FF']['El'].index(El) for El in Tdata]) 871 871 FF = np.repeat(refDict['FF']['FF'][iBeg:iFin].T[Tindx].T,len(SGT),axis=0) 872 # GSASIIpath.IPyBreak()873 872 Uniq = np.inner(H,SGMT) # array(nSGOp,3) 874 873 Phi = np.inner(H,SGT) … … 879 878 biso = -SQfactor*Uisodata[:,nxs] 880 879 Tiso = np.repeat(np.where(biso<1.,np.exp(biso),1.0),len(SGT),axis=1).T 881 HbH = -np.sum(Uniq.T*np.swapaxes(np.inner(bij,Uniq),2,-1),axis=1)882 Tuij = np.where(HbH<1.,np.exp( HbH),1.0).T880 HbH = np.sum(Uniq.T*np.swapaxes(np.inner(bij,Uniq),2,-1),axis=1) 881 Tuij = np.where(HbH<1.,np.exp(-HbH),1.0).T 883 882 Tcorr = np.reshape(Tiso,Tuij.shape)*Tuij*Mdata*Fdata/len(SGMT) 884 Hij = np.array([Mast*np.multiply.outer(U,U) for U in np.reshape(Uniq,(-1,3))]) 885 Hij = np.reshape(np.array([G2lat.UijtoU6(uij) for uij in Hij]),(-1,len(SGT),6)) 883 Hij = np.array([Mast*np.multiply.outer(U,U) for U in np.reshape(Uniq,(-1,3))]) #Nref*Nops,3,3 884 Hij = np.reshape(np.array([G2lat.UijtoU6(uij) for uij in Hij]),(-1,len(SGT),6)) #Nref,Nops,6 886 885 fot = np.reshape(((FF+FP).T-Bab).T,cosp.shape)*Tcorr 887 886 if len(FPP.shape) > 1:
Note: See TracChangeset
for help on using the changeset viewer.