* Andreas Tille <[email protected]>, 2016-07-12, 11:12:
In file included from /usr/include/eigen3/Eigen/Core:297:0,
                from /usr/include/eigen3/Eigen/Dense:1,
                from abundances.h:21,
                from abundances.cpp:16:
/usr/include/eigen3/Eigen/src/Core/DenseCoeffsBase.h: In instantiation of 
'Eigen::DenseCoeffsBase<Derived, 0>::CoeffReturnType 
Eigen::DenseCoeffsBase<Derived, 0>::coeff(Eigen::Index) const [with Derived = Eigen
/usr/include/eigen3/Eigen/src/Core/DenseCoeffsBase.h:181:19:   required from 
'Eigen::DenseCoeffsBase<Derived, 0>::CoeffReturnType 
Eigen::DenseCoeffsBase<Derived, 0>::operator()(Eigen::Index) const [with Derived
abundances.cpp:3815:28:   required from here
/usr/include/eigen3/Eigen/src/Core/DenseCoeffsBase.h:141:7: error: 
'THIS_COEFFICIENT_ACCESSOR_TAKING_ONE_ACCESS_IS_ONLY_FOR_EXPRESSIONS_ALLOWING_LINEAR_ACCESS'
 is not a member of 'Eigen::internal::static_assert
      EIGEN_STATIC_ASSERT(internal::evaluator<Derived>::Flags & LinearAccessBit,
      ^
Makefile:1627: recipe for target 'abundances.o' failed

The relevant code in src/abundances.cpp looks like this:

        Eigen::VectorXd v;
        double m = 0;
        v = U.rowwise().sum();
        m = v.colwise().sum()(0);

For some reason Eigen thinks that v.colwise().sum() cannot be treated as a one-dimensional vector, which smells like a bug in Eigen. Changing the last line to

        m = v.colwise().sum()(0, 0);

seems to do the trick.

Upstream bug report:
https://github.com/cole-trapnell-lab/cufflinks/issues/61

--
Jakub Wilk

Reply via email to