From: Daniel W. <dan...@ni...> - 2007-02-02 16:02:21
|
Thanks for the help. I implemented everything you suggested. I hadn't tested on a system without Numeric, which was a little silly. On Feb 1, 2007, at 6:13 PM, Dominique Orban wrote: > Daniel, > > I just installed the latest NumPy 1.0.1 and downloaded PySparse from > cvs. I don't have the old Numeric installed, and testing PySparse > caused a number of problems. Here are a few dirty changes to make > things work. I suspect it would be best to have a config file (a la > Matplotlib) while users are still transitioning from Numeric to NumPy, > in order to know which they are currently using. I changed the setup so that it automatically installs using numpy if available otherwise it falls back on Numeric. I haven't setup a config file, I don't like that idea, in a sense the setup.py is the config file. Probably should just have a numerix.py file in Lib/ that is overwritten by setup.py on install. In the tests you would have "from pysparse import numerix" and use numerix instead of numpy or Numeric. Anyway, Numeric will slowly become obsolete so I won't bother. > In the meantime, here > are the difficulties I came across: > > On line 19 of Src/ll_mat.c, there is an #include > Numeric/array_object.h which breaks things > when using NumPy and the old Numeric is not installed. I commented it > out and could compile the everything. Got it. > In test_superlu.py, replace > import Numeric > with > import numpy as Numeric > Of course, it would be better to import the appropriate "numerix" > according to > local settings. Done. > In test_sparray.py, there is an error at the top, replace > from pysparse import sparray > with > from pysparse.sparray import sparray > After that I still get the error: > > testgetitem (__main__.test_sparray) ... ERROR > testinit (__main__.test_sparray) ... ok > testsetitem (__main__.test_sparray) ... ok > > ====================================================================== > ERROR: testgetitem (__main__.test_sparray) > ---------------------------------------------------------------------- > Traceback (most recent call last): > File "test_sparray.py", line 30, in testgetitem > self.assertEqual(a[:,3], map(float, (1,2,3,4,5))) > File "/usr/lib/python2.3/unittest.py", line 301, in failUnlessEqual > if not first == second: > ValueError: The truth value of an array with more than one element is > ambiguous. Use a.any() or a.all() > > ---------------------------------------------------------------------- > Ran 3 tests in 0.027s > > FAILED (errors=1) > > I am not familiar with the unittest module, but I guess the test > class should > have a custom assertEqual method. It's using assertEqual, just that unittest is doing a "==" on a numpy array and a tuple of floats, which numpy doesn't like. Anyway, I fixed it, so should be good now. > In test_spmatrix.py, an error occurs from spmatrix_utils.py, saying > that > pysparse_version doesn't exist. Indeed it doesn't. So in > spmatrix_utils.py, I > commented out line 3 (which imports the fictitious module) and > replace line 66 > with > > comment = 'generated using pysparse-%s\n' % (pysparse__version__, ) Done. > Next, I changed line 6 of test_spmatrix.py to read > > import numpy as Numeric, numpy.oldnumeric.random_array as RandomArray > > and line 119 to read > > import numpy as Numeric > > After that, test_spmatrix.py ran just fine. Sorry if the changes above > look dirty. This is just to let you know where the current tests > break. Done. Once again, thanks for your feedback. > > Dominique > > > On 1/4/07, Daniel Wheeler <dan...@ni...> wrote: >> >> On Jan 3, 2007, at 4:37 AM, Roman Geus wrote: >> >> > Hello Daniel >> > >> > Thanks a lot for your contribution. Judging from the description >> your >> > changes make much sense. I have not been using pysparse myself >> for a >> > long time so cannot be the person to test new versions. >> >> Hi Roman, >> >> Hope all is well. No problem about testing. We still use it a lot >> with FiPy. >> I will release a new version of pysparse ASAP and give it a version >> number >> of 1.0 since we have changed the namespace and it has now become >> dependent >> on a new array package. >> >> Cheers >> >> > >> > Happy new year! >> > -- Roman >> > >> > 2007/1/2, Daniel Wheeler <dan...@ni...>: >> >> >> >> The changes for compatibility with numpy have now been merged back >> >> onto >> >> HEAD. I will do a new release in the near future. >> >> >> >> Cheers >> >> >> >> >> >> On Dec 21, 2006, at 12:36 PM, Daniel Wheeler wrote: >> >> >> >> Numeric is dying slowly and being replaced by numpy. >> >> With this in mind, I have updated pysparse to use the new numpy, >> >> this is all >> >> on a branch at the moment. >> >> It was straightforward matter of changing the imported header >> >> files from >> >> Numeric's to numpy's. I am sending this email >> >> to check to see if everybody is happy with the changes that have >> >> been made. >> >> If there are no objections, I can merge back >> >> onto the trunk and maybe make a new release. Changes and issues >> >> are as >> >> follows: >> >> >> >> - Created a C macro defined from setup.py that either imports >> >> numpy's or >> >> Numeric's headers depending >> >> on the flag "use_numpy". The C macro was confusing me for >> >> awhile, but I >> >> think it works >> >> now. >> >> >> >> - I have changed the name space of itsolvers, spmatrix, jdsym >> >> etc to all >> >> lie under pysparse. So, instead of >> >> >> >> >>> import spmatrix >> >> >> >> you do >> >> >> >> >>> from pysparse import spmatrix >> >> >> >> This change stops site-packages from being polluted. At the >> >> moment >> >> the branch version is using pysparse_numpy >> >> or pysparse_Numeric as the pysparse name space for testing >> >> purposes. >> >> >> >> - The branch can be checked out via: >> >> >> >> $ cvs -d:ext:ui...@py...:/cvsroot/pysparse >> >> co -r >> >> branch-numpy pysparse >> >> >> >> - I have updated the Examples and Test directories to >> import from >> >> pysparse. They all seem to work apart from stuff that was broken >> >> already. >> >> >> >> - I got rid of pysparse_version.py and replaced it with an >> >> __init__.py >> >> in Lib, which does the imports and holds a __version__ variable. >> >> So you can now do: >> >> >> >> >>> import pysparse_numpy >> >> >>> print pysparse_numpy.__version__ >> >> 0.34.032-numpy >> >> >> >> - I think the default flag should be use_numpy=True since most >> >> users >> >> will now be getting numpy rather than Numeric. This could >> >> be automated with a try and except, which tests for the >> >> availability >> >> of numpy or Numeric. What do you think? >> >> >> >> - You can diff from your working copy of pysparse with "cvs >> >> diff -c -r >> >> branch-numpy" to check the changes. >> >> >> >> - Is it worth bumping the version number of pysparse to 1.0, >> >> since we >> >> will be breaking the name space (interface change)? >> >> >> >> - If you are compiling against numpy, the numpy header files >> >> don't seem >> >> to be going into the right place at least on my two computers. >> >> I haven't resolved this problem yet. For now, I was just >> >> copying the >> >> .h files from .../site-packages/python/numpy/core/include/ >> >> to Include/Lib/numpy >> >> in my working copy of pysparse. >> >> >> >> Merry Christmas! >> >> >> >> >> >> -- >> >> Daniel Wheeler >> >> >> >> >> --------------------------------------------------------------------- >> >> ---- >> >> Take Surveys. Earn Cash. Influence the Future of IT >> >> Join SourceForge.net's Techsay panel and you'll get the chance to >> >> share your >> >> opinions on IT & business topics through brief surveys - and earn >> >> cash >> >> http://www.techsay.com/default.php? >> >> >> page=join.php&p=sourceforge&CID=DEVDEV_______________________________ >> >> ________________ >> >> Pysparse-users mailing list >> >> Pys...@li... >> >> https://lists.sourceforge.net/lists/listinfo/pysparse-users >> >> >> >> >> >> -- >> >> >> >> Daniel Wheeler >> >> >> >> >> >> >> --------------------------------------------------------------------- >> >> ---- >> >> Take Surveys. Earn Cash. Influence the Future of IT >> >> Join SourceForge.net's Techsay panel and you'll get the chance to >> >> share your >> >> opinions on IT & business topics through brief surveys - and earn >> >> cash >> >> http://www.techsay.com/default.php? >> >> page=join.php&p=sourceforge&CID=DEVDEV >> >> >> >> _______________________________________________ >> >> Pysparse-users mailing list >> >> Pys...@li... >> >> https://lists.sourceforge.net/lists/listinfo/pysparse-users >> >> -- >> Daniel Wheeler >> >> >> >> -- Daniel Wheeler |