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: Interpolate from values and scalars coefficients.
  
  If the values are master-values, then the scalars should be
  fetched from getMasterScalars().
  
  If the values are deltas, then the scalars should be fetched
  from getScalars(); in which case this is the same as
  interpolateFromDeltasAndScalars().
docstr_tok: ["Interpolate","from","values","and","scalars","coefficients",".","If","the","values","are","master-values",",","then","the","scalars","should","be","fetched","from","getMasterScalars","(",")",".","If","the","values","are","deltas",",","then","the","scalars","should","be","fetched","from","getScalars","(",")",";","in","which","case","this","is","the","same","as","interpolateFromDeltasAndScalars","(",")","."]
code: def interpolateFromValuesAndScalars(values, scalars):
      """Interpolate from values and scalars coefficients.
  
      If the values are master-values, then the scalars should be
      fetched from getMasterScalars().
  
      If the values are deltas, then the scalars should be fetched
      from getScalars(); in which case this is the same as
      interpolateFromDeltasAndScalars().
      """
      v = None
      assert len(values) == len(scalars)
      for value, scalar in zip(values, scalars):
          if not scalar:
              continue
          contribution = value * scalar
          if v is None:
              v = contribution
          else:
              v += contribution
      return v
  
imports: from fontTools.misc.roundTools import noRound
  from .errors import VariationModelError
label_desc: Use image node_id 13 for calling the VariationModel obj's underlying member method code with example usage: obj.interpolateFromValuesAndScalars(values, scalars) and returns: v