Repository navigation
Conversation
- corrected transform.pyf, to not allocate zero-dim matrices - added tests for td04ad, one static, one checked against Octave with a transfer function set.
and works for 'C' as well as 'R' added a few tests
and works for 'C' as well as 'R'
added a few tests in new test_td04ad.py file, checked
against Octave result
corrected transform.pyf, to not allocate zero-dim matrices
matching changes in transform.py
|
Ouch! Catch22 |
use conda-supplied compilers in meta.yaml fix flags for build on osx, specifically conda has python symbols in executable, needs -undefined dynamic_lookup
added / modified for build with FLang on Windows
|
I believe the Trusty-installed openblas is missing dgebal, I did not have the same problem locally with a Xenial installation. Don't know currently why the CONDA=1 Python 2.7 and 3.5 versions are failing, they seem to be numerically different from the 3.6 version Back to good old Lapack and Blas then? Can we make it configurable? |
|
I like the idea of making it configurable, to allow maximum flexibility for people trying to install the code. At the same time, we are going to need conda-forge versions that people can easily download (and so we have to have things working there as well). The commit history on this is getting pretty complex, with some of the commits above seeming to related to conda/blas/lapack issues rather than the core Is it worth refactoring our pull requests a bit so that we have one that is associated with Travis CI, one associated with installation more generally (including Windows), on associated with |
- force installation of slycot from the local channel, avoid conda-force version
|
Wow. It seems we are down to the intermittent "nontrivial imaginary part" error now, which will go away with the new common_den() function in control.
I agree it has been a messy process, chasing one problem after another. When the td04ad work failed to build properly on travis, I got carried away fixing all kinds of conda and travis issues. Part of the problem was that I had no travis test environment, so it would just be down to committing and pushing. It would be cleaner to refactor, but there would be quite a bit of work involved, and it would be difficult to break things down again to steps that end up at sound endpoints, where (at least part of) the tests are passed. I am pretty confident on the current result, and I fear disentangling the work again might introduce some new errors. So if you don't object, I would rather have this one and the matching change to python-control merged. That should clear up the Nontrivial Imaginary Part, and lead to some progress on the other PR's too. |
|
Looking at the changes, it seems like there is a pretty clear split:
Can we implement the first set of changes as a separate PR, test them across platforms, and then merge those into master? Then take the second set of changes as a new PR and merge those afterwards? If the issue is just the extra work required, I can take a cut at generating a cleaner set of PR's based on the changes so far. |
|
FYI: I checked out repagh/Slycot and tested out the changes on MacOS. I was able to build using conda, but had to explicitly set the python version: |
murrayrm
left a comment
There was a problem hiding this comment.
A couple of comments on current snapshot.
| # Install fortran compiler, if not using Conda's | ||
| # | ||
| - sudo apt-get install gfortran | ||
| #- sudo apt-get install gfortran |
There was a problem hiding this comment.
Suggest removing this line rather than commenting it out.
| conda build --python "$TRAVIS_PYTHON_VERSION" conda-recipe; | ||
| conda install slycot --use-local; | ||
| conda install -c conda-forge lapack; | ||
| conda install --override-channels -c local slycot; |
There was a problem hiding this comment.
Why this way of doing a local install instead of using --use-local flag? I believe --use-local is what is in the standard conda recipe template.
There was a problem hiding this comment.
Yes. But --use-local adds the local channel to your set of channels. If the slycot build failed, it would happily install the slycot found in other channels! This happened in the python 2.7 and 3.5 variants.
Since in the overviews of installed modules I saw "local" listed as a channel for the locally built slycot, I assumed that that channel was simply called local. And it works.
Also, --override-channels, which you need to block all others, will not work with --use-local.
|
I got an error when trying to compile using Is there something that should be getting installed that isn't being installed? |
|
openblas from conda-forge? |
While working on supporting MIMO tf -> MIMO ss, I found some fixes had to be done to TD04AD.f
Notably edge cases (empty matrices) caused problems,
Conversion with 'C', did not always work.
Added a few tests in new test_td04ad.py file, checked against Octave result
corrected transform.pyf, to not allocate zero-dim matrices
matching changes in transform.py