kutaslab / fitgrid

Multichannel event-related time-series regression modeling for EEG, MEG, and sensor array data
https://kutaslab.github.io/fitgrid
BSD 3-Clause "New" or "Revised" License
8 stars 4 forks source link

[JOSS] Running tests and building docs #210

Closed sappelhoff closed 3 years ago

sappelhoff commented 3 years ago

(related to https://github.com/openjournals/joss-reviews/issues/3293)

Thanks for all your changes @turbach. I have stumbled over a (probably small) thing:

I installed fitgrid according to https://kutaslab.github.io/fitgrid/installation.html#fitgrid-stable-release, using conda with -c conda-forge

I then followed the CID script and installed test dependencies:

https://github.com/kutaslab/fitgrid/blob/5e917e6b149631006b63a654e28ff3a7900effbd/.github/workflows/fitgrid-cid.yml#L156

and docs dependencies:

https://github.com/kutaslab/fitgrid/blob/5e917e6b149631006b63a654e28ff3a7900effbd/.github/workflows/fitgrid-cid.yml#L169

When running pytest and make -C docs html I frequently got the following error:

rpy2.robjects.packages.PackageNotInstalledError: The R package "lmerTest" is not installed.

even after installing it via conda install -c conda-forge r-lmertest, I got a different error for the tests and for building the docs:

AttributeError: module 'rpy2.robjects.pandas2ri' has no attribute 'ri2py'

Is there (1) a real issue here, or (2) did I do something wrong?. In the case of (2): It'd be good to improve the docs for contributors on which additional packages to install to properly run the tests and build the docs.

sappelhoff commented 3 years ago

one more thing: Running the test and docs build (or one of the two) downloaded some data, which are not git-ignored, and these show up in the git diff. A potential contributor may be confused by that and/or accidentally commit that data. If you can think of a way on how to avoid this (docs, better .gitignore, ...), that'd be great I think.

turbach commented 3 years ago

@sappelhoff right, we don't want sample data committed, the downloads will be gitignored in the next patch release.

turbach commented 3 years ago

@sappelhoff thanks for the dev environment test drive. Your approach is generally sound and along the lines of the suggestions in the How to contribute docs. I don't think it's a serious issue tho to diagnose I'd probably want to look at your .condarc, an MRE that includes the conda activate ... commands and a conda list dump to see what version of what got installed from which channel into the environment that was active for the pytest and sphinx docs build. I'm adding a bug report .github/ISSUE_TEMPLATE to the next fitgrid patch release to help spell this out.

But. All of this is moot at the moment because ...

While I was out last week, mamba 0.15.0 dropped and changed the semantics of strict channel priority.

I expect this is a breaking change for the mamba installation procedures in the current fitgrid v0.5.1 docs and is definitely a breaking change for our CI workflow and I guess others b.c. of mamba-org/boa#165. Apparently fixes are in the works, when the dust settles I'll revise the fitgrid CI and docs accordingly and @ you to wrap up this issue.

sappelhoff commented 3 years ago

Alright, that's unfortunate. Anyhow, below is a bit more information. It's a great idea to add an issue template for this :+1:

As for JOSS, I am going to tick off this item then, as the situation seems to be quite in flux and this is something that's unlikely to be resolved in a matter of days. I'll still leave this issue open for you to resolve as "the dust settles", as you say :-)


Using conda with version `, I am running the following commands in succession from my (clean) condabase` environment:

Then I run (from up to date fitgrid main):

Both commands complatin about lmertest not being installed (see my original post).

So I run:

And that results in the other error reported above (some rpy2 thing).

Click "details" below to see output of conda list from the fg (fitgrid) environment.

BEFORE installing lmertest:

``` # packages in environment at /home/stefanappelhoff/miniconda3/envs/fg: # # Name Version Build Channel _libgcc_mutex 0.1 conda_forge conda-forge _openmp_mutex 4.5 1_gnu conda-forge _r-mutex 1.0.1 anacondar_1 conda-forge abseil-cpp 20210324.2 h9c3ff4c_0 conda-forge alabaster 0.7.12 py_0 conda-forge alsa-lib 1.2.3 h516909a_0 conda-forge appdirs 1.4.4 pyh9f0ad1d_0 conda-forge arrow-cpp 4.0.1 py36h16163aa_4_cpu conda-forge attrs 21.2.0 pyhd8ed1ab_0 conda-forge aws-c-cal 0.5.11 h95a6274_0 conda-forge aws-c-common 0.6.2 h7f98852_0 conda-forge aws-c-event-stream 0.2.7 h3541f99_13 conda-forge aws-c-io 0.10.5 hfb6a706_0 conda-forge aws-checksums 0.1.11 ha31a3da_7 conda-forge aws-sdk-cpp 1.8.186 hb4091e7_3 conda-forge babel 2.9.1 pyh44b312d_0 conda-forge binutils_impl_linux-64 2.36.1 h193b22a_1 conda-forge binutils_linux-64 2.36 hf3e587d_32 conda-forge black 21.5b2 pyhd8ed1ab_0 conda-forge blosc 1.21.0 h9c3ff4c_0 conda-forge brotlipy 0.7.0 py36h8f6f2f9_1001 conda-forge bwidget 1.9.14 ha770c72_0 conda-forge bzip2 1.0.8 h7f98852_4 conda-forge c-ares 1.17.1 h7f98852_1 conda-forge ca-certificates 2021.5.30 ha878542_0 conda-forge cairo 1.16.0 h6cf1ce9_1008 conda-forge certifi 2021.5.30 py36h5fab9bb_0 conda-forge cffi 1.14.6 py36hc120d54_0 conda-forge chardet 4.0.0 py36h5fab9bb_1 conda-forge charset-normalizer 2.0.0 pyhd8ed1ab_0 conda-forge click 8.0.1 py36h5fab9bb_0 conda-forge codecov 2.1.11 pyhd3deb0d_0 conda-forge colorama 0.4.4 pyh9f0ad1d_0 conda-forge coverage 5.5 py36h8f6f2f9_0 conda-forge cryptography 3.4.7 py36hb60f036_0 conda-forge curl 7.77.0 hea6ffbf_0 conda-forge cycler 0.10.0 py_2 conda-forge dataclasses 0.8 pyh787bdff_0 conda-forge dbus 1.13.6 h48d8840_2 conda-forge docutils 0.16 py36h5fab9bb_3 conda-forge expat 2.4.1 h9c3ff4c_0 conda-forge fitgrid 0.5.0 py36_geadf3583_0 kutaslab font-ttf-dejavu-sans-mono 2.37 hab24e00_0 conda-forge font-ttf-inconsolata 3.000 h77eed37_0 conda-forge font-ttf-source-code-pro 2.038 h77eed37_0 conda-forge font-ttf-ubuntu 0.83 hab24e00_0 conda-forge fontconfig 2.13.1 hba837de_1005 conda-forge fonts-conda-ecosystem 1 0 conda-forge fonts-conda-forge 1 0 conda-forge freetype 2.10.4 h0708190_1 conda-forge fribidi 1.0.10 h36c2ea0_0 conda-forge gcc_impl_linux-64 9.3.0 h70c0ae5_19 conda-forge gcc_linux-64 9.3.0 hf25ea35_32 conda-forge gettext 0.19.8.1 h0b5b191_1005 conda-forge gflags 2.2.2 he1b5a44_1004 conda-forge gfortran_impl_linux-64 9.3.0 hc4a2995_19 conda-forge gfortran_linux-64 9.3.0 hdc58fab_32 conda-forge glib 2.68.3 h9c3ff4c_0 conda-forge glib-tools 2.68.3 h9c3ff4c_0 conda-forge glog 0.5.0 h48cff8f_0 conda-forge graphite2 1.3.13 h58526e2_1001 conda-forge grpc-cpp 1.38.1 h36ce80c_0 conda-forge gsl 2.6 he838d99_2 conda-forge gst-plugins-base 1.18.4 hf529b03_2 conda-forge gstreamer 1.18.4 h76c114f_2 conda-forge gxx_impl_linux-64 9.3.0 hd87eabc_19 conda-forge gxx_linux-64 9.3.0 h3fbe746_32 conda-forge harfbuzz 2.8.2 h83ec7ef_0 conda-forge hdf5 1.10.6 nompi_h6a2412b_1114 conda-forge icu 68.1 h58526e2_0 conda-forge idna 3.1 pyhd3deb0d_0 conda-forge imagesize 1.2.0 py_0 conda-forge importlib-metadata 4.6.1 py36h5fab9bb_0 conda-forge importlib_metadata 4.6.1 hd8ed1ab_0 conda-forge iniconfig 1.1.1 pyh9f0ad1d_0 conda-forge jbig 2.1 h7f98852_2003 conda-forge jinja2 3.0.1 pyhd8ed1ab_0 conda-forge joblib 1.0.1 pyhd8ed1ab_0 conda-forge jpeg 9d h36c2ea0_0 conda-forge kernel-headers_linux-64 2.6.32 h77966d4_13 conda-forge kiwisolver 1.3.1 py36h605e78d_1 conda-forge krb5 1.19.1 hcc1bbae_0 conda-forge lcms2 2.12 hddcbb42_0 conda-forge ld_impl_linux-64 2.36.1 hea4e1c9_1 conda-forge lerc 2.2.1 h9c3ff4c_0 conda-forge libblas 3.9.0 9_openblas conda-forge libbrotlicommon 1.0.9 h7f98852_5 conda-forge libbrotlidec 1.0.9 h7f98852_5 conda-forge libbrotlienc 1.0.9 h7f98852_5 conda-forge libcblas 3.9.0 9_openblas conda-forge libclang 11.1.0 default_ha53f305_1 conda-forge libcurl 7.77.0 h2574ce0_0 conda-forge libdeflate 1.7 h7f98852_5 conda-forge libedit 3.1.20191231 he28a2e2_2 conda-forge libev 4.33 h516909a_1 conda-forge libevent 2.1.10 hcdb4288_3 conda-forge libffi 3.3 h58526e2_2 conda-forge libgcc-devel_linux-64 9.3.0 h7864c58_19 conda-forge libgcc-ng 9.3.0 h2828fa1_19 conda-forge libgfortran-ng 9.3.0 hff62375_19 conda-forge libgfortran5 9.3.0 hff62375_19 conda-forge libglib 2.68.3 h3e27bee_0 conda-forge libgomp 9.3.0 h2828fa1_19 conda-forge libiconv 1.16 h516909a_0 conda-forge liblapack 3.9.0 9_openblas conda-forge libllvm11 11.1.0 hf817b99_2 conda-forge libnghttp2 1.43.0 h812cca2_0 conda-forge libogg 1.3.4 h7f98852_1 conda-forge libopenblas 0.3.15 pthreads_h8fe5266_1 conda-forge libopus 1.3.1 h7f98852_1 conda-forge libpng 1.6.37 h21135ba_2 conda-forge libpq 13.3 hd57d9b9_0 conda-forge libprotobuf 3.16.0 h780b84a_0 conda-forge libssh2 1.9.0 ha56f1ee_6 conda-forge libstdcxx-devel_linux-64 9.3.0 hb016644_19 conda-forge libstdcxx-ng 9.3.0 h6de172a_19 conda-forge libthrift 0.14.2 he6d91bd_1 conda-forge libtiff 4.3.0 hf544144_1 conda-forge libutf8proc 2.6.1 h7f98852_0 conda-forge libuuid 2.32.1 h7f98852_1000 conda-forge libvorbis 1.3.7 h9c3ff4c_0 conda-forge libwebp-base 1.2.0 h7f98852_2 conda-forge libxcb 1.13 h7f98852_1003 conda-forge libxkbcommon 1.0.3 he3ba5ed_0 conda-forge libxml2 2.9.12 h72842e0_0 conda-forge lz4-c 1.9.3 h9c3ff4c_0 conda-forge lzo 2.10 h516909a_1000 conda-forge make 4.3 hd18ef5c_1 conda-forge markupsafe 2.0.1 py36h8f6f2f9_0 conda-forge matplotlib 3.3.4 py36h5fab9bb_0 conda-forge matplotlib-base 3.3.4 py36hd391965_0 conda-forge mock 4.0.3 py36h5fab9bb_1 conda-forge more-itertools 8.8.0 pyhd8ed1ab_0 conda-forge mypy_extensions 0.4.3 py36h5fab9bb_3 conda-forge mysql-common 8.0.25 ha770c72_2 conda-forge mysql-libs 8.0.25 hfa10184_2 conda-forge ncurses 6.2 h58526e2_4 conda-forge nspr 4.30 h9c3ff4c_0 conda-forge nss 3.67 hb5efdd6_0 conda-forge numexpr 2.7.3 py36h284efc9_0 conda-forge numpy 1.19.5 py36h2aa4a07_1 conda-forge olefile 0.46 pyh9f0ad1d_1 conda-forge openjpeg 2.4.0 hb52868f_1 conda-forge openssl 1.1.1k h7f98852_0 conda-forge orc 1.6.9 h58a87f1_0 conda-forge packaging 21.0 pyhd8ed1ab_0 conda-forge pandas 1.1.5 py36h284efc9_0 conda-forge pandoc 2.14.0.3 h7f98852_0 conda-forge pango 1.48.7 hb8ff022_0 conda-forge parquet-cpp 1.5.1 2 conda-forge pathspec 0.8.1 pyhd3deb0d_0 conda-forge patsy 0.5.1 py_0 conda-forge pcre 8.45 h9c3ff4c_0 conda-forge pcre2 10.37 h032f7d1_0 conda-forge pillow 8.3.1 py36h676a545_0 conda-forge pip 21.1.3 pyhd8ed1ab_0 conda-forge pixman 0.40.0 h36c2ea0_0 conda-forge pluggy 0.13.1 py36h5fab9bb_4 conda-forge pthread-stubs 0.4 h36c2ea0_1001 conda-forge py 1.10.0 pyhd3deb0d_0 conda-forge pyarrow 4.0.1 py36h6200943_4_cpu conda-forge pycparser 2.20 pyh9f0ad1d_2 conda-forge pygments 2.9.0 pyhd8ed1ab_0 conda-forge pymer4 0.6.0 py36_0 kutaslab pyopenssl 20.0.1 pyhd8ed1ab_0 conda-forge pyparsing 2.4.7 pyh9f0ad1d_0 conda-forge pyqt 5.12.3 py36h5fab9bb_7 conda-forge pyqt-impl 5.12.3 py36h7ec31b9_7 conda-forge pyqt5-sip 4.19.18 py36hc4f0c31_7 conda-forge pyqtchart 5.12 py36h7ec31b9_7 conda-forge pyqtwebengine 5.12.1 py36h7ec31b9_7 conda-forge pysocks 1.7.1 py36h5fab9bb_3 conda-forge pytables 3.6.1 py36hb7ec5aa_3 conda-forge pytest 6.2.4 py36h5fab9bb_0 conda-forge pytest-cov 2.12.1 pyhd8ed1ab_0 conda-forge python 3.6.13 hffdb5ce_0_cpython conda-forge python-dateutil 2.8.2 pyhd8ed1ab_0 conda-forge python_abi 3.6 2_cp36m conda-forge pytz 2021.1 pyhd8ed1ab_0 conda-forge qt 5.12.9 hda022c4_4 conda-forge r-base 4.1.0 hb67fd72_2 conda-forge re2 2021.06.01 h9c3ff4c_0 conda-forge readline 8.1 h46c0cb4_0 conda-forge regex 2021.7.6 py36h8f6f2f9_0 conda-forge requests 2.26.0 pyhd8ed1ab_0 conda-forge rpy2 3.4.5 py36r41h4d9540e_0 conda-forge s2n 1.0.10 h9b69904_0 conda-forge scipy 1.5.3 py36h9e8f40b_0 conda-forge seaborn 0.11.1 hd8ed1ab_1 conda-forge seaborn-base 0.11.1 pyhd8ed1ab_1 conda-forge sed 4.8 he412f7d_0 conda-forge setuptools 49.6.0 py36h5fab9bb_3 conda-forge simplegeneric 0.8.1 py_1 conda-forge six 1.16.0 pyh6c4a22f_0 conda-forge snappy 1.1.8 he1b5a44_3 conda-forge snowballstemmer 2.1.0 pyhd8ed1ab_0 conda-forge sphinx 4.1.1 pyh6c4a22f_0 conda-forge sphinx-gallery 0.9.0 pyhd8ed1ab_0 conda-forge sphinx_rtd_theme 0.5.2 pyhd8ed1ab_1 conda-forge sphinxcontrib-applehelp 1.0.2 py_0 conda-forge sphinxcontrib-devhelp 1.0.2 py_0 conda-forge sphinxcontrib-htmlhelp 2.0.0 pyhd8ed1ab_0 conda-forge sphinxcontrib-jsmath 1.0.1 py_0 conda-forge sphinxcontrib-qthelp 1.0.3 py_0 conda-forge sphinxcontrib-serializinghtml 1.1.5 pyhd8ed1ab_0 conda-forge sqlite 3.36.0 h9cd32fc_0 conda-forge statsmodels 0.12.2 py36h92226af_0 conda-forge sysroot_linux-64 2.12 h77966d4_13 conda-forge tk 8.6.10 h21135ba_1 conda-forge tktable 2.10 hb7b940f_3 conda-forge toml 0.10.2 pyhd8ed1ab_0 conda-forge tornado 6.1 py36h8f6f2f9_1 conda-forge tqdm 4.61.2 pyhd8ed1ab_1 conda-forge typed-ast 1.4.3 py36h8f6f2f9_0 conda-forge typing_extensions 3.10.0.0 pyha770c72_0 conda-forge tzlocal 2.1 pyh9f0ad1d_0 conda-forge urllib3 1.26.6 pyhd8ed1ab_0 conda-forge wheel 0.36.2 pyhd3deb0d_0 conda-forge xorg-kbproto 1.0.7 h7f98852_1002 conda-forge xorg-libice 1.0.10 h7f98852_0 conda-forge xorg-libsm 1.2.3 hd9c2040_1000 conda-forge xorg-libx11 1.7.2 h7f98852_0 conda-forge xorg-libxau 1.0.9 h7f98852_0 conda-forge xorg-libxdmcp 1.1.3 h7f98852_0 conda-forge xorg-libxext 1.3.4 h7f98852_1 conda-forge xorg-libxrender 0.9.10 h7f98852_1003 conda-forge xorg-libxt 1.2.1 h7f98852_2 conda-forge xorg-renderproto 0.11.1 h7f98852_1002 conda-forge xorg-xextproto 7.3.0 h7f98852_1002 conda-forge xorg-xproto 7.0.31 h7f98852_1007 conda-forge xz 5.2.5 h516909a_1 conda-forge zipp 3.5.0 pyhd8ed1ab_0 conda-forge zlib 1.2.11 h516909a_1010 conda-forge zstd 1.5.0 ha95c52a_0 conda-forge ```

AFTER installing lmertest:

``` # packages in environment at /home/stefanappelhoff/miniconda3/envs/fg: # # Name Version Build Channel _libgcc_mutex 0.1 conda_forge conda-forge _openmp_mutex 4.5 1_gnu conda-forge _r-mutex 1.0.1 anacondar_1 conda-forge abseil-cpp 20210324.2 h9c3ff4c_0 conda-forge alabaster 0.7.12 py_0 conda-forge alsa-lib 1.2.3 h516909a_0 conda-forge appdirs 1.4.4 pyh9f0ad1d_0 conda-forge arrow-cpp 4.0.1 py36h16163aa_4_cpu conda-forge attrs 21.2.0 pyhd8ed1ab_0 conda-forge aws-c-cal 0.5.11 h95a6274_0 conda-forge aws-c-common 0.6.2 h7f98852_0 conda-forge aws-c-event-stream 0.2.7 h3541f99_13 conda-forge aws-c-io 0.10.5 hfb6a706_0 conda-forge aws-checksums 0.1.11 ha31a3da_7 conda-forge aws-sdk-cpp 1.8.186 hb4091e7_3 conda-forge babel 2.9.1 pyh44b312d_0 conda-forge binutils_impl_linux-64 2.36.1 h193b22a_1 conda-forge binutils_linux-64 2.36 hf3e587d_32 conda-forge black 21.5b2 pyhd8ed1ab_0 conda-forge blosc 1.21.0 h9c3ff4c_0 conda-forge brotlipy 0.7.0 py36h8f6f2f9_1001 conda-forge bwidget 1.9.14 ha770c72_0 conda-forge bzip2 1.0.8 h7f98852_4 conda-forge c-ares 1.17.1 h7f98852_1 conda-forge ca-certificates 2021.5.30 ha878542_0 conda-forge cairo 1.16.0 h6cf1ce9_1008 conda-forge certifi 2021.5.30 py36h5fab9bb_0 conda-forge cffi 1.14.6 py36hc120d54_0 conda-forge chardet 4.0.0 py36h5fab9bb_1 conda-forge charset-normalizer 2.0.0 pyhd8ed1ab_0 conda-forge click 8.0.1 py36h5fab9bb_0 conda-forge codecov 2.1.11 pyhd3deb0d_0 conda-forge colorama 0.4.4 pyh9f0ad1d_0 conda-forge coverage 5.5 py36h8f6f2f9_0 conda-forge cryptography 3.4.7 py36hb60f036_0 conda-forge curl 7.77.0 hea6ffbf_0 conda-forge cycler 0.10.0 py_2 conda-forge dataclasses 0.8 pyh787bdff_0 conda-forge dbus 1.13.6 h48d8840_2 conda-forge docutils 0.16 py36h5fab9bb_3 conda-forge expat 2.4.1 h9c3ff4c_0 conda-forge fitgrid 0.5.0 py36_geadf3583_0 kutaslab font-ttf-dejavu-sans-mono 2.37 hab24e00_0 conda-forge font-ttf-inconsolata 3.000 h77eed37_0 conda-forge font-ttf-source-code-pro 2.038 h77eed37_0 conda-forge font-ttf-ubuntu 0.83 hab24e00_0 conda-forge fontconfig 2.13.1 hba837de_1005 conda-forge fonts-conda-ecosystem 1 0 conda-forge fonts-conda-forge 1 0 conda-forge freetype 2.10.4 h0708190_1 conda-forge fribidi 1.0.10 h36c2ea0_0 conda-forge gcc_impl_linux-64 9.3.0 h70c0ae5_19 conda-forge gcc_linux-64 9.3.0 hf25ea35_32 conda-forge gettext 0.19.8.1 h0b5b191_1005 conda-forge gflags 2.2.2 he1b5a44_1004 conda-forge gfortran_impl_linux-64 9.3.0 hc4a2995_19 conda-forge gfortran_linux-64 9.3.0 hdc58fab_32 conda-forge glib 2.68.3 h9c3ff4c_0 conda-forge glib-tools 2.68.3 h9c3ff4c_0 conda-forge glog 0.5.0 h48cff8f_0 conda-forge graphite2 1.3.13 h58526e2_1001 conda-forge grpc-cpp 1.38.1 h36ce80c_0 conda-forge gsl 2.6 he838d99_2 conda-forge gst-plugins-base 1.18.4 hf529b03_2 conda-forge gstreamer 1.18.4 h76c114f_2 conda-forge gxx_impl_linux-64 9.3.0 hd87eabc_19 conda-forge gxx_linux-64 9.3.0 h3fbe746_32 conda-forge harfbuzz 2.8.2 h83ec7ef_0 conda-forge hdf5 1.10.6 nompi_h6a2412b_1114 conda-forge icu 68.1 h58526e2_0 conda-forge idna 3.1 pyhd3deb0d_0 conda-forge imagesize 1.2.0 py_0 conda-forge importlib-metadata 4.6.1 py36h5fab9bb_0 conda-forge importlib_metadata 4.6.1 hd8ed1ab_0 conda-forge iniconfig 1.1.1 pyh9f0ad1d_0 conda-forge jbig 2.1 h7f98852_2003 conda-forge jinja2 3.0.1 pyhd8ed1ab_0 conda-forge joblib 1.0.1 pyhd8ed1ab_0 conda-forge jpeg 9d h36c2ea0_0 conda-forge kernel-headers_linux-64 2.6.32 h77966d4_13 conda-forge kiwisolver 1.3.1 py36h605e78d_1 conda-forge krb5 1.19.1 hcc1bbae_0 conda-forge lcms2 2.12 hddcbb42_0 conda-forge ld_impl_linux-64 2.36.1 hea4e1c9_1 conda-forge lerc 2.2.1 h9c3ff4c_0 conda-forge libblas 3.9.0 9_openblas conda-forge libbrotlicommon 1.0.9 h7f98852_5 conda-forge libbrotlidec 1.0.9 h7f98852_5 conda-forge libbrotlienc 1.0.9 h7f98852_5 conda-forge libcblas 3.9.0 9_openblas conda-forge libclang 11.1.0 default_ha53f305_1 conda-forge libcurl 7.77.0 h2574ce0_0 conda-forge libdeflate 1.7 h7f98852_5 conda-forge libedit 3.1.20191231 he28a2e2_2 conda-forge libev 4.33 h516909a_1 conda-forge libevent 2.1.10 hcdb4288_3 conda-forge libffi 3.3 h58526e2_2 conda-forge libgcc-devel_linux-64 9.3.0 h7864c58_19 conda-forge libgcc-ng 9.3.0 h2828fa1_19 conda-forge libgfortran-ng 9.3.0 hff62375_19 conda-forge libgfortran5 9.3.0 hff62375_19 conda-forge libglib 2.68.3 h3e27bee_0 conda-forge libgomp 9.3.0 h2828fa1_19 conda-forge libiconv 1.16 h516909a_0 conda-forge liblapack 3.9.0 9_openblas conda-forge libllvm11 11.1.0 hf817b99_2 conda-forge libnghttp2 1.43.0 h812cca2_0 conda-forge libogg 1.3.4 h7f98852_1 conda-forge libopenblas 0.3.15 pthreads_h8fe5266_1 conda-forge libopus 1.3.1 h7f98852_1 conda-forge libpng 1.6.37 h21135ba_2 conda-forge libpq 13.3 hd57d9b9_0 conda-forge libprotobuf 3.16.0 h780b84a_0 conda-forge libssh2 1.9.0 ha56f1ee_6 conda-forge libstdcxx-devel_linux-64 9.3.0 hb016644_19 conda-forge libstdcxx-ng 9.3.0 h6de172a_19 conda-forge libthrift 0.14.2 he6d91bd_1 conda-forge libtiff 4.3.0 hf544144_1 conda-forge libutf8proc 2.6.1 h7f98852_0 conda-forge libuuid 2.32.1 h7f98852_1000 conda-forge libvorbis 1.3.7 h9c3ff4c_0 conda-forge libwebp-base 1.2.0 h7f98852_2 conda-forge libxcb 1.13 h7f98852_1003 conda-forge libxkbcommon 1.0.3 he3ba5ed_0 conda-forge libxml2 2.9.12 h72842e0_0 conda-forge lz4-c 1.9.3 h9c3ff4c_0 conda-forge lzo 2.10 h516909a_1000 conda-forge make 4.3 hd18ef5c_1 conda-forge markupsafe 2.0.1 py36h8f6f2f9_0 conda-forge matplotlib 3.3.4 py36h5fab9bb_0 conda-forge matplotlib-base 3.3.4 py36hd391965_0 conda-forge mock 4.0.3 py36h5fab9bb_1 conda-forge more-itertools 8.8.0 pyhd8ed1ab_0 conda-forge mypy_extensions 0.4.3 py36h5fab9bb_3 conda-forge mysql-common 8.0.25 ha770c72_2 conda-forge mysql-libs 8.0.25 hfa10184_2 conda-forge ncurses 6.2 h58526e2_4 conda-forge nspr 4.30 h9c3ff4c_0 conda-forge nss 3.67 hb5efdd6_0 conda-forge numexpr 2.7.3 py36h284efc9_0 conda-forge numpy 1.19.5 py36h2aa4a07_1 conda-forge olefile 0.46 pyh9f0ad1d_1 conda-forge openjpeg 2.4.0 hb52868f_1 conda-forge openssl 1.1.1k h7f98852_0 conda-forge orc 1.6.9 h58a87f1_0 conda-forge packaging 21.0 pyhd8ed1ab_0 conda-forge pandas 1.1.5 py36h284efc9_0 conda-forge pandoc 2.14.0.3 h7f98852_0 conda-forge pango 1.48.7 hb8ff022_0 conda-forge parquet-cpp 1.5.1 2 conda-forge pathspec 0.8.1 pyhd3deb0d_0 conda-forge patsy 0.5.1 py_0 conda-forge pcre 8.45 h9c3ff4c_0 conda-forge pcre2 10.37 h032f7d1_0 conda-forge pillow 8.3.1 py36h676a545_0 conda-forge pip 21.1.3 pyhd8ed1ab_0 conda-forge pixman 0.40.0 h36c2ea0_0 conda-forge pluggy 0.13.1 py36h5fab9bb_4 conda-forge pthread-stubs 0.4 h36c2ea0_1001 conda-forge py 1.10.0 pyhd3deb0d_0 conda-forge pyarrow 4.0.1 py36h6200943_4_cpu conda-forge pycparser 2.20 pyh9f0ad1d_2 conda-forge pygments 2.9.0 pyhd8ed1ab_0 conda-forge pymer4 0.6.0 py36_0 kutaslab pyopenssl 20.0.1 pyhd8ed1ab_0 conda-forge pyparsing 2.4.7 pyh9f0ad1d_0 conda-forge pyqt 5.12.3 py36h5fab9bb_7 conda-forge pyqt-impl 5.12.3 py36h7ec31b9_7 conda-forge pyqt5-sip 4.19.18 py36hc4f0c31_7 conda-forge pyqtchart 5.12 py36h7ec31b9_7 conda-forge pyqtwebengine 5.12.1 py36h7ec31b9_7 conda-forge pysocks 1.7.1 py36h5fab9bb_3 conda-forge pytables 3.6.1 py36hb7ec5aa_3 conda-forge pytest 6.2.4 py36h5fab9bb_0 conda-forge pytest-cov 2.12.1 pyhd8ed1ab_0 conda-forge python 3.6.13 hffdb5ce_0_cpython conda-forge python-dateutil 2.8.2 pyhd8ed1ab_0 conda-forge python_abi 3.6 2_cp36m conda-forge pytz 2021.1 pyhd8ed1ab_0 conda-forge qt 5.12.9 hda022c4_4 conda-forge r-assertthat 0.2.1 r40hc72bb7e_2 conda-forge r-backports 1.2.1 r40hcfec24a_0 conda-forge r-base 4.0.5 hb67fd72_2 conda-forge r-boot 1.3_28 r40hc72bb7e_0 conda-forge r-brio 1.1.2 r40hcfec24a_0 conda-forge r-callr 3.7.0 r40hc72bb7e_0 conda-forge r-cli 3.0.0 r40hc72bb7e_0 conda-forge r-colorspace 2.0_2 r40hcfec24a_0 conda-forge r-crayon 1.4.1 r40hc72bb7e_0 conda-forge r-desc 1.3.0 r40hc72bb7e_0 conda-forge r-diffobj 0.3.4 r40hcfec24a_0 conda-forge r-digest 0.6.27 r40h03ef668_0 conda-forge r-ellipsis 0.3.2 r40hcfec24a_0 conda-forge r-evaluate 0.14 r40hc72bb7e_2 conda-forge r-fansi 0.5.0 r40hcfec24a_0 conda-forge r-farver 2.1.0 r40h03ef668_0 conda-forge r-ggplot2 3.3.5 r40hc72bb7e_0 conda-forge r-glue 1.4.2 r40hcfec24a_0 conda-forge r-gtable 0.3.0 r40hc72bb7e_3 conda-forge r-isoband 0.2.5 r40h03ef668_0 conda-forge r-jsonlite 1.7.2 r40hcfec24a_0 conda-forge r-labeling 0.4.2 r40hc72bb7e_0 conda-forge r-lattice 0.20_44 r40hcfec24a_0 conda-forge r-lifecycle 1.0.0 r40hc72bb7e_0 conda-forge r-lme4 1.1_27.1 r40h03ef668_0 conda-forge r-lmertest 3.1_3 r40hc72bb7e_0 conda-forge r-magrittr 2.0.1 r40hcfec24a_1 conda-forge r-mass 7.3_54 r40hcfec24a_0 conda-forge r-matrix 1.3_4 r40he454529_0 conda-forge r-mgcv 1.8_36 r40he454529_0 conda-forge r-minqa 1.2.4 r40h5ee154c_1006 conda-forge r-munsell 0.5.0 r40hc72bb7e_1003 conda-forge r-nlme 3.1_152 r40h859d828_0 conda-forge r-nloptr 1.2.2.2 r40h03ef668_0 conda-forge r-numderiv 2016.8_1.1 r40hc72bb7e_3 conda-forge r-pillar 1.6.1 r40hc72bb7e_0 conda-forge r-pkgconfig 2.0.3 r40hc72bb7e_1 conda-forge r-pkgload 1.2.1 r40h03ef668_0 conda-forge r-praise 1.0.0 r40hc72bb7e_1004 conda-forge r-processx 3.5.2 r40hcfec24a_0 conda-forge r-ps 1.6.0 r40hcfec24a_0 conda-forge r-r6 2.5.0 r40hc72bb7e_0 conda-forge r-rcolorbrewer 1.1_2 r40h785f33e_1003 conda-forge r-rcpp 1.0.7 r40h03ef668_0 conda-forge r-rcppeigen 0.3.3.9.1 r40h306847c_0 conda-forge r-rematch2 2.1.2 r40hc72bb7e_1 conda-forge r-rlang 0.4.11 r40hcfec24a_0 conda-forge r-rprojroot 2.0.2 r40hc72bb7e_0 conda-forge r-rstudioapi 0.13 r40hc72bb7e_0 conda-forge r-scales 1.1.1 r40hc72bb7e_0 conda-forge r-statmod 1.4.36 r40h92ddd45_0 conda-forge r-testthat 3.0.4 r40h03ef668_0 conda-forge r-tibble 3.1.2 r40hcfec24a_0 conda-forge r-utf8 1.2.1 r40hcfec24a_0 conda-forge r-vctrs 0.3.8 r40hcfec24a_1 conda-forge r-viridislite 0.4.0 r40hc72bb7e_0 conda-forge r-waldo 0.2.5 r40hc72bb7e_0 conda-forge r-withr 2.4.2 r40hc72bb7e_0 conda-forge re2 2021.06.01 h9c3ff4c_0 conda-forge readline 8.1 h46c0cb4_0 conda-forge regex 2021.7.6 py36h8f6f2f9_0 conda-forge requests 2.26.0 pyhd8ed1ab_0 conda-forge rpy2 3.4.5 py36r40h4d9540e_0 conda-forge s2n 1.0.10 h9b69904_0 conda-forge scipy 1.5.3 py36h9e8f40b_0 conda-forge seaborn 0.11.1 hd8ed1ab_1 conda-forge seaborn-base 0.11.1 pyhd8ed1ab_1 conda-forge sed 4.8 he412f7d_0 conda-forge setuptools 49.6.0 py36h5fab9bb_3 conda-forge simplegeneric 0.8.1 py_1 conda-forge six 1.16.0 pyh6c4a22f_0 conda-forge snappy 1.1.8 he1b5a44_3 conda-forge snowballstemmer 2.1.0 pyhd8ed1ab_0 conda-forge sphinx 4.1.1 pyh6c4a22f_0 conda-forge sphinx-gallery 0.9.0 pyhd8ed1ab_0 conda-forge sphinx_rtd_theme 0.5.2 pyhd8ed1ab_1 conda-forge sphinxcontrib-applehelp 1.0.2 py_0 conda-forge sphinxcontrib-devhelp 1.0.2 py_0 conda-forge sphinxcontrib-htmlhelp 2.0.0 pyhd8ed1ab_0 conda-forge sphinxcontrib-jsmath 1.0.1 py_0 conda-forge sphinxcontrib-qthelp 1.0.3 py_0 conda-forge sphinxcontrib-serializinghtml 1.1.5 pyhd8ed1ab_0 conda-forge sqlite 3.36.0 h9cd32fc_0 conda-forge statsmodels 0.12.2 py36h92226af_0 conda-forge sysroot_linux-64 2.12 h77966d4_13 conda-forge tk 8.6.10 h21135ba_1 conda-forge tktable 2.10 hb7b940f_3 conda-forge toml 0.10.2 pyhd8ed1ab_0 conda-forge tornado 6.1 py36h8f6f2f9_1 conda-forge tqdm 4.61.2 pyhd8ed1ab_1 conda-forge typed-ast 1.4.3 py36h8f6f2f9_0 conda-forge typing_extensions 3.10.0.0 pyha770c72_0 conda-forge tzlocal 2.1 pyh9f0ad1d_0 conda-forge urllib3 1.26.6 pyhd8ed1ab_0 conda-forge wheel 0.36.2 pyhd3deb0d_0 conda-forge xorg-kbproto 1.0.7 h7f98852_1002 conda-forge xorg-libice 1.0.10 h7f98852_0 conda-forge xorg-libsm 1.2.3 hd9c2040_1000 conda-forge xorg-libx11 1.7.2 h7f98852_0 conda-forge xorg-libxau 1.0.9 h7f98852_0 conda-forge xorg-libxdmcp 1.1.3 h7f98852_0 conda-forge xorg-libxext 1.3.4 h7f98852_1 conda-forge xorg-libxrender 0.9.10 h7f98852_1003 conda-forge xorg-libxt 1.2.1 h7f98852_2 conda-forge xorg-renderproto 0.11.1 h7f98852_1002 conda-forge xorg-xextproto 7.3.0 h7f98852_1002 conda-forge xorg-xproto 7.0.31 h7f98852_1007 conda-forge xz 5.2.5 h516909a_1 conda-forge zipp 3.5.0 pyhd8ed1ab_0 conda-forge zlib 1.2.11 h516909a_1010 conda-forge zstd 1.5.0 ha95c52a_0 conda-forge ```
turbach commented 3 years ago

Thanks @sappelhoff, this is good info. I replicated the issue, you're fine but I got bitten by the not-quite interchangeability of conda and mamba 0.14.

Diagnosis

The BEFORE env shows that with -c kutaslab -c ejolly channel order and strict channel priority, the conda solver locks onto our legacy pymer4 0.6.0 conda package on -c kutaslab. That 0.6.0 version is our in-house conda skeleton snapshot of the pymer4 0.6.0 PyPI package back when pymer4 wasn't packaged for conda elsewhere. It doesn't have the r-* dependencies baked in (see ~/path/to/envs/fg/conda-meta/pymer4-0.6.0-py36_0.json) so they have to be installed manually. As you found with the AFTER env, that doesn't always go smoothly even with dependency resolution.

What we want nowadays for fitgrid installation are the more recent pymer4 0.7 conda packages on anaconda.org/ejolly/pymer4 where the R dependencies are specified in github.com/ejolly/conda/meta.yaml and where the conda packages are built, installed, and pytested in the CI so that mindless computers check the installation and execution as installed before we humans try to use it. If that sounds familiar, it should ejolly/pymer4#76.

Interestingly (if that's the right word), mamba 0.14 did the right thing for the wrong reason ... despite the strict channel priority it saw past the pymer4 0.6.0 on -c kutaslab and found the newer pymer4 0.7 on -c ejolly. Don't know why, hope to never learn.

A fix

So the question now is how to get the desired behavior using conda 4.10 or the new mamba 0.15 and its more conda-like (exactly conda-like?) treatment of strict channel priority. I think juggling the channel order is the simplest fix so that's what I included in the new fitgrid 0.5.2 docs:

conda create --name fg -c conda-forge -c ejolly -c kutaslab fitgrid --yes

So far in testing this install pattern seems to work for latest versions of fitgrid and the different combinations of (Python 3.7 vs. 3.8) x (conda vs. mamba) x (MKL vs OpenBLAS) x (strict vs. flexible channel priority) x (conda-forge vs. anaconda.org defaults channel priority) EXCEPT -c defaults -c conda-forge --strict-channel-priority but that didn't work before either.

For building dev environments as opposed to working environments, best practices are to use the -c kutaslab/label/pre-release channel in case there are updates to dependencies and pins in conda/meta.yaml on the dev branch that haven't yet made it into the stable release. There aren't at the moment but that can change at any time as packages churn on conda-forge.

conda create --name fg -c conda-forge -c ejolly -c kutaslab/label/pre-release fitgrid --yes

If you want to keep going with this and can live with Python 3.7 or 3.8, I think re-running w/ the new channel order would be the quickest way to get the development environment built. If you do and run into anything else by all means post the issue. Thanks, much appreciated.

sappelhoff commented 3 years ago

Thanks for the analysis @turbach. I am happy to report that with that channel order tweak both the tests and docs pass :slightly_smiling_face:

I'll leave this issue open for you to either close now, or when you made the adjustments to the installation docs.

turbach commented 3 years ago

@sappelhoff great thanks for the followup, glad it worked out. The updates are in the 0.5.2 docs for the JOSS release, should be good for now.