peaks = from_unitcell(x.mean(axis=0),counts.mean(axis=0),material.unit_cell, material.space_group,qmin,qmax,name=material.name, ymin_on_ymax=ymin_on_ymax) else: peaks=[] for mat in material: peaks.extend(from_unitcell(x.mean(axis=0),counts.mean(axis=0),mat.unit_cell, mat.space_group,qmin,qmax,name=mat.name, ymin_on_ymax=ymin_on_ymax)) print 'fitting %i peaks'%len(peaks) print [p.name for p in peaks] fc = FitterCollection() fc.create_many(['element_%i'%i for i in range(counts.shape[0])],x,peaks,**kwargs) fc.backup() fc(counts,reestimate=False) yield fc.lastfit_condensed,fc.lastresult_condensed,info for counts,info in source: fc.restore() fc(counts,reestimate=reestimate) yield fc.lastfit_condensed,fc.lastresult_condensed,info def calcstrain(source,phi,Q0=None,allow_shear=True): if len(phi) > 2: take = np.ones(len(phi)).astype(bool) take[5] = take[8] = False else: take=np.ones(2).astype(bool)