code: def _create_filefunction(self, name, spectrum_pars):
          
  
          spectrum_pars = {} if spectrum_pars is None else spectrum_pars
  
          if 'loge' in spectrum_pars:
              loge = spectrum_pars.get('loge')
          else:
              ebinsz = (self.log_energies[-1] -
                        self.log_energies[0]) / self.enumbins
              loge = utils.extend_array(self.log_energies, ebinsz, 0.5, 6.5)
  
          # Get the values
          dnde = np.zeros(len(loge))
          if 'dnde' in spectrum_pars:
              dnde = spectrum_pars.get('dnde')
          else:
              dnde = np.array([self.like[name].spectrum()(pyLike.dArg(10 ** egy))
                               for egy in loge])
  
          filename = \
              os.path.join(self.workdir,
                           '%s_filespectrum.txt' % (name.lower().replace(' ', '_')))
  
          # Create file spectrum txt file
          np.savetxt(filename, np.vstack((10**loge, dnde)).T)
          self.like.setSpectrum(name, str('FileFunction'))
  
          self.roi[name]['Spectrum_Filename'] = filename
          # Update
          for c in self.components:
              src = c.like.logLike.getSource(str(name))
              spectrum = src.spectrum()
  
              spectrum.getParam(str('Normalization')).setBounds(1E-3, 1E3)
  
              file_function = pyLike.FileFunction_cast(spectrum)
              file_function.readFunction(str(filename))
              c.roi[name]['Spectrum_Filename'] = filename
docs: Replace the spectrum of an existing source with a
          FileFunction.