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}]
docstr: Return multipliers for each master, for the given location.
  If interpolating many master-values at the same location,
  this function allows speed up by fetching the scalars once
  and using them with interpolateFromValuesAndScalars().
  
  Note that the scalars used in interpolateFromMastersAndScalars(),
  are *not* the same as the ones returned here. They are the result
  of getScalars().
docstr_tok: ["Return","multipliers","for","each","master",",","for","the","given","location",".","If","interpolating","many","master-values","at","the","same","location",",","this","function","allows","speed","up","by","fetching","the","scalars","once","and","using","them","with","interpolateFromValuesAndScalars","(",")",".","Note","that","the","scalars","used","in","interpolateFromMastersAndScalars","(",")",",","are","*","not","*","the","same","as","the","ones","returned","here",".","They","are","the","result","of","getScalars","(",")","."]
code: def getMasterScalars(self, targetLocation):
      """Return multipliers for each master, for the given location.
      If interpolating many master-values at the same location,
      this function allows speed up by fetching the scalars once
      and using them with interpolateFromValuesAndScalars().
  
      Note that the scalars used in interpolateFromMastersAndScalars(),
      are *not* the same as the ones returned here. They are the result
      of getScalars()."""
      out = self.getScalars(targetLocation)
      for i, weights in reversed(list(enumerate(self.deltaWeights))):
          for j, weight in weights.items():
              out[j] -= out[i] * weight
  
      out = [out[self.mapping[i]] for i in range(len(out))]
      return out
  
imports: from fontTools.misc.roundTools import noRound
  from .errors import VariationModelError
label_desc: Use image node_id 12 for calling the VariationModel obj's underlying member method code with example usage: obj.getMasterScalars(targetLocation) and returns: out