예제 #1
0
 def __init__(self, parent, modal=True, flags=Qt.WindowFlags()):
     QDialog.__init__(self, parent, flags)
     self.setModal(modal)
     self.setWindowTitle("Add FITS brick")
     lo = QVBoxLayout(self)
     lo.setMargin(10)
     lo.setSpacing(5)
     # file selector
     self.wfile = FileSelector(self,
                               label="FITS filename:",
                               dialog_label="FITS file",
                               default_suffix="fits",
                               file_types="FITS files (*.fits *.FITS)",
                               file_mode=QFileDialog.ExistingFile)
     lo.addWidget(self.wfile)
     # overwrite or add mode
     lo1 = QGridLayout()
     lo.addLayout(lo1)
     lo1.setContentsMargins(0, 0, 0, 0)
     lo1.addWidget(QLabel("Padding factor:", self), 0, 0)
     self.wpad = QLineEdit("2", self)
     self.wpad.setValidator(QDoubleValidator(self))
     lo1.addWidget(self.wpad, 0, 1)
     lo1.addWidget(QLabel("Assign source name:", self), 1, 0)
     self.wname = QLineEdit(self)
     lo1.addWidget(self.wname, 1, 1)
     # OK/cancel buttons
     lo.addSpacing(10)
     lo2 = QHBoxLayout()
     lo.addLayout(lo2)
     lo2.setContentsMargins(0, 0, 0, 0)
     lo2.setMargin(5)
     self.wokbtn = QPushButton("OK", self)
     self.wokbtn.setMinimumWidth(128)
     QObject.connect(self.wokbtn, SIGNAL("clicked()"), self.accept)
     self.wokbtn.setEnabled(False)
     cancelbtn = QPushButton("Cancel", self)
     cancelbtn.setMinimumWidth(128)
     QObject.connect(cancelbtn, SIGNAL("clicked()"), self.reject)
     lo2.addWidget(self.wokbtn)
     lo2.addStretch(1)
     lo2.addWidget(cancelbtn)
     self.setMinimumWidth(384)
     # signals
     QObject.connect(self.wfile, SIGNAL("filenameSelected"),
                     self._fileSelected)
     # internal state
     self.qerrmsg = QErrorMessage(self)
예제 #2
0
 def __init__(self, parent, modal=True, flags=Qt.WindowFlags()):
     QDialog.__init__(self, parent, flags)
     self.setModal(modal)
     self.setWindowTitle("Export Karma annotations")
     lo = QVBoxLayout(self)
     lo.setMargin(10)
     lo.setSpacing(5)
     # file selector
     self.wfile = FileSelector(self,
                               label="Filename:",
                               dialog_label="Karma annotations filename",
                               default_suffix="ann",
                               file_types="Karma annotations (*.ann)")
     lo.addWidget(self.wfile)
     # selected sources checkbox
     self.wsel = QCheckBox("selected sources only", self)
     lo.addWidget(self.wsel)
     # OK/cancel buttons
     lo.addSpacing(10)
     lo2 = QHBoxLayout()
     lo.addLayout(lo2)
     lo2.setContentsMargins(0, 0, 0, 0)
     lo2.setMargin(5)
     self.wokbtn = QPushButton("OK", self)
     self.wokbtn.setMinimumWidth(128)
     QObject.connect(self.wokbtn, SIGNAL("clicked()"), self.accept)
     self.wokbtn.setEnabled(False)
     cancelbtn = QPushButton("Cancel", self)
     cancelbtn.setMinimumWidth(128)
     QObject.connect(cancelbtn, SIGNAL("clicked()"), self.reject)
     lo2.addWidget(self.wokbtn)
     lo2.addStretch(1)
     lo2.addWidget(cancelbtn)
     self.setMinimumWidth(384)
     # signals
     QObject.connect(self.wfile, SIGNAL("valid"), self.wokbtn.setEnabled)
     # internal state
     self.qerrmsg = QErrorMessage(self)
     self._model_filename = None
예제 #3
0
 def __init__ (self,parent,modal=True,flags=Qt.WindowFlags()):
   QDialog.__init__(self,parent,flags);
   self.setModal(modal);
   self.setWindowTitle("Restore model into image");
   lo = QVBoxLayout(self);
   lo.setMargin(10);
   lo.setSpacing(5);
   # file selector
   self.wfile_in = FileSelector(self,label="Input FITS file:",dialog_label="Input FITS file",default_suffix="fits",file_types="FITS files (*.fits *.FITS)",file_mode=QFileDialog.ExistingFile);
   lo.addWidget(self.wfile_in);
   self.wfile_out = FileSelector(self,label="Output FITS file:",dialog_label="Output FITS file",default_suffix="fits",file_types="FITS files (*.fits *.FITS)",file_mode=QFileDialog.AnyFile);
   lo.addWidget(self.wfile_out);
   # beam size
   lo1 = QHBoxLayout();
   lo.addLayout(lo1);
   lo1.setContentsMargins(0,0,0,0);
   lo1.addWidget(QLabel("Restoring beam FWHM, major axis:",self));
   self.wbmaj = QLineEdit(self);
   lo1.addWidget(self.wbmaj);
   lo1.addWidget(QLabel("\"     minor axis:",self));
   self.wbmin = QLineEdit(self);
   lo1.addWidget(self.wbmin);
   lo1.addWidget(QLabel("\"     P.A.:",self));
   self.wbpa = QLineEdit(self);
   lo1.addWidget(self.wbpa);
   lo1.addWidget(QLabel(u"\u00B0",self));
   for w in self.wbmaj,self.wbmin,self.wbpa:
     w.setValidator(QDoubleValidator(self));
   lo1 = QHBoxLayout();
   lo.addLayout(lo1);
   lo1.setContentsMargins(0,0,0,0);
   self.wfile_psf = FileSelector(self,label="Set restoring beam by fitting PSF image:",dialog_label="PSF FITS file",default_suffix="fits",file_types="FITS files (*.fits *.FITS)",file_mode=QFileDialog.ExistingFile);
   lo1.addSpacing(32);
   lo1.addWidget(self.wfile_psf);
   # selection only
   self.wselonly = QCheckBox("restore selected model sources only",self);
   lo.addWidget(self.wselonly );
   # OK/cancel buttons
   lo.addSpacing(10);
   lo2 = QHBoxLayout();
   lo.addLayout(lo2);
   lo2.setContentsMargins(0,0,0,0);
   lo2.setMargin(5);
   self.wokbtn = QPushButton("OK",self);
   self.wokbtn.setMinimumWidth(128);
   QObject.connect(self.wokbtn,SIGNAL("clicked()"),self.accept);
   self.wokbtn.setEnabled(False);
   cancelbtn = QPushButton("Cancel",self);
   cancelbtn.setMinimumWidth(128);
   QObject.connect(cancelbtn,SIGNAL("clicked()"),self.reject);
   lo2.addWidget(self.wokbtn);
   lo2.addStretch(1);
   lo2.addWidget(cancelbtn);
   self.setMinimumWidth(384);
   # signals
   QObject.connect(self.wfile_in,SIGNAL("filenameSelected"),self._fileSelected);
   QObject.connect(self.wfile_in,SIGNAL("filenameSelected"),self._inputFileSelected);
   QObject.connect(self.wfile_out,SIGNAL("filenameSelected"),self._fileSelected);
   QObject.connect(self.wfile_psf,SIGNAL("filenameSelected"),self._psfFileSelected);
   # internal state
   self.qerrmsg = QErrorMessage(self);
예제 #4
0
 def __init__ (self,parent,modal=True,flags=Qt.WindowFlags()):
   QDialog.__init__(self,parent,flags);
   self.setModal(modal);
   self.setWindowTitle("Convert sources to FITS brick");
   lo = QVBoxLayout(self);
   lo.setMargin(10);
   lo.setSpacing(5);
   # file selector
   self.wfile = FileSelector(self,label="FITS filename:",dialog_label="Output FITS file",default_suffix="fits",
                   file_types="FITS files (*.fits *.FITS)",file_mode=QFileDialog.ExistingFile);
   lo.addWidget(self.wfile);
   # reference frequency
   lo1 = QHBoxLayout();
   lo.addLayout(lo1);
   lo1.setContentsMargins(0,0,0,0);
   label = QLabel("Frequency, MHz:",self);
   lo1.addWidget(label);
   tip = """<P>If your sky model contains spectral information (such as spectral indices), then a brick may be generated
   for a specific frequency. If a frequency is not specified here, the reference frequency of the model sources will be assumed.</P>""";
   self.wfreq = QLineEdit(self);
   self.wfreq.setValidator(QDoubleValidator(self));
   label.setToolTip(tip);
   self.wfreq.setToolTip(tip);
   lo1.addWidget(self.wfreq);
   # beam gain
   lo1 = QHBoxLayout();
   lo.addLayout(lo1);
   lo1.setContentsMargins(0,0,0,0);
   self.wpb_apply = QCheckBox("Apply primary beam expression:",self);
   self.wpb_apply.setChecked(True);
   lo1.addWidget(self.wpb_apply);
   tip = """<P>If this option is specified, a primary power beam gain will be applied to the sources before inserting
   them into the brick. This can be any valid Python expression making use of the variables 'r' (corresponding
   to distance from field centre, in radians) and 'fq' (corresponding to frequency.)</P>""";
   self.wpb_exp = QLineEdit(self);
   self.wpb_apply.setToolTip(tip);
   self.wpb_exp.setToolTip(tip);
   lo1.addWidget(self.wpb_exp);
   # overwrite or add mode
   lo1 = QHBoxLayout();
   lo.addLayout(lo1);
   lo1.setContentsMargins(0,0,0,0);
   self.woverwrite = QRadioButton("overwrite image",self);
   self.woverwrite.setChecked(True);
   lo1.addWidget(self.woverwrite);
   self.waddinto = QRadioButton("add into image",self);
   lo1.addWidget(self.waddinto);
   # add to model
   self.wadd = QCheckBox("Add resulting brick to sky model as a FITS image component",self);
   lo.addWidget(self.wadd);
   lo1 = QHBoxLayout();
   lo.addLayout(lo1);
   lo1.setContentsMargins(0,0,0,0);
   self.wpad = QLineEdit(self);
   self.wpad.setValidator(QDoubleValidator(self));
   self.wpad.setText("1.1");
   lab = QLabel("...with padding factor:",self);
   lab.setToolTip("""<P>The padding factor determines the amount of null padding inserted around the image during
     the prediction stage. Padding alleviates the effects of tapering and detapering in the uv-brick, which can show
     up towards the edges of the image. For a factor of N, the image will be padded out to N times its original size.
     This increases memory use, so if you have no flux at the edges of the image anyway, then a pad factor of 1 is
     perfectly fine.</P>""");
   self.wpad.setToolTip(lab.toolTip());
   QObject.connect(self.wadd,SIGNAL("toggled(bool)"),self.wpad.setEnabled);
   QObject.connect(self.wadd,SIGNAL("toggled(bool)"),lab.setEnabled);
   self.wpad.setEnabled(False);
   lab.setEnabled(False);
   lo1.addStretch(1);
   lo1.addWidget(lab,0);
   lo1.addWidget(self.wpad,1);
   self.wdel = QCheckBox("Remove from the sky model sources that go into the brick",self);
   lo.addWidget(self.wdel);
   # OK/cancel buttons
   lo.addSpacing(10);
   lo2 = QHBoxLayout();
   lo.addLayout(lo2);
   lo2.setContentsMargins(0,0,0,0);
   lo2.setMargin(5);
   self.wokbtn = QPushButton("OK",self);
   self.wokbtn.setMinimumWidth(128);
   QObject.connect(self.wokbtn,SIGNAL("clicked()"),self.accept);
   self.wokbtn.setEnabled(False);
   cancelbtn = QPushButton("Cancel",self);
   cancelbtn.setMinimumWidth(128);
   QObject.connect(cancelbtn,SIGNAL("clicked()"),self.reject);
   lo2.addWidget(self.wokbtn);
   lo2.addStretch(1);
   lo2.addWidget(cancelbtn);
   self.setMinimumWidth(384);
   # signals
   QObject.connect(self.wfile,SIGNAL("filenameSelected"),self._fileSelected);
   # internal state
   self.qerrmsg = QErrorMessage(self);