proc_pad.py 1.38 KB
title = "Pad"
tip = "pad Zeros to a map"
onein = True

import numpy as np
import arraypad

from guidata.qt.QtGui import QMessageBox
from guidata.dataset.datatypes import DataSet
from guidata.dataset.dataitems import (IntItem, StringItem, ChoiceItem, FloatItem, BoolItem)
from guiqwt.config import _

class NOD3_App:

    def __init__(self, parent):
        self.parent = parent
        self.parent.activateWindow()

    def Error(self, msg):
        QMessageBox.critical(self.parent.parent(), title,
                              _(u"Error:")+"\n%s" % str(msg))

    def compute_app(self, **args):
        units = ('Pixel', 'Degree', 'Arcmin', 'Arcsec')
        class FuncParam(DataSet):
            pad = IntItem('Pad', default=0, min=0)
        name = title.replace(" ", "")
        if args == {}:
           param = FuncParam(_(title), "description")
        else:
           param = self.parent.ScriptParameter(name, args)

        # if no parameter needed set param to None. activate next line
        #param = None
        self.parent.compute_11(name, lambda m, p: self.function(m, p), param, onein) 

    def function(self, m, p):
        #m.data = np.lib.pad(m.data, (p.pad, p.pad), 'constant', constant_values=(0.0, 0.0))
        m.data = arraypad.pad(m.data, (p.pad, p.pad), 'constant', constant_values=(0.0, 0.0))
        m.header['CRPIX1'] += p.pad
        m.header['CRPIX2'] += p.pad
        return m, p