Giter VIP home page Giter VIP logo

hmmufotu's Introduction

DOI

HmmUFOtu introduction

HmmUFOtu is an HMM based Ultra-fast OTU assignment tool for baterial 16S and amplicon sequencing research, it has two core algorithms, the CSFM-index powered banded-HMM algorithm, and SEP local phylogenetic-placement based taxonomy assignment algorithm.

The main program 'hmmufotu' takes single or paired-end NGS FASTA/FASTQ reads and generate tab-delimited outputs of the taxonomy assignment results of every read. This program supports native multi-threading and SSE2 and up Vectorization.

HmmUFOtu supports all major DNA substitution models, including

  • GTR
  • TN93
  • HKY85
  • F81
  • K80
  • JC69

HmmUFOtu supports variable mutation rate phylogenetic evaluation using the Discrete Gamma (dΓ) models (Yang 1994).

Citations

Zheng, Q., Bartow-McKenney, C., Meisel, J. S., & Grice, E. A. (2018). HmmUFOtu: An HMM and phylogenetic placement based ultra-fast taxonomic assignment and OTU picking tool for microbiome amplicon sequencing studies. Genome biology, 19(1), 82. PubMed ID: 29950165

Implementation

HmmUFOtu is written in pure C++98, and built with the GNU Autotools (autoconfig/automake), and can be easily installed under Linux, Windows and Mac OS X.

Download

You can download the latest release from GitHub at: https://github.com/Grice-Lab/HmmUFOtu/releases. You can clone or fork and pull the source codes from GitHub at: https://github.com/Grice-Lab/HmmUFOtu.

Dependencies

HmmUFOtu depends on the popular head-only C++ libraries Boost and Eigen3. They are available and often pre-installed on most Linux distributions, and can be easily installed on Windows and Mac OS X. The ZLIB and Boost-IOSTREAMS libraries are optionally dependent for handling GZIP/GZIP2 compressed files, but are not required and can be disabled. The JSONCPP C++ library is optionally dependent for formatting HmmUFOtu's assignment output into standard .jplace output; if "jsoncpp" library is found or specified during the configuring step, an optional program hmmufotu-jplace will be installed.

Installation

  1. Configure installation, by running the command
./configure

You may consider providing additional options, such as --prefix, --exec-prefix, --with-zlib, --with-boost, --with-jsoncpp, etc.

  1. Compile and link, by running the command
make

Look for errors and try to resolve them yourself first (by Google). Contact us only if you are sure it is a bug in our programs.

  1. (Optionally) Test, by running the command
make check

It may take a while depending on your processor's speed.

  1. Install
make install

You may need root privilege to do it, such as using sudo.

Output

The main program 'hmmufotu' generates tab-delimited tables (TSV files), and is self explanatory. One other major program 'hmmufotu-sum' generates TSV format OTU tables (Operational Taxonomic Tables), which is compatitable with 3rd party tools such as QIIME.

Pre-built databases

You need to build an HmmUFOtu database before assigning taxonomies to your 16S or other target-loci sequencing reads. You can build your own database using hmmufotu-build, or alternatively download the pre-built databases.

Core programs

Core programs are fundamental tools for taxonomy assignment analysis of 16S and other target-amplicon sequencing data. Core programs include:

  • hmmufotu-build build an HmmUFOtu database with indexed multiple-sequence alignment (MSA), trained HMM profile, and pre-evaluated phylogenetic tree from reference MSA and tree files
  • hmmufotu perform HMM-alignment, phylogenetic-placement based taxonomy assignment for single or paired-end NGS reads
  • hmmufotu-sum summarize and generate phylogeny-based OTUs and consensus/prior based OTU representatives by summarizing over multiple assignment results (samples)
  • hmmufotu-inspect inspect an HmmUFOtu database, and optionally export its contents

Model training programs

HmmUFOtu distributions contain pre-trained DNA substitution models and Dirichlet density/mixture models required for buiding HmmUFOtu databases. However, the users can train their own models with customized datasets. Model training programs include:

  • hmmufotu-train-dm train an HmmUFOtu prior model using Dirichlet Density/Mixture models with customized data
  • hmmufotu-train-hmm train a Banded-HMM model with customized data
  • hmmufotu-train-sm train a DNA Substitution Model with customized data

Utility programs

Beside its core functionality, HmmUFOtu can perform many additional analysis using the utility programs. Utility programs include:

  • hmmufotu-anneal anneal primer sequences to an HmmUFOtu database and evaluate the primer efficiency
  • hmmufotu-sim generate simulated single or paired-end NGS reads, aligned or un-aligned, using a pre-built HmmUFOtu database
  • hmmufotu-subset subset (subsample) an OTUTable so every sample contains the same mimimum required reads, and prune the samples and OTUs if necessary
  • hmmufotu-norm normalize an OTUTable so every sample contains the same number of reads, you can generate a relative abundance OTUTable using a constant of 1
  • hmmufotu-merge merge two or more OTUTables, redundant OTUs and samples will be aggregated, an optional merged OTU-tree can also be generated providing the corresponding database
  • hmmufotu-jplace format HmmUFOtu's assignment output into standard .jplace file for compatibility of third party tools

hmmufotu's People

Contributors

e00011027 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

hmmufotu's Issues

Filter question

Hi,

I run the following command to classify some 16S amplicon sequences:

hmmufotu gg_97_otus_GTR unmapped_otus_rev.fasta -s 0 -t 0 > hmmufotu_gg_97_unmapped.out

I noticed that some reads have very poor alignment coverage with the database, and even that, they have a taxonomic assignation. Do you recommend to use any filter for taxonomic assignation after running hmmufotu?

Core dump in hmmufotu-build

Hello, I am trying to use hmmufotu in big reference datasets. I have created big alignments with MAFFT and created trees with fasttree. However, I am getting the following core dumped error with some (but not all) of my alignments:

MSA loaded
MSA pruned
MSA database created for 9742 X 242 aligned sequences
CSFM index built
hmmufotu-build: /usr/include/eigen3/Eigen/src/Core/Block.h:122: Eigen::Block<XprType, BlockRows, BlockCols, InnerPanel>::Block(XprType&, Eigen::Index) [with XprType = const Eigen::Matrix<double, -1, -1>; int BlockRows = -1; int BlockCols = 1; bool InnerPanel = true; Eigen::Index = long int]: Assertion `(i>=0) && ( ((BlockRows==1) && (BlockCols==XprType::ColsAtCompileTime) && i<xpr.rows()) ||((BlockRows==XprType::RowsAtCompileTime) && (BlockCols==1) && i<xpr.cols()))' failed.
Aborted (core dumped)

Any ideas on how I can overcome it?

Best,

Sergio

tutorial

I'm interested in HmmUFOtu, and i want to use it to process my 16S dataset, where i can find tutorial for HmmUFOtu. Thanks.

HmmUFOtu on conda?

HI Qi,

you did a nice tool!

I have two questions:

  1. Are you planning to add HmmUFOtu to bioconda?
  2. I would be interested to use your p7 HMM architecture. Something similar to:
    Given a MSA (<msafile>) and some sequences that I want to "align" according to this existing MSA (<seqfile>):
hmmbuild hmm_file <msafile>
hmmalign hmm_file <seqfile>

Is that possible?

compiling error for a few header

Dear Author,

Can you please offer compiled binaries in the release? A lot biologies will not be able to use it if it takes a lot of time to compile.

Thanks,

Jianshu

hmmufotu-sum input arguments of assignment files

Hi,
I am a big fan of hmmufotu.
In hmmufotu-sum, a list of assignment files should be provided as the second and on command line arguments.
When many samples are processed, this is cumbersome.

In fact, the "-l" option accepts a list file of sample and assignment duos.
I do not understand why the input arguments are still required.

Sincerely,

Sangsoo

new user problem

Hi, i am analyzing a MinION sequencer dataset that contains 16S gene sequences (1500 pb each) but i am having the next issue with the hmmufotu command :

MSA loaded
HMM profile read
CSFM-index loaded
Phylogenetic tree loaded
Determining read strand by alignment cost ...
terminate called after throwing an instance of 'std::invalid_argument'
what(): Your sequence contains invalid alphabet charactersCAGACGACTGCAAACGGAATCGGAGTCACGCACC
Aborted (core dumped)

i have tried with another 16S small dataset from MinION and it worked well....

can someone help me please?

Thanks!

very weird alignment and results

Hi,
I am new using this software. I have an Illumina sequencing of V4 sequence 16S rDNA. I trimmed and assembled the sequences using DADA2.
I wanted to use hmmufotu on DADA2's ESVs to compare the taxonomic classification of the two softwares, and get a phylogenetic tree for my ESVs.

Here is the beginning of the input :

Otu1
AGCAGTGGGGAATAT[...]CAAACAGGATTAGATACCCTGGTA
Otu2
AGCAGTGGGGAATAT[...]GGATTAGATACCCTGGTA
Otu3
AGCAGTGGGGAATAT[...]AGGATTAGATACCCTGGTA

After running hmmufotu and hmmufotu-sum on the file using GreenGenes (v13.8) species-level (97% OTU) reference + GTR DNA model that is recommanded, I got a very weird alignment were almost all bases of most of my ESVs (here they are called Otus, but it is only for compatibility with other software) are replaced by gaps '-'

Example

5360 DBName=Archive/GTR/gg_97_otus_GTR;Taxonomy="k__Bacteria;p__Firmicutes;c__Clostridia;o__Clostridiales;f__Lachnospiraceae;g__[Ruminococcus];s__gnavus";AnnoDist=0.64307999999999976;ReadCount=71;SampleHits=1
--------------[...]----------------------------------------------
--------------------------TACCAGGGCTACACACGTGCT----
---[...]-----

[...] are were I reduced the sequence length for the purpose of this message)

And the classification is also very weird, with only 7% of agreement at Phylum level with classification on SILVA database using RDP classifier.

Perhaps I am using it wrong ? I know this software is supposed to be used on raw reads, but I thought it would have been great to compare its classification resolution with RDP classifier.

Thanks you in advance!

Installation error

Dear Author,

Hi, I tried to install HmmUFOtu, but encountered error during installation. I think eigen occurred the problem.

I installed eigen 3.4.0 using the code below

wget https://gitlab.com/libeigen/eigen/-/archive/3.4.0/eigen-3.4.0.tar.bz2
tar xvf eigen-3.4.0.tar.bz2

cd eigen-3.4.0
mkdir build
cd build
cmake ./../
pkg-config --modversion eigen3

cd /usr/include
sudo ln -sf eigen3/Eigen Eigen
sudo ln -sf eigen3/unsupported unsupported

Installation of HmmUFOtu-1.5.1 occurred the error below.

~/HmmUFOtu-1.5.1$ make
Making all in data
make[1]: Entering directory '/home/snyoo/HmmUFOtu-1.5.1/data'
make[1]: Nothing to be done for 'all'.
make[1]: Leaving directory '/home/snyoo/HmmUFOtu-1.5.1/data'
Making all in src
make[1]: Entering directory '/home/snyoo/HmmUFOtu-1.5.1/src'
Making all in libdivsufsort
make[2]: Entering directory '/home/snyoo/HmmUFOtu-1.5.1/src/libdivsufsort'
make all-recursive
make[3]: Entering directory '/home/snyoo/HmmUFOtu-1.5.1/src/libdivsufsort'
Making all in lib
make[4]: Entering directory '/home/snyoo/HmmUFOtu-1.5.1/src/libdivsufsort/lib'
make[4]: Nothing to be done for 'all'.
make[4]: Leaving directory '/home/snyoo/HmmUFOtu-1.5.1/src/libdivsufsort/lib'
Making all in examples
make[4]: Entering directory '/home/snyoo/HmmUFOtu-1.5.1/src/libdivsufsort/examples'
make[4]: Nothing to be done for 'all'.
make[4]: Leaving directory '/home/snyoo/HmmUFOtu-1.5.1/src/libdivsufsort/examples'
make[4]: Entering directory '/home/snyoo/HmmUFOtu-1.5.1/src/libdivsufsort'
make[4]: Leaving directory '/home/snyoo/HmmUFOtu-1.5.1/src/libdivsufsort'
make[3]: Leaving directory '/home/snyoo/HmmUFOtu-1.5.1/src/libdivsufsort'
make[2]: Leaving directory '/home/snyoo/HmmUFOtu-1.5.1/src/libdivsufsort'
Making all in libcds
make[2]: Entering directory '/home/snyoo/HmmUFOtu-1.5.1/src/libcds'
Making all in src
make[3]: Entering directory '/home/snyoo/HmmUFOtu-1.5.1/src/libcds/src'
make[3]: Nothing to be done for 'all'.
make[3]: Leaving directory '/home/snyoo/HmmUFOtu-1.5.1/src/libcds/src'
Making all in tests
make[3]: Entering directory '/home/snyoo/HmmUFOtu-1.5.1/src/libcds/tests'
make[3]: Nothing to be done for 'all'.
make[3]: Leaving directory '/home/snyoo/HmmUFOtu-1.5.1/src/libcds/tests'
Making all in tutorial/src
make[3]: Entering directory '/home/snyoo/HmmUFOtu-1.5.1/src/libcds/tutorial/src'
make[3]: Nothing to be done for 'all'.
make[3]: Leaving directory '/home/snyoo/HmmUFOtu-1.5.1/src/libcds/tutorial/src'
Making all in tutorial/ssa
make[3]: Entering directory '/home/snyoo/HmmUFOtu-1.5.1/src/libcds/tutorial/ssa'
make[3]: Nothing to be done for 'all'.
make[3]: Leaving directory '/home/snyoo/HmmUFOtu-1.5.1/src/libcds/tutorial/ssa'
make[3]: Entering directory '/home/snyoo/HmmUFOtu-1.5.1/src/libcds'
make[3]: Nothing to be done for 'all-am'.
make[3]: Leaving directory '/home/snyoo/HmmUFOtu-1.5.1/src/libcds'
make[2]: Leaving directory '/home/snyoo/HmmUFOtu-1.5.1/src/libcds'
Making all in util
make[2]: Entering directory '/home/snyoo/HmmUFOtu-1.5.1/src/util'
make all-am
make[3]: Entering directory '/home/snyoo/HmmUFOtu-1.5.1/src/util'
make[3]: Leaving directory '/home/snyoo/HmmUFOtu-1.5.1/src/util'
make[2]: Leaving directory '/home/snyoo/HmmUFOtu-1.5.1/src/util'
Making all in math
make[2]: Entering directory '/home/snyoo/HmmUFOtu-1.5.1/src/math'
make all-am
make[3]: Entering directory '/home/snyoo/HmmUFOtu-1.5.1/src/math'
make[3]: Leaving directory '/home/snyoo/HmmUFOtu-1.5.1/src/math'
make[2]: Leaving directory '/home/snyoo/HmmUFOtu-1.5.1/src/math'
make[2]: Entering directory '/home/snyoo/HmmUFOtu-1.5.1/src'
g++ -DPACKAGE_NAME="HmmUFOtu" -DPACKAGE_TARNAME="hmmufotu" -DPACKAGE_VERSION="1.5.1" -DPACKAGE_STRING="HmmUFOtu\ 1.5.1" -DPACKAGE_BUGREPORT="" -DPACKAGE_URL="" -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_DLFCN_H=1 -DLT_OBJDIR=".libs/" -DHAVE_STDINT_H=1 -DHAVE__BOOL=1 -DPACKAGE="hmmufotu" -DVERSION="1.5.1" -DHAVE_ISNAN=1 -DHAVE_STRERROR=1 -DHAVE_LIBZ=1 -DHAVE_BOOST=/**/ -DHAVE_BOOST_IOSTREAMS=/**/ -I. -I/usr/include -fopenmp -I/usr/include -I/usr/include -I../src -I../src/util -I../src/math -I../src/libdivsufsort/include -I../src/libcds/include -I/usr/include -fopenmp -g -O2 -MT hmmufotu.o -MD -MP -MF .deps/hmmufotu.Tpo -c -o hmmufotu.o hmmufotu.cpp

In file included from HmmUFOtu_phylo.h:33,
from HmmUFOtu.h:31,
from hmmufotu.cpp:28:
HKY85.h: In member function ‘virtual double EGriceLab::HmmUFOtu::HKY85::subDist(const Matrix4d&, double) const’:
HKY85.h:165:56: error: cannot convert ‘const Eigen::CwiseBinaryOp<Eigen::internal::scalar_quotient_op<double, double>, const Eigen::CwiseBinaryOp<Eigen::internal::scalar_sum_op<double, double>, const Eigen::CwiseBinaryOp<Eigen::internal::scalar_sum_op<double, double>, const Eigen::CwiseBinaryOp<Eigen::internal::scalar_sum_op<double, double>, const Eigen::IndexedView<const Eigen::Matrix<double, 4, 4>, double, EGriceLab::HmmUFOtu::DNASubModel::Base>, const Eigen::IndexedView<const Eigen::Matrix<double, 4, 4>, EGriceLab::HmmUFOtu::DNASubModel::Base, double> >, const Eigen::IndexedView<const Eigen::Matrix<double, 4, 4>, double, EGriceLab::HmmUFOtu::DNASubModel::Base> >, const Eigen::IndexedView<const Eigen::Matrix<double, 4, 4>, EGriceLab::HmmUFOtu::DNASubModel::Base, double> >, const Eigen::CwiseNullaryOp<Eigen::internal::scalar_constant_op, const Eigen::Matrix<double, -1, -1> > >’ to ‘double’ in initialization
165 | double p = (D(A,G) + D(G,A) + D(C,T) + D(T,C)) / N; /* observed Ti diff /
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~
| |
| const Eigen::CwiseBinaryOp<Eigen::internal::scalar_quotient_op<double, double>, const Eigen::CwiseBinaryOp<Eigen::internal::scalar_sum_op<double, double>, const Eigen::CwiseBinaryOp<Eigen::internal::scalar_sum_op<double, double>, const Eigen::CwiseBinaryOp<Eigen::internal::scalar_sum_op<double, double>, const Eigen::IndexedView<const Eigen::Matrix<double, 4, 4>, double, EGriceLab::HmmUFOtu::DNASubModel::Base>, const Eigen::IndexedView<const Eigen::Matrix<double, 4, 4>, EGriceLab::HmmUFOtu::DNASubModel::Base, double> >, const Eigen::IndexedView<const Eigen::Matrix<double, 4, 4>, double, EGriceLab::HmmUFOtu::DNASubModel::Base> >, const Eigen::IndexedView<const Eigen::Matrix<double, 4, 4>, EGriceLab::HmmUFOtu::DNASubModel::Base, double> >, const Eigen::CwiseNullaryOp<Eigen::internal::scalar_constant_op, const Eigen::Matrix<double, -1, -1> > >
HKY85.h:166:64: error: no match for ‘operator+’ (operand types are ‘const Eigen::CwiseBinaryOp<Eigen::internal::scalar_sum_op<double, double>, const Eigen::CwiseBinaryOp<Eigen::internal::scalar_sum_op<double, double>, const Eigen::CwiseBinaryOp<Eigen::internal::scalar_sum_op<double, double>, const Eigen::CwiseBinaryOp<Eigen::internal::scalar_sum_op<double, double>, const Eigen::IndexedView<const Eigen::Matrix<double, 4, 4>, double, double>, const Eigen::IndexedView<const Eigen::Matrix<double, 4, 4>, double, EGriceLab::HmmUFOtu::DNASubModel::Base> >, const Eigen::IndexedView<const Eigen::Matrix<double, 4, 4>, double, double> >, const Eigen::IndexedView<const Eigen::Matrix<double, 4, 4>, double, EGriceLab::HmmUFOtu::DNASubModel::Base> >, const Eigen::IndexedView<const Eigen::Matrix<double, 4, 4>, EGriceLab::HmmUFOtu::DNASubModel::Base, double> >’ and ‘const double’)
166 | double q = (D(A,C) + D(A,T) + D(C,A) + D(C,G) + D(G,C) + D(G,T) + D(T,A) + D(T,G)) / N; /
observed Tv diff /
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^ ~~~~~~
| | |
| | const double
| const Eigen::CwiseBinaryOp<Eigen::internal::scalar_sum_op<double, double>, const Eigen::CwiseBinaryOp<Eigen::internal::scalar_sum_op<double, double>, const Eigen::CwiseBinaryOp<Eigen::internal::scalar_sum_op<double, double>, const Eigen::CwiseBinaryOp<Eigen::internal::scalar_sum_op<double, double>, const Eigen::IndexedView<const Eigen::Matrix<double, 4, 4>, double, double>, const Eigen::IndexedView<const Eigen::Matrix<double, 4, 4>, double, EGriceLab::HmmUFOtu::DNASubModel::Base> >, const Eigen::IndexedView<const Eigen::Matrix<double, 4, 4>, double, double> >, const Eigen::IndexedView<const Eigen::Matrix<double, 4, 4>, double, EGriceLab::HmmUFOtu::DNASubModel::Base> >, const Eigen::IndexedView<const Eigen::Matrix<double, 4, 4>, EGriceLab::HmmUFOtu::DNASubModel::Base, double> >
In file included from /usr/include/Eigen/Core:19,
from /usr/include/Eigen/Dense:1,
from MSA.h:33,
from HmmUFOtu_common.h:43,
from HmmUFOtu.h:29,
from hmmufotu.cpp:28:
/usr/include/eigen3/Eigen/src/plugins/CommonCwiseBinaryOps.h:27:1: note: candidate: ‘template const Eigen::CwiseBinaryOp<Eigen::internal::scalar_sum_op<typename Eigen::internal::traits::Scalar, typename Eigen::internal::traits::Scalar>, const Derived, const OtherDerived> Eigen::MatrixBase::operator+(const Eigen::MatrixBase&) const [with OtherDerived = OtherDerived; Derived = Eigen::CwiseBinaryOp<Eigen::internal::scalar_sum_op<double, double>, const Eigen::CwiseBinaryOp<Eigen::internal::scalar_sum_op<double, double>, const Eigen::CwiseBinaryOp<Eigen::internal::scalar_sum_op<double, double>, const Eigen::CwiseBinaryOp<Eigen::internal::scalar_sum_op<double, double>, const Eigen::IndexedView<const Eigen::Matrix<double, 4, 4>, double, double>, const Eigen::IndexedView<const Eigen::Matrix<double, 4, 4>, double, EGriceLab::HmmUFOtu::DNASubModel::Base> >, const Eigen::IndexedView<const Eigen::Matrix<double, 4, 4>, double, double> >, const Eigen::IndexedView<const Eigen::Matrix<double, 4, 4>, double, EGriceLab::HmmUFOtu::DNASubModel::Base> >, const Eigen::IndexedView<const Eigen::Matrix<double, 4, 4>, EGriceLab::HmmUFOtu::DNASubModel::Base, double> >]’
27 | EIGEN_MAKE_CWISE_BINARY_OP(operator+,sum)
| ^~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/eigen3/Eigen/src/plugins/CommonCwiseBinaryOps.h:27:1: note: template argument deduction/substitution failed:
In file included from HmmUFOtu_phylo.h:33,
from HmmUFOtu.h:31,
from hmmufotu.cpp:28:
HKY85.h:166:71: note: mismatched types ‘const Eigen::MatrixBase’ and ‘const double’
166 | double q = (D(A,C) + D(A,T) + D(C,A) + D(C,G) + D(G,C) + D(G,T) + D(T,A) + D(T,G)) / N; /
observed Tv diff */
| ^
In file included from HmmUFOtu_common.h:39,
from HmmUFOtu.h:29,
from hmmufotu.cpp:28:
DigitalSeq.h:206:19: note: candidate: ‘EGriceLab::HmmUFOtu::DigitalSeq EGriceLab::HmmUFOtu::operator+(const EGriceLab::HmmUFOtu::DigitalSeq&, const EGriceLab::HmmUFOtu::DigitalSeq&)’
206 | inline DigitalSeq operator+(const DigitalSeq& lhs, const DigitalSeq& rhs) {
| ^~~~~~~~
DigitalSeq.h:206:47: note: no known conversion for argument 1 from ‘const Eigen::CwiseBinaryOp<Eigen::internal::scalar_sum_op<double, double>, const Eigen::CwiseBinaryOp<Eigen::internal::scalar_sum_op<double, double>, const Eigen::CwiseBinaryOp<Eigen::internal::scalar_sum_op<double, double>, const Eigen::CwiseBinaryOp<Eigen::internal::scalar_sum_op<double, double>, const Eigen::IndexedView<const Eigen::Matrix<double, 4, 4>, double, double>, const Eigen::IndexedView<const Eigen::Matrix<double, 4, 4>, double, EGriceLab::HmmUFOtu::DNASubModel::Base> >, const Eigen::IndexedView<const Eigen::Matrix<double, 4, 4>, double, double> >, const Eigen::IndexedView<const Eigen::Matrix<double, 4, 4>, double, EGriceLab::HmmUFOtu::DNASubModel::Base> >, const Eigen::IndexedView<const Eigen::Matrix<double, 4, 4>, EGriceLab::HmmUFOtu::DNASubModel::Base, double> >’ to ‘const EGriceLab::HmmUFOtu::DigitalSeq&’
206 | inline DigitalSeq operator+(const DigitalSeq& lhs, const DigitalSeq& rhs) {
| ~~~~~~~~~~~~~~~~~~^~~
In file included from /usr/include/Eigen/Core:162,
from /usr/include/Eigen/Dense:1,
from MSA.h:33,
from HmmUFOtu_common.h:43,
from HmmUFOtu.h:29,
from hmmufotu.cpp:28:
/usr/include/Eigen/src/Core/util/Meta.h: In instantiation of ‘constexpr Eigen::Index Eigen::internal::size(const T&) [with T = double; Eigen::Index = long int]’:
/usr/include/Eigen/src/Core/IndexedView.h:125:45: required from ‘Eigen::Index Eigen::IndexedView<XprType, RowIndices, ColIndices>::rows() const [with XprType = const Eigen::Matrix<double, 4, 4>; RowIndices = double; ColIndices = EGriceLab::HmmUFOtu::DNASubModel::Base; Eigen::Index = long int]’
/usr/include/Eigen/src/Core/CwiseBinaryOp.h:116:7: required from ‘Eigen::CwiseBinaryOp<BinaryOp, Lhs, Rhs>::CwiseBinaryOp(const Lhs&, const Rhs&, const BinaryOp&) [with BinaryOp = Eigen::internal::scalar_sum_op<double, double>; LhsType = const Eigen::IndexedView<const Eigen::Matrix<double, 4, 4>, double, EGriceLab::HmmUFOtu::DNASubModel::Base>; RhsType = const Eigen::IndexedView<const Eigen::Matrix<double, 4, 4>, EGriceLab::HmmUFOtu::DNASubModel::Base, double>; Eigen::CwiseBinaryOp<BinaryOp, Lhs, Rhs>::Lhs = Eigen::IndexedView<const Eigen::Matrix<double, 4, 4>, double, EGriceLab::HmmUFOtu::DNASubModel::Base>; Eigen::CwiseBinaryOp<BinaryOp, Lhs, Rhs>::Rhs = Eigen::IndexedView<const Eigen::Matrix<double, 4, 4>, EGriceLab::HmmUFOtu::DNASubModel::Base, double>]’
/usr/include/eigen3/Eigen/src/plugins/CommonCwiseBinaryOps.h:27:1: required from ‘const Eigen::CwiseBinaryOp<Eigen::internal::scalar_sum_op<typename Eigen::internal::traits::Scalar, typename Eigen::internal::traits::Scalar>, const Derived, const OtherDerived> Eigen::MatrixBase::operator+(const Eigen::MatrixBase&) const [with OtherDerived = Eigen::IndexedView<const Eigen::Matrix<double, 4, 4>, EGriceLab::HmmUFOtu::DNASubModel::Base, double>; Derived = Eigen::IndexedView<const Eigen::Matrix<double, 4, 4>, double, EGriceLab::HmmUFOtu::DNASubModel::Base>; typename Eigen::internal::traits::Scalar = double; typename Eigen::internal::traits::Scalar = double]’
HKY85.h:165:28: required from here
/usr/include/Eigen/src/Core/util/Meta.h:479:51: error: request for member ‘size’ in ‘x’, which is of non-class type ‘const double’
479 | EIGEN_CONSTEXPR Index size(const T& x) { return x.size(); }
| ~~^~~~
/usr/include/Eigen/src/Core/util/Meta.h: In instantiation of ‘constexpr Eigen::Index Eigen::internal::size(const T&) [with T = EGriceLab::HmmUFOtu::DNASubModel::Base; Eigen::Index = long int]’:
/usr/include/Eigen/src/Core/IndexedView.h:125:45: required from ‘Eigen::Index Eigen::IndexedView<XprType, RowIndices, ColIndices>::rows() const [with XprType = const Eigen::Matrix<double, 4, 4>; RowIndices = EGriceLab::HmmUFOtu::DNASubModel::Base; ColIndices = double; Eigen::Index = long int]’
/usr/include/Eigen/src/Core/CwiseBinaryOp.h:116:7: required from ‘Eigen::CwiseBinaryOp<BinaryOp, Lhs, Rhs>::CwiseBinaryOp(const Lhs&, const Rhs&, const BinaryOp&) [with BinaryOp = Eigen::internal::scalar_sum_op<double, double>; LhsType = const Eigen::IndexedView<const Eigen::Matrix<double, 4, 4>, double, EGriceLab::HmmUFOtu::DNASubModel::Base>; RhsType = const Eigen::IndexedView<const Eigen::Matrix<double, 4, 4>, EGriceLab::HmmUFOtu::DNASubModel::Base, double>; Eigen::CwiseBinaryOp<BinaryOp, Lhs, Rhs>::Lhs = Eigen::IndexedView<const Eigen::Matrix<double, 4, 4>, double, EGriceLab::HmmUFOtu::DNASubModel::Base>; Eigen::CwiseBinaryOp<BinaryOp, Lhs, Rhs>::Rhs = Eigen::IndexedView<const Eigen::Matrix<double, 4, 4>, EGriceLab::HmmUFOtu::DNASubModel::Base, double>]’
/usr/include/eigen3/Eigen/src/plugins/CommonCwiseBinaryOps.h:27:1: required from ‘const Eigen::CwiseBinaryOp<Eigen::internal::scalar_sum_op<typename Eigen::internal::traits::Scalar, typename Eigen::internal::traits::Scalar>, const Derived, const OtherDerived> Eigen::MatrixBase::operator+(const Eigen::MatrixBase&) const [with OtherDerived = Eigen::IndexedView<const Eigen::Matrix<double, 4, 4>, EGriceLab::HmmUFOtu::DNASubModel::Base, double>; Derived = Eigen::IndexedView<const Eigen::Matrix<double, 4, 4>, double, EGriceLab::HmmUFOtu::DNASubModel::Base>; typename Eigen::internal::traits::Scalar = double; typename Eigen::internal::traits::Scalar = double]’
HKY85.h:165:28: required from here
/usr/include/Eigen/src/Core/util/Meta.h:479:51: error: request for member ‘size’ in ‘x’, which is of non-class type ‘const EGriceLab::HmmUFOtu::DNASubModel::Base’
make[2]: *** [Makefile:853: hmmufotu.o] Error 1
make[2]: Leaving directory '/home/snyoo/HmmUFOtu-1.5.1/src'
make[1]: *** [Makefile:984: all-recursive] Error 1
make[1]: Leaving directory '/home/snyoo/HmmUFOtu-1.5.1/src'
make: *** [Makefile:394: all-recursive] Error 1

Thank you in advance for your assistance.

Best regards,

Shinnam Yoo

Can HmmUFOtu be used on non bacterial taxa?

Hello! I would like to test your implementation on a wider range of taxa beyond bacterial and with different markers. Can HmmUFOtu handle this assuming I construct the trees with BL optimized?

Best,

Sergio #

error in hmmufotu-build

Hi,
I would like to use hmmufotu with the Silva database. I tried running the hmmufotu-build command using the silva aligned sequences and the tree file that are available for qiime2. However, I get the following error with hmmufotu-build rep_set_aligned/99/99_alignment.fna trees/99/99_otus.tre -n Silva132_hmmufotu_GTR -s GTR -p 20:

hmmufotu-build: MSA.cpp:156: long int EGriceLab::HmmUFOtu::MSA::loadMSAFasta(const EGriceLab::HmmUFOtu::DegenAlphabet*, std::istream&): Assertion `concatMSA.length() == numSeq * csLen' failed.

Do you know what causes the error? Am I using the wrong kind of input files? Are you by any chance planning to also put pre-built databases for Silva on your website?

Thanks a lot!

Cheers,
Christiane

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.