pymc-devs/pymc — Issue #72: Revision 1486 Testsuite Fails
Author: cowingzitron
Created: 2011-11-30 21:40:08+00:00
State: open

Hello,

I just installed Revision 1486, straight from the svn. I had two difficulties, which I'll explain after detailing my set up. I'll give full detail because I get the sense from the main webpage that that's what you want people to do when they get errors from the testsuite.

I am using a Linux cluster, running CentOS-5.3, on Intel 64 processors. I can alternately use different nodes on my system which have AMD64 processors. My default compilers are GCC version 4.6.2, though once again, I have options: if need be I can use either PGI or Intel compilers. I am using the Enthought Python Distribution (EPD), version 7.1-2, built for RHEL5_x86-64. It may be of importance that EPD was built using GCC-4.1.2, though that has never caused a problem for me before. In fact I have never had any issue with EPD installing a package before. It is interesting to note that while pymc did not come prebuilt with my free version of EPD, they do offer a prebuilt copy for paid users. This, I suspect, relates directly to my first issue.

My first issue is that when running setup.py, I got warning flags that numpy could not find its blas and lapack libraries. This is because EPD ships with the Intel MKL libraries, but not the header files, and so while the numerical routines in numpy/scipy work just fine, one cannot build new libraries against the built-in MKL. But, as before, I have options: I have access to both a system-wide MKL, and a system-wide copy of the ACML, with which I can try to build pymc, if you think that is necessary. If it's really necessary, I can build ATLAS + Netlib lapack, though I really don't want to go through all that trouble. At any rate, I don't know if it would have a bad effect on the interaction with numpy/scipy to use another lapack.

But, ignoring those warnings, I was able to build and install the pymc module, and load it into the interpreter. (I don't know if it's important, but it took a good minute and thirty seconds to load the module.) My second issue is that when I ran the testsuite, I got 30 errors and 2 fails. The errors all stem from my accessing this cluster remotely via SSH, and not having access to an X Windows system. Perhaps a detection mechanism for such should be built in, to avoid such errors, but that's not a big deal. The two fails, on the other hand, are assertion errors that are not easy for me to decipher, as I am completely unfamiliar with pymc. These fails could, of course, be trivial and I simply don't realize that because I'm new to pymc, but your webpage requests that one post it if tests fail, hence this long-ass post.

The output for the initialization and summary of the testsuite, as well as the output for the fails (but not the errors), is below.

>>> import pymc
>>> pymc.test()
Running unit tests for pymc.tests
NumPy version 1.6.1
NumPy is installed in /home/ccowingzitron/local_gcc/opt/epd-7.1-2-rh5-x86_64/lib/python2.7/site-packages/numpy
Python version 2.7.2 |EPD 7.1-2 (64-bit)| (default, Jul 3 2011, 15:17:51) [GCC 4.1.2 20080704 (Red Hat 4.1.2-44)]
nose version 1.0.0
..FE.E.....EF..E..........Some objects from the database have not been assigned a getfunc set(['DiscreteMetropolis_s_adaptive_scale_factor', 'Metropolis_e_adaptive_scale_factor', 'Metropolis_l_adaptive_scale_factor'])
.Some objects from the database have not been assigned a getfunc set(['DiscreteMetropolis_s_adaptive_scale_factor', 'Metropolis_e_adaptive_scale_factor', 'Metropolis_l_adaptive_scale_factor'])
...............S....................E..E..E.E.E.E..EE...E.EE...E..EEE...EEE.........E..E../home/ccowingzitron/local_gcc/opt/epd-7.1-2-rh5-x86_64/lib/python2.7/site-packages/pymc/distributions.py:2201: RuntimeWarning: divide by zero encountered in log
return np.sum(np.log(2.) + np.log(pymc.utils.normcdf((x-mu)*np.sqrt(tau)*alpha))) + normal_like(x,mu,tau)
.E.E.E...E..E..E.........................

======================================================================
FAIL: Failure: AssertionError ()
----------------------------------------------------------------------
Traceback (most recent call last):
File "/home/ccowingzitron/local_gcc/opt/epd-7.1-2-rh5-x86_64/lib/python2.7/site-packages/nose/loader.py", line 390, in loadTestsFromName
addr.filename, addr.module)
File "/home/ccowingzitron/local_gcc/opt/epd-7.1-2-rh5-x86_64/lib/python2.7/site-packages/nose/importer.py", line 39, in importFromPath
return self.importFromDir(dir_path, fqname)
File "/home/ccowingzitron/local_gcc/opt/epd-7.1-2-rh5-x86_64/lib/python2.7/site-packages/nose/importer.py", line 86, in importFromDir
mod = load_module(part_fqname, fh, filename, desc)
File "/home/ccowingzitron/local_gcc/opt/epd-7.1-2-rh5-x86_64/lib/python2.7/site-packages/pymc/tests/test_LazyFunction.py", line 98, in
assert(L.get_cached_counts()[1,cur_frame] == C.counter.get_count())
AssertionError

======================================================================
FAIL: test (pymc.tests.test_container.test_Container)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/home/ccowingzitron/local_gcc/opt/epd-7.1-2-rh5-x86_64/lib/python2.7/site-packages/pymc/tests/test_container.py", line 73, in test
assert(D[1,i] is 1.)
AssertionError

----------------------------------------------------------------------
Ran 158 tests in 10.751s

FAILED (SKIP=1, errors=30, failures=2)

I'd really like to use pymc, for several reasons: it has a very good reputation; it is well developed; it does everything I need it to do (I think); based upon the manuals it seems easier to use than JAGS/OpenBUGS; and (this initial difficulty aside) it seems easier to install than other MCMC packages, since it doesn't require auxiliary installs. As such, I would be very grateful if you could help me resolve this, either by actually fixing something, or by simply pointing out that I'm a moron who f'ed up an easy step :-)

Thanks in advance,

-- Chris Cowing-Zitron