<br><br><div class="gmail_quote">On Tue, Nov 8, 2011 at 4:55 PM, Bruce Southey <span dir="ltr">&lt;<a href="mailto:bsouthey@gmail.com">bsouthey@gmail.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
<u></u>

  
    
    
  
  <div bgcolor="#ffffff" text="#000000"><div><div></div><div class="h5">
    On 11/07/2011 04:52 PM, Ralf Gommers wrote:
    </div></div><blockquote type="cite"><br>
      <br>
      <div class="gmail_quote"><div><div></div><div class="h5">On Mon, Nov 7, 2011 at 10:22 PM, Ralf
        Gommers <span dir="ltr">&lt;<a href="mailto:ralf.gommers@googlemail.com" target="_blank">ralf.gommers@googlemail.com</a>&gt;</span>
        wrote:<br>
        </div></div><blockquote class="gmail_quote" style="margin:0pt 0pt 0pt 0.8ex;border-left:1px solid rgb(204, 204, 204);padding-left:1ex">
          <br>
          <br>
          <div class="gmail_quote"><div><div></div><div class="h5">
            <div>
              <div>On Mon, Nov 7, 2011 at 3:47 AM, Bruce
                Southey <span dir="ltr">&lt;<a href="mailto:bsouthey@gmail.com" target="_blank">bsouthey@gmail.com</a>&gt;</span>
                wrote:<br>
                <blockquote class="gmail_quote" style="margin:0pt 0pt 0pt 0.8ex;border-left:1px solid rgb(204, 204, 204);padding-left:1ex">
                  <div>
                    <div class="h5">On Sun, Nov 6, 2011 at 2:22 AM, Ralf Gommers<br>
                      &lt;<a href="mailto:ralf.gommers@googlemail.com" target="_blank">ralf.gommers@googlemail.com</a>&gt;
                      wrote:<br>
                      &gt;<br>
                      &gt;<br>
                      &gt; On Sun, Nov 6, 2011 at 3:26 AM, Bruce Southey
                      &lt;<a href="mailto:bsouthey@gmail.com" target="_blank">bsouthey@gmail.com</a>&gt;
                      wrote:<div>
              <div>
                <blockquote class="gmail_quote" style="margin:0pt 0pt 0pt 0.8ex;border-left:1px solid rgb(204, 204, 204);padding-left:1ex">
                  <br>
======================================================================<br>
                  ERROR: adding a dense matrix to a sparse matrix<br>
                  <div>----------------------------------------------------------------------<br>
                    Traceback (most recent call last):<br>
                  </div>
                   File
&quot;/usr/local/lib/python2.4/site-packages/scipy/sparse/tests/test_base.py&quot;,<br>
                  line 519, in test_add_dense<br>
                     sum1 = self.dat + self.datsp<br>
                   File
                  &quot;/usr/local/lib/python2.4/site-packages/scipy/sparse/dok.py&quot;,<br>
                  line 133, in __getitem__<br>
                     raise TypeError(&#39;index must be a pair of integers
                  or slices&#39;)<br>
                  TypeError: index must be a pair of integers or slices<br>
                  <br>
======================================================================<br>
                  ERROR: test_matmat_sparse (test_base.TestDOK)<br>
                  <div>----------------------------------------------------------------------<br>
                    Traceback (most recent call last):<br>
                  </div>
                   File
&quot;/usr/local/lib/python2.4/site-packages/scipy/sparse/tests/test_base.py&quot;,<br>
                  line 417, in test_matmat_sparse<br>
                     assert_array_almost_equal( a2*bsp, a*b)<br>
                   File
                  &quot;/usr/local/lib/python2.4/site-packages/scipy/sparse/dok.py&quot;,<br>
                  line 133, in __getitem__<br>
                     raise TypeError(&#39;index must be a pair of integers
                  or slices&#39;)<br>
                  TypeError: index must be a pair of integers or slices<br>
                  <br>
======================================================================<br>
                  ERROR: test_radd (test_base.TestDOK)<br>
                  <div>----------------------------------------------------------------------<br>
                    Traceback (most recent call last):<br>
                  </div>
                   File
&quot;/usr/local/lib/python2.4/site-packages/scipy/sparse/tests/test_base.py&quot;,<br>
                  line 279, in test_radd<br>
                     c = a + b<br>
                   File
                  &quot;/usr/local/lib/python2.4/site-packages/scipy/sparse/dok.py&quot;,<br>
                  line 133, in __getitem__<br>
                     raise TypeError(&#39;index must be a pair of integers
                  or slices&#39;)<br>
                  TypeError: index must be a pair of integers or slices<br>
                  <br>
======================================================================<br>
                  ERROR: test_rsub (test_base.TestDOK)<br>
                  <div>----------------------------------------------------------------------<br>
                    Traceback (most recent call last):<br>
                  </div>
                   File
&quot;/usr/local/lib/python2.4/site-packages/scipy/sparse/tests/test_base.py&quot;,<br>
                  line 290, in test_rsub<br>
                     assert_array_equal((self.dat -
                  self.datsp),[[0,0,0,0],[0,0,0,0],[0,0,0,0]])<br>
                   File
                  &quot;/usr/local/lib/python2.4/site-packages/scipy/sparse/dok.py&quot;,<br>
                  line 133, in __getitem__<br>
                     raise TypeError(&#39;index must be a pair of integers
                  or slices&#39;)<br>
                  TypeError: index must be a pair of integers or slices<br>
                  <br>
======================================================================<br>
                  ERROR: subtracting a dense matrix to/from a sparse
                  matrix<br>
                  <div>----------------------------------------------------------------------<br>
                    Traceback (most recent call last):<br>
                  </div>
                   File
&quot;/usr/local/lib/python2.4/site-packages/scipy/sparse/tests/test_base.py&quot;,<br>
                  line 527, in test_sub_dense<br>
                     sum1 = 3*self.dat - self.datsp<br>
                   File
                  &quot;/usr/local/lib/python2.4/site-packages/scipy/sparse/dok.py&quot;,<br>
                  line 133, in __getitem__<br>
                     raise TypeError(&#39;index must be a pair of integers
                  or slices&#39;)<br>
                  TypeError: index must be a pair of integers or slices<br>
                  <br>
                </blockquote>
              </div>
            </div>
            <div>These are odd. A dok_matrix can&#39;t be indexed with a
              single integer, which causes errors when we do ``obj +
              dokmatrix`` when obj is an ndarray or matrix. It looks to
              me like indexing with single integers should trigger a
              conversion to a dense array or something like that. </div>
          </div></div></blockquote></div></div></div></div><div></div></div>
        </blockquote><div><div></div><div class="h5">
        <div><br>
          dok_matrix.__radd__ (which has the todense() call) is called
          for Python &gt;= 2.5, but not for 2.4. I can&#39;t find anything
          related to this in the &quot;what&#39;s new in python 2.5&quot; doc. <br>
          <br>
          Ralf<br>
          <br>
          <br>
        </div>
        <blockquote class="gmail_quote" style="margin:0pt 0pt 0pt 0.8ex;border-left:1px solid rgb(204, 204, 204);padding-left:1ex">
          <div class="gmail_quote">
            <div>Also I don&#39;t understand why it doesn&#39;t fail for other
              Python versions. Are numpy arrays somehow aware of sparse
              matrix details?<br>
              <br>
              If anyone with more knowledge of how this sparse matrix
              arithmetic is supposed to work can explain or have a look,
              that would be great.<br>
              <font color="#888888"><br>
                Ralf<br>
                <br>
              </font></div>
          </div>
        </blockquote>
      </div></div></div>
      <br>
      <pre><fieldset></fieldset>
_______________________________________________
SciPy-Dev mailing list
<a href="mailto:SciPy-Dev@scipy.org" target="_blank">SciPy-Dev@scipy.org</a>
<a href="http://mail.scipy.org/mailman/listinfo/scipy-dev" target="_blank">http://mail.scipy.org/mailman/listinfo/scipy-dev</a>
</pre>
    </blockquote>
    Actually this Python 2.4 error has been here since 0.7.0 when the
    dok format was introduced. But means there are no or very few
    Python2.4 scipy users or they have some way around this (calling
    todense() ) and other issues. <br>
    <br>
    I am totally ignorant here and probably why I gave up assuming I
    looked at this before (as I usually try to find the cause of the
    failure). Python 2.4 appears to call __getitem__ and but not
    __radd__ whereas Python2.5 does not call __getitem__ but calls
    __radd__. So all I can understand is that I can reproduce the error
    under 0.7.0 as follows.<br>
    <br>
    Perhaps a bug should be filed and perhaps set to won&#39;t fix if
    Python2.4 support will be dropped &#39;soon&#39; because this apparently has
    not been previously been reported.<br></div></blockquote><div><br>Since the problem can be worked around and has been present for a long time, I&#39;m okay with marking it knownfail for 2.4. <br><br>Not sure about &quot;soon&quot; though, every time it comes up someone claims to need support for several more years.<br>
<br>Ralf<br><br></div><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;"><div bgcolor="#ffffff" text="#000000">
    <br>
    Bruce<br>
    <br>
    <br>
    $ python2.4<br>
    Python 2.4.6 (#1, Sep 13 2010, 15:54:12) <br>
    [GCC 4.4.4 20100630 (Red Hat 4.4.4-10)] on linux2<br>
    Type &quot;help&quot;, &quot;copyright&quot;, &quot;credits&quot; or &quot;license&quot; for more
    information.<br>
    &gt;&gt;&gt; import numpy as np<br>
    &gt;&gt;&gt; import scipy as sp<br>
    &gt;&gt;&gt; import scipy.sparse as sparse<br>
    &gt;&gt;&gt; print &#39;Numpy version=&#39;,np.__version__<br>
    Numpy version= 2.0.0.dev-93236a2<br>
    &gt;&gt;&gt; print &#39;Scipy version=&#39;,sp.__version__<br>
    Scipy version= 0.7.0<br>
    &gt;&gt;&gt; dmat= np.matrix([[1,0,0,2],[3,0,1,0],[0,2,0,0]],&#39;d&#39;)<br>
    &gt;&gt;&gt; print &#39;dense matrix\n&#39;, dmat<br>
    dense matrix<br>
    [[ 1.  0.  0.  2.]<br>
     [ 3.  0.  1.  0.]<br>
     [ 0.  2.  0.  0.]]<br>
    &gt;&gt;&gt; smat=sparse.dok_matrix(dmat)<br>
    &gt;&gt;&gt; print &#39;Sparse dok matrix\n&#39;, smat<br>
    Sparse dok matrix<br>
      (1, 2)        1.0<br>
      (0, 3)        2.0<br>
      (0, 0)        1.0<br>
      (1, 0)        3.0<br>
      (2, 1)        2.0<br>
    &gt;&gt;&gt; sumd=dmat+smat.todense() # work around<br>
    &gt;&gt;&gt; print &#39;use todense\n&#39;, sumd<br>
    use todense<br>
    [[ 2.  0.  0.  4.]<br>
     [ 6.  0.  2.  0.]<br>
     [ 0.  4.  0.  0.]]<br>
    &gt;&gt;&gt; sum1=dmat+smat<div class="im"><br>
    Traceback (most recent call last):<br></div>
      File &quot;&lt;stdin&gt;&quot;, line 1, in ?<br>
      File &quot;/usr/local/lib/python2.4/site-packages/scipy/sparse/dok.py&quot;,
    line 119, in __getitem__<div class="im"><br>
        raise TypeError(&#39;index must be a pair of integers or slices&#39;)<br>
    TypeError: index must be a pair of integers or slices<br>
    <br></div></div></blockquote></div><br>