Giter Site home page Giter Site logo

tgac / kat Goto Github PK

View Code? Open in Web Editor NEW
197.0 23.0 51.0 50.2 MB

The K-mer Analysis Toolkit (KAT) contains a number of tools that analyse and compare K-mer spectra.

Home Page: http://www.earlham.ac.uk/kat-tools

License: GNU General Public License v3.0

Shell 0.29% C++ 87.86% Python 8.04% Makefile 0.38% M4 3.43%

kat's Introduction

alt text

KAT - The K-mer Analysis Toolkit

KAT is a suite of tools that analyse jellyfish hashes or sequence files (fasta or fastq) using kmer counts. The following tools are currently available in KAT:

  • hist: Create an histogram of k-mer occurrences from a sequence file. Adds metadata in output for easy plotting.
  • gcp: K-mer GC Processor. Creates a matrix of the number of K-mers found given a GC count and a K-mer count.
  • comp: K-mer comparison tool. Creates a matrix of shared K-mers between two (or three) sequence files or hashes.
  • sect: SEquence Coverage estimator Tool. Estimates the coverage of each sequence in a file using K-mers from another sequence file.
  • blob: Given, reads and an assembly, calculates both the read and assembly K-mer coverage along with GC% for each sequence in the assembly.SEquence Coverage estimator Tool.
  • filter: Filtering tools. Contains tools for filtering k-mer hashes and FastQ/A files:
    • kmer: Produces a k-mer hash containing only k-mers within specified coverage and GC tolerances.
    • seq: Filters a sequence file based on whether or not the sequences contain k-mers within a provided hash.
  • plot: Plotting tools. Contains several plotting tools to visualise K-mer and compare distributions. The following plot tools are available:
    • density: Creates a density plot from a matrix created with the "comp" tool. Typically this is used to compare two K-mer hashes produced by different NGS reads.
    • profile: Creates a K-mer coverage plot for a single sequence. Takes in fasta coverage output coverage from the "sect" tool
    • spectra-cn: Creates a stacked histogram using a matrix created with the "comp" tool. Typically this is used to compare a jellyfish hash produced from a read set to a jellyfish hash produced from an assembly. The plot shows the amount of distinct K-mers absent, as well as the copy number variation present within the assembly.
    • spectra-hist: Creates a K-mer spectra plot for a set of K-mer histograms produced either by jellyfish-histo or kat-histo.
    • spectra-mx: Creates a K-mer spectra plot for a set of K-mer histograms that are derived from selected rows or columns in a matrix produced by the "comp".

In addition, KAT contains a python script for analysing the mathematical distributions present in the K-mer spectra in order to determine how much content is present in each peak.

This README only contains some brief details of how to install and use KAT. For more extensive documentation please visit: https://kat.readthedocs.org/en/latest/

Installation

From brew

If you have brew installed on your system you should be able to install a recent version of KAT by simply typing:

brew install brewsci/bio/kat

Many thanks to @sjackman for this one!

From bioconda

If you use bioconda you can install KAT using :

bioconda install kat

From Source

If you wish to install KAT from source, because you don't have brew installed, or wish to ensure you have the latest version, first ensure these dependencies are installed and configured on your system:

  • GCC V4.8+
  • make
  • autoconf V2.53+
  • automake V1.11+
  • libtool V2.4.2+
  • pthreads (probably already installed)
  • zlib
  • Python V3.5+ with the tabulate, scipy, numpy and matplotlib packages and C API installed. Python is optional but highly recommended, without python, KAT functionality is limited: no plots, no distribution analysis, and no documentation.
  • Sphinx-doc V1.3+ (Optional: only required for building the documentation.

NOTE ON INSTALLING PYTHON: Many system python installations do not come with the C API immediately available, which prevents KAT from embedding python code. We typically would recommend installing anaconda3 as this would include the latest version of python, all required python packages as well as the C API. If you are running a debian system and the C libraries are not available by default and you wish to use the system python installation the you can install them using: sudo apt-get install python-dev. Also if you are using a python installation outside your system directory, please make sure you have your PATH and LD_LIBRARY_PATH (or LD_RUN_PATH) environment variables set appropriately.

Then proceed with the following steps:

  • Clone the git repository (For ssh: git clone [email protected]:TGAC/KAT.git; or for https: git clone https://github.com/TGAC/KAT.git), into a directory on your machine.
  • Change directory into KAT project: cd KAT
  • Build boost (this may take some time): ./build_boost.sh
  • Setup the KAT configuration scripts by typing: ./autogen.sh.
  • Generate makefiles and confirm dependencies: ./configure. The configure script can take several options as arguments. One commonly modified option is --prefix, which will install KAT to a custom directory. By default this is /usr/local, so the KAT executable would be found at /usr/local/bin by default. Python functionality can be disabled using --disable-pykat. Type ./configure --help for full list of options. Please check the output to ensure the configuration is setup as you'd expect.
  • Compile software: make. You can leverage extra cores duing the compilation process using the -j <#cores> option. Also you can see all command lines used to build the software by setting V=1.
  • Run tests (optional) make check. (The -j and V=1 options described above are also supported here.)
  • Install: make install. If you've not provided a specific installation directory, you will likely need to prefix this command with sudo in order to provide the permissions required to install to /usr/local.

If sphinx is installed and detected on your system then html documentation and man pages are automatically built during the build process. If it is not detected then this step is skipped. Should you wish to create a PDF version of the manual you can do so by entering the doc directory and typing make pdf, this is not executed by default.

NOTE: if KAT is failing at the ./autogen.sh step you will likely need to install autotools. The following command should do this on MacOS: brew install autoconf automake libtool. On a debian system this can be done with: sudo apt-get install autoconf automake libtool.

Python scripts

KAT will install some python scripts to your <prefix>/bin directory. If you selected a custom location for prefix and wish to access these scripts directly, then it may be necessary to modify your $PYTHONPATH environment variable. Ensure that <prefix>/lib/python<version>/site-packages, is on your PYTHONPATH, where represents the python version to used when installing KAT e.g. /home/me/kat/lib/python3.6/site-packages. Alternatively, you could install the kat python package into a python environment by changing into the scripts directory and typing python setup.py install.

Operating Instructions

After KAT has been installed, the kat executable file should be available which contains a number of subtools.

Running kat --help will bring up a list of available tools within kat. To get help on any of these subtools simple type: kat <tool> --help. For example: kat sect --help will show details on how to use the sequence coverage estimator tool.

KAT supports file globbing for input, this is particularly useful when trying to count and analyse kmers for paired end files. For example, assuming you had two files: LIB_R1.fastq, LIB_R2.fastq in the current directory then kat hist -C -m27 LIB_R?.fastq, will consume any files matching the pattern LIB_R?.fastq as input, i.e. LIB_R1.fastq, LIB_R2.fastq. The same result could be achieved listing the files at the command line: kat hist -C -m27 LIB_R1.fastq LIB_R2.fastq

Note, the KAT comp subtool takes 2 or three groups of inputs as positional arguments therefore we need to distinguish between the file groups. This is achieved by surrounding any glob patterns or file lists in single quotes. For example, assuming we have LIB1_R1.fastq, LIB1_R2.fastq, LIB2_R1.fastq, LIB2_R2.fastq in the current directory, and we want to compare LIB1 against LIB2, instead of catting the files together, we might run either: kat comp -C -D 'LIB1_R?.fastq' 'LIB2_R?.fastq'; or kat comp -C -D 'LIB1_R1.fastq LIB1_R2.fastq' 'LIB2_R1.fastq LIB2_R2.fastq'. Both commands do the same thing.

Licensing

GNU GPL V3. See COPYING file for more details.

Cite

If you use KAT in your work and wish to cite us please use the following citation:

Daniel Mapleson, Gonzalo Garcia Accinelli, George Kettleborough, Jonathan Wright, and Bernardo J. Clavijo. KAT: A K-mer Analysis Toolkit to quality control NGS datasets and genome assemblies. Bioinformatics, 2016. doi: 10.1093/bioinformatics/btw663

Authors

  • Daniel Mapleson (The software architect and developer)
  • Gonzalo Garcia (KAT superuser and primary tester)
  • George Kettleborough (For the recent python plotting functionality)
  • Jon Wright (KAT superuser and documentation writer)
  • Bernardo Clavijo (KAT's godfather, evangelist and all-round k-mer guru)

See AUTHORS file for more details.

Acknowledgements

  • Affiliation: Earlham Institute (EI)
  • Funding: The Biotechnology and Biological Sciences Research Council (BBSRC)

We would also like to thank the authors of Jellyfish: https://github.com/gmarcais/Jellyfish; and SeqAn: http://www.seqan.de/. Both are embedded inside KAT.

kat's People

Contributors

bjclavijo avatar fmaguire avatar georgek avatar jvhaarst avatar kbseah avatar maplesond avatar sjackman avatar wpoely86 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

kat's Issues

SMall typo in error message

Error: Either --list of --intersection must be given.

I think this should say 'or' rather than 'of'.

This is in kat 2.1.0 beta2 (kat plot spectra-mx)

Segmentation fault when running KAT

I I compiled with

1) boost/1.58      2) libtool/2.4.6   3) gnuplot/5.0.1   4)  gcc/5.1.0 

and finally manage to install KAT V2.0.8 but still couldn't run it :(
I need to run it on a HPC so I've written a job script and submitted it to the compute nodes.
However, it gave me the error message

~/KAT/KAT-2.0.8/bin/kat comp -C -D --d1_bins 2000 *_L001_R?.fastq 
Kmer Analysis Toolkit (KAT) V2.0.8

Running KAT in COMP mode
------------------------

Segmentation fault

I tried to run it on head node without submitting to compute nodes, it's still the same.

Our HPC runs on SUSE Linux Enterprise Server 11 (x86_64) and PBSPro_11.2.0.113417

make check failed

Hi,

When running tests 4 out of 5 failed. I can still "sudo make install", but failed to run kat with the error message of
"Throw location unknown (consider using BOOST_THROW_EXCEPTION)
Dynamic exception type: boost::exception_detail::clone_implboost::exception_detail::error_info_injector<std::logic_error >
std::exception::what: character conversion failed".

Thanks,
Quan

kat 2.1.1: tests/test-suite.log

TOTAL: 5

PASS: 1

SKIP: 0

XFAIL: 0

FAIL: 4

XPASS: 0

ERROR: 0

.. contents:: :depth: 2

FAIL: test_hist

Kmer Analysis Toolkit (KAT) V2.1.1

kat.cc(93): Throw in function Mode parseMode(std::__cxx11::string)
Dynamic exception type: boost::exception_detail::clone_impl
std::exception::what: std::exception
[KatError*] = Could not recognise mode string:

FAIL: test_gcp

Kmer Analysis Toolkit (KAT) V2.1.1

kat.cc(93): Throw in function Mode parseMode(std::__cxx11::string)
Dynamic exception type: boost::exception_detail::clone_impl
std::exception::what: std::exception
[KatError*] = Could not recognise mode string:

FAIL: test_sect

Kmer Analysis Toolkit (KAT) V2.1.1

kat.cc(93): Throw in function Mode parseMode(std::__cxx11::string)
Dynamic exception type: boost::exception_detail::clone_impl
std::exception::what: std::exception
[KatError*] = Could not recognise mode string:

FAIL: test_comp

Kmer Analysis Toolkit (KAT) V2.1.1

kat.cc(93): Throw in function Mode parseMode(std::__cxx11::string)
Dynamic exception type: boost::exception_detail::clone_impl
std::exception::what: std::exception
[KatError*] = Could not recognise mode string:

kat-2.1.1/lib: Makefile injects -O3

Although in general my CFLAGS and CXXFLAGS were respect by configure somewhere something injects "-g -O3":

Making all in lib
make[2]: Entering directory '/scratch/var/tmp/portage/sci-biology/kat-2.1.1/work/kat-2.1.1/lib'
/bin/sh ../libtool --tag=CXX --mode=compile x86_64-pc-linux-gnu-g++ -DHAVE_CONFIG_H -I. -I.. -isystem ../deps/jellyfish-2.2.0/include -isystem ../lib/include -I/usr/include -g -O3 -fwrapv -Wall -Wextra -Wno-deprecated-declarations -Wno-unused-function -Wno-unused-parameter -Wno-unused-variable -ansi -pedantic -Werror -std=c++11 -DCPLUSPLUS -O2 -pipe -maes -mpclmul -mpopcnt -mavx -march=native -std=gnu++11 -c -o src/libkat_2_1_la-gnuplot_i.lo test -f 'src/gnuplot_i.cc' || echo './'src/gnuplot_i.cc

I could grep through the Makefiles and config.status files but I assume you can easily reproduce this for testing.

configure error

Hi,

I am trying to install KAT, but end up with the following error after running ./configure:
sh ./configure --with-boost=~/tools/boost_1_55_0/

.....
checking for boostlib >= 1.52... yes
checking whether the Boost::Filesystem library is available... yes
configure: WARNING: Could not find a dynamic version of the library!
configure: error: Could not find any version of the library to link to

Is it a problem with boost or something else?

Thanks!

Update README.md to emphasize that a bundled jellyfish-2.2.0 is included

Hi,
I was surprised that a bundled jellyfish is included in the source tarball. I have jellyfish already installed. Even more surprisingly you say elsewhere it is a "modified" version. I think you should provide a link to the patch with your changes and second, ensure the modified binary is installed under a new name so that it does not overwrite my current, vanilla jellyfish.

problems when running KAT in COMP mode

Dear developers,
I'm trying to run KAT COMP using the outputs of jellyfish count and the following error comes up:
Kmer Analysis Toolkit (KAT) V2.1.0

Running KAT in COMP mode

Loading hashes into memory...Loading hashes into memory...Loading hashes into memory... Time taken: Time taken: 0.00.0ss

../deps/seqan-library-2.0.0/include/seqan/basic/basic_exception.h:../deps/seqan-library-2.0.0/include/seqan/basic/basic_exception.h:368 FAILED! (Uncaught exception of type boost::exception_detail::clone_implkat::JellyfishException: std::exception)

I've installed the latest version of KAT and all dependencies. I assume that it is not a memory problem, since jellyfish run well and KAT says that the hashes have been loaded into memory. Any ideas?
Thanks,
Javier

Make --version more standardised

Best to follow the GNU standard to make parsing easier for things like Galaxy etc

OLD:

% kat --version
Kmer Analysis Toolkit (KAT) V2.0.8

NEW:

% kat --version
kat 2.0.8

Compiler warnings about deprecated "auto_ptr" ?

Is this a BOOST or a KAT problem?

/bio/linuxbrew/opt/boost//include/boost/get_pointer.hpp:27:40: warning: 'template<class> class std::auto_ptr' is deprecated [-Wdeprecated-dec
larations]
 template<class T> T * get_pointer(std::auto_ptr<T> const& p)
                                        ^
In file included from /bio/linuxbrew/Cellar/gcc/5.2.0/include/c++/5.2.0/memory:81:0,
                 from /bio/linuxbrew/opt/boost//include/boost/config/no_tr1/memory.hpp:21,
                 from /bio/linuxbrew/opt/boost//include/boost/smart_ptr/shared_ptr.hpp:23,
                 from /bio/linuxbrew/opt/boost//include/boost/shared_ptr.hpp:17,
                 from /bio/linuxbrew/opt/boost//include/boost/exception/get_error_info.hpp:18,
                 from /bio/linuxbrew/opt/boost//include/boost/exception/diagnostic_information.hpp:16,
                 from /bio/linuxbrew/opt/boost//include/boost/exception/all.hpp:15,
                 from kat.cc:28:
/bio/linuxbrew/Cellar/gcc/5.2.0/include/c++/5.2.0/bits/unique_ptr.h:49:28: note: declared here
   template<typename> class auto_ptr;
                            ^
In file included from /bio/linuxbrew/opt/boost//include/boost/bind/mem_fn.hpp:25:0,
                 from /bio/linuxbrew/opt/boost//include/boost/mem_fn.hpp:22,
                 from /bio/linuxbrew/opt/boost//include/boost/function/detail/prologue.hpp:18,
                 from /bio/linuxbrew/opt/boost//include/boost/function.hpp:24,
                 from /bio/linuxbrew/opt/boost//include/boost/algorithm/string/detail/find_iterator.hpp:18,
                 from /bio/linuxbrew/opt/boost//include/boost/algorithm/string/find_iterator.hpp:24,
                 from /bio/linuxbrew/opt/boost//include/boost/algorithm/string/iter_find.hpp:27,
                 from /bio/linuxbrew/opt/boost//include/boost/algorithm/string/split.hpp:16,
                 from /bio/linuxbrew/opt/boost//include/boost/algorithm/string.hpp:23,
                 from sect.cc:39:
/bio/linuxbrew/opt/boost//include/boost/get_pointer.hpp:27:40: warning: 'template<class> class std::auto_ptr' is deprecated [-Wdeprecated-declarations]
 template<class T> T * get_pointer(std::auto_ptr<T> const& p)
                                        ^
In file included from /bio/linuxbrew/Cellar/gcc/5.2.0/include/c++/5.2.0/memory:81:0,
                 from sect.cc:23:
/bio/linuxbrew/Cellar/gcc/5.2.0/include/c++/5.2.0/bits/unique_ptr.h:49:28: note: declared here
   template<typename> class auto_ptr;
                            ^

Error reading input files in kat comp

Cloned repo, and compiled as per usual, all tests pass except the swig bindings.

GCC - 4.8.2-19ubuntu1
Boost version- 1.54.0.1ubuntu1
Jellyfish version- 1.1.10

Generated jellyfish hashes fine using the standard commands

jellyfish count -t 64 - m31 -C -s 10000000000 -o q30a1.jf31  q30a1.fq
jellyfish count -t 64 - m31 -C -s 10000000000 -o q30a2.jf31  q30a2.fq

But when I try to run kat comp I'm running into errors to do with reading the inputs in the option parsing (I've tried both abspaths and relpaths as well as removing any possible weird filename characters like multiple periods)

$ kat comp q30a1.jf31_0 q30a2.jf31_0

Kmer Analysis Toolkit (KAT) V2.0.5

Running KAT in COMP mode
------------------------

KAT COMP completed.
Total runtime: 0.0s

input_handler.cc(59): Throw in function void kat::InputHandler::validateInput()
Dynamic exception type: boost::exception_detail::clone_impl<kat::JellyfishException>
std::exception::what: std::exception
[kat::JellyfishError*] = Could not find input file at: ; please check the path and try again.
Kmer Analysis Toolkit (KAT) V2.0.5

Interestingly if I provide a filepath that doesn't exist the error message correctly outputs the filepath instead of leaving it blank.

$ kat comp foo bar

Kmer Analysis Toolkit (KAT) V2.0.5

Running KAT in COMP mode
------------------------

KAT COMP completed.
Total runtime: 0.0s

input_handler.cc(59): Throw in function void kat::InputHandler::validateInput()
Dynamic exception type: boost::exception_detail::clone_impl<kat::JellyfishException>
std::exception::what: std::exception
[kat::JellyfishError*] = Could not find input file at: foo; please check the path and try again.

Any idea what my issue is? Something with bfs::path?

Compiling with a non-standard python3 location

Is there a way to compile with a non-standard python location? I am using environment modules and it finds the python3 binary, but not the include or lib directories (consequently, configure fails as it is unable to find Python.h). I tried adding the variables CPPFLAGS, LIBS and LDFLAGS with no luck. Thanks in advance.

Symlink to fasta read in as hash

Hi Dan,

I think the issue here is my file which is a symlink to a symlink of a fasta file is being read in as a jellyfish hash. (I'm not certain is the cause, but it's the most likely I came up with given the error)

Error output:
/pica/v3/b2011228_nobackup/Debaryomyces_automated/04_Validation/P1260_1001/P1260_1001_soapdenovo_67_assembly.fasta exists or is linked correctly
Kmer Analysis Toolkit (KAT) V2.0.6

Running KAT in COMP mode

Input is a sequence file. Counting kmers for Allreads.fastq ... done. Time taken: 15.1s

KAT COMP completed.
Total runtime: 15.2s

input_handler.cc(94): Throw in function void kat::InputHandler::validateMerLen(uint16_t)
Dynamic exception type: boost::exception_detail::clone_implkat::JellyfishException
std::exception::what: std::exception
[kat::JellyfishError*] = Cannot process hashes that were created with different K-mer lengths. Expected: 27. Key length was 0 for : /pica/v3/b2011228_nobackup/Debaryomyces_automated/04_Validation/P1260_1001/P1260_1001_soapdenovo_67_assembly.fasta

Regards,
Mahesh.

kat 1.x vs kat 2.x problem

I package software for homebrew-science, and I am not sure what to do with KAT.

Is kat 2,x a complete replacement for kat?

If not, can you change kat 2.x to use executables like "kat2" so it doesn't conflict?

not able to make KAT-2.0.7

After a whole bunch of warnings, my make stopped with

Making all in tests
make[2]: Entering directory `/home/zxc561/KAT/tests'
make[2]: Nothing to be done for `all'.
make[2]: Leaving directory `/home/zxc561/KAT/tests'
make[2]: Entering directory `/home/zxc561/KAT'
make[2]: *** No rule to make target `deps/seqan-library-2.0.0.tar.gz', needed by `all-am'.  Stop.
make[2]: Leaving directory `/home/zxc561/KAT'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/home/zxc561/KAT'
make: *** [all] Error 2

I configured with

./configure --prefix=$PWD --with-boost-libdir=/apps/boost/1.58.0/lib --with-boost=/apps/boost/1.58.0

Was using cmake/2.8.12.1 initially so I thought it was about cmake so I then changed to cmake/3.0.1 and the same problem was still there.

I've added the following packages to my PATH, as well as autoconfig 2.69 and automake/1.15

 1) gnuplot/5.0.1   2) boost/1.58      3) gcc/5.2.0       4) cmake/3.0.1

Compilation of gnuplot library fails

make fails on src/libkat_2_1_la-gnuplot_i.lo:

make[2]: Entering directory '/home/johnomics/bin/KAT/kat-2.1.1/lib'
  CXX      src/libkat_2_1_la-gnuplot_i.lo
src/gnuplot_i.cc: In destructor 'Gnuplot::~Gnuplot()':
src/gnuplot_i.cc:412:74: error: throw will always call terminate() [-Werror=terminate]
         throw GnuplotException("Problem closing communication to gnuplot");
                                                                          ^
src/gnuplot_i.cc:412:74: note: in C++11 destructors default to noexcept
cc1plus: all warnings being treated as errors
Makefile:538: recipe for target 'src/libkat_2_1_la-gnuplot_i.lo' failed
make[2]: *** [src/libkat_2_1_la-gnuplot_i.lo] Error 1
make[2]: Leaving directory '/home/johnomics/bin/KAT/kat-2.1.1/lib'
Makefile:550: recipe for target 'all-recursive' failed
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory '/home/johnomics/bin/KAT/kat-2.1.1'
Makefile:442: recipe for target 'all' failed
make: *** [all] Error 2

Using gcc version 6.2.1, KAT versions 2.2.0 and 2.1.1. Please could you suggest a fix for this?

2.0.7 compiled but fails on make install

I think you are trying ot change to a folder called /deps because $(DESTDIR) is empty ?

make  install-data-hook
make[3]: Entering directory '/home/tseemann/git/KAT'
cd /deps; \
cat deps/seqan-library-2.0.0.tar.gz | gunzip |  -H gnu --list > uninstall_manifest.txt; \
cat deps/seqan-library-2.0.0.tar.gz | gunzip |  -H gnu --no-same-owner --extract; \
rm --force deps/seqan-library-2.0.0.tar.gz; \
cat uninstall_manifest.txt | sed --expression='s/^\|$/"/g' | xargs chmod a=rX,u+w
/bin/sh: line 0: cd: /deps: No such file or directory
/bin/sh: line 1: -H: command not found
/bin/sh: line 2: -H: command not found
chmod: missing operand after โ€˜a=rX,u+wโ€™
Try 'chmod --help' for more information.
Makefile:941: recipe for target 'install-data-hook' failed
make[3]: *** [install-data-hook] Error 123
make[3]: Leaving directory '/home/tseemann/git/KAT'
Makefile:867: recipe for target 'install-data-am' failed
make[2]: *** [install-data-am] Error 2
make[2]: Leaving directory '/home/tseemann/git/KAT'
Makefile:821: recipe for target 'install-am' failed
make[1]: *** [install-am] Error 2
make[1]: Leaving directory '/home/tseemann/git/KAT'
Makefile:520: recipe for target 'install-recursive' failed
make: *** [install-recursive] Error 1

Makefile: spaces instead of tabs

I just tried to make KAT from the latest pull. After

./configure --prefix=$HOME/software/kat --with-boost=$HOME/software/boost;
make

I ran into Makefile:918: *** missing separator. Stop. Looks like you caught some leading spaces in install-data-hook: and uninstall-local: section.

Compiling jellyfish fails with clang: error: variable length array of non-POD element type 'std::__1::thread'

The workaround is to compile with GCC, but it would be nice to be able to compile with clang. Is it possible to disable compiling jellyfish and instead used the copy of jellyfish that I already have installed, possibly with a --with-jellyfish option?

Here's the failed build log:
https://gist.github.com/sjackman/9515296cd62592ad05c3a637e23e8dc9#file-02-make-L85

clang++ -DHAVE_CONFIG_H -I. -I..  -DCPLUSPLUS -I../deps/seqan-library-2.0.0/include -I../deps/jellyfish-2.2.0/include -I../deps/jellyfish-2.2.0/include -I/usr/local/Cellar/boost/1.60.0_1/include  -g -O3 -Wno-conversion-null -Wno-unused-result -Wno-unused-function -Wno-sign-compare -Wnon-virtual-dtor -std=c++11 -DCPLUSPLUS -g -O2 -std=gnu++11 -c -o kat-plot_spectra_cn.o `test -f 'plot_spectra_cn.cc' || echo './'`plot_spectra_cn.cc
jellyfish_helper.cc:232:13: error: variable length array of non-POD element type 'std::__1::thread'
    thread t[threads];
            ^
1 error generated.
make[1]: *** [kat-jellyfish_helper.o] Error 1

kat-plot_density.o: In function `boost::filesystem::exists(boost::filesystem::path const&)': /usr/include/boost/filesystem/operations.hpp:446: undefined reference to `boost::filesystem::detail::status(boost::filesystem::path const&, boost::system::error_code*)'

Hi,
when trying to compile current git HEAD on my Gentoo Linux box I get:

kat-plot_density.o: In function `boost::filesystem::exists(boost::filesystem::path const&)':
/usr/include/boost/filesystem/operations.hpp:446: undefined reference to `boost::filesystem::detail::status(boost::filesystem::path const&, boost::system::error_code*)'
kat-plot_density.o: In function `boost::filesystem::symlink_status(boost::filesystem::path const&)':
/usr/include/boost/filesystem/operations.hpp:441: undefined reference to `boost::filesystem::detail::symlink_status(boost::filesystem::path const&, boost::system::error_code*)'
kat-plot_density.o: In function `boost::program_options::typed_value<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, char>::xparse(boost::any&, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&) const':
/usr/include/boost/program_options/detail/value_semantic.hpp:167: undefined reference to `boost::program_options::validate(boost::any&, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*, int)'
kat-plot_density.o: In function `boost::program_options::validation_error::validation_error(boost::program_options::validation_error::kind_t, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int)':
/usr/include/boost/program_options/errors.hpp:373: undefined reference to `boost::program_options::validation_error::get_template[abi:cxx11](boost::program_options::validation_error::kind_t)'
/usr/include/boost/program_options/errors.hpp:373: undefined reference to `boost::program_options::error_with_option_name::error_with_option_name(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int)'
kat-plot_density.o: In function `boost::program_options::typed_value<unsigned short, char>::name() const':
/usr/include/boost/program_options/detail/value_semantic.hpp:19: undefined reference to `boost::program_options::arg[abi:cxx11]'
kat-plot_density.o: In function `boost::program_options::typed_value<unsigned long, char>::name() const':
/usr/include/boost/program_options/detail/value_semantic.hpp:19: undefined reference to `boost::program_options::arg[abi:cxx11]'
kat-plot_density.o: In function `boost::program_options::typed_value<unsigned int, char>::name() const':
/usr/include/boost/program_options/detail/value_semantic.hpp:19: undefined reference to `boost::program_options::arg[abi:cxx11]'
kat-plot_density.o: In function `boost::program_options::typed_value<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, char>::name() const':
/usr/include/boost/program_options/detail/value_semantic.hpp:19: undefined reference to `boost::program_options::arg[abi:cxx11]'
kat-plot_density.o: In function `boost::program_options::typed_value<boost::filesystem::path, char>::name() const':
/usr/include/boost/program_options/detail/value_semantic.hpp:19: undefined reference to `boost::program_options::arg[abi:cxx11]'
kat-plot_density.o: In function `boost::program_options::error_with_option_name::~error_with_option_name()':
/usr/include/boost/program_options/errors.hpp:119: undefined reference to `vtable for boost::program_options::error_with_option_name'
kat-plot_density.o: In function `boost::program_options::error_with_option_name::~error_with_option_name()':
/usr/include/boost/program_options/errors.hpp:119: undefined reference to `vtable for boost::program_options::error_with_option_name'
/usr/include/boost/program_options/errors.hpp:119: undefined reference to `vtable for boost::program_options::error_with_option_name'
/usr/include/boost/program_options/errors.hpp:119: undefined reference to `vtable for boost::program_options::error_with_option_name'
/usr/include/boost/program_options/errors.hpp:119: undefined reference to `vtable for boost::program_options::error_with_option_name'
kat-plot_density.o:/usr/include/boost/program_options/errors.hpp:119: more undefined references to `vtable for boost::program_options::error_with_option_name' follow
kat-plot_density.o: In function `std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > boost::program_options::to_internal<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >(std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&)':
/usr/include/boost/program_options/detail/convert.hpp:79: undefined reference to `boost::program_options::to_internal(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
kat-plot_density.o: In function `boost::program_options::basic_command_line_parser<char>::basic_command_line_parser(int, char const* const*)':
/usr/include/boost/program_options/detail/parsers.hpp:44: undefined reference to `boost::program_options::detail::cmdline::cmdline(std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&)'
kat-plot_density.o: In function `boost::program_options::basic_command_line_parser<char>::run()':
/usr/include/boost/program_options/detail/parsers.hpp:108: undefined reference to `boost::program_options::detail::cmdline::get_canonical_option_prefix()'
/usr/include/boost/program_options/detail/parsers.hpp:109: undefined reference to `boost::program_options::detail::cmdline::run()'
kat-plot_density.o: In function `boost::program_options::variables_map::~variables_map()':
/usr/include/boost/program_options/variables_map.hpp:146: undefined reference to `vtable for boost::program_options::variables_map'

I am just guessing here but ... it seems the Makefile does not refer to libboost_filesystem.{a,so} files:

$ grep BOOST src/Makefile
BOOST_CHRONO_LIB = -lboost_chrono-mt
BOOST_CHRONO_STATIC_LIB = /usr/lib64/libboost_chrono.a
BOOST_CPPFLAGS = -I/usr/include
BOOST_FILESYSTEM_LIB = -lboost_filesystem-mt
BOOST_FILESYSTEM_STATIC_LIB =
BOOST_LDFLAGS = -L/usr/lib64
BOOST_PROGRAM_OPTIONS_LIB = -lboost_program_options-mt
BOOST_PROGRAM_OPTIONS_STATIC_LIB =
BOOST_STATIC_LIBS = /usr/lib64/libboost_timer.a /usr/lib64/libboost_chrono.a -lrt /usr/lib64/libboost_system.a
BOOST_SYSTEM_LIB = -lboost_system-mt
BOOST_SYSTEM_STATIC_LIB = /usr/lib64/libboost_system.a
BOOST_TIMER_LIB = -lboost_timer-mt
BOOST_TIMER_STATIC_LIB = /usr/lib64/libboost_timer.a
$

Is my boost-1.62 too new?

Support for .fastq.gz files?

I thought SEQAN supported .gz streams?

% kat hist -t 72 -C -m 31 R1.fastq.gz
Kmer Analysis Toolkit (KAT) V2.0.8

Running KAT in HIST mode
------------------------

Input is a sequence file.  Counting kmers for Sa-R1.fastq.gz ...  Time taken: 0.1s

KAT HIST completed.
Total runtime: 0.1s

Error: Unsupported format

One pass filter seq on multiple fasta file

Our lab is trying to determine which plasmid sequences to filter in or out for more time consuming down stream analyses based on the filter seq command.

If we pass our multiple fasta file with all the sequences, it treats as a single filter target. If we split our fasta file up, we are suddenly running filter seq thousand of times on the same input fastq files. Is it possible to either add another column in --stats that indicate which target it in the multiple fasta file?

Don't install jellyfish include / man pages?

make install on kat seems to also install the jellyfish man and include folders.

These cause clashes with existing jellyfish installs.

Is there a way to not use the bundled jellyfish?

Sometimes hash doubling does not work.

Warning: Specified hash size insufficent - attempting to double hash size...
Warning: Specified hash size insufficent - attempting to double hash size...
Warning: Specified hash size insufficent - attempting to double hash size...
Warning: Specified hash size insufficent - attempting to double hash size...
Warning: Specified hash size insufficent - attempting to double hash size...
Warning: Specified hash size insufficent - attempting to double hash size...
Warning: Specified hash size insufficent - attempting to double hash size...
Warning: Specified hash size insufficent - attempting to double hash size...
Warning: Specified hash size insufficent - attempting to double hash size...
Warning: Specified hash size insufficent - attempting to double hash size...
Warning: Specified hash size insufficent - attempting to double hash size...
Warning: Specified hash size insufficent - attempting to double hash size...
Warning: Specified hash size insufficent - attempting to double hash size...
Warning: Specified hash size insufficent - attempting to double hash size...
Warning: Specified hash size insufficent - attempting to double hash size...
Warning: Specified hash size insufficent - attempting to double hash size...../deps/seqan-library-2.0.0/include/seqan/basic/basic_exception.h:368 FAILED! (Uncaught exception of type std::runtime_error: Hash full../deps/seqan-library-2.0.0/include/seqan/basic/basic_exception.h:368 FAILED! (Uncaught exception of type std::runtime_error: Hash full)
../deps/seqan-library-2.0.0/include/seqan/basic/basic_exception.h:368 FAILED! (Uncaught exception of type std::runtime_error: Hash full)
../deps/seqan-library-2.0.0/include/seqan/basic/basic_exception.h/var/spool/slurmd/job6484335/slurm_script: line 44: 19879 Aborted (core dumped) kat comp -p -t 16 -C -D -o unfiltered141121_BC5DJLANXXread1_vs_read2 $READFWD $READREV

It worked on the two files before, but then crashed on the third. I'm not sure what causes this.

auto-detect "-C"

This really is nothing crucial, but I forget to set the flag properly again today, so it would help me coping with my stupidity.. It should be quite easy to parse that information, e.g. jellyfish info HASH contains canonical: yes/no.

kat 2.0.6 generating invalid Makefile (spaces not tabs)

@bjclavijo
Using the 2.0.6 .tar.gz from the Releases page on Linuxbrew / RHEL 7 produces this error:

% ./configure

% make
Makefile:930: *** missing separator.  Stop.

I decided to run autoreconf -i to check if it was something local, but same problem:

 Makefile:941: *** missing separator.  Stop.

Both sections seem to point to this part:

install-data-hook:
    cd $(DESTDIR)/deps; \
    cat $(SEQAN_ARCHIVE) | gunzip | $(TAR) -H gnu --list > uninstall_manifest.txt; \
    cat $(SEQAN_ARCHIVE) | gunzip | $(TAR) -H gnu --no-same-owner --extract; \
    rm --force $(SEQAN_ARCHIVE); \
    cat uninstall_manifest.txt | sed --expression='s/^\|$$/"/g' | xargs chmod a=rX,u+w

uninstall-local:
    cd $(DESTDIR)/deps; \
    cat uninstall_manifest.txt | sed --expression='s/ /\\ /g' | xargs rm --force; \
    rm --force uninstall_manifest.txt

It appears the commands for these targets are using spaces instead of tabs which is invalid.

If I manually replace those 2 first lines with a tab the Makefile is syntactically correct.

configure.ac:8: error: possibly undefined macro: AC_PROG_LIBTOOL

I was trying to compile KAT on a ubuntu distribution (Linux minerva 3.13.0-96-generic #143-Ubuntu SMP Mon Aug 29 20:15:20 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux) and came across the following error:

ks575:~/software/KAT/KAT$ ./autogen.sh autoreconf: Entering directory.'
autoreconf: configure.ac: not using Gettext
autoreconf: running: aclocal --force -I m4 ${ACLOCAL_FLAGS}
autoreconf: configure.ac: tracing
autoreconf: configure.ac: adding subdirectory deps/jellyfish-2.2.0 to autoreconf
autoreconf: Entering directory deps/jellyfish-2.2.0' autoreconf: running: aclocal --force -I m4 autoreconf: configure.ac: not using Libtool autoreconf: running: /home2/ISAD/ks575/software/KAT/autoconf-2.69/build/bin/autoconf --force configure.ac:8: error: possibly undefined macro: AC_PROG_LIBTOOL If this token and others are legitimate, please use m4_pattern_allow. See the Autoconf documentation. autoreconf: /home2/ISAD/ks575/software/KAT/autoconf-2.69/build/bin/autoconf failed with exit status: 1

Any idea how to get over it?
Thanks

[kat::FileSystemError*] = Could not find jellyfish executable

I think it should be looking for jellyfishk ?

% kat hist
Kmer Analysis Toolkit (KAT) V2.0.8

inc/kat_fs.hpp(129): Throw in function kat::KatFS::KatFS(const char*)
Dynamic exception type: boost::exception_detail::clone_impl<kat::FileSystemException>
std::exception::what: std::exception
[kat::FileSystemError*] = Could not find jellyfish executable at: /bio/linuxbrew/Cellar/kat/2.0.8/bin/jellyfish

Maybe this code in jellyfish_helper.cc ?

path kat::JellyfishHelper::jellyfishExe = "jellyfish";

But this too?

 string jellyfishCmd =   kat::JellyfishHelper::jellyfishExe.empty() ?
                                "jellyfish" :
                                kat::JellyfishHelper::jellyfishExe.string();

Filter seq cannot use symlink fastq file

Started working on a Galaxy wrapper for filter seq and getting the following error when running the command : filter seq input.fastq -o reads db.jtf

Error: Unknown file extension of /tmp/tmpNs8Ym6/files/000/dataset_1.dat: iostream error

input.fastq is a soft link to /tmp/tmpNs8Ym6/files/000/dataset_1.dat . In Galaxy, all datasets have the same extension of .dat and cannot be changed. Is there a workaround that I am missing?

configure problem

configure.ac:42: error: possibly undefined macro: AM_PROG_AR
If this token and others are legitimate, please use m4_pattern_allow.
See the Autoconf documentation.
autoreconf: /usr/bin/autoconf failed with exit status: 1

kat-sect-counts.cvg - terminal kmers missing

Hi Dan,

I'm currently working with sects per sequence coverage count files and noticed that each record is 8 counts short at the end. I'm using a 19mer hash, I have not tested, if the number changes with other kmer sizes.

Building error

Jellyfish that comes with KAT is having problems building. It appears something went wrong with libtool but I am not sure:

./libtool: line 1901: 3: command not found

Downloaded: https://github.com/TGAC/KAT/releases/download/Release-2.0.3/kat-2.0.3.tar.gz

Using versions:

  • OS: RHEL6.6
  • gcc/4.8.2
  • boost-gcc/1.55.0
  • libtool/2.4.6

Make output:

$ make
make  all-recursive
make[1]: Entering directory `/usr/local/src/kat/kat-2.0.3'
Making all in deps/jellyfish-2.2.0
make[2]: Entering directory `/usr/local/src/kat/kat-2.0.3/deps/jellyfish-2.2.0'
make  all-recursive
make[3]: Entering directory `/usr/local/src/kat/kat-2.0.3/deps/jellyfish-2.2.0'
Making all in .
make[4]: Entering directory `/usr/local/src/kat/kat-2.0.3/deps/jellyfish-2.2.0'
  CXX      lib/rectangular_binary_matrix.lo
./libtool: line 1901: 3: command not found
  CXX      lib/mer_dna.lo
./libtool: line 1901: 3: command not found
  CXX      lib/storage.lo
./libtool: line 1901: 3: command not found
  CXX      lib/allocators_mmap.lo
./libtool: line 1901: 3: command not found
  CXX      lib/misc.lo
./libtool: line 1901: 3: command not found
  CXX      lib/int128.lo
./libtool: line 1901: 3: command not found
  CXX      lib/thread_exec.lo
./libtool: line 1901: 3: command not found
  CXX      lib/jsoncpp.lo
./libtool: line 1901: 3: command not found
  CXX      lib/time.lo
./libtool: line 1901: 3: command not found
  CXX      lib/generator_manager.lo
./libtool: line 1901: 3: command not found
  CXXLD    libjellyfish-2.0.la
libtool: link: `lib/rectangular_binary_matrix.lo' is not a valid libtool object
make[4]: *** [libjellyfish-2.0.la] Error 1
make[4]: Leaving directory `/usr/local/src/kat/kat-2.0.3/deps/jellyfish-2.2.0'
make[3]: *** [all-recursive] Error 1
make[3]: Leaving directory `/usr/local/src/kat/kat-2.0.3/deps/jellyfish-2.2.0'
make[2]: *** [all] Error 2
make[2]: Leaving directory `/usr/local/src/kat/kat-2.0.3/deps/jellyfish-2.2.0'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/usr/local/src/kat/kat-2.0.3'
make: *** [all] Error 2

Configure output:

$ export VERSION=2.0.3
$ ./configure --prefix=/usr/local/kat/$VERSION-gcc --with-boost=$BOOST_DIR
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... /bin/mkdir -p
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking whether make supports nested variables... yes
checking whether UID '2504' is supported by ustar format... yes
checking whether GID '2504' is supported by ustar format... yes
checking how to create a ustar tar archive... gnutar
checking for style of include used by make... GNU
checking for g++... g++
checking whether the C++ compiler works... yes
checking for C++ compiler default output file name... a.out
checking for suffix of executables... 
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether we are using the GNU C++ compiler... yes
checking whether g++ accepts -g... yes
checking dependency style of g++... gcc3
checking how to run the C++ preprocessor... g++ -E
checking whether we are using the GNU C++ compiler... (cached) yes
checking whether g++ accepts -g... (cached) yes
checking dependency style of g++... (cached) gcc3
checking whether g++ supports C++11 features by default... no
checking whether g++ supports C++11 features with -std=gnu++11... yes
checking for gcc... gcc
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking whether gcc understands -c and -o together... yes
checking dependency style of gcc... gcc3
checking for ar... ar
checking the archiver (ar) interface... ar
checking for error_at_line... yes
checking for grep that handles long lines and -e... /bin/grep
checking for egrep... /bin/grep -E
checking for ANSI C header files... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking whether strerror_r is declared... yes
checking for strerror_r... yes
checking whether strerror_r returns char *... yes
checking for int16_t... yes
checking for int32_t... yes
checking for int64_t... yes
checking for uint8_t... yes
checking for uint16_t... yes
checking for uint32_t... yes
checking for uint64_t... yes
checking for size_t... yes
checking for floor... yes
checking for memset... yes
checking for sqrt... yes
checking for inline... inline
checking for string.h... (cached) yes
checking iostream usability... yes
checking iostream presence... yes
checking for iostream... yes
checking stdio.h usability... yes
checking stdio.h presence... yes
checking for stdio.h... yes
checking fstream usability... yes
checking fstream presence... yes
checking for fstream... yes
checking memory usability... yes
checking memory presence... yes
checking for memory... yes
checking vector usability... yes
checking vector presence... yes
checking for vector... yes
checking glob.h usability... yes
checking glob.h presence... yes
checking for glob.h... yes
checking build system type... x86_64-unknown-linux-gnu
checking host system type... x86_64-unknown-linux-gnu
checking if compiler needs -Werror to reject unknown flags... no
checking for the pthreads library -lpthreads... no
checking whether pthreads work without any flags... no
checking whether pthreads work with -Kthread... no
checking whether pthreads work with -kthread... no
checking for the pthreads library -llthread... no
checking whether pthreads work with -pthread... yes
checking for joinable pthread attribute... PTHREAD_CREATE_JOINABLE
checking if more special flags are required for pthreads... no
checking for PTHREAD_PRIO_INHERIT... no
checking for gnuplot... no

checking for boostlib >= 1.52... yes
checking whether the Boost::Filesystem library is available... yes
checking for exit in -lboost_filesystem... yes
checking for /usr/local/boost/1.55.0-gcc//lib/libboost_filesystem.a... yes
checking whether the Boost::System library is available... yes
checking for exit in -lboost_system... yes
checking for /usr/local/boost/1.55.0-gcc//lib/libboost_system.a... yes
checking whether the Boost::Program_Options library is available... yes
checking for exit in -lboost_program_options... yes
checking for /usr/local/boost/1.55.0-gcc//lib/libboost_program_options.a... yes
checking whether the Boost::Chrono library is available... yes
checking for exit in -lboost_chrono... yes
checking for /usr/local/boost/1.55.0-gcc//lib/libboost_chrono.a... yes
checking whether the Boost::Timer library is available... yes
checking for exit in -lboost_timer... yes
checking for /usr/local/boost/1.55.0-gcc//lib/libboost_timer.a... yes
checking whether the Boost::Unit_Test_Framework library is available... yes
checking for exit in -lboost_unit_test_framework... yes
checking for /usr/local/boost/1.55.0-gcc//lib/libboost_unit_test_framework.a... yes
configure: WARNING: cache variable ac_cv_prog_gnuplot_found contains a newline
checking that generated files are newer than configure... done
configure: creating ./config.status
config.status: creating Makefile
config.status: creating src/Makefile
config.status: creating tests/Makefile
config.status: creating config.h
config.status: config.h is unchanged
config.status: executing depfiles commands
=== configuring in deps/jellyfish-2.2.0 (/usr/local/src/kat/kat-2.0.3/deps/jellyfish-2.2.0)
configure: running /bin/sh ./configure --disable-option-checking '--prefix=/usr/local/kat/2.0.3-gcc'  '--with-boost=/usr/local/boost/1.55.0-gcc/' 'LDFLAGS=-L/usr/local/libtool/2.4.6/lib -L/usr/local/boost/1.55.0-gcc/lib -L/usr/local/gcc/4.8.2/lib64 -L/usr/local/gcc/4.8.2/lib -L/usr/local/mpc/1.0.2/lib -L/usr/local/mpfr/3.1.2/lib -L/usr/local/gmp/5.1.3/lib' 'CPPFLAGS=-I/usr/local/libtool/2.4.6/include -I/usr/local/boost/1.55.0-gcc/include -I/usr/local/gcc/4.8.2/include -I/usr/local/mpc/1.0.2/include -I/usr/local/mpfr/3.1.2/include -I/usr/local/gmp/5.1.3/include' --cache-file=/dev/null --srcdir=.
checking build system type... x86_64-unknown-linux-gnu
checking host system type... x86_64-unknown-linux-gnu
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... /bin/mkdir -p
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking whether make supports nested variables... yes
checking whether make supports nested variables... (cached) yes
checking how to print strings... printf
checking for style of include used by make... GNU
checking for gcc... gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables... 
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking whether gcc understands -c and -o together... yes
checking dependency style of gcc... gcc3
checking for a sed that does not truncate output... /bin/sed
checking for grep that handles long lines and -e... /bin/grep
checking for egrep... /bin/grep -E
checking for fgrep... /bin/grep -F
checking for ld used by gcc... /usr/bin/ld
checking if the linker (/usr/bin/ld) is GNU ld... yes
checking for BSD- or MS-compatible name lister (nm)... /usr/bin/nm -B
checking the name lister (/usr/bin/nm -B) interface... BSD nm
checking whether ln -s works... yes
checking the maximum length of command line arguments... 1966080
checking whether the shell understands some XSI constructs... yes
checking whether the shell understands "+="... yes
checking how to convert x86_64-unknown-linux-gnu file names to x86_64-unknown-linux-gnu format... func_convert_file_noop
checking how to convert x86_64-unknown-linux-gnu file names to toolchain format... func_convert_file_noop
checking for /usr/bin/ld option to reload object files... -r
checking for objdump... objdump
checking how to recognize dependent libraries... pass_all
checking for dlltool... no
checking how to associate runtime and link libraries... printf %s\n
checking for ar... ar
checking for archiver @FILE support... @
checking for strip... strip
checking for ranlib... ranlib
checking command to parse /usr/bin/nm -B output from gcc object... ok
checking for sysroot... no
checking for mt... no
checking if : is a manifest tool... no
checking how to run the C preprocessor... gcc -E
checking for ANSI C header files... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking for dlfcn.h... yes
checking for objdir... .libs
checking if gcc supports -fno-rtti -fno-exceptions... no
checking for gcc option to produce PIC... -fPIC -DPIC
checking if gcc PIC flag -fPIC -DPIC works... yes
checking if gcc static flag -static works... no
checking if gcc supports -c -o file.o... yes
checking if gcc supports -c -o file.o... (cached) yes
checking whether the gcc linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes
checking whether -lc should be explicitly linked in... no
checking dynamic linker characteristics... GNU/Linux ld.so
checking how to hardcode library paths into programs... immediate
checking whether stripping libraries is possible... yes
checking if libtool supports shared libraries... yes
checking whether to build shared libraries... yes
checking whether to build static libraries... yes
checking for g++... g++
checking whether we are using the GNU C++ compiler... yes
checking whether g++ accepts -g... yes
checking dependency style of g++... gcc3
checking how to run the C++ preprocessor... g++ -E
checking for ld used by g++... /usr/bin/ld -m elf_x86_64
checking if the linker (/usr/bin/ld -m elf_x86_64) is GNU ld... yes
checking whether the g++ linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes
checking for g++ option to produce PIC... -fPIC -DPIC
checking if g++ PIC flag -fPIC -DPIC works... yes
checking if g++ static flag -static works... no
checking if g++ supports -c -o file.o... yes
checking if g++ supports -c -o file.o... (cached) yes
checking whether the g++ linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes
checking dynamic linker characteristics... (cached) GNU/Linux ld.so
checking how to hardcode library paths into programs... immediate
checking for md5sum... md5sum
checking for yaggo... false
checking for __int128... yes
checking for std::numeric_limits<__int128>... no
checking for _NSGetExecutablePath... no
checking for execinfo.h... yes
checking for ext/stdio_filebuf.h... yes
checking for siginfo_t.si_int... yes
checking that generated files are newer than configure... done
configure: creating ./config.status
config.status: creating Makefile
config.status: creating tests/compat.sh
config.status: creating jellyfish-2.0.pc
config.status: creating config.h
config.status: config.h is unchanged
config.status: executing depfiles commands
config.status: executing libtool commands
configure: WARNING: cache variable ac_cv_prog_gnuplot_found contains a newline

Compiling jellyfish fails with GCC 5: error: 'gettimeofday' was not declared in this scope

It would really help to use a preinstalled copy of jellyfish.

Here's a gist of the log files:
https://gist.github.com/sjackman/1e2a90554a8e2248a7a6ef1cf3192b6b#file-02-make-L97

g++-5 -DHAVE_CONFIG_H -I. -I..  -DCPLUSPLUS -I../deps/seqan-library-2.0.0/include -I../deps/jellyfish-2.2.0/include -I../deps/jellyfish-2.2.0/include -I/usr/local/Cellar/boost/1.60.0_1/include  -g -O3 -Wno-conversion-null -Wno-unused-result -Wno-unused-function -Wno-sign-compare -Wnon-virtual-dtor -std=c++11 -DCPLUSPLUS -g -O2 -std=gnu++11 -c -o kat-kat.o `test -f 'kat.cc' || echo './'`kat.cc
In file included from ../deps/jellyfish-2.2.0/include/jellyfish/hash_counter.hpp:23:0,
                 from ./jellyfish_helper.hpp:45,
                 from sect.cc:50:
../deps/jellyfish-2.2.0/include/jellyfish/locks_pthread.hpp: In member function 'int jellyfish::locks::pthread::cond::timedwait(time_t)':
../deps/jellyfish-2.2.0/include/jellyfish/locks_pthread.hpp:59:31: error: 'gettimeofday' was not declared in this scope
     gettimeofday(&timeofday, 0);

Pollution of PATH with "jellyfish" exe

make install adds jellyfish into the same bin folder as kat.

This will cause problems with local jellyfish installs.

Please install it in a libexec folder and tell kat to execute that version or rename it to kat.jellyfish or something similarly unique and non-clashing.

gcp plot as .ps/.pdf

Is it possible to get the kat gcp plot as .ps/.pdf? I tried to use kat plot but failed to load the kat-gcp.mx matrix.

Segmentation fault when showing options

Compiled on centos 6 with gcc 4.8.2, boost 1.60.0, libtool 2.2.6, python 3.5.1 with matplotlib 1.5.1.

I get this:

Kmer Analysis Toolkit (KAT) V2.1.1

Usage: kat hist [options] (<input>)+

Create an histogram of k-mer occurrences from the input.

Create an histogram with the number of k-mers having a given count, derived from the input, which can take the form of a single jellyfish hash, or one or more FastA or FastQ files. In bucket 'i' are tallied the k-mers which have a count 'c' satisfying 'low+i*inc <= c < low+(i+1)'. Buckets in the output are labeled by the low end point (low+i).
The last bucket in the output behaves as a catchall: it tallies all k-mers with a count greater or equal to the low end point of this bucket.
This tool is very similar to the "histo" tool in jellyfish itself.  The primary difference being that the output contains metadata that make the histogram easier for the user to plot.

Options:
Segmentation fault (core dumped)

It also occurs with previous versions of KAT.

Many thanks

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.