Beispiel #1
0
    def defineCharacteristics(self):
        self.name, self.i18n_name = self.trAlgorithm('Raster layer statistics')
        self.group, self.i18n_group = self.trAlgorithm('Raster tools')

        self.addParameter(ParameterRaster(self.INPUT, self.tr('Input layer')))

        self.addOutput(OutputHTML(self.OUTPUT_HTML_FILE, self.tr('Statistics')))
        self.addOutput(OutputNumber(self.MIN, self.tr('Minimum value')))
        self.addOutput(OutputNumber(self.MAX, self.tr('Maximum value')))
        self.addOutput(OutputNumber(self.SUM, self.tr('Sum')))
        self.addOutput(OutputNumber(self.MEAN, self.tr('Mean value')))
        self.addOutput(OutputNumber(self.COUNT, self.tr('valid cells count')))
        self.addOutput(OutputNumber(self.COUNT, self.tr('No-data cells count')))
        self.addOutput(OutputNumber(self.STD_DEV, self.tr('Standard deviation')))
 def defineCharacteristics(self):
     self.showInModeler = True
     self.showInToolbox = False
     self.name = self.tr('Calculator', 'CalculatorModelerAlgorithm')
     self.group = self.tr('Modeler-only tools',
                          'CalculatorModelerAlgorithm')
     self.addParameter(
         ParameterString(FORMULA,
                         self.tr('Formula', 'CalculatorModelerAlgorithm'),
                         ''))
     for i in range(AVAILABLE_VARIABLES):
         self.addParameter(
             ParameterNumber(NUMBER + unicode(i), 'dummy', optional=True))
     self.addOutput(
         OutputNumber(RESULT, self.tr('Result',
                                      'CalculatorModelerAlgorithm')))
Beispiel #3
0
    def __init__(self):
        super().__init__()
        self.addParameter(ParameterRaster(self.INPUT, self.tr('Input layer')))

        self.addOutput(OutputHTML(self.OUTPUT_HTML_FILE,
                                  self.tr('Statistics')))
        self.addOutput(OutputNumber(self.MIN, self.tr('Minimum value')))
        self.addOutput(OutputNumber(self.MAX, self.tr('Maximum value')))
        self.addOutput(OutputNumber(self.SUM, self.tr('Sum')))
        self.addOutput(OutputNumber(self.MEAN, self.tr('Mean value')))
        self.addOutput(OutputNumber(self.COUNT, self.tr('valid cells count')))
        self.addOutput(OutputNumber(self.COUNT,
                                    self.tr('No-data cells count')))
        self.addOutput(
            OutputNumber(self.STD_DEV, self.tr('Standard deviation')))
Beispiel #4
0
    def defineCharacteristics(self):
        self.name, self.i18n_name = self.trAlgorithm('Basic statistics for text fields')
        self.group, self.i18n_group = self.trAlgorithm('Vector table tools')
        self.tags = self.tr('stats,statistics,string,table,layer')

        self.addParameter(ParameterTable(self.INPUT_LAYER,
                                         self.tr('Input vector layer')))
        self.addParameter(ParameterTableField(self.FIELD_NAME,
                                              self.tr('Field to calculate statistics on'),
                                              self.INPUT_LAYER, ParameterTableField.DATA_TYPE_STRING))

        self.addOutput(OutputHTML(self.OUTPUT_HTML_FILE,
                                  self.tr('Statistics for text')))

        self.addOutput(OutputNumber(self.MIN_LEN, self.tr('Minimum length')))
        self.addOutput(OutputNumber(self.MAX_LEN, self.tr('Maximum length')))
        self.addOutput(OutputNumber(self.MEAN_LEN, self.tr('Mean length')))
        self.addOutput(OutputNumber(self.COUNT, self.tr('Count')))
        self.addOutput(OutputNumber(self.EMPTY, self.tr('Number of empty values')))
        self.addOutput(OutputNumber(self.FILLED, self.tr('Number of non-empty values')))
        self.addOutput(OutputNumber(self.UNIQUE, self.tr('Number of unique values')))
        self.addOutput(OutputNumber(self.MIN_VALUE, self.tr('Minimum string value')))
        self.addOutput(OutputNumber(self.MAX_VALUE, self.tr('Maximum string value')))
    def defineCharacteristics(self):
        """Here we define the inputs and output of the algorithm, along
        with some other properties.
        """

        # The name that the user will see in the toolbox
        self.name = 'Hierarchical Clustering'

        # The branch of the toolbox under which the algorithm will appear
        self.group = 'Vector'

        # We add the input vector layer. It can have any kind of geometry
        # It is a mandatory (not optional) one, hence the False argument
        self.addParameter(
            ParameterVector(self.INPUT_LAYER, self.tr('Input layer'),
                            [ParameterVector.VECTOR_TYPE_POINT], False))

        self.addParameter(
            ParameterNumber(self.TOLERANCE,
                            self.tr('Cluster tolerance'),
                            minValue=0.0))

        self.addParameter(
            ParameterString(self.LABEL_FIELD, self.tr('Label field name'),
                            'label'))

        self.addParameter(
            ParameterSelection(self.LINKAGE_METHOD, self.tr('Linkage method'),
                               self._linkage_methods))

        self.addParameter(
            ParameterSelection(self.LINKAGE_METRIC, self.tr('Linkage metric'),
                               self._linkage_metrics))

        self.addParameter(
            ParameterSelection(self.CRITERION, self.tr('Cluster criterion'),
                               self._criterions))

        # We add a vector layer as output
        self.addOutput(
            OutputVector(self.OUTPUT_LAYER, self.tr('Clustered features')))

        self.addOutput(
            OutputNumber(self.NUM_CLUSTERS,
                         self.tr("Number of clusters formed")))
    def defineCharacteristics(self):
        """Here we define the inputs and output of the algorithm, along
        with some other properties.
        """
        self.name = 'K-means clustering'

        # The branch of the toolbox under which the algorithm will appear
        self.group = 'Vector'

        # We add the input vector layer. It can have any kind of geometry
        # It is a mandatory (not optional) one, hence the False argument
        self.addParameter(
            ParameterVector(self.INPUT_LAYER, self.tr('Input layer'),
                            [ParameterVector.VECTOR_TYPE_POINT], False))

        self.addParameter(
            ParameterNumber(self.K,
                            self.tr('K (number of clusters'),
                            minValue=2,
                            default=3))

        self.addParameter(
            ParameterString(self.LABEL_FIELD, self.tr('Label field name'),
                            'label'))

        self.addParameter(
            ParameterSelection(self.MINIT,
                               self.tr("Method for initialization"),
                               self._minits))

        # We add a vector layer as output
        self.addOutput(
            OutputVector(self.OUTPUT_LAYER, self.tr('Clustered features')))

        self.addOutput(
            OutputVector(self.CENTROID_OUTPUT, self.tr('Cluster centroids')))

        self.addOutput(
            OutputNumber(self.NUM_CLUSTERS,
                         self.tr("Number of clusters formed")))
Beispiel #7
0
    def defineCharacteristics(self):
        self.name = 'Basic statistics for text fields'
        self.group = 'Vector table tools'

        self.addParameter(ParameterVector(self.INPUT_LAYER,
                          'Input vector layer',
                          ParameterVector.VECTOR_TYPE_ANY, False))
        self.addParameter(ParameterTableField(self.FIELD_NAME,
                          'Field to calculate statistics on',
                          self.INPUT_LAYER,
                          ParameterTableField.DATA_TYPE_STRING))

        self.addOutput(OutputHTML(self.OUTPUT_HTML_FILE,
                       'Statistics for text field'))

        self.addOutput(OutputNumber(self.MIN_LEN, 'Minimum length'))
        self.addOutput(OutputNumber(self.MAX_LEN, 'Maximum length'))
        self.addOutput(OutputNumber(self.MEAN_LEN, 'Mean length'))
        self.addOutput(OutputNumber(self.COUNT, 'Count'))
        self.addOutput(OutputNumber(self.EMPTY, 'Number of empty values'))
        self.addOutput(OutputNumber(self.FILLED, 'Number of non-empty values'))
        self.addOutput(OutputNumber(self.UNIQUE, 'Number of unique values'))
Beispiel #8
0
    def processOutputParameterToken(self, token):
        out = None

        if token.lower().strip().startswith('raster'):
            out = OutputRaster()
        elif token.lower().strip().startswith('vector'):
            out = OutputVector()
        elif token.lower().strip().startswith('table'):
            out = OutputTable()
        elif token.lower().strip().startswith('html'):
            out = OutputHTML()
        elif token.lower().strip().startswith('file'):
            out = OutputFile()
            subtokens = token.split(' ')
            if len(subtokens) > 2:
                out.ext = subtokens[2]
        elif token.lower().strip().startswith('directory'):
            out = OutputDirectory()
        elif token.lower().strip().startswith('number'):
            out = OutputNumber()
        elif token.lower().strip().startswith('string'):
            out = OutputString()

        return out
    def defineCharacteristics(self):
        """Here we define the inputs and output of the algorithm, along
        with some other properties.
        """

        # The name that the user will see in the toolbox
        self.name = 'Differential Privacy - independent points'

        # The branch of the toolbox under which the algorithm will appear
        self.group = 'Vector'

        # We add the input vector layer. It can have any kind of geometry
        # It is a mandatory (not optional) one, hence the False argument
        self.addParameter(
            ParameterVector(self.INPUT_LAYER, self.tr('Input layer'),
                            [ParameterVector.VECTOR_TYPE_POINT], False))

        self.addParameter(
            ParameterNumber(self.PROTECTION_DISTANCE,
                            self.tr('Protection distance (projected units)'),
                            minValue=0.,
                            default=500))

        self.addParameter(
            ParameterBoolean(
                self.LIMIT_NINETY_FIVE,
                "Limit the distance moved to the 95% confidence interval",
                default=False))

        # We add a vector layer as output
        self.addOutput(
            OutputVector(self.OUTPUT_LAYER, self.tr('Anonymized features')))

        self.addOutput(
            OutputNumber(self.NINETY_FIVE_DISTANCE,
                         "95% confidence distance for offset"))
Beispiel #10
0
    def defineCharacteristics(self):
        self.DIRECTIONS = OrderedDict([
            (self.tr('Forward direction'),
             QgsVectorLayerDirector.DirectionForward),
            (self.tr('Backward direction'),
             QgsVectorLayerDirector.DirectionForward),
            (self.tr('Both directions'),
             QgsVectorLayerDirector.DirectionForward)
        ])

        self.STRATEGIES = [self.tr('Shortest'), self.tr('Fastest')]

        self.name, self.i18n_name = self.trAlgorithm(
            'Shortest path (point to point)')
        self.group, self.i18n_group = self.trAlgorithm('Network analysis')

        self.addParameter(
            ParameterVector(self.INPUT_VECTOR,
                            self.tr('Vector layer representing network'),
                            [dataobjects.TYPE_VECTOR_LINE]))
        self.addParameter(
            ParameterPoint(self.START_POINT, self.tr('Start point')))
        self.addParameter(ParameterPoint(self.END_POINT, self.tr('End point')))
        self.addParameter(
            ParameterSelection(self.STRATEGY,
                               self.tr('Path type to calculate'),
                               self.STRATEGIES,
                               default=0))

        params = []
        params.append(
            ParameterTableField(self.DIRECTION_FIELD,
                                self.tr('Direction field'),
                                self.INPUT_VECTOR,
                                optional=True))
        params.append(
            ParameterString(self.VALUE_FORWARD,
                            self.tr('Value for forward direction'),
                            '',
                            optional=True))
        params.append(
            ParameterString(self.VALUE_BACKWARD,
                            self.tr('Value for backward direction'),
                            '',
                            optional=True))
        params.append(
            ParameterString(self.VALUE_BOTH,
                            self.tr('Value for both directions'),
                            '',
                            optional=True))
        params.append(
            ParameterSelection(self.DEFAULT_DIRECTION,
                               self.tr('Default direction'),
                               list(self.DIRECTIONS.keys()),
                               default=2))
        params.append(
            ParameterTableField(self.SPEED_FIELD,
                                self.tr('Speed field'),
                                self.INPUT_VECTOR,
                                optional=True))
        params.append(
            ParameterNumber(self.DEFAULT_SPEED,
                            self.tr('Default speed (km/h)'), 0.0,
                            99999999.999999, 5.0))
        params.append(
            ParameterNumber(self.TOLERANCE, self.tr('Topology tolerance'), 0.0,
                            99999999.999999, 0.0))

        for p in params:
            p.isAdvanced = True
            self.addParameter(p)

        self.addOutput(OutputNumber(self.TRAVEL_COST, self.tr('Travel cost')))
        self.addOutput(
            OutputVector(self.OUTPUT_LAYER,
                         self.tr('Shortest path'),
                         datatype=[dataobjects.TYPE_VECTOR_LINE]))
Beispiel #11
0
    def defineCharacteristics(self):
        self.addParameter(ParameterTable(self.INPUT_LAYER,
                                         self.tr('Input table')))
        self.addParameter(ParameterTableField(self.FIELD_NAME,
                                              self.tr('Field to calculate statistics on'),
                                              self.INPUT_LAYER))

        self.addOutput(OutputHTML(self.OUTPUT_HTML_FILE,
                                  self.tr('Statistics')))

        self.addOutput(OutputNumber(self.COUNT, self.tr('Count')))
        self.addOutput(OutputNumber(self.UNIQUE, self.tr('Number of unique values')))
        self.addOutput(OutputNumber(self.EMPTY, self.tr('Number of empty (null) values')))
        self.addOutput(OutputNumber(self.FILLED, self.tr('Number of non-empty values')))
        self.addOutput(OutputNumber(self.MIN, self.tr('Minimum value')))
        self.addOutput(OutputNumber(self.MAX, self.tr('Maximum value')))
        self.addOutput(OutputNumber(self.MIN_LENGTH, self.tr('Minimum length')))
        self.addOutput(OutputNumber(self.MAX_LENGTH, self.tr('Maximum length')))
        self.addOutput(OutputNumber(self.MEAN_LENGTH, self.tr('Mean length')))
        self.addOutput(OutputNumber(self.CV, self.tr('Coefficient of Variation')))
        self.addOutput(OutputNumber(self.SUM, self.tr('Sum')))
        self.addOutput(OutputNumber(self.MEAN, self.tr('Mean value')))
        self.addOutput(OutputNumber(self.STD_DEV, self.tr('Standard deviation')))
        self.addOutput(OutputNumber(self.RANGE, self.tr('Range')))
        self.addOutput(OutputNumber(self.MEDIAN, self.tr('Median')))
        self.addOutput(OutputNumber(self.MINORITY, self.tr('Minority (rarest occurring value)')))
        self.addOutput(OutputNumber(self.MAJORITY, self.tr('Majority (most frequently occurring value)')))
        self.addOutput(OutputNumber(self.FIRSTQUARTILE, self.tr('First quartile')))
        self.addOutput(OutputNumber(self.THIRDQUARTILE, self.tr('Third quartile')))
        self.addOutput(OutputNumber(self.IQR, self.tr('Interquartile Range (IQR)')))
    def defineCharacteristics(self):
        self.name, self.i18n_name = self.trAlgorithm(
            'Basic statistics for numeric fields')
        self.group, self.i18n_group = self.trAlgorithm('Vector table tools')
        self.tags = self.tr('stats,statistics,number,table,layer')

        self.addParameter(
            ParameterTable(self.INPUT_LAYER, self.tr('Input vector layer')))
        self.addParameter(
            ParameterTableField(self.FIELD_NAME,
                                self.tr('Field to calculate statistics on'),
                                self.INPUT_LAYER,
                                ParameterTableField.DATA_TYPE_NUMBER))

        self.addOutput(OutputHTML(self.OUTPUT_HTML_FILE,
                                  self.tr('Statistics')))

        self.addOutput(
            OutputNumber(self.CV, self.tr('Coefficient of Variation')))
        self.addOutput(OutputNumber(self.MIN, self.tr('Minimum value')))
        self.addOutput(OutputNumber(self.MAX, self.tr('Maximum value')))
        self.addOutput(OutputNumber(self.SUM, self.tr('Sum')))
        self.addOutput(OutputNumber(self.MEAN, self.tr('Mean value')))
        self.addOutput(
            OutputNumber(self.STD_DEV, self.tr('Standard deviation')))
        self.addOutput(OutputNumber(self.COUNT, self.tr('Count')))
        self.addOutput(OutputNumber(self.RANGE, self.tr('Range')))
        self.addOutput(OutputNumber(self.MEDIAN, self.tr('Median')))
        self.addOutput(
            OutputNumber(self.UNIQUE, self.tr('Number of unique values')))
        self.addOutput(
            OutputNumber(self.MINORITY,
                         self.tr('Minority (rarest occurring value)')))
        self.addOutput(
            OutputNumber(
                self.MAJORITY,
                self.tr('Majority (most frequently occurring value)')))
        self.addOutput(
            OutputNumber(self.FIRSTQUARTILE, self.tr('First quartile')))
        self.addOutput(
            OutputNumber(self.THIRDQUARTILE, self.tr('Third quartile')))
        self.addOutput(
            OutputNumber(self.NULLVALUES, self.tr('NULL (missed) values')))
        self.addOutput(
            OutputNumber(self.IQR, self.tr('Interquartile Range (IQR)')))
Beispiel #13
0
    def defineCharacteristics(self):
        self.name, self.i18n_name = self.trAlgorithm(
            'Basic statistics for fields')
        self.group, self.i18n_group = self.trAlgorithm('Vector table tools')
        self.tags = self.tr(
            'stats,statistics,date,time,datetime,string,number,text,table,layer,maximum,minimum,mean,average,standard,deviation,'
            'count,distinct,unique,variance,median,quartile,range,majority,minority'
        )

        self.addParameter(
            ParameterTable(self.INPUT_LAYER, self.tr('Input table')))
        self.addParameter(
            ParameterTableField(self.FIELD_NAME,
                                self.tr('Field to calculate statistics on'),
                                self.INPUT_LAYER))

        self.addOutput(OutputHTML(self.OUTPUT_HTML_FILE,
                                  self.tr('Statistics')))

        self.addOutput(OutputNumber(self.COUNT, self.tr('Count')))
        self.addOutput(
            OutputNumber(self.UNIQUE, self.tr('Number of unique values')))
        self.addOutput(
            OutputNumber(self.EMPTY, self.tr('Number of empty (null) values')))
        self.addOutput(
            OutputNumber(self.FILLED, self.tr('Number of non-empty values')))
        self.addOutput(OutputNumber(self.MIN, self.tr('Minimum value')))
        self.addOutput(OutputNumber(self.MAX, self.tr('Maximum value')))
        self.addOutput(OutputNumber(self.MIN_LENGTH,
                                    self.tr('Minimum length')))
        self.addOutput(OutputNumber(self.MAX_LENGTH,
                                    self.tr('Maximum length')))
        self.addOutput(OutputNumber(self.MEAN_LENGTH, self.tr('Mean length')))
        self.addOutput(
            OutputNumber(self.CV, self.tr('Coefficient of Variation')))
        self.addOutput(OutputNumber(self.SUM, self.tr('Sum')))
        self.addOutput(OutputNumber(self.MEAN, self.tr('Mean value')))
        self.addOutput(
            OutputNumber(self.STD_DEV, self.tr('Standard deviation')))
        self.addOutput(OutputNumber(self.RANGE, self.tr('Range')))
        self.addOutput(OutputNumber(self.MEDIAN, self.tr('Median')))
        self.addOutput(
            OutputNumber(self.MINORITY,
                         self.tr('Minority (rarest occurring value)')))
        self.addOutput(
            OutputNumber(
                self.MAJORITY,
                self.tr('Majority (most frequently occurring value)')))
        self.addOutput(
            OutputNumber(self.FIRSTQUARTILE, self.tr('First quartile')))
        self.addOutput(
            OutputNumber(self.THIRDQUARTILE, self.tr('Third quartile')))
        self.addOutput(
            OutputNumber(self.IQR, self.tr('Interquartile Range (IQR)')))
Beispiel #14
0
    def __init__(self):
        super().__init__()
        self.addParameter(
            ParameterTable(self.INPUT_LAYER, self.tr('Input vector layer')))
        self.addParameter(
            ParameterTableField(self.FIELD_NAME,
                                self.tr('Field to calculate statistics on'),
                                self.INPUT_LAYER,
                                ParameterTableField.DATA_TYPE_NUMBER))

        self.addOutput(OutputHTML(self.OUTPUT_HTML_FILE,
                                  self.tr('Statistics')))

        self.addOutput(
            OutputNumber(self.CV, self.tr('Coefficient of Variation')))
        self.addOutput(OutputNumber(self.MIN, self.tr('Minimum value')))
        self.addOutput(OutputNumber(self.MAX, self.tr('Maximum value')))
        self.addOutput(OutputNumber(self.SUM, self.tr('Sum')))
        self.addOutput(OutputNumber(self.MEAN, self.tr('Mean value')))
        self.addOutput(
            OutputNumber(self.STD_DEV, self.tr('Standard deviation')))
        self.addOutput(OutputNumber(self.COUNT, self.tr('Count')))
        self.addOutput(OutputNumber(self.RANGE, self.tr('Range')))
        self.addOutput(OutputNumber(self.MEDIAN, self.tr('Median')))
        self.addOutput(
            OutputNumber(self.UNIQUE, self.tr('Number of unique values')))
        self.addOutput(
            OutputNumber(self.MINORITY,
                         self.tr('Minority (rarest occurring value)')))
        self.addOutput(
            OutputNumber(
                self.MAJORITY,
                self.tr('Majority (most frequently occurring value)')))
        self.addOutput(
            OutputNumber(self.FIRSTQUARTILE, self.tr('First quartile')))
        self.addOutput(
            OutputNumber(self.THIRDQUARTILE, self.tr('Third quartile')))
        self.addOutput(
            OutputNumber(self.NULLVALUES, self.tr('NULL (missed) values')))
        self.addOutput(
            OutputNumber(self.IQR, self.tr('Interquartile Range (IQR)')))
Beispiel #15
0
    def processParameterLine(self, line):
        param = None
        out = None
        line = line.replace('#', '')

        # If the line is in the format of the text description files for
        # normal algorithms, then process it using parameter and output
        # factories
        if '|' in line:
            self.processDescriptionParameterLine(line)
            return
        if line == "nomodeler":
            self.showInModeler = False
            return
        tokens = line.split('=', 1)
        desc = self.createDescriptiveName(tokens[0])
        if tokens[1].lower().strip() == 'group':
            self.group = tokens[0]
            return
        if tokens[1].lower().strip() == 'name':
            self.name = tokens[0]
            return
        if tokens[1].lower().strip() == 'raster':
            param = ParameterRaster(tokens[0], desc, False)
        elif tokens[1].lower().strip() == 'vector':
            param = ParameterVector(tokens[0], desc,
                                    [ParameterVector.VECTOR_TYPE_ANY])
        elif tokens[1].lower().strip() == 'vector point':
            param = ParameterVector(tokens[0], desc,
                                    [ParameterVector.VECTOR_TYPE_POINT])
        elif tokens[1].lower().strip() == 'vector line':
            param = ParameterVector(tokens[0], desc,
                                    [ParameterVector.VECTOR_TYPE_LINE])
        elif tokens[1].lower().strip() == 'vector polygon':
            param = ParameterVector(tokens[0], desc,
                                    [ParameterVector.VECTOR_TYPE_POLYGON])
        elif tokens[1].lower().strip() == 'table':
            param = ParameterTable(tokens[0], desc, False)
        elif tokens[1].lower().strip() == 'multiple raster':
            param = ParameterMultipleInput(tokens[0], desc,
                                           ParameterMultipleInput.TYPE_RASTER)
            param.optional = False
        elif tokens[1].lower().strip() == 'multiple vector':
            param = ParameterMultipleInput(
                tokens[0], desc, ParameterMultipleInput.TYPE_VECTOR_ANY)
            param.optional = False
        elif tokens[1].lower().strip().startswith('selection'):
            options = tokens[1].strip()[len('selection '):].split(';')
            param = ParameterSelection(tokens[0], desc, options)
        elif tokens[1].lower().strip().startswith('boolean'):
            default = tokens[1].strip()[len('boolean') + 1:]
            param = ParameterBoolean(tokens[0], desc, default)
        elif tokens[1].lower().strip() == 'extent':
            param = ParameterExtent(tokens[0], desc)
        elif tokens[1].lower().strip() == 'file':
            param = ParameterFile(tokens[0], desc, False)
        elif tokens[1].lower().strip() == 'folder':
            param = ParameterFile(tokens[0], desc, True)
        elif tokens[1].lower().strip().startswith('number'):
            default = tokens[1].strip()[len('number') + 1:]
            param = ParameterNumber(tokens[0], desc, default=default)
        elif tokens[1].lower().strip().startswith('field'):
            field = tokens[1].strip()[len('field') + 1:]
            found = False
            for p in self.parameters:
                if p.name == field:
                    found = True
                    break
            if found:
                param = ParameterTableField(tokens[0], desc, field)
        elif tokens[1].lower().strip().startswith('string'):
            default = tokens[1].strip()[len('string') + 1:]
            param = ParameterString(tokens[0], desc, default)
        elif tokens[1].lower().strip().startswith('longstring'):
            default = tokens[1].strip()[len('longstring') + 1:]
            param = ParameterString(tokens[0], desc, default, multiline=True)
        elif tokens[1].lower().strip().startswith('crs'):
            default = tokens[1].strip()[len('crs') + 1:]
            if not default:
                default = 'EPSG:4326'
            param = ParameterCrs(tokens[0], desc, default)
        elif tokens[1].lower().strip().startswith('output raster'):
            out = OutputRaster()
        elif tokens[1].lower().strip().startswith('output vector'):
            out = OutputVector()
        elif tokens[1].lower().strip().startswith('output table'):
            out = OutputTable()
        elif tokens[1].lower().strip().startswith('output html'):
            out = OutputHTML()
        elif tokens[1].lower().strip().startswith('output file'):
            out = OutputFile()
            subtokens = tokens[1].split(' ')
            if len(subtokens) > 2:
                out.ext = subtokens[2]
        elif tokens[1].lower().strip().startswith('output directory'):
            out = OutputDirectory()
        elif tokens[1].lower().strip().startswith('output number'):
            out = OutputNumber()
        elif tokens[1].lower().strip().startswith('output string'):
            out = OutputString()

        if param is not None:
            self.addParameter(param)
        elif out is not None:
            out.name = tokens[0]
            out.description = desc
            self.addOutput(out)
        else:
            raise WrongScriptException(
                self.tr('Could not load script: %s.\n'
                        'Problem with line %d', 'ScriptAlgorithm') %
                (self.descriptionFile or '', line))