code: def add_spectroscopy(self, label='0_0', **props):
          
          if label not in self.leaf_labels:
              raise ValueError('No model node named {} (must be in {}). Maybe define models first?'.format(label, self.leaf_labels))
          for k,v in props.items():
              if k not in self.spec_props:
                  raise ValueError('Illegal property {} (only {} allowed).'.format(k, self.spec_props))
              if len(v) != 2:
                  raise ValueError('Must provide (value, uncertainty) for {}.'.format(k))
  
          if label not in self.spectroscopy:
              self.spectroscopy[label] = {}
  
          for k,v in props.items():
              self.spectroscopy[label][k] = v
  
          self._clear_cache()
docs: Adds spectroscopic measurement to particular star(s) (corresponding to individual model node)
  
          Default 0_0 should be primary star
  
          legal inputs are 'Teff', 'logg', 'feh', and in form (val, err)