diff --git a/.gitattributes b/.gitattributes index 81a439c5071c7a0bc8441fd6a1c0f228619f382d..de10f83a725f07b651af6f0854fe4a06a7aad931 100644 --- a/.gitattributes +++ b/.gitattributes @@ -23,6 +23,7 @@ CEP/Calibration/BBSControl/scripts/casapy2bbs.py -text CEP/Calibration/BBSControl/scripts/checkBBSskymodel.py -text CEP/Calibration/BBSControl/scripts/parmdbplot.py -text CEP/Calibration/BBSControl/scripts/plotcorrmatrix.py -text +CEP/Calibration/BBSControl/scripts/plotexport.py -text CEP/Calibration/BBSControl/scripts/plothistogram.py -text CEP/Calibration/BBSControl/scripts/plotwindow.py -text CEP/Calibration/BBSControl/scripts/solverdialog.py -text diff --git a/CEP/Calibration/BBSControl/scripts/plotexport.py b/CEP/Calibration/BBSControl/scripts/plotexport.py new file mode 100755 index 0000000000000000000000000000000000000000..cb79a679bc4ea8687be6af0c9fb55fcbdc632dcf --- /dev/null +++ b/CEP/Calibration/BBSControl/scripts/plotexport.py @@ -0,0 +1,211 @@ +#!/usr/bin/env python +# +# Solver statistics preferences dialog +# +# File: plotpexport.py +# Author: Sven Duscha (duscha@astron.nl) +# Date: 2011-12-20 +# Last change; 2012-01-10 +# +# This class displays an export dialog for the solver statistics plotter +# to export data in ASCII or Matlab format (using scipy.savemat) +# TODO + + +from PyQt4.QtCore import * +from PyQt4.QtGui import * +import os +import sys +import numpy as np + + + +class plotexport(QDialog): + def __init__(self, parent): + QDialog.__init__(self) + + self.parent=parent + #self.perIteration=self.parent.parent.perIteration + #self.useScipy=self.parent.parent.useScipy + + self.path="" # path to export data to + self.format="ASCII" # format to export to (ASCII or Matlab, default=ASCII) + self.parmList=[] # List of parameters (parmdb and solver) to export + + # Interval to export data over + self.xIntervalMin=None + self.xIntervalMax=None + + self.createWidgets() # Create Widgets + self.createLayouts() # Create Layouts + self.createConnections() # create connections between widgets + + def createWidgets(self): + print "createWidgets()" # DEBUG + + # Group boxes to group widgets into logical units + self.parmGroup=QGroupBox() + self.parmGroup.setTitle("Parameters to export") + self.parmGroup.setToolTip("select parameters to export") + self.formatGroup=QGroupBox() + self.formatGroup.setTitle("Format settings") + self.formatGroup.setToolTip("format settings") + + self.parmComboBox=QComboBox() + self.parmComboBox.setMaxVisibleItems(4) + self.solverComboBox=QComboBox() + self.solverComboBox.setMaxVisibleItems(4) + + + self.fileDialog=QFileDialog() + self.fileDialog.setFileMode(QFileDialog.AnyFile); + urls=[] + urls.append(QUrl.fromLocalFile(os.environ['HOME'])) + if os.path.exists('/data/scratch/' + os.environ['USER']): + urls.append(QUrl.fromLocalFile('/data/scratch/' + os.environ['USER'])) + self.fileDialog.setSidebarUrls(urls); + self.saveButton=QPushButton("Save as") + self.saveButton.setMaximumWidth(120) + self.filenameLineEdit=QLineEdit() + self.filenameLineEdit.setReadOnly(True) + self.filenameLineEdit.setText(os.environ['HOME']) + self.filenameLineEdit.setText(self.path) + + + self.formatComboBox=QComboBox() + self.formatComboBox.addItem("ASCII") +# if self.parent.parent.haveModule('scipy') == True or self.parent.parent.haveModule('scipy.io') == True: +# self.exportComboBox.addItem("Matlab") + + self.rangeComboBox=QComboBox() + self.rangeComboBox.addItem("plotted x_min to x_max") + self.rangeComboBox.addItem("complete selection") + self.rangeComboBox.addItem("complete set") + + self.exportButton=QPushButton("Export") + self.exportButton.setToolTip("export selected data") + self.cancelButton=QPushButton("Cancel") + self.cancelButton.setToolTip("Cancel export and close dialog") + + # Window settings + self.setMinimumWidth(400) + self.setMinimumHeight(400) + self.setMaximumWidth(400) + self.setMaximumHeight(400) + self.setWindowTitle("Export Data") + + self.updateComboBoxes() + + def createConnections(self): + print "createConnections()" # DEBUG + + self.connect(self.saveButton, SIGNAL('clicked()'), self.saveAs) + self.connect(self.exportButton, SIGNAL('clicked()'), self.exportData) + self.connect(self.cancelButton, SIGNAL('clicked()'), SLOT('close()')) + + def createLayouts(self): + print "createLayouts()" # DEBUG + + self.parametersLayout=QVBoxLayout() + self.parmGroup.setLayout(self.parametersLayout) + + self.fileNameLayout=QHBoxLayout() + self.fileNameLayout.addWidget(self.saveButton) + self.fileNameLayout.addWidget(self.filenameLineEdit) + + self.formatLayout=QVBoxLayout() + self.formatLayout.addWidget(self.rangeComboBox) + self.formatLayout.addWidget(self.formatComboBox) + self.formatGroup.setLayout(self.formatLayout) + + self.buttonLayout=QHBoxLayout() + self.buttonLayout.addWidget(self.exportButton) + self.buttonLayout.addWidget(self.cancelButton) + + # Combine all layouts into mainLayout + self.mainLayout=QVBoxLayout() + self.mainLayout.addWidget(self.parmGroup) + self.mainLayout.addWidget(self.formatGroup) + self.mainLayout.addLayout(self.fileNameLayout) + self.mainLayout.addLayout(self.buttonLayout) + self.setLayout(self.mainLayout) + + def updateParmComboBox(self): + print "updateComboBox()" # DEBUG + self.deleteEntriesComboBox() # Delete entries in parmComboBox + # Read entries from solverQuery table + #for i in range(0, self.parent.parametersComboBox.count()): + # self.parmComboBox.addItem(self.parent.parametersComboBox.itemText(i)) + + def updateComboBoxes(self): + print "updateFormatComboBox()" # DEBUG + self.deleteEntriesComboBox() + + # loop over parms and add them to parmComboBox + self.formatComboBox.addItem("ASCII") +# if self.parent.parent.useScipy==True: # Check availability of scipy +# self.formatComboBox.addItem("Matlab") + + self.addEntriesParmComboBox() + self.addEntriesSolverComboBox() + + def deleteEntriesComboBox(self): + print "deleteEntriesParmComboBox()" # DEBUG + + # Loop over elements in parmComboBox with parmDB parameters + i=self.parmComboBox.count() + while i > 0: # Delete entries in parmComboBox + print "removing i = ", i, parmComboBox.currentText() # DEBUG + self.parmComboBox.removeItem(i-1) + i=self.parmComboBox.count() + + i=self.formatComboBox.count() + while i > 0: # Delete entries in formatComboBox + print "removing i = ", i, self.formatComboBox.currentText() # DEBUG + self.formatComboBox.removeItem(i-1) + i=self.formatComboBox.count() + + i=self.solverComboBox.count() + while i > 0: # Delete entries in solverComboBox + print "removing i = ", i, self.solverComboBox.currentText() # DEBUG + self.solverComboBox.removeItem(i-1) + i=self.solverComboBox.count() + + def addEntriesParmComboBox(self): + print "addEntriesParmComboBox()" # DEBUG + + def addEntriesSolverComboBox(self): + print "addEntriesSolverComboBox()" # DEBUG + + def saveAs(self): + print "saveAs()" # DEBUG + self.path = unicode(self.fileDialog.getSaveFileName(self, 'Save file')) + self.filenameLineEdit.setText(self.path) + + + def exportData(self): + print "exportData()" # DEBUG + + + #**************************************** + # + # Helper functions + # + #**************************************** + + +# Main function used for debugging +# +def main(): + print "main()" # DEBUG + + app = QApplication(sys.argv) + form=plotexport(app) + + form.show() + app.exec_() + + +if __name__=="__main__": + main() + \ No newline at end of file