Skip to content
Commits on Source (9)
[submodule "pbbam"]
path = pbbam
url = ../pbbam.git
branch = master
[submodule "googletest"]
path = googletest
url = https://github.com/google/googletest.git
branch = master
language: cpp
script:
- ./travis.sh
compiler:
- gcc
# - clang
install:
- if [ "$CXX" = "g++" ]; then export CXX="g++-4.8" CC="gcc-4.8"; fi
addons:
apt:
sources:
- ubuntu-toolchain-r-test
packages:
- gcc-4.8
- g++-4.8
# - clang
# - libhdf5-serial-1.8.4
notifications:
email: false
sudo: false
##############################################
# CMake build script for the BLASRLIBCPP library
##############################################
cmake_policy(SET CMP0048 NEW)
project(BLASRLIBCPP VERSION 5.3.0 LANGUAGES CXX C)
cmake_minimum_required(VERSION 3.6)
set(ROOT_PROJECT_NAME ${PROJECT_NAME} CACHE STRING "root project name")
# Build type
IF(NOT CMAKE_BUILD_TYPE)
SET(CMAKE_BUILD_TYPE Release CACHE STRING "Choose the type of build, options are: Debug Release Profile RelWithDebInfo ReleaseWithAssert" FORCE)
ENDIF(NOT CMAKE_BUILD_TYPE)
# Main project paths
set(BLASRLIBCPP_RootDir ${BLASRLIBCPP_SOURCE_DIR})
# Project configuration
set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_LIST_DIR}/cmake ${CMAKE_MODULE_PATH})
# Fixed order, do not sort or shuffle
include(blasrlibcpp-ccache)
include(blasrlibcpp-releasewithassert)
include(blasrlibcpp-dependencies)
include(blasrlibcpp-compilerflags)
include(blasrlibcpp-gitsha1)
file(WRITE pbdata/LibBlasrConfig.h "")
GET_PROPERTY(BLASRLIBCPP_COMPIPLE_FLAGS GLOBAL PROPERTY BLASRLIBCPP_COMPIPLE_FLAGS_GLOBAL)
GET_PROPERTY(BLASRLIBCPP_LINK_FLAGS GLOBAL PROPERTY BLASRLIBCPP_LINK_FLAGS_GLOBAL)
GET_PROPERTY(HDF5_LINKER_FLAG_LOCAL GLOBAL PROPERTY HDF5_LINKER_FLAG_GLOBAL)
set(LOCAL_LINKER_FLAGS "${HDF5_LINKER_FLAG_LOCAL} ${BLASRLIBCPP_LINK_FLAGS}")
# libcpp library
file(GLOB HDF5_CPP "${BLASRLIBCPP_RootDir}/hdf/*.cpp")
file(GLOB_RECURSE ALIGNMENT_CPP "${BLASRLIBCPP_RootDir}/alignment/*.cpp")
file(GLOB_RECURSE PBDATA_CPP "${BLASRLIBCPP_RootDir}/pbdata/*.cpp")
add_library(libcpp
${HDF5_CPP}
${ALIGNMENT_CPP}
${PBDATA_CPP}
)
target_include_directories(libcpp PUBLIC
${BLASRLIBCPP_RootDir}/hdf
${BLASRLIBCPP_RootDir}/alignment
${BLASRLIBCPP_RootDir}/pbdata
${HDF5_INCLUDE_DIRS}
${PacBioBAM_INCLUDE_DIRS}
)
target_link_libraries(libcpp ${PacBioBAM_LIBRARIES})
set_target_properties(libcpp PROPERTIES COMPILE_FLAGS ${BLASRLIBCPP_COMPIPLE_FLAGS})
if (LOCAL_LINKER_FLAGS)
set_target_properties(libcpp PROPERTIES LINK_FLAGS ${LOCAL_LINKER_FLAGS})
endif()
# Tests
enable_testing()
## build gtest
add_subdirectory(${BLASRLIBCPP_RootDir}/googletest/googletest external/gtest)
## build libcpp tests
file(GLOB_RECURSE TEST_CPP "${BLASRLIBCPP_RootDir}/unittest/*/*.cpp")
add_executable(libcpptest ${TEST_CPP})
target_include_directories(libcpptest PUBLIC ${BLASRLIBCPP_RootDir}/unittest)
target_link_libraries(libcpptest gtest_main libcpp hdf5 hdf5_cpp ${ZLIB_LDFLAGS})
add_test(libcpptest libcpptest)
set_target_properties(libcpptest PROPERTIES COMPILE_FLAGS "${BLASRLIBCPP_COMPIPLE_FLAGS}")
if (LOCAL_LINKER_FLAGS)
set_target_properties(libcpptest PROPERTIES LINK_FLAGS ${LOCAL_LINKER_FLAGS})
endif()
add_custom_target(check_libcpp
COMMAND libcpptest --gtest_output=xml:${CMAKE_BINARY_DIR}/libcpp-unit.xml
WORKING_DIRECTORY ${BLASRLIBCPP_RootDir})
# Developer environment
## Clang-format pre commit hook
### What?
The intention here is to get source code formatting automatically
checked and guaranteed before checkin.
### Why?
- Automate style-guide compliance to avoid squabbles
- Post-checkin reformatting binges mess up history. It's best to get
it right from the get-go.
### How?
See the tools:
- `tools/check-formatting --staged` for fast style-checking of
changed files, in a git commit/push hook;
- `tools/check-formatting --all` for slower style-checking of everything
- `tools/format-all`to format everything
To enable the checking as a pre-commit hook, place the following in
`.git/hooks/pre-commit` (and make that file executable):
```sh
#!/bin/bash
./tools/check-formatting --staged
```
### Tips
- We should *not* reformat bundled third-party code as it will make it
difficult to diff with upstream. Put such code in a subdirectory
with its own .clang-format file containing: "BasedOnStyle: None" to
disable formatting.
- If clang-format mangles something (for example, a comment block with
ASCII art or significant whitespace), you can protect a block using
`// clang-format off` and then `// clang-format on`.
* What are these binaries?
The `clang-format` binaries that are checked in are static builds of
clang-format v3.9 from https://github.com/angular/clang-format.
They are bundled because the LLVM toolchain has a reputation for
rapid change and incompatibility. We want to guarantee that devs
are using the same version as CI is.
```
// Copyright (c) 2014-2015, Pacific Biosciences of California, Inc.
//
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted (subject to the limitations in the
// disclaimer below) provided that the following conditions are met:
//
// * Redistributions of source code must retain the above copyright
// notice, this list of conditions and the following disclaimer.
//
// * Redistributions in binary form must reproduce the above
// copyright notice, this list of conditions and the following
// disclaimer in the documentation and/or other materials provided
// with the distribution.
//
// * Neither the name of Pacific Biosciences nor the names of its
// contributors may be used to endorse or promote products derived
// from this software without specific prior written permission.
//
// NO EXPRESS OR IMPLIED LICENSES TO ANY PARTY'S PATENT RIGHTS ARE
// GRANTED BY THIS LICENSE. THIS SOFTWARE IS PROVIDED BY PACIFIC
// BIOSCIENCES AND ITS CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED
// WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
// OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
// DISCLAIMED. IN NO EVENT SHALL PACIFIC BIOSCIENCES OR ITS
// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
// USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
// ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
// OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
// SUCH DAMAGE.
Copyright (c) 2014-2018, Pacific Biosciences of California, Inc.
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted (subject to the limitations in the
disclaimer below) provided that the following conditions are met:
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above
copyright notice, this list of conditions and the following
disclaimer in the documentation and/or other materials provided
with the distribution.
* Neither the name of Pacific Biosciences nor the names of its
contributors may be used to endorse or promote products derived
from this software without specific prior written permission.
NO EXPRESS OR IMPLIED LICENSES TO ANY PARTY'S PATENT RIGHTS ARE
GRANTED BY THIS LICENSE. THIS SOFTWARE IS PROVIDED BY PACIFIC
BIOSCIENCES AND ITS CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED
WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL PACIFIC BIOSCIENCES OR ITS
CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
SUCH DAMAGE.
See pbdata/MD5Utils.* for the following:
/*
......@@ -96,5 +95,3 @@ See alignment/algorithms/sorting/qsufsort.cpp for the following:
distributed, the copyright notice must be retained and any alterations in
the code must be clearly marked. No warranty is given regarding the quality
of this software.*/
```
[![Build Status](https://travis-ci.org/PacificBiosciences/blasr_libcpp.svg?branch=master)](https://travis-ci.org/PacificBiosciences/blasr_libcpp)
<h1 align="center"><img src="http://www.pacb.com/wp-content/themes/pacific-biosciences/img/pacific-biosciences-logo-mobile.svg"/></h1>
<h1 align="center">blasr_libcpp</h1>
<p align="center">A C++ library for blasr</p>
#What is blasr_libcpp#
***
## Availability
This library is part of blasr and latest version can be installed via bioconda package `blasr`.
Please refer to our [official pbbioconda page](https://github.com/PacificBiosciences/pbbioconda)
for information on Installation, Support, License, Copyright, and Disclaimer.
# What is blasr_libcpp
**Blasr_libcpp** is a *library* used by **blasr** and other executables such as samtoh5, loadPulses for analyzing PacBio sequences. This library contains three sub-libraries, including pbdata, hdf and alignment:
+ pbdata
......@@ -10,41 +20,6 @@
+ alignment
- contains source code for aligning Pacbio reads to target sequences used in blasr and builds ```libblasr```.
For more information, see
* https://github.com/PacificBiosciences/blasr_libcpp/wiki
## Building using make
The simplest way is:
```
NOPBBAM=1 ./configure.py
make -j all
```
That will skip pbbam, and it will download HDF5 headers.
## Building using cmake
Make sure that you are using cmake >=3.7 and
always start from an empty build subdirectory!
git clone git://github.com/PacificBiosciences/blasr_libcpp.git && cd blasr_libcpp
git submodule update --init --remote
mkdir build && cd build
cmake -GNinja .. && ninja check_libcpp
Is your HDF5 in a custom location?
cmake -GNinja -DHDF5_ROOT=/your/location/hdf-1.8.16 ..
Are HDF$ libraries and include folders in different locations?
cmake -GNinja -DHDF5_LIBRARIES=/your/location/hdf-1.8.16/lib
-DHDF5_INCLUDE_DIRS=/other/location/hdf-1.8.16/include ..
Prefer a custom libz implementation?
cmake -GNinja -DZLIB_INCLUDE_DIRS=/your/location/zlib/include \
-DZLIB_LIBRARIES=/your/location/zlib/libz.so ..
DISCLAIMER
----------
THIS WEBSITE AND CONTENT AND ALL SITE-RELATED SERVICES, INCLUDING ANY DATA, ARE PROVIDED "AS IS," WITH ALL FAULTS, WITH NO REPRESENTATIONS OR WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, ANY WARRANTIES OF MERCHANTABILITY, SATISFACTORY QUALITY, NON-INFRINGEMENT OR FITNESS FOR A PARTICULAR PURPOSE. YOU ASSUME TOTAL RESPONSIBILITY AND RISK FOR YOUR USE OF THIS SITE, ALL SITE-RELATED SERVICES, AND ANY THIRD PARTY WEBSITES OR APPLICATIONS. NO ORAL OR WRITTEN INFORMATION OR ADVICE SHALL CREATE A WARRANTY OF ANY KIND. ANY REFERENCES TO SPECIFIC PRODUCTS OR SERVICES ON THE WEBSITES DO NOT CONSTITUTE OR IMPLY A RECOMMENDATION OR ENDORSEMENT BY PACIFIC BIOSCIENCES.
makefile
\ No newline at end of file
......@@ -72,7 +72,6 @@ void AlignmentToBamRecord(T_AlignmentCandidate &alignment, T_Sequence &read, T_S
exit(-1);
}
bamRecord.Impl().SetSequenceAndQualities(seqString, alignedSequence.qual.ToString());
bamRecord.Impl().CigarData(cigar);
bamRecord.Impl().Bin(0);
bamRecord.Impl().InsertSize(0);
bamRecord.Impl().MapQuality(static_cast<uint8_t>(alignment.mapQV));
......@@ -134,6 +133,7 @@ void AlignmentToBamRecord(T_AlignmentCandidate &alignment, T_Sequence &read, T_S
tags["dt"] = deletionTags;
}
bamRecord.Impl().Tags(tags);
bamRecord.Impl().CigarData(cigar);
} else {
// The following code can be used to hard-clip reads, if needed.
// PacBio::BAM::Position clipStart = read.bamRecord.QueryStart() + alignment.QAlignStart();
......
all:
THISDIR:=$(dir $(realpath $(lastword $(MAKEFILE_LIST))))
-include ${CURDIR}/defines.mk
include ${THISDIR}/../rules.mk
CXXOPTS := -std=c++14 -pedantic -Wno-long-long -Wall -Wextra -Wno-overloaded-virtual
SYSINCLUDES = ${HDF5_INC} ${PBBAM_INC} ${BOOST_INC}
LIBS += ${LIBPBDATA_LIB} ${LIBPBIHDF_LIB} ${HDF5_LIB} ${PBBAM_LIB} ${ZLIB_LIB}
LDFLAGS += $(patsubst %,-L%,${LIBS})
LDLIBS += -lpbdata $(HTSLIB_LIBS)
ifeq (${nohdf},)
LDLIBS+= -lpbihdf
#LDFLAGS+= -flat_namespace # so we do not need LDLIBS+= -lhdf5 -lhdf5_cpp
endif
# We might also need some -l* for pbbam, etc.
all: static shared
static: libblasr.a
shared: libblasr${SH_LIB_EXT}
paths := . simulator format files utils tuples statistics qvs suffixarray \
datastructures/alignment datastructures/alignmentset datastructures/anchoring datastructures/tuplelists \
algorithms/alignment algorithms/alignment/sdp algorithms/anchoring algorithms/compare algorithms/sorting \
query
paths := ${paths} $(patsubst %,${THISDIR}%,${paths})
sources := $(shell find ${THISDIR} -name '*.cpp')
ifdef nohdf
sources := $(filter-out ${THISDIR}files/% ${THISDIR}utils/FileOfFileNames.cpp ${THISDIR}format/SAMHeaderPrinter.cpp, $(sources))
endif
sources := $(notdir ${sources})
objects := $(sources:.cpp=.o)
shared_objects := $(sources:.cpp=.shared.o)
dependencies := $(objects:.o=.d) $(shared_objects:.o=.d)
vpath %.cpp ${paths}
libblasr.a: $(objects)
$(AR) $(ARFLAGS) $@ $^
libblasr${SH_LIB_EXT}: $(shared_objects)
clean:
rm -f libblasr.a libblasr.so *.o *.d
-include $(dependencies)
depend: $(dependencies:.d=.depend)
find_program(CCACHE_FOUND ccache)
if(CCACHE_FOUND)
set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE ccache)
set_property(GLOBAL PROPERTY RULE_LAUNCH_LINK ccache)
endif()
include(CheckCXXCompilerFlag)
# shared CXX flags for all source code & tests
SET_PROPERTY(GLOBAL PROPERTY BLASRLIBCPP_COMPIPLE_FLAGS_GLOBAL "-pedantic -g -Wno-long-long -Wall -Wextra -Wno-return-type -Wno-overloaded-virtual -Wno-unused-parameter -Wno-div-by-zero -Wno-unused-variable -Wno-unused-local-typedefs -DUSE_PBBAM")
set(CMAKE_CXX_STANDARD 14)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)
# static linking
IF(${CMAKE_SYSTEM_NAME} MATCHES "Linux")
set(BLASRLIBCPP_LINKER_FLAGS "${BLASRLIBCPP_LINKER_FLAGS} -static-libstdc++")
ENDIF()
if (HDF5_INCLUDE_DIR)
message(FATAL_ERROR "Please specify HDF5_INCLUDE_DIRS not HDF5_INCLUDE_DIR!")
endif()
if (HDF5_LIBRARY)
message(FATAL_ERROR "Please specify HDF5_LIBRARIES not HDF5_LIBRARY!")
endif()
if (NOT HDF5_INCLUDE_DIRS OR NOT HDF5_LIBRARIES)
find_package(HDF5 REQUIRED)
if (HDF5_ROOT)
SET_PROPERTY(GLOBAL PROPERTY HDF5_LINKER_FLAG_GLOBAL "-L${HDF5_ROOT}/lib")
endif()
else()
SET_PROPERTY(GLOBAL PROPERTY HDF5_LINKER_FLAG_GLOBAL "-L${HDF5_LIBRARIES}")
find_library(HDF5_LIBRARIES_ hdf5 ${HDF5_LIBRARIES} NO_CMAKE_SYSTEM_PATH)
find_library(HDF5_CPP_LIBRARIES hdf5_cpp ${HDF5_LIBRARIES} NO_CMAKE_SYSTEM_PATH)
endif()
if (NOT "${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
set(BLASRLIBCPP_LINKER_FLAGS "${BLASRLIBCPP_LINKER_FLAGS} -lrt")
endif()
SET_PROPERTY(GLOBAL PROPERTY BLASRLIBCPP_LINK_FLAGS_GLOBAL ${BLASRLIBCPP_LINKER_FLAGS})
# External libraries
# Boost
if(NOT Boost_INCLUDE_DIRS)
find_package(Boost REQUIRED)
endif()
# Threads
if (NOT Threads)
find_package(Threads REQUIRED)
endif()
# ZLIB
if (NOT ZLIB_INCLUDE_DIRS OR NOT ZLIB_LIBRARIES)
find_package(PkgConfig REQUIRED)
pkg_check_modules(ZLIB zlib)
else()
set(ZLIB_LDFLAGS ${ZLIB_LIBRARIES})
endif()
# pbbam
if (NOT PacBioBAM_INCLUDE_DIRS OR
NOT PacBioBAM_LIBRARIES)
set(PacBioBAM_build_docs OFF CACHE INTERNAL "" FORCE)
set(PacBioBAM_build_tests OFF CACHE INTERNAL "" FORCE)
set(PacBioBAM_build_tools OFF CACHE INTERNAL "" FORCE)
add_subdirectory(${BLASRLIBCPP_RootDir}/pbbam external/pbbam/build)
endif()
if(__find_git_sha1)
return()
endif()
set(__find_git_sha1 YES)
function(find_git_sha1 _GIT_SHA1)
find_package(Git QUIET REQUIRED)
execute_process(COMMAND
"${GIT_EXECUTABLE}" "describe" "--always" "--dirty=-dirty"
WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
RESULT_VARIABLE res
OUTPUT_VARIABLE out
ERROR_QUIET
OUTPUT_STRIP_TRAILING_WHITESPACE)
if (NOT res EQUAL 0)
message(FATAL_ERROR "Could not determine git sha1 via `git describe --always --dirty=*`")
endif()
set(${_GIT_SHA1} "${out}" PARENT_SCOPE)
endfunction()
string(REGEX REPLACE "[/-][dD][^/-]*NDEBUG" "" CMAKE_C_FLAGS_RELEASEWITHASSERT_INIT "${CMAKE_C_FLAGS_RELEASE_INIT}")
string(REGEX REPLACE "[/-][dD][^/-]*NDEBUG" "" CMAKE_CXX_FLAGS_RELEASEWITHASSERT_INIT "${CMAKE_CXX_FLAGS_RELEASE_INIT}")
set(CMAKE_C_FLAGS_RELEASEWITHASSERT "${CMAKE_C_FLAGS_RELEASEWITHASSERT_INIT}" CACHE STRING "C flags for release with assert builds.")
set(CMAKE_CXX_FLAGS_RELEASEWITHASSERT "${CMAKE_CXX_FLAGS_RELEASEWITHASSERT_INIT}" CACHE STRING "C++ flags for release with assert builds.")
set(CMAKE_EXE_LINKER_FLAGS_RELEASEWITHASSERT "" CACHE STRING "Linker flags for release with assert builds.")
mark_as_advanced(CMAKE_CXX_FLAGS_RELEASEWITHASSERT CMAKE_C_FLAGS_RELEASEWITHASSERT)
\ No newline at end of file
#!/usr/bin/env python
"""Configure the build.
- Fetch HDF5 headers.
- Create pbdata/LibBlasrConfig.h
- Create defines.mk
Putting LibBlasrConfig.h into a src-dir is not ideal, but simplifies a lot.
This is not used by './unittest/'.
"""
import commands
import contextlib
import os
import sys
thisdir = os.path.dirname(os.path.abspath(__file__))
def log(msg):
sys.stderr.write(msg)
sys.stderr.write('\n')
def shell(cmd):
log(cmd)
status, output = commands.getstatusoutput(cmd)
if status:
raise Exception('%d <- %r' %(status, cmd))
return output
def update_content(fn, content):
direc = os.path.abspath(os.path.dirname(fn))
if not os.path.isdir(direc):
shell('mkdir -p %s' %direc)
current_content = open(fn).read() if os.path.exists(fn) else None
if content != current_content:
log('writing to %r' %fn)
log('"""\n' + content + '"""')
open(fn, 'w').write(content)
def compose_libconfig(pbbam=False):
if pbbam:
content = """
#define USE_PBBAM
"""
else:
content = """
"""
return content
def compose_defines_with_hdf(HDF5_INC, HDF5_LIB):
"""We have to use := for HDF5_LIB b/c blasr
is using it to mean the directory, not the file,
and it's in the environment.
"""
return """
HDF5_INC:=%(HDF5_INC)s
HDF5_LIB:=%(HDF5_LIB)s
LIBPBDATA_INC ?=../pbdata
LIBPBIHDF_INC ?=../hdf
LIBBLASR_INC ?=../alignment
LIBPBDATA_LIB ?=../pbdata
LIBPBIHDF_LIB ?=../hdf
LIBBLASR_LIB ?=../alignment
"""%(dict(
thisdir=thisdir,
HDF5_INC=HDF5_INC,
HDF5_LIB=HDF5_LIB))
def compose_defines_with_hdf_headers(HDF_HEADERS):
return """
HDF_HEADERS:=%(HDF_HEADERS)s
#HDF5_INC ?=${HDF_HEADERS}/src
CPPFLAGS+= -I${HDF_HEADERS}/src -I${HDF_HEADERS}/c++/src
LIBPBDATA_LIB ?=../pbdata/
LIBPBIHDF_LIB ?=../hdf/
LIBBLASR_LIB ?=../alignment/
"""%(dict(thisdir=thisdir, HDF_HEADERS=HDF_HEADERS))
def compose_defines():
"""
Note that our local 'hdf' subdir will not even build
in this case.
"""
return """
LIBPBDATA_INC ?=../pbdata
LIBPBIHDF_INC ?=../hdf
LIBBLASR_INC ?=../alignment
LIBPBDATA_LIB ?=%(thisdir)s/pbdata/
LIBPBIHDF_LIB ?=%(thisdir)s/hdf/
LIBBLASR_LIB ?=%(thisdir)s/alignment/
nohdf ?=1
"""%(dict(thisdir=thisdir))
def get_OS_STRING():
G_BUILDOS_CMD = """bash -c 'set -e; set -o pipefail; id=$(lsb_release -si | tr "[:upper:]" "[:lower:]"); rel=$(lsb_release -sr); case $id in ubuntu) printf "$id-%04d\n" ${rel/./};; centos) echo "$id-${rel%%.*}";; *) echo "$id-$rel";; esac' 2>/dev/null"""
return shell(G_BUILDOS_CMD)
def get_PBBAM(env, prefix):
"""
key = 'PBBAM'
if key in env:
return env[key]
cmd = 'cd $(THIRD_PARTY_PREFIX)/../lib/cpp/pbbam 2>/dev/null && pwd || echo -n notfound' %(
THIRD_PARTY_PREFIX=prefix)
return shell(cmd)
"""
def get_HTSLIB(env, prefix):
"""
key = 'HTSLIB'
if key in env:
return env[key]
cmd = 'cd $(THIRD_PARTY_PREFIX)/../lib/cpp/htslib 2>/dev/null && pwd || echo -n notfound' %(
THIRD_PARTY_PREFIX=prefix)
return shell(cmd)
"""
def ifenvf(env, key, func):
if key in env:
return env[key]
else:
return func()
def setifenvf(envout, envin, key, func):
envout[key] = ifenvf(envin, key, func)
def setifenv(envout, envin, key, val):
envout[key] = envin.get(key, val)
def setenv(envout, key, val):
envout[key] = val
def update_env_if(envout, envin, keys):
for key in keys:
if key in envin:
envout[key] = envin[key]
def compose_defs_env(env):
# We disallow env overrides for anything with a default from GNU make.
nons = ['CXX', 'CC', 'AR'] # 'SHELL'?
ovr = ['%-20s ?= %s' %(k, v) for k,v in sorted(env.items()) if k not in nons]
nonovr = ['%-20s := %s' %(k, v) for k,v in sorted(env.items()) if k in nons]
return '\n'.join(ovr + nonovr + [''])
def append_common(envin, content):
"""Dumb way to do this, but this whole thing is evolving.
"""
content += """
# Use PREFIX dir, if available.
INCLUDES += ${PREFIX_INC} ../pbdata
LIBS += ${PREFIX_LIB}
"""
env = dict(envin)
# Some extra defs.
if 'PREFIX' in envin:
PREFIX = envin['PREFIX']
setenv(env, 'PREFIX_INC', os.path.join(PREFIX, 'include'))
setenv(env, 'PREFIX_LIB', os.path.join(PREFIX, 'lib'))
poss = [
'CXXFLAGS',
'SH_LIB_EXT',
'EXTRA_LDFLAGS',
'PREFIX_LIB', 'PREFIX_INC',
]
vals = ['%-20s := %s' %(k, v) for k,v in sorted(env.items()) if k in poss]
return '\n'.join([''] + vals + ['']) + content
def compose_defines_pacbio(envin):
"""
This is used by mobs via buildcntl.sh.
"""
env = dict()
setenv(env, 'SHELL', 'bash')
#setifenvf(env, envin, 'OS_STRING', get_OS_STRING)
setifenv(env, envin, 'LIBPBDATA_INC', '../pbdata')
setifenv(env, envin, 'LIBPBIHDF_INC', '../hdf')
setifenv(env, envin, 'LIBBLASR_INC', '../alignment')
setifenv(env, envin, 'LIBPBDATA_LIB', '../pbdata/')
setifenv(env, envin, 'LIBPBIHDF_LIB', '../hdf/')
setifenv(env, envin, 'LIBBLASR_LIB', '../alignment/')
if 'nohdf' in envin:
env['nohdf'] = envin['nohdf']
# Otherwise, do not define it at all. TODO(CD): Remove nohdf, as it is not used.
nondefaults = set([
'CXX', 'AR',
'HDF5_INC', 'HDF5_LIB',
'PBBAM_INC', 'PBBAM_LIB',
'HTSLIB_CFLAGS', 'HTSLIB_LIBS',
'BOOST_INC',
'ZLIB_LIB',
'GCC_LIB',
'GTEST_INC', 'GTEST_SRCDIR',
])
update_env_if(env, envin, nondefaults)
return compose_defs_env(env)
@contextlib.contextmanager
def cd(nwd):
cwd = os.getcwd()
log('cd %r -> %r' %(cwd, nwd))
os.chdir(nwd)
yield
os.chdir(cwd)
log('cd %r <- %r' %(cwd, nwd))
def fetch_hdf5_headers():
"""Fetch into ./hdf/HEADERS directory.
This should not be used when an external build-dir is needed.
Return actual directory path, relative to subdirs.
"""
version = 'hdf5-1.8.12-headers'
version_dn = os.path.join(thisdir, 'hdf', version)
if not os.path.isdir(version_dn):
with cd(os.path.dirname(version_dn)):
cmd = 'curl -k -L https://www.dropbox.com/s/8971bcyy5o42rxb/hdf5-1.8.12-headers.tar.bz2\?dl\=0 | tar xjf -'
shell(cmd)
return version_dn # Relative path might help caching.
def update(content_defines_mk, content_libconfig_h):
""" Write these relative to the same directory as *this* file.
"""
fn_libconfig_h = os.path.join(thisdir, 'pbdata', 'LibBlasrConfig.h')
update_content(fn_libconfig_h, content_libconfig_h)
fn_defines_mk = 'defines.mk'
update_content(fn_defines_mk, content_defines_mk)
if thisdir == os.path.abspath('.'):
# This was run in the root directory, so symlink defines.mk
# in sub-dirs, which now include defines.mk from CURDIR
# in order to facilitate building in external output directories.
for sub in ('pbdata', 'hdf', 'alignment', 'unittest'):
lname = os.path.join(sub, 'defines.mk')
if not os.path.lexists(lname):
os.symlink(os.path.join('..', 'defines.mk'), lname)
def configure_nopbbam(envin):
"""Use HDF5 from env-vars.
This is the path used by blasr in a GitHub build, for now.
"""
HDF5_INC = envin.get('HDF5_INC')
if not HDF5_INC:
HDF5_INC = envin['HDF5_INCLUDE']
HDF5_LIB = envin['HDF5_LIB']
content1 = compose_defines_with_hdf(HDF5_INC, HDF5_LIB)
content1 = append_common(envin, content1)
content2 = compose_libconfig(pbbam=False)
update(content1, content2)
def configure_nopbbam_skip_hdf(envin):
"""Fetch HDF5 headers.
We lack HDF5 libs, so we cannot build our hdf/ subdir.
But the others are fine.
"""
HDF_HEADERS = fetch_hdf5_headers()
content1 = compose_defines_with_hdf_headers(HDF_HEADERS)
content1 = append_common(envin, content1)
content2 = compose_libconfig(pbbam=False)
update(content1, content2)
def configure_nopbbam_nohdf5(envin):
content1 = compose_defines()
content1 = append_common(envin, content1)
content2 = compose_libconfig(pbbam=False)
update(content1, content2)
def configure_pacbio(envin):
content1 = compose_defines_pacbio(envin)
content1 = append_common(envin, content1)
content2 = compose_libconfig(pbbam=True)
update(content1, content2)
def get_make_style_env(envin, args):
envout = dict()
for arg in args:
if '=' in arg:
k, v = arg.split('=')
envout[k] = v
envout.update(envin)
return envout
class OsType:
Unknown, Linux, Darwin = range(3)
def getOsType():
uname = shell('uname -s')
log('uname=%r' %uname)
if 'Darwin' in uname:
return OsType.Darwin
elif 'Linux' in uname:
return OsType.Linux
else:
return OsType.Unknown
def update_env_for_linux(env):
env['SET_LIB_NAME'] = '-soname'
env['SH_LIB_EXT'] = '.so'
def update_env_for_darwin(env):
env['SET_LIB_NAME'] = '-install_name'
env['SH_LIB_EXT'] = '.dylib'
env['EXTRA_LDFLAGS'] = '-flat_namespace'
# -flat_namespace makes BSD ld act like Linux ld, finding
# shared libs recursively.
def update_env_for_unknown(env):
env['SET_LIB_NAME'] = '-soname'
env['SH_LIB_EXT'] = '.so'
update_env_for_os = {
OsType.Linux: update_env_for_linux,
OsType.Darwin: update_env_for_darwin,
OsType.Unknown: update_env_for_unknown,
}
def main(prog, *args):
"""Include shell environ plus KEY=VAL pairs in args.
"""
ost = getOsType()
envin = get_make_style_env(os.environ, args)
update_env_for_os[ost](envin)
if 'NOPBBAM' in envin:
if 'NOHDF' in envin:
configure_nopbbam_nohdf5(envin)
else:
if 'HDF5_LIB' in envin:
if 'HDF5_INCLUDE' in envin:
if 'HDF5_INC' not in envin:
envin['HDF5_INC'] = envin['HDF5_INCLUDE']
else:
print("WARNING: Found both HDF5_INC and HDF5_INCLUDE in environ!")
assert 'HDF5_INC' in envin, 'Hey! You have HDF5_LIB but not HDF5_INC!'
configure_nopbbam(envin)
else:
configure_nopbbam_skip_hdf(envin)
else:
configure_pacbio(envin)
if __name__=="__main__":
main(*sys.argv)
pbseqlib (5.3.1+dfsg-3) UNRELEASED; urgency=medium
pbseqlib (5.3.3+dfsg-1) UNRELEASED; urgency=medium
[ Andreas Tille ]
* Add myself to Uploaders to have at least one human uploader after
Afif removed himself.
* New upstream version
* debhelper-compat 12
* Standards-Version: 4.4.0
* Add new Build-Depends needed for testing
[ Helmut Grohne ]
* Covnert libpbseq-dev to Architecture: any. (Closes: #940327)
-- Andreas Tille <tille@debian.org> Thu, 07 Feb 2019 08:30:09 +0100
-- Andreas Tille <tille@debian.org> Mon, 05 Aug 2019 16:53:23 +0200
pbseqlib (5.3.1+dfsg-2.1) unstable; urgency=medium
......
......@@ -3,16 +3,20 @@ Maintainer: Debian Med Packaging Team <debian-med-packaging@lists.alioth.debian.
Uploaders: Andreas Tille <tille@debian.org>
Section: libs
Priority: optional
Build-Depends: debhelper (>= 12~),
Build-Depends: debhelper-compat (= 12),
dh-exec,
python,
meson,
pkg-config,
cmake,
googletest,
libgtest-dev,
zlib1g-dev,
libhdf5-dev,
libboost-dev,
libpbbam-dev (>= 0.18.0+dfsg-1~),
libhts-dev,
libgtest-dev <!nocheck>
Standards-Version: 4.3.0
Standards-Version: 4.4.0
Vcs-Browser: https://salsa.debian.org/med-team/pbseqlib
Vcs-Git: https://salsa.debian.org/med-team/pbseqlib.git
Homepage: https://github.com/PacificBiosciences/blasr_libcpp
......@@ -31,12 +35,12 @@ Description: library for analyzing PacBio sequencing data
This is a metapackage that depends on the pbseqlib component shared libraries.
Package: libpbseq-dev
Architecture: all
Architecture: any
Section: libdevel
Depends: ${misc:Depends},
libpbdata-dev (>= ${source:Version}),
libpbihdf-dev (>= ${source:Version}),
libblasr-dev (>= ${source:Version})
libpbdata-dev (= ${binary:Version}),
libpbihdf-dev (= ${binary:Version}),
libblasr-dev (= ${binary:Version})
Description: library for analyzing PacBio sequencing data (development files)
Blasr_libcpp is a library used by blasr and other executables such as
samtoh5, loadPulses for analyzing PacBio sequences. This library contains
......
......@@ -24,9 +24,6 @@ export DEB_BUILD_MAINT_OPTIONS=hardening=+all
%:
dh $@
override_dh_auto_configure:
./configure.py PREFIX=/usr/
override_dh_auto_build:
dh_auto_build -- PREFIX_INC=..
......
./alignment/MappingMetrics.hpp
./alignment/algorithms/alignment/AffineGuidedAlign.hpp
./alignment/algorithms/alignment/AffineKBandAlign.hpp
./alignment/algorithms/alignment/AlignmentFormats.hpp
./alignment/algorithms/alignment/AlignmentUtils.hpp
./alignment/algorithms/alignment/AlignmentUtilsImpl.hpp
./alignment/algorithms/alignment/BaseScoreFunction.hpp
./alignment/algorithms/alignment/DistanceMatrixScoreFunction.hpp
./alignment/algorithms/alignment/DistanceMatrixScoreFunctionImpl.hpp
./alignment/algorithms/alignment/ExtendAlign.hpp
./alignment/algorithms/alignment/FullQVAlign.hpp
./alignment/algorithms/alignment/GraphPaper.hpp
./alignment/algorithms/alignment/GraphPaperImpl.hpp
./alignment/algorithms/alignment/GuidedAlign.hpp
./alignment/algorithms/alignment/IDSScoreFunction.hpp
./alignment/algorithms/alignment/KBandAlign.hpp
./alignment/algorithms/alignment/OneGapAlignment.hpp
./alignment/algorithms/alignment/QualityValueScoreFunction.hpp
./alignment/algorithms/alignment/SDPAlign.hpp
./alignment/algorithms/alignment/SDPAlignImpl.hpp
./alignment/algorithms/alignment/SWAlign.hpp
./alignment/algorithms/alignment/SWAlignImpl.hpp
./alignment/algorithms/alignment/ScoreMatrices.hpp
./alignment/algorithms/alignment/StringToScoreMatrix.hpp
./alignment/algorithms/alignment/sdp/FragmentSort.hpp
./alignment/algorithms/alignment/sdp/FragmentSortImpl.hpp
./alignment/algorithms/alignment/sdp/SDPColumn.hpp
./alignment/algorithms/alignment/sdp/SDPFragment.hpp
./alignment/algorithms/alignment/sdp/SDPSet.hpp
./alignment/algorithms/alignment/sdp/SDPSetImpl.hpp
./alignment/algorithms/alignment/sdp/SparseDynamicProgramming.hpp
./alignment/algorithms/alignment/sdp/SparseDynamicProgrammingImpl.hpp
./alignment/algorithms/anchoring/BWTSearch.hpp
./alignment/algorithms/anchoring/BWTSearchImpl.hpp
./alignment/algorithms/anchoring/BasicEndpoint.hpp
./alignment/algorithms/anchoring/BasicEndpointImpl.hpp
./alignment/algorithms/anchoring/ClusterProbability.hpp
./alignment/algorithms/anchoring/Coordinate.hpp
./alignment/algorithms/anchoring/FindMaxInterval.hpp
./alignment/algorithms/anchoring/FindMaxIntervalImpl.hpp
./alignment/algorithms/anchoring/GlobalChain.hpp
./alignment/algorithms/anchoring/GlobalChainImpl.hpp
./alignment/algorithms/anchoring/LISPValue.hpp
./alignment/algorithms/anchoring/LISPValueImpl.hpp
./alignment/algorithms/anchoring/LISPValueWeightor.hpp
./alignment/algorithms/anchoring/LISPValueWeightorImpl.hpp
./alignment/algorithms/anchoring/LISQValueWeightor.hpp
./alignment/algorithms/anchoring/LISSizeWeightor.hpp
./alignment/algorithms/anchoring/LISSizeWeightorImpl.hpp
./alignment/algorithms/anchoring/LongestIncreasingSubsequence.hpp
./alignment/algorithms/anchoring/LongestIncreasingSubsequenceImpl.hpp
./alignment/algorithms/anchoring/MapBySuffixArray.hpp
./alignment/algorithms/anchoring/MapBySuffixArrayImpl.hpp
./alignment/algorithms/anchoring/PrioritySearchTree.hpp
./alignment/algorithms/anchoring/PrioritySearchTreeImpl.hpp
./alignment/algorithms/anchoring/ScoreAnchors.hpp
./alignment/algorithms/anchoring/ScoreAnchorsImpl.hpp
./alignment/algorithms/compare/CompareStrings.hpp
./alignment/algorithms/sorting/DifferenceCovers.hpp
./alignment/algorithms/sorting/Karkkainen.hpp
./alignment/algorithms/sorting/LightweightSuffixArray.hpp
./alignment/algorithms/sorting/MultikeyQuicksort.hpp
./alignment/algorithms/sorting/qsufsort.hpp
./alignment/anchoring/AnchorParameters.hpp
./alignment/bwt/BWT.hpp
./alignment/bwt/Occ.hpp
./alignment/bwt/PackedHash.hpp
./alignment/bwt/Pos.hpp
./alignment/datastructures/alignment/Alignment.hpp
./alignment/datastructures/alignment/AlignmentCandidate.hpp
./alignment/datastructures/alignment/AlignmentContext.hpp
./alignment/datastructures/alignment/AlignmentMap.hpp
./alignment/datastructures/alignment/AlignmentStats.hpp
./alignment/datastructures/alignment/CmpFile.hpp
./alignment/datastructures/alignment/FilterCriteria.hpp
./alignment/datastructures/alignment/SAMToAlignmentCandidateAdapter.hpp
./alignment/datastructures/alignmentset/AlignmentSetToCmpH5Adapter.hpp
./alignment/datastructures/alignmentset/AlignmentSetToCmpH5AdapterImpl.hpp
./alignment/datastructures/alignmentset/SAMQVConversion.hpp
./alignment/datastructures/alignmentset/SAMSupplementalQVList.hpp
./alignment/datastructures/anchoring/AnchorParameters.hpp
./alignment/datastructures/anchoring/ClusterList.hpp
./alignment/datastructures/anchoring/MatchPos.hpp
./alignment/datastructures/anchoring/WeightedInterval.hpp
./alignment/files/BaseSequenceIO.hpp
./alignment/files/CCSIterator.hpp
./alignment/files/FragmentCCSIterator.hpp
./alignment/files/ReaderAgglomerate.hpp
./alignment/files/ReaderAgglomerateImpl.hpp
./alignment/format/BAMPrinter.hpp
./alignment/format/BAMPrinterImpl.hpp
./alignment/format/CompareSequencesPrinter.hpp
./alignment/format/CompareSequencesPrinterImpl.hpp
./alignment/format/IntervalPrinter.hpp
./alignment/format/SAMHeaderPrinter.hpp
./alignment/format/SAMPrinter.hpp
./alignment/format/SAMPrinterImpl.hpp
./alignment/format/StickAlignmentPrinter.hpp
./alignment/format/SummaryPrinter.hpp
./alignment/format/VulgarPrinter.hpp
./alignment/format/XMLPrinter.hpp
./alignment/ipc/SharedMemoryAllocator.hpp
./alignment/qvs/QualityValueProfile.hpp
./alignment/simulator/CDFMap.hpp
./alignment/simulator/ContextOutputList.hpp
./alignment/simulator/ContextSample.hpp
./alignment/simulator/ContextSet.hpp
./alignment/simulator/LengthHistogram.hpp
./alignment/simulator/OutputList.hpp
./alignment/simulator/OutputSample.hpp
./alignment/simulator/OutputSampleList.hpp
./alignment/simulator/OutputSampleListSet.hpp
./alignment/simulator/QualitySample.hpp
./alignment/statistics/AnchorDistributionTable.hpp
./alignment/statistics/LookupAnchorDistribution.hpp
./alignment/statistics/StatUtils.hpp
./alignment/statistics/StatUtilsImpl.hpp
./alignment/statistics/VarianceAccumulator.hpp
./alignment/statistics/VarianceAccumulatorImpl.hpp
./alignment/statistics/cdfs.hpp
./alignment/statistics/pdfs.hpp
./alignment/suffixarray/LCPTable.hpp
./alignment/suffixarray/SharedSuffixArray.hpp
./alignment/suffixarray/SuffixArray.hpp
./alignment/suffixarray/SuffixArrayTypes.hpp
./alignment/suffixarray/ssort.hpp
./alignment/tuples/BaseTuple.hpp
./alignment/tuples/CompressedDNATuple.hpp
./alignment/tuples/DNATuple.hpp
./alignment/tuples/DNATupleImpl.hpp
./alignment/tuples/HashedTupleList.hpp
./alignment/tuples/HashedTupleListImpl.hpp
./alignment/tuples/TupleCountTable.hpp
./alignment/tuples/TupleCountTableImpl.hpp
./alignment/tuples/TupleList.hpp
./alignment/tuples/TupleListImpl.hpp
./alignment/tuples/TupleMatching.hpp
./alignment/tuples/TupleMatchingImpl.hpp
./alignment/tuples/TupleMetrics.hpp
./alignment/utils/FileOfFileNames.hpp
./alignment/utils/FileUtils.hpp
./alignment/utils/LogUtils.hpp
./alignment/utils/PhredUtils.hpp
./alignment/utils/RangeUtils.hpp
./alignment/utils/RegionUtils.hpp
./alignment/utils/RegionUtilsImpl.hpp
./alignment/utils/SimpleXMLUtils.hpp
./hdf/BufferedHDF2DArray.hpp
./hdf/BufferedHDF2DArrayImpl.hpp
./hdf/BufferedHDFArray.hpp
./hdf/BufferedHDFArrayImpl.hpp
./hdf/DatasetCollection.hpp
./hdf/DatasetCollectionImpl.hpp
./hdf/HDF2DArray.hpp
./hdf/HDFAlnGroup.hpp
./hdf/HDFAlnGroupGroup.hpp
./hdf/HDFAlnInfoGroup.hpp
./hdf/HDFArray.hpp
./hdf/HDFAtom.hpp
./hdf/HDFAttributable.hpp
./hdf/HDFBasReader.hpp
./hdf/HDFBasWriter.hpp
./hdf/HDFBaseCallsWriter.hpp
./hdf/HDFBaxWriter.hpp
./hdf/HDFCCSReader.hpp
./hdf/HDFCmpExperimentGroup.hpp
./hdf/HDFCmpData.hpp
./hdf/HDFCmpFile.hpp
./hdf/HDFCmpReader.hpp
./hdf/HDFCmpRootGroup.hpp
./hdf/HDFCmpRefAlignmentGroup.hpp
./hdf/HDFCmpSupportedFields.hpp
./hdf/HDFCommonFG.hpp
./hdf/HDFConfig.hpp
./hdf/HDFData.hpp
./hdf/HDFFile.hpp
./hdf/HDFGroup.hpp
./hdf/HDFFileLogGroup.hpp
./hdf/HDFMovieInfoGroup.hpp
./hdf/HDFPlsReader.hpp
./hdf/HDFNewBasReader.hpp
./hdf/HDFPlsWriter.hpp
./hdf/HDFPulseCallsWriter.hpp
./hdf/HDFPulseDataFile.hpp
./hdf/HDFPulseWriter.hpp
./hdf/HDFRefGroupGroup.hpp
./hdf/HDFRefInfoGroup.hpp
./hdf/HDFRegionTableReader.hpp
./hdf/HDFRegionTableWriter.hpp
./hdf/HDFRegionsWriter.hpp
./hdf/HDFSMRTSequenceReader.hpp
./hdf/HDFScanDataReader.hpp
./hdf/HDFScanDataWriter.hpp
./hdf/HDFUtils.hpp
./hdf/HDFWriteBuffer.hpp
./hdf/HDFSentinalFile.hpp
./hdf/HDFWriterBase.hpp
./hdf/HDFZMWMetricsWriter.hpp
./hdf/HDFZMWReader.hpp
./hdf/HDFZMWWriter.hpp
./pbdata/CCSSequence.hpp
./pbdata/ChangeListID.hpp
./pbdata/CommandLineParser.hpp
./pbdata/Compare4BitCompressed.hpp
./pbdata/CompressedDNASequence.hpp
./pbdata/CompressedSequence.hpp
./pbdata/CompressedSequenceImpl.hpp
./pbdata/DNASequence.hpp
./pbdata/FASTAReader.hpp
./pbdata/FASTASequence.hpp
./pbdata/FASTQReader.hpp
./pbdata/FASTQSequence.hpp
./pbdata/GFFFile.hpp
./pbdata/MD5Utils.hpp
./pbdata/MD5UtilsImpl.hpp
./pbdata/NucConversion.hpp
./pbdata/PackedDNASequence.hpp
./pbdata/ReverseCompressIndex.hpp
./pbdata/SMRTSequence.hpp
./pbdata/SeqUtils.hpp
./pbdata/SeqUtilsImpl.hpp
./pbdata/StringUtils.hpp
./pbdata/VectorUtils.hpp
./pbdata/alignment/CmpAlignment.hpp
./pbdata/alignment/CmpAlignmentImpl.hpp
./pbdata/amos/AfgBasWriter.hpp
./pbdata/loadpulses/MetricField.hpp
./pbdata/loadpulses/MovieAlnIndexLookupTable.hpp
./pbdata/matrix/FlatMatrix.hpp
./pbdata/matrix/FlatMatrixImpl.hpp
./pbdata/matrix/Matrix.hpp
./pbdata/matrix/MatrixImpl.hpp
./pbdata/metagenome/FindRandomSequence.hpp
./pbdata/metagenome/SequenceIndexDatabase.hpp
./pbdata/metagenome/SequenceIndexDatabaseImpl.hpp
./pbdata/metagenome/TitleTable.hpp
./pbdata/qvs/QualityTransform.hpp
./pbdata/qvs/QualityValue.hpp
./pbdata/qvs/QualityValueVector.hpp
./pbdata/qvs/QualityValueVectorImpl.hpp
./pbdata/reads/BaseFile.hpp
./pbdata/reads/BaseFileImpl.hpp
./pbdata/reads/HoleXY.hpp
./pbdata/reads/PulseBaseCommon.hpp
./pbdata/reads/PulseFile.hpp
./pbdata/reads/PulseFileImpl.hpp
./pbdata/reads/ReadInterval.hpp
./pbdata/reads/ReadType.hpp
./pbdata/reads/RegionAnnotation.hpp
./pbdata/reads/RegionAnnotations.hpp
./pbdata/reads/RegionTable.hpp
./pbdata/reads/RegionTypeMap.hpp
./pbdata/reads/ScanData.hpp
./pbdata/reads/ZMWGroupEntry.hpp
./pbdata/reads/AcqParams.hpp
./pbdata/saf/AlnGroup.hpp
./pbdata/saf/AlnInfo.hpp
./pbdata/saf/MovieInfo.hpp
./pbdata/saf/RefGroup.hpp
./pbdata/saf/RefInfo.hpp
./pbdata/sam/AlignmentSet.hpp
./pbdata/sam/AlignmentSetImpl.hpp
./pbdata/sam/ReadGroup.hpp
./pbdata/sam/ReferenceSequence.hpp
./pbdata/sam/SAMAlignment.hpp
./pbdata/sam/SAMHeader.hpp
./pbdata/sam/SAMKeywordValuePair.hpp
./pbdata/sam/SAMKeywordValuePairImpl.hpp
./pbdata/sam/SAMReader.hpp
./pbdata/sam/SAMReaderImpl.hpp
./pbdata/utils.hpp
./pbdata/utils/BitUtils.hpp
./pbdata/utils/SMRTReadUtils.hpp
./pbdata/utils/SMRTTitle.hpp
./pbdata/utils/TimeUtils.hpp
./pbdata/utilsImpl.hpp
./alignment/algorithms/alignment/sdp/NonoverlappingSparseDynamicProgramming.h
./alignment/algorithms/alignment/sdp/VariableLengthSDPFragment.h
./alignment/datastructures/alignment/AlignedPair.h
./alignment/datastructures/alignment/AlignmentGapList.h
./alignment/datastructures/alignment/ByteAlignment.h
./alignment/datastructures/alignment/CmpIndexedStringTable.h
./alignment/datastructures/alignment/CmpReadGroupTable.h
./alignment/datastructures/alignment/CmpRefSeqTable.h
./alignment/datastructures/alignment/Path.h
./alignment/query/PbiFilterZmwGroupQuery.h
./alignment/query/SequentialZmwGroupQuery.h
./alignment/tuples/CountedTuple.h
./alignment/tuples/DNATupleList.h
./alignment/tuples/TupleMask.h
./alignment/tuples/TupleOperations.h
./alignment/tuples/TupleTranslations.h
./alignment/tuples/tuple.h
./pbdata/Enumerations.h
./pbdata/PacBioDefs.h
./pbdata/Types.h
./pbdata/defs.h
./pbdata/sam/CigarString.h
./pbdata/sam/SAMFlag.h
pbdata/LibBlasrConfig.h