示例#1
0
    def read(self, xml_file):
        xmldom = minidom.parse(xml_file)
        path = os.path.realpath(os.path.dirname(xml_file))

        # Environment
        self.environment = str(
            self.data(xmldom.getElementsByTagName("gpuip")[0], "environment"))

        # Buffers
        for b in xmldom.getElementsByTagName("buffer"):
            buffer = Settings.Buffer(self.data(b, "name"),
                                     self.data(b, "type"),
                                     utils.safeEval(self.data(b, "channels")))
            if b.getElementsByTagName("input"):
                buffer.input = os.path.join(path, self.data(b, "input"))
            if b.getElementsByTagName("output"):
                buffer.output = os.path.join(path, self.data(b, "output"))
                if not os.path.exists(os.path.dirname(buffer.output)):
                    os.makedirs(os.path.dirname(buffer.output))
            self.buffers.append(buffer)

        # Kernels
        for k in xmldom.getElementsByTagName("kernel"):
            kernel = Settings.Kernel(
                self.data(k, "name"),
                os.path.join(path, self.data(k, "code_file")))

            # In Buffers
            for inb in k.getElementsByTagName("inbuffer"):
                name = self.data(inb, "name")
                hasBuffer = inb.getElementsByTagName("targetbuffer")
                buf = self.data(inb, "targetbuffer") if hasBuffer else ""
                kernel.inBuffers.append(Settings.Kernel.KernelBuffer(
                    name, buf))

            # Out Buffers
            for outb in k.getElementsByTagName("outbuffer"):
                name = self.data(outb, "name")
                hasBuffer = outb.getElementsByTagName("targetbuffer")
                buf = self.data(outb, "targetbuffer") if hasBuffer else ""
                kernel.outBuffers.append(
                    Settings.Kernel.KernelBuffer(name, buf))

            # Params
            for p in k.getElementsByTagName("param"):
                type = self.data(p, "type")
                param = Settings.Param(
                    self.data(p, "name"), type,
                    utils.safeEval(self.data(p, "default"), type),
                    utils.safeEval(self.data(p, "min"), type),
                    utils.safeEval(self.data(p, "max"), type))
                param.value = utils.safeEval(self.data(p, "value"), type)
                kernel.params.append(param)
            self.kernels.append(kernel)

        self.updateCode()
示例#2
0
    def read(self, xml_file):
        xmldom = minidom.parse(xml_file)
        path = os.path.realpath(os.path.dirname(xml_file))

        # Environment
        self.environment = str(self.data(
                xmldom.getElementsByTagName("gpuip")[0],
                "environment"))

        # Buffers
        for b in xmldom.getElementsByTagName("buffer"):
            buffer = Settings.Buffer(self.data(b, "name"),
                                     self.data(b, "type"),
                                     utils.safeEval(self.data(b, "channels")))
            if b.getElementsByTagName("input"):
                buffer.input = os.path.join(path,self.data(b, "input"))
            if b.getElementsByTagName("output"):
                buffer.output = os.path.join(path,self.data(b, "output"))
                if not os.path.exists(os.path.dirname(buffer.output)):
                    os.makedirs(os.path.dirname(buffer.output))
            self.buffers.append(buffer)

        # Kernels
        for k in xmldom.getElementsByTagName("kernel"):
            kernel = Settings.Kernel(
                self.data(k, "name"),
                os.path.join(path, self.data(k, "code_file")))

            # In Buffers
            for inb in k.getElementsByTagName("inbuffer"):
                name = self.data(inb, "name")
                hasBuffer = inb.getElementsByTagName("targetbuffer")
                buf = self.data(inb, "targetbuffer") if hasBuffer else ""
                kernel.inBuffers.append(Settings.Kernel.KernelBuffer(name,buf))

            # Out Buffers
            for outb in k.getElementsByTagName("outbuffer"):
                name = self.data(outb, "name")
                hasBuffer = outb.getElementsByTagName("targetbuffer")
                buf = self.data(outb, "targetbuffer") if hasBuffer else ""
                kernel.outBuffers.append(Settings.Kernel.KernelBuffer(name,buf))

            # Params
            for p in k.getElementsByTagName("param"):
                type = self.data(p, "type")
                param = Settings.Param(
                    self.data(p, "name"), type,
                    utils.safeEval(self.data(p, "default"),type),
                    utils.safeEval(self.data(p, "min"),type),
                    utils.safeEval(self.data(p, "max"),type))
                param.value = utils.safeEval(self.data(p, "value"),type)
                kernel.params.append(param)
            self.kernels.append(kernel)

        self.updateCode()
示例#3
0
        def getData(self):
            name = self.nameLineEdit.text()
            type = str(self.typeComboBox.currentText()).strip()
            defaultVal = self.defaultLineEdit.text()
            minVal = self.minLineEdit.text()
            maxVal = self.maxLineEdit.text()

            if type == "int":
                defaultVal = str(utils.safeEval(defaultVal,"int"))
                minVal = str(utils.safeEval(minVal,"int"))
                maxVal = str(utils.safeEval(maxVal,"int"))

            return name, type, defaultVal, minVal, maxVal
示例#4
0
        def getData(self):
            name = self.nameLineEdit.text()
            type = str(self.typeComboBox.currentText()).strip()
            defaultVal = self.defaultLineEdit.text()
            minVal = self.minLineEdit.text()
            maxVal = self.maxLineEdit.text()

            if type == "int":
                defaultVal = str(utils.safeEval(defaultVal, "int"))
                minVal = str(utils.safeEval(minVal, "int"))
                maxVal = str(utils.safeEval(maxVal, "int"))

            return name, type, defaultVal, minVal, maxVal
示例#5
0
    def onLineEditChange(self):
        # Changing the line edit triggers slider update that triggers
        # line edit update again. This is to prevent the second update
        if not self.updateLineEdit:
            return

        # Evaluate the line edit text to get the number
        val = utils.safeEval(self.lineEdit.text(), self.defaultVal,
                             self.typename)
        if self.typename == "int":
            # If the parameter is of int, format line edit to be int too.
            self.lineEdit.setText(str(val))

        # Don't run the onSliderChange  function
        self.updateSlider = False

        # Update the slider position
        if val < self.minVal:
            self.slider.setSliderPosition(0)
        elif val > self.maxVal:
            self.slider.setSliderPosition(100)
        else:
            t = (val - self.minVal) / float(self.maxVal - self.minVal)
            self.slider.setSliderPosition(100 * t)

        # Slider has been updated, safe to set this variable to true again
        self.updateSlider = True

        # If a callback function was added, call it
        if self.callbackFunc:
            self.callbackFunc()
示例#6
0
    def onLineEditChange(self):
        # Changing the line edit triggers slider update that triggers
        # line edit update again. This is to prevent the second update
        if not self.updateLineEdit:
            return

        # Evaluate the line edit text to get the number
        val = utils.safeEval(self.lineEdit.text(),self.defaultVal,self.typename)
        if self.typename == "int":
            # If the parameter is of int, format line edit to be int too.
            self.lineEdit.setText(str(val))

        # Don't run the onSliderChange  function
        self.updateSlider = False

        # Update the slider position
        if val < self.minVal:
            self.slider.setSliderPosition(0)
        elif val > self.maxVal:
            self.slider.setSliderPosition(100)
        else:
            t = (val - self.minVal) / float(self.maxVal - self.minVal)
            self.slider.setSliderPosition(100 * t)

        # Slider has been updated, safe to set this variable to true again
        self.updateSlider = True

        # If a callback function was added, call it
        if self.callbackFunc:
            self.callbackFunc()
示例#7
0
    def getSettings(self):
       
        s = settings.Settings()

        # Environment
        s.environment = str(self.envComboBox.currentText())

        # Buffers
        for b in self.buffersGroupBox.buffers:
            s.buffers.append(
                settings.Settings.Buffer(
                    str(b.nameLineEdit.text()),
                    str(b.typeComboBox.currentText()).strip(),
                    utils.safeEval(str(b.channelsComboBox.currentText()))))
       
        # Kernels
        for k in self.kernels:
            sk = settings.Settings.Kernel(
                str(k.nameLineEdit.text()).replace(" ", "_"),
                str(k.codeFileLineEdit.text()))

            # In Buffers
            for le in k.inBufferLineEdits:
                sk.inBuffers.append(
                    settings.Settings.Kernel.KernelBuffer(str(le.text()),""))

            # Out Buffers
            for le in k.outBufferLineEdits:
                sk.outBuffers.append(
                    settings.Settings.Kernel.KernelBuffer(str(le.text()),""))
       
            # Params
            for p in k.params:
                param = settings.Settings.Param(
                    str(p.nameLineEdit.text()),
                    str(p.typeComboBox.currentText()).strip(),
                    utils.safeEval(p.defaultLineEdit.text()),
                    utils.safeEval(p.minLineEdit.text()),
                    utils.safeEval(p.maxLineEdit.text()))
                sk.params.append(param)

            s.kernels.append(sk)

        s.updateCode()

        return s
示例#8
0
    def getSettings(self):

        s = settings.Settings()

        # Environment
        s.environment = str(self.envComboBox.currentText())

        # Buffers
        for b in self.buffersGroupBox.buffers:
            s.buffers.append(
                settings.Settings.Buffer(
                    str(b.nameLineEdit.text()),
                    str(b.typeComboBox.currentText()).strip(),
                    utils.safeEval(str(b.channelsComboBox.currentText()))))

        # Kernels
        for k in self.kernels:
            sk = settings.Settings.Kernel(
                str(k.nameLineEdit.text()).replace(" ", "_"),
                str(k.codeFileLineEdit.text()))

            # In Buffers
            for le in k.inBufferLineEdits:
                sk.inBuffers.append(
                    settings.Settings.Kernel.KernelBuffer(str(le.text()), ""))

            # Out Buffers
            for le in k.outBufferLineEdits:
                sk.outBuffers.append(
                    settings.Settings.Kernel.KernelBuffer(str(le.text()), ""))

            # Params
            for p in k.params:
                param = settings.Settings.Param(
                    str(p.nameLineEdit.text()),
                    str(p.typeComboBox.currentText()).strip(),
                    utils.safeEval(p.defaultLineEdit.text()),
                    utils.safeEval(p.minLineEdit.text()),
                    utils.safeEval(p.maxLineEdit.text()))
                sk.params.append(param)

            s.kernels.append(sk)

        s.updateCode()

        return s
示例#9
0
def getSettings(args):
    import settings

    if not args.file or not os.path.isfile(args.file):
        return None

    ipsettings = settings.Settings()
    ipsettings.read(args.file)

    # Change parameter values
    if args.param:
        for p in args.param:
            kernelName, paramName, value = p
            kernel = ipsettings.getKernel(kernelName)
            if not kernel:
                terminate("gpuip error: No kernel %s found." % kernelName)
            param = kernel.getParam(paramName)
            if param:
                param.setValue(utils.safeEval(value))
            else:
                terminate("gpuip error: No param %s found in kernel %s." \
                          % (paramName, kernelName))

    # Change input buffers
    if args.inbuffer:
        for inb in args.inbuffer:
            bufferName, path = inb[0], inb[1]
            buffer = ipsettings.getBuffer(bufferName)
            if buffer:
                buffer.input = path
                if not os.path.isfile(buffer.input):
                    raise IOError("No such file: '%s'" % buffer.input)
            else:
                terminate("gpuip error: No buffer %s found." % buffer)

    # Change output buffers
    if args.outbuffer:
        for outb in args.outbuffer:
            bufferName, path = outb[0], outb[1]
            buffer = ipsettings.getBuffer(bufferName)
            if buffer:
                buffer.output = path
                os.makedirs(os.path.dirname(os.path.realpath(path)))
            else:
                terminate("gpuip error: No buffer %s found." % bufferName)

    return ipsettings
示例#10
0
文件: gpuip.py 项目: k3rp/gpuip
def getSettings(args):
    import settings

    if not args.file or not os.path.isfile(args.file):
        return None

    ipsettings = settings.Settings()
    ipsettings.read(args.file)

    # Change parameter values
    if args.param:
        for p in args.param:
            kernelName, paramName, value = p
            kernel = ipsettings.getKernel(kernelName)
            if not kernel:
                terminate("gpuip error: No kernel %s found." % kernelName)
            param = kernel.getParam(paramName)
            if param:
                param.setValue(utils.safeEval(value))
            else:
                terminate("gpuip error: No param %s found in kernel %s." \
                          % (paramName, kernelName))

    # Change input buffers
    if args.inbuffer:
        for inb in args.inbuffer:
            bufferName, path = inb[0], inb[1]
            buffer = ipsettings.getBuffer(bufferName)
            if buffer:
                buffer.input = path
                if not os.path.isfile(buffer.input):
                    raise IOError("No such file: '%s'" % buffer.input)
            else:
                terminate("gpuip error: No buffer %s found." % buffer)

    # Change output buffers
    if args.outbuffer:
        for outb in args.outbuffer:
            bufferName, path = outb[0], outb[1]
            buffer = ipsettings.getBuffer(bufferName)
            if buffer:
                buffer.output = path
                os.makedirs(os.path.dirname(os.path.realpath(path)))
            else:
                terminate("gpuip error: No buffer %s found." % bufferName)

    return ipsettings
示例#11
0
    def updateSettings(self):
        # Get buffer input and outputs
        for b in self.settings.buffers:
            b.input = self.buffersWidget.getBufferInput(b.name)
            b.output = self.buffersWidget.getBufferOutput(b.name)

        # Get in buffers, out buffers and  param values
        for k in self.settings.kernels:
            kw = self.kernelWidgets[k.name]
            k.code = str(kw.codeEditor.toPlainText())

            for inb in k.inBuffers:
                inb.buffer = str(kw.inBuffers[inb.name].cbox.currentText())
            for outb in k.outBuffers:
                outb.buffer = str(kw.outBuffers[outb.name].cbox.currentText())
            for p in k.params:
                kernelParam = kw.params[p.name]
                p.value = utils.safeEval(kernelParam.lineEdit.text())
示例#12
0
文件: mainwindow.py 项目: k3rp/gpuip
    def updateSettings(self):
        # Get buffer input and outputs
        for b in self.settings.buffers:
            b.input = self.buffersWidget.getBufferInput(b.name)
            b.output = self.buffersWidget.getBufferOutput(b.name)

        # Get in buffers, out buffers and  param values
        for k in self.settings.kernels:
            kw = self.kernelWidgets[k.name]
            k.code = str(kw.codeEditor.toPlainText())

            for inb in k.inBuffers:
                inb.buffer = str(kw.inBuffers[inb.name].cbox.currentText())
            for outb in k.outBuffers:
                outb.buffer = str(kw.outBuffers[outb.name].cbox.currentText())
            for p in k.params:
                kernelParam = kw.params[p.name]
                p.value = utils.safeEval(kernelParam.lineEdit.text())