Skip to content
Commits on Source (2)
# This file is used to ignore files which are generated
# ----------------------------------------------------------------------------
*~
*.autosave
*.a
*.core
*.moc
*.o
*.pico
*.obj
*.orig
*.rej
*.so
*.a
*.dylib
*.pyc
*~
*.so.*
*_pch.h.cpp
*_resource.rc
*.qm
.#*
*.*#
core
!core/
tags
.DS_Store
.directory
*.debug
Makefile*
*.prl
*.app
moc_*.cpp
ui_*.h
qrc_*.cpp
Thumbs.db
*.res
*.rc
/.qmake.cache
/.qmake.stash
# qtcreator generated files
*.pro.user*
CMakeLists.txt.user
bin/
build/
docs/Doxyfile
lib/
tests/bin/test_pbbam
tests/data/test_group_query/group.fofn
tests/src/TestData.h
# xemacs temporary files
*.flc
# Vim temporary files
.*.swp
# Visual Studio generated files
*.ib_pdb_index
*.idb
*.ilk
*.pdb
*.sln
*.suo
*.vcproj
*vcproj.*.*.user
*.ncb
*.sdf
*.opensdf
*.vcxproj
*vcxproj.*
.vscode
# MinGW generated files
*.Debug
*.Release
# Python byte code
*.pyc
# Binaries
# --------
*.dll
*.exe
# Generated directories
bin
build
lib
# Meson WrapDB stuff
subprojects/packagecache/
subprojects/googletest*
# generated Doxyfile
*Doxyfile
......@@ -10,6 +10,39 @@ guarantees will be maintained within each major version series.
## Active
## [0.23.0] - 2019-03-11
### Added
- PbiIndexCache and FastaCache for reusing file data
- BaiIndexedBamReader and GenomicIntervalQuery can be constructed without
initial interval.
## [0.22.0] - 2019-02-11
### Fixed
- Handles zero-length reads for stitching ZMW reads.
- Clipping to query on reverse-strand aligned reads.
- Removed UB in dataset API.
### Added
- "exciseFlankingInserts" option for clipping reads w.r.t reference.
## [0.21.0] - 2018-12-21
### Added
- New local context flags: ADAPTER_BEFORE_BAD and ADAPTER_AFTER_BAD.
### Changed
- Current PacBioBAM spec now 3.0.7.
### Removed
- CMake has been removed completely.
## [0.20.0] - 2018-10-03
### Added
- Support for (optionally) barcode-labeled read group IDs.
## [0.19.0] - 2018-09-11
### Added
......
########################################################################
# CMake build script for PacBioBAM library.
########################################################################
cmake_policy(SET CMP0048 NEW) # lets us set version in project()
project(PacBioBAM VERSION 0.19.0 LANGUAGES CXX C)
cmake_minimum_required(VERSION 3.0)
# project name & version
set(PacBioBAM_NAME pbbam)
set(PacBioBAM_VERSION
"${PacBioBAM_VERSION_MAJOR}.${PacBioBAM_VERSION_MINOR}.${PacBioBAM_VERSION_PATCH}"
)
# list build-time options
option(PacBioBAM_build_docs "Build PacBioBAM's API documentation." ON)
option(PacBioBAM_build_tests "Build PacBioBAM's unit tests." ON)
option(PacBioBAM_build_shared "Build PacBioBAM as shared library as well." OFF)
option(PacBioBAM_build_tools "Build PacBioBAM command line utilities (e.g. pbindex)" ON)
option(PacBioBAM_use_modbuild "Build PacBioBAM using Modular Build System." OFF)
option(PacBioBAM_use_ccache "Build PacBioBAM using ccache, if available." ON)
option(PacBioBAM_auto_validate "Build PacBioBAM with auto-validation enabled." OFF)
if(PacBioBAM_build_tests)
enable_testing()
endif()
set(PacBioBAM_permissive_cigar OFF)
STRING(TOLOWER "${PBBAM_PERMISSIVE_CIGAR}" PBBAM_PERMISSIVE_CIGAR_LOWER)
if (DEFINED PBBAM_PERMISSIVE_CIGAR)
set(PacBioBAM_permissive_cigar ON)
add_definitions(-DPBBAM_PERMISSIVE_CIGAR)
endif()
# project paths
set(PacBioBAM_RootDir ${CMAKE_CURRENT_LIST_DIR})
set(PacBioBAM_DocsDir ${PacBioBAM_RootDir}/docs)
set(PacBioBAM_IncludeDir ${PacBioBAM_RootDir}/include)
set(PacBioBAM_SourceDir ${PacBioBAM_RootDir}/src)
set(PacBioBAM_TestsDir ${PacBioBAM_RootDir}/tests)
set(PacBioBAM_ThirdPartyDir ${PacBioBAM_RootDir}/third-party)
set(PacBioBAM_ToolsDir ${PacBioBAM_RootDir}/tools)
if(NOT PacBioBAM_OutputDir)
set(PacBioBAM_OutputDir ${CMAKE_CURRENT_BINARY_DIR})
endif()
set(PacBioBAM_BinDir ${PacBioBAM_OutputDir}/bin)
set(PacBioBAM_LibDir ${PacBioBAM_OutputDir}/lib)
set(GeneratedDir ${CMAKE_BINARY_DIR}/generated)
set(GeneratedTestDataDir ${GeneratedDir}/data)
file(MAKE_DIRECTORY ${PacBioBAM_BinDir})
file(MAKE_DIRECTORY ${PacBioBAM_LibDir})
file(MAKE_DIRECTORY ${GeneratedDir})
file(MAKE_DIRECTORY ${GeneratedTestDataDir})
# project configuration (keep this order)
set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_LIST_DIR}/cmake ${CMAKE_MODULE_PATH})
include(pbbam-ccache)
include(pbbam-compilerflags)
include(pbbam-libtype)
include(pbbam-dependencies)
# project components (keep this order)
add_subdirectory(src)
add_subdirectory(tools)
add_subdirectory(docs)
add_subdirectory(tests)
......@@ -22,104 +22,33 @@ module load boost
module load cram
BOOST_ROOT="${BOOST_ROOT%/include}"
# unset these variables to have meson discover all
# boost-dependent variables from BOOST_ROOT alone
unset BOOST_INCLUDEDIR
unset BOOST_LIBRARYDIR
export CC="ccache gcc"
export CXX="ccache g++"
export CCACHE_BASEDIR="${PWD}"
if [[ $USER == bamboo ]]; then
export CCACHE_DIR=/mnt/secondary/Share/tmp/bamboo.${bamboo_shortPlanKey}.ccachedir
export CCACHE_TEMPDIR=/scratch/bamboo.ccache_tempdir
fi
export BUILD_NUMBER="0"
case "${bamboo_planRepository_branchName}" in
develop|master)
_install_image_default="${INSTALL_IMAGE:-false}"
_create_artifact_default="${CREATE_ARTIFACT:-false}"
export PREFIX_ARG="/mnt/software/p/pbbam/${bamboo_planRepository_branchName}"
export BUILD_NUMBER="${bamboo_globalBuildNumber:-0}"
;;
*)
export BUILD_NUMBER="0"
;;
esac
# in order to make shared libraries consumable
# by conda and other package managers
export LDFLAGS="-static-libstdc++ -static-libgcc"
# i : unity build
for i in "on" "off"; do
for j in "system-gcc" "gcc/8.1.0" "gcc"; do
# 1. load either current MOBS GCC or RHEL-default GCC
if [[ ${j} == system-gcc ]]; then
module load gtest/gcc48
else
module load ${j} gtest
fi
module load ccache
export _install_image="${_install_image_default:-false}"
export _create_artifact="${_create_artifact_default:-false}"
export CURRENT_BUILD_DIR="build_unity=${i^^}_gcc=${j/\//_}"
export ENABLED_TESTS="true"
export ENABLED_UNITY_BUILD="${i}"
bash scripts/ci/build.sh
bash scripts/ci/test.sh
module unload ccache gtest
[[ ${j} != system-gcc ]] && module unload gcc
done
done
# create symlink so Bamboo can find the xunit output
ln -s "${CURRENT_BUILD_DIR}" build
if [[ -z ${PREFIX_ARG+x} ]]; then
echo "Not installing anything (branch: ${bamboo_planRepository_branchName}), exiting."
exit 0
fi
bash scripts/ci/install.sh
if [[ ${BUILD_NUMBER} == 0 ]]; then
echo "Build number is 0, hence not creating artifact"
exit 0
fi
echo "## Creating artifact"
# install into staging dir with --prefix /usr/local
# in order to sidestep all the artifact policy
rm -rf staging
meson configure -Dprefix=/usr/local -Dtests=false "${CURRENT_BUILD_DIR}"
DESTDIR="${PWD}/staging" ninja -C "${CURRENT_BUILD_DIR}" -v install
if [[ ${BUILD_NUMBER} = 0 ]]; then
exit 0
elif [[ $bamboo_planRepository_branchName == master ]]; then
VERSION="$(${CURRENT_BUILD_DIR}/tools/bam2sam --version)".${BUILD_NUMBER}
NEXUS_REPO=maven-releases
elif [[ $bamboo_planRepository_branchName == develop ]]; then
VERSION="$(${CURRENT_BUILD_DIR}/tools/bam2sam --version)".SNAPSHOT${BUILD_NUMBER}
NEXUS_REPO=maven-snapshots
rm -rf /mnt/secondary/builds/unsupported/pbbam.previous
if [[ -e /mnt/secondary/builds/unsupported/pbbam ]]; then
mv /mnt/secondary/builds/unsupported/pbbam \
/mnt/secondary/builds/unsupported/pbbam.previous
fi
DESTDIR="/mnt/secondary/builds/unsupported/pbbam/" ninja -C "${CURRENT_BUILD_DIR}" -v install
else
exit 0
fi
NEXUS_VERSION="$(${CURRENT_BUILD_DIR}/tools/bam2sam --version)".${BUILD_NUMBER}
BOOST_ROOT="${BOOST_ROOT%/include}"
# unset these variables to have meson discover all
# boost-dependent variables from BOOST_ROOT alone
unset BOOST_INCLUDEDIR
unset BOOST_LIBRARYDIR
( cd staging && tar zcf ../pbbam-${VERSION}-x86_64.tgz . )
md5sum pbbam-${VERSION}-x86_64.tgz | awk -e '{print $1}' >| pbbam-${VERSION}-x86_64.tgz.md5
sha1sum pbbam-${VERSION}-x86_64.tgz | awk -e '{print $1}' >| pbbam-${VERSION}-x86_64.tgz.sha1
# in order to make shared libraries consumable
# by conda and other package managers
export LDFLAGS="-static-libstdc++ -static-libgcc"
NEXUS_URL=http://ossnexus.pacificbiosciences.com/repository/${NEXUS_REPO}/pacbio/sat/pbbam/pbbam/${NEXUS_VERSION}
curl -vn --upload-file pbbam-${VERSION}-x86_64.tgz ${NEXUS_URL}/gcc-6.4.0/pbbam-${VERSION}-x86_64.tgz
curl -vn --upload-file pbbam-${VERSION}-x86_64.tgz.md5 ${NEXUS_URL}/gcc-6.4.0/pbbam-${VERSION}-x86_64.tgz.md5
curl -vn --upload-file pbbam-${VERSION}-x86_64.tgz.sha1 ${NEXUS_URL}/gcc-6.4.0/pbbam-${VERSION}-x86_64.tgz.sha1
source scripts/ci/setup.sh
source scripts/ci/build.sh
source scripts/ci/test.sh
source scripts/ci/install.sh
source scripts/ci/artifact.sh
#!/bin/bash -vex
type module >& /dev/null || . /mnt/software/Modules/current/init/bash
module load cmake
module load ccache
export CCACHE_DIR="/mnt/secondary/Share/tmp/bamboo.${bamboo_shortPlanKey}.ccache"
HTSLIB_VERSION=$(/bin/ls -d src/htslib-*|sed -e 's/.*htslib-//'|sort -V|tail -1)
PBBAM_VERSION=$(grep 'PacBioBAM VERSION ' src/pbbam/CMakeLists.txt|sed -e 's/.*VERSION //'|awk '{print $1}')
# project(PacBioBAM VERSION 0.14.0 LANGUAGES CXX C)
BUILD_NUMBER=0
if [ -n "$bamboo_planRepository_branchName" ]; then
BUILD_NUMBER=${bamboo_globalBuildNumber:-0}
fi
rm -f *.tgz || true
rm -rf pbbam* || true
rm -rf prefix && mkdir -p prefix
PREFIX=$(readlink -f prefix)
cd src/htslib-${HTSLIB_VERSION}
export CCACHE_BASEDIR=$PWD
make distclean
CC=gcc CFLAGS='-fPIC -O' bash ./configure --prefix=$PWD/../../prefix --disable-bz2 --disable-lzma --disable-libcurl
VERBOSE=1 make install
rm -rf $PWD/../../prefix/lib/pkgconfig
cd -
cd src/pbbam
export CCACHE_BASEDIR=$PWD
rm -rf build && mkdir -p build
cd build
curl -sL -O http://nexus/repository/maven-thirdparty/libquadmath/4.8.5-11/libquadmath-devel-4.8.5-11.el7.x86_64.rpm
rpm2cpio libquadmath-devel-4.8.5-11.el7.x86_64.rpm | cpio -vid
CXXFLAGS="-fPIC -I$PWD/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include" \
CFLAGS="-fPIC" \
cmake \
-DCMAKE_CXX_COMPILER="g++" \
-DCMAKE_C_COMPILER="gcc" \
-DPacBioBAM_build_shared=ON \
-DPacBioBAM_build_docs=OFF \
-DPacBioBAM_build_tests=OFF \
-DHTSLIB_INCLUDE_DIRS=$PREFIX/include \
-DHTSLIB_LIBRARIES=$PREFIX/lib/libhts.a \
-DBoost_INCLUDE_DIRS=/mnt/software/b/boost/1.60/include \
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
-DCMAKE_SKIP_BUILD_RPATH=FALSE ..
VERBOSE=1 make -j
tar c bin lib | tar xv -C ../../../prefix/
cd ..
tar c include/pbbam | tar xv -C ../../prefix/
cd ../..
if [ ! -n "$bamboo_planRepository_branchName" ]; then
SNAPSHOT="_branch_"
fi
if [ "$bamboo_planRepository_branchName" = "develop" ]; then
SNAPSHOT="SNAPSHOT"
elif [ "$bamboo_planRepository_branchName" = "master" ]; then
SNAPSHOT=""
else
SNAPSHOT="_branch_"
fi
rsync -ax --delete prefix/ pbbam-${PBBAM_VERSION}.${SNAPSHOT}${BUILD_NUMBER}/
tar zcf pbbam-${PBBAM_VERSION}.${SNAPSHOT}${BUILD_NUMBER}-x86_64.tgz pbbam-${PBBAM_VERSION}.${SNAPSHOT}${BUILD_NUMBER}
sha1sum pbbam-${PBBAM_VERSION}.${SNAPSHOT}${BUILD_NUMBER}-x86_64.tgz | awk -e '{print $1}' >| pbbam-${PBBAM_VERSION}.${SNAPSHOT}${BUILD_NUMBER}-x86_64.tgz.sha1
md5sum pbbam-${PBBAM_VERSION}.${SNAPSHOT}${BUILD_NUMBER}-x86_64.tgz | awk -e '{print $1}' >| pbbam-${PBBAM_VERSION}.${SNAPSHOT}${BUILD_NUMBER}-x86_64.tgz.md5
if [ "$bamboo_planRepository_branchName" = "develop" ]; then
NEXUS_URL=http://ossnexus.pacificbiosciences.com/repository/maven-snapshots/pacbio/itg/pbbam/${PBBAM_VERSION}.${BUILD_NUMBER}
elif [ "$bamboo_planRepository_branchName" = "master" ]; then
NEXUS_URL=http://ossnexus.pacificbiosciences.com/repository/maven-releases/pacbio/itg/pbbam/${PBBAM_VERSION}.${BUILD_NUMBER}
else
echo "[INFO] pbbam-${PBBAM_VERSION}.SNAPSHOT${BUILD_NUMBER}-x86_64.tgz if the branch was develop"
exit
fi
curl -L -fvn --upload-file pbbam-${PBBAM_VERSION}.${SNAPSHOT}${BUILD_NUMBER}-x86_64.tgz.md5 $NEXUS_URL/pbbam-${PBBAM_VERSION}.${SNAPSHOT}${BUILD_NUMBER}-x86_64.tgz.md5
curl -L -fvn --upload-file pbbam-${PBBAM_VERSION}.${SNAPSHOT}${BUILD_NUMBER}-x86_64.tgz.sha1 $NEXUS_URL/pbbam-${PBBAM_VERSION}.${SNAPSHOT}${BUILD_NUMBER}-x86_64.tgz.sha1
curl -L -fvn --upload-file pbbam-${PBBAM_VERSION}.${SNAPSHOT}${BUILD_NUMBER}-x86_64.tgz $NEXUS_URL/pbbam-${PBBAM_VERSION}.${SNAPSHOT}${BUILD_NUMBER}-x86_64.tgz
#!/bin/bash -vex
type module >& /dev/null || . /mnt/software/Modules/current/init/bash
module use /mnt/software/modulefiles
module use /pbi/dept/primary/modulefiles
module load cmake
module load ccache
export CCACHE_DIR="/mnt/secondary/Share/tmp/bamboo.${bamboo_shortPlanKey}.ccache"
# module load composer_xe/2017.4.196
HTSLIB_VERSION=$(/bin/ls -d src/htslib-*|sed -e 's/.*htslib-//'|sort -V|tail -1)
PBBAM_VERSION=$(grep 'PacBioBAM VERSION ' src/pbbam/CMakeLists.txt|sed -e 's/.*VERSION //'|awk '{print $1}')
# project(PacBioBAM VERSION 0.14.0 LANGUAGES CXX C)
BUILD_NUMBER=0
if [ -n "$bamboo_planRepository_branchName" ]; then
BUILD_NUMBER=${bamboo_globalBuildNumber:-0}
fi
rm -f *.tgz || true
rm -rf pbbam* || true
# rm -rf prefix && mkdir -p prefix
# cd src/htslib-${HTSLIB_VERSION}
# export CCACHE_BASEDIR=$PWD
# CC=icc CXX=icpc \
# CFLAGS='-fPIC -Os' bash ./configure --prefix=$PWD/../../prefix
# VERBOSE=1 make CC='ccache icc' install
# rm -rf $PWD/../../prefix/lib/pkgconfig
#
# cd -
# cd src/pbbam
# export CCACHE_BASEDIR=$PWD
# rm -rf build && mkdir -p build
# cd build
# cmake \
# -DCMAKE_CXX_COMPILER="ccache" \
# -DCMAKE_CXX_COMPILER_ARG1="icpc -fPIC" \
# -DCMAKE_C_COMPILER="ccache" \
# -DCMAKE_C_COMPILER_ARG1="icc -fPIC" \
# -DPacBioBAM_build_shared=OFF \
# -DPacBioBAM_build_docs=OFF \
# -DPacBioBAM_build_tests=OFF \
# -DHTSLIB_INCLUDE_DIRS=$PWD/../../../prefix/include \
# -DHTSLIB_LIBRARIES=$PWD/../../../prefix/lib/libhts.a \
# -DBoost_INCLUDE_DIRS=/mnt/software/b/boost/1.60/include \
# -DCMAKE_BUILD_TYPE=RelWithDebInfo \
# -DCMAKE_SKIP_BUILD_RPATH=FALSE ..
# VERBOSE=1 make -j
# tar c bin lib | tar xv -C ../../../prefix/
# cd ..
# tar c include/pbbam | tar xv -C ../../prefix/
# cd ../..
#
# if [ ! -n "$bamboo_planRepository_branchName" ]; then
# SNAPSHOT="_branch_"
# fi
# if [ "$bamboo_planRepository_branchName" = "develop" ]; then
# SNAPSHOT="SNAPSHOT"
# elif [ "$bamboo_planRepository_branchName" = "master" ]; then
# SNAPSHOT=""
# else
# SNAPSHOT="_branch_"
# fi
#
# rsync -ax --delete prefix/ pbbam-${PBBAM_VERSION}.${SNAPSHOT}${BUILD_NUMBER}/
#
# tar zcf pbbam-${PBBAM_VERSION}.${SNAPSHOT}${BUILD_NUMBER}-x86_64.tgz pbbam-${PBBAM_VERSION}.${SNAPSHOT}${BUILD_NUMBER}
# sha1sum pbbam-${PBBAM_VERSION}.${SNAPSHOT}${BUILD_NUMBER}-x86_64.tgz | awk -e '{print $1}' >| pbbam-${PBBAM_VERSION}.${SNAPSHOT}${BUILD_NUMBER}-x86_64.tgz.sha1
# md5sum pbbam-${PBBAM_VERSION}.${SNAPSHOT}${BUILD_NUMBER}-x86_64.tgz | awk -e '{print $1}' >| pbbam-${PBBAM_VERSION}.${SNAPSHOT}${BUILD_NUMBER}-x86_64.tgz.md5
# if [ "$bamboo_planRepository_branchName" = "develop" -o "$bamboo_planRepository_branchName" = "master" ]; then
# NEXUS_URL=http://ossnexus.pacificbiosciences.com/repository/maven-snapshots/pacbio/seq/pa/pbbam/${PBBAM_VERSION}.${BUILD_NUMBER}
# curl -L -fvn --upload-file pbbam-${PBBAM_VERSION}.${SNAPSHOT}${BUILD_NUMBER}-x86_64.tgz.md5 $NEXUS_URL/pbbam-${PBBAM_VERSION}.${SNAPSHOT}${BUILD_NUMBER}-x86_64.tgz.md5
# curl -L -fvn --upload-file pbbam-${PBBAM_VERSION}.${SNAPSHOT}${BUILD_NUMBER}-x86_64.tgz.sha1 $NEXUS_URL/pbbam-${PBBAM_VERSION}.${SNAPSHOT}${BUILD_NUMBER}-x86_64.tgz.sha1
# curl -L -fvn --upload-file pbbam-${PBBAM_VERSION}.${SNAPSHOT}${BUILD_NUMBER}-x86_64.tgz $NEXUS_URL/pbbam-${PBBAM_VERSION}.${SNAPSHOT}${BUILD_NUMBER}-x86_64.tgz
# else
# echo "[INFO] pbbam-${PBBAM_VERSION}.SNAPSHOT${BUILD_NUMBER}-x86_64.tgz if the branch is develop"
# fi
# GCC BUILD
# module unload composer_xe/2017.4.196
# module load gcc/4.9.2
rm -rf prefix && mkdir -p prefix
cd src/htslib-${HTSLIB_VERSION}
export CCACHE_BASEDIR=$PWD
make distclean
CC=gcc CFLAGS='-fPIC -O' bash ./configure --prefix=$PWD/../../prefix --disable-bz2 --disable-lzma --disable-libcurl
VERBOSE=1 make install
rm -rf $PWD/../../prefix/lib/pkgconfig
cd -
cd src/pbbam
export CCACHE_BASEDIR=$PWD
rm -rf build && mkdir -p build
cd build
curl -sL -O http://nexus/repository/maven-thirdparty/libquadmath/4.8.5-11/libquadmath-devel-4.8.5-11.el7.x86_64.rpm
rpm2cpio libquadmath-devel-4.8.5-11.el7.x86_64.rpm | cpio -vid
CXXFLAGS="-fPIC -I$PWD/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include" \
CFLAGS="-fPIC" \
cmake \
-DCMAKE_CXX_COMPILER="g++" \
-DCMAKE_C_COMPILER="gcc" \
-DPacBioBAM_build_shared=OFF \
-DPacBioBAM_build_docs=OFF \
-DPacBioBAM_build_tests=OFF \
-DHTSLIB_INCLUDE_DIRS=$PWD/../../../prefix/include \
-DHTSLIB_LIBRARIES=$PWD/../../../prefix/lib/libhts.a \
-DBoost_INCLUDE_DIRS=/mnt/software/b/boost/1.60/include \
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
-DCMAKE_SKIP_BUILD_RPATH=FALSE ..
VERBOSE=1 make -j
tar c bin lib | tar xv -C ../../../prefix/
cd ..
tar c include/pbbam | tar xv -C ../../prefix/
cd ../..
if [ ! -n "$bamboo_planRepository_branchName" ]; then
SNAPSHOT="_branch_"
fi
if [ "$bamboo_planRepository_branchName" = "develop" ]; then
SNAPSHOT="SNAPSHOT"
elif [ "$bamboo_planRepository_branchName" = "master" ]; then
SNAPSHOT=""
else
SNAPSHOT="_branch_"
fi
rsync -ax --delete prefix/ pbbam-${PBBAM_VERSION}.${SNAPSHOT}${BUILD_NUMBER}/
tar zcf pbbam-${PBBAM_VERSION}.${SNAPSHOT}${BUILD_NUMBER}-x86_64.tgz pbbam-${PBBAM_VERSION}.${SNAPSHOT}${BUILD_NUMBER}
sha1sum pbbam-${PBBAM_VERSION}.${SNAPSHOT}${BUILD_NUMBER}-x86_64.tgz | awk -e '{print $1}' >| pbbam-${PBBAM_VERSION}.${SNAPSHOT}${BUILD_NUMBER}-x86_64.tgz.sha1
md5sum pbbam-${PBBAM_VERSION}.${SNAPSHOT}${BUILD_NUMBER}-x86_64.tgz | awk -e '{print $1}' >| pbbam-${PBBAM_VERSION}.${SNAPSHOT}${BUILD_NUMBER}-x86_64.tgz.md5
if [ "$bamboo_planRepository_branchName" = "develop" ]; then
NEXUS_URL=http://ossnexus.pacificbiosciences.com/repository/maven-snapshots/pacbio/seq/pa/pbbam/${PBBAM_VERSION}.${BUILD_NUMBER}
elif [ "$bamboo_planRepository_branchName" = "master" ]; then
NEXUS_URL=http://ossnexus.pacificbiosciences.com/repository/maven-releases/pacbio/seq/pa/pbbam/${PBBAM_VERSION}.${BUILD_NUMBER}
else
echo "[INFO] pbbam-${PBBAM_VERSION}.SNAPSHOT${BUILD_NUMBER}-x86_64.tgz if the branch was develop"
echo "[INFO] pbbam-${PBBAM_VERSION}.${BUILD_NUMBER}-x86_64.tgz if the branch was master"
exit
fi
curl -L -fvn --upload-file pbbam-${PBBAM_VERSION}.${SNAPSHOT}${BUILD_NUMBER}-x86_64.tgz.md5 $NEXUS_URL/pbbam-${PBBAM_VERSION}.${SNAPSHOT}${BUILD_NUMBER}-x86_64.tgz.md5
curl -L -fvn --upload-file pbbam-${PBBAM_VERSION}.${SNAPSHOT}${BUILD_NUMBER}-x86_64.tgz.sha1 $NEXUS_URL/pbbam-${PBBAM_VERSION}.${SNAPSHOT}${BUILD_NUMBER}-x86_64.tgz.sha1
curl -L -fvn --upload-file pbbam-${PBBAM_VERSION}.${SNAPSHOT}${BUILD_NUMBER}-x86_64.tgz $NEXUS_URL/pbbam-${PBBAM_VERSION}.${SNAPSHOT}${BUILD_NUMBER}-x86_64.tgz
#!/usr/bin/env bash
set -xve
source /mnt/software/Modules/current/init/bash
module load gcc meson ccache ninja zlib htslib samtools cram boost gtest gcov
echo "#####################"
echo "# BUILD & RUN TESTS #"
echo "#####################"
rm -rf build
mkdir build
cd build
meson \
--werror \
--backend ninja \
--buildtype debug \
--default-library shared \
--libdir lib \
--wrap-mode nofallback \
--prefix "${PREFIX_ARG:-/usr/local}" \
-Db_coverage=true \
..
ninja test
echo "################"
echo "# COVERAGE #"
echo "################"
find . -type f -iname '*.o' | xargs gcov -acbrfu {} \; >/dev/null && \
mkdir coverage && pushd coverage && mv ../*.gcov . && \
sed -i -e 's@Source:@Source:../@' *.gcov && \
sed -i -e 's@Graph:@Graph:../@' *.gcov && \
sed -i -e 's@Data:@Data:../@' *.gcov && \
rm pugixml*
# Find HTSlib
find_package(PkgConfig REQUIRED)
pkg_check_modules(HTSlib REQUIRED htslib)
# because CMake is trying to be extra clever,
# it will not properly load libraries with
# absolute paths in *_LIBRARIES
set(HTSlib_LIBRARIES "${HTSlib_LDFLAGS}")
message(STATUS " HTSlib include dirs: ${HTSlib_INCLUDE_DIRS}")
message(STATUS " HTSlib libraries: ${HTSlib_LIBRARIES}")
include(CMakeParseArguments)
function(create_pbbam_tool)
# parse args
set(oneValueArgs TARGET)
set(multiValueArgs SOURCES)
cmake_parse_arguments(create_pbbam_tool "" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
# create executable
include_directories(
${ToolsCommonDir} # shared tool code
${GeneratedDir} # generated version headers
${PacBioBAM_INCLUDE_DIRS} # pbbam/htslib includes
)
add_executable(${create_pbbam_tool_TARGET} ${create_pbbam_tool_SOURCES})
set_target_properties(
${create_pbbam_tool_TARGET} PROPERTIES
RUNTIME_OUTPUT_DIRECTORY ${PacBioBAM_BinDir}
)
target_link_libraries(${create_pbbam_tool_TARGET} pbbam)
endfunction(create_pbbam_tool)
if(PacBioBAM_use_ccache)
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()
endif()
include(CheckCXXCompilerFlag)
# C++11 check & enabling
if (CMAKE_VERSION VERSION_LESS "3.1")
if ("${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -stdlib=libc++") # clang
else()
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") # gcc
endif()
else() # 3.1+
set(CMAKE_CXX_STANDARD 14)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
endif()
# shared CXX flags for src & tests
if (MSVC)
set(PacBioBAM_CXX_FLAGS "/Wall")
else()
set(PacBioBAM_CXX_FLAGS "-Wall")
endif()
# NOTE: -Wno-unused-local-typedefs used to quash clang warnings w/ Boost
check_cxx_compiler_flag("-Wno-unused-local-typedefs" HAS_NO_UNUSED_LOCAL_TYPEDEFS)
if(HAS_NO_UNUSED_LOCAL_TYPEDEFS)
set(PacBioBAM_CXX_FLAGS "${PacBioBAM_CXX_FLAGS} -Wno-unused-local-typedefs")
endif()
check_cxx_compiler_flag("-Wno-sign-compare" HAS_NO_SIGN_COMPARE)
if(HAS_NO_SIGN_COMPARE)
set(PacBioBAM_CXX_FLAGS "${PacBioBAM_CXX_FLAGS} -Wno-sign-compare")
endif()
# Turn on windows-style filepath resolution.
# We need to add this #define early (not just in the C# SWIG wrapper)
if(WIN32)
add_definitions(-DPBBAM_WIN_FILEPATHS)
endif()
# For now, keep @rpath out of install names on OS X, as it causes SWIG
# tests to fail.
if(APPLE)
set(CMAKE_MACOSX_RPATH OFF)
endif()
# pthreads
find_package(Threads REQUIRED)
# boost
if(NOT Boost_INCLUDE_DIRS)
find_package(Boost REQUIRED)
endif()
# Winsock for htslib on Windows
if(WIN32)
set(SOCKET_LIBRARIES "ws2_32")
endif()
# zlib
if (NOT ZLIB_INCLUDE_DIRS OR NOT ZLIB_LIBRARIES)
find_package(PkgConfig REQUIRED)
pkg_check_modules(ZLIB zlib)
set(ZLIB_LIBRARIES ${ZLIB_LDFLAGS})
else()
set(ZLIB_LDFLAGS ${ZLIB_LIBRARIES})
endif()
# htslib
if(NOT HTSLIB_INCLUDE_DIRS OR NOT HTSLIB_LIBRARIES)
find_package(HTSlib)
set(hts_INCLUDE_DIRS ${HTSlib_INCLUDE_DIRS})
set(hts_LIBRARIES ${HTSlib_LIBRARIES})
else()
set(hts_INCLUDE_DIRS ${HTSLIB_INCLUDE_DIRS})
set(hts_LIBRARIES ${HTSLIB_LIBRARIES})
endif()
# determine if we need a shared lib
if(PacBioBAM_build_shared)
set(BUILD_SHARED_LIBS ON)
set(htslib_build_shared ON CACHE BOOL "force htslibConfig to export proper library name")
set(PB_LIB_MODE SHARED)
set(PB_LIB_SUFFIX ${CMAKE_SHARED_LIBRARY_SUFFIX})
else()
set(BUILD_SHARED_LIBS OFF)
set(PB_LIB_MODE STATIC)
set(PB_LIB_SUFFIX ${CMAKE_STATIC_LIBRARY_SUFFIX})
endif()
if(WIN32)
# Limit the number of DLLs we will have to bundle
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -static-libgcc -static-libstdc++")
set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -static-libgcc -static-libstdc++")
endif()
find_package(Doxygen)
if(DOXYGEN_FOUND)
configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile.in ${PacBioBAM_DocsDir}/Doxyfile @ONLY )
add_custom_target(doc
${DOXYGEN_EXECUTABLE} ${PacBioBAM_DocsDir}/Doxyfile
WORKING_DIRECTORY ${PacBioBAM_DocsDir}
COMMENT "Generating API documentation with Doxygen"
VERBATIM
)
endif()
......@@ -103,9 +103,9 @@ author = u'Derek Barnett'
# built documents.
#
# The short X.Y version.
version = '0.17.0'
version = '0.23.0'
# The full version, including alpha/beta/rc tags.
release = '0.17.0'
release = '0.23.0'
# The language for content autogenerated by Sphinx. Refer to documentation
# for a list of supported languages.
......
......@@ -25,14 +25,10 @@ Double-check your compiler version, to be sure it is compatible.
Additional requirements:
* `Boost`_ (1.55+)
* `CMake`_ (3.0+)
* `Meson`_ (0.48+)
* `Google Test`_
* `htslib`_ (1.4+)
For additional languages:
* `SWIG`_ (3.0.5+)
For building API documentation locally:
* `Doxygen`_
......@@ -41,14 +37,12 @@ For maximal convenience, install htslib and google test in the same parent direc
.. _Boost: http://www.boost.org/
.. _clang: http://clang.llvm.org/
.. _CMake: https://cmake.org/
.. _Meson: http://mesonbuild.com/
.. _Meson: https://mesonbuild.com
.. _Ninja: https://ninja-build.org/ (only required when using Meson, optional for CMake)
.. _Doxygen: http://www.stack.nl/~dimitri/doxygen/
.. _gcc: https://gcc.gnu.org/
.. _Google Test: https://github.com/google/googletest
.. _htslib: https://github.com/samtools/htslib.git
.. _SWIG: http://www.swig.org/
.. _getting_started-build:
......@@ -75,51 +69,6 @@ You should first clone the repository:
$ git clone https://github.com/PacificBiosciences/pbbam.git
$ cd pbbam
Building with CMake
^^^^^^^^^^^^^^^^^^^
When building with CMake, create a separate build directory:
.. code-block:: console
$ mkdir build
$ cd build
$ cmake ..
$ make -j 4 # compiles using 4 threads
Output:
* Library : <pbbam_root>/lib
* Headers : <pbbam_root>/include
* Utilities : <pbbam_root>/bin
You may need to set a few options on the cmake command, to point to dependencies' install locations.
Common installation-related options include:
* GTEST_SRC_DIR
Add these using the '-D' argument, like this:
.. code-block:: console
$ cmake .. -DGTEST_SRC_DIR="path/to/googletest"
To run the test suite, run:
.. code-block:: console
$ make test
To build a local copy of the (Doxygen-style) API documentation, run:
.. code-block:: console
$ make doc
And then open <pbbam_root>/docs/html/index.html in your favorite browser.
.. _getting_started-integrate:
Building with Meson
^^^^^^^^^^^^^^^^^^^
......@@ -151,42 +100,6 @@ and ninja will install pbbam to ``/my/install/prefix``.
Integrate
---------
CMake-based projects
````````````````````
For CMake-based projects that will "ship with" or otherwise live alongside pbbam, you can
use the approach described here.
Before defining your library or executable, add the following:
.. code-block:: cmake
add_subdirectory(<path/to/pbbam> external/build/pbbam)
When it's time to run "make" this will ensure that pbbam will be built, inside your own project's
build directory. After this point in the CMakeLists.txt file(s), a few variables will be available
that can be used to setup your include paths and library linking targets:
.. code-block:: cmake
include_directories(
${PacBioBAM_INCLUDE_DIRS}
# other includes that your project needs
)
add_executable(foo)
target_link_libraries(foo
${PacBioBAM_LIBRARIES}
# other libs that your project needs
)
Non-CMake projects
``````````````````
If you're using something other than CMake for your project's build system, then you need to point
it to pbbam's include directory & library, as well as those of its dependencies (primarily htslib).
If you built and installed pbbam using Meson, pkg-config files will be available to be consumed by
projects wishing to utilize pbbam. Autoconf, CMake, Waf, SCons and Meson all have means to determine
If you built and installed pbbam, pkg-config files will be available to be consumed by projects
wishing to utilize pbbam. Autoconf, CMake, Waf, SCons and Meson all have means to determine
dependency information from pkg-config files.
.. _swig_bindings:
Additional Languages
====================
pbbam uses SWIG to generate bindings for other languages. Currently this includes support for C#, Python, and R.
These bindings are disabled by default. See the entry below for your target language to configure pbbam & integrate
the bindings into your project.
.. _swig_bindings-csharp:
C#
------
Building
````````
To build the support for C#, you need to tell CMake to enable it before building:
.. code-block:: console
$ cmake .. -DPacBioBAM_wrap_csharp
$ make
The 'make' step will build relevant libraries/wrappers, and then run a simple program using them,
as a quick sanity-check.
After building, the libraries and wrappers can be found under the pbbam/lib/csharp directory.
API Example
```````````
.. code-block:: c#
using PacBio.BAM;
namespace TestStuff
{
public class TestPbbam
{
public static void TestZmwQuery()
{
var d = new DataSet("foo.bam");
var q = new ZmwQuery(new IntList {1, 2, 3}, d);
var q2 = new ZmwQuery(new IntList { 14743 }, d);
if (0 != q.Count() || 4 != q2.Count())
{
throw new Exception("ZmwQuery not working");
}
Console.WriteLine("TestZmwQuery - OK!");
}
}
}
.. _swig_bindings-python:
Python
------
Building
````````
To build the support for Python, you need to tell CMake to enable it:
.. code-block:: console
$ cmake .. -DPacBioBAM_wrap_python
$ make
The 'make' step will build relevant libraries/wrappers, and then run a simple program using them,
as a quick sanity-check.
After building, the libraries and wrappers can be found in the pbbam/lib/python directory.
'make test' will also include some Python-side unit tests as well.
To use the PacBioBam module, you can set your PYTHONPATH before invoking your script:
.. code-block:: console
$ PYTHONPATH="path/to/pbbam/lib/python" python myScript.py
Or otherwise configure your environment to find the PacBioBam module.
API Example
```````````
.. code-block:: python
import PacBioBam
try:
file = PacBioBam.BamFile('foo.bam')
writer = PacBioBam.BamWriter('new.bam', file.Header())
dataset = PacBioBam.DataSet(file)
entireFile = PacBioBam.EntireFileQuery(dataset)
for record in PacBioBam.Iterate(entireFile):
writer.Write(record)
except RuntimeError:
# found error
Python-Specific Notes
`````````````````````
Iteration
.........
Iteration over dataset queries in Python will likely need to use the PacBioBam.Iterate() method. Thus
file iteration loops will look something like the following:
.. code-block:: python
entireFile = PacBioBam.EntireFileQuery("input.bam")
for record in PacBioBam.Iterate(entireFile):
foo.bar(record)
Exception Handling
..................
Exceptions are used widely by the C++ library. To handle them from Python, you can use try blocks, looking for
any RuntimeError:
.. code-block:: python
try:
file = PacBioBam.BamFile("does_not_exist.bam")
except RuntimeError:
print("caught expected error")
.. _swig_bindings-r:
R
------
Building
````````
To build the support for R, you need to tell CMake to enable it:
.. code-block:: console
$ cmake .. -DPacBioBAM_wrap_r
$ make
The 'make' step will build relevant libraries/wrappers, and then run a simple program using them,
as a quick sanity-check.
After building, the libraries and wrappers can be found in the pbbam/lib/R directory.
'make test' will also include some R-side unit tests as well.
To use the PacBioBam module in your script, nothing should be needed up front - simply invoke 'R' as normal.
You'll do the dynamic load of the R module near the beginning of your script:
.. code-block:: r
# load pbbam R library
lib_path <- "path/to/pbbam/lib/R"
pbbam_libname <- paste(lib_path, "PacBioBam", sep="/")
pbbam_wrapper <- paste(lib_path, "PacBioBam.R", sep="/")
dyn.load(paste(pbbam_libname, .Platform$dynlib.ext, sep=""))
source(pbbam_wrapper)
cacheMetaData(1)
API Example
```````````
.. code-block:: r
# load pbbam R library
lib_path <- "path/to/pbbam/lib/R"
pbbam_libname <- paste(lib_path, "PacBioBam", sep="/")
pbbam_wrapper <- paste(lib_path, "PacBioBam.R", sep="/")
dyn.load(paste(pbbam_libname, .Platform$dynlib.ext, sep=""))
source(pbbam_wrapper)
cacheMetaData(1)
# sample method
copyFileAndFetchRecordNames <-function(inputFn, outputFn) {
result <- tryCatch(
{
file <- BamFile(inputFn)
writer <- BamWriter(outputFn, file$Header())
ds <- DataSet(file)
entireFile <- EntireFileQuery(ds)
iter <- entireFile$begin()
end <- entireFile$end()
while ( iter$'__ne__'(end) ) {
record <- iter$value()
names_in <- c(names_in, record$FullName())
writer$Write(record)
iter$incr()
}
writer$TryFlush()
return(names_in)
},
error = function(e) {
# handle error
return(list())
})
return(result)
}
R-Specific Notes
````````````````
Iteration
.........
To compare iterators, you'll need to explicitly use the '__eq__' or '__ne__' methods. Thus iterating over
a data query, will look something like this:
.. code-block:: r
iter <- query$begin()
end <- query$end()
while ( iter$'__ne__'(end) ) {
record <- iter$value()
# do stuff with record
}
operator[]
..........
In C++, operator[] can be used in some classes to directly access elements in a sequence, e.g. Cigar string
.. code-block:: cpp
CigarOperation op = cigar[0];
For the R wrapper, if you want to do the same sort of thing, you'll need to use the '__getitem__' method.
Please note that these are **0-based** indices, not 1-based as in much of R.
.. code-block:: r
op <- cigar$'__getitem__'(0)
Exception Handling
..................
Exceptions are used widely by the C++ library. To handle them from R, you can use the 'tryCatch' block, listening for
'error' type exceptions.
.. code-block:: r
result <- tryCatch(
{
f <- BamFile("does_not_exist.bam") # this statement will throw
},
error = function(e) {
print(paste("caught expected erorr: ",e))
})
......@@ -164,7 +164,7 @@ Output PacBio BAMs will be compatible with the `PacBio BAM`_ specification (2)
and thus compatible with the general `BAM format`_ specification (1). This
ensures that a wide variety of downstream tools can interact with data files.
The software uses `CMake`_ as its build system.
The software uses `Meson`_ as its build system.
The core C++ API relies on the following 3rd party components:
......@@ -176,7 +176,7 @@ Wrapper APIs for additional languages (Python, R, C#) are generated by `SWIG`_.
API documentation is generated via `Doxygen`_.
.. _CMake: https://cmake.org/
.. _Meson: https://mesonbuild.com
.. _zlib: http://www.zlib.net/
.. _htslib: https://github.com/samtools/htslib
.. _Boost: http://www.boost.org/
......@@ -454,7 +454,7 @@ Analysis subsystem. See `SMRT Analysis`_ (6) specifications for more detail.
Additionally, the library may be built independently, either from internal
version control (Perforce) or from the public-facing Github repository. In
either case, `CMake`_ is used to drive the build process.
either case, `Meson`_ is used to drive the build process.
6.7. Administration
-------------------
......@@ -537,9 +537,8 @@ operating system (Linux distributions, Apple OSX, etc.).
8.5. SOUP Components
--------------------
pbbam utilizes CMake for its build system. The C++ library uses the following
3rd-party software components: Boost, htslib, & zlib. Wrappers for additional
languages are generated using SWIG.
pbbam utilizes Meson for its build system. The C++ library uses the following
3rd-party software components: Boost, htslib and zlib.
8.6. Deployment and Configuration
---------------------------------
......
......@@ -9,6 +9,7 @@ if not meson.is_subproject()
'pbbam/AlignmentPrinter.h',
'pbbam/BaiIndexedBamReader.h',
'pbbam/BamFile.h',
'pbbam/BamFileMerger.h',
'pbbam/BamHeader.h',
'pbbam/BamReader.h',
'pbbam/BamRecord.h',
......@@ -30,11 +31,14 @@ if not meson.is_subproject()
'pbbam/DataSetTypes.h',
'pbbam/DataSetXsd.h',
'pbbam/EntireFileQuery.h',
'pbbam/FastaCache.h',
'pbbam/FastaReader.h',
'pbbam/FastaSequence.h',
'pbbam/FastaSequenceQuery.h',
'pbbam/FastaWriter.h',
'pbbam/FastqReader.h',
'pbbam/FastqSequence.h',
'pbbam/FastqWriter.h',
'pbbam/FrameEncodingType.h',
'pbbam/Frames.h',
'pbbam/GenomicInterval.h',
......@@ -91,43 +95,17 @@ if not meson.is_subproject()
install_headers(
files([
'pbbam/internal/Accuracy.inl',
'pbbam/internal/BamHeader.inl',
'pbbam/internal/BamRecord.inl',
'pbbam/internal/BamRecordBuilder.inl',
'pbbam/internal/BamRecordImpl.inl',
'pbbam/internal/BamRecordView.inl',
'pbbam/internal/Cigar.inl',
'pbbam/internal/CigarOperation.inl',
'pbbam/internal/Compare.inl',
'pbbam/internal/CompositeBamReader.inl',
'pbbam/internal/CompositeFastaReader.inl',
'pbbam/internal/DataSet.inl',
'pbbam/internal/DataSetBaseTypes.h',
'pbbam/internal/DataSetBaseTypes.inl',
'pbbam/internal/DataSetElement.h',
'pbbam/internal/DataSetElement.inl',
'pbbam/internal/DataSetListElement.h',
'pbbam/internal/DataSetListElement.inl',
'pbbam/internal/DataSetTypes.inl',
'pbbam/internal/FastaSequence.inl',
'pbbam/internal/FastqSequence.inl',
'pbbam/internal/Frames.inl',
'pbbam/internal/GenomicInterval.inl',
'pbbam/internal/Interval.inl',
'pbbam/internal/PbiBasicTypes.inl',
'pbbam/internal/PbiFilter.inl',
'pbbam/internal/PbiFilterTypes.inl',
'pbbam/internal/PbiRawData.inl',
'pbbam/internal/ProgramInfo.inl',
'pbbam/internal/QualityValue.inl',
'pbbam/internal/QualityValues.inl',
'pbbam/internal/QueryBase.h',
'pbbam/internal/QueryBase.inl',
'pbbam/internal/ReadGroupInfo.inl',
'pbbam/internal/SequenceInfo.inl',
'pbbam/internal/Tag.inl',
'pbbam/internal/Validator.inl']),
'pbbam/internal/QueryBase.inl']),
subdir : 'pbbam/internal')
install_headers(
......@@ -143,14 +121,6 @@ if not meson.is_subproject()
'pbbam/vcf/VcfWriter.h']),
subdir : 'pbbam/vcf')
install_headers(
files([
'pbbam/vcf/internal/VcfVariant.inl',
'pbbam/vcf/internal/VcfFile.inl',
'pbbam/vcf/internal/VcfHeader.inl',
'pbbam/vcf/internal/VcfHeaderTypes.inl']),
subdir : 'pbbam/vcf/internal')
install_headers(
files([
'pbbam/virtual/VirtualPolymeraseBamRecord.h',
......
......@@ -34,11 +34,11 @@ public:
///
Accuracy(float accuracy);
Accuracy(const Accuracy&) = default;
Accuracy(Accuracy&&) = default;
Accuracy& operator=(const Accuracy&) = default;
Accuracy& operator=(Accuracy&&) = default;
~Accuracy() = default;
Accuracy(const Accuracy&);
Accuracy(Accuracy&&);
Accuracy& operator=(const Accuracy&);
Accuracy& operator=(Accuracy&&);
~Accuracy();
/// \}
......@@ -53,6 +53,4 @@ private:
} // namespace BAM
} // namespace PacBio
#include "pbbam/internal/Accuracy.inl"
#endif // ACCURACY_H