Source code for pySAXS.guisaxs.LSConcatenateDlg

#!/usr/bin/python

import wx
import numpy
import sys
from pySAXS.guisaxs.dataset import *

[docs]class LSConcatenateDlg(wx.Frame): def __init__(self, parent,listofdata,newdatasetname): self.parentwindow=parent self.data_dict=parent.data_dict self.listofdata=listofdata self.newdatasetname=newdatasetname self.newdataset=self.parentwindow.data_dict[newdatasetname] taille=(len(listofdata)+2)*20+50 wx.Frame.__init__(self, parent, 10, "pySAXS Concatenate different datas", size=wx.Size(400,taille),pos=wx.Point(50,50),style=wx.MINIMIZE_BOX | wx.SYSTEM_MENU | wx.CAPTION | wx.CLOSE_BOX | wx.CLIP_CHILDREN) self.SetBackgroundColour("White") spaceBetweenControl=25 #--- dynamic controls self.listCheckBox={} self.listTextCtrlqmin={} self.listTextCtrlqmax={} yposition=10 #begin position for dynamics controls print listofdata for var in listofdata: self.listCheckBox[var]=wx.CheckBox(self,-1,var, wx.Point(10,yposition), wx.Size(100,20)) self.listCheckBox[var].SetValue(True) wx.StaticText(self, 1, "qmin :", wx.Point(120,yposition+3),wx.Size(50,20)) self.listTextCtrlqmin[var]=wx.TextCtrl(self,2,str(numpy.min(self.data_dict[var].q)), wx.Point(170,yposition), wx.Size(70,20)) wx.StaticText(self, 1, "qmax :", wx.Point(250,yposition+3),wx.Size(50,20)) self.listTextCtrlqmax[var]=wx.TextCtrl(self,2,str(numpy.max(self.data_dict[var].q)), wx.Point(300,yposition), wx.Size(70,20)) yposition+=spaceBetweenControl #-- select datas yposition+=spaceBetweenControl self.ApplyButton=wx.Button(self,-1,"Apply",wx.Point(20,yposition),wx.Size(75,20)) wx.EVT_BUTTON(self, self.ApplyButton.GetId(), self.OnApplyClick) self.CancelButton=wx.Button(self,-1,"Cancel",wx.Point(100,yposition),wx.Size(75,20)) wx.EVT_BUTTON(self, self.CancelButton.GetId(), self.OnCancelClick) self.QuitButton=wx.Button(self,-1,"Close",wx.Point(200,yposition),wx.Size(75,20)) wx.EVT_BUTTON(self, self.QuitButton.GetId(), self.OnExitClick) self.Bind(wx.EVT_CLOSE, self.OnExitClick)
[docs] def OnApplyClick(self,event): ''' User click on Apply button ''' self.createData() self.parentwindow.OnConcatenate()
[docs] def OnCancelClick(self,event): ''' User click on Apply button ''' self.parentwindow.OnConcatenateCancel(self.newdatasetname) self.Destroy()
[docs] def createData(self): #how to know order of data d={} #dict with key = qmin val=datasetname for name in self.listofdata: if self.listCheckBox[name].IsChecked(): #print "using ",name if d.has_key(float(self.listTextCtrlqmin[name].GetValue())): print "Error, can not create datas, different datas have same qmin" return d[float(self.listTextCtrlqmin[name].GetValue())]=name l=d.keys() #l : list of sorted qmin l.sort() print l dataset=d[l[0]] # clip self.newdataset.q,self.newdataset.i=self.clipdata(dataset) for j in range(1,len(l)): dataset=d[l[j]] newq,newi=self.clipdata(dataset) #concatenate with previous datas self.newdataset.q=numpy.concatenate((self.newdataset.q,newq)) self.newdataset.i=numpy.concatenate((self.newdataset.i,newi))
[docs] def clipdata(self,datasetname): q=self.parentwindow.data_dict[datasetname].q i=self.parentwindow.data_dict[datasetname].i qmini=float(self.listTextCtrlqmin[datasetname].GetValue()) qmaxi=float(self.listTextCtrlqmax[datasetname].GetValue()) i=numpy.repeat(i,q>=qmini) q=numpy.repeat(q,q>=qmini) i=numpy.repeat(i,q<=qmaxi) q=numpy.repeat(q,q<=qmaxi) return q,i
[docs] def OnExitClick(self,event): self.Destroy() #######