pyodesys icon indicating copy to clipboard operation
pyodesys copied to clipboard

new installation, but don't pass the test

Open WuShichao opened this issue 5 years ago • 6 comments

============================= test session starts ============================== platform linux2 -- Python 2.7.15, pytest-4.4.2, py-1.8.0, pluggy-0.11.0 rootdir: /home/nightwing collected 266 items

anaconda3/envs/pyodesys/lib/python2.7/site-packages/pyodesys/native/tests/test_cvode.py F [ 0%] FFFFFFFFFFFFFFFFFFFxFFFFFFFFFFFF [ 12%] anaconda3/envs/pyodesys/lib/python2.7/site-packages/pyodesys/native/tests/test_gsl.py F [ 12%] FFFFFFFFFFFFFF [ 18%] anaconda3/envs/pyodesys/lib/python2.7/site-packages/pyodesys/native/tests/test_odeint.py F [ 18%] FFFFFFFFFFx [ 22%] anaconda3/envs/pyodesys/lib/python2.7/site-packages/pyodesys/tests/test_core.py F [ 22%] FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFsssF [ 35%] anaconda3/envs/pyodesys/lib/python2.7/site-packages/pyodesys/tests/test_plotting.py F [ 36%] F [ 36%] anaconda3/envs/pyodesys/lib/python2.7/site-packages/pyodesys/tests/test_results.py F [ 36%] FF [ 37%] anaconda3/envs/pyodesys/lib/python2.7/site-packages/pyodesys/tests/test_robertson.py F [ 37%] FFFFFFFFF [ 41%] anaconda3/envs/pyodesys/lib/python2.7/site-packages/pyodesys/tests/test_symbolic.py . [ 41%] F.FFFFFFF.FFFFFF..FF....FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF [ 68%] FFFFFFFFFFFFFFFF.FFFFFF..FFFFF.FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF.. [ 95%] ssFF..FFF [ 99%] anaconda3/envs/pyodesys/lib/python2.7/site-packages/pyodesys/tests/test_util.py F [ 99%] . [100%]

=================================== FAILURES =================================== ________________________________ test_NativeSys ________________________________

(PS: too long to be put here.....)

== 241 failed, 18 passed, 5 skipped, 2 xfailed, 17 warnings in 75.23 seconds ===

WuShichao avatar May 13 '19 03:05 WuShichao

Hi @WuShichao, thank you for reporting this. What's the output of pytest --pyargs pyodesys -x? Also for Python 2 I would probably recommend python2 -m pip install 'pyodesys<=0.12' You can also look at https://github.com/bjodah/pyodesys/blob/master/scripts/environment/Dockerfile for an example of an environment which should pass all tests.

bjodah avatar May 13 '19 07:05 bjodah

@bjodah So should I install sundials-2.7.0.tar.gz and boost_1_65_0.tar.bz2 first, and then 'python2 -m pip install 'pyodesys<=0.12'?

WuShichao avatar May 13 '19 12:05 WuShichao

@bjodah the output of pytest --pyargs pyodesys -x ============================= test session starts ============================== platform linux2 -- Python 2.7.15, pytest-4.4.2, py-1.8.0, pluggy-0.11.0 rootdir: /home/nightwing collected 266 items

anaconda3/envs/pyodesys/lib/python2.7/site-packages/pyodesys/native/tests/test_cvode.py F [ 0%]

=================================== FAILURES =================================== ________________________________ test_NativeSys ________________________________

@pytest.mark.veryslow
@requires('pycvodes')
def test_NativeSys():
  _test_NativeSys(NativeSys, integrator='cvode')

anaconda3/envs/pyodesys/lib/python2.7/site-packages/pyodesys/native/tests/test_cvode.py:27:


anaconda3/envs/pyodesys/lib/python2.7/site-packages/pyodesys/native/tests/_tests.py:21: in _test_NativeSys native = NativeSys.from_callback(vdp_f, 2, 1) anaconda3/envs/pyodesys/lib/python2.7/site-packages/pyodesys/symbolic.py:443: in from_callback exprs = _ensure_4args(rhs)(x, _y, _p, be)


func = <function vdp_f at 0x7fdba7807f50>

def _ensure_4args(func):
    """ Conditionally wrap function to ensure 4 input arguments

    Parameters
    ----------
    func: callable
        with two, three or four positional arguments

    Returns
    -------
    callable which possibly ignores 0, 1 or 2 positional arguments

    """
    if func is None:
        return None
    if isinstance(func, _Blessed):  # inspect on __call__ is a hassle...
        return func

    self_arg = 1 if inspect.ismethod(func) else 0
  args = inspect.getfullargspec(func)[0]

E AttributeError: 'module' object has no attribute 'getfullargspec'

anaconda3/envs/pyodesys/lib/python2.7/site-packages/pyodesys/util.py:139: AttributeError =========================== 1 failed in 4.75 seconds ===========================

WuShichao avatar May 13 '19 12:05 WuShichao

You can install sundials-3.2.1 if you're compiling from source. 2.7.0 should also work. (this is for pycvodes). Any recent boost version should do, again, if you're compiling from source I would go with latest (1.70.0). For GSL any recent version should do (say >2).

For python2 I would then recommend:

$ python2 -m pip install --upgrade "pyodeint>=0.9.8,<0.10.0" "pygslodeiv2>=0.8.4,<0.9.0" "pycvodes>=0.10.16,<0.11.0" "pycodeexport>=0.1.2,<0.2.0" "pycompilation>=0.4.3,<0.5.0" "pyodesys>=0.11.19,<0.12.0"

If you're using Python 3.5+ you should be able to install latest versions of everything.

bjodah avatar May 13 '19 12:05 bjodah

@bjodah Thanks, so you mean if I don't install sundials/boost from source or apt-repo, pyodesys will not work?

WuShichao avatar May 13 '19 12:05 WuShichao

pyodesys will work (with scipy backend), but the pyodesys.native subpackage require one or more of pycvodes/pygslodeiv2/pyodeint (each requiring sundials/GSL/boost respectively).

The pyodesys.native subpackage generates C++ code and compiles on the fly for fast integration of systems of modest size (say <100 variables).

bjodah avatar May 13 '19 14:05 bjodah