Scaling ======= Fields ------ :formula: string, :code:`v3_linear` | :code:`v3_power` | :code:`v3_logarithmic` | :code:`v3_exponential` :parameters: list :dimensions: list, see :ref:`Dimension` :scaled_mki_set: list formula ^^^^^^^ For NMDv4 this is the :code:`Scaling.formula`. For NMDv3 use the following mapping from :code:`NMD_ProfielSets_Versies.SchalingsFormuleID`: #. -> :code:`v3_linear` #. -> :code:`v3_power` #. -> :code:`v3_logarithmic` #. -> :code:`v3_exponential` parameters ^^^^^^^^^^ For the NMDv4 this is the :code:`Scaling.parameters`. For NMDv3 the parameters are built as follows: .. code-block:: python parameters = [ NMD_ProfielSets_Versies.SchalingsFormuleA1, NMD_ProfielSets_Versies.SchalingsFormuleB1, NMD_ProfielSets_Versies.SchalingsFormuleC, ] dimensions ^^^^^^^^^^ The list of dimensions. See :ref:`Dimension`. scaled_mki_set ^^^^^^^^^^^^^^ For each dimension a few values are taken as input parameters for the calculation of the MKI with scaling: * :ref:`minimum` * :ref:`lower-midpoint` - midway between the minimum and the inspected value * :ref:`inspected_value` * :ref:`upper-midpoint` - midway between the inspected value and the maximum value * :ref:`maximum` Make sure to maintain the ordering of the dimensions as you defined them in the list of dimensions. So in the case of two dimensions, the dimension you listed first in the field `dimensions` will be called dimension 1 and the second dimension will be called dimension 2. input_values ^^^^^^^^^^^^ Every combination of the dimension values must be taken. In the case of 1 dimension this will result in 5 scaled_mki_sets. In the case of 2 dimensions this will result in 25 scaled_mki_sets: * minimum 1, minimum 2 * minimum 1, lower-midpoint 2 * minimum 1, inspected_value 2 ... * maximum 1, upper-midpoint 2 * maximum 1, maximum_value 2 In the case of 2 dimensions, this list can be generated using the following pseudocode. .. code-block:: python dimension1 = ( dimension1.minimum, dimension1.lower_midpoint, dimension1.inspected_value, dimension1.upper_midpoint, dimension1.maximum, ) dimension2 = ( dimension2.min, dimension2.lower_midpoint, dimension2.inspected_value, dimension2.upper_midpoint, dimension2.maximum, ) for input_dimension1 in dimension1: for input_dimension2 in dimension2: print { "input_values": [input_dimension1, input_dimension2], "mki": calculate_mki(input_values), "mki_net": calculate_mki_net(input_values) } mki ^^^ The total MKI of the profile with the :code:`input_values` as the inputs for scaling and including the supplement (toeslag) for category 3. mki_net ^^^^^^^ The total MKI of the profile with the :code:`input_values` as the inputs for scaling, but excluding the supplement (toeslag) for category 3. Example ------- .. code-block:: json { "formula": "v3_linear", "parameters": [1.1, 0, 0.1], "dimensions": [], // not actually empty "scaled_mki_set": [ { "input_values": [0.5], "mki": 0.5, "mki_net": 0.4, }, { "input_values": [0.75], "mki": 0.75, "mki_net": 0.6 }, { "input_values": [1.0], "mki": 1.0, "mki_net": 0.85 }, { "input_values": [1.5], "mki": 1.5, "mki_net": 1.4 }, { "input_values": [2.0], "mki": 2.0, "mki_net": 1.8 } ] }