1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101
|
Samtools implements various utilities for post-processing alignments in the
SAM, BAM, and CRAM formats, including indexing, variant calling (in conjunction
with bcftools), and a simple alignment viewer.
Building samtools
=================
The typical simple case of building Samtools using the HTSlib bundled within
this Samtools release tarball is done as follows:
cd .../samtools-1.9 # Within the unpacked release directory
./configure
make
You may wish to copy the resulting samtools executable into somewhere on your
$PATH, or run it where it is.
Rather than running-in-place like that, the next simplest typical case is to
install samtools etc properly into a directory of your choosing. Building for
installation using the HTSlib bundled within this Samtools release tarball,
and building the various HTSlib utilities such as bgzip is done as follows:
cd .../samtools-1.9 # Within the unpacked release directory
./configure --prefix=/path/to/location
make all all-htslib
make install install-htslib
You will likely wish to add /path/to/location/bin to your $PATH.
See INSTALL for full building and installation instructions and details.
Building with HTSlib plug-in support
====================================
Enabling plug-ins causes some parts of HTSlib to be built as separate modules.
There are two advantages to this:
* The static library libhts.a has fewer dependencies, which makes linking
third-party code against it easier.
* It is possible to build extra plug-ins in addition to the ones that are
bundled with HTSlib. For example, the hts-plugins repository
<https://github.com/samtools/htslib-plugins> includes a module that
allows direct access to files stored in an iRODS data management
repository (see <https://irods.org/>).
To build with plug-ins, you need to use the --enable-plugins configure option
as follows:
cd .../samtools-1.9 # Within the unpacked release directory
./configure --enable-plugins --prefix=/path/to/location
make all all-htslib
make install install-htslib
There are two other configure options that affect plug-ins. These are:
--with-plugin-dir=DIR plug-in installation location
--with-plugin-path=PATH default plug-in search path
The default for --with-plugin-dir is <prefix>/libexec/htslib.
--with-plugin-path sets the built-in search path used to find the plug-ins. By
default this is the directory set by the --with-plugin-dir option. Multiple
directories should be separated by colons.
Setting --with-plugin-path is useful if you want to run directly from
the source distribution instead of installing the package. In that case
you can use:
cd .../samtools-1.9 # Within the unpacked release directory
./configure --enable-plugins --with-plugin-path=$PWD/htslib-1.9
make all all-htslib
It is possible to override the built-in search path using the HTS_PATH
environment variable. Directories should be separated by colons. To
include the built-in path, add an empty entry to HTS_PATH:
export HTS_PATH=:/my/path # Search built-in path first
export HTS_PATH=/my/path: # Search built-in path last
export HTS_PATH=/my/path1::/my/path2 # Search built-in path between others
Using an optimised zlib library
===============================
Samtools has been minimally tested against both the Intel-optimised and
CloudFlare-optimised zlibs and shown to work.
They can be downloaded from:
https://github.com/jtkukunas/zlib # Intel
https://github.com/cloudflare/zlib # CloudFlare
Neither Samtools nor HTSlib needs recompiling to use these optimised libraries,
but the LD_LIBRARY_PATH environment variable should be set to a directory
containing the libz.so.1 file.
Benchmarks comparing the various zlibs are available at:
http://www.htslib.org/benchmarks/zlib.html
It is recommended that you perform your own rigorous tests for an entire
pipeline if you wish to switch to one of the optimised zlib implementations.
|