Changeset 1092 for trunk/GSASIIstrMath.py
- Timestamp:
- Oct 9, 2013 10:27:52 AM (10 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/GSASIIstrMath.py
r1088 r1092 307 307 pWt = [] 308 308 negWt = {} 309 pWsum = {} 309 310 for phase in Phases: 310 311 pId = Phases[phase]['pId'] … … 323 324 ['ChemComp','Sites'],['Texture','HKLs']] 324 325 for name,rest in names: 326 pWsum[name] = 0. 325 327 itemRest = phaseRest[name] 326 328 if itemRest[rest] and itemRest['Use']: … … 341 343 pVals.append(obs-calc) 342 344 pWt.append(wt/esd**2) 345 pWsum[name] += wt*((obs-calc)/esd)**2 343 346 elif name in ['Torsion','Rama']: 344 347 coeffDict = itemRest['Coeff'] … … 355 358 pVals.append(obs-calc) 356 359 pWt.append(wt/esd**2) 360 pWsum[name] += wt*((obs-calc)/esd)**2 357 361 elif name == 'ChemComp': 358 362 for i,[indx,factors,obs,esd] in enumerate(itemRest[rest]): … … 363 367 pVals.append(obs-calc) 364 368 pWt.append(wt/esd**2) 369 pWsum[name] += wt*((obs-calc)/esd)**2 365 370 elif name == 'Texture': 366 371 SHkeys = textureData['SH Coeff'][1].keys() … … 379 384 pVals.append(Z1[ind[0]][ind[1]]) 380 385 pWt.append(wt/esd1**2) 386 pWsum[name] += wt*((obs-calc)/esd)**2 381 387 if ifesd2: 382 388 Z2 = 1.-Z … … 385 391 pVals.append(Z1[ind[0]][ind[1]]) 386 392 pWt.append(wt/esd2**2) 393 pWsum[name] += wt*((obs-calc)/esd)**2 387 394 388 395 for item in varyList: … … 393 400 pVals.append(-parmDict[item]) 394 401 pWt.append(negWt[pId]) 402 pWsum[name] += negWt[pId]*(-parmDict[item])**2 395 403 pVals = np.array(pVals) 396 404 pWt = np.array(pWt) #should this be np.sqrt? 397 return pNames,pVals,pWt 405 return pNames,pVals,pWt,pWsum 398 406 399 407 def penaltyDeriv(pNames,pVal,HistoPhases,parmDict,varyList): … … 1704 1712 dMdv = np.sqrt(wtFactor)*dMdvh 1705 1713 1706 pNames,pVals,pWt = penaltyFxn(HistoPhases,parmDict,varylist)1714 pNames,pVals,pWt,pWsum = penaltyFxn(HistoPhases,parmDict,varylist) 1707 1715 if np.any(pVals): 1708 1716 dpdv = penaltyDeriv(pNames,pVals,HistoPhases,parmDict,varylist) … … 1722 1730 :returns: Vec,Hess where Vec is the least-squares vector and Hess is the Hessian 1723 1731 ''' 1724 'Needs a doc string'1725 1732 parmDict.update(zip(varylist,values)) 1726 1733 G2mv.Dict2Map(parmDict,varylist) … … 1850 1857 else: 1851 1858 continue #skip non-histogram entries 1852 pNames,pVals,pWt = penaltyFxn(HistoPhases,parmDict,varylist)1859 pNames,pVals,pWt,pWsum = penaltyFxn(HistoPhases,parmDict,varylist) 1853 1860 if np.any(pVals): 1854 1861 dpdv = penaltyDeriv(pNames,pVals,HistoPhases,parmDict,varylist) … … 1992 1999 dlg.Destroy() 1993 2000 raise Exception #Abort!! 1994 pDict,pVals,pWt = penaltyFxn(HistoPhases,parmDict,varylist)2001 pDict,pVals,pWt,pWsum = penaltyFxn(HistoPhases,parmDict,varylist) 1995 2002 if np.any(pVals): 1996 2003 pSum = np.sum(pWt*pVals**2) 1997 print 'Penalty function: %.3f on %d terms'%(pSum,len(pVals)) 2004 for name in pWsum: 2005 print ' Penalty function for %s = %.3f'%(name,pWsum[name]) 2006 print 'Total penalty function: %.3f on %d terms'%(pSum,len(pVals)) 1998 2007 Nobs += len(pVals) 1999 2008 M = np.concatenate((M,np.sqrt(pWt)*pVals))
Note: See TracChangeset
for help on using the changeset viewer.