class_docstr: Locations must have the base master at the origin (ie. 0).
  
  If the extrapolate argument is set to True, then values are extrapolated
  outside the axis range.
  
    >>> from pprint import pprint
    >>> locations = [       {'wght':100},       {'wght':-100},       {'wght':-180},       {'wdth':+.3},       {'wght':+120,'wdth':.3},       {'wght':+120,'wdth':.2},       {},       {'wght':+180,'wdth':.3},       {'wght':+180},       ]
    >>> model = VariationModel(locations, axisOrder=['wght'])
    >>> pprint(model.locations)
    [{},
     {'wght': -100},
     {'wght': -180},
     {'wght': 100},
     {'wght': 180},
     {'wdth': 0.3},
     {'wdth': 0.3, 'wght': 180},
     {'wdth': 0.3, 'wght': 120},
     {'wdth': 0.2, 'wght': 120}]
    >>> pprint(model.deltaWeights)
    [{},
     {0: 1.0},
     {0: 1.0},
     {0: 1.0},
     {0: 1.0},
     {0: 1.0},
     {0: 1.0, 4: 1.0, 5: 1.0},
     {0: 1.0, 3: 0.75, 4: 0.25, 5: 1.0, 6: 0.6666666666666666},
     {0: 1.0,
      3: 0.75,
      4: 0.25,
      5: 0.6666666666666667,
      6: 0.4444444444444445,
      7: 0.6666666666666667}]
code: def getDeltas(self, masterValues, *, round=noRound):
      assert len(masterValues) == len(self.deltaWeights)
      mapping = self.reverseMapping
      out = []
      for i, weights in enumerate(self.deltaWeights):
          delta = masterValues[mapping[i]]
          for j, weight in weights.items():
              if weight == 1:
                  delta -= out[j]
              else:
                  delta -= out[j] * weight
          out.append(round(delta))
      return out
  
imports: from fontTools.misc.roundTools import noRound
  from .errors import VariationModelError
label_desc: Use image node_id 9 for calling the VariationModel obj's underlying member method code with example usage: obj.getDeltas(masterValues) and returns: out