[Debian-astro-maintainers] Bug#813932: sunpy: FTBFS: IndexError: only integers, slices (`:`), ellipsis (`...`), numpy.newaxis (`None`) and integer or boolean arrays are valid indices

Chris Lamb lamby at debian.org
Sat Feb 6 19:59:19 UTC 2016


Source: sunpy
Version: 0.6.1-2
Severity: serious
Justification: fails to build from source
User: reproducible-builds at lists.alioth.debian.org
Usertags: ftbfs
X-Debbugs-Cc: reproducible-builds at lists.alioth.debian.org

Dear Maintainer,

sunpy fails to build from source in unstable/amd64:

  [..]

              ----------
              new_delt : float
                  New delta between consecutive values.
              """
          if self.t_delt == new_delt:
              return self
          factor = self.t_delt / float(new_delt)
      
          # The last data-point does not change!
          new_size = floor((self.shape[1] - 1) * factor + 1) # pylint: disable=E1101
          data = ndimage.zoom(self.data, (1, new_size / self.shape[1])) # pylint: disable=E1101
      
          params = self._get_params()
          params.update({
              'time_axis': np.linspace(
                  self.time_axis[0],
  >               self.time_axis[(new_size - 1) * new_delt / self.t_delt],
                  new_size
              ),
              't_delt': new_delt,
          })
  E       IndexError: only integers, slices (`:`), ellipsis (`...`), numpy.newaxis (`None`) and integer or boolean arrays are valid indices
  
  sunpy/spectra/spectrogram.py:960: IndexError
  ______________________________ test_combine_freqs ______________________________
  
      def test_combine_freqs():
          image = np.random.rand(5, 3600)
          spec = LinearTimeSpectrogram(image,
              np.linspace(0, image.shape[1] - 1, image.shape[1]),
              np.array([8, 6, 4, 2, 0]),
              datetime(2010, 1, 1, 0, 15),
              datetime(2010, 1, 1, 0, 30),
              900,
              0.25
          )
          image = np.random.rand(5, 3600)
          spec2 = LinearTimeSpectrogram(image,
              np.linspace(0, image.shape[1] - 1, image.shape[1]),
              np.array([9, 7, 5, 3, 1]),
              datetime(2010, 1, 1, 0, 15),
              datetime(2010, 1, 1, 0, 30),
              900,
              0.25
          )
  >       comb = LinearTimeSpectrogram.combine_frequencies([spec, spec2])
  
  sunpy/spectra/tests/test_spectrogram.py:575: 
  _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
  sunpy/spectra/spectrogram.py:1162: in combine_frequencies
      specs = cls.intersect_time(specs)
  sunpy/spectra/spectrogram.py:1144: in intersect_time
      cut = [sp[:, (start - sp.t_init) / delt:] for sp in specs]
  sunpy/spectra/spectrogram.py:601: in __getitem__
      return self._slice(key[0], key[1])
  _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
  
  self = <sunpy.spectra.spectrogram.LinearTimeSpectrogram object at 0x7f00513ff790>
  y_range = slice(None, None, None), x_range = slice(0.0, None, None)
  
      def _slice(self, y_range, x_range):
          """Return new spectrogram reduced to the values passed
              as slices. Implementation detail."""
  >       data = self.data[y_range, x_range]
  E       IndexError: invalid slice
  
  sunpy/spectra/spectrogram.py:339: IndexError
  _____________________________ test_intersect_time ______________________________
  
      def test_intersect_time():
          image = np.random.rand(5, 3600)
          spec = LinearTimeSpectrogram(image,
              np.linspace(0, 0.25 * (image.shape[1] - 1), image.shape[1]),
              np.array([8, 6, 4, 2, 0]),
              datetime(2010, 1, 1, 0, 15),
              datetime(2010, 1, 1, 0, 30),
              900,
              0.25
          )
          image = np.random.rand(5, 3600)
          spec2 = LinearTimeSpectrogram(image,
              np.linspace(0, 0.25 * (image.shape[1] - 1), image.shape[1]),
              np.array([9, 7, 5, 3, 1]),
              datetime(2010, 1, 1, 0, 15),
              datetime(2010, 1, 1, 0, 30),
              901,
              0.25
          )
      
          one, other = LinearTimeSpectrogram.intersect_time(
  >           [spec, spec2]
          )
  
  sunpy/spectra/tests/test_spectrogram.py:632: 
  _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
  sunpy/spectra/spectrogram.py:1144: in intersect_time
      cut = [sp[:, (start - sp.t_init) / delt:] for sp in specs]
  sunpy/spectra/spectrogram.py:601: in __getitem__
      return self._slice(key[0], key[1])
  _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
  
  self = <sunpy.spectra.spectrogram.LinearTimeSpectrogram object at 0x7f005113dd50>
  y_range = slice(None, None, None), x_range = slice(4.0, None, None)
  
      def _slice(self, y_range, x_range):
          """Return new spectrogram reduced to the values passed
              as slices. Implementation detail."""
  >       data = self.data[y_range, x_range]
  E       IndexError: invalid slice
  
  sunpy/spectra/spectrogram.py:339: IndexError
  ________________________________ test_linearize ________________________________
  
      def test_linearize():
          image = np.random.rand(5, 900)
          spec = LinearTimeSpectrogram(image,
              np.linspace(0, 1 * (image.shape[1] - 1), image.shape[1]),
              np.array([20, 10, 5, 0]),
              datetime(2010, 1, 1, 0, 15),
              datetime(2010, 1, 1, 0, 30),
              900,
              1
          )
          # 0   1   2   3   4   5  6  7  8
          # -------- ----------- ----- ---
          # 20 17.5 15 12.5 10 7.5 5 2.5 0
      
  >       linear = spec.linearize_freqs()
  
  sunpy/spectra/tests/test_spectrogram.py:723: 
  _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
  
  self = <sunpy.spectra.spectrogram.LinearTimeSpectrogram object at 0x7f00512982d0>
  delta_freq = 2.5
  
      def linearize_freqs(self, delta_freq=None):
          """Rebin frequencies so that the frequency axis is linear.
      
              Parameters
              ----------
              delta_freq : float
                  Difference between consecutive values on the new frequency axis.
                  Defaults to half of smallest delta in current frequency axis.
                  Compare Nyquist-Shannon sampling theorem.
              """
          if delta_freq is None:
              # Nyquist–Shannon sampling theorem
              delta_freq = _min_delt(self.freq_axis) / 2.
          nsize = (self.freq_axis.max() - self.freq_axis.min()) / delta_freq + 1
  >       new = np.zeros((nsize, self.shape[1]), dtype=self.data.dtype)
  E       TypeError: 'numpy.float64' object cannot be interpreted as an index
  
  sunpy/spectra/spectrogram.py:804: TypeError
  _______________________________ test_linear_view _______________________________
  
      def test_linear_view():
          image = np.random.rand(5, 900)
          spec = LinearTimeSpectrogram(image,
              np.linspace(0, 1 * (image.shape[1] - 1), image.shape[1]),
              np.array([20, 10, 5, 0]),
              datetime(2010, 1, 1, 0, 15),
              datetime(2010, 1, 1, 0, 30),
              900,
              1
          )
      
          linear = _LinearView(spec)
          # assert ((linear.freq_axis[:-1] - linear.freq_axis[1:]) == 2.5).all()
      
          assert (linear[0] == image[0, :]).all()
          assert (linear[1] == image[0, :]).all()
          assert (linear[2] == image[0, :]).all()
          assert (linear[3] == image[1, :]).all()
          assert (linear[4] == image[1, :]).all()
  >       assert (linear[5] == image[1, :]).all()
  
  sunpy/spectra/tests/test_spectrogram.py:756: 
  _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
  sunpy/spectra/spectrogram.py:143: in __getitem__
      return self._find(self.arr, item)
  _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
  
  self = <sunpy.spectra.spectrogram._LinearView object at 0x7f0051601b10>
  arr = <sunpy.spectra.spectrogram.LinearTimeSpectrogram object at 0x7f00516014d0>
  item = 5
  
      def _find(self, arr, item):
          if item < 0:
              item = item % len(self)
          if item >= len(self):
              raise IndexError
      
          freq_offset = item * self.delt
          freq = self.arr.freq_axis[0] - freq_offset
          # The idea is that when we take the biggest delta in the mid points,
          # we do not have to search anything that is between the beginning and
          # the first item that can possibly be that frequency.
          min_mid = max(0, (freq - self.midpoints[0]) // self.max_mp_delt)
  >       for n, mid in enumerate(self.midpoints[min_mid:]):
  E       IndexError: invalid slice
  
  sunpy/spectra/spectrogram.py:137: IndexError
  __________________________ test_linear_view_negative ___________________________
  
      def test_linear_view_negative():
          image = np.random.rand(5, 900)
          spec = LinearTimeSpectrogram(image,
              np.linspace(0, 1 * (image.shape[1] - 1), image.shape[1]),
              np.array([20, 10, 5, 0]),
              datetime(2010, 1, 1, 0, 15),
              datetime(2010, 1, 1, 0, 30),
              900,
              1
          )
      
          linear = _LinearView(spec)
          # assert ((linear.freq_axis[:-1] - linear.freq_axis[1:]) == 2.5).all()
  >       assert (linear[8] == image[3, :]).all()
  
  sunpy/spectra/tests/test_spectrogram.py:792: 
  _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
  sunpy/spectra/spectrogram.py:143: in __getitem__
      return self._find(self.arr, item)
  _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
  
  self = <sunpy.spectra.spectrogram._LinearView object at 0x7f0050a60d10>
  arr = <sunpy.spectra.spectrogram.LinearTimeSpectrogram object at 0x7f0050a606d0>
  item = 8
  
      def _find(self, arr, item):
          if item < 0:
              item = item % len(self)
          if item >= len(self):
              raise IndexError
      
          freq_offset = item * self.delt
          freq = self.arr.freq_axis[0] - freq_offset
          # The idea is that when we take the biggest delta in the mid points,
          # we do not have to search anything that is between the beginning and
          # the first item that can possibly be that frequency.
          min_mid = max(0, (freq - self.midpoints[0]) // self.max_mp_delt)
  >       for n, mid in enumerate(self.midpoints[min_mid:]):
  E       IndexError: invalid slice
  
  sunpy/spectra/spectrogram.py:137: IndexError
  ____________________________ test_linear_view_freqs ____________________________
  
      def test_linear_view_freqs():
          image = np.random.rand(5, 900)
          spec = LinearTimeSpectrogram(image,
              np.linspace(0, 1 * (image.shape[1] - 1), image.shape[1]),
              np.array([20, 10, 5, 0]),
              datetime(2010, 1, 1, 0, 15),
              datetime(2010, 1, 1, 0, 30),
              900,
              1
          )
      
          linear = _LinearView(spec)
          # assert ((linear.freq_axis[:-1] - linear.freq_axis[1:]) == 2.5).all()
      
          assert linear.get_freq(0) == 20
          assert linear.get_freq(1) == 20
          assert linear.get_freq(2) == 20
          assert linear.get_freq(3) == 10
          assert linear.get_freq(4) == 10
  >       assert linear.get_freq(5) == 10
  
  sunpy/spectra/tests/test_spectrogram.py:815: 
  _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
  sunpy/spectra/spectrogram.py:146: in get_freq
      return self._find(self.arr.freq_axis, item)
  _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
  
  self = <sunpy.spectra.spectrogram._LinearView object at 0x7f0050b06150>
  arr = array([20, 10,  5,  0]), item = 5
  
      def _find(self, arr, item):
          if item < 0:
              item = item % len(self)
          if item >= len(self):
              raise IndexError
      
          freq_offset = item * self.delt
          freq = self.arr.freq_axis[0] - freq_offset
          # The idea is that when we take the biggest delta in the mid points,
          # we do not have to search anything that is between the beginning and
          # the first item that can possibly be that frequency.
          min_mid = max(0, (freq - self.midpoints[0]) // self.max_mp_delt)
  >       for n, mid in enumerate(self.midpoints[min_mid:]):
  E       IndexError: invalid slice
  
  sunpy/spectra/spectrogram.py:137: IndexError
  ============ 110 tests deselected by '-knot figure and not online' =============
  = 36 failed, 657 passed, 15 skipped, 110 deselected, 4 error in 27.77 seconds ==
  debian/rules:14: recipe for target 'override_dh_auto_test' failed
  make[1]: *** [override_dh_auto_test] Error 1
  make[1]: Leaving directory '/home/lamby/temp/cdt.20160206205038.UCW69LXJO5/sunpy-0.6.1'
  debian/rules:11: recipe for target 'build' failed
  make: *** [build] Error 2

  [..]

The full build log is attached.


Regards,

-- 
      ,''`.
     : :'  :     Chris Lamb
     `. `'`      lamby at debian.org / chris-lamb.co.uk
       `-
-------------- next part --------------
A non-text attachment was scrubbed...
Name: sunpy.0.6.1-2.unstable.amd64.log.txt.gz
Type: application/octet-stream
Size: 15123 bytes
Desc: not available
URL: <http://lists.alioth.debian.org/pipermail/debian-astro-maintainers/attachments/20160206/7dccc549/attachment-0001.obj>


More information about the Debian-astro-maintainers mailing list