Exemple #1
0
def read_data():
  d = ixppy.dataset('/reg/g/xpp/data/example_data/diode/time_tool/hdf5/xppi0412-r0113.h5',['timeTool','ipm2','ipm3','diodeU','opal0','eventCode'])
  
  # scanning motor
  print d.scanMot

  # number of scansteps
  print d.noofsteps
  
  return d
Exemple #2
0
  def __init__(self,data=None,Iref=None,Imat=None,fina=None):
    self.data = data
    self.Iref = Iref
    self.refDataFilter = 1
    if fina is not None:
      assert fina[-7:]=='.ixp.h5', "File name has to be of extension ... .ixp.h5"
      self.dataset = dataset(fina)
      if 'corrNonLin_I0' in self.dataset.__dict__:
	self.I0 = self.dataset['corrNonLin_I0']
      else:
	self.I0 = None
      if 'corrNonLin_Imat' in self.dataset.__dict__:
	self.Imat = self.dataset['corrNonLin_Imat']
      else:
	self.Imat = None
    else:
      self.dataset = None
Exemple #3
0
def extractData(run,calibcycles=None,Nmax=None):
	f=open("run%03d_extract.txt" % run,"w")
	sys.stderr = f
	sys.stout  = f
	dets = ['ipm2','ipm3',"diodeU","diode3","timeTool","opal0"]
	d=ixppy.dataset(('xpp52512',run),dets)
	d.filtTimestamps()
	ixppy.TTextractProfiles(d.opal0,d.ipm2.sum,Nmax=Nmax,refthreshold=0.01,profileLimits=roiTT,profileLimitsRef=roiTTref,calibcycles=calibcycles)

	h=h5.openOrCreateFile("run%03d_extract.h5" % run,"w")
	h.attrs["ScanMot"] = d.scanMot
	h.attrs["ScanVec"] = d.scanVec
	my_steps = []
	x=np.arange(1024)
	n=200
	N=800
	fitrange=100
	h.attrs["TTfitinfo"] = "from %s to %s (fitrange %d)" % (n,N,fitrange)
	for i in range(len(d.opal0.TTtraces)):
		my_stepsc=[]
		for s in range(len(d.opal0.TTtraces[i])):
			if (d.ipm2.sum[i][s] < 0.01):
				my_stepsc.append([0,0,0])
			else:
				y = d.opal0.TTtraces[i][s][n:N]
				(step,amp,sig,xfit,yfit)=ttfit(x[n:N],y,fitrange=fitrange)
				my_stepsc.append( [step,amp,sig] )
		my_steps.append ( np.array(my_stepsc) )
	for i in range(len(d.opal0.TTtraces)):
		h5w(h,"/c%03d/TTtraces" % i,d.opal0.TTtraces[i].value)
		h5w(h,"/c%03d/ipm2" % i,d.ipm2.data[i])
		h5w(h,"/c%03d/ipm3" % i,d.ipm3.data[i])
		h5w(h,"/c%03d/diodeU" % i,d.diodeU.data[i])
		h5w(h,"/c%03d/diode3" % i,d.diode3.data[i])
		h5w(h,"/c%03d/TTXPP/pos" % i,d.timeTool.fltpos[i])
		h5w(h,"/c%03d/TTXPP/ampl" % i,d.timeTool.ampl[i])
		h5w(h,"/c%03d/TTXPP/fwhm" % i,d.timeTool.fltposfwhm[i])
		h5w(h,"/c%03d/TTERF/pos" % i,my_steps[i][:,0])
		h5w(h,"/c%03d/TTERF/amp" % i,my_steps[i][:,1])
		h5w(h,"/c%03d/TTERF/fwhm" % i,my_steps[i][:,2]*2.35)
	f.close()
	sys.exit(0)
Exemple #4
0
 def createWireMask(self,data=None):
   if data==None:
     import ixppy
     d = ixppy.dataset('/reg/g/xpp/data/example_data/cspad/liquid_scattering/hdf5/xpp43512-r0004.h5',['cspad'])
     data = d.cspad.rdStepData(0,range(10))
   i = np.mean(data,axis=0)
   ib = self.bin(i)
   tools.imagesc(self.xVec,self.yVec,ib)
   tools.clim_std()
   pl.draw()
   print "Roughly select wire end pairs, press middle mouse button when finished."
   wires = []
   tpos = np.array(pl.ginput(2))
   pointno = 0
   while not tpos==[]:
     tpos = np.array(tpos)
     pl.plot(tpos[:,0],tpos[:,1],'go-')
     for pno in range(2):pl.text(tpos[pno,0],tpos[pno,1],str(pointno),color='r')
     wires.append(tpos)
     pointno += 1
     tpos = pl.ginput(2)
   refwires = []
   for pos in wires:
     refwires.append(self._refinePoints(pos,ib))
   wirewidths = []
   print refwires
   for refwire in refwires:
     trad = self._getOneWire(refwire,i,rmax=1000)
     wirewidths.append(trad)
   
   masked = np.zeros(np.shape(i),dtype=bool)
   ax = self.xpx
   ay = self.ypx
   for refwire,wirewidth in zip(refwires,wirewidths):
     points = refwire
     m = np.diff(points[:,1])/np.diff(points[:,0])
     c = points[0,1] - points[0,0]*m
     m_ = -1/m
     dist_perp = (ay-m*ax-c)/np.sqrt(m**2+1)
     dist_par  = (ay-m_*ax)/np.sqrt(m_**2+1)
     masked[np.abs(dist_perp)<wirewidth] = True
   np.save('cspad_last_pixel_mask.npy',masked)
Exemple #5
0
def readDataFile(fina,fieldname=None):
  name,extension = os.path.splitext(fina)
  if extension=='.m':
    if fieldname is not None:
      return loadmat(fina)[fieldname]
    else:
      return loadmat(fina)
  elif extension=='.npy':
    return np.load(fina)
  elif extension=='.h5':
    sname,sext = os.path.splitext(name)
    if sext=='.ixp':
      return ixppy.dataset(fina)
    return h5py.File(fina)
  else:
    try:
      return np.loadtxt(fina)
    except Exception(e):
      logbook("could not read that file. \nError ---->\n ")
      logbook(e)
Exemple #6
0
def timeTool_calibration():
  d = ixppy.dataset(('xppi0412',115),['timeTool'])
  nfigure('step Timetool hist')
  for t in d.timeTool.fltpos:
    clf()
    hist(t)
Exemple #7
0
def extractFromRunList(runlist,exp,datasetname='opal2',profileLimits=None,xrayoffCode=None,laseroffCode=None,filter=None,save=False):
  for run in runlist:
    d = ixppy.dataset((exp,run))
    logbook("TT extracting from run %d" %run)
    extractFromRun(d,datasetname=datasetname,profileLimits=profileLimits,xrayoffCode=xrayoffCode,laseroffCode=laseroffCode,filter=filter,save=save)
    logbook("done!")
Exemple #8
0
def calcScan(run,correctnonlin=True):
	dark_limit = 0.01
	d=ixppy.dataset(('xpp52512',run),['ipm2','ipm3',"diodeU","diode3"])
	d.filtTimestamps()
	Ncal	 = len(d.ipm2.sum)
	mon2 = d.ipm2.__sum()
	mon3 = d.ipm3.__sum()
	xpos = d.ipm3.__xpos()
	fluo = d.diodeU.__channel0()
	tra	= d.diode3.__channel0()
	mon = mon2
	x = d.scanVec
	if (d.scanMot == "ccmE_vernier"):
		correctnonlin=False
	kt.nfigure("Data run %s" % run,figsize=(8,4))
	p.clf()
	p.subplots_adjust(wspace=0.4, hspace=0.6)

	if (correctnonlin):
		M = np.hstack(mon[-4:-1])
		D = np.hstack(fluo[-4:-1])
		idx = (D<1.7) & (M>0.01) & (D>0.01) & (np.abs(D/M -np.median(D/M)) < 0.1)
		idx = (D<1.7) & (M>0.01); # & (D>0.01) & (np.abs(D/M -np.median(D/M)) < 0.1)
		nonLinFluo.use(M[idx],D[idx])
		D = np.hstack(tra[1:4])
		idx = (D<1.7) & (M>0.01) & (D>0.01) & (np.abs(D/M -np.median(D/M)) < 0.1)
		idx = (D<1.7) & (M>0.01);# & (D>0.01) & (np.abs(D/M -np.median(D/M)) < 0.1)
		nonLinTra.use(M[idx],D[idx])

	outF=[]
	outFinfo=[]
	outT=[]
	outTinfo=[]
	for i in range(Ncal):
		m		= mon[i]
		f		= fluo[i]
		t		= tra[i]
		A = utils.myAveragingAndFilter()
		A.addFilter( m>dark_limit,"mon > %s" % (dark_limit))
		A.addFilter( f<1.7,"fluo<1.7")
#	F.add( np.abs(TTs-np.median(TTs))<2*kt.mad(TTs),"TTs 1 sigma")
#		print F.info()
		if (correctnonlin):
			if (i==0):
				p.subplot("222",title="Non lin correction")
				p.plot(m,f/m,"+",label="fluo before");
				p.plot(m,t/m,"+",label="tra  before")
			(m,f) = nonLinFluo.correct(m,f)
			(m,t) = nonLinTra.correct(m,t)
			if (i==0):
				p.subplot("222",title="Non lin correction")
				p.plot(m,f/m,"o",label="fluo after")
				p.plot(m,t/m,"o",label="tra  after")
				p.legend(bbox_to_anchor = (0.8,-0.2))
				p.xlabel("mon")
				p.ylabel("[fluo|tra]/mon")
		(vF,infoF) = A.calcDiodeNormalized(m,f)
		outF.append(vF);
		outFinfo.append(infoF)
		(vT,infoT) = A.calcDiodeNormalized(m,t)
		outT.append(vT);
		outTinfo.append(infoT)
	f=open(g_outdir+"plotScan_run%s_fluo.txt" % run,"w")
	f.write("%s " % d.scanMot)
	H=A.header()
	for h in H:
		f.write("%s " % h)
	f.write("info\n")
	for i in range(Ncal):
		f.write("%s " % x[i])
		for j in range(len(outF[i])):
			f.write("%s " % (outF[i][j]))
		f.write("%s\n" % outFinfo[i])
	outF=np.array(outF)[:,0]
	outT=np.array(outT)[:,0]
	f.close()
	sub1 = p.subplot("221",title="Fluo run %s" % run)
	print x.shape,outF.shape
	p.plot(x,outF)
	p.subplot("223",title="Tra run %s" % run,sharex=sub1)
	p.xlabel(d.scanMot)
	p.plot(x,outT,label="run %s" % run)
	p.savefig(g_outdir+"plotScan_run%s.pdf" % run,trasparent=True,papertype="a4")
	PdfPlots.savefig(trasparent=True,papertype="a4")
Exemple #9
0
	for i in range(Ncal):
		f.write("%s " % x[i])
		for j in range(len(outF[i])):
			f.write("%s " % (outF[i][j]))
		f.write("%s\n" % outFinfo[i])
	outF=np.array(outF)[:,0]
	outT=np.array(outT)[:,0]
	f.close()
	sub1 = p.subplot("221",title="Fluo run %s" % run)
	print x.shape,outF.shape
	p.plot(x,outF)
	p.subplot("223",title="Tra run %s" % run,sharex=sub1)
	p.xlabel(d.scanMot)
	p.plot(x,outT,label="run %s" % run)
	p.savefig(g_outdir+"plotScan_run%s.pdf" % run,trasparent=True,papertype="a4")
	PdfPlots.savefig(trasparent=True,papertype="a4")

#format = 	
#crystal2 = (34,185,"c2 hscan",
#						35,185,"c2 
runs = (213,214,215,216,218,219)
runs = (40,41,164,165)
runs = range(40,90)
for r in runs:
	print r
	d=ixppy.dataset(('xpp52512',r),['ipm2','ipm3',"diodeU","diode3"])
	if (hasattr(d,"scanMot") and (d.scanMot == "ccmE_vernier")):
		print "|||",r
		calcScan(r)
PdfPlots.close()
Exemple #10
0
 def _getAttachDropObj(self):
   if self._res is None:
     self._res = ixppy.dataset(self.resultFile)
     self._res['det'] = ixppy.tools.dropObject()
   return self._res