Source code for umami.calculations.metric.count_equal

import numpy as np


[docs]def count_equal(grid, field, value): """Sum the number of array elements equal to a value. ``count_equal`` calculates number of values in the core nodes of the model grid that are equal to the input *value*. Parameters ---------- grid : Landlab model grid field : str An at-node Landlab grid field that is present on the model grid. value : float The value to identify within the field. Returns ------- out : float The number of elements in the field array equal to value. Examples -------- First an example that only uses the ``count_equal`` function. >>> from landlab import RasterModelGrid >>> from landlab.components import FlowAccumulator >>> from umami.calculations import count_equal >>> grid = RasterModelGrid((10, 10)) >>> z = grid.add_zeros("node", "topographic__elevation") >>> z += grid.x_of_node + grid.y_of_node >>> fa = FlowAccumulator(grid) >>> fa.run_one_step() >>> count_equal(grid, "topographic__elevation", 4) 3 >>> count_equal(grid, "drainage_area", 1) 8 Next, the same calculations are shown as part of an umami ``Metric``. >>> from io import StringIO >>> from umami import Metric >>> file_like=StringIO(''' ... elev4: ... _func: count_equal ... field: topographic__elevation ... value: 4 ... num_headwater_nodes: ... _func: count_equal ... field: drainage_area ... value: 1 ... ''') >>> metric = Metric(grid) >>> metric.add_from_file(file_like) >>> metric.names ['elev4', 'num_headwater_nodes'] >>> metric.calculate() >>> metric.values [3, 8] """ vals = grid.at_node[field][grid.core_nodes] return np.sum(vals == value)