[med-svn] [unanimity] 03/04: Imported Upstream version 2.0.4+20161206+dfsg

Afif Elghraoui afif at moszumanska.debian.org
Mon Dec 19 06:16:09 UTC 2016


This is an automated email from the git hooks/post-receive script.

afif pushed a commit to branch master
in repository unanimity.

commit eeb5d260cde9e71d20214469fa712356abf0b222
Author: Afif Elghraoui <afif at debian.org>
Date:   Sun Dec 18 01:14:52 2016 -0800

    Imported Upstream version 2.0.4+20161206+dfsg
---
 .gitignore                                         |    3 +
 .gitmodules                                        |    4 -
 CMakeLists.txt                                     |    2 +-
 cmake/uny-compilerflags.cmake                      |    4 +-
 cmake/uny-dependencies.cmake                       |   32 +-
 cmake/uny-gitsha1.cmake                            |    2 +-
 .../ZScoreMath.rst                                 |  354 +++----
 .../img/ZScore-HMM-figures.jpeg                    |  Bin 0 -> 105415 bytes
 .../{ => img}/pacbioHMM.svg.png                    |  Bin
 include/pacbio/Version.h.in                        |    1 +
 include/pacbio/ccs/Consensus.h                     |   25 +-
 include/pacbio/ccs/ConsensusSettings.h             |    3 +-
 include/pacbio/consensus/AbstractIntegrator.h      |   24 +-
 include/pacbio/consensus/Evaluator.h               |   11 +-
 include/pacbio/consensus/MonoMolecularIntegrator.h |    5 +
 include/pacbio/data/State.h                        |    6 +-
 include/pacbio/denovo/PoaGraph.h                   |    2 +
 include/pacbio/denovo/SparsePoa.h                  |    2 +-
 .../InvalidEvaluatorException.h}                   |   28 +-
 include/pacbio/log/Logging.h                       |  406 --------
 build.sh => scripts/ci/build.sh                    |   12 +-
 scripts/ci/checkout-submodules.sh                  |   13 +
 scripts/makeChangeLog.py                           |   31 -
 scripts/nightly/build.sh                           |   42 +
 scripts/nightly/checkout-submodules.sh             |   13 +
 scripts/nightly/test.sh                            |   20 +
 setup.py                                           |   26 +-
 src/AbstractIntegrator.cpp                         |   42 +-
 src/CMakeLists.txt                                 |    4 -
 src/ConsensusSettings.cpp                          |   59 +-
 src/Evaluator.cpp                                  |   25 +-
 src/Polish.cpp                                     |   56 +-
 src/SparsePoa.cpp                                  |    5 +-
 src/Template.cpp                                   |   32 +-
 src/Utility.cpp                                    |    7 +-
 src/main/ccs.cpp                                   |  146 +--
 src/models/S_P1C1v2_Model.cpp                      |    2 +-
 src/models/S_P2C2_Model.cpp                        |  395 ++++++++
 src/poa/PoaGraph.cpp                               |    2 +
 src/poa/PoaGraphImpl.cpp                           |   22 +
 src/poa/PoaGraphImpl.h                             |   16 +-
 src/poa/PoaGraphTraversals.cpp                     |    8 +-
 swig/CMakeLists.txt                                |   11 +-
 swig/ConsensusCore2.py                             |    1 +
 tests/cram/100zmws.t                               |   64 +-
 tests/cram/100zmws_byStrand.t                      |  134 +--
 tests/cram/force.t                                 |   14 +
 tests/cram/internal/big.t                          |   20 +
 tests/cram/logfile.t                               |   14 +
 tests/cram/tiny.t                                  |    4 +-
 tests/cram/tiny_noPolish.t                         |   33 +
 tests/data/params/SP2C2.json                       | 1026 ++++++++++++++++++++
 tests/python/test_tool_contract.py                 |    2 +-
 tests/unit/TestLoadModels.cpp                      |   27 +-
 tests/unit/TestPoaConsensus.cpp                    |   45 +-
 tests/unit/TestTemplate.cpp                        |    2 +-
 56 files changed, 2293 insertions(+), 996 deletions(-)

diff --git a/.gitignore b/.gitignore
index 68fc691..4a77bb4 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,2 +1,5 @@
 .DS_Store
 /build
+/_deps
+/_rev_deps
+/unyve
\ No newline at end of file
diff --git a/.gitmodules b/.gitmodules
index 461a8eb..1934faf 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -10,7 +10,3 @@
     path = third-party/pbcopper
     url = ../pbcopper.git
     branch = master
-[submodule "third-party/htslib"]
-	path = third-party/htslib
-	url = ../htslib.git
-	branch = pb
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 264241d..879c065 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -3,7 +3,7 @@
 ##############################################
 
 cmake_policy(SET CMP0048 NEW)
-project(UNANIMITY VERSION 2.0.4 LANGUAGES CXX C)
+project(UNANIMITY VERSION 2.0.5 LANGUAGES CXX C)
 cmake_minimum_required(VERSION 3.2)
 
 set(ROOT_PROJECT_NAME ${PROJECT_NAME} CACHE STRING "root project name")
diff --git a/cmake/uny-compilerflags.cmake b/cmake/uny-compilerflags.cmake
index f5ede27..5b05174 100644
--- a/cmake/uny-compilerflags.cmake
+++ b/cmake/uny-compilerflags.cmake
@@ -5,9 +5,9 @@ include(CheckCXXCompilerFlag)
 set(UNY_FLAGS "-std=c++11 -Wall -Wextra -Wno-unused-parameter -Wno-unused-variable")
 
 # gperftools support
-if(CMAKE_BUILD_TYPE STREQUAL "Debug")
+if(CMAKE_BUILD_TYPE STREQUAL "Debug" AND APPLE)
     set(UNY_LINKER_FLAGS "${UNY_LINKER_FLAGS} -Wl,-no_pie")
-endif(CMAKE_BUILD_TYPE STREQUAL "Debug")
+endif(CMAKE_BUILD_TYPE STREQUAL "Debug" AND APPLE)
 
 # static linking
 IF(${CMAKE_SYSTEM_NAME} MATCHES "Linux")
diff --git a/cmake/uny-dependencies.cmake b/cmake/uny-dependencies.cmake
index a7a7409..ea3324c 100644
--- a/cmake/uny-dependencies.cmake
+++ b/cmake/uny-dependencies.cmake
@@ -9,6 +9,18 @@ if(NOT Boost_INCLUDE_DIRS)
     find_package(Boost REQUIRED)
 endif()
 
+# pbcopper
+if (NOT pbcopper_INCLUDE_DIRS OR
+    NOT pbcopper_LIBRARIES)
+    if (PYTHON_SWIG)
+        set(pbcopper_build_shared OFF CACHE INTERNAL "" FORCE)
+    endif()
+    set(pbcopper_build_tests OFF CACHE INTERNAL "" FORCE)
+    set(pbcopper_build_docs OFF CACHE INTERNAL "" FORCE)
+    set(pbcopper_build_examples OFF CACHE INTERNAL "" FORCE)
+    add_subdirectory(${UNY_ThirdPartyDir}/pbcopper external/pbcopper/build)
+endif()
+
 # only require if NOT called from pip install
 if (NOT PYTHON_SWIG)
     # Threads
@@ -21,14 +33,6 @@ if (NOT PYTHON_SWIG)
         find_package(ZLIB REQUIRED)
     endif()
 
-    # htslib
-    if(NOT HTSLIB_INCLUDE_DIRS OR
-       NOT HTSLIB_LIBRARIES)
-        find_package(htslib
-                     PATHS ${UNY_ThirdPartyDir}/htslib
-                     REQUIRED)
-    endif()
-
     # pbbam
     if (NOT PacBioBAM_INCLUDE_DIRS OR
         NOT PacBioBAM_LIBRARIES)
@@ -36,9 +40,6 @@ if (NOT PYTHON_SWIG)
         set(PacBioBAM_build_tests   OFF CACHE INTERNAL "" FORCE)
         set(PacBioBAM_build_tools   OFF CACHE INTERNAL "" FORCE)
         add_subdirectory(${UNY_ThirdPartyDir}/pbbam external/pbbam/build)
-        if (TARGET htslib)
-            add_dependencies(pbbam htslib)
-        endif()
     endif()
 
     # cpp-optparse sources
@@ -54,13 +55,4 @@ if (NOT PYTHON_SWIG)
     if (NOT SEQAN_INCLUDE_DIRS)
         set(SEQAN_INCLUDE_DIRS ${UNY_ThirdPartyDir}/seqan/include CACHE INTERNAL "" FORCE)
     endif()
-
-    # pbcopper
-    if (NOT pbcopper_INCLUDE_DIRS OR 
-        NOT pbcopper_LIBRARIES)
-        set(pbcopper_build_tests OFF CACHE INTERNAL "" FORCE)
-        set(pbcopper_build_docs OFF CACHE INTERNAL "" FORCE)
-        set(pbcopper_build_examples OFF CACHE INTERNAL "" FORCE)
-        add_subdirectory(${UNY_ThirdPartyDir}/pbcopper external/pbcopper/build)
-    endif()
 endif()
diff --git a/cmake/uny-gitsha1.cmake b/cmake/uny-gitsha1.cmake
index 8a25e7a..275c0b3 100644
--- a/cmake/uny-gitsha1.cmake
+++ b/cmake/uny-gitsha1.cmake
@@ -7,7 +7,7 @@ set(__find_git_sha1 YES)
 function(find_git_sha1 _GIT_SHA1)
     find_package(Git QUIET REQUIRED)
     execute_process(COMMAND
-        "${GIT_EXECUTABLE}" "describe" "--always" "--dirty=*"
+        "${GIT_EXECUTABLE}" "describe" "--always" "--dirty=-dirty"
         WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
         RESULT_VARIABLE res
         OUTPUT_VARIABLE out
diff --git a/doc/ConsensusCore2-DesignAndImplementation/ZScoreMath.rst b/doc/ConsensusCore2-DesignAndImplementation/ZScoreMath.rst
index 14d13b9..184f18b 100644
--- a/doc/ConsensusCore2-DesignAndImplementation/ZScoreMath.rst
+++ b/doc/ConsensusCore2-DesignAndImplementation/ZScoreMath.rst
@@ -28,228 +28,148 @@ estimates.
 Z-Score Motivation
 ------------------
 
-The idea is to compute the expected mean and variance of the log
-likelihood (LL) of sequences output by a given HMM. Thus when
-presented with a sequence that has a certain log probability, we can
-reason how far removed it is to "normal" such that outliers can be
-filtered away.
-
-An HMM is a series of Markov steps: transition and emisson. Each step
-will additively change the LL. In a simple left-to-right profile HMM
-with length, :math:`T`, each match/delete will be visited once.  It is
-reasonable that sums of log probabilities might be close to normal
-under certain conditions.
-
-Here is the basic HMM structure with match, branch (same match base
-insert), stick (different match base insert), delete:
-
-.. figure:: pacbioHMM.svg.png
-
-   The basic HMM structure of a single match state with match, branch,
-   stick, and delete substates.
-
-For each "substate" (match, delete, branchIns, stickIns) we might
-compute that substate's average contribtuion to the the LL over the
-distribution of outputs induced by the HMM: E[LL] and Var[LL]. Then
-:math:`E[LL] = E[ \sum_{substates} LL] = \sum_{substates} E[LL]` by
-linearity of expectation. For IID substates this is :math:`T*E[LL]`. Var[LL]
-= :math:`Var[ \sum_{substates} LL] = \sum_{substates} Var[LL]` because each
-substate is independent so all covariances are 0. For IID substates
-this is :math:`T*Var[LL]`.
-
-For a motivational example, consider an "HMM" with a single
-multinomial :math:`p=(p_1,p_2,p_3,p_4)`. Here :math:`E[LL] =
-p*log(p).` :math:`E[LL^2] = p*log^2(p).` :math:`Var[LL]=
-E[LL^2]-E^2[LL]` :math:`= p*log^2(p) - (p*log(p))^2`. These are
-expected mean and variance of the LL by this simple multinomial. By
-stringing together multinomial emissions and transitions, we can
-estimate these quantities for an HMM.
-
-An HMM emits a string by entering a state, emitting an output
-according to an emission probability, making a random choice about
-what state to transition to next, transitioning to that new state, and
-repeating.
-
-Consider a single HMM state that has emission probabilities
-:math:`e_j`, transistion probabilities :math:`t_i`, and next state
-:math:`R_i` that outputs the rest of the output. The probability of
-this state is :math:`P=(e_j t_i \prod_k R_{ik})` where the product is
-the rest of the states multiplying their contributions. The log
-likelihood is :math:`LL=\log e_j + \log t_i + \sum_k \log
-R_{ik}`. Define :math:`\log e = \sum_j e_j \log(e_j)` and
-:math:`\log^2 e = \sum_j e_j \log^2(e_j)` be the expectations over the
-possible emission possibitilties.
-
-The expectation of log likelihood is :math:`EXP_{t_i} [(\log e + \log
-t_i + \sum_k \log R_{ik})]`. Note the expecation of the
-log-likelikhood of the rest of the derivation represented by the sum
-is :math:`EXP[ LL(R_i) ]` so we get :math:`EXP_{t_i} [(\log e + \log
-t_i + EXP[ LL(R_i)] ]`
-
-The expectation of log likelihood squared is :math:`EXP_{t_i}[ (\log
-e + \log t_i + \sum_k \log R_{ik})^2]`. Expand the square. The only
-complicating term is :math:`EXP_{t_i}[(\sum_k \log R_{ik})^2]` but we
-realize this to be the expectation of the log-likelihood squared of
-the rest of the derivation, :math:`EXP[ LL^2(R_i) ]`.
-
-Given this, we can write a dynamic program that computes the expected
-log-likelihood and expected log-likelihood squared of
-:math:`thisstate` derving a string of :math:`length` for every state
-and every length up to some maximum. With a large enough maximum
-length computed, contributions from possibly infinite self-loops in
-the insert states will be properly summed as the trailing terms become
-so small as to be negligible.
-
-The relvant python code that computes the expectation over the
-different choices of next rest state (nexts) with transition
-probabilities (nextp) and expected emissions (expEmLL, expEmLL2):
-
-.. code-block:: python
-
-   # cycle through choices
-   overallresult = [0.0, 0.0, 0.0]
-   for ch in range(len(this.nexts)):
-       transp = this.nextp[ch]
-       rhs = self.derive( this.nexts[ch], newlength)
-       A = self.mylog(transp) # log transition
-       A2 = A*A               # log transistion squared
-       B = expEmLL            # expected log emission likelihood
-       B2= expEmLL2           # expected log squared emission likelihood
-       C = rhs[1]             # EXP[LL] of next
-       C2= rhs[2]             # EXP[LL^2] of next
-       thisll =  transp*(A+B+C)
-       thisll2 = transp*( A2 + B2 + C2 + 2*A*B + 2*A*C +2*B*C)
-       thisprob = transp*rhs[0]
-       if thisprob>0.0:
-	   overallresult[0]=overallresult[0]+thisprob
-	   overallresult[1]=overallresult[1]+thisll
-	   overallresult[2]=overallresult[2]+thisll2
-   self.memo[self.key(thisstate,length)]=overallresult
-   return(overallresult)
-
-
-Z-Score for Filtering
----------------------
-
-One method for identifying garbage reads is the "Z-Score" described
-here [PBEP_4.pdf]. This result sums out the infinite sums caused by
-the looping insert states analytically to get an analytic result
-rather than a dynamic programming one.
-
-Here is the result verbatim from PBEF_4.pdf:
-
-+-------------------------+-----------------------------------------+
-| term                    | meaning                                 |
-+=========================+=========================================+
-| :math:`p_m`             | match transistion probability           |
-+-------------------------+-----------------------------------------+
-| :math:`p_d`             | deletion transistion probability        |
-+-------------------------+-----------------------------------------+
-| :math:`p_s`             | stick transition probability            |
-+-------------------------+-----------------------------------------+
-| :math:`p_b`             | branch transition probability           |
-+-------------------------+-----------------------------------------+
-| :math:`l_m,l_d,l_s,l_b` | log of transition probabilities         |
-+-------------------------+-----------------------------------------+
-| :math:`E[\rightarrow]`  | expected LL from match or deletion      |
-+-------------------------+-----------------------------------------+
-| :math:`E[\downarrow]`   | expected LL from all insertions         | 
-+-------------------------+-----------------------------------------+
-| :math:`E[NN]`           | mean LL from context                    |
-+-------------------------+-----------------------------------------+
-| :math:`E[M]`            | mean logged match emission probability  |
-+-------------------------+-----------------------------------------+
-| :math:`E[B]`            | mean logged branch emission probability |
-+-------------------------+-----------------------------------------+
-| :math:`E[S]`            | mean logged stick emission probability  |
-+-------------------------+-----------------------------------------+
-| :math:`E[I]`            | mean logged trans,emiss ins probability |
-+-------------------------+-----------------------------------------+
-
-Derivation: 
-
-- :math:`E[NN] = E[\downarrow] + E[\rightarrow]`
-
-Break into simple match/delete and insert chains. Expected LL from
-context = expected LL from match/delete + expected LL from insertions
-
-- :math:`E[\rightarrow] = (l_m + E[M]) \frac{p_m}{p_m+p_d} + (l_d) \frac{p_d}{p_m+p_d}`
-
-Transistion weighted (LL from match trans+emis) and (LL from delete
-trans)
-
-- :math:`E[\downarrow]= E[I] \frac{p_s+p_b}{p_m+p_d}`
-
-Expected insertion LL weighted by expected length of insertion where
-:math:`(p_s+p_b)` is the probablity of looping in the insertion and
-:math:`(p_m+p_d)` is the probability of looping out.
-
-- :math:`E[I] = (l_b+E[B]+E[\rightarrow]) \frac{p_b}{p_b+p_s} + (l_s+E[S]+E[\rightarrow]) \frac{p_s}{p_b+p_s}`
-
-Transition weighted LL branch transition/emission and LL stick
-transition/emission within insertion. (Note this updates to three
-terms versus to two in the PBEP)
-
-For the second moment, we replace :math:`LL^2` for :math:`LL` in the
-above equations and are careful to carry the expectation of the
-likelihood or the expectation of the likelihood squared forward.
-
-
-+----------------------------------------------------------------------------+
-| Classic Identities:                                                        |
-+============================================================================+
-| :math:`E[X+Y]=E[X]+E[Y]`                                                   |
-+----------------------------------------------------------------------------+
-| :math:`Var(X) = E[X^2]-E^2[X]`                                             |
-+----------------------------------------------------------------------------+
-| :math:`Var(X+Y) = Var(X) + Var(Y) + 2Cov(X,Y)`                             |
-+----------------------------------------------------------------------------+
-| :math:`E[a*X] = aE[X]`                                                     |
-+----------------------------------------------------------------------------+
-| :math:`Var(a*X) = a^2Var(X)`                                               |
-+----------------------------------------------------------------------------+
-| :math:`E[XY]=E[X]E[Y]` if independent                                      |
-+----------------------------------------------------------------------------+
-| :math:`\sum_{k=0}^\infty (1-p)^k*p*k*ll = ll*\frac{1-p}{p}`                |
-+----------------------------------------------------------------------------+
-| :math:`\sum_{k=0}^\infty (1-p)^k*p*(k*ll)^2 = ll^2 \frac{(p-2)(p-1)}{p^2}` |
-+----------------------------------------------------------------------------+
-
-Z-Score Sanity Check
---------------------
+The idea of the Z-Score is to compute the expected mean and variance
+of the log likelihood (LL) of sequences output by a given HMM. Thus
+when presented with a sequence that has a certain log probability, we
+can reason how far removed it is to "normal" such that outliers can be
+filtered away.  This Z-Score metric has shown some power at enabling
+us to filter out truly aberrant reads from consensus calling.
+
+The Arrow HMM model is a left-right "profile" HMM model; for each
+template position, the model will arrive at either the match or delete
+state corresponding to the template position, after sojourning through
+the preceding branch/stick states some number of times.  A useful
+reduction of the model collapses the Branch and Stick states into an
+"E" ("Extra") state, and the Match/Delete states into an "N" ("Next")
+state .  The following figure shows what the states look like
+corresponding to each template position.
+
+.. figure:: img/ZScore-HMM-figures.jpeg
+
+   (a) shows the states and edges corresponding to a single template
+   position in the Arrow model; (b) shows a simplification where
+   where we have collapsed the states that advance in the template
+   (Match and Delete become "N" ("Next") and those that remain in
+   place (Branch and Stick become "E" ("Extra"))
+
+
+For each template position, then, we can calculate the expectation and
+variance of the loglikelihood of sojourning through the "Extra" states
+and finally arriving at a "Next" state (and performing all the
+associated emissions).  The expectation of LL over all states is then
+the sum of the expectation over each state.  We make independence
+assumptions about the loglikelihood contributions from each state,
+thus enabling the variance to be decomposed as a simple sum as well.
+
+Z-Score parameters computation
+------------------------------
+
+*(Note that we use the nonstandard abbreviation* :math:`\log^k x = (\log x)^k` *in the following.)*
+
+.. math::
+   \newcommand{\E}{\textrm{E}}
+   \newcommand{\Var}{\textrm{Var}}
+   \newcommand{\Cov}{\textrm{Cov}}
+   \newcommand{\ahrule}{\shortintertext{\rule{\textwidth}{0.5pt}}}
+   \newcommand{\phantomeq}{\phantom{{}={}}}
+
+*Definitions:*
+
+.. math::
+   \begin{aligned}
+   L &= \textrm{likelihood}  \\
+   E\textrm{(xtra)} &= B\textrm{(ranch or cognate extra)} + S\textrm{(tick or non-cognate extra)}  \\
+   N\textrm{(ext)} &= M\textrm{(atch or incorporation)} + D\textrm{(eletion)}  \\
+   \mathbb{O} &= \textrm{set of emission outcomes}  \\
+   p_B &= \textrm{probability of a cognate extra}  \\
+   p_S &= \textrm{probability of a non-cognate extra}  \\
+   p_M &= \textrm{probability of an incorporation}  \\
+   p_D &= \textrm{probability of a deletion}  \\
+   p_E &= p_B + p_S  \\
+   p_N &= p_M + p_D  \\
+   p_N + p_E &= p_B + p_S + p_M + p_D = 1
+   \end{aligned}
+
+-------
+
+*Identities:*
+
+.. math::
+   \begin{aligned}
+   \sum_{k=0}^{\infty} p^k &= \frac{1}{1-p}, \textrm{ given } |p| < 1 \\
+   \sum_{k=0}^{\infty} k p^k &= \frac{p}{(1-p)^2}, \textrm{ given } |p| < 1 \\
+   \sum_{k=0}^{\infty} k^2 p^k &= \frac{p(1+p)}{(1-p)^3}, \textrm{ given } |p| < 1 \\
+   \end{aligned}
+
+-------
+
+*Expected loglikelihood contribution from each state type:*
+
+.. math::
+   \E[\log L] &= \textrm{expected log-likelihood of the model}  \\
+   \E[\log B] &= \textstyle{\sum_{o \in \mathbb{O}}} \Pr(o|B) \log \Pr(o|B)  \\ % \textrm{expected log-likelihood of cognate extra emission}  \\
+   \E[\log S] &= \textstyle{\sum_{o \in \mathbb{O}}} \Pr(o|S) \log \Pr(o|S)  \\ % \textrm{expected log-likelihood of non-cognate extra emission}  \\
+   \E[\log M] &= \textstyle{\sum_{o \in \mathbb{O}}} \Pr(o|M) \log \Pr(o|M)  \\ % \textrm{expected log-likelihood of incorporation emission}  \\
+   \E[\log E] &= \frac{p_B}{p_B + p_S} (\log p_B + \E[\log B]) + \frac{p_S}{p_B + p_S} (\log p_S + \E[\log S])  \\
+   \E[\log N] &= \frac{p_M}{p_M + p_D} (\log p_M + \E[\log M]) + \frac{p_D}{p_M + p_D} \log p_D  \\
+
+
+-------
+
+*Second moments*
+
+.. math::
+   \E[\log^2 L] &= \textrm{expected squared log-likelihood of the model}  \\
+   \E[\log^2 B] &= \textstyle{\sum_{o \in \mathbb{O}}} \Pr(o|B) \log^2 \Pr(o|B)  \\ % \textrm{expected squared log-likelihood of cognate extra emission}  \\
+   \E[\log^2 S] &= \textstyle{\sum_{o \in \mathbb{O}}} \Pr(o|S) \log^2 \Pr(o|S)  \\ % \textrm{expected squared log-likelihood of non-cognate extra emission}  \\
+   \E[\log^2 M] &= \textstyle{\sum_{o \in \mathbb{O}}} \Pr(o|M) \log^2 \Pr(o|M)  \\ % \textrm{expected squared log-likelihood of incorporation emission}  \\
+   \E[\log^2 E] &= \frac{p_B}{p_B + p_S} (\log^2 p_B + 2 \cdot \E[\log B] \log p_B + \E[\log^2 B]) \mathrel{+}  \\
+   &\phantomeq \frac{p_S}{p_B + p_S} (\log^2 p_S + 2 \cdot \E[\log S] \log p_S + \E[\log^2 S])  \\
+   \E[\log^2 N] &= \frac{p_M}{p_M + p_D} (\log^2 p_M + 2 \cdot \E[\log M] \log p_M + \E[\log^2 M]) + \frac{p_D}{p_M + p_D} \log^2 p_D  \\
+
+-------
+
+*Expected loglikelihood:*
+
+.. math::
+   \begin{align}
+   \E[\log L] &= p_N \sum_{k=0}^{\infty} p_E^k \E[\log E^k N] \\
+           &= p_N \sum_{k=0}^{\infty} p_E^k (k \E[\log E] + \E[\log N]) \\
+           &= p_N \E[\log E] \sum_{k=0}^{\infty} k p_E^k + p_N \E[\log N] \sum_{k=0}^{\infty} p_E^k \\
+           &= p_N \E[\log E] \frac{p_E}{p_N^2} + p_N \E[\log N] \frac{1}{p_N} \\
+           &= \frac{p_E}{p_N} \E[\log E] + \E[\log N]
+   \end{align}
+
+
+---------
+
+*Variance of loglikelihood*
+
+.. math::
+   \begin{align}
+   \Var(\log L) &= \E[\log^2 L] - (\E[\log L])^2 \\
+                &= p_N \sum_{k=0}^{\infty} p_E^k \E[(\log E^k N)^2] - (\E[\log L])^2 \\
+                &= p_N \sum_{k=0}^{\infty} p_E^k (k \E[\log E] + \E[\log N])^2 - (\E[\log L])^2 \\
+                &= p_N \sum_{k=0}^{\infty} p_E^k k^2 \E[\log^2 E] \mathrel{+}  \\
+                &\phantomeq 2 p_N \sum_{k=0}^{\infty} p_E^k k \E[\log E] \E[\log N] \mathrel{+}  \\
+                &\phantomeq p_N \sum_{k=0}^{\infty} p_E^k \E[\log^2 N] \mathrel{-}  \\
+                &\phantomeq (\E[\log L])^2 \\
+                &= p_N \E[\log^2 E] \frac{p_E (1+p_E)}{p_N^3} \mathrel{+}  \\
+                &\phantomeq 2 p_N \E[\log E] \E[\log N] \frac{p_E}{p_N^2} \mathrel{+}  \\
+                &\phantomeq p_N \E[\log^2 N] \frac{1}{p_N} \mathrel{-}  \\
+                &\phantomeq (\E[\log L])^2 \\
+                &= \frac{p_E (1 + p_E)}{p_N^2} \E[\log^2 E] + 2 \frac{p_E}{p_N} \E[\log E] \E[\log N] + \E[\log^2 N] - (\E[\log L])^2
+   \end{align}
 
-As a sanity check we generated random deviates using a simple HMM with
-varying number of substates, computed means and variances, and
-compared to the computed expected values.
-
-The means and variances are close computed versus estimated.
-
-+-------+----------+---------+----------+--------+
-|  size |     mean |     var | compmean | compvar|
-+=======+==========+=========+==========+========+
-|    32 |-26.65075 |59.80562 |-27.13874 |68.15969|
-+-------+----------+---------+----------+--------+
-|    60 |-50.99983 | 121.535 |-50.88515 |127.7994|
-+-------+----------+---------+----------+--------+
-|   120 |-101.8052 |256.4235 |-101.7703 |255.5988|
-+-------+----------+---------+----------+--------+
-|   240 |-202.6475 |473.0255 |-203.5406 |511.1977|
-+-------+----------+---------+----------+--------+
-|   480 |-407.2655 |1073.169 |-407.0812 |1022.395|
-+-------+----------+---------+----------+--------+
-
-Real-world performance on RSII data shows that the Z-score does have
-good performance in filtering garbage reads. Because we are able to
-adjust the Z-Score threshold, good performance is obtained.
 
 Z-Score Shortcomings
 --------------------
 
-The bursty errors occur in localized regions. For a long read, these
-localized bursts might not be detected by the Z-score metric.  Overall
-the number of errors, if they were randomly distributed across the
-read, might be within what might be expected normally. The fact that
-they are all localized is what makes it abnormal.
+Unfortunately, a small region of deviance may not be noticed in a long
+read---bursty errors occur in localized regions.  Overall the number
+of errors, if they were randomly distributed across the read, might be
+within what might be expected normally. The fact that they are all
+localized is what makes it abnormal.
 
 An HMM can identify these localized bursts. The Viterbi path assigns
 each match/delete state to a position in the read
diff --git a/doc/ConsensusCore2-DesignAndImplementation/img/ZScore-HMM-figures.jpeg b/doc/ConsensusCore2-DesignAndImplementation/img/ZScore-HMM-figures.jpeg
new file mode 100644
index 0000000..5f929c8
Binary files /dev/null and b/doc/ConsensusCore2-DesignAndImplementation/img/ZScore-HMM-figures.jpeg differ
diff --git a/doc/ConsensusCore2-DesignAndImplementation/pacbioHMM.svg.png b/doc/ConsensusCore2-DesignAndImplementation/img/pacbioHMM.svg.png
similarity index 100%
rename from doc/ConsensusCore2-DesignAndImplementation/pacbioHMM.svg.png
rename to doc/ConsensusCore2-DesignAndImplementation/img/pacbioHMM.svg.png
diff --git a/include/pacbio/Version.h.in b/include/pacbio/Version.h.in
index 430b5e4..f52d813 100644
--- a/include/pacbio/Version.h.in
+++ b/include/pacbio/Version.h.in
@@ -37,6 +37,7 @@
 
 #pragma once
 
+#include <algorithm>
 #include <string>
 
 namespace PacBio {
diff --git a/include/pacbio/ccs/Consensus.h b/include/pacbio/ccs/Consensus.h
index 5cf998c..6104f46 100644
--- a/include/pacbio/ccs/Consensus.h
+++ b/include/pacbio/ccs/Consensus.h
@@ -62,8 +62,8 @@
 #include <pacbio/data/ReadId.h>
 #include <pacbio/data/SubreadResultCounter.h>
 #include <pacbio/denovo/SparsePoa.h>
-#include <pacbio/log/Logging.h>
 #include <pacbio/util/Timer.h>
+#include <pbcopper/logging/Logging.h>
 
 namespace PacBio {
 namespace CCS {
@@ -325,13 +325,17 @@ bool ReadAccuracyDescending(const std::pair<size_t, const TRead*>& a,
 
 }  // namespace anonymous
 
+/// \returns a std::pair containing a std::string for the consensus, and a size_t
+//           describing the number of adapter-to-adapter reads successfully added
 template <typename TRead>
-std::string PoaConsensus(const std::vector<const TRead*>& reads,
-                         std::vector<SparsePoa::ReadKey>* readKeys,
-                         std::vector<PoaAlignmentSummary>* summaries, const size_t maxPoaCov)
+std::pair<std::string, size_t> PoaConsensus(const std::vector<const TRead*>& reads,
+                                            std::vector<SparsePoa::ReadKey>* readKeys,
+                                            std::vector<PoaAlignmentSummary>* summaries,
+                                            const size_t maxPoaCov)
 {
     SparsePoa poa;
     size_t cov = 0;
+    size_t nPasses = 0;
 
 #if 0
     // create a vector of indices into the original reads vector,
@@ -353,13 +357,16 @@ std::string PoaConsensus(const std::vector<const TRead*>& reads,
         // SparsePoa::ReadKey key = poa.OrientAndAddRead(read.second->Seq);
         // readKeys->at(read.first) = key;
         readKeys->emplace_back(key);
-        if (key >= 0 && (++cov) >= maxPoaCov) break;
+        if (key >= 0) {
+            if (read->Flags & BAM::ADAPTER_BEFORE && read->Flags & BAM::ADAPTER_AFTER) ++nPasses;
+            if ((++cov) >= maxPoaCov) break;
+        }
     }
 
     // at least 50% of the reads should cover
     // TODO(lhepler) revisit this minimum coverage equation
     const size_t minCov = (cov < 5) ? 1 : (cov + 1) / 2 - 1;
-    return poa.FindConsensus(minCov, &(*summaries))->Sequence;
+    return std::make_pair(poa.FindConsensus(minCov, &(*summaries))->Sequence, nPasses);
 }
 
 // pass unique_ptr by reference to satisfy finickyness wrt move semantics in <future>
@@ -424,7 +431,9 @@ ResultType<ConsensusType> Consensus(std::unique_ptr<std::vector<TChunk>>& chunks
 
         std::vector<SparsePoa::ReadKey> readKeys;
         std::vector<PoaAlignmentSummary> summaries;
-        std::string poaConsensus =
+        std::string poaConsensus;
+        size_t nPasses = 0;
+        std::tie(poaConsensus, nPasses) =
             PoaConsensus(reads, &readKeys, &summaries, settings.MaxPoaCoverage);
 
         if (poaConsensus.length() < settings.MinLength) {
@@ -447,7 +456,7 @@ ResultType<ConsensusType> Consensus(std::unique_ptr<std::vector<TChunk>>& chunks
                 result.Success += 1;
                 result.SubreadCounter.Success += activeReads;
                 result.emplace_back(ConsensusType{
-                    PolishResult(), chunk.Id, boost::none, poaConsensus, qvs, possiblePasses, 0, 0,
+                    PolishResult(), chunk.Id, boost::none, poaConsensus, qvs, nPasses, 0, 0,
                     std::vector<double>(1), result.SubreadCounter.ReturnCountsAsArray(),
                     chunk.SignalToNoise, timer.ElapsedMilliseconds(), chunk.Barcodes});
             } else {
diff --git a/include/pacbio/ccs/ConsensusSettings.h b/include/pacbio/ccs/ConsensusSettings.h
index 3e298c4..1bf57db 100644
--- a/include/pacbio/ccs/ConsensusSettings.h
+++ b/include/pacbio/ccs/ConsensusSettings.h
@@ -41,6 +41,7 @@
 #include <thread>
 
 #include <pbcopper/cli/CLI.h>
+#include <pbcopper/logging/Logging.h>
 
 #include <pacbio/data/PlainOption.h>
 
@@ -56,7 +57,7 @@ struct ConsensusSettings
     const size_t ChunkSize = 1;
     bool ForceOutput;
     std::string LogFile;
-    std::string LogLevel;
+    Logging::LogLevel LogLevel;
     double MaxDropFraction;
     size_t MaxLength;
     const size_t MaxPoaCoverage = std::numeric_limits<size_t>::max();
diff --git a/include/pacbio/consensus/AbstractIntegrator.h b/include/pacbio/consensus/AbstractIntegrator.h
index 536ff33..21401f3 100644
--- a/include/pacbio/consensus/AbstractIntegrator.h
+++ b/include/pacbio/consensus/AbstractIntegrator.h
@@ -58,7 +58,7 @@ struct IntegratorConfig
     double MinZScore;
     double ScoreDiff;
 
-    IntegratorConfig(double minZScore = -3.5, double scoreDiff = 12.5);
+    IntegratorConfig(double minZScore = -3.4, double scoreDiff = 12.5);
 };
 
 /// At its core, this class holds a vector of Evaluators and provides helper
@@ -73,6 +73,10 @@ public:
     virtual char operator[](size_t i) const = 0;
     virtual operator std::string() const = 0;
 
+    /// This method throws InvalidEvaluatorException, every time the likelihood
+    /// can't be computed for one Evaluator; the respective Evaluator will be invalidated.
+    /// You MUST recompute the LLs for all your mutations of interest, as the
+    /// number of active Evaluators changed.
     virtual double LL(const Mutation& mut);
     virtual double LL() const;
 
@@ -87,10 +91,15 @@ public:
     virtual PacBio::Data::State AddRead(const PacBio::Data::MappedRead& read) = 0;
 
     /// Given a Mutation of interest, returns a vector of LLs,
-    /// one LL per Evaluator, even for inactive ones.
+    /// one LL per active Evaluator; invalid Evaluators are omitted.
+    ///
+    /// This method throws InvalidEvaluatorException, every time the likelihood
+    /// can't be computed for one Evaluator; the respective Evaluator will be invalidated.
+    /// You MUST recompute the LLs for all your mutations of interest, as the
+    /// number of active Evaluators changed.
     std::vector<double> LLs(const Mutation& mut);
-    /// Using the current template, returns a vector of LLs,
-    /// one LL per Evaluator, even for inactive ones.
+    /// Return the LL for each Evaluator, even invalid ones.
+    /// DO NOT use this in production code, only for debugging purposes.
     std::vector<double> LLs() const;
     /// For each Evaluator, returns the read name.
     std::vector<std::string> ReadNames() const;
@@ -154,13 +163,6 @@ private:
     }
 };
 
-/// Accumulate all non inf or -inf doubles.
-inline double AccumulateNoInf(std::vector<double> input)
-{
-    const auto AddNoInf = [](double a, double b) { return a + (std::isinf(b) ? 0.0 : b); };
-    return std::accumulate(input.cbegin(), input.cend(), 0.0, AddNoInf);
-}
-
 /// Helper function to get maximal number from a vector.
 template <typename T>
 inline T MaxElement(const std::vector<T>& in)
diff --git a/include/pacbio/consensus/Evaluator.h b/include/pacbio/consensus/Evaluator.h
index 2804343..db2b2a1 100644
--- a/include/pacbio/consensus/Evaluator.h
+++ b/include/pacbio/consensus/Evaluator.h
@@ -111,6 +111,10 @@ public:
 
     /// Returns the LL of the Read, given the mutated template.
     /// Returns -INF if deactivated.
+    ///
+    /// Throws an exception if the mutation caused a corner-cause failure.
+    /// In this case, the Evaluator gets deactivated. You MUST recompute the
+    /// LLs for all your mutations of interest, as this Evaluator will be invalid.
     double LL(const Mutation& mut);
 
     /// Returns the LL of the Read, given the current template.
@@ -143,9 +147,14 @@ public:
     /// Returns -INF if deactivated.
     int NumFlipFlops() const;
 
-    /// Invalides this Evaluator and releases its implementation.
+    /// Manually releases this Evaluator from its implementation.
+    /// Cannot be used afterwards.
     void Release();
 
+    /// For internal purposes:
+    /// Invalidates this Evaluator and releases its implementation.
+    void Invalidate();
+
 public:
     const AbstractMatrix& Alpha() const;
     const AbstractMatrix& Beta() const;
diff --git a/include/pacbio/consensus/MonoMolecularIntegrator.h b/include/pacbio/consensus/MonoMolecularIntegrator.h
index 1209d02..ee4dac3 100644
--- a/include/pacbio/consensus/MonoMolecularIntegrator.h
+++ b/include/pacbio/consensus/MonoMolecularIntegrator.h
@@ -74,6 +74,11 @@ public:
     operator std::string() const override;
 
     /// Computes the LL sum of all Evaluators, given a templated mutated by mut.
+    ///
+    /// This method throws InvalidEvaluatorException, every time the likelihood
+    /// can't be computed for one Evaluator; the respective Evaluator will be invalidated.
+    /// You MUST recompute the LLs for all your mutations of interest, as the
+    /// number of active Evaluators changed.
     double LL(const Mutation& mut) override;
     /// Computes the LL sum of all Evaluators, given the current template.
     inline double LL() const override { return AbstractIntegrator::LL(); }
diff --git a/include/pacbio/data/State.h b/include/pacbio/data/State.h
index 3919bf4..2c8a87e 100644
--- a/include/pacbio/data/State.h
+++ b/include/pacbio/data/State.h
@@ -47,12 +47,14 @@ enum struct State : uint8_t
     POOR_ZSCORE,
     TEMPLATE_TOO_SMALL,
     MANUALLY_RELEASED,
+    INVALID,
 
     SIZE
 };
 
-static const char* StateName[] = {"VALID", "ALPHA/BETA MISMATCH", "POOR Z-SCORE",
-                                  "TEMPLATE TOO SMALL", "MANUALLY RELEASED"};
+static const char* StateName[] = {
+    "VALID",  "ALPHA/BETA MISMATCH", "POOR Z-SCORE", "TEMPLATE TOO SMALL", "MANUALLY RELEASED",
+    "INVALID"};
 
 inline std::ostream& operator<<(std::ostream& os, State result)
 {
diff --git a/include/pacbio/denovo/PoaGraph.h b/include/pacbio/denovo/PoaGraph.h
index d651d83..c052eaf 100644
--- a/include/pacbio/denovo/PoaGraph.h
+++ b/include/pacbio/denovo/PoaGraph.h
@@ -107,6 +107,8 @@ public:
 
     void CommitAdd(PoaAlignmentMatrix* mat, std::vector<Vertex>* readPathOutput = NULL);
 
+    void PruneGraph(const int minCoverage);
+
     // ----------
 
     size_t NumReads() const;
diff --git a/include/pacbio/denovo/SparsePoa.h b/include/pacbio/denovo/SparsePoa.h
index fdc6371..9ea5a0a 100644
--- a/include/pacbio/denovo/SparsePoa.h
+++ b/include/pacbio/denovo/SparsePoa.h
@@ -146,7 +146,7 @@ public:
     // Clean up the POA graph, pruning minority paths, to speed up
     // successive AddRead operations.
     //
-    void PruneGraph(float minCoverageFraction);
+    void PruneGraph(int minCoverage);
 
 private:
     void repCheck();
diff --git a/include/pacbio/data/State.h b/include/pacbio/exception/InvalidEvaluatorException.h
similarity index 78%
copy from include/pacbio/data/State.h
copy to include/pacbio/exception/InvalidEvaluatorException.h
index 3919bf4..0552515 100644
--- a/include/pacbio/data/State.h
+++ b/include/pacbio/exception/InvalidEvaluatorException.h
@@ -35,29 +35,17 @@
 
 #pragma once
 
-#include <iostream>
+#include <stdexcept>
+#include <string>
 
 namespace PacBio {
-namespace Data {
+namespace Exception {
 
-enum struct State : uint8_t
+class InvalidEvaluatorException : public std::runtime_error
 {
-    VALID = 0,
-    ALPHA_BETA_MISMATCH,
-    POOR_ZSCORE,
-    TEMPLATE_TOO_SMALL,
-    MANUALLY_RELEASED,
-
-    SIZE
+public:
+    InvalidEvaluatorException(const std::string& msg) : std::runtime_error(msg) {}
 };
 
-static const char* StateName[] = {"VALID", "ALPHA/BETA MISMATCH", "POOR Z-SCORE",
-                                  "TEMPLATE TOO SMALL", "MANUALLY RELEASED"};
-
-inline std::ostream& operator<<(std::ostream& os, State result)
-{
-    os << PacBio::Data::StateName[static_cast<size_t>(result)];
-    return os;
-}
-}
-}  //::PacBio::Data
\ No newline at end of file
+}  // namespace Exception
+}  // namespace PacBio
\ No newline at end of file
diff --git a/include/pacbio/log/Logging.h b/include/pacbio/log/Logging.h
deleted file mode 100644
index b55a1b7..0000000
--- a/include/pacbio/log/Logging.h
+++ /dev/null
@@ -1,406 +0,0 @@
-// 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.
-
-// Author: Lance Hepler
-
-#pragma once
-
-#include <chrono>
-#include <condition_variable>
-#include <csignal>
-#include <cstdlib>
-#include <ctime>
-#include <exception>
-#include <functional>
-#include <iomanip>
-#include <iostream>
-#include <map>
-#include <memory>
-#include <mutex>
-#include <queue>
-#include <sstream>
-#include <stdexcept>
-#include <string>
-#include <thread>
-#include <utility>
-
-namespace PacBio {
-namespace Logging {
-
-// borrowed a little from primary's SmartEnum
-class LogLevel
-{
-public:
-    LogLevel(const unsigned char value) : value_{value} {}
-    LogLevel(const std::string& value) : value_{FromString(value)} {}
-    enum : unsigned char
-    {
-        TRACE = 0,
-        DEBUG = 1,
-        INFO = 2,
-        NOTICE = 3,
-        WARN = 4,
-        ERROR = 5,
-        CRITICAL = 6,
-        FATAL = 7
-    };
-
-    operator unsigned char() const { return value_; }
-private:
-    inline static LogLevel FromString(const std::string& level)
-    {
-        if (level == "TRACE") return LogLevel::TRACE;
-        if (level == "DEBUG") return LogLevel::DEBUG;
-        if (level == "INFO") return LogLevel::INFO;
-        if (level == "NOTICE") return LogLevel::NOTICE;
-        if (level == "WARN") return LogLevel::WARN;
-        if (level == "ERROR") return LogLevel::ERROR;
-        if (level == "CRITICAL") return LogLevel::CRITICAL;
-        if (level == "FATAL") return LogLevel::FATAL;
-        throw std::invalid_argument("invalid log level");
-    }
-
-private:
-    unsigned char value_;
-};
-
-class LoggerConfig : public std::map<LogLevel, std::vector<std::reference_wrapper<std::ostream>>>
-{
-public:
-    LoggerConfig(const std::map<LogLevel, std::vector<std::reference_wrapper<std::ostream>>>& cfg)
-        : std::map<LogLevel, std::vector<std::reference_wrapper<std::ostream>>>(cfg)
-    {
-    }
-
-    LoggerConfig(
-        const std::map<std::string, std::vector<std::reference_wrapper<std::ostream>>>& cfg)
-    {
-        for (const auto& kv : cfg)
-            (*this)[kv.first] = kv.second;
-    }
-
-    LoggerConfig(std::ostream& os, const LogLevel level = LogLevel::INFO)
-    {
-        for (size_t i = static_cast<size_t>(level); i < 8; ++i)
-            (*this)[static_cast<LogLevel>(i)].push_back(os);
-    }
-
-    LoggerConfig(std::ostream& os, const std::string& level) : LoggerConfig(os, LogLevel(level)) {}
-};
-
-// necessary fwd decl
-class LogMessage;
-
-class Logger
-{
-public:
-    template <typename... Args>
-    Logger(Args&&... args)
-        : cfg_(std::forward<Args>(args)...), writer_(&Logger::MessageWriter, this)
-    {
-#ifdef NDEBUG
-        if (Handles(LogLevel::TRACE))
-            throw std::invalid_argument("one cannot simply log TRACE messages in release builds!");
-#endif
-    }
-
-    Logger(const Logger& logger) = delete;
-
-    ~Logger()
-    {
-        if (!writer_.joinable()) throw std::runtime_error("this logger is already dead!");
-
-        // place a terminal sentinel for MessageWriter to know it's done
-        {
-            std::lock_guard<std::mutex> g(m_);
-            queue_.emplace(std::unique_ptr<std::pair<LogLevel, std::ostringstream>>());
-        }
-        pushed_.notify_all();
-
-        // wait for everything to be flushed
-        {
-            std::unique_lock<std::mutex> lk(m_);
-            popped_.wait(lk, [this]() { return queue_.empty(); });
-            // endl implicitly flushes, so no need to call os_.flush() here
-        }
-
-        // join writer thread
-        writer_.join();
-    }
-
-    static inline Logger& Default(Logger* logger = nullptr)
-    {
-        static std::unique_ptr<Logger> logger_(new Logger(std::cerr));
-        if (logger) logger_.reset(logger);
-        return *logger_;
-    }
-
-private:
-    inline bool Handles(const LogLevel level) const
-    {
-        return cfg_.find(level) != cfg_.end() && !cfg_.at(level).empty();
-    }
-
-    inline Logger& operator<<(std::unique_ptr<std::pair<LogLevel, std::ostringstream>>&& ptr)
-    {
-        if (!writer_.joinable()) throw std::runtime_error("this logger is dead!");
-
-        {
-            std::lock_guard<std::mutex> g(m_);
-            queue_.emplace(
-                std::forward<std::unique_ptr<std::pair<LogLevel, std::ostringstream>>>(ptr));
-        }
-        pushed_.notify_all();
-        return *this;
-    }
-
-    void MessageWriter()
-    {
-        while (true) {
-            std::unique_ptr<std::pair<LogLevel, std::ostringstream>> ptr;
-
-            // wait on messages to arrive in the queue_, and pop them off
-            {
-                std::unique_lock<std::mutex> lk(m_);
-                pushed_.wait(lk, [&ptr, this]() {
-                    if (queue_.empty()) return false;
-
-                    ptr = std::move(queue_.front());
-                    queue_.pop();
-
-                    return true;
-                });
-            }
-
-            // if we've reached the null terminator, notify flush and stop
-            if (!ptr) {
-                popped_.notify_all();
-                break;
-            }
-
-            // otherwise, push the message onto os_
-            const LogLevel level = std::get<0>(*ptr);
-            if (cfg_.find(level) != cfg_.end())
-                for (const auto& os : cfg_.at(level))
-                    os.get() << std::get<1>(*ptr).str() << std::endl;
-
-            // and notify flush we delivered a message to os_,
-            popped_.notify_all();
-        }
-    }
-
-private:
-    std::mutex m_;
-    LoggerConfig cfg_;
-    std::condition_variable popped_;
-    std::condition_variable pushed_;
-    std::queue<std::unique_ptr<std::pair<LogLevel, std::ostringstream>>> queue_;
-    std::thread writer_;
-
-    friend class LogMessage;
-};
-
-class LogMessage
-{
-public:
-    LogMessage(const char* file __attribute__((unused)),
-               const char* function __attribute__((unused)),
-               unsigned int line __attribute__((unused)), const LogLevel level, Logger& logger)
-        : logger_(logger)
-    {
-        using std::chrono::duration_cast;
-        using std::chrono::milliseconds;
-        using std::chrono::seconds;
-        using std::chrono::system_clock;
-
-        if (!logger_.Handles(level)) return;
-
-        ptr_.reset(new std::pair<LogLevel, std::ostringstream>(
-            std::piecewise_construct, std::forward_as_tuple(level), std::forward_as_tuple()));
-
-        static const char* delim = " -|- ";
-
-        // get the time, separated into seconds and milliseconds
-        const auto now = system_clock::now();
-        const auto secs = duration_cast<seconds>(now.time_since_epoch());
-        const auto time = system_clock::to_time_t(system_clock::time_point(secs));
-        const auto msec = duration_cast<milliseconds>(now.time_since_epoch() - secs).count();
-
-        // format the time and print out the log header to the ostringstream
-        // TODO(lhepler) make this std::put_time when we move to gcc-5
-        char buf[20];
-        std::strftime(buf, 20, "%Y%m%d %T.", std::gmtime(&time));
-
-        std::get<1>(*ptr_) << ">|> " << buf << std::setfill('0') << std::setw(3)
-                           << std::to_string(msec) << delim << LogLevelRepr(level) << delim
-                           << function
-#ifndef NDEBUG
-                           << " at " << file << ':' << line
-#endif
-                           << delim << std::hex << std::showbase << std::this_thread::get_id()
-                           << std::noshowbase << std::dec << "||" << delim;
-    }
-
-    LogMessage(const LogMessage& msg) = delete;
-
-    ~LogMessage()
-    {
-        if (ptr_) logger_ << std::move(ptr_);
-    }
-
-    template <typename T>
-    inline LogMessage& operator<<(const T& t)
-    {
-        if (ptr_) std::get<1>(*ptr_) << t;
-        return *this;
-    }
-
-private:
-    static const char* LogLevelRepr(LogLevel level)
-    {
-        // by specification these are all of length 10
-        switch (level) {
-            case LogLevel::TRACE:
-                return "TRACE     ";
-            case LogLevel::DEBUG:
-                return "DEBUG     ";
-            case LogLevel::INFO:
-                return "INFO      ";
-            case LogLevel::NOTICE:
-                return "NOTICE    ";
-            case LogLevel::WARN:
-                return "WARN      ";
-            case LogLevel::ERROR:
-                return "ERROR     ";
-            case LogLevel::CRITICAL:
-                return "CRITICAL  ";
-            case LogLevel::FATAL:
-                return "FATAL     ";
-            default:
-                return "OTHER     ";
-        }
-    }
-
-private:
-    std::unique_ptr<std::pair<LogLevel, std::ostringstream>> ptr_;
-    Logger& logger_;
-};
-
-// trace is disabled under Release builds (-DNDEBUG)
-#ifdef NDEBUG
-#define PBLOGGER_LEVEL(lg, lvl)                                   \
-    if (PacBio::Logging::lvl != PacBio::Logging::LogLevel::TRACE) \
-    PacBio::Logging::LogMessage(__FILE__, __func__, __LINE__, PacBio::Logging::lvl, (lg))
-#else
-#define PBLOGGER_LEVEL(lg, lvl) \
-    PacBio::Logging::LogMessage(__FILE__, __func__, __LINE__, PacBio::Logging::lvl, (lg))
-#endif
-
-#define PBLOGGER_TRACE(lg) PBLOGGER_LEVEL(lg, LogLevel::TRACE)
-#define PBLOGGER_DEBUG(lg) PBLOGGER_LEVEL(lg, LogLevel::DEBUG)
-#define PBLOGGER_INFO(lg) PBLOGGER_LEVEL(lg, LogLevel::INFO)
-#define PBLOGGER_NOTICE(lg) PBLOGGER_LEVEL(lg, LogLevel::NOTICE)
-#define PBLOGGER_WARN(lg) PBLOGGER_LEVEL(lg, LogLevel::WARN)
-#define PBLOGGER_ERROR(lg) PBLOGGER_LEVEL(lg, LogLevel::ERROR)
-#define PBLOGGER_CRITICAL(lg) PBLOGGER_LEVEL(lg, LogLevel::CRITICAL)
-#define PBLOGGER_FATAL(lg) PBLOGGER_LEVEL(lg, LogLevel::FATAL)
-
-#define PBLOG_LEVEL(lvl) PBLOGGER_LEVEL(PacBio::Logging::Logger::Default(), lvl)
-
-#define PBLOG_TRACE PBLOG_LEVEL(LogLevel::TRACE)
-#define PBLOG_DEBUG PBLOG_LEVEL(LogLevel::DEBUG)
-#define PBLOG_INFO PBLOG_LEVEL(LogLevel::INFO)
-#define PBLOG_NOTICE PBLOG_LEVEL(LogLevel::NOTICE)
-#define PBLOG_WARN PBLOG_LEVEL(LogLevel::WARN)
-#define PBLOG_ERROR PBLOG_LEVEL(LogLevel::ERROR)
-#define PBLOG_CRITICAL PBLOG_LEVEL(LogLevel::CRITICAL)
-#define PBLOG_FATAL PBLOG_LEVEL(LogLevel::FATAL)
-
-inline void InstallSignalHandlers(Logger& logger = Logger::Default())
-{
-    using std::raise;
-    using std::signal;
-
-    static Logger& logger_ = logger;
-
-    std::set_terminate([]() {
-        if (auto eptr = std::current_exception()) {
-            try {
-                std::rethrow_exception(eptr);
-            } catch (const std::exception& e) {
-                PBLOGGER_FATAL(logger_) << "caught exception: \"" << e.what() << '"';
-            } catch (...) {
-                PBLOGGER_FATAL(logger_) << "caught unknown exception type";
-            }
-        }
-        // call the SIGABRT handler (below)
-        std::abort();
-    });
-    signal(SIGABRT, [](int) {
-        {
-            PBLOGGER_FATAL(logger_) << "caught SIGABRT";
-        }
-        logger_.~Logger();
-        signal(SIGABRT, SIG_DFL);
-        raise(SIGABRT);
-    });
-    signal(SIGINT, [](int) {
-        {
-            PBLOGGER_FATAL(logger_) << "caught SIGINT";
-        }
-        logger_.~Logger();
-        signal(SIGINT, SIG_DFL);
-        raise(SIGINT);
-    });
-    signal(SIGSEGV, [](int) {
-        {
-            PBLOGGER_FATAL(logger_) << "caught SIGSEGV";
-        }
-        logger_.~Logger();
-        signal(SIGSEGV, SIG_DFL);
-        raise(SIGSEGV);
-    });
-    signal(SIGTERM, [](int) {
-        {
-            PBLOGGER_FATAL(logger_) << "caught SIGTERM";
-        }
-        logger_.~Logger();
-        signal(SIGTERM, SIG_DFL);
-        raise(SIGTERM);
-    });
-}
-
-}  // namespace Logging
-}  // namespace PacBio
diff --git a/build.sh b/scripts/ci/build.sh
old mode 100644
new mode 100755
similarity index 95%
rename from build.sh
rename to scripts/ci/build.sh
index 2595f77..13ef668
--- a/build.sh
+++ b/scripts/ci/build.sh
@@ -1,4 +1,5 @@
 #!/bin/bash
+set -euo pipefail
 
 # Function definitions
 GetBBRepo () {
@@ -33,9 +34,9 @@ module load git gcc/5.3.0 python/2.7.9 cmake cram swig ccache virtualenv zlib/1.
 echo "#############################"
 echo "# EXTERNAL DEPENDENCIES"
 echo "## Create external dependency directory"
-if [ ! -d _deps ] ; then mkdir _deps ; fi 
+if [ ! -d _deps ] ; then mkdir _deps ; fi
 echo "## Create reverse external dependency directory"
-if [ ! -d _rev_deps ] ; then mkdir _rev_deps ; fi 
+if [ ! -d _rev_deps ] ; then mkdir _rev_deps ; fi
 
 GetBBRepo GenomicConsensus _rev_deps
 GetBBRepo ConsensusCore _deps
@@ -57,7 +58,9 @@ echo "## Create missing virtualenv"
 if [ ! -d unyve ] ; then /mnt/software/v/virtualenv/13.0.1/virtualenv.py unyve ; fi
 
 echo "## Get into virtualenv"
+set +u
 source unyve/bin/activate
+set -u
 
 echo "## Install pip modules"
 pip install --upgrade pip
@@ -77,7 +80,6 @@ echo "## Build source"
 ( cd build &&\
   rm -rf * &&\
   CMAKE_BUILD_TYPE=ReleaseWithAssert cmake -DZLIB_INCLUDE_DIR=/mnt/software/z/zlib/1.2.5/include -DZLIB_LIBRARY=/mnt/software/z/zlib/1.2.5/lib/libz.so -DCMAKE_EXE_LINKER_FLAGS="-static-libstdc++" -GNinja .. )
-( cd build && ninja htslibSrc )
 ( cd build && ninja )
 
 echo "## pip install CC2"
@@ -100,4 +102,6 @@ python -c "import ConsensusCore2 ; print ConsensusCore2.__version__"
 echo "## Test CC2 via GC"
 ( cd _rev_deps/GenomicConsensus && make check )
 
-deactivate
\ No newline at end of file
+set +u
+deactivate
+set -u
\ No newline at end of file
diff --git a/scripts/ci/checkout-submodules.sh b/scripts/ci/checkout-submodules.sh
new file mode 100755
index 0000000..d3c3835
--- /dev/null
+++ b/scripts/ci/checkout-submodules.sh
@@ -0,0 +1,13 @@
+#!/bin/bash
+set -euo pipefail
+
+echo "## Fetch submodules"
+source /mnt/software/Modules/current/init/bash
+module load git
+
+# Bamboo's checkout of unanimity doesn't set the "origin" remote to
+# something meaningful, which means we can't resolve the relative
+# submodules.  Override the remote here.
+git remote set-url origin ssh://git@bitbucket.nanofluidics.com:7999/sat/unanimity.git
+
+git submodule update --init --remote
diff --git a/scripts/makeChangeLog.py b/scripts/makeChangeLog.py
deleted file mode 100644
index 5623b60..0000000
--- a/scripts/makeChangeLog.py
+++ /dev/null
@@ -1,31 +0,0 @@
-""" File to generate a CHANGELOG from git commits.  This will parse the git log
-command and convert any commit with `**` in the title into a changelog event """
-
-cl = open("CHANGELOG", 'w')
-cl.write("Recent Program Changes:\n\n")
-
-import os
-from subprocess import *
-
-GIT_COMMIT_FIELDS = ['id', 'author_name', 'author_email', 'date', 'message']
-GIT_LOG_FORMAT = ['%H', '%an', '%ae', '%ad', '%s']
-
-p = Popen('git log --format="%s"' % GIT_LOG_FORMAT, shell=True, stdout=PIPE)
-(log, _) = p.communicate()
-log = log.strip().split("\n")
-
-log = [row.strip().replace("'","").split(",") for row in log]
-log = [dict(zip(GIT_COMMIT_FIELDS, row)) for row in log]
-
-for commit in log:
-	msg = commit["message"]
-	if msg.count("**") > 0:
-		dt = commit["date"].split(" ")
-		date = "-".join(dt[2:4])
-		msg = msg.replace("]","").replace("**","")
-		id = commit["id"][1:7]
-		cl.write("\t*" + " " + msg + " " + date + " " + id + "\n")
-
-cl.write("\n\nFile is automatically created by makeChangeLog.py\n\n\n")
-
-cl.close()
\ No newline at end of file
diff --git a/scripts/nightly/build.sh b/scripts/nightly/build.sh
new file mode 100755
index 0000000..0bb3b82
--- /dev/null
+++ b/scripts/nightly/build.sh
@@ -0,0 +1,42 @@
+#!/bin/bash
+set -euo pipefail
+
+echo "# DEPENDENCIES"
+echo "## Load modules"
+source /mnt/software/Modules/current/init/bash
+module load git gcc/5.3.0 python/2.7.9 cmake swig ccache virtualenv zlib/1.2.5 ninja boost
+
+echo "## Get into virtualenv"
+if [ ! -d venv ]
+then
+    /mnt/software/v/virtualenv/13.0.1/virtualenv.py venv
+fi
+set +u
+source venv/bin/activate
+set -u
+
+echo "## Install pip modules"
+pip install --upgrade pip
+pip install cram nose
+
+pip install xmlbuilder jsonschema avro requests iso8601
+pip install --no-deps git+https://github.com/PacificBiosciences/pbcommand.git
+
+pip install numpy cython h5py pysam
+pip install --no-deps git+https://github.com/PacificBiosciences/pbcore.git
+
+# pip install jinja2 networkx xmlbuilder requests fabric
+# pip install --no-deps git+https://github.com/PacificBiosciences/pbsmrtpipe.git
+
+echo "## Fetch unanimity submodules"
+( git submodule update --init --remote )
+
+echo "# BUILD"
+echo "## Create build directory "
+if [ ! -d build ] ; then mkdir build ; fi
+
+echo "## Build source"
+( cd build &&\
+  rm -rf * &&\
+  CMAKE_BUILD_TYPE=ReleaseWithAssert cmake -DZLIB_INCLUDE_DIR=/mnt/software/z/zlib/1.2.5/include -DZLIB_LIBRARY=/mnt/software/z/zlib/1.2.5/lib/libz.so -DCMAKE_EXE_LINKER_FLAGS="-static-libstdc++" -GNinja .. )
+( cd build && ninja )
diff --git a/scripts/nightly/checkout-submodules.sh b/scripts/nightly/checkout-submodules.sh
new file mode 100755
index 0000000..d3c3835
--- /dev/null
+++ b/scripts/nightly/checkout-submodules.sh
@@ -0,0 +1,13 @@
+#!/bin/bash
+set -euo pipefail
+
+echo "## Fetch submodules"
+source /mnt/software/Modules/current/init/bash
+module load git
+
+# Bamboo's checkout of unanimity doesn't set the "origin" remote to
+# something meaningful, which means we can't resolve the relative
+# submodules.  Override the remote here.
+git remote set-url origin ssh://git@bitbucket.nanofluidics.com:7999/sat/unanimity.git
+
+git submodule update --init --remote
diff --git a/scripts/nightly/test.sh b/scripts/nightly/test.sh
new file mode 100755
index 0000000..1c01590
--- /dev/null
+++ b/scripts/nightly/test.sh
@@ -0,0 +1,20 @@
+#!/bin/bash
+set -euo pipefail
+
+echo "# DEPENDENCIES"
+echo "## Load modules"
+source /mnt/software/Modules/current/init/bash
+module load gcc/5.3.0 python/2.7.9 zlib/1.2.5 graphviz samtools
+
+set +u
+source venv/bin/activate
+set -u
+
+echo "# TEST"
+echo "## Running internal tests"
+export
+__PBTEST_CCS_EXE="$(pwd -P)/build/ccs" cram -v --xunit-file=uny-internal-cram.xml tests/cram/internal/*.t
+
+set +u
+deactivate
+set -u
diff --git a/setup.py b/setup.py
index 5e2de22..45a9c1e 100644
--- a/setup.py
+++ b/setup.py
@@ -13,6 +13,11 @@ from setuptools import setup, Extension
 from shutil import copy2, rmtree
 from subprocess import Popen
 
+def iteritems(d):
+    if sys.version_info >= (3, 0):
+        return d.items()
+    return d.iteritems()
+
 def ParseVersion():
     thisDir = os.path.dirname(os.path.realpath(__file__))
     cmakeLists = os.path.join(thisDir, "CMakeLists.txt")
@@ -81,7 +86,7 @@ class CMake(object):
 
     def set_generator(self, gen):
         if gen not in set(["Default", "Ninja"]):
-            raise ValueError("valid generators must be in (default, ninja)")
+            raise ValueError("valid generators must be in (Default, Ninja)")
         if gen == "Default":
             gen = None
             self.build = ["make"]
@@ -101,7 +106,7 @@ class CMake(object):
         configure = copy(self.configure)
         if self.generator:
             configure.append("-G{0}".format(self.generator))
-        for k, v in self.definitions.iteritems():
+        for k, v in iteritems(self.definitions):
             configure.append("-D{0}={1}".format(k, v))
         configure.append(sourceDir)
         print("Configuring with command `{0}`".format(" ".join(configure)), file=sys.stderr)
@@ -124,16 +129,22 @@ class MyBuildExt(build_ext):
         except OSError:
             pass
         env = os.environ.copy()
-        cmake = CMake(env)
+        cmake = CMake(env, verbose=("--verbose" in sys.argv or "-v" in sys.argv))
         cmake.add_definition_from_env("Boost_INCLUDE_DIRS")
         cmake.add_definition_from_env("PYTHON_INCLUDE_DIRS")
+        cmake.add_definition_from_env("pbcopper_INCLUDE_DIRS")
+        cmake.add_definition_from_env("pbcopper_LIBRARIES")
+        cmake.add_definition_from_env("GIT_EXECUTABLE")
         cmake.add_definition_from_env("SWIG_COMMAND")
+        cmake.add_definition_from_env("UNY_use_ccache")
         cmake.add_definition_from_env("CMAKE_BUILD_TYPE", "RelWithDebInfo")
+        cmake.add_definition_from_env("PYTHON_EXECUTABLE", sys.executable)
         cmake.add_definition("PYTHON_SWIG", "1")
         cmake.add_definition("UNY_build_tests", "0")
         cmake.add_definition("UNY_build_bin", "0")
-        cmake.add_definition("PYTHON_EXECUTABLE", sys.executable)
-        cmake.set_generator("Ninja" if which("ninja", env) else "Default")
+        availableGenerator = "Ninja" if which("ninja", env) else "Default"
+        desiredGenerator = cmake.env.get("CMAKE_GENERATOR", availableGenerator)
+        cmake.set_generator(desiredGenerator)
         targets = ["_ConsensusCore2"]
         try:
             cmake(thisDir, self.build_temp, targets)
@@ -142,7 +153,7 @@ class MyBuildExt(build_ext):
             rmtree(self.build_temp)
             os.makedirs(self.build_temp)
             cmake(thisDir, self.build_temp, targets)
-        for fname in ("_ConsensusCore2.so", "__init__.py"):
+        for fname in ["_ConsensusCore2.so", "ConsensusCore2.py"]:
             copy2(os.path.join(self.build_temp, "swig", "lib", fname), destDir)
 
 setup(
@@ -153,8 +164,9 @@ setup(
     url="http://www.github.com/PacificBiosciences/ConsensusCore2",
     description="A library for generating consensus sequences for PacBio data",
     license="BSD",
-    ext_package="ConsensusCore2",
     ext_modules=[Extension("_ConsensusCore2", [])],
+    package_dir={"": "swig"},
+    py_modules=["ConsensusCore2"],
     install_requires=["numpy >= 1.6.0"],
     setup_requires=["numpy >= 1.6.0"],
     cmdclass={"build_ext": MyBuildExt}
diff --git a/src/AbstractIntegrator.cpp b/src/AbstractIntegrator.cpp
index 9a28404..969a4e8 100644
--- a/src/AbstractIntegrator.cpp
+++ b/src/AbstractIntegrator.cpp
@@ -42,6 +42,7 @@
 
 #include <pacbio/consensus/AbstractIntegrator.h>
 #include <pacbio/consensus/AbstractMatrix.h>
+#include <pacbio/exception/InvalidEvaluatorException.h>
 
 #include <pacbio/data/Sequence.h>
 
@@ -51,6 +52,7 @@ namespace PacBio {
 namespace Consensus {
 
 using namespace PacBio::Data;
+using namespace PacBio::Exception;
 
 namespace {
 
@@ -91,28 +93,50 @@ Data::State AbstractIntegrator::AddRead(std::unique_ptr<AbstractTemplate>&& tpl,
     return evals_.back().Status();
 }
 
-double AbstractIntegrator::LL(const Mutation& fwdMut) { return AccumulateNoInf(LLs(fwdMut)); }
+double AbstractIntegrator::LL(const Mutation& fwdMut)
+{
+    const auto lls = LLs(fwdMut);
+    return std::accumulate(lls.cbegin(), lls.cend(), 0.0);
+}
 
-double AbstractIntegrator::LL() const { return AccumulateNoInf(LLs()); }
+double AbstractIntegrator::LL() const
+{
+    const auto functor = [](const Evaluator& eval) { return eval.IsValid() ? eval.LL() : 0; };
+    const auto lls = TransformEvaluators<double>(functor);
+    return std::accumulate(lls.cbegin(), lls.cend(), 0.0);
+}
 
 std::vector<double> AbstractIntegrator::LLs(const Mutation& fwdMut)
 {
     const Mutation revMut(ReverseComplement(fwdMut));
 
-    const auto functor = [&fwdMut, &revMut](Evaluator& eval) {
-        switch (eval.Strand()) {
+    // Compute individual LLs of each Evaluator
+    std::vector<double> lls;
+    lls.reserve(evals_.size());
+    for (auto& e : evals_) {
+        // Ignore invalid Evaluators
+        if (!e.IsValid()) continue;
+
+        double ll;
+
+        switch (e.Strand()) {
             case StrandType::FORWARD:
-                return eval.LL(fwdMut);
+                ll = e.LL(fwdMut);
+                break;
             case StrandType::REVERSE:
-                return eval.LL(revMut);
+                ll = e.LL(revMut);
+                break;
             case StrandType::UNMAPPED:
-                return NEG_DBL_INF;
+                // unmapped Evaluators should not be used
+                throw InvalidEvaluatorException("Unmapped read in mutation testing");
             default:
                 throw std::runtime_error("Unknown StrandType");
         }
-    };
 
-    return TransformEvaluators<double>(functor);
+        lls.emplace_back(ll);
+    }
+
+    return lls;
 }
 
 std::vector<double> AbstractIntegrator::LLs() const
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 6231ddc..4d9c1ba 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -108,10 +108,6 @@ if (UNY_build_bin)
         ${CMAKE_DL_LIBS}
     )
 
-    if (TARGET htslib)
-        add_dependencies(ccs htslib)
-    endif()
-
     if (TARGET pbbam)
         add_dependencies(ccs pbbam)
     endif()
diff --git a/src/ConsensusSettings.cpp b/src/ConsensusSettings.cpp
index 34244b5..27bd5c0 100644
--- a/src/ConsensusSettings.cpp
+++ b/src/ConsensusSettings.cpp
@@ -75,7 +75,7 @@ const PlainOption MinZScore{
     { "minZScore" },
     "Minimum Z Score",
     "Minimum z-score to use a subread. NaN disables this filter.",
-    CLI::Option::FloatType(-3.5)
+    CLI::Option::FloatType(-3.4)
 };
 const PlainOption MaxDropFraction{
     "max_drop_fraction",
@@ -89,7 +89,14 @@ const PlainOption NoPolish{
     { "noPolish" },
     "No Polish CCS",
     "Only output the initial template derived from the POA (faster, less accurate).",
-    CLI::Option::BoolType()
+    CLI::Option::BoolType(false)
+};
+const PlainOption Polish{
+    "polish",
+    { "polish" },
+    "Polish CCS",
+    "Emit high-accuracy CCS sequences polished using the Arrow algorithm",
+    CLI::Option::BoolType(true)
 };
 const PlainOption MinReadScore{
     "min_read_score",
@@ -149,13 +156,6 @@ const PlainOption LogFile{
     "Log to a file, instead of STDERR.",
     CLI::Option::StringType("")
 };
-const PlainOption LogLevel{
-    "log_level",
-    { "logLevel" },
-    "Set Log Level",
-    "Set log level.",
-    CLI::Option::StringType("INFO")
-};
 const PlainOption RichQVs{
     "rich_qvs",
     { "richQVs" },
@@ -184,7 +184,7 @@ ConsensusSettings::ConsensusSettings(const PacBio::CLI::Results& options)
     : ByStrand(options[OptionNames::ByStrand])
     , ForceOutput(options[OptionNames::ForceOutput])
     , LogFile(std::forward<std::string>(options[OptionNames::LogFile]))
-    , LogLevel(std::forward<std::string>(options[OptionNames::LogLevel]))
+    , LogLevel(options.LogLevel())
     , MaxDropFraction(options[OptionNames::MaxDropFraction])
     , MaxLength(options[OptionNames::MaxLength])
     , MinLength(options[OptionNames::MinLength])
@@ -198,12 +198,25 @@ ConsensusSettings::ConsensusSettings(const PacBio::CLI::Results& options)
                     : static_cast<float>(options[OptionNames::MinZScore]))
     , ModelPath(std::forward<std::string>(options[OptionNames::ModelPath]))
     , ModelSpec(std::forward<std::string>(options[OptionNames::ModelSpec]))
-    , NoPolish(options[OptionNames::NoPolish])
-    , NThreads(ThreadCount(options[OptionNames::NumThreads]))
     , ReportFile(std::forward<std::string>(options[OptionNames::ReportFile]))
     , RichQVs(options[OptionNames::RichQVs])
     , WlSpec(std::forward<std::string>(options[OptionNames::Zmws]))
 {
+    // N.B. If the user somehow specifies both polish and noPolish, noPolish wins.
+    // Unfortunately there's no sensible way to check for this condition and error out.
+    // This could be improved upon in the pbcopper API, perhaps.
+    NoPolish = options[OptionNames::NoPolish] || !options[OptionNames::Polish];
+
+    // N.B. This is the trick to resolved nthreads from either our
+    // option or the "nproc" which has meaning in tool contracts.
+    // Derek says he may streamline the API in the future.
+    int requestedNThreads;
+    if (options.IsFromRTC()) {
+        requestedNThreads = options.NumProcessors();
+    } else {
+        requestedNThreads = options[OptionNames::NumThreads];
+    }
+    NThreads = ThreadCount(requestedNThreads);
 }
 
 size_t ConsensusSettings::ThreadCount(int n)
@@ -219,12 +232,15 @@ PacBio::CLI::Interface ConsensusSettings::CreateCLI(const std::string& descripti
                                                     const std::string& version)
 {
     using Option = PacBio::CLI::Option;
+    using Task = PacBio::CLI::ToolContract::Task;
+
     PacBio::CLI::Interface i{"ccs", description, version};
 
     i.AlternativeToolContractName("pbccs");
 
-    i.AddHelpOption();     // use built-in help output
-    i.AddVersionOption();  // use built-in version output
+    i.AddHelpOption();      // use built-in help output
+    i.AddLogLevelOption();  // use built-in logLevel option
+    i.AddVersionOption();   // use built-in version output
 
     // clang-format off
     i.AddPositionalArguments({
@@ -246,17 +262,17 @@ PacBio::CLI::Interface ConsensusSettings::CreateCLI(const std::string& descripti
         OptionNames::MinReadScore,
         OptionNames::ByStrand,
         OptionNames::NoPolish,
+        OptionNames::Polish,
         OptionNames::RichQVs,
         OptionNames::ReportFile,
         OptionNames::ModelPath,
         OptionNames::ModelSpec,
         OptionNames::NumThreads,
-        OptionNames::LogFile,
-        OptionNames::LogLevel
+        OptionNames::LogFile
     });
 
     const std::string id = "pbccs.tasks.ccs";
-    CLI::ToolContract::Task tcTask(id);
+    Task tcTask(id);
     tcTask.AddOption(OptionNames::MinSnr);
     tcTask.AddOption(OptionNames::MinReadScore);
     tcTask.AddOption(OptionNames::MaxLength);
@@ -265,11 +281,12 @@ PacBio::CLI::Interface ConsensusSettings::CreateCLI(const std::string& descripti
     tcTask.AddOption(OptionNames::MinPredictedAccuracy);
     tcTask.AddOption(OptionNames::MinZScore);
     tcTask.AddOption(OptionNames::MaxDropFraction);
-    tcTask.AddOption(OptionNames::NoPolish);
+    tcTask.AddOption(OptionNames::Polish);
     tcTask.AddOption(OptionNames::ByStrand);
     tcTask.AddOption(OptionNames::ModelPath);
     tcTask.AddOption(OptionNames::ModelSpec);
     tcTask.AddOption(OptionNames::ReportFile);
+    tcTask.NumProcessors(Task::MAX_NPROC);
 
     tcTask.InputFileTypes({
         {
@@ -283,8 +300,8 @@ PacBio::CLI::Interface ConsensusSettings::CreateCLI(const std::string& descripti
     tcTask.OutputFileTypes({
         {
             "bam_output",
-            "ConsensusReadSet",
-            "Output DataSet XML file",
+            "Consensus Sequences",
+            "Consensus sequences generated by CCS2",
             "PacBio.DataSet.ConsensusReadSet",
             "ccs"
         }
@@ -297,4 +314,4 @@ PacBio::CLI::Interface ConsensusSettings::CreateCLI(const std::string& descripti
     return i;
 }
 }
-}  // ::PacBio::CCS
\ No newline at end of file
+}  // ::PacBio::CCS
diff --git a/src/Evaluator.cpp b/src/Evaluator.cpp
index e258ee9..5ea55c2 100644
--- a/src/Evaluator.cpp
+++ b/src/Evaluator.cpp
@@ -38,7 +38,9 @@
 #include <string>
 
 #include <pacbio/consensus/Evaluator.h>
+#include <pacbio/exception/InvalidEvaluatorException.h>
 #include <pacbio/exception/StateError.h>
+#include <pbcopper/logging/Logging.h>
 
 #include "EvaluatorImpl.h"
 
@@ -107,7 +109,19 @@ std::string Evaluator::ReadName() const
 
 double Evaluator::LL(const Mutation& mut)
 {
-    if (IsValid()) return impl_->LL(mut);
+    if (IsValid()) {
+        double ll = impl_->LL(mut);
+
+        // If the mutation of interest caused a corner-case failure,
+        // release this Evaluator and report this issue via an exception.
+        if (std::isinf(ll)) {
+            const std::string name = ReadName();
+            Invalidate();
+            throw InvalidEvaluatorException("negative inf in mutation testing: '" + name + "'");
+        }
+
+        return ll;
+    }
     return NEG_DBL_INF;
 }
 
@@ -168,13 +182,15 @@ void Evaluator::Status(State nextState)
     if (curState_ == State::VALID)
         curState_ = nextState;
     else
-        std::cerr << "Log this behaviour and return" << std::endl;
+        PBLOG_ERROR << "Log this behaviour and return";
 
     if (curState_ != State::VALID) impl_.reset(nullptr);
 }
 
 void Evaluator::Release() { Status(State::MANUALLY_RELEASED); }
 
+void Evaluator::Invalidate() { Status(State::INVALID); }
+
 const AbstractMatrix& Evaluator::Alpha() const
 {
     if (IsValid()) {
@@ -214,9 +230,8 @@ const AbstractMatrix* Evaluator::BetaView(MatrixViewConvention c) const
 void Evaluator::CheckZScore(const double minZScore, const std::string& model)
 {
     // the zscore filter is disabled under the following conditions
-    // - unsupported model
-    for (const auto& m : {"S/P1-C1", "S/P2-C2/prospective-compatible"})
-        if (model.find(m) != std::string::npos) return;
+    // - unsupported model (anything not P6-C4)
+    if (model.find("P6-C4") == std::string::npos) return;
 
     // - threshold undefined or too low
     if (std::isnan(minZScore) || minZScore <= -100.0) return;
diff --git a/src/Polish.cpp b/src/Polish.cpp
index 8e92552..c274a35 100644
--- a/src/Polish.cpp
+++ b/src/Polish.cpp
@@ -46,8 +46,11 @@
 
 #include <boost/optional.hpp>
 
+#include <pbcopper/logging/Logging.h>
+
 #include <pacbio/consensus/AbstractIntegrator.h>
 #include <pacbio/consensus/Polish.h>
+#include <pacbio/exception/InvalidEvaluatorException.h>
 
 using namespace std;
 
@@ -202,14 +205,35 @@ PolishResult Polish(AbstractIntegrator* ai, const PolishConfig& cfg)
     for (size_t i = 0; i < cfg.MaximumIterations; ++i) {
         // find the best mutations given our parameters
         {
-            const double LL = ai->LL();
             list<ScoredMutation> scoredMuts;
-
-            for (const auto& mut : muts) {
-                const double ll = ai->LL(mut);
-                if (ll > LL) scoredMuts.emplace_back(mut.WithScore(ll));
-                ++result.mutationsTested;
-            }
+            int mutationsTested = 0;
+            bool hasNewInvalidEvaluator;
+
+            // Compute new sets of possible mutations until no Evaluators are
+            // being invalided.
+            do {
+                // Compute the LL only with the active Evaluators
+                const double LL = ai->LL();
+
+                hasNewInvalidEvaluator = false;
+                try {
+                    // Get set of possible mutations
+                    for (const auto& mut : muts) {
+                        const double ll = ai->LL(mut);
+                        if (ll > LL) scoredMuts.emplace_back(mut.WithScore(ll));
+                        ++mutationsTested;
+                    }
+                } catch (const Exception::InvalidEvaluatorException& e) {
+                    // If an Evaluator exception occured,
+                    // retry without problematic Evaluator
+                    PBLOG_INFO << e.what();
+                    hasNewInvalidEvaluator = true;
+                    scoredMuts.clear();
+                    mutationsTested = 0;
+                }
+            } while (hasNewInvalidEvaluator);
+
+            result.mutationsTested += mutationsTested;
 
             // take best mutations in separation window, apply them
             muts = BestMutations(&scoredMuts, cfg.MutationSeparation);
@@ -296,10 +320,20 @@ vector<int> ConsensusQualities(AbstractIntegrator& ai)
             if (m.Start() > i) continue;
             // TODO (lhepler): this is dumb, but untestable mutations,
             //   aka insertions at ends, cause all sorts of weird issues
-            const double score = ai.LL(m) - LL;
-            // this really should never happen
-            if (score >= 0.0) continue;
-            scoreSum += exp(score);
+            double score;
+            try {
+                score = ai.LL(m) - LL;
+            } catch (const Exception::InvalidEvaluatorException& e) {
+                // If an Evaluator exception occured, report and skip!
+                // We need to handle this!
+                std::string error = "In Polish::ConsensusQualities(ai): ";
+                error += e.what();
+                PBLOG_ERROR << error;
+                continue;
+            }
+            assert(score <= 0.0);
+
+            if (score < 0) scoreSum += exp(score);
         }
         quals.emplace_back(ScoreSumToQV(scoreSum));
     }
diff --git a/src/SparsePoa.cpp b/src/SparsePoa.cpp
index 189944e..5821051 100644
--- a/src/SparsePoa.cpp
+++ b/src/SparsePoa.cpp
@@ -47,7 +47,7 @@
 
 #include <pacbio/ccs/SparseAlignment.h>
 #include <pacbio/denovo/SparsePoa.h>
-#include <pacbio/log/Logging.h>
+#include <pbcopper/logging/Logging.h>
 
 using PacBio::Poa::detail::SdpAnchorVector;
 using PacBio::Align::AlignConfig;
@@ -220,7 +220,8 @@ void SparsePoa::WriteGraphCsvFile(const std::string& filename) const
     graph_->WriteGraphCsvFile(filename);
 }
 
-void SparsePoa::PruneGraph(float /* minCoverageFraction */) {}
+void SparsePoa::PruneGraph(const int minCoverage) { graph_->PruneGraph(minCoverage); }
+
 void SparsePoa::repCheck()
 {
     assert(graph_->NumReads() == readPaths_.size());
diff --git a/src/Template.cpp b/src/Template.cpp
index 830a4a4..76bb9a8 100644
--- a/src/Template.cpp
+++ b/src/Template.cpp
@@ -186,31 +186,33 @@ std::pair<double, double> AbstractTemplate::SiteNormalParameters(const size_t i)
     const double p_d = params.Deletion, l_d = std::log(p_d), l2_d = l_d * l_d;
     const double p_b = params.Branch, l_b = std::log(p_b), l2_b = l_b * l_b;
     const double p_s = params.Stick, l_s = std::log(p_s), l2_s = l_s * l_s;
+    const double p_n = p_m + p_d;  // next
+    const double p_e = p_b + p_s;  // extra
 
-    // First moment expectations (zero terms used for clarity)
+    // first moment expectations (zero terms used for clarity)
     const double E_M = ExpectedLLForEmission(MoveType::MATCH, prev, curr, MomentType::FIRST);
     const double E_D = 0.0;
     const double E_B = ExpectedLLForEmission(MoveType::BRANCH, prev, curr, MomentType::FIRST);
     const double E_S = ExpectedLLForEmission(MoveType::STICK, prev, curr, MomentType::FIRST);
+    const double E_N = (l_m + E_M) * p_m / p_n + (l_d + E_D) * p_d / p_n;
+    const double E_E = (l_b + E_B) * p_b / p_e + (l_s + E_S) * p_s / p_e;
 
-    // Calculate first moment
-    const double E_MD = (l_m + E_M) * p_m / (p_m + p_d) + (l_d + E_D) * p_d / (p_m + p_d);
-    const double E_I = (l_b + E_B) * p_b / (p_b + p_s) + (l_s + E_S) * p_s / (p_b + p_s);
-    const double E_BS = E_I * (p_s + p_b) / (p_m + p_d);
-    const double mean = E_MD + E_BS;
+    // calculate first moment
+    const double mean = E_N + p_e * E_E / p_n;
 
-    // Calculate second momment
-    // Key expansion used repeatedly here: (A + B)^2 = A^2 + 2AB + B^2
+    // second moment expectations
     const double E2_M = ExpectedLLForEmission(MoveType::MATCH, prev, curr, MomentType::SECOND);
+    const double E2_D = 0.0;
     const double E2_S = ExpectedLLForEmission(MoveType::STICK, prev, curr, MomentType::SECOND);
     const double E2_B = ExpectedLLForEmission(MoveType::BRANCH, prev, curr, MomentType::SECOND);
-    const double E2_MD =
-        (l2_m + 2 * l_m * E_M + E2_M) * p_m / (p_m + p_d) + l2_d * p_d / (p_m + p_d);
-    const double E2_I = (l2_b + 2 * E_B * l_b + E2_B) * p_b / (p_b + p_s) +
-                        (l2_s + 2 * E_S * l_s + E2_S) * p_s / (p_b + p_s);
-    const double E2_BS = E2_I * (p_s + p_b) / (p_m + p_d);
-    const double moment2 = E2_BS + 2 * E_BS * E_MD + E2_MD;
-    const double var = moment2 - mean * mean;
+    const double E2_N = (l2_m + 2 * l_m * E_M + E2_M) * p_m / p_n + l2_d * p_d / p_n;
+    const double E2_E =
+        (l2_b + 2 * E_B * l_b + E2_B) * p_b / p_e + (l2_s + 2 * E_S * l_s + E2_S) * p_s / p_e;
+
+    // calculate second moment
+    const double E2_LL = E2_N + 2 * p_e * E_N * E_E / p_n + p_e * (1 + p_e) * E2_E / (p_n * p_n);
+    const double var = E2_LL - (mean * mean);
+
     return std::make_pair(mean, var);
 }
 
diff --git a/src/Utility.cpp b/src/Utility.cpp
index f969ec8..7475653 100644
--- a/src/Utility.cpp
+++ b/src/Utility.cpp
@@ -71,9 +71,6 @@ bool FileExists(const string& path)
 
 string FileExtension(const string& path)
 {
-    auto pathLower = path;
-    std::transform(pathLower.begin(), pathLower.end(), pathLower.begin(), ::tolower);
-
     size_t fileStart = path.find_last_of("/");
 
     if (fileStart == string::npos) fileStart = 0;
@@ -88,7 +85,9 @@ string FileExtension(const string& path)
     // increment beyond '.'
     ++extStart;
 
-    return path.substr(fileStart + extStart, path.length() - fileStart - extStart);
+    auto suffix = path.substr(fileStart + extStart, path.length() - fileStart - extStart);
+    std::transform(suffix.begin(), suffix.end(), suffix.begin(), ::tolower);
+    return suffix;
 }
 
 void FlattenFofn(vector<string>& res, const string& file)
diff --git a/src/main/ccs.cpp b/src/main/ccs.cpp
index 7d76dee..0cf478a 100644
--- a/src/main/ccs.cpp
+++ b/src/main/ccs.cpp
@@ -66,9 +66,8 @@
 #include <pacbio/data/Interval.h>
 #include <pacbio/data/ReadId.h>
 #include <pacbio/io/Utility.h>
-#include <pacbio/log/Logging.h>
 #include <pacbio/parallel/WorkQueue.h>
-#include <pacbio/util/ExecUtils.h>
+#include <pbcopper/logging/Logging.h>
 
 #include <pacbio/Version.h>
 
@@ -89,8 +88,8 @@ using boost::numeric_cast;
 using boost::optional;
 
 // these strings are part of the BAM header, they CANNOT contain newlines
-const std::string DESCRIPTION = "Generate circular consensus sequences (ccs) from subreads.";
-const std::string APPNAME = "ccs";
+const string DESCRIPTION = "Generate circular consensus sequences (ccs) from subreads.";
+const string APPNAME = "ccs";
 
 typedef ReadType<ReadId> Subread;
 typedef ChunkType<ReadId, Subread> Chunk;
@@ -98,13 +97,13 @@ typedef ResultType<ConsensusType> Results;
 
 const auto CircularConsensus = &PacBio::CCS::Consensus<Chunk>;
 
-inline std::string QVsToASCII(const std::vector<int>& qvs)
+inline string QVsToASCII(const vector<int>& qvs)
 {
-    std::string result;
+    string result;
     result.reserve(qvs.size());
 
     for (const int qv : qvs) {
-        result.push_back(static_cast<char>(std::min(std::max(0, qv), 93) + 33));
+        result.push_back(static_cast<char>(min(max(0, qv), 93) + 33));
     }
 
     return result;
@@ -236,7 +235,7 @@ Results FastqWriterThread(WorkQueue<Results>& queue, const string& fname)
     return counts;
 }
 
-BamHeader PrepareHeader(const std::string& cmdLine, const DataSet& ds)
+BamHeader PrepareHeader(const string& cmdLine, const DataSet& ds)
 {
     using boost::algorithm::join;
 
@@ -251,8 +250,10 @@ BamHeader PrepareHeader(const std::string& cmdLine, const DataSet& ds)
 
     for (const auto& bam : ds.BamFiles()) {
         for (const auto& rg : bam.Header().ReadGroups()) {
-            if (rg.ReadType() != "SUBREAD")
-                std::cerr << "invalid input file, READTYPE must be SUBREAD" << std::endl;
+            if (rg.ReadType() != "SUBREAD") {
+                PBLOG_FATAL << "invalid input file, READTYPE must be SUBREAD";
+                exit(EXIT_FAILURE);
+            }
 
             ReadGroupInfo readGroup(rg.MovieName(), "CCS");
             readGroup.BindingKit(rg.BindingKit())
@@ -315,21 +316,50 @@ void WriteResultsReport(ostream& report, const Results& counts)
     counts.SubreadCounter.WriteResultsReport(report);
 }
 
+static std::vector<ExternalResource> BarcodeSets(const ExternalResources& ext)
+{
+    std::vector<ExternalResource> output;
+    for (const auto& resource : ext) {
+        const auto bcs = BarcodeSets(resource.ExternalResources());
+        output.insert(output.end(), bcs.begin(), bcs.end());
+
+        if (resource.MetaType() == "PacBio.DataSet.BarcodeSet") output.push_back(resource);
+    }
+    return output;
+}
+
 static int Runner(const PacBio::CLI::Results& args)
 {
+    // logging
+    //
+    // Initialize logging as the very first step. This allows us to redirect
+    // incorrect CLI usage to a log file.
+    ofstream logStream;
+    {
+        const auto logLevel = args.LogLevel();
+        const std::string logFile = args["log_file"];
+
+        Logger* logger;
+        if (!logFile.empty()) {
+            logStream.open(logFile);
+            logger = &Logger::Default(new Logger(logStream, logLevel));
+        } else {
+            logger = &Logger::Default(new Logger(cerr, logLevel));
+        }
+        InstallSignalHandlers(*logger);
+    }
+
     using boost::algorithm::join;
     using boost::make_optional;
 
-    SetColumns();
-
     // Get source args
-    const std::vector<std::string> files = args.PositionalArguments();
+    const vector<string> files = args.PositionalArguments();
 
     // input validation
     if (files.size() != 2) {
-        std::cerr << "ERROR: Please provide the INPUT and OUTPUT files.\n"
-                  << "       See --help for more info about positional arguments." << std::endl;
-        return EXIT_FAILURE;
+        PBLOG_FATAL << "ERROR: Please provide the INPUT and OUTPUT files. See --help for more info "
+                       "about positional arguments.";
+        exit(EXIT_FAILURE);
     }
 
     const string inputFile = files.front();
@@ -341,51 +371,38 @@ static int Runner(const PacBio::CLI::Results& args)
     //
     //
     optional<Whitelist> whitelist(none);
-    const std::string& wlSpec = settings.WlSpec;
+    const string& wlSpec = settings.WlSpec;
     try {
         if (!wlSpec.empty()) whitelist = Whitelist(wlSpec);
     } catch (...) {
-        std::cerr << "option --zmws: invalid specification: '" + wlSpec + "'" << std::endl;
+        PBLOG_FATAL << "option --zmws: invalid specification: '" + wlSpec + "'";
+        exit(EXIT_FAILURE);
     }
 
     // verify input file exists
-    if (!FileExists(inputFile))
-        std::cerr << "INPUT: file does not exist: '" + inputFile + "'" << std::endl;
+    if (!FileExists(inputFile)) PBLOG_FATAL << "INPUT: file does not exist: '" + inputFile + "'";
 
     // verify output file does not already exist
-    if (FileExists(outputFile) && !settings.ForceOutput)
-        std::cerr << "OUTPUT: file already exists: '" + outputFile + "'" << std::endl;
-
-    if (settings.ByStrand && settings.NoPolish)
-        std::cerr << "option --byStrand: incompatible with --noPolish" << std::endl;
-
-    // logging
-    //
-    //
-    ofstream logStream;
-    {
-        const std::string& logLevel = settings.LogLevel;
-        const std::string& logFile = settings.LogFile;
+    if (FileExists(outputFile) && !settings.ForceOutput) {
+        PBLOG_FATAL << "OUTPUT: file already exists: '" + outputFile + "'";
+        exit(EXIT_FAILURE);
+    }
 
-        if (!logFile.empty()) {
-            logStream.open(logFile);
-            Logger::Default(new Logger(logStream, logLevel));
-        } else {
-            Logger::Default(new Logger(cerr, logLevel));
-        }
-        InstallSignalHandlers();
+    if (settings.ByStrand && settings.NoPolish) {
+        PBLOG_FATAL << "option --byStrand: incompatible with --noPolish";
+        exit(EXIT_FAILURE);
     }
 
     // load models from file or directory
     //
     //
     {
-        const std::string& modelPath = settings.ModelPath;
+        const string& modelPath = settings.ModelPath;
         if (!modelPath.empty()) {
             PBLOG_INFO << "Loading model parameters from: '" << modelPath << "'";
             if (!LoadModels(modelPath)) {
                 PBLOG_FATAL << "Failed to load models from: " << modelPath;
-                exit(-1);
+                exit(EXIT_FAILURE);
             }
         }
     }
@@ -398,23 +415,23 @@ static int Runner(const PacBio::CLI::Results& args)
     PBLOG_DEBUG << "Found consensus models for: (" << join(avail, ", ") << ')';
 
     DataSet ds(inputFile);
+    const string& modelSpec = settings.ModelSpec;
 
     // test that all input chemistries are supported
     {
         set<string> used;
-        const std::string& modelSpec = settings.ModelSpec;
         if (!modelSpec.empty()) {
             PBLOG_INFO << "Overriding model selection with: '" << modelSpec << "'";
             if (!(OverrideModel(modelSpec) && used.insert(modelSpec).second)) {
                 PBLOG_FATAL << "Failed to find specified model: " << modelSpec;
-                exit(-1);
+                exit(EXIT_FAILURE);
             }
         } else {
             try {
                 used = ds.SequencingChemistries();
             } catch (InvalidSequencingChemistryException& e) {
                 PBLOG_FATAL << e.what();
-                exit(-1);
+                exit(EXIT_FAILURE);
             }
 
             vector<string> unavail;
@@ -425,7 +442,7 @@ static int Runner(const PacBio::CLI::Results& args)
             if (!unavail.empty()) {
                 PBLOG_FATAL << "Unsupported chemistries found: (" << join(unavail, ", ") << "), "
                             << "supported chemistries are: (" << join(avail, ", ") << ")";
-                exit(-1);
+                exit(EXIT_FAILURE);
             }
         }
         PBLOG_DEBUG << "Using consensus models for: (" << join(used, ", ") << ')';
@@ -433,7 +450,7 @@ static int Runner(const PacBio::CLI::Results& args)
 
     if (!ValidBaseFeatures(ds)) {
         PBLOG_FATAL << "Missing base features: IPD or PulseWidth";
-        exit(-1);
+        exit(EXIT_FAILURE);
     }
 
     const auto filter = PbiFilter::FromDataSet(ds);
@@ -456,8 +473,8 @@ static int Runner(const PacBio::CLI::Results& args)
     if (isBam) {
         unique_ptr<BamWriter> ccsBam(
             new BamWriter(outputFile, PrepareHeader(args.InputCommandLine(), ds)));
-        const std::string pbiFileName = outputFile + ".pbi";
-        unique_ptr<PbiBuilder> ccsPbi(settings.PbIndex ? new PbiBuilder(pbiFileName) : nullptr);
+        const string pbiFileName = outputFile + ".pbi";
+        unique_ptr<PbiBuilder> ccsPbi(new PbiBuilder(pbiFileName));
         writer = async(launch::async, BamWriterThread, ref(workQueue), move(ccsBam), move(ccsPbi),
                        settings.RichQVs);
 
@@ -466,28 +483,29 @@ static int Runner(const PacBio::CLI::Results& args)
 
         if (isXml) {
             // Prepare dataset
-            const std::string desc =
-                "Points to the ccs bam file generated by pbccs " + PacBio::UnanimityVersion();
-            const std::string name = "ccs bam";
-            const std::string metatype = "PacBio.DataSet.ConsensusReadSet";
+            const string metatype = "PacBio.ConsensusReadFile.ConsensusReadBamFile";
             DataSet ccsSet(DataSet::TypeEnum::CONSENSUS_READ);
             ExternalResource resource(metatype, outputFile);
-            resource.Name(name).Description(desc);
 
             resource.FileIndices().Add(pbi);
 
+            for (const auto& barcodeSet : BarcodeSets(ds.ExternalResources()))
+                resource.ExternalResources().Add(barcodeSet);
+
             ccsSet.ExternalResources().Add(resource);
+            ccsSet.Name(ccsSet.TimeStampedName());
 
             // File path without .bam suffix
             const auto outputPrefix = outputFile.substr(0, outputFile.size() - 4);
             // Save dataset
-            std::ofstream ccsOut(outputPrefix + ".consensusreadset.xml");
+            ofstream ccsOut(outputPrefix + ".consensusreadset.xml");
             ccsSet.SaveToStream(ccsOut);
         }
     } else if (outputExt == "fastq" || outputExt == "fq") {
         writer = async(launch::async, FastqWriterThread, ref(workQueue), ref(outputFile));
     } else {
-        std::cerr << "OUTPUT: invalid file extension: '" + outputExt + "'" << std::endl;
+        PBLOG_FATAL << "OUTPUT: invalid file extension: '" + outputExt + "'";
+        exit(EXIT_FAILURE);
     }
 
     unique_ptr<vector<Chunk>> chunk(new vector<Chunk>());
@@ -525,9 +543,10 @@ static int Runner(const PacBio::CLI::Results& args)
                 skipZmw = true;
             else {
                 skipZmw = false;
+                string chem(modelSpec.empty() ? read.ReadGroup().SequencingChemistry() : modelSpec);
                 chunk->emplace_back(Chunk{ReadId(movieNames[movieName], *holeNumber),
                                           vector<Subread>(), SNR(snr[0], snr[1], snr[2], snr[3]),
-                                          read.ReadGroup().SequencingChemistry(), barcodes});
+                                          move(chem), barcodes});
             }
         }
 
@@ -539,7 +558,7 @@ static int Runner(const PacBio::CLI::Results& args)
                          read.BarcodeReverse() != get<1>(*barcodes) ||
                          read.BarcodeQuality() != get<2>(*barcodes))) {
             PBLOG_FATAL << "invalid data: \"bc\" or \"bq\" tag did not agree between subreads!";
-            exit(-1);
+            exit(EXIT_FAILURE);
         }
 
         vector<uint8_t> ipd;
@@ -554,11 +573,10 @@ static int Runner(const PacBio::CLI::Results& args)
         else
             pw = vector<uint8_t>(read.Sequence().length(), 0);
 
-        chunk->back().Reads.emplace_back(
-            Subread{ReadId(movieNames[movieName], *holeNumber,
-                           Interval(read.QueryStart(), read.QueryEnd())),
-                    read.Sequence(), std::move(ipd), std::move(pw), read.LocalContextFlags(),
-                    read.ReadAccuracy()});
+        chunk->back().Reads.emplace_back(Subread{
+            ReadId(movieNames[movieName], *holeNumber,
+                   Interval(read.QueryStart(), read.QueryEnd())),
+            read.Sequence(), move(ipd), move(pw), read.LocalContextFlags(), read.ReadAccuracy()});
     }
 
     // run the remaining tasks
@@ -570,7 +588,7 @@ static int Runner(const PacBio::CLI::Results& args)
     // wait for the writer thread and get the results counter
     //   then add in the snr/minPasses counts and write the report
     auto counts = writer.get();
-    const std::string& reportFile = settings.ReportFile;
+    const string& reportFile = settings.ReportFile;
 
     if (reportFile == "-")
         WriteResultsReport(cout, counts);
diff --git a/src/models/S_P1C1v2_Model.cpp b/src/models/S_P1C1v2_Model.cpp
index 9db4328..58f08ee 100644
--- a/src/models/S_P1C1v2_Model.cpp
+++ b/src/models/S_P1C1v2_Model.cpp
@@ -67,7 +67,7 @@ class S_P1C1v2_Model : public ModelConfig
     REGISTER_MODEL(S_P1C1v2_Model);
 
 public:
-    static std::set<std::string> Names() { return {"S/P1-C1.2::PwSnr"}; }
+    static std::set<std::string> Names() { return {"S/P1-C1.2::PwSnr", "S/P1-C1.3::PwSnr"}; }
     S_P1C1v2_Model(const SNR& snr);
     std::unique_ptr<AbstractRecursor> CreateRecursor(std::unique_ptr<AbstractTemplate>&& tpl,
                                                      const MappedRead& mr, double scoreDiff) const;
diff --git a/src/models/S_P2C2_Model.cpp b/src/models/S_P2C2_Model.cpp
new file mode 100644
index 0000000..9472269
--- /dev/null
+++ b/src/models/S_P2C2_Model.cpp
@@ -0,0 +1,395 @@
+// Copyright (c) 2014-2016, 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.
+
+// Author: Lance Hepler
+
+#include <cassert>
+#include <cmath>
+#include <memory>
+#include <stdexcept>
+
+#include <pacbio/consensus/ModelConfig.h>
+#include <pacbio/data/Read.h>
+
+#include "../ModelFactory.h"
+#include "../Recursor.h"
+
+using namespace PacBio::Data;
+
+namespace PacBio {
+namespace Consensus {
+namespace {
+
+template <typename T>
+inline T clip(const T val, const T range[2])
+{
+    return std::max(range[0], std::min(val, range[1]));
+}
+
+constexpr double kCounterWeight = 3.0;
+constexpr size_t nOutcomes = 12;
+constexpr size_t nContexts = 16;
+
+class S_P2C2_Model : public ModelConfig
+{
+    REGISTER_MODEL(S_P2C2_Model);
+
+public:
+    static std::set<std::string> Names() { return {"S/P2-C2::PwSnr"}; }
+    S_P2C2_Model(const SNR& snr);
+    std::unique_ptr<AbstractRecursor> CreateRecursor(std::unique_ptr<AbstractTemplate>&& tpl,
+                                                     const MappedRead& mr, double scoreDiff) const;
+    std::vector<TemplatePosition> Populate(const std::string& tpl) const;
+    double ExpectedLLForEmission(MoveType move, uint8_t prev, uint8_t curr,
+                                 MomentType moment) const;
+
+private:
+    SNR snr_;
+    double ctxTrans_[nContexts][4];
+    double cachedEmissionExpectations_[nContexts][3][2];
+};
+
+REGISTER_MODEL_IMPL(S_P2C2_Model);
+
+// TODO(lhepler) comments regarding the CRTP
+class S_P2C2_Recursor : public Recursor<S_P2C2_Recursor>
+{
+public:
+    S_P2C2_Recursor(std::unique_ptr<AbstractTemplate>&& tpl, const MappedRead& mr,
+                    double scoreDiff);
+    static inline std::vector<uint8_t> EncodeRead(const MappedRead& read);
+    static inline double EmissionPr(MoveType move, uint8_t emission, uint8_t prev, uint8_t curr);
+    virtual double UndoCounterWeights(size_t nEmissions) const;
+};
+
+constexpr double snrRanges[4][2] = {{4.06761408, 7.87333488},   // A
+                                    {7.56100464, 14.9044018},   // C
+                                    {4.05258036, 6.67833996},   // G
+                                    {6.47991323, 10.7843523}};  // T
+
+constexpr double emissionPmf[3][nContexts][nOutcomes] = {
+    {// matchPmf
+     {0.00735664387, 0.00190428659, 0.000128987185, 3.19609285e-05, 0.0579789127, 0.00159365177,
+      0.000377851288, 2.64641792e-05, 0.925861388, 0.0039544046, 0.000740333577, 4.51157354e-05},
+     {0.00268702382, 0.0103554239, 5.5569919e-05, 0.00010710572, 0.0119429479, 0.0349107323,
+      0.000173873688, 3.71404194e-05, 0.0132184981, 0.925935393, 0.000163937702, 0.000412353133},
+     {0.000303779953, 5.76150405e-05, 0.00682147837, 0.00396954594, 0.000590520182, 1.49898804e-05,
+      0.0623840757, 0.00479826006, 0.000162992201, 0.000111189159, 0.896219743, 0.0245658107},
+     {0.000142620524, 3.85177333e-05, 0.00440064256, 0.018046601, 0.000210517258, 2.23325708e-05,
+      0.0272865144, 0.0538911959, 0.000157354862, 0.000143746285, 0.0491787167, 0.84648124},
+     {0.00733096773, 0.00166007937, 0.000121497496, 0.000116125734, 0.0573233988, 0.00126886069,
+      0.00071151983, 7.74436926e-05, 0.927257837, 0.0023603384, 0.00153974443, 0.000232186399},
+     {0.00219335118, 0.0112686045, 4.01328525e-05, 5.02885136e-05, 0.0117893856, 0.0371141169,
+      1.68691479e-05, 1.56068136e-05, 0.0116461848, 0.925851525, 1.25205575e-05, 1.41414695e-06},
+     {0.000117348076, 1.75083299e-05, 0.00297146156, 0.0016269759, 0.000296647296, 4.87166628e-05,
+      0.0284358458, 0.002344226, 0.000568544223, 0.000237602686, 0.942157699, 0.021177424},
+     {9.37972006e-05, 6.24310526e-05, 0.00526664739, 0.0207263945, 0.00012215642, 2.11772913e-05,
+      0.0320582675, 0.06180119, 0.000243487269, 0.000476247908, 0.0530240115, 0.826104192},
+     {0.00314264389, 0.00082820948, 9.08246005e-05, 9.38915756e-05, 0.028554939, 0.000783143672,
+      0.000364350553, 2.37054476e-05, 0.961214998, 0.00421586002, 0.000391376658, 0.000296057041},
+     {0.00119090385, 0.00593803619, 2.03588382e-05, 4.41352391e-05, 0.00628544188, 0.0204138621,
+      0.000138312951, 6.76020532e-05, 0.00866986949, 0.956464996, 0.000533431456, 0.000233049758},
+     {6.43734294e-05, 1.22650033e-05, 0.00210011572, 0.00131543919, 9.48512735e-05, 9.02245873e-06,
+      0.0243938729, 0.00215317529, 0.00018372826, 3.35949921e-05, 0.950122398, 0.0195171634},
+     {3.66710321e-05, 4.51849068e-05, 0.0024483006, 0.010397222, 8.29270369e-05, 1.71244431e-05,
+      0.0166213186, 0.0346020058, 8.05756611e-05, 0.000443816688, 0.0317772895, 0.903447564},
+     {0.00584782932, 0.00152030367, 8.92185665e-05, 8.75578495e-05, 0.0450024718, 0.00128621735,
+      0.000488191126, 3.73830825e-05, 0.940618603, 0.00388969117, 0.00110426833, 2.82644734e-05},
+     {0.00124169992, 0.00586665604, 3.58345575e-05, 7.76586763e-05, 0.00564348936, 0.0178975167,
+      0.000131182094, 2.75294579e-05, 0.00733345492, 0.961559728, 0.000111068097, 7.41824771e-05},
+     {5.36955022e-05, 3.60866503e-05, 0.00270197625, 0.00158018444, 8.86444887e-05, 7.11501847e-06,
+      0.0271717889, 0.00206535023, 0.000463746178, 0.000180875439, 0.946297025, 0.0193535123},
+     {4.54423247e-05, 1.30264171e-05, 0.00201775615, 0.00868651464, 2.93835524e-05, 8.6504974e-06,
+      0.0146074997, 0.0295302164, 1.74359077e-05, 6.74859902e-06, 0.0306931623, 0.914344164}},
+    {// branchPmf
+     {0.13965274, 0.000214059166, 0.000214059166, 0.000214059166, 0.258968176, 0.000214059166,
+      0.000214059166, 0.000214059166, 0.599666611, 0.000214059166, 0.000214059166, 0},
+     {0.000190616771, 0.0678223351, 0.000190616771, 0.000190616771, 0.000190616771, 0.100087597,
+      0.000190616771, 0.000190616771, 0.000190616771, 0.830565134, 0.000190616771, 0},
+     {0.000101396092, 0.000101396092, 0.0616730324, 0.000101396092, 0.000101396092, 0.000101396092,
+      0.143805821, 0.000101396092, 0.000101396092, 0.000101396092, 0.793709977, 0},
+     {0.000303994885, 0.000303994885, 0.000303994885, 0.1284746, 0.000303994885, 0.000303994885,
+      0.000303994885, 0.141454447, 0.000303994885, 0.000303994885, 0.000303994885, 0.727334999},
+     {0.0433312739, 3.22994963e-05, 3.22994963e-05, 3.22994963e-05, 0.117471222, 3.22994963e-05,
+      3.22994963e-05, 3.22994963e-05, 0.838939108, 3.22994963e-05, 3.22994963e-05, 0},
+     {4.12209605e-05, 0.0329945236, 4.12209605e-05, 4.12209605e-05, 4.12209605e-05, 0.0452292927,
+      4.12209605e-05, 4.12209605e-05, 4.12209605e-05, 0.921446416, 4.12209605e-05, 0},
+     {5.6318833e-05, 5.6318833e-05, 0.0532155899, 5.6318833e-05, 5.6318833e-05, 5.6318833e-05,
+      0.12387295, 5.6318833e-05, 5.6318833e-05, 5.6318833e-05, 0.822460909, 0},
+     {0.000171851328, 0.000171851328, 0.000171851328, 0.0769974228, 0.000171851328, 0.000171851328,
+      0.000171851328, 0.115058917, 0.000171851328, 0.000171851328, 0.000171851328, 0.806396998},
+     {0.0289415541, 3.57312452e-05, 3.57312452e-05, 3.57312452e-05, 0.0863096576, 3.57312452e-05,
+      3.57312452e-05, 3.57312452e-05, 0.884462938, 3.57312452e-05, 3.57312452e-05, 0},
+     {7.76665226e-05, 0.0487889535, 7.76665226e-05, 7.76665226e-05, 7.76665226e-05, 0.0563094047,
+      7.76665226e-05, 7.76665226e-05, 7.76665226e-05, 0.89428031, 7.76665226e-05, 0},
+     {0.000224675996, 0.000224675996, 0.11442169, 0.000224675996, 0.000224675996, 0.000224675996,
+      0.177555734, 0.000224675996, 0.000224675996, 0.000224675996, 0.706225168, 0},
+     {0.000147262818, 0.000147262818, 0.000147262818, 0.0548667631, 0.000147262818, 0.000147262818,
+      0.000147262818, 0.0766653324, 0.000147262818, 0.000147262818, 0.000147262818, 0.867142539},
+     {0.0251062443, 3.11750569e-05, 3.11750569e-05, 3.11750569e-05, 0.0860636051, 3.11750569e-05,
+      3.11750569e-05, 3.11750569e-05, 0.88858075, 3.11750569e-05, 3.11750569e-05, 0},
+     {5.64847834e-05, 0.0293039817, 5.64847834e-05, 5.64847834e-05, 5.64847834e-05, 0.0459491268,
+      5.64847834e-05, 5.64847834e-05, 5.64847834e-05, 0.924295013, 5.64847834e-05, 0},
+     {5.20954226e-05, 5.20954226e-05, 0.0339074593, 5.20954226e-05, 5.20954226e-05, 5.20954226e-05,
+      0.103213362, 5.20954226e-05, 5.20954226e-05, 5.20954226e-05, 0.862462415, 0},
+     {2.41719133e-05, 2.41719133e-05, 2.41719133e-05, 0.0373123704, 2.41719133e-05, 2.41719133e-05,
+      2.41719133e-05, 0.0666923249, 2.41719133e-05, 2.41719133e-05, 2.41719133e-05, 0.895777757}},
+    {// stickPmf
+     {0.000146474028, 0.0297946523, 0.0803446626, 0.0323153575, 0.000146474028, 0.0181368779,
+      0.159977298, 0.0152271765, 0.000146474028, 0.244223284, 0.299539822, 0.120001447},
+     {0.0754353435, 0.000106711295, 0.108178173, 0.05166508, 0.0659944961, 0.000106711295,
+      0.235061774, 0.0369961862, 0.0285965147, 0.000106711295, 0.241613261, 0.156139038},
+     {0.150889801, 0.0424857824, 0.000318026612, 0.147445837, 0.0393052032, 0.0282810617,
+      0.000318026612, 0.0807560198, 0.00326633483, 0.214809655, 0.000318026612, 0.291806225},
+     {0.140090388, 0.0466498235, 0.0955223418, 0.000146946243, 0.100971439, 0.0170277817,
+      0.173755469, 0.000146946243, 0.00152457994, 0.141450628, 0.282713657, 0},
+     {0.000119247588, 0.0383163304, 0.11255615, 0.0436285288, 0.000119247588, 0.0192856198,
+      0.175758018, 0.020358817, 0.000119247588, 0.197235316, 0.288470104, 0.104033374},
+     {0.0468282051, 3.20346125e-05, 0.0825016476, 0.0378754242, 0.0868836623, 3.20346125e-05,
+      0.146909879, 0.0191351973, 0.260577625, 3.20346125e-05, 0.213141376, 0.10605088},
+     {0.146293011, 0.0331663512, 0.000105430841, 0.0501755794, 0.207187242, 0.0102551561,
+      0.000105430841, 0.027888217, 0.283407964, 0.0599407043, 0.000105430841, 0.181369481},
+     {0.125236617, 0.0361508505, 0.0591068896, 0.000121340743, 0.165565282, 0.00791956686,
+      0.150064084, 0.000121340743, 0.202982991, 0.0283175644, 0.224413472, 0},
+     {0.000210016244, 0.0414240647, 0.101760633, 0.0428484744, 0.000210016244, 0.0179312948,
+      0.161526364, 0.0189973372, 0.000210016244, 0.240930978, 0.173671163, 0.200279644},
+     {0.0495830034, 4.61487199e-05, 0.151014753, 0.067951325, 0.0907268765, 4.61487199e-05,
+      0.315461425, 0.0277696796, 0.128849485, 4.61487199e-05, 0.0567220636, 0.111782943},
+     {0.11555575, 0.0292950248, 0.00014832042, 0.0456759293, 0.15337244, 0.00761339039,
+      0.00014832042, 0.0203902102, 0.249082062, 0.122098355, 0.00014832042, 0.256471877},
+     {0.147130835, 0.0327619952, 0.0756043295, 0.000188145734, 0.212444944, 0.0101329647,
+      0.114642199, 0.000188145734, 0.294425221, 0.107175814, 0.00530540568, 0},
+     {8.22405627e-05, 0.0221237714, 0.037137767, 0.0162121049, 8.22405627e-05, 0.0187609213,
+      0.080696449, 0.0269716446, 8.22405627e-05, 0.248406873, 0.205991108, 0.343452639},
+     {0.049159614, 5.43832178e-05, 0.0514031038, 0.0203847824, 0.0855463843, 5.43832178e-05,
+      0.0980144614, 0.0239136025, 0.168927456, 5.43832178e-05, 0.158422773, 0.344064673},
+     {0.137668134, 0.0267105699, 0.000142351166, 0.0441201525, 0.19166368, 0.0114882132,
+      0.000142351166, 0.0202277277, 0.273478098, 0.129199413, 0.000142351166, 0.165016958},
+     {0.0443720703, 0.011998886, 0.0370775788, 3.30887484e-05, 0.0768170894, 0.00839411198,
+      0.110338914, 3.30887484e-05, 0.22919549, 0.235978299, 0.245761384, 0}}};
+
+constexpr double transProbs[nContexts][3][4] = {
+    {// AA
+     {-7.36174689, 1.61101289, -0.268464948, 0.0143320448},
+     {-3.22220388, 0.496986063, -0.181868245, 0.0125555841},
+     {2.63396482, -1.49671632, 0.145790372, -0.00463126882}},
+    {// AC
+     {-4.29124266, 0.474781729, -0.0691005634, 0.0024944116},
+     {-5.8759345, 0.769176344, -0.0794793302, 0.0026603066},
+     {-2.52278775, -0.0673361054, -0.00420963573, 0.000173101656}},
+    {// AG
+     {1.44776405, -1.89806596, 0.230489754, -0.00788373432},
+     {3.62328388, -3.16155741, 0.380413687, -0.0139731804},
+     {-2.4113731, 1.5617699, -0.464222808, 0.0330184761}},
+    {// AT
+     {-1.52188949, -0.619888164, 0.0344820232, -0.000466695436},
+     {7.25871708, -2.89355725, 0.226545422, -0.00503769654},
+     {1.80689962, -0.775311988, 0.00287885444, 0.00212630128}},
+    {// CA
+     {-1.58612186, -0.153996667, -0.019362539, 0.00340134003},
+     {-5.44435394, 1.26703171, -0.267105283, 0.0166778421},
+     {2.91356449, -1.87150825, 0.226540613, -0.010786308}},
+    {// CC
+     {2.73738367, -1.52165103, 0.134485954, -0.00364414263},
+     {-1.96380465, -0.0304224195, -0.00741383211, 0.000655817377},
+     {-5.65275902, 0.8554781, -0.0747563725, 0.00213841659}},
+    {// CG
+     {6.82408162, -5.00340617, 0.843280331, -0.0477216713},
+     {0.922836644, -1.39570517, 0.0615167062, 0.00625866765},
+     {-7.49471908, 4.08850937, -0.931670394, 0.06135184}},
+    {// CT
+     {-2.03471379, -0.183049895, -0.0161448893, 0.00147588228},
+     {-0.39397695, -0.497506148, -0.0025279351, 0.00199848358},
+     {-3.14511306, 0.866929002, -0.161209014, 0.00724003881}},
+    {// GA
+     {-4.03613088, 0.951183897, -0.1707077, 0.00951914769},
+     {-2.73727929, -0.0846264685, -0.0762702838, 0.00765998521},
+     {-0.0115161507, -0.676772845, 0.0186902046, 0.00114061014}},
+    {// GC
+     {-4.0450919, 0.19441825, -0.0196572463, 0.000545513282},
+     {-0.590738944, -0.563607207, 0.0397364279, -0.000835263676},
+     {-0.650606525, -0.793978644, 0.0672391429, -0.0019742867}},
+    {// GG
+     {-7.1216888, 0.704299447, -0.00675682556, -0.00429905236},
+     {4.0135083, -2.99745283, 0.330100699, -0.00866415885},
+     {-2.95159941, 1.52304256, -0.417790358, 0.0301178899}},
+    {// GT
+     {-5.71687526, 1.02827154, -0.128832359, 0.00416099843},
+     {-6.35542589, 1.25709282, -0.1917998, 0.00889679996},
+     {-1.20027791, 0.152425947, -0.0921121841, 0.00518033583}},
+    {// TA
+     {-1.75233077, -0.0165381386, -0.0154477996, 0.00191469353},
+     {-3.79457085, 0.695703623, -0.170024823, 0.0125082712},
+     {2.14044448, -1.41498734, 0.116355694, -0.00281465688}},
+    {// TC
+     {-1.89375385, -0.103804215, -0.00397067386, 0.000435442231},
+     {-4.05701629, 0.431318996, -0.0460802272, 0.0014783096},
+     {-4.07119813, 0.0340792867, 0.00636890829, -0.000665968456}},
+    {// TG
+     {7.14617037, -5.07757031, 0.837708073, -0.0452627753},
+     {1.69236944, -2.28936276, 0.274337077, -0.00888968456},
+     {-4.60392728, 2.15828049, -0.515604387, 0.0324594302}},
+    {// TT
+     {-2.82895825, -0.159891687, 0.0556441946, -0.00321555705},
+     {2.92995068, -1.83116699, 0.202125712, -0.00725218663},
+     {0.981168958, -0.682236621, 0.0147684255, 0.00146373056}}};
+
+inline double CalculateExpectedLLForEmission(const size_t move, const uint8_t row,
+                                             const size_t moment)
+{
+    double expectedLL = 0;
+    for (size_t i = 0; i < nOutcomes; i++) {
+        double curProb = emissionPmf[move][row][i];
+        double lgCurProb = std::log(curProb);
+        if (moment == static_cast<uint8_t>(MomentType::FIRST))
+            expectedLL += curProb * lgCurProb;
+        else if (moment == static_cast<uint8_t>(MomentType::SECOND))
+            expectedLL += curProb * (lgCurProb * lgCurProb);
+    }
+    return expectedLL;
+}
+
+S_P2C2_Model::S_P2C2_Model(const SNR& snr) : snr_(snr)
+{
+    for (size_t ctx = 0; ctx < nContexts; ++ctx) {
+        const uint8_t bp = ctx & 3;  // (equivalent to % 4)
+        const double snr1 = clip(snr_[bp], snrRanges[bp]), snr2 = snr1 * snr1, snr3 = snr2 * snr1;
+        double sum = 1.0;
+
+        // cached transitions
+        ctxTrans_[ctx][0] = 1.0;
+        for (size_t j = 0; j < 3; ++j) {
+            double xb = transProbs[ctx][j][0] + snr1 * transProbs[ctx][j][1] +
+                        snr2 * transProbs[ctx][j][2] + snr3 * transProbs[ctx][j][3];
+            xb = std::exp(xb);
+            ctxTrans_[ctx][j + 1] = xb;
+            sum += xb;
+        }
+        for (size_t j = 0; j < 4; ++j)
+            ctxTrans_[ctx][j] /= sum;
+
+        // cached expectations
+        for (size_t move = 0; move < 3; ++move)
+            for (size_t moment = 0; moment < 2; ++moment)
+                cachedEmissionExpectations_[ctx][move][moment] =
+                    CalculateExpectedLLForEmission(move, ctx, moment);
+    }
+}
+
+std::unique_ptr<AbstractRecursor> S_P2C2_Model::CreateRecursor(
+    std::unique_ptr<AbstractTemplate>&& tpl, const MappedRead& mr, double scoreDiff) const
+{
+    return std::unique_ptr<AbstractRecursor>(
+        new S_P2C2_Recursor(std::forward<std::unique_ptr<AbstractTemplate>>(tpl), mr, scoreDiff));
+}
+
+std::vector<TemplatePosition> S_P2C2_Model::Populate(const std::string& tpl) const
+{
+    std::vector<TemplatePosition> result;
+
+    if (tpl.empty()) return result;
+
+    result.reserve(tpl.size());
+
+    // calculate transition probabilities
+    uint8_t prev = detail::TranslationTable[static_cast<uint8_t>(tpl[0])];
+    if (prev > 3) throw std::invalid_argument("invalid character in template!");
+
+    for (size_t i = 1; i < tpl.size(); ++i) {
+        const uint8_t curr = detail::TranslationTable[static_cast<uint8_t>(tpl[i])];
+        if (curr > 3) throw std::invalid_argument("invalid character in template!");
+        const auto row = (prev << 2) | curr;
+        const auto params = ctxTrans_[row];
+        result.emplace_back(TemplatePosition{
+            tpl[i - 1], prev,
+            params[0],  // match
+            params[1],  // branch
+            params[2],  // stick
+            params[3]   // deletion
+        });
+        prev = curr;
+    }
+    result.emplace_back(TemplatePosition{tpl.back(), prev, 1.0, 0.0, 0.0, 0.0});
+
+    return result;
+}
+
+double S_P2C2_Model::ExpectedLLForEmission(const MoveType move, const uint8_t prev,
+                                           const uint8_t curr, const MomentType moment) const
+{
+    const size_t row = (prev << 2) | curr;
+    return cachedEmissionExpectations_[row][static_cast<uint8_t>(move)]
+                                      [static_cast<uint8_t>(moment)];
+}
+
+S_P2C2_Recursor::S_P2C2_Recursor(std::unique_ptr<AbstractTemplate>&& tpl, const MappedRead& mr,
+                                 double scoreDiff)
+    : Recursor<S_P2C2_Recursor>(std::forward<std::unique_ptr<AbstractTemplate>>(tpl), mr, scoreDiff)
+{
+}
+
+std::vector<uint8_t> S_P2C2_Recursor::EncodeRead(const MappedRead& read)
+{
+    std::vector<uint8_t> result;
+
+    result.reserve(read.Length());
+
+    for (size_t i = 0; i < read.Length(); ++i) {
+        if (read.PulseWidth[i] < 1U) throw std::runtime_error("invalid PulseWidth in read!");
+        const uint8_t pw = std::min(2, read.PulseWidth[i] - 1);
+        const uint8_t bp = detail::TranslationTable[static_cast<uint8_t>(read.Seq[i])];
+        if (bp > 3) throw std::invalid_argument("invalid character in read!");
+        const uint8_t em = (pw << 2) | bp;
+        if (em > 11) throw std::runtime_error("read encoding error!");
+        result.emplace_back(em);
+    }
+
+    return result;
+}
+
+double S_P2C2_Recursor::EmissionPr(MoveType move, uint8_t emission, uint8_t prev, uint8_t curr)
+{
+    assert(move != MoveType::DELETION);
+    const auto row = (prev << 2) | curr;
+    return emissionPmf[static_cast<uint8_t>(move)][row][emission] * kCounterWeight;
+}
+
+double S_P2C2_Recursor::UndoCounterWeights(const size_t nEmissions) const
+{
+    return -std::log(kCounterWeight) * nEmissions;
+}
+}  // namespace anonymous
+}  // namespace Consensus
+}  // namespace PacBio
diff --git a/src/poa/PoaGraph.cpp b/src/poa/PoaGraph.cpp
index c663fd3..434060e 100644
--- a/src/poa/PoaGraph.cpp
+++ b/src/poa/PoaGraph.cpp
@@ -74,6 +74,8 @@ void PoaGraph::CommitAdd(PoaAlignmentMatrix* mat, std::vector<Vertex>* readPathO
     impl->CommitAdd(mat, readPathOutput);
 }
 
+void PoaGraph::PruneGraph(const int minCoverage) { impl->PruneGraph(minCoverage); }
+
 size_t PoaGraph::NumReads() const { return impl->NumReads(); }
 
 const PoaConsensus* PoaGraph::FindConsensus(const AlignConfig& config, int minCoverage) const
diff --git a/src/poa/PoaGraphImpl.cpp b/src/poa/PoaGraphImpl.cpp
index 789e1ec..1a1e906 100644
--- a/src/poa/PoaGraphImpl.cpp
+++ b/src/poa/PoaGraphImpl.cpp
@@ -427,6 +427,28 @@ void PoaGraphImpl::CommitAdd(PoaAlignmentMatrix* mat_, std::vector<Vertex>* read
     repCheck();
 }
 
+void PoaGraphImpl::PruneGraph(const int minCoverage)
+{
+    // We have to use an iterator since we're modifying the graph as we go
+    graph_traits<BoostGraph>::vertex_iterator vi, vi_end, next;
+    tie(vi, vi_end) = vertices(g_);
+    for (next = vi; vi != vi_end; vi = next) {
+        ++next;
+        if (vertexInfoMap_[*vi].Reads < minCoverage) {
+            clear_vertex(*vi, g_);
+            remove_vertex(*vi, g_);
+        }
+    }
+
+    // Re-index all vertices to the range [0, num_vertices(g_)]
+    graph_traits<BoostGraph>::vertices_size_type current_index = 0;
+    index_map_t index_map = get(vertex_index, g_);
+    // clang-format off
+    BGL_FORALL_VERTICES(v, g_, BoostGraph)
+        index_map[v] = current_index++;
+    // clang-format on
+}
+
 size_t PoaGraphImpl::NumReads() const { return numReads_; }
 
 string PoaGraphImpl::ToGraphViz(int flags, const PoaConsensus* pc) const
diff --git a/src/poa/PoaGraphImpl.h b/src/poa/PoaGraphImpl.h
index 93e6d5b..d7ddefa 100644
--- a/src/poa/PoaGraphImpl.h
+++ b/src/poa/PoaGraphImpl.h
@@ -76,19 +76,20 @@ struct PoaNode
     float Score;
     float ReachingScore;
 
-    void Init(size_t id, char base, int reads)
+    void Init(size_t id, char base, int reads, int spanning)
     {
         this->Id = id;
         this->Base = base;
         this->Reads = reads;
-        this->SpanningReads = 0;
+        this->SpanningReads = spanning;
         this->Score = 0;
         this->ReachingScore = 0;
     }
 
-    PoaNode() { Init(0, 'N', 0); }
-    PoaNode(size_t id, char base) { Init(id, base, 1); }
-    PoaNode(size_t id, char base, int reads) { Init(id, base, reads); }
+    PoaNode() { Init(0, 'N', 0, 0); }
+    PoaNode(size_t id, char base) { Init(id, base, 1, 0); }
+    PoaNode(size_t id, char base, int reads) { Init(id, base, reads, 0); }
+    PoaNode(size_t id, char base, int reads, int spanning) { Init(id, base, reads, spanning); }
 };
 
 // External-facing vertex id type
@@ -145,11 +146,11 @@ class PoaGraphImpl
 
     void repCheck() const;
 
-    VD addVertex(char base, int nReads = 1)
+    VD addVertex(char base, int nReads = 1, int spanningReads = 0)
     {
         VD vd = add_vertex(g_);
         Vertex vExt = totalVertices_++;
-        vertexInfoMap_[vd] = PoaNode(vExt, base, nReads);
+        vertexInfoMap_[vd] = PoaNode(vExt, base, nReads, spanningReads);
         vertexLookup_[vExt] = vd;
         indexMap_[vd] = liveVertices_++;
         return vd;
@@ -252,6 +253,7 @@ public:
 
     PoaConsensus* FindConsensus(const PacBio::Align::AlignConfig& config,
                                 int minCoverage = -INT_MAX);
+    void PruneGraph(const int minCoverage);
 
     size_t NumReads() const;
     string ToGraphViz(int flags, const PoaConsensus* pc) const;
diff --git a/src/poa/PoaGraphTraversals.cpp b/src/poa/PoaGraphTraversals.cpp
index a10da98..3b8b747 100644
--- a/src/poa/PoaGraphTraversals.cpp
+++ b/src/poa/PoaGraphTraversals.cpp
@@ -227,6 +227,7 @@ void PoaGraphImpl::tracebackAndThread(std::string sequence,
     const AlignmentColumn* curCol;
     VD v = null_vertex, forkVertex = null_vertex;
     VD u = exitVertex_;
+    int span = 0;
     VD startSpanVertex;
     VD endSpanVertex = alignmentColumnForVertex.at(exitVertex_)->PreviousVertex[I];
 
@@ -265,7 +266,7 @@ void PoaGraphImpl::tracebackAndThread(std::string sequence,
             // In local model thread read bases, adjusting i (should stop at 0)
             while (i > 0) {
                 assert(alignMode == AlignMode::LOCAL);
-                VD newForkVertex = addVertex(sequence[READPOS]);
+                VD newForkVertex = addVertex(sequence[READPOS], 1, span);
                 add_edge(newForkVertex, forkVertex, g_);
                 VERTEX_ON_PATH(READPOS, newForkVertex);
                 forkVertex = newForkVertex;
@@ -284,7 +285,7 @@ void PoaGraphImpl::tracebackAndThread(std::string sequence,
                 int prevRow = ArgMax(prevCol->Score);
 
                 while (i > static_cast<int>(prevRow)) {
-                    VD newForkVertex = addVertex(sequence[READPOS]);
+                    VD newForkVertex = addVertex(sequence[READPOS], 1, span);
                     add_edge(newForkVertex, forkVertex, g_);
                     VERTEX_ON_PATH(READPOS, newForkVertex);
                     forkVertex = newForkVertex;
@@ -307,7 +308,7 @@ void PoaGraphImpl::tracebackAndThread(std::string sequence,
             }
         } else if (reachingMove == ExtraMove || reachingMove == MismatchMove) {
             // begin a new arc with this read base
-            VD newForkVertex = addVertex(sequence[READPOS]);
+            VD newForkVertex = addVertex(sequence[READPOS], 1, span);
             if (forkVertex == null_vertex) {
                 forkVertex = v;
             }
@@ -321,6 +322,7 @@ void PoaGraphImpl::tracebackAndThread(std::string sequence,
 
         v = u;
         u = prevVertex;
+        span = curNodeInfo.SpanningReads;
     }
     startSpanVertex = v;
 
diff --git a/swig/CMakeLists.txt b/swig/CMakeLists.txt
index e9c9319..8ea300e 100644
--- a/swig/CMakeLists.txt
+++ b/swig/CMakeLists.txt
@@ -17,6 +17,9 @@ include_directories(SYSTEM
 # We could use python -c "print(sysconfig.get_config_var('CCSHARED'))",
 # but it's honestly unnecessary and requires providing PYTHON_EXECUTABLE
 target_compile_options(cc2 PUBLIC -fPIC)
+if (TARGET pbcopper)
+    target_compile_options(pbcopper PUBLIC -fPIC)
+endif()
 add_compile_options(-fPIC)
 
 # ConsensusCore2_wrap.cxx
@@ -25,10 +28,8 @@ set(SWIG_COMMAND swig CACHE PATH "swig PATH")
 add_custom_command(OUTPUT ConsensusCore2_wrap.cxx
     COMMAND ${SWIG_COMMAND} -Wextra -c++ -python -builtin -module ConsensusCore2
         -I${UNY_IncludeDir} -I${CMAKE_BINARY_DIR}/generated
-        -o ${CMAKE_BINARY_DIR}/swig/ConsensusCore2_wrap.cxx -outdir ${CMAKE_BINARY_DIR}/swig
+        -o ${CMAKE_BINARY_DIR}/swig/ConsensusCore2_wrap.cxx -outdir ${CMAKE_BINARY_DIR}/swig/lib
         ${UNY_SwigDir}/ConsensusCore2.i
-    COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_BINARY_DIR}/swig/ConsensusCore2.py
-        ${CMAKE_BINARY_DIR}/swig/lib/__init__.py
 )
 
 # _ConsensusCore2.so
@@ -38,7 +39,8 @@ add_library(_ConsensusCore2 MODULE
 
 target_include_directories(_ConsensusCore2
     PUBLIC ${UNY_IncludeDir}
-    PUBLIC ${CMAKE_BINARY_DIR}/generated
+    ${CMAKE_BINARY_DIR}/generated
+    ${pbcopper_INCLUDE_DIRS}
 )
 
 set(CC2_LIBRARIES
@@ -49,6 +51,7 @@ set(CC2_LIBRARIES
 
 target_link_libraries(_ConsensusCore2
     ${CC2_LIBRARIES}
+    ${pbcopper_LIBRARIES}
 )
 
 if (${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
diff --git a/swig/ConsensusCore2.py b/swig/ConsensusCore2.py
new file mode 100644
index 0000000..8a7c730
--- /dev/null
+++ b/swig/ConsensusCore2.py
@@ -0,0 +1 @@
+raise RuntimeError("something unexpectedly bad happened during installation of ConsensusCore2, which is broken")
diff --git a/tests/cram/100zmws.t b/tests/cram/100zmws.t
index 4727181..da19f58 100644
--- a/tests/cram/100zmws.t
+++ b/tests/cram/100zmws.t
@@ -7,6 +7,8 @@ Test ccs on 100 zmws from the lexogen-SIRV dataset
   >|> \d{8} \d{2}:\d{2}:\d{2}\.\d{3} -|- DEBUG      -|- operator() -|- [0-9,a-f,x]+|| -|- Skipping read m150825_055401_42161_c100844482550000001823159012311525_s1_p0/413/9570_12297, ALPHA/BETA MISMATCH (re)
   >|> \d{8} \d{2}:\d{2}:\d{2}\.\d{3} -|- DEBUG      -|- operator() -|- [0-9,a-f,x]+|| -|- Skipping read m150825_055401_42161_c100844482550000001823159012311525_s1_p0/429/4100_6514, ALPHA/BETA MISMATCH (re)
   >|> \d{8} \d{2}:\d{2}:\d{2}\.\d{3} -|- DEBUG      -|- operator() -|- [0-9,a-f,x]+|| -|- Skipping read m150825_055401_42161_c100844482550000001823159012311525_s1_p0/2359/6103_8488, ALPHA/BETA MISMATCH (re)
+  >|> \d{8} \d{2}:\d{2}:\d{2}\.\d{3} -|- DEBUG      -|- operator() -|- [0-9,a-f,x]+|| -|- Skipping read m150825_055401_42161_c100844482550000001823159012311525_s1_p0/2436/33592_34506, ALPHA/BETA MISMATCH (re)
+  >|> \d{8} \d{2}:\d{2}:\d{2}\.\d{3} -|- DEBUG      -|- operator() -|- [0-9,a-f,x]+|| -|- Skipping read m150825_055401_42161_c100844482550000001823159012311525_s1_p0/3046/0_2116, ALPHA/BETA MISMATCH (re)
   $ grep -c ^@ test.fq
   100
   $ cat test.fq
@@ -42,10 +44,10 @@ Test ccs on 100 zmws from the lexogen-SIRV dataset
   AAGCAGTGGTATCAACGCAGAGTACTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTGGTAAAGTAATGCCTCTACGTCAGTCGGAACAATGTCGTCGTGTAACTCGACGATCTTAGGAGCTACTAAGGAGAGTCTGTAGGGAACCGACTGGGAAGGTGCCACAAGTTTTCTCTACTACTCCGTCTCCTAAAACAACTCCAAGTGGAAGGTCTGTGGGTTTTTGAGTATAGTCCGTATCTAGACCCAAAAGGGCTTACCTTCGCAATGAAAGAATATCCTTATAGACACGAACGGGAAGAACGGAATCGTTATTAATGACGTCGTACAACGTTTTCCAAGTTCTCCTCTTCCTCCGGATTCGGTTTGGGTTATCTCAACTAGTCCTTTCAAAGACATTGGAGAGTTTCACCTTCCCGTTAAGGTAGAACCCTCAGCATGTTTCACCCCCGGTGACCACTCAGTTACGGAATGTTTTTAAGCCACCTCAGCT [...]
   +
   ~~~~~~~~~~~~~~~~~~~~~~~~~(~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\~~~~~~~~~~~~~~~~~~~~~~x~~~~~~~~r~~~~~~~~~~~~~~~~~~~{~~~~~~~~~~~~~w~~~~~~~~~~~~~}~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|~~~~r~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ [...]
-  @m150825_055401_42161_c100844482550000001823159012311525_s1_p0/428/ccs np:i:16 rq:f:0.999632
+  @m150825_055401_42161_c100844482550000001823159012311525_s1_p0/428/ccs np:i:16 rq:f:0.999492
   AAGCAGTGGTATCAACGCAGAGTACGGGGCTTAAATGTCGGGAAATTGGGTTTGCGCCGCCTTCAGGGGCAGCGATGGGGGCGACAATTGTGGACCGTATGGACTCCATTATGCTGGGACTCCTCGGGTCAACCGCTCTAAAGCGAAGTTGTTGGACAAACAGTTATGCGTAACTGTAAAGCAAGGTGCCCAAAGTAGACTGAGCGACAGTCGAAACCAGCCCCAATGAACAAGACGCCATTGCAAAACGTCTATACGCTACGGTCAAAGACGCTTCCACACCACATGCTCTCATGTAGCCTACCTTACGAAGAAATCGCACAAGTCGGTCGCCCAGCGGTGGCATATGTCTTGCCTAACGTTTCTAGACCGATCAGCCTCACGAGTAGCCTGCTTGTGGTGTTTATAGTTTACGCTAGTCCAATCTGTATCGTGCCGCTTGGTATGGCTATTGTCGGCCTGGATGCAATTGTGCTCGCCATTTCAACTA [...]
   +
-  i~~d~~~b~~~[~}~~Vizw~~~~~M~~~~e~b~~~~~}F~~t~~v~D~~i~~~~zi~~s~r~~~H~~~~~~~~~~2~~~~~~~~f~r~o~~~~i~~~~~u~~u~~~~~~~~~~~b~~uuuz~~~U~~~~~~k~~~~~~s~~~~~~~~y~~m~~~~|r~~~~~~~~~~~~~x~~w~z~~~~~~~}~~uj~~j~~~z~~~\~~~~~~~~~~~~~X~~c~]~9~~~g~~~~~~~~~~~rj~~~~uv]~~~~~~~~~~~~~~~m~v~~~v~~~~~~~R~V~~akn~~w~~w^~~~~~~~~z~\~~~n~~~~~~~~~}~~~~~~~~b~~~~h~~~~Y~~~~~l~~y~~~~~~~~~~~ym~~~~~~}~~~}~~i}~~~~~p~x~~~~~~~~~~~t~~~~w~~nr~~~k~~~~~~z~~~v~~~~~uW~w~~~~~~~~~w~~{~~hW~^~~c~c~H~W}~~~~x~w~~r~~~~~p~~~j~|~~~~y~~M~~~m~~~~ [...]
+  i~~d~~~b~~~[~}~~Vizw~~~~~M~~~~e~b~~~~~}F~~t~~v~D~~i~~~~zi~~s~r~~~H~~~~~~~~~~2~~~~~~~~f~r~o~~~~i~~~~~u~~u~~~~~~~~~~~b~~uuuz~~~U~~~~~~k~~~~~~s~~~~~~~~y~~m~~~~|r~~~~~~~~~~~~~x~~w~z~~~~~~~}~~uj~~j~~~z~~~\~~~~~~~~~~~~~X~~c~]~9~~~g~~~~~~~~~~~rj~~~~uv]~~~~~~~~~~~~~~~m~v~~~v~~~~~~~R~V~~akn~~w~~w^~~~~~~~~z~\~~~n~~~~~~~~~}~~~~~~~~b~~~~h~~~~Y~~~~~l~~y~~~~~~~~~~~ym~~~~~~}~~~}~~i}~~~~~p~x~~~~~~~~~~~t~~~~w~~nr~~~k~~~~~~z~~~v~~~~~uW~w~~~~~~~~~w~~{~~hW~^~~c~c~H~W}~~~~x~w~~r~~~~~p~~~j~|~~~~y~~M~~~m~~~~ [...]
   @m150825_055401_42161_c100844482550000001823159012311525_s1_p0/429/ccs np:i:10 rq:f:0.9993
   AAGCAGTGGTATCAACGCAGAGTACGGGGTTGGTGTATTTATCCGCTACGTGGTGGATGAACATGGATGCGAACGACATTTCGAAATATACGCAATGATATCCAACCCTACCGAAACAGCAATAATTGTAGAAGGTAGCATATCATGCCGAGAGTTTACTACGTTGTAGCGAGTTTAGTTGAAATAGTTTGTGATGTGTAAACTAAAACATACCAAATGGTAAAACTTGTCACCCCCATTTACATTGCGACAGACACAGTTATGGAGTGGATGGAAGTGTGTTCGACTGTCAAGACCCTTCTATAATAGTCGAACCAGTACGGTAAGTGGGCAACATGCCCATATAAGTCGAAGCATTTCAAATGGTTCATCCAGTAGACGACGATGTCCTAGACAGTCATGTCTCTTCCCCATTTGAAGTCATGTAGTGGTTGTCTACTTTTTCATTGAAGACGTCCACCTCAACGCTATGAACGTTAGTTGAGACAAT [...]
   +
@@ -53,15 +55,15 @@ Test ccs on 100 zmws from the lexogen-SIRV dataset
   @m150825_055401_42161_c100844482550000001823159012311525_s1_p0/456/ccs np:i:17 rq:f:0.999773
   AAGCAGTGGTATCAACGCAGAGTACTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTGGTAACTATCTTAAAAACTTCTAAACTGCTGCTTAGTAGGCAATAATCGACTAAATCCATAATTTTTGCGACCAAACGCAAACTTCAAGAATTTTAGACTTTGAAGACCGCATCGGCAAACCCCATTTTAGATACCACTTTAATTTCCAGTTAATCTACGACGCAAGTCACTTCTTTGTCGTTAAGTTTTATTTAACTGTCGCAAACAACAAAATGGTTTTCTAAATTTACTAAAACCAGGACGCACCTAACTTTCTAAACAAGCACAAGTTTAGCTTCTTCGTAAACGTCACCGCGAACTTTGACGCAAGAATTTTCCATGACCATTTCTGGTTGGTTAGCCGAATTTGGCAGTTCATGTTTTTCCACATAGCCATTGACTCCCACGAATAGGTCTCTTTCTTCTTGTTCCATGCGAATGTAAACGATTAGGCG [...]
   +
-  ~~~~~~~~~~~~~~~~~~~~~~~~~&~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~_~~~~~~~~~e~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~D~~~~~~~~~~\~~~~~y~~~~~~~~~~~S~~~~~~~~~~~~~~~r~~~~~~~~~~~~i~~~~m~~~~~~~~~~~~\~~~~~~~{~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{~~~~~~~~~~~~~~~y~~~~~~`~~~~~~~~~~~~~~j~~~~~~~~~~~~~~~~W~~~~~~~~~~~~~~~~~~~~~~~~~~~~~h~~~~~~~~~~~~~~~~}~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~f~~~~h~~~~~~~~~~~~~~~~|~~~~~~~~~|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|~~~~ [...]
+  ~~~~~~~~~~~~~~~~~~~~~~~~~&~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~_~~~~~~~~~e~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~D~~~~~~~~~~\~~~~~y~~~~~~~~~~~S~~~~~~~~~~~~~~~r~~~~~~~~~~~~i~~~~m~~~~~~~~~~~~\~~~~~~~{~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{~~~~~~~~~~~~~~~y~~~~~~`~~~~~~~~~~~~~~j~~~~~~~~~~~~~~~~W~~~~~~~~~~~~~~~~~~~~~~~~~~~~~h~~~~~~~~~~~~~~~~}~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~f~~~~h~~~~~~~~~~~~~~~~|~~~~~~~~~|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|~~~~ [...]
   @m150825_055401_42161_c100844482550000001823159012311525_s1_p0/578/ccs np:i:10 rq:f:0.999474
   AAGCAGTGGTATCAACGCAGAGTACGGGGCATACTGCAAGACTTGTAGGCCCATGAATTACCCGCTTAGGCAATGGGTAGACCTTTCCTTGCCGCGTGGAACAAACCGCCATGAGTGTTTTACGTTTACGGTCGGCGACCGGAGTCACAGCGCGACCAACGGGGCCAGGCAAAGGCCCATAGGCTTTTCCATCGGCACGCGACCGATTCCATCAAGTGTTAGGTGCAATCCCCATTCGGGACGGACACGCGAGAGCGTTAGTCGGCGCGTGCGCGGGACTATTTAGCGAAGGTCGCCGATCGTTTGCCCGTAAAACTAACTGGCAAAAGCCTAAGTGCTGTTTCGGGTGCAATGGTATAACTTCCCACATTTAGCCGAATAGCGCCAACAGCGTTATTATTTGGAACCAAGCAGTGGGCGATGTCAGCGACAATTCCACTTTGGTAGAGGTCGTTCTTTTGTAGAAAACAATCTAACATAACTATGACAC [...]
   +
   _~~~~~~l~~~w~_~flU~~~_~~n9~~~~~ifn~{tM~|~ry~~~~r~H~~~~v~~a~~E~~~~d~[m~~e~~^~~~~~~Z~V~~X~j~nm~~q~~l~B~~V~~[~~`~~~~~z~{R~~~~s~h~~b~^~~~`~~~~[~d~~~~c~|g]zP|yQQ~y~\>~~~Y~~X~~l~~h~Y~~~~~V~~Z~~~G~~~~k~l~k}p~~e~~~B~,}j~k~~j~~J~~Y~[nRj~~N~~~~Z~|Q~~~~U~~-~~~Udizxh~g~~~~~~R~~~jU~|~~~Y~~~Y~~g~~~j}{x~g~~~VY~~~}nUj~~}M~~l~W~~~x~q~~~H~}?~~~qg~~q~~~l~~}Yy~~G~~eSkk~~S~?~{m~~~~I~~~}VU~~jeM~~~~k~|njT~j~~l{ehZ~~n~~T~p@~R~f~~~~zTm~G~~~}~~~~s~~~~~or~~~k~~U\~~j~~~~~f~~n~{~~-~~~~~~{P~~~~u~~~~a~~~~m~~~~~~~|~k [...]
-  @m150825_055401_42161_c100844482550000001823159012311525_s1_p0/603/ccs np:i:12 rq:f:0.999894
+  @m150825_055401_42161_c100844482550000001823159012311525_s1_p0/603/ccs np:i:12 rq:f:0.999868
   AAGCAGTGGTATCAACGCAGAGTACTTTTTTTTTTTTTTTTTTTTTTTTTTTGTTTAACGCAAATGCCACCAATACATATGTGTCCTCTTAATGTTTGCATGCTTAATCTTTTGATTATTATTTCCTCTTTCTTTCTATTACTAACTTTGTAACTCTCGCTAACCGAATCAACATAAATACGTCAACGAATCAAATGTTGATCTCAAATATCTGTGTCCATGAAATTTCGGATCGTAATCTGCTCTACTTTTGTTATTACAACAAGAACTTCGACTAAAGAACGGACTATCTTGTCTAATAATAATGGCACTAAGTGCATACTTTCTCGACTACATTGACGACTCAAAATAAGAAAGGGAGTTTTTATACATTGACCTAACTCACTACTACGCCTTGGTTACCTTTGAACCTTTCGTTGTCAAAGTTCGTACGATGGTAAGTGCTTTCTACTCCTACCGCTATTTGGTTGAGAACCTGTTAAATGAGATG [...]
   +
-  ~~~~~~~~~~~~~\~~~~k~~~~~~'~~~~~~~~~~~~~~~~~~~~~~~~~~~m~~a~~~~i~~~~r~~{~~~~~~~~~~~~~~h~~~~~~~~~j~~~~~~~~~~|~~~d~~~~~~~~~~~~~~~~~~y~~~a~~~~x~~~~~e~~e~~~~~~~~~~~~y~~~g~~z~~~d~~~~}~~~~~~~~~~~~~~~~o~~~z~~~~~~~~y~~~~~~~~~~~r~~~~|~~m~~~u~~~~~~~~~~~~~~~~~~V~~~~~~~~~~~\~~~~~~~~s~x~~~~m~~~~~~~~~~~~~~~~v~~~~~~m~~~~~\~v~~~w~~~~~~~~ve~~~~~~~~~rs~~~~~~~~~~~T~~~~~~~u~~k~~~~i~~~~~~~}~~~~~v~~r~~~~~~~~~~~~{~~~~~~~~~~~`~~~w~~~J~~~~~~z~~m~~~~~~~~x~~{~`~~x~~~~~Q~~~~~~~p~~yb~~z~~Y~~u~c~~~~~~~~~~{~w~~~~~~~~q [...]
+  ~~~~~~~~~~~~~\~~~~k~~~~~~&~~~~~~~~~~~~~~~~~~~~~~~~~~~m~~a~~~~i~~~~r~~{~~~~~~~~~~~~~~h~~~~~~~~~j~~~~~~~~~~|~~~d~~~~~~~~~~~~~~~~~~y~~~a~~~~x~~~~~e~~e~~~~~~~~~~~~y~~~g~~z~~~d~~~~}~~~~~~~~~~~~~~~~o~~~z~~~~~~~~y~~~~~~~~~~~r~~~~|~~m~~~u~~~~~~~~~~~~~~~~~~V~~~~~~~~~~~\~~~~~~~~s~x~~~~m~~~~~~~~~~~~~~~~v~~~~~~m~~~~~\~v~~~w~~~~~~~~ve~~~~~~~~~rs~~~~~~~~~~~T~~~~~~~u~~k~~~~i~~~~~~~}~~~~~v~~r~~~~~~~~~~~~{~~~~~~~~~~~`~~~w~~~J~~~~~~z~~m~~~~~~~~x~~{~`~~x~~~~~Q~~~~~~~p~~yb~~z~~Y~~u~c~~~~~~~~~~{~w~~~~~~~~q [...]
   @m150825_055401_42161_c100844482550000001823159012311525_s1_p0/624/ccs np:i:14 rq:f:0.999806
   TGGTATCAACGCAGAGTACGGGGCTTAAATGTCGGGAAATTGGGTTTGCGCCGCCTTCAGGGGCAGCGATGGGGGCGACAATTGTGGACCGTATGGACTCCATTATGCTGGGACTCCTCGGGTCAACCGCTCTAAAGCGAAGTTGTTGGACAAACAGTTATGCGTAACTGTAAAGCAAGGTGCCCAAAGTAGACTGAGCGACAGTCGAAACCAGCCCCAATGAACAAGACGCCATTGCAAAACGTCTATACGCTACGGTCAAAGACGCTTCCACACCACATGCTCTCATGTAGCCTACCTTACGAAGAAATCGCACAAGTCGGTCGCCCAGCGGTGGCATATGTCTTGCCTAACGTTTCTAGACCGATCAGCCTCACGAGTAGCCTGCTTGTGGTGTTTATAGTTTACGCTAGTCCAATCTGTATCGTGCCGCTTGGTATGGCTATTGTCGGCCTGGATGCAATTGTGCTCGCCATTTCAACTAGTGCAG [...]
   +
@@ -121,11 +123,11 @@ Test ccs on 100 zmws from the lexogen-SIRV dataset
   @m150825_055401_42161_c100844482550000001823159012311525_s1_p0/1216/ccs np:i:23 rq:f:0.999443
   AAGCAGTGGTATCAACGCAGAGTACGGGGCGATGGGGGCGACAATTGTGGACCGTATGGACTCCATTATGCTGGGACTCCTCGGGTCAACCGCTCTAAAGCGAAGTTGTTGGACAAACAGTTATGCGTAACTGTAAAGCAAGGTGCCCAAAGTAGACTGAGCGACAGTCGAAACCAGCCCCAATGAACAAGACGCCATTGCAAAACGTCTATACGCTACGGTCAAAGACGCTTCCACACCACATGCTCTCATGTAGCCTACCTTACGAAGAAATCGCACAAGTCGGTCGCCCAGCGGTGGCATATGTCTTGCCTAACGTTTCTAGACCGATCAGCCTCACGAGTAGCCTGCTTGTGGTGTTTATAGTTTACGCTAGTCCAATCTGTATCGTGCCGCTTGGTATGGCTATTGTCGGCCTGGATGCAATTGTGCTCGCCATTTCAACTAGTGCAGTTGCTAAAGTGCCAACTAAGGTTCGTCTTGAAGCAAT [...]
   +
-  ~~~~~~~~~~~~~[~~~~~~~~~~~>~~~~~~~.~~~~~~~~~~~~x~z~~~~~~~~h~~l~l~~~~~~~~~x~~~~~~~~~C~~~~~~~~~~~~~U~~~~~l~~~~~~~~~~~p~~~~~~~~~~~~~~~~~~~~~~t~~~c~~j_~~X~~~~~~~~~~~y~~~~~~~~~v~~m~~~L~~~~~~~~~~~~~~~~|~~~~~~u~~~~~~~~~~~~~~~~~{~~_~~~x~~~~~~t~~~~~~~y~~~~~~~~~~~~~~a~~~l~~~~~~q~~~~~~~~~~~~~~~~n~~~~[~~~~4x~~w~~~~~~~~~~~~I~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~y~~w~~~~~O~~~~~~~~~~x~~~~~~~~~~\~~~~~~~~~~~~~~n~y~~~~~~~~i~~~~|~~~~n~g~~]~~~~~~~~~~~~~~~~n~~m~~~j~~~~~~~~~~~~~~~~~~~~~I~t~~~~~~~~~~~~~~~~~~~~~~~ [...]
-  @m150825_055401_42161_c100844482550000001823159012311525_s1_p0/1226/ccs np:i:11 rq:f:0.998883
-  AACGTGGTATCAACGCAGAGTACTTTTTTTTTTTTTTTTTTTTTTTTTTTTCCAATCTGGCAGATTAGATACAGCTATAGAGCGAATCACACGTCTCCTTAGATAACTGGCAAATCTTCACAATTACGCAAGACCATAGAATAGTCCTAAGCAACATTTGCCGCATCGACCAAATCATGGCTTTGCACTCCAACTTTGCCTGAATCGTGTCAGACTATAGCGGGACGTTCGACCATACTACTCATTCGATTACGCATTCACCTGACGAGAATAGCCATTCTTCCTGAACATACGTTAGAAGTAGTTGGTTAATGCTTGTCTACATTTGAGTGCGAAGCCACTAGGTTTGCACTGTTGACCACCAGCACGCAATCGCAAGATACGCAGTAATGCTAAACCATACTTATTTGACTTTGATGTTCTATCACTGGGTTAATGCCTGCTGCTACCTGACTTTTAGTCGCGAGCACAACGCTTCTTGGCTACACAT [...]
+  ~~~~~~~~~~~~~\~~~~~~~~~~~>~~~~~~~.~~~~~~~~~~~~x~z~~~~~~~~h~~l~l~~~~~~~~~x~~~~~~~~~C~~~~~~~~~~~~~U~~~~~l~~~~~~~~~~~p~~~~~~~~~~~~~~~~~~~~~~t~~~c~~j_~~X~~~~~~~~~~~y~~~~~~~~~v~~m~~~L~~~~~~~~~~~~~~~~|~~~~~~u~~~~~~~~~~~~~~~~~{~~_~~~x~~~~~~t~~~~~~~y~~~~~~~~~~~~~~a~~~l~~~~~~q~~~~~~~~~~~~~~~~n~~~~[~~~~4x~~w~~~~~~~~~~~~I~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~y~~w~~~~~O~~~~~~~~~~x~~~~~~~~~~\~~~~~~~~~~~~~~n~y~~~~~~~~i~~~~|~~~~n~g~~]~~~~~~~~~~~~~~~~n~~m~~~j~~~~~~~~~~~~~~~~~~~~~I~t~~~~~~~~~~~~~~~~~~~~~~~ [...]
+  @m150825_055401_42161_c100844482550000001823159012311525_s1_p0/1226/ccs np:i:11 rq:f:0.998655
+  AAGCAGTGGTATCAACGCAGAGTACTTTTTTTTTTTTTTTTTTTTTTTTTTTTCCAATCTGGCAGATTAGATACAGCTATAGAGCGAATCACACGTCTCCTTAGATAACTGGCAAATCTTCACAATTACGCAAGACCATAGAATAGTCCTAAGCAACATTTGCCGCATCGACCAAATCATGGCTTTGCACTCCAACTTTGCCTGAATCGTGTCAGACTATAGCGGGACGTTCGACCATACTACTCATTCGATTACGCATTCACCTGACGAGAATAGCCATTCTTCCTGAACATACGTTAGAAGTAGTTGGTTAATGCTTGTCTACATTTGAGTGCGAAGCCACTAGGTTTGCACTGTTGACCACCAGCACGCAATCGCAAGATACGCAGTAATGCTAAACCATACTTATTTGACTTTGATGTTCTATCACTGGGTTAATGCCTGCTGCTACCTGACTTTTAGTCGCGAGCACAACGCTTCTTGGCTACAC [...]
   +
-  `:-)Td~~~~~D~n~{~~n~x}x$~~~~~~~~~~~~~~~~~~~~~~~~~pF;jq~}zpi~f~~km~il~T~q~rWXFz~t~~~t_~~d`({ngey~d~T~nm`zT~~~\~ua~~gJk~~~~.GB~~ogm_~t~Pg.Xtsd{~~g~U~o^~~~R~uk;F~zl~ppxwXWnU~Z~~~io~[~db~~rM{N~*~^~lG~|o]~~MJ~~Ko~t~J~w~ez~ag^jE~~~|~Y~~s~M~~gSn~{~tm~n~~~~e~v^o|qczr~_~~~~[q~z`~~~ia~~n~~S~L~l~t~m~~~soX~l~i~~~p~>~_~J~Z~~~j~~v~~~[~~X~uG~c|~kJVsrV}~glg6L:glVVzf~NP~~zU~~Rg~~{r}D]h~q\esb~w|j~gVMll~u~~]etCqtU~}~@|H~~I~~~~z^~~`\xgL~wt}~~~p~X~|b~f~~~l~qr~~~~~~i~~_~~H~~~~~[v~~~~~x|~e~s~vm~pO~S~m~`rrns~ [...]
+  2`$Z(8[Q~~~~~3~h~{~~i~r~^%~~~~~~~~~~~~~~~~~~~~~~~~~oE;jq~}zpi~f~~km~il~T~q~rWXFz~t~~~t_~~d`({ngey~d~T~nm`zT~~~\~ua~~gJk~~~~.GB~~ogm_~t~Pg.Xtsd{~~g~U~o^~~~R~uk;F~zl~ppxwXWnU~Z~~~io~[~db~~rM{N~*~^~lG~|o]~~MJ~~Ko~t~J~w~ez~ag^jE~~~|~Y~~s~M~~gSn~{~tm~n~~~~e~v^o|qczr~_~~~~[q~z`~~~ia~~n~~S~L~l~t~m~~~soX~l~i~~~p~>~_~J~Z~~~j~~v~~~[~~X~uG~c|~kJVsrV}~glg6L:glVVzf~NP~~zU~~Rg~~{r}D]h~q\esb~w|j~gVMll~u~~]etCqtU~}~@|H~~I~~~~z^~~`\xgL~wt}~~~p~X~|b~f~~~l~qr~~~~~~i~~_~~H~~~~~[v~~~~~x|~e~s~vm~pO~S~m~`rrn [...]
   @m150825_055401_42161_c100844482550000001823159012311525_s1_p0/1234/ccs np:i:10 rq:f:0.999644
   AAGCAGTGGTATCAACGCAGAGTACTTTTTTTTTTTTTTTTTTTTTTTTTTGACGCAAATGCCACCAATACATATGTGTCCTCTTAATGTTTGCATGCTTAATCTTTTGATTATTATTTCCTCTTTCTTTCTATTACTAACTTTGTAACTCTCGCTAACCGAATCAACATAAATACGTCAACGAATCAAATGTTGATCTCAAATATCTGTGTCCATGAAATTTCGGATCGTAATCTGCTCTACTTTTGTTATTACAACAAGAACTTCGACTAAAGAACGGACTATCTTGTCTAATAATAATGGCACTAAGTGCATACTTTCTCGACTACATCGACGACTCAAAATAAGAAAGGGAGTTTTTATACATTGACCTAACTCACTACTACGCCTTGGTTACCTTTGAACCTTTCGTTGTCAAAGTTCGTACGATGGTAAGTGCTTTCTACTCCTACCGCTATTTGGTTGAGAACCTGTTAAATGAGATGGTTCG [...]
   +
@@ -133,7 +135,7 @@ Test ccs on 100 zmws from the lexogen-SIRV dataset
   @m150825_055401_42161_c100844482550000001823159012311525_s1_p0/1241/ccs np:i:17 rq:f:0.999516
   AAGCAGTGGTATCAACGCAGAGTACGGGACCGTGAGCCCCCACTTCGATCTGTAAATGGTAATCCCTTGTAAAACCTCATCTCCAAAAACAGTATACGCAGGTACAGCTGATGTGATCCTCTCTACTAGTCTTCTCTGAGGAACCATGAGATGGATAGTGGGGGACCTGAGTCATACTAGGGTAACTTCTTATATGGTGACATCACTCCTACCGTAGAGGGGGACGGTAGTCTGTGGGAAATCTACCCTAGTGAAGAAAGGTAAGAGAATGTCTGAACATTACCTGTAGACGAAGGTACTCTCAGAACAACTACTCTCACATACGGAAAGGTTTGGGTCCTTGGTCAAAGGACTTTACTGACTCTGCAGACGATGAATATCTGAACCAACACTACTATCAAAGATGTTCGACTAGACCTCTCGTGGTAGGGCCTGGAAGTCAAAAGACTTCTCTATGGGTACTAGGTAGGTAGTTAGAGTACGGTCCCTG [...]
   +
-  y~~~o~r|~~~~~w~u~_~~~~~~~L~~~k~~~~~~V~~~~~~~~~r~~~~~~}~~~~~~~~zn~~~~~~k~~~~~~~~~~~~~:~~~~~~~~~~~~~~zM~~~~~~~u~x~~|~~~}~~~~~~~~~~~~~p~~~~~~~~~x~q~~~~~~~~U~~~~s~E~~~~~v~~k~~~~~~~~~~y~~~~~~\~~|~~~~~~~~~~~~~~~}~X~~~~~~~~~~,~~~~~~~~~~~~~~~~n~~r~~~~~~]~~~~~~~|~~h~~~~~n~~x~~~~~~~~~f~y~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~v~~~~~~~~m~q~~~~t~~f~~~z~~~~~~~j~~q~~~x~~~z~~~~~~~||~~~ja~~~~~~~~~~~~~VwK~~~~_~~~k~~h~~~~~~j~~~~~~~~~p~~~~~~~|~~~h~~~~}V~~~~~w@~~~~~~~~~~~~~~X~~~~~~~~~~s~~~~~~~~j~~~~~~~~j~~~4 [...]
+  k~u~p~r|~~~~~w~u~_~~~~~~~L~~~k~~~~~~V~~~~~~~~~r~~~~~~}~~~~~~~~zn~~~~~~k~~~~~~~~~~~~~:~~~~~~~~~~~~~~zM~~~~~~~u~x~~|~~~}~~~~~~~~~~~~~p~~~~~~~~~x~q~~~~~~~~U~~~~s~E~~~~~v~~k~~~~~~~~~~y~~~~~~\~~|~~~~~~~~~~~~~~~}~X~~~~~~~~~~,~~~~~~~~~~~~~~~~n~~r~~~~~~]~~~~~~~|~~h~~~~~n~~x~~~~~~~~~f~y~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~v~~~~~~~~w~k~~~~c~~f~~~z~~~~~~~j~~q~~~x~~~z~~~~~~~||~~~ja~~~~~~~~~~~~~VwK~~~~_~~~k~~h~~~~~~j~~~~~~~~~p~~~~~~~|~~~h~~~~}V~~~~~w@~~~~~~~~~~~~~~X~~~~~~~~~~s~~~~~~~~j~~~~~~~~j~~~4 [...]
   @m150825_055401_42161_c100844482550000001823159012311525_s1_p0/1250/ccs np:i:10 rq:f:0.999746
   AAGCAGTGGTATCAACGCAGAGTACGGGGTGGAGAAGCAAATACTTGGATACCGAATTTAGAGGCCATAGGTTATGGAAAAAGTCAGTGGATTAGATAGTAAAAGTCGAAATCTTTATATTCGGTTCGATGTACTACGTTATTCGCGACTGTTCTGTCATGATAGTTTTTTATATAGTCCTAATAAAAGGAGTTTTTAAAGTAAATGACATTTCAGTAGTAAAAGTTTAAGAGCTTTTTGTTCTGCCAGACGTTCTGATAGTTGAGGAAAACGTGTGGTCAGCTAATAACTTGTGGTATGGAGTAAACGAACATCCAACAGTATGTACAATCGTATGAGAAAGGACAAATCTGAAGACGATATTAGAGGGAGTCCAACAAGTTTGTGATGATTCACGTAAGGAAATCGAAATGTAAGATTATTCGTCAATGGAGGTATAAGACAACACACCAAGTAATTATACGCGACGAGTTTTCATGTTGACGATCCC [...]
   +
@@ -153,7 +155,7 @@ Test ccs on 100 zmws from the lexogen-SIRV dataset
   @m150825_055401_42161_c100844482550000001823159012311525_s1_p0/1426/ccs np:i:13 rq:f:0.999505
   AAGCAGTGGTATCAACGCAGAGTACGGGGCGATGGGGGCGACAATTGTGGACCGTATGGACTCCATTATGCTGGGACTCCTCGGGTCAACCGCTCTAAAGCGAAGTTGTTGGACAAACAGTTATGCGTAACTGTAAAGCAAGGTGCCCAAAGTAGACTGAGCGACAGTCGAAACCAGCCCCAATGAACAAGACGCCATTGCAAAACGTCTATTACGCTACGGTCAAAGACGCTTCCACACCACATGCTCTCATGTAGCCTACCTTACGAAGAAATCGCACAAGTCGGTCGCCCAGCGGTGGCATATGTCTTGCCTAACGTTTCTAGACCGATCAGCCTCACGAGTAGCCTGCTTGTGGTGTTTATAGTTTACGCTAGTCCAATCTGTATCGTGCCGCTTGGTATGGCTATTGTCGGCCTGGATGCAATTGTGCTCGCCATTTCAACTAGTGCAGTTGCTAAAGTGCCAACTAAGGTTCGTCTTGAAGCAA [...]
   +
-  |~~O{~hf~~~~~Z~~~N~|~x~~~5~~iil~~K~~~~~~~~v~~~{~b~~e~~~~~T~~{Q,~r~~~~_}~l~~~~~h~~~^~~~~~~w~~~~~~o~~~~~~~~U~~~~t~~~@~~~~~k~~~~~~~u~~hk~l~~~~t~x~~~X~~s~~~~~~~~n{t~~~~~~~~~~o~~[~~~I~~~{~~~|~~~~\~~~g~~~~~~r~~~~~~~~~,~~~~~~fyB~~~r~~~~~~~V~W~a~AH~~~~~~~Yf~~~o~~~lt~~~t~~~~~~c~~v~~~~q~~~~~~~~W~~~qd~~~~~{~~~~~~~~N}k~~~~B~~w~j~^~~~~~}~~~~~~~~|z~~~~~~~L~~}~~~~~~~|~r~~~w~~~~~b~~~~z~~~~~~R~~~~~~~~~~~~~~z~~~{~:~~~~r~~\~~~~~~o~~~~j~~~~~~~~~u~~y~~vv~~s~~~y~~~~~~~~~~t~~Yz~~~~~~t~~~~}~~[~~~s~~]v~~~~~~~~ [...]
+  |~~O{~hf~~~~~Z~~~N~|~x~~~5~~~fp~~K~~~~~~~~v~~~{~b~~e~~~~~T~~{Q,~r~~~~_}~l~~~~~h~~~^~~~~~~w~~~~~~o~~~~~~~~U~~~~t~~~@~~~~~k~~~~~~~u~~hk~l~~~~t~x~~~X~~s~~~~~~~~n{t~~~~~~~~~~o~~[~~~I~~~{~~~|~~~~\~~~g~~~~~~r~~~~~~~~~,~~~~~~fyB~~~r~~~~~~~V~W~a~AH~~~~~~~Yf~~~o~~~lt~~~t~~~~~~c~~v~~~~q~~~~~~~~W~~~qd~~~~~{~~~~~~~~N}k~~~~B~~w~j~^~~~~~}~~~~~~~~|z~~~~~~~L~~}~~~~~~~|~r~~~w~~~~~b~~~~z~~~~~~R~~~~~~~~~~~~~~z~~~{~:~~~~r~~\~~~~~~o~~~~j~~~~~~~~~u~~y~~vv~~s~~~y~~~~~~~~~~t~~Yz~~~~~~t~~~~}~~[~~~s~~]v~~~~~~~~ [...]
   @m150825_055401_42161_c100844482550000001823159012311525_s1_p0/1446/ccs np:i:13 rq:f:0.999412
   AAGCAGTGGTATCAACGCAGAGTACGGGGCTTGTCCGCGAGTGTCAACCGGGTTTTACAAAGGAGAACTTCCAACATCAGTGTATGGGATGTTTCAAACACCCCCAGAGACGGAGACAATAGTGTGGTCACGTACATTTAGGAAGATAAAAATAACAACAACAGAAGGTGTGAGGCGCAAGGTACATGCTCTTACCCCACTCTCAGCACGTAGGGAGCGGAGTGTGGAAGACCAACAAGCCCGTCGCCTCTACCAAATACAGTGTTTAGGTGTGTCGGAGGGCAGAAACCAACGAAAGAAAGGAAACGATCAACACTTATATAGTGTCCTGTCGGGCCCAAATCCTAAGAGACCTTAGGTTTACCACATTAGTACTAAACAGCCTGTTGTATACCGTGAGCCCCCACTTCGATCTGTAAATGGTAATCCCTTGTAAAACCTCATCTCCAAAAACAGTATACGCAGGTACAGCTGATGTGATCCTCTCTAC [...]
   +
@@ -205,15 +207,15 @@ Test ccs on 100 zmws from the lexogen-SIRV dataset
   @m150825_055401_42161_c100844482550000001823159012311525_s1_p0/1800/ccs np:i:16 rq:f:0.999483
   AAGCAGTGGTATCAACGCAGAGTACGGGGGTTGGTGTATTTATCCGCTACGTGGTGGATGAACATGGATGCGAACGACATTTCGAAATATACGCAATGATATCCAACCCTACCGAAACAGCAATAATTGTAGAAGGTAGCATATCATGCCGAGAGTTTACTACGTTGTAGCGAGTTTAGTTGAAATAGTTTGTGATGTGTAAACTAAAACATACCAAATGGTAAAACTTGTCACCCCCCATTTACATTGCGACAGACACAGTTATGGAGTGGATGGAAGTGTGTTCGACTGTCAAGACCCTTCTATAATAGTCGAACCAGTACGGTAAGTGGGCAACATGCCCATATAAGTCGAAGCATTTCAAATGGTTCATCCAGTAGACGACGATGTCCTAGACAGTCATGTCTCTTCCCCATTTGAAGTCATGTAGTGGTTGTCTACTTTTTCATTGAAGACGTCCACCTCAACGCTATGAACGTTAGTTGAGACA [...]
   +
-  ~~~~~~~W~~~~~|~~~qy~~o~~~.~~~z`~?~jm~ug~~~u^~`b~~~f~F~~X~~~~}~}~~r~~z~~~p~~~s{~b~~i~R~~~~}~~~~~~~{~~~~D~~~]~~~~I~~w~~~~~|A~~~~q~S~~y~~n~~~eh~~~~~~~~o~~~~~~n~~~~~~~~k~~~~g~v~~n~~~yc~~{~~~~~J~~~~~z~~~|~a~~w~H~~~{~~~K~c~~~k~~R~~~z~~~~~~-~~~~~~n~~~Z~~~txx~~~~~b~d~~Z~~~S~~fp_~~~a~x~{~\~lv~U<~~~~~zZ~~~@~~Y~~~~~~~~~|~z~~~q~~g~~~W~~}~~~=~~~~~j~~~N~~~~}B\~~~~vy~c~~;~~hY~~~l~~~|~~\~sx~z~~~a~d~~~~~c~~~~~e~~~m~~|~~~~~~N~~~~w~~c~~~~~~~~~~x~`~~~~~~~~vS~~~~v~~~df~m~dA~X~~C~~~k~~z~~~~~E~rrx~~~~~~~y~f~ [...]
+  ~~~~~u~[~~~~~t~~~qy~~o~~~.~~~z`~?~jm~ug~~~u^~`b~~~f~F~~X~~~~}~}~~r~~z~~~p~~~s{~b~~i~R~~~~}~~~~~~~{~~~~D~~~]~~~~I~~w~~~~~|A~~~~q~S~~y~~n~~~eh~~~~~~~~o~~~~~~n~~~~~~~~k~~~~g~v~~n~~~yc~~{~~~~~J~~~~~z~~~|~a~~w~H~~~{~~~K~c~~~k~~R~~~z~~~~~~-~~~~~~n~~~Z~~~txx~~~~~b~d~~Z~~~S~~fp_~~~a~x~{~\~lv~U<~~~~~zZ~~~@~~Y~~~~~~~~~|~z~~~q~~g~~~W~~}~~~=~~~~~j~~~N~~~~}B\~~~~vy~c~~;~~hY~~~l~~~|~~\~sx~z~~~a~d~~~~~c~~~~~e~~~m~~|~~~~~~N~~~~w~~c~~~~~~~~~~x~`~~~~~~~~vS~~~~v~~~df~m~dA~X~~C~~~k~~z~~~~~E~rrx~~~~~~~y~f~ [...]
   @m150825_055401_42161_c100844482550000001823159012311525_s1_p0/1860/ccs np:i:28 rq:f:0.999702
   AAGCAGTGGTATCAACGCAGAGTACGGGGGGGGCAGCGATGGGGGCGACAATTGTGGACCGTATGGACTCCATTATGCTGGGACTCCTCGGGTCAACCGCTCTAAAGCGAAGTTGTTGGACAAACAGTTATGCGTAACTGTAAAGCAAGGTGCCCAAAGTAGACTGAGCGACAGTCGAAACCAGCCCCAATGAACAAGACGCCATTGCAAAACGTCTATACGCTACGGTCAAAGACGCTTCCACACCACATGGACTATGGGACTAGTCGTCTTCGGTCTTACAAATGTTGCAATGCCCTGTGAGCTACTTATGAAACATGAATGGTCGGTCTTGTGGTCGCTTTTGTCGAAATCACCGAAGTGCGTATAATTGATGAACGAGTCGAAGTCGAAGTTGTTCAACAAGAGAGTTAGGTAGTGCCGCTTGAAAAAGTAATAGTGCAAATAAGAAAAAGAAGCGAAACGGCATTCGTTTAACAAAACGTCACAT [...]
   +
   ~~~~~~~~~~~~~~~~~~~~~~~~~S~~~~~~~~~~~~~~s~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{~~~~~~b~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ [...]
-  @m150825_055401_42161_c100844482550000001823159012311525_s1_p0/1902/ccs np:i:9 rq:f:0.9991
+  @m150825_055401_42161_c100844482550000001823159012311525_s1_p0/1902/ccs np:i:9 rq:f:0.999074
   AAGCAGTGGTATCAACGCAGAGTACGGGGTAAGTTTATTGATAGGTAAAAAATCAAGAGAGGGTAATAAAGAAGAAAGAATAATCAAAAGATAGAGCATGCAAACATTACATGGTAGTATTGTTATAGGCGGTATATTGGTAAATGACGATCCTTGACTTAGTTTTTTACATCGAACGGTTGCAAATCCTAGCATACTTGATATTAATAGTAGATACTGAAATATATCTGAGTATATCAAGGGAAATCGAGATGTAACAATAAGTCGAGGAAATTAAGGTCAATTTAGTGCTTATCATAGAAATAACTACTTAAGCCCTTAACGAACTAACTCAAATTAACGAGGTAGAGGTTATTCTGAATTGTACGAACGTAGTCGAAGTTTGTTACCAAGGGTAAAGCCAAAACAAAACGATTTGACAAGAGAATCTATTCCATGTAGTAGTGCGTTTGTACGACGTTCTATTCGATGTAAATCATTAGGACGAGGG [...]
   +
-  ~~l~~~}1~vaVYd~~~k~e~gsdi*~~~zz~~4~~~g~~zs~j~~9~~~~~~~e~~{t~[~~~UoBN~~ee~iX~~ja~\b~z~/~~~yuw~~~~~w~Wj]~~~~u~~~~~g~|~~~~[~}d~^~~W~gE~_~~~M~]~~\~~{5~~u~~`~~~~~~k~~o@~~~~~v~~~~~}~th~]~pqF~~nr~~~r`~~xon~~~s~I~q~~~~~~r~n~~~~e~~~~~~~l~nRnm~~~~~_~T~~d~~~~>wo~}~~m~~~~lm~~~r~~H~J~~X~e~r~p~~~q~~~~~~~~~~~~~~~~`~~~Z~~~~qn~Y~~W~~~~9~~t~~r~Z~~~~P~~p~n~~~~G~~~t~]~Q~wf~~~~^~~~p~~~~_~~~~~q~Xii~tY~~cU~~m~t~D~~Zi~~~n~S~~~~R~~~~lj?~~~~~}~r|~Q~~~~~q~n~~~w~kakeo~~~~P~~~}f~Y}~~~~~~~e~~~~~~~d~~~~~u~~q~~~~~R~| [...]
+  ~~k~~~}1~ubWYd~~~k~c~greh(~~~xx~~J~~~x~}yr~h~~4~~~~~~~y~|bn~V~~~n~BI~~ec~i\~~Tb~~t~y~B~~~~s`~~~~~x~Wi_~~~~u~~~~~g~|~~~~[~}d~^~~W~gE~_~~~M~]~~\~~{5~~u~~`~~~~~~k~~o@~~~~~v~~~~~}~th~]~pqF~~nr~~~r`~~xon~~~s~I~q~~~~~~r~n~~~~e~~~~~~~l~nRnm~~~~~_~T~~d~~~~>wo~}~~m~~~~lm~~~r~~H~J~~X~e~r~p~~~q~~~~~~~~~~~~~~~~`~~~Z~~~~qn~Y~~W~~~~9~~t~~r~Z~~~~P~~p~n~~~~G~~~t~]~Q~wf~~~~^~~~p~~~~_~~~~~q~Xii~tY~~cU~~m~t~D~~Zi~~~n~S~~~~R~~~~lj?~~~~~}~r|~Q~~~~~q~n~~~w~kakeo~~~~P~~~}f~Y}~~~~~~~e~~~~~~~d~~~~~u~~q~~~~~R~| [...]
   @m150825_055401_42161_c100844482550000001823159012311525_s1_p0/1945/ccs np:i:27 rq:f:0.999884
   AAGCAGTGGTATCAACGCAGAGTACTTTTTTTTTTTTTTTTTTTTTTTTTTTTTGTTGGTTCGTACAGCGGTAAATGACTTGTTGAGTCTTGACGTCGACGACCAAAGCGACCACTTTGACCCAATTGCGAACTACTAAATCCTAAGCAAAGACTATTAGGTAGTAGCCAACTTCGTTAATTCCGTTCAGTACTTTTAAATTCTAACCGACCATCTTTCCGAGTTGCTTCAAACCCTCGTCCTAATGATTTACATCGAATAGAACGTCGTACAAACGCACTACTACATGGAATAGATTCTCTTGTCAAATCGTTTTGTTTTGGCTTTACCCTTGGTAACAAACTTCGACTACGTTCGTACAATTCAGAATAACCTCTACCTCGTTAATTTGAGTTAGTTCGTTAAGGGCTTAAGTAGTTATTTCTATGATAAGCACTAAATTGACCTTAATTTCCTCGACTTATTGTTACATCTCGATTTCCCTTGATAT [...]
   +
@@ -234,10 +236,10 @@ Test ccs on 100 zmws from the lexogen-SIRV dataset
   AAGCAGTGGTATCAACGCAGAGTACGGGGTAAACGAACATCCAACAGTATGTACAATCGTATGAGAAAGGACAAATCTGAAGACGATATTAGAGGGAGTCCAACAAGTTTGTGATGATTCACGTAAGGAAATCGAAATGTAAGATTATTCGTCAATGGAGGTATAAGACAACACACCAAGTAATTATACGCGACGAGTTTTCATGTTGACGATCCCTGAGACTATATCATACAAAATTGACCCAAATAATAAACTCGTTCCAATAGTTGAAGTGTTGATTAACACATTGAGACAAGTTGTCCGTACTTTAATCATCAAAGTTTTGGACTGACCTATAAATGAAATATTCGCGTTGTCTTCAGTTTAAGAAGTGATATTATTTTCGGTTTCAAGCCTATGTGGAGAGATACAGGAAATAGGTAAACTATAACTAATATAAATATACGCAGACGAAGCCTGTTAACTTTACCAAATCCAAATAGCGGGAGAC [...]
   +
   r~~~~~~`~~~~~~~~~s~~~~~~~d~~~~m~~~~d~~~~~~~~v~~~~~~~~ji~~~~~~q~e~2~~r~~~Y~~~~~~~~~~~~~~~h~~~~U~~~~~|~~~~~~~\~~~~~~|~~_~~~~~~r~~~P~~~~~G~~~~~~~~v~~~k~~~~~~~~_~~~~~~~y~~~ov~~~y~h~v~~~j~~~~~~~m~~~~~~~a~~~~~~~u~u~~~~~U~~~~~~~~~j~~~~~~~~M~~~~~~~`~~f~~~~~ce~~q~~~~~`~~~~~~b~|\~~~lt~~~}~_~~~~~t~~~~~~j~p~~f~~~~~~~R~~~~~~~Z~q~~~F~~~o~~~~~~j~~~~W~~~~k~~~p~~v~~~U~~~~U~~~~W~~p~~j~~p~~~~n~~@~~~~|~h~~~s~~~~~k~~~f~|G~w~~~n~`~A~~~~~~~U~~~|~~~~~~~~~~~{~~~~~~~s~~~~~~~~~o~~[^~~~~s~~~~~p~~~z~l~~~~~~P~~~~~~ [...]
-  @m150825_055401_42161_c100844482550000001823159012311525_s1_p0/2012/ccs np:i:11 rq:f:0.999194
-  AAGCAGTGGTATCAACGCAGAGTACGGGGCTTGTCCGCGAGTGTCAACCGGGTTTTACAAAGGAGAACTTCCAACATCAGTGTATGGGATGTTTCAAACACCCCCAGAGACGGAGACAATAGTGTGGTCACGTACATTTAGGAAGATAAAAATAACAACAACAGAAGGTGTGAGGCGCAAGGTACATGCTCTTACCCCACTCTCAGCACGTAGGGAGCGGAGTGTGGAAGACCAACAAGCCCGTCGCCTCTACCAAATACAGCTATCCTGAGGTGCCAGGTTAGAATAGGCCCTACCACATCTAAGCCTTGAAACGGTCTGTTCCTCGTGTCAAGTTCTTGTCCGCTTATACCGCCATCTCTCGTTGTGGTACAAGAGTTGGTTACTCTCAGTCCCATTCCCAACACATCACTGAGAAGTATAGAGCCTAGTGGTCATTAGAAGGTCAACATGGAGTAGGTGTTTAGGTGTGTCGGAGGGCAGAAACCAA [...]
+  @m150825_055401_42161_c100844482550000001823159012311525_s1_p0/2012/ccs np:i:11 rq:f:0.999049
+  AAGCAGTGGTATCAACGCAGAGTACGGGGCTTGTCCGCGAGTGTCAACCGGGTTTTACAAAGGAGAACTTCCAACATCAGTGTATGGGATGTTTCAAACACCCCCAGAGACGGAGACAATAGTGTGGTCACGTACATTTAGGAAGATAAAAATAACAACAACAGAAGGTGTGAGGCGCAAGGTACATGCTCTTACCCCACTCTCAGCACGTAGGGAGCGGAGTGTGGAAGACCAACAAGCCCGTCGCCTCTACCAAATACAGCTATCCTGAGGTGCCAGGTTAGAATAGGCCCTACCACATCTAAGCCTTGAAACGGTCTGTTCCTCGTGTCAAGTTCTTGTCCGCTTATACCGCCATCTCTCGTTGTGGTACAAGAGTTGGTTACTCTCAGTCCCATTCCCAACACATCACTGAGAAGTATAGAGCCTAGTGGTCATTAGAAGGTCAACATGGAGTAGGTGTTTAGGTGTGTCGGAGGGCAGAAACCAA [...]
   +
-  a~~p~~~q~~~~~k~~~mg~~~~i~C~~~~~~\~]~~~lg~~n{r@~n~`~~I~~~|u^~~[~~uK~~L~d~,~~`dgIi~~i~~P~~~~yG~~zh~~~~S~~~~~~~~~~e~~x~yy~~~~~~~x~a~~~~~~~~\~~~x~z~~~~N~~~~~w~~u~zv~~~~~~w~b~~~~v~~~~~~u~~~~~~|~[~~~~D~~~~~~~~{~~~~~~w~C~~~}~l~~~~~~F~~~x~T~V~~v~~f~~~~d~s~~~~~e~c~~~~tn~e~~~y~~~~Q~~yq~ue~~~~~r~`~u~T~~~~y~~~~~~~~~~u~P~tQ~~xc~~~~up~i~n~~~~~cs~uy~j(~o~P~~oa~~~~e~~h~~~~~~~~~v~y~r~~~w~~~~~b~_~u~~~~~~~~~~a~~~b~X~~_~~~~~~|~~~~~~s~x~~~~n~sb~~~~~x~~}~w~~zd~u~~~~~zo~e~~~~~r~~~O~~~\~~~~v~~g~~i~~~~zn~~x~r~ [...]
+  a~~p~~~q~~~~~k~~~mg~~~~i~C~~~~~~\~]~~~lg~~n{r@~n~`~~I~~~|u^~~[~~uK~~L~d~,~~`dgIi~~i~~P~~~~yG~~zh~~~~S~~~~~~~~~~e~~x~yy~~~~~~~x~a~~~~~~~~\~~~x~z~~~~N~~~~~w~~u~zv~~~~~~w~b~~~~v~~~~~~u~~~~~~|~[~~~~D~~~~~~~~{~~~~~~w~C~~~}~l~~~~~~F~~~x~T~V~~v~~f~~~~d~s~~~~~e~c~~~~tn~e~~~y~~~~Q~~yq~ue~~~~~r~`~u~T~~~~y~~~~~~~~~~u~P~tQ~~xc~~~~up~i~n~~~~~cs~uy~j(~o~P~~oa~~~~e~~h~~~~~~~~~v~y~r~~~w~~~~~b~_~u~~~~~~~~~~a~~~b~X~~_~~~~~~|~~~~~~s~x~~~~n~sb~~~~~x~~}~w~~zd~u~~~~~zo~e~~~~~r~~~O~~~\~~~~v~~g~~i~~~~zn~~x~r~ [...]
   @m150825_055401_42161_c100844482550000001823159012311525_s1_p0/2091/ccs np:i:24 rq:f:0.999763
   AAGCAGTGGTATCAACGCAGAGTACTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTCTAAAGTAATGCCTCTACGTCAGTCGGAACAATGTCGTCGTGTAACTCGACGATCTTAGGAGCTACTAAGGAGAGTCTGTAGGGAACCGACTGGGAAGGTGCCACAAGTTTTCTCTACTACTCCGTCTCCTAAAACAACTCCAAGTGGAAGGTCTGTGGGTTTTTGAGTATAGTCCGTATCTAGACCCAAAAGGGCTTACCTTCGCAATGAAAGAATATCCTTATAGACACGAACGGGAAGAACGGAATCGTTATTAATGACGTCGTACAACGTTTTCCAAGTTCTCCTCTTCCTCCGGATTCGGTTTGGGTTATCTCAACTAGTCCTTTCAAAGACATTGGAGAGTTTCACCTTCCCGTTAAGGTAGAACCCTCAGCATGTTTCACCCCCGGTGACCACTCAGTTACGGAATGTTTTTAAGCCACCTCAGCT [...]
   +
@@ -249,7 +251,7 @@ Test ccs on 100 zmws from the lexogen-SIRV dataset
   @m150825_055401_42161_c100844482550000001823159012311525_s1_p0/2126/ccs np:i:23 rq:f:0.999895
   AAGCAGTGGTATCAACGCAGAGTACGGGAGACCAGTAGTTGGGTCAGAAATTAGACGTGGTTTAGTCTGGTTACCGTGGAAAGAATAGCTGAACTCAAAGAAGCCGACAAAGATAAACAAAGAAGAAACGGTTAATACGATTGAGGAGAAATATTCAATCCAACGGCAACTATTAACGTTTCAACTAGAATCTACGTTTCATACGCGGATTCCACATCCGTTCTTGCAATTAAAGAAACGATGTAGAAAACGCTTTGGTTGGCGACAACTTGGGCGGCAAAATAATTATGGTAGGTAATTGAAGTAGCGTTAAAACGCAAAAAGAAGGAAGCACGGATCACTGCAAAAAGGACTACTCAATAATGGTTTCTAAAGTCATTATGCTGGTGCTCCCTATGGCGGTGGTCAGTACTGTAACTAAAGATGGATTACGGCACTTGTAGAGCACGTATCAGACCCAGCTTTGAAAGAAGGCTGAGTTCGGTTCGGG [...]
   +
-  0~~~~~~~~~~~~~~~w~~~~~~~~e~~~~~~~~~~~~~~k~~~~~~~~~~~~~~~~~~~~~~~~s~~~~~~~v~~~~~w~~~~~~~~~~~~~~~~~~~~~~~k~~~~~~~~~~~~~~~~~~~~~y~~~m~~~~~~~~~~~~~~~~~~t~~~~~~~~~~p~~~~b~~~~~~~~~~~~~~~~~n~~~~~~~~~~~~~~~~~~~~~~~~~~~~P~~~~~~~~~~~~~~~~~~~c~~~m~~~~~~~~~~m~~~~~y]~~j~~~~~{~~~~~~~~]~~~h~~w~~~~~~~~~~}~~~z~~~~~~~~~~~~~~~~~O~~~~~tj~~~~~~~~~~~~~~~~~~~~~~~y~~~~~~~~~~~~~~~~~~|~~y~~~~~~`~~~~i~~~~~~~~t~~~~~p~~~~~y~~{~~a~~v~~~~~~~~C~~~u~~~~~f~~~~~~d~o~r~~~~~~~~~~~~~~~x~~~p~~~~~x~~~~~~~~~~~~~~~~~~~~~~~~U~~ [...]
+  0~~~~~~~~~~~~~~~w~~~~~~~~e~~~~~~~~~~~~~~k~~~~~~~~~~~~~~~~~~~~~~~~s~~~~~~~v~~~~~w~~~~~~~~~~~~~~~~~~~~~~~k~~~~~~~~~~~~~~~~~~~~~y~~~m~~~~~~~~~~~~~~~~~~t~~~~~~~~~~p~~~~b~~~~~~~~~~~~~~~~~n~~~~~~~~~~~~~~~~~~~~~~~~~~~~P~~~~~~~~~~~~~~~~~~~c~~~m~~~~~~~~~~m~~~~~y]~~j~~~~~{~~~~~~~~]~~~h~~w~~~~~~~~~~}~~~z~~~~~~~~~~~~~~~~~O~~~~~tj~~~~~~~~~~~~~~~~~~~~~~~y~~~~~~~~~~~~~~~~~~|~~y~~~~~~`~~~~i~~~~~~~~t~~~~~p~~~~~y~~{~~a~~v~~~~~~~~C~~~u~~~~~f~~~~~~d~o~r~~~~~~~~~~~~~~~x~~~p~~~~~x~~~~~~~~~~~~~~~~~~~~~~~~U~~ [...]
   @m150825_055401_42161_c100844482550000001823159012311525_s1_p0/2164/ccs np:i:14 rq:f:0.999337
   AAGCAGTGGTATCAACGCAGAGTACTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTGACGCAAATGCCACCAATACATATGTGTCCTCTTAATGTTTGCATGCTTAATCTTTTGATTATTATTTCCTCTTTCTTTCTATTACTAACTTTGTAACTCTCGCTAACCGAATCAACATAAATACGTCAACGAATCAAATGTTGATCTCAAATATCTGTGTCCATGAAATTTCGGATCGTAATCTGCTCTACTTTTGTTATTACAACAAGAACTTCGACTAAAGAACGGACTATCTTGTCTAATAATAATGGCACTAAGTGCATACTTTCTCGACTACATTGACGACTCAAAATAAGAAAGGGAGTTTTTAATACATTGACCTAACTCACTACTACGCCTTGGTTACCTTTGAACCTTTCGTTGTCAAAGTTCGTACGATGGTAAGTGCTTTCTACTCCTACCGCTATTTGGTTGAGAACCTGTTAAATGAGATG [...]
   +
@@ -266,10 +268,10 @@ Test ccs on 100 zmws from the lexogen-SIRV dataset
   AAGCAGTGGTATCAACGCAGAGTACTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTACTATACTACGAGGACGTCACCACTGAGGTCTCCGACATGGACACCTAGTCCCGGACTCACCGAACCTACACCGTTCCCTTCAGTGTGTTCTTTCGGAGTAGTGAAAAAACGTTGGTCTTCCCGGTCTACTATCCATCGTTCATGTTCGGCTTTTACAAGTTACCTTCAACAATTTTACAAAGCAATGCTTGTGGGCTAGGGCACCGCGTTTTGAAGTAAATAGATGTAACCTACCACCCATAAACTGCTCTAACAATTTAAGTTCGTCGTCGCCTTCTTTTTATATCACTAACGTGTACCTACCTTAGAGCGTTACCAAAGTACATATACAGATTTCTCAATGTATTTGACCTGGCTCTCTGCAATCTCTCTCAAGATGCGTAAGCACTTTCAGTAGGACGAATTTACGGTGGTAATTTCGCACACTTCGCACG [...]
   +
   ~~~~~~~{~~~~~^~~~~~~~~~~~'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~r~~~~~n~~~~~~~]~~~~~~~~~~~y~~~~~~~~~~~i~~~~~o~~p~~~~~~|~~~~~~~~~~k~~o~c~~~~~~~~{~~k~~i~~~v~~~~~~~~1~~~~~~~n~x~p~Q~N~~\~~~~~~~~~~~~~~~~~~~~~~~~w~~\~~~~~~~~g~~O~~~~~~~~~h~~~~~U~~~pp~~~~~~~~F~~t~~o~~tpX~~~~Y~~~~l~~~o~~~~~~~~~~~p~~~p~~S~~~{L~~~~~~~~~Y~~~~e~~~~~~~~~~~~~~sd~Q~~O~~~~~~~~puz~~~~~~~~~~~~~k~~~~~~~s~~~~c~Y~~~~~~~~~~~~~~~s~~~~~~~~~~~w~~~~m~~[~~~~~~~~~}~~~~~~~~~~~~~~zu~~~~r~~~p~~~~~~~j~n~~Q~s~~~~Q~~n~~j~l~~~~~~~~~h~~~~~~~ [...]
-  @m150825_055401_42161_c100844482550000001823159012311525_s1_p0/2295/ccs np:i:8 rq:f:0.998774
-  AAGCAGTGGTATCAACGCAGAGTACTTTTTTTTTTTTTTTTTTTTTTTTTTTTTAGTCTGGCAGATTAGATACAGCTATAGAGCGAATCACCACGTCTCCTTAGATAACTGGCAAATCTTCACAATTACGCAAGACCATAGAATAGTCCTAAGCAACATTTGCCGCATCGACCAAATCATGGCTTTGCACTCCAACTTTGCCTGAATCGTGTCAGACTATAGCGGGACGTTCGACCATACTACTCATTCGATTACGCATTCACCTGACGAGAATAGCCATTCTTCCTGAACATACGTTAGAAGTAGTTGGTTAATGCTTGTCTACATTTGAGTGCGAAGCCACTAGGTTTGCACTGTTGACCACCAGCACGCAATCGCAAGATACGCAGTAATGCTAAACCATACTTATTTGACTTTGATGTTCTATCACTGGGTTAATGCCTGCTGCTACCTGACTTTTAGTCGCGAGCACAACGCTTCTTGGCTACAC [...]
+  @m150825_055401_42161_c100844482550000001823159012311525_s1_p0/2295/ccs np:i:7 rq:f:0.999077
+  AAGCAGTGGTATCAACGCAGAGTACTTTTTTTTTTTTTTTTTTTTTTTTTTTTTAGTCTGGCAGATTAGATACAGCTATAGAGCGAATCACCACGTCTCCTTAGATAACTGGCAAATCTTCACAATTACGCAAGACCATAGAATAGTCCTAAGCAACATTTGCCGCATCGACCAAATCATGGCTTTGCACTCCAACTTTGCCTGAATCGTGTCAGACTATAGCGGGACGTTCGACCATACTACTCATTCGATTACGCATTCACCTGACGAGAATAGCCATTCTTCCTGAACATACGTTAGAAGTAGTTGGTTAATGCTTGTCTACATTTGAGTGCGAAGCCACTAGGTTTGCACTGTTGACCACCAGCACGCAATCGCAAGATACGCAGTAATGCTAAACCATACTTATTTGACTTTGATGTTCTATCACTGGGTTAATGCCTGCTGCTACCTGACTTTTAGTCGCGAGCACAACGCTTCTTGGCTACAC [...]
   +
-  q~m\~of[~~kjl4o`ptqpob~Zc$~~~~~~~}|~~~~okn{~~}ot~~~}}tgWhW~[~pns~O~q_~~~[~Bbc~~mFl[s\i~lt~N~mkX}i_L~n~\qro_~tp_~uP~~>r^~p@[p~p~qq^On~o~^~q~~t]~~~rl;~~^~r^?~brG~~rR~tu~~rH~b~B~~~]nn\~s9~~`]dmoU~]~q5~~qa~~pn~[raoa}VokWl~~~pqo(~tt_qO~ts~\~i}ksjzrnt~h~te~`~}]nI~q~v~a~~sm^o^r@~zjaL~~]~tp~c~~rM~shvyts\~~sp~tjor_~K~o~m~qruo~n}tj~qm^~~taJflrnn~kR~~okz8cY~~XZ~r~4\~_}Y~~a~~spB\oZ[~pdrud~rl~~mqZRm~L~~oYlU~~U~~~ln\~~c~~sttS~~mk~s[~pfV~Mq_tR~~Y~YolqQ~lmJ~[\k~I~~s~rE~~~|clpF]o~\t~ua~tnVQ~tp~O~o~~t~r [...]
+  q~m\~of[~~kjl4o`ptqpob~Zc$~~~~~~~}|~~~~okn{~~}ot~~~}}tgWhW~[~pns~O~q_~~~[~Bbc~~mFl[s\i~lt~N~mkX}i_L~n~\qro_~tp_~uP~~>r^~p@[p~p~qq^On~o~^~q~~t]~~~rl;~~^~r^?~brG~~rR~tu~~rH~b~B~~~]nn\~s9~~`]dmoU~]~q5~~qa~~pn~[raoa}VokWl~~~pqo(~tt_qO~ts~\~i}ksjzrnt~h~te~`~}]nI~q~v~a~~sm^o^r@~zjaL~~]~tp~c~~rM~shvyts\~~sp~tjor_~K~o~m~qruo~n}tj~qm^~~taJflrnn~kR~~okz8cY~~XZ~r~4\~_}Y~~a~~spB\oZ[~pdrud~rl~~mqZRm~L~~oYlU~~U~~~ln\~~c~~sttS~~mk~s[~pfV~Mq_tR~~Y~YolqQ~lmJ~[\k~I~~s~rE~~~|clpF]o~\t~ua~tnVQ~tp~O~o~~t~r [...]
   @m150825_055401_42161_c100844482550000001823159012311525_s1_p0/2305/ccs np:i:22 rq:f:0.999665
   AAGCAGTGGTATCAACGCAGAGTACGGGACGGTCGTACTAAAATCAGCTACGCGATCGCCGACTTAGAAGGCTGAGATGGAGAAACTTGTCTACTGGCAGACCTCACTATCTTTTAGGAAGGTCACGAAGCGGCTGGAGTGATGGCTAGTCTCAGCCACTGTCAACGGGAAGCGCGACGTTTATGGTCAATATAAACTAGCAGTTTAATCCGTATGGCGATCTTAGCGGATGTTACAGGATGGAGAAGATGACAAAGTAGAAGCTAGACAACTATATCAAATCGTTGTGTGGTCTTAAACCGACACAGTAGCATTCATCGTTGGATGTGGAAGGTCACAGCCTCGTTGGAGGAGATACTACGGTCCCGCTTTTCGTGGGTGACAAAGGTCGCAAAGGTTTCCTTAGGGAGGTCGTTTCCCGGATCTTTATCTACATCTCCTGGGTGAAGGGGATGATCTTTCTCTACATGTCCTGGGTGGAGGGGAGTTT [...]
   +
@@ -286,10 +288,10 @@ Test ccs on 100 zmws from the lexogen-SIRV dataset
   AAGCAGTGGTATCAACGCAGAGTACGGGGTGGAGAAGCAAATACTTGGATACCGAATTTAGAGGCCATAGGTTATGGAAAAAGTCAGTGGATTAGATAGTAAAAGTCGAAATCTTTATATTCGGTTCGATGTACTACGTTATTCGCGACTGTTCTGTCATGATAGTTTTTTATATAGTCCTAATAAAAGGAGTTTTTAAAGTAAATGACATTTCAGTAGTAAAAGTTTAAGAGCTTTTTGTTCTGCCAGACGTTCTGATAGTTGAGGAAAACGTGTGGTCAGCTAATAACTTGTGGTATGGAGTAAACGAACATCCAACAGTATGTACAATCGTATGAGAAAGGACAAATCTGAAGACGATATTAGAGGGAGTCCAACAAGTTTGTGATGATTCACGTAAGGAAATCGAAATGTAAGATTATTCGTCAATGGAGGTATAAGACAACACACCAAGTAATTATACGCGACGAGTTTTCATGTTGACGATCCC [...]
   +
   ~~~~~~~~~~~~~m~~~~~~~~~~~n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}~~~~~~~~~~~~~~~~~~~~\~~~~~~~~~~~~~~~~~~~~~~{~~~~~~~~~~~~n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~Z~~~~~~~~~~~~~~~~~~}~~~~~~~g~~~~c~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~z~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~v~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~z~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~k~~~~~~~~~~~~~~~~~~~~e~~~~~~~~~~~~~p~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~m~~~~~~~~~~~~~~~~~~~~~~~~~~~r~~~~~~~~~~~~~~~~~~ [...]
-  @m150825_055401_42161_c100844482550000001823159012311525_s1_p0/2359/ccs np:i:15 rq:f:0.999424
+  @m150825_055401_42161_c100844482550000001823159012311525_s1_p0/2359/ccs np:i:16 rq:f:0.999453
   AAGCAGTGGTATCAACGCAGAGTACGGGGTGTAGCATAGCAACTGTTCTGAATGTGATATTCGGTCAGGCCACGTTGACACTTACCAAAGCAAGACAGAAGGAAGTTGACGGGACAATAGGGAAGATTGGCAAAGGGATTTAAACATAGTCCAGTTCGCGTGGTGAATGACAGATTGCTACTGTTACCATTGGCGATACTACGTTGGCGACTTTACTTGCCTCGGTAGCGACAGAACAAGTGTCGTCTACGCAACGAACAACCAGCGTGTTAGCTGCAATGTCCCCTGTAGAAGACCCTCTTCTTTCTCTTCTGAATGATGTAGCTGTGGATAGAGCGTCTCCCACGTTAGGGTCTAGCAACCCTCCGGTGGTGTGTGGTTTCGGTTCGCTTGGTTGGGTGCCCAATTTCCAGTACCGAAGAGGTAATTGCAACTTCAATTGCTTAGTTGACGTGACCTTTCGGGTGTCATGGACTACCGACGGTATCTC [...]
   +
-  ~~~~~~~c~~~~~~~~~~~~~~~~~n~~~~>~~~~~~~~~~~~~~.~~~xp~~~~~~~~]~34~~~~~~~~~~~y~~~~~~~~~p~I~~~~Q~~~~~~q~k~w~~~~Mn~a~~o~X~~~e~~~~~~~~n~~s~~?~~~a~~R~~W~~~~~p~~~t~~~~~n~~~|~~~s~~~v~Y~n~~~~~~H~~~~p~~~~~~~~~~~n~~~~~~~~~~~~~~~\~~~~~~~~~W~~~~~~~t~~~~~~~~q~~~u~~bw~~~~H~t~~~~~~i~~~~~u~x2p~~~~y~d~~~~~~~x~~~~~~~~~d~~g~~~~~~~~~~e~~~~~j~~s~~~~k~~~~~~~~~~~~Q~~~~~~~~f~~~~~~~~~~x~~y~~u~~`~~~~~~~~T~~~~~~~~~~~~p~~~n~~Xzt~~~~V~~z~~~~~~~~L~~~v~~~~w~j~~~~~~~~~~~~~n~~~W~~~~~~~~~~V~~}|~~~|lY~~i~~~~~r~~~~~~\s`~b~ [...]
+  ~~~~~~~j~~|~~x~~~~~~~~~}~p~~~~E~~~~~~~~~~~~~~2~~~~|~~~~~~~~_~(;~~~~~~~~~~~~~~~~~~~~~s~L~~~~X~~~~~~l~s~y~~~~Sknd~~j~Y~~~h~~~~~~~~w~~~~~F~~~i~~\~~K~~~~~x~~~j~|~~~e~~~~~~~k~~~z~d~x~~~~~~?~~~~|~~~~~~~~~~~z~~~~~~~~~~~~~~~c~~~~~~~~~`~~~~~~~~~~~~~~~~d~~~~~~m~~~~~V~~~~~~~~s~~~}~l~~'c~~~~~~f~~~~~~~|~~~~y~~~~]~~j~~~~~~~~~~^~~~~~k~~x~~~~s~~~~~~~~~~~~[~~~~~~~~a~~~~~~~~~~m~~}z~x~~d~~~~~~~~U~~~~~~~~~~~~s~~~g~~bu|~~w~P~~~~~~~~~~~P~~~~~~~~x~p~~~~~~~~~~~~~v~~~b~~~~~~~~~~`~~~x~~~xxa~~i~~~~~|~~~~~~ThU~Y~ [...]
   @m150825_055401_42161_c100844482550000001823159012311525_s1_p0/2409/ccs np:i:12 rq:f:0.999732
   AAGCAGTGGTATCAACGCAGAGTACTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTGATGCCTCTACGTCAGTCGGAACAATGTCGTCGTGTAACTCGACGATCTTAGGAGCTACTAAGGAGAGTCTGTAGGGAACCGACTGGGAAGGTGCCACAAGTTTTCTCTACTACTCCGTCTCCTAAAACAACTCCAAGTGGAAGGTCTGTGGGTTTTTGAGTATAGTCCGTATCTAGACCCAAAAGGGCTTACCTTCGCAATGAAAGAATATCCTTATAGACACGAACGGGAAGAACGGAATCGTTATTAATGACGTCGTACAACGTTTTCCAAGTTCTCCTCTTCCTCCGGATTCGGTTTGGGTTATCTCAACTAGTCCTTTCAAAGACATTGGAGAGTTTCACCTTCCCGTTAAGGTAGAACCCTCAGCATGTTTCACCCCCCGGTGACCACTCAGTTACGGAATGTTTTTAAGCCACCTCAGCTAGTGTTCC [...]
   +
@@ -298,10 +300,10 @@ Test ccs on 100 zmws from the lexogen-SIRV dataset
   AAGCAGTGGTATCAACGCAGAGTACGGGGTGGAGAAGCAAATACTTGGATACCGAATTTAGAGGCCATAGGTTATGGAAAAAGTCAGTGGATTAGATAGTAAAAGTCGAAATCTTTATATTCGGTTCGATGTACTACGTTATTCGCGACTGTTCTGTCATGATAGTTTTTTATATAGTCCTAATAAAAGGAGTTTTTAAAGTAAATGACATTTCAGTAGTAAAAGTTTAAGAGCTTTTTGTTCTGCCAGACGTTCTGATAGTTGAGGAAAACGTGTGGTCAGCTAATAACTTGTGGTATGGAGTAAACGAACATCCAACAGTATGTACAATCGTATGAGAAAGGACAAATCTGAAGACGATATTAGAGGGAGTCCAACAAGTTTGTGATGATTCACGTAAGGAAATCGAAATGTAAGATTATTCGTCAATGGAGGTATAAGACAACACACCAAGTAATTATACGCGACGAGTTTTCATGTTGACGATCCC [...]
   +
   ~~~~w~~~~~f~~[~~~~~N~~~~~b~~~~c~~~~~~ve~~~~~q~~~~~~n~[~~b~~~~~Y~{~~~~^~r~~mo~U~~~~m~~~~~~~~R~~~~~~~~c~~~z~~~o~~~~~~~~~~~~~t~~~~~~~~~~~Y~~~u~~m~~~~~~~~~A~~~~~x~~~~~~~S~~~~~~|~~~f~w~~~~~L~~~n~~~F~~~~q~~~~~~~~~~~~Q~~~y~~~~~H~~~~e~~k~~~~~9~~~~~i~~~~~~~}~~~~~~r~~y~~l~~~w~M~~~~~~~~m~~}~~~~~~~~~~q~~~p~~~~y~y~~n~~~~z~~~~c~~~~~~~b~~|~~r~~~~~r~~~~l~~u~~~|~~~~~~x~~~~~~~~d~~~~H~~~~~~~|~~~~~d~~~_~~~~~~~y~~~~~~x~o~~~~~}~~~~~~~~~~~~~~~~~~~~~~~~q~~~~~~~~~~~~~~~x~y~~f~~~~~~~~~~~~~~~~H~~~~~~~~~~~~~~~]~~ [...]
-  @m150825_055401_42161_c100844482550000001823159012311525_s1_p0/2436/ccs np:i:14 rq:f:0.999194
-  AAGCAGTGGTATCAACGCAGAGTACTTTTTTTTTTTTTTTTTTTTTTTTTTTTCGCCACGTCTCCTTAGATAACTGGCAAATCTTCACAATTACGCAAGACCATAGAATAGTCCTAAGCAACATTTGCCGCATCGACCAAATCATGGCTTTGCACTCCAACTTTGCCTGAATCGTGTCAGACTATAGCGGGACGTTCGACCATACTACTCATTCGATTACGCATTCACCTGACGAGAATAGCCATTCTTCCTGAACATACGTTAGAAGTAGTTGGTTAATGCTTGTCTACATTTGAGTGCGAAGCCACTAGGTTTGCACTGTTGACCACCAGCACGCAATCGCAAGATACGCAGTAATGCTAAACCATACTTATTTGACTTTGATGTTCTATCACTGGGTTAATGCCTGCTGCTACCTGACTTTTAGTCGCGAGCACAACGCTTCTTGGCTACACATATGCTGTTGGGAATGTTTTTTACACTTATTATG [...]
+  @m150825_055401_42161_c100844482550000001823159012311525_s1_p0/2436/ccs np:i:13 rq:f:0.99859
+  AAGCAGTGGTATCAACGCAGAGTACTTTTTTTTTTTTTTTTTTTTTTTTTTTTTCGCCACGTCTCCTTTAGATAACTGGCAAATCTTCACAATTACGCAAGACCATAGAATAGTCCTAAGCAACATTTGCCGCATCGACCAAATCATGGCTTTGCACTCCAACTTTGCCTGAATCGTGTCAGACTATAGCGGGACGTTCGACCATACTACTCATTCGATTACGCATTCACCTGACGAGAATAGCCATTCTTCCTGAACATACGTTAGAAGTAGTTGGTTAATGCTTGTCTACATTTGAGTGCGAAGCCACTAGGTTTGCACTGTTGACCACCAGCACGCAATCGCAAGATACGCAGTAATGCTAAACCATACTTATTTGACTTTGATGTTCTATCACTGGGTTAATGCCTGCTGCTACCTGACTTTTTAGTCGCGAGCACAACGCTTCTTGGCTACACATATGCTGTTGGGAATGTTTTTTACACTTATT [...]
   +
-  ~~Mjk~~Z~~S[~~~~~~~u~~~~~'~~~~~~~~~~~~~~~~~~~~~~~~~~nice~~~pfl~]z6~~~e~|~~~}~~P~~o~j~~~~}~}~~~~p^~w~O~it~p]~~}~yr~~W~sqm~s~\~~~S~q~~~~S~Fw=~|frXa^~~?~~~~~~~~~r~tk~~\TM~~w~~~f~2~q~~St`~~u~~e~~d~~p~~~~T~~g~~~~~~N~o~~fms~~~k~~X~~~v~~~~~~~~~~~~vu~~k~~w~<~~zm~~~~~~~j~F~v~~~Z~}~lom~k~UjSp~\y~~u~wW~~~w~~L~uh~{Y~~~~~{~i~~hwr~~ow~~~S~~F~~~v~~~x~~~f~Wc~~i~~~~~~{~f~K~|~j~~w~~~}~~~~_~~~ShO~~~~~~~~[rrTHR~~k~~~~{~~~m~~~~~~~~~u~~i~~1~~~iq~~~:o{~~~Wv~~~~~~my~_~~~~~~}~~~~~~~~o~J~~f~~X<~~~~~~v~uf~wj~~~W [...]
+  }~Cgp{tf~~rz~q~~~~~a~|~~~&~~~~~~~~~~~~~~~~~~~~~~~~~~~ulfX~w~k\q~jo$zy~~Umq~|xm~~9~~t~Y~~~~j~q~~~zfj~z~c~~t~~r~ts|fc~sC~_]Y~`mR~~~H~`~k~~f~6~K~|SlC]n~~O~~~w~~~w~^~{_|~IRH{~m~~~l~2~g~~Klc~wp~ze~~{~uf~~~~^~~b~~~~~vl~y~~~cz~y~q}~f~~~z~~w~~u~~|~y~gl~~l~~p~0~~pb{~~~~juy~G~w~~~f~o~_\_~h~djXi~fq~y~~~S~~~sy~Ky~t~p\~~~~~lcl~~P{t~~bz~~vG~n,~~~o~~~r~~~Z~_Y~pg~~~t~~f~m~Ps~~a~~r~~~o~~~~k~~~LdX~~~~~~x~Vi~^Ae~~k~~~~u~~~b~~~w~~~~~k~~X~~$~~~u~n~w~2ew~~~`k~~u~~~|r~W~~~~~~q~}~~~~~~d~Y~~{~~HM~~~~~~d~hp~sw~ [...]
   @m150825_055401_42161_c100844482550000001823159012311525_s1_p0/2451/ccs np:i:17 rq:f:0.999748
   AAGCAGTGGTATCAACGCAGAGTACGGGGTGAGGCTTGTCCGCGAGTGTCAACCGGGTTTTACAAAGGAGAACTTCCAACATCAGTGTATGGGATGTTTCAAACACCCCCAGAGACGGAGACAATAGTGTGGTCACGTACATTTAGGAAGATAAAAATAACAACAACAGAAGGTACAAGAGTTGGTTACTCTCAGTCCCATTCCCAACACATCACTGAGAAGTATAGAGCCTAGTGGTCATTAGAAGGTCAACATGGAGTAGGTGTTTAGGTGTGTCGGAGGGCAGAAACCAACGAAAGAAAGGAAACGATCAACACTTATATAGTGTCCTGTCGGGCCCAAATCCTAAGAGACCTTAGGTTTACCACATTAGTACTAAACAGCCTGTTGTATACCGTGAGCCCCCACTTCGATCTGTAAATGGTAATCCCTTGTAAAACCTCATCTCCAAAAACAGTATACGCAGGTACAGCTGATGTGATCCTCTCTA [...]
   +
@@ -334,10 +336,10 @@ Test ccs on 100 zmws from the lexogen-SIRV dataset
   AAGCAGTGGTATCAACGCAGAGTACGGGGCATACTGCAAGACTTGTAGGCCCATGAATTACCCGCTTAGGCAATGGGTAGACCTTTCCTTGCCGCGTGGAACAAACCGCCATGAGTGTTTTACGTTTACGGTCGGCGACCGGAGTCACAGCGCGACCAACGGGGCCAGGCAAAGGCCCATAGGCTTTTCCATCGGCACGCGACCGATTCCATCAAGTGTTAGGTGCAATCCCCATTCGGGACGGACACGCGAGAGCGTTAGTCGGCGCGTGCGCGGGACTATTTAGCGAAGGTCGCCGATCGTTTGCCCGTAAAACTAACTGGCAAAAGCCTAAGTGCTGTTTCGGGTGCAATGGTATAACTTCCCACATTTAGCCGAATAGCGCCAACAGCGTTATTATTTGGAACCAAGCAGTGGGCGATGTCAGCGACAATTCCACTTTGGTAGAGGTCGTTCTTTTGTAGAAAACAATCTAACATAACTATGACAC [...]
   +
   w~nr}ZdG~~~~pa~~o~~\~^Ri~?~~~~~|~~~~~~~w~y~~~~~r~O~~~~~Z~q~~Q~~~~M~~p~pw~jP~~m~~~s~j~~k~{~~_~~~gs]zo~EW~~k~o]~~~~~~~~S~~~~plF~~~sM~~~n~~v~b~o~p~~p~~~~~~~rTo~~~uZ~~~\~~m~vt~~s~U~~c~~t~pM~~~d~h~~]~nm~spr~p~~~w~m~~~t[~~~v~~kk~~knn~jG~~~~~~wc~~l~r~~~~~~u{ag}T~ob~~~~~m~o|Y~~n~`~O~~|Dt~\~~~~~sm~o~~~~o~~}~~~A~~~L~~~iH~~~~~q~~~a~~O~~~~_~~o~~x~w~~V~~~N~~l~~n~}`~n~~[~~k~H~~~~~c~~~pp~r[~~~~~vZ~h~v~w~~~~~~~~S~~V~~~s~\~ss~}~R~~~~{d~~~~~trgqo~q~q~~q3~eZ~~~~|a~~]~N~~S~~~~~~u%~~qu~~jo~~~o~~}~p~~~~~~~i [...]
-  @m150825_055401_42161_c100844482550000001823159012311525_s1_p0/2771/ccs np:i:11 rq:f:0.998887
+  @m150825_055401_42161_c100844482550000001823159012311525_s1_p0/2771/ccs np:i:11 rq:f:0.999033
   AAGCAGTGGTATCAACGCAGAGTACGGGGGCTTGTCCGCGAGTGTCAACCGGGTTTTACAAAGGAGAACTTCCAACATCAGTGTATGGGATGTTTCAAACACCCCCAGAGACGGAGACAATAGTGTGGTCACGTACATTTAGGAAGATAAAAATAACAACAACAGAAGGTGTGAGGCGCAAGGTACATGCTCTTACCCCACTCTCAGCACGTAGGGAGCGGAGTGTGGAAGACCAACAAGCCCGTCGCCTCTACCAAATACAGTGTTTAGGTGTGTCGGAGGGCAGAAACCAACGAAAGAAAGGAAACGATCAACACTTATATAGTGTCCTGTCGGGCCCAAATCCTAAGAGACCTTAGGTTTACCACATTAGTACTAAACAGCCTGTTGTATACCGTGAGCCCCCACTTCGATCTGTAAATGGTAATCCCTTGTAAAACCTCATCTCCAAAAACAGTATACGCAGGTACAGCTGATGTGATCCTCTCTA [...]
   +
-  q~Vd~}~c~~h~~`~~~~|T~~~Ys)~~~~~P~q~H~~~N~U~{~~~~k~U~~A~~~~~t~~~~~z{~~>~x~~~~~~~{~~~~~~e~~~~~Z~~~E~~~~N~~~~~~q~~~~~~~~~~~~~~x~vl~~~~~~~~~~X~~~~~~~v~~M~~~~~~~~~~~~~~~~~~p~~pq~~]~~~~v~i~~Ur~~~G~~Z~~Z~~~~~~~~~~~t~~~~~/~~y}im~~~~~~T~~~~~~~X~vs~~S~~~~~~u~~~~gx~e~~~~~~~~~1~~~w~~~~~~f~~~b~~~~~n~~~~~~l~\~~~n~~~~T~~~v~~~~~~~`i~~~~~~~~~~x~~~~~Y~~_~~~~~~~~~~~~~~~~~~~~~~i~~~a~~~~c~~~~~~~B~~~~|D~~~x~x~~~~r~~~p~t0~~~~zut~^~~~~~~~A~~{k~~~~~E~~~~~~g~~~~~~~~~~~F~Z~~~~~~~~|~{x~i~x~~~|~g~~~~~~~~~~o~~~~~~~ [...]
+  q~Vd~}~c~~h~~`~~}~q?~o~Yo<~~~~~S~w~P~~~Y~a~~~~~~k~U~~A~~~~~t~~~~~z{~~>~x~~~~~~~{~~~~~~e~~~~~Z~~~E~~~~N~~~~~~q~~~~~~~~~~~~~~x~vl~~~~~~~~~~X~~~~~~~v~~M~~~~~~~~~~~~~~~~~~p~~pq~~]~~~~v~i~~Ur~~~G~~Z~~Z~~~~~~~~~~~t~~~~~/~~y}im~~~~~~T~~~~~~~X~vs~~S~~~~~~u~~~~gx~e~~~~~~~~~1~~~w~~~~~~f~~~b~~~~~n~~~~~~l~\~~~n~~~~T~~~v~~~~~~~`i~~~~~~~~~~x~~~~~Y~~_~~~~~~~~~~~~~~~~~~~~~~i~~~a~~~~c~~~~~~~B~~~~|D~~~x~x~~~~r~~~p~t0~~~~zut~^~~~~~~~A~~{k~~~~~E~~~~~~g~~~~~~~~~~~F~Z~~~~~~~~|~{x~i~x~~~|~g~~~~~~~~~~o~~~~~~~ [...]
   @m150825_055401_42161_c100844482550000001823159012311525_s1_p0/2772/ccs np:i:11 rq:f:0.999401
   AAGCAGTGGTATCAACGCAGAGTACGGGGCGATGGGGGCGACAATTGTGGACCGTATGGACTCCATTATGCTGGGACTCCTCGGGTCAACCGCTCTAAAGCGAAGTTGTTGGACAAACAGTTATGCGTAACTGTAAAGCAAGGTGCCCAAAGTAGACTGAGCGACAGTCGAAACCAGCCCCAATGAACAAGACGCCATTGCAAAACGTCTATACGCTACGGTCAAAGACGCTTCCACACCACATGCTCTCATGTAGCCTACCTTACGAAGAAATCGCACAAGTCGGTCGCCCAGCGGTGGCATATGTCTTGCCTAACGTTTCTAGACCGATCAGCCTCACGAGTAGCCTGCTTGTGGTGTTTATAGTTTACGCTAGTCCAATCTGTATCGTGCCGCTTGGTATGGCTATTGTCGGCCTGGATGCAATTGTGCTCGCCATTTCAACTAGTGCAGTTGCTAAAGTGCCAACTAAGGTTCGTCTTGAAGCAAT [...]
   +
@@ -390,10 +392,10 @@ Test ccs on 100 zmws from the lexogen-SIRV dataset
   AAGCAGTGGTATCAACGCAGAGTACGGGGTGTATTTATCCGCTACGTGGTGGATGAACATGGATGCGAACGACATTTCGAAATATACGCAATGATATCCAACCCTACCGAAACAGCAATAATTGTAGAAGGTAGCATATCATGCCGAGAGTTTACTACGTTGTAGCGAGTTTAGTTGAAATAGTTTGTGATGTGTAAACTAAAACATACCAAATGGTAAAACTTGTCACCCCCATTTACATTGCGACAGACACAGTTATGGAGTGGATGGAAGTGTGTTCGACTGTCAAGACCCTTCTATAATAGTCGAACCAGTACGGTAAGTGGGCAACATGCCCATATAAGTCGAAGCATTTCAAATGGTTCATCCAGTAGACGACGATGTCCTAGACAGTCATGTCTCTTCCCCATTTGAAGTCATGTAGTGGTTGTCTACTTTTTCATTGAAGACGTCCACCTCAACGCTATGAACGTTAGTTGAGACAATGTTA [...]
   +
   0~~w~~~^~~~~~k~|grnxgw~l~6~~~~~~~O~~~~^~~~~e~~~o~~n~~~pz~~~~q~~~~~u~~us~~~]~~toN~~~~~K\~~c~~~~~~~Z~|~L~~~~\~~`~~~~~sZ~~t~q~~~~~r~o~~~tq~~~~~~~x`~~~~~~R~~~~{~~v|~~~~~~y~~b~~~~y~~f~~~~~G~~~~~~~k~~yi~~~~V~~~|~~~b~_~~~R~~D~~tS~~i~D~9~~~~~p~~~~~~~~~~~~~P~~l~~~e~~~`~~~pB~~~u~f~{~h~~|~k~~~~~~{~~~~b~~~~~~~~n~~~y~~~i~d~~~~~al~~d~~~]~~~P~~~~~d~~~~~~m~~~~~s~~g~g~~~~~~~t~r~~~~p~~~~~~~~~~~~~~~~p~~~~~}~~~}~~~~g~~~~8~~~~e~~~O~~~~~~K~~~~\~h~w~~~~xR~~~~~~~~~~~|~{~~g~~k~~vr~~~e~m~~~~~wh~~~~~k~q[w~~~~r~g [...]
-  @m150825_055401_42161_c100844482550000001823159012311525_s1_p0/3046/ccs np:i:22 rq:f:0.999764
-  AAGCAGTGGTATCAACGCAGAGTACGGGGTACAAGAGTTGGTTACTCTCAGTCCCATTCCCAACACATCACTGAGAAGTATAGAGCCTAGTGGTCATTAGAAGGTCAACATGGAGTAGGTGTTTAGGTGTGTCGGAGGGCAGAAACCAACGAAAGAAAGGAAACGATCAACACTTATATAGTGTCCTGTCGGGCCCAAATCCTAAGAGACCTTAGGTTTACCACATTAGTACTAAACAGCCTGTTGTATACCGTGAGCCCCCACTTCGATCTGTAAATGGTAATCCCTTGTAAAACCTCATCTCCAAAAACAGTATACGCAGGTACAGCTGATGTGATCCTCTCTACTAGTCTTCTCTGAGGAACCATGAGATGGATAGTGGGGGACCTGAGTCATACTAGGGTAACTTCTTATATGGTGACATCACTCCTACCGTAGAGGGGGGACGGTAGTCTGTGGGAAATCTACCCTAGTGAAGAAAGGTAAGAGA [...]
+  @m150825_055401_42161_c100844482550000001823159012311525_s1_p0/3046/ccs np:i:22 rq:f:0.999619
+  AAGCAGTGGTATCAACGCAGAGTACGGGGTACAAGAGTTGGTTACTCTCAGTCCCATTCCCAACACATCACTGAGAAGTATAGAGCCTAGTGGTCATTAGAAGGTCAACATGGAGTAGGTGTTTAGGTGTGTCGGAGGGCAGAAACCAACGAAAGAAAGGAAACGATCAACACTTATATAGTGTCCTGTCGGGCCCAAATCCTAAGAGACCTTAGGTTTACCACATTAGTACTAAACAGCCTGTTGTATACCGTGAGCCCCCACTTCGATCTGTAAATGGTAATCCCTTGTAAAACCTCATCTCCAAAAACAGTATACGCAGGTACAGCTGATGTGATCCTCTCTACTAGTCTTCTCTGAGGAACCATGAGATGGATAGTGGGGGACCTGAGTCATACTAGGGTAACTTCTTATATGGTGACATCACTCCTACCGTAGAGGGGGGACGGTAGTCTGTGGGAAATCTACCCTAGTGAAGAAAGGTAAGAGA [...]
   +
-  ~~~~~~~{~~U~~q~L~s~~~~~~~N~~~~~`~~~~~~~x~~~~}~p~~wh{R~~~~~i~~~~~~~~~~~~~~~qz~~~~~~i~~T~~vv~~~~~~T~jmD~O~~~v~~~~I~~~~~T~~r~~~~~~~~~~~~k~~`~~p~~c~~z~~~~~g~~~y~~b~_~~~~~~~~~~~p~~~~~~~~~~~{~~~~~R~~F~~~~~~^~~m~~~~~a~~~~z~y~~~h~~b~~~~~~~~~i~~~~~d~~~n~ut~~~j~~~~~{F~~~~~~~~~~~~~~~~l~~~\~~~~~`~~z~~~j~~~z~~~~~~~~~s~~~~~~~~~~~~~~~d~~u~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~u~~~~~~~~~~~K~~~~~z~~~~w~~~~~~~~i~~~~~~~~~~~~~~~D~~~|~~~~~~~}~~~y~s~~~~D~~~~~~~;~~~~~z~~~c~~;~~~~~~Y~~~~~~s~~~~~~{~~i~~~~~ [...]
+  ~~~~~~~y~~U~~m~]~~~~~~~~~M~~~~~^x~~~~~~g~~~~~~~~~~nzO~~~~~i~~~~~~~~~~~~~~~}w~~~~~~v~{`~~zo~}~~~~]~di=~I~~~u~~~~C~~z~~O~~y|~~~~~~~~~~~h~~[~~m~~]~~v~~~~~l~~~y~~`~Y~~~~~~~~~~~l~~~~~~~~~~~~~~~~~S~~I~~}~~~a~~p~~~~~a~~~~~~x~~~o~~i~~~~~~~~~b~~~~~^~~~u~ol~~~c~~~~~{@~~~~~~~~~~~~~~~~d~~~Z~~~~~\~~}~~~d~~~v~~~~~~~~~q~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~}~~~~~~~~~~~~~~~~~~~~~~~~p~~~~~~~~~~~J~~~~~v~~~~~~~~~~~~~m~~~~~~~~~~~~~z~>~~~s~~~~~~~y~~~u~n~~~~H~~~~~~~A~~~~~}~~~]~~2~~~~~~O~~~~~~e~~~t~~~~~\~~~~x [...]
   @m150825_055401_42161_c100844482550000001823159012311525_s1_p0/3116/ccs np:i:14 rq:f:0.999312
   AAGCAGTGGTATCAACGCAGAGTACGGGGGGCGACAATTGTGGACCGTATGGACTCCATTATGCTGGGACTCCTCGGGTCAACCGCTCTAAAGCGAAGTTGTTGGACAAACAGTTATGCGTAACTGTAAAGCAAGGTGCCCAAAGTAGACTGAGCGACAGTCGAAACCAGCCCCAATGAACAAGACGCCATTGCAAAACGTCTATACGCTACGGTCAAAGACGCTTCCACACCACATGCTCTCATGTAGCCTACCTTACGAAGAAATCGCACAAGTCGGTCGCCCAGCGGTGGCATATGTCTTGCCTAACGTTTCTAGACCGATCAGCCTCACGAGTAGCCTGCTTGTGGTGTTTATAGTTTACGCTAGTCCAATCTGTATCGTGCCGCTTGGTATGGCTATTGTCGGCCTGGATGCAAGCACTAACGTGGTCATCAGACTGGTCTGCGCTATAATCTACGCAATAGAGGCACCAGCGGTCGTTGAAGCC [...]
   +
diff --git a/tests/cram/100zmws_byStrand.t b/tests/cram/100zmws_byStrand.t
index 81f8f5f..456f8ed 100644
--- a/tests/cram/100zmws_byStrand.t
+++ b/tests/cram/100zmws_byStrand.t
@@ -7,6 +7,8 @@ Test ccs on 100 zmws from the lexogen-SIRV dataset, using --byStrand
   >|> \d{8} \d{2}:\d{2}:\d{2}\.\d{3} -|- DEBUG      -|- Consensus -|- [0-9,a-f,x]+|| -|- Skipping read m150825_055401_42161_c100844482550000001823159012311525_s1_p0/413/9570_12297, ALPHA/BETA MISMATCH (re)
   >|> \d{8} \d{2}:\d{2}:\d{2}\.\d{3} -|- DEBUG      -|- operator() -|- [0-9,a-f,x]+|| -|- Skipping read m150825_055401_42161_c100844482550000001823159012311525_s1_p0/429/4100_6514, ALPHA/BETA MISMATCH (re)
   >|> \d{8} \d{2}:\d{2}:\d{2}\.\d{3} -|- DEBUG      -|- operator() -|- [0-9,a-f,x]+|| -|- Skipping read m150825_055401_42161_c100844482550000001823159012311525_s1_p0/2359/6103_8488, ALPHA/BETA MISMATCH (re)
+  >|> \d{8} \d{2}:\d{2}:\d{2}\.\d{3} -|- DEBUG      -|- operator() -|- [0-9,a-f,x]+|| -|- Skipping read m150825_055401_42161_c100844482550000001823159012311525_s1_p0/2436/33592_34506, ALPHA/BETA MISMATCH (re)
+  >|> \d{8} \d{2}:\d{2}:\d{2}\.\d{3} -|- DEBUG      -|- operator() -|- [0-9,a-f,x]+|| -|- Skipping read m150825_055401_42161_c100844482550000001823159012311525_s1_p0/3046/0_2116, ALPHA/BETA MISMATCH (re)
 
   $ grep -c ^+$ test.fq
   200
@@ -64,10 +66,10 @@ Test ccs on 100 zmws from the lexogen-SIRV dataset, using --byStrand
   AAGCAGTGGTATCAACGCAGAGTACTTTTTTTTTTTTTTTTTTTTTTTTTTTGATACTACGAGGACGTCACCCACTGAGGTCTCCGACATGGACACCTAGTCCCGGACTCACCGAACCTACACCGTTCCTTCAGTGTGTTCTTTCGGAGTAGTGAAAAAACGTTGGTCTTCCCGGTCTACTATCCATCGTTCATGTTCGGCTTTTACAAGTTACCTTCACAATTTTACAAAGCAATGCTTGTGGGCTAGGGCACCGCGTTTTGAAGTAAATAGATGTAACCTACCACCCATAAACTGCTCTATACAATTTAAGTTCGTCGTCGCCTTCTTTTTATATCACTAACGTGTACCTACCTTAGAGCGTTACCAAAGTACATATACAGATTTCTCAATGTATTTGACCTGGCTCTCTGCAATCTCTCTCAAGATGCGTAAGCACTTTCAGTAGGACGAATTTAACGGTGGTAATTTCGCACACTTCGCACGTTTA [...]
   +
   RpUIAQ?EkSYT64PJR7AMMNB/0$MZhmmmjaYUTUW`jmmmmmmmldV:55/E4T1>LEBMXG<YOE%SBCNXMUAIBNY.UMZP[WDqWMQ,F[APY5TUFdCIO;X0OQ=m4b^[PY2mS:K1VNmP[T\SY<%YL5]Q71REB[BS^T+mmlXGATLX2N\N+^.jlGo^P\B9\[S:9?TGS>]NX>I?mPDmP8oomSPNpS-VB at kMmM,NMf7kVNM@?FMS:Mm^UN:iMF>TkP^[Ap`MECoS:R,mn\P77;\<qk]TNZ]U]NoCq^[CpE<o]@M9hfP^UP^P[F//NLe.gREW>BkPT[N9OPT.JF_P<fQeL-XW at N[P];i:S^U^[@]BR%d>lYTXUPR7OYBc)hjS^[P[^[^WOZSVHnf:\N<cDS^[*ZJR[@mSGm:Z:\P]UQMj>9DNZNGOAmU[^O7S^NpUO1O>oR7TO^[Hp[PT=m<ok)RL5T\GnC;kEK`N>M>;@HAkPUOE:S:mlC [...]
-  @m150825_055401_42161_c100844482550000001823159012311525_s1_p0/418/ccs/rev np:i:5 rq:f:0.993705
-  AGCAGTGGTATCAACGCAGAGTACTTTTTTTTTTTTTTTTTTTTTTTTTTTGATACTACGAGGACGTCACCACTGAGGGTCTCCGACATGGACACCTAGTCCCGGGACTCACCGAACCTACACCGTTCCCTTCAGTGTGTTTCTTTCGGAGTAGTGAAAAAACGTTGGTCTTCCCGGTCTACTATCCATCGTTCATGTTCGGCTTTTACAAGTTACCTTCAACAATTTTACAAAGCAATGCTTGTGGGCTAGGGCACCGCGTTTTGAAGTAAATAGATGTTAACCTACCACCCATAAAACTGCTCTAAACAATTAGTTCGTCGTCGCTTCTCTTTTTATATCACTAACGTGTACCTACCTTAGAGCGTTACCAAAGTACATATACAGATTTCTCAATGTATTTGACCTGGCTCTCTGCAATCTCTCTCAAGATGCGTAAGCACTTTCAGTAGGACGAATTTACGGTGGTAATTTCGCACACTTCGCACGT [...]
+  @m150825_055401_42161_c100844482550000001823159012311525_s1_p0/418/ccs/rev np:i:5 rq:f:0.993554
+  AGCAGTGGTATCAACGCAGAGTACTTTTTTTTTTTTTTTTTTTTTTTTTTTGATACTACGAGGACGTCACCACTGAGGGTCTCCGACATGGACACCTAGTCCCGGGACTCACCGAACCTACACCGTTCCCTTCAGTGTGTTTCTTTCGGAGTAGTGAAAAAACGTTGGTCTTCCCGGTCTACTATCCATCGTTCATGTTCGGCTTTTACAAGTTACCTTCAACAATTTTACAAAGCAATGCTTGTGGGCTAGGGCACCGCGTTTTGAAGTAAATAGATGTTAACCTACCACCCATAAAACTGCTCTAAACAATTAGTTCGTCGTCGCCTTCTTTTTATATCACTAACGTGTACCTACCTTAGAGCGTTACCAAAGTACATATACAGATTTCTCAATGTATTTGACCTGGCTCTCTGCAATCTCTCTCAAGATGCGTAAGCACTTTCAGTAGGACGAATTTACGGTGGTAATTTCGCACACTTCGCACGTT [...]
   +
-  XNU^PU5nY]ESJYLPTZP^O/[T$kkgYORQ?319CMPT]ZST^hkkkkPPUD\PFTM/ZDq^PICRDFfDSY:W&aZYTDGoP^PRZCq]SDGq[\:X/ll%g?@LZT^EmPRoGfDW>TDkP=l4p;+RM]=>FO3)QYT?B7P2M1(W^OEN3ThdPWTNKPBW[UNn?Ta?e=OD\U[^[DrWYQJMhTW08+gSEqR8Thn^UQn8/lVBR)WMKkP=_4Rf[CR:mmOUL`FNQIiPZ3nbTDX74FL\3TESN8aQ`OIhPYBjSATO\H>,6+B7B3(=AO7ON at A)ZQPKDM.CF/$RHNQg*Z%4/RR<PBL/AL(-C921-Ui\RVHVHPDRDQnSL1D1\GfD\Gd?n[P^QPG9d[8m?aS9WFS[DVDCMDN\0h[M94<R.%9=27D9[7VN at VKCNCF/<9=iCHDNDFJ:9 at 6NN4>>NQOQFJQBR]?E<98GdQ\@Cy5ceQDAq6Ff\EoCfwXBU6A1J3mA;AED@, [...]
+  XNU^PU5nY]ESJYLPTZP^O/[T$kkgYORQ?319CMPT]ZST^hkkkkPPUD\PFTM/ZDq^PICRDFfDSY:W&aZYTDGoP^PRZCq]SDGq[\:X/ll%g?@LZT^EmPRoGfDW>TDkP=l4p;+RM]=>FO3)QYT?B7P2M1(W^OEN3ThdPWTNKPBW[UNn?Ta?e=OD\U[^[DrWYQJMhTW08+gSEqR8Thn^UQn8/lVBR)WMKkP=_4Rf[CR:mmOUL`FNQIiPZ3nbTDX74FL\3TESN8aQ`OIhPYBjSATO\H>,6+B7B3(=AO7ON at A)ZQPKDM.CF/$RHNQg*Z%4-AI<ICL0KB.,/4)&1Q^PSHWGPDRDQnSL1D1\GfD\Gd?n[P^QPG9d[8m?aS9WFS[DVDCMDN\0h[M94<R.%9=27D9[7VN at VKCNCF/<9=iCHDNDFJ:9 at 6NN4>>NQOQFJQBR]?E<98GdQ\@Cy5ceQDAq6Ff\EoCfwXBU6A1J3mA;AED@,g [...]
   @m150825_055401_42161_c100844482550000001823159012311525_s1_p0/420/ccs/fwd np:i:10 rq:f:0.999173
   AAGCAGTGGTATCAACGCAGAGTACTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTGGTAAAGTAATGCCTCTACGTCAGTCGAACAATGTCGTCGTGTAACTCGACGATCTTAGGAGCTACTAAGGAGAGTCTGTAGGGAACCGACTGGGAAGGTGCCACAAGTTTTCTCTACTACTCCGTCTCCTAAAACAACTCCAAGTGGAAGGTCTGTGGGTTTTTGAGTATAGTCCGTATCTAGACCCAAAAGGGCTTACCTTCGCAATGAAAGAATATCCTTATAGACACGAACGGGAAGAACGGAATCGTTATTAATGACGTCGTACAACGTTTTCCAAGTTCTCCTCTTCCTCCGGATTCGGTTTGGGTTATCTCAACTAGTCCTTTCAAAGACATTGGAGAGTTTCACCTTCCCGTTAAGGTAGAACCCTCAGCATGTTTCACCCCCGGTGACCACTCAGTTACGGAATGTTTTTAAGCCACCTCAGCTAG [...]
   +
@@ -76,10 +78,10 @@ Test ccs on 100 zmws from the lexogen-SIRV dataset, using --byStrand
   AAGCAGTGGTATCAACGCAGAGTACTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTGGTAAAGTAATGCCTCTACGTCAGTCGGAACAATGTCGTCGTGTAACTCGACGATCTTAGGAGCTACTAAGGAGAGTCTGTAGGGAACCGACTGGGAAGGTGCCACAAGTTTTCTCTACTACTCCGTCTCCTAAAACAACTCCAAGTGGAAGGTCTGTGGGTTTTTGAGTATAGTCCGTATCTAGACCCAAAAGGGCTTACCTTCGCAATGAAAGAATATCCTTATAGACACGAACGGGAAGAACGGAATCGTTATTAATGACGTCGTACAACGTTTTCCAAGTTCTCCTCTTCCTCCGGATTCGGTTTGGGTTATCTCAACTAGTCCTTTCAAAGACATTGGAGAGTTTCACCTTCCCGTTAAGGTAGAACCCTCAGCATGTTTCACCCCCGGTGACCACTCAGTTACGGAATGTTTTTAAGCCACCTCAGC [...]
   +
   d~]s~w~\~s~~~j~~uh~B~_~~~&~~~~~~~~~~~~~~~dY^v~~~~~~~~~~~i^~t`~~qwg~z~z~~~h~~~~w~~~~]~y~~e~pq~~~~~o~t~y~~~~~~~o~~~o~~p~~o~W|~~~~D~~Uv@~~W`~~M~~e~L~~~~~A~~~~\~~~R~~|~~~7~~~~c~~~~~~~~v~r~~~y~~I~~~~v~~~Y~~~~~W~~~L~i~~r~\~~D~~~~r~oq~q~r~t~~q~~~~~t~T~~\~~~[~~~l~~v~m~u~~y~~~W~~ox~j~~z~P~~b}~~~~~~~~~;~~r~~|~~[~[~~uj\iQq~~~~I~|or~m~~~y~~sG~~~x~a~ZO~~~w~q~o~{~~j~n~~m~~h~h~~S~~~~~~~n~u~z~~~~v~f~uef~~B~~~u~f~~s~np~~~~h~L~e~~~b~~~^~E~G~~\~~~~~~~~~qUw~~~D~~~~:~~^~J~~~~~~m~~~~\~x~sjS~~~~g~mz~~z~s~~y~ [...]
-  @m150825_055401_42161_c100844482550000001823159012311525_s1_p0/428/ccs/fwd np:i:8 rq:f:0.995686
-  AAGCAGTGGTATCAACGCAGAGTACGGGGCTTAAATGTCGGGAAATTGGGTTTGCGCCGCCTTCAGGGGCAGCGATGGGGGGCGACAATTGTGGACCGTATGGACTCCATTATGCTGGGACTCCTCGGGTCAACCGCTCTAAAGCGAAGTTGTTGGACAAACAGTTATGCGTAACTGTAAAGCAAGGTGCCCAAAGTAGACTGAGCGACAGTCGAAACCAGCCCCAATGAACAAGACGCCATTGCAAAACGTCTATACGCTACGGTCAAAGACGCTTCCACACCACATGCCTCTCATGTAGCCTACCTTACGAAGAAATCGCACAAGTCGGTCGCCCAGCGGTGGCATATGTCTTGCCTAACGTTTCTAGACCGATCAGCCTCACGAGTAGCCTGCTTGTGGTGTTTATAGTTTACGCTAGTCCAATCTGTATCGTGCCGCTTTGGTATGGCTATTGTCGGCCTGGATGCAATTGTGCTCGCCATTTCAA [...]
+  @m150825_055401_42161_c100844482550000001823159012311525_s1_p0/428/ccs/fwd np:i:8 rq:f:0.995934
+  AAGCAGTGGTATCAACGCAGAGTACGGGGCTTAAATGTCGGGAAATTGGGTTTGCGCCGCCTTCAGGGGCAGCGATGGGGGGCGACAATTGTGGACCGTATGGACTCCATTATGCTGGGACTCCTCGGGTCAACCGCTCTAAAGCGAAGTTGTTGGACAAACAGTTATGCGTAACTGTAAAGCAAGGTGCCCAAAGTAGACTGAGCGACAGTCGAAACCAGCCCCAATGAACAAGACGCCATTGCAAAACGTCTATACGCTACGGTCAAAGACGCTTCCACACCACATGCCTCTCATGTAGCCTACCTTACGAAGAAATCGCACAAGTCGGTCGCCCAGCGGTGGCATATGTCTTGCCTAACGTTTCTAGACCGATCAGCCTCACGAGTAGCCTGCTTGTGGTGTTTATAGTTTACGCTAGTCCAATCTGTATCGTGCCGCTTTGGTATGGCTATTGTCGGCCTGGATGCAATTGTGCTCGCCATTTCAA [...]
   +
-  a}XAQY^6c^c5O at pNCB]Eg[`eB?~jj[F~7~xfceIC~kR~sIqE~Y5~vFT>:ga at oC~Ii?Wn|^l_^boN&geftLI\FC;{C~KMQ}iEebjqjT~oJdK~jJgFSN\hJ~|]9?Lsi]<~rQVNuJ~b]g]PCd}`K`\w^I~`+zRgi:Odc^qcL~\h_X]d9hQ7\RRg|LI[mQ~Sb8zdKQN\?jdc/NHaZ_`WJqbgZ^:nX9~Zb-~~k[meaMp^_~`EXK8R]W~LH>kql^bRIfkjfQJWT?BN~i_H~~bq^b^Y~7}a8T>bg8X^O%PNFaY\U`SZJ:~hqE`Gtm[d<oaP~i>X_MWJ^~aPJCnh]M8po\_]?~iQ~Yjf`daPLV~bG~fZm\`Lo~\RXJ%ChbsgJh_G|cAXSJ?W[c_FLabNDoYLPheK at ks^dqbL~`hGM[RXRO.~^wi^gdgoSYORSH~OZ%pF4_a3d@~GPTE~bgXOtJljM~[Wc\N~Ur=fPCi]_Gkn5v~[^u [...]
+  a}XAQY^6c^c5O at pNCB]Eg[`eB?~jj[F~7~xfceIC~kR~sIqE~Y5~vFT>:ga at oC~Ii?Wn|^l_^boN&geftLI\FC;{C~KMQ}iEebjqjT~oJdK~jJgFSN\hJ~|]9?Lsi]<~rQVNuJ~b]g]PCd}`K`\w^I~`+zRgi:Odc^qcL~\h_X]d9hQ7\RRg|LI[mQ~Sb8zdKQN\?jdc/NHaZ_`WJqbgZ^:nX9~Zb-~~k[meaMp^_~`EXK8R]W~LH>kql^bRIfkjfQJWT?BN~i_H~~bq^b^Y~7}a8T>bg8X^O%PNFaY\U`SZJ:~hqE`Gtm[d<oaP~i>X_MWJ^~aPJCnh]M8po\_]?~iQ~Yjf`daPLV~bG~fZm\`Lo~\RXJ%ChbsgJh_G|cAXSJ?W[c_FLabNDoYLPheK at ks^dqbL~`hGM[RXRO.~^wi^gdgoSYORSH~OZ%pF4_a3d@~GPTE~bgXOtJljM~[Wc\N~Ur=fPCi]_Gkn5v~[^u [...]
   @m150825_055401_42161_c100844482550000001823159012311525_s1_p0/428/ccs/rev np:i:8 rq:f:0.99215
   AAGCAGTGGTATCAACGCAGAGTACGGGGCTTAAATGTCGGGAAATTGGGGTTTGCGCCGCCTTCAGGGGCAGCGATGGGGGCGACAATTGTGGACCGTATGGACTCCATTATGCTGGGACTCCTCGGGTCAACCGCTCTAAAGCGAAGTTGTTGGACAAACAGTTATGCGTAACTGTAAAGCAAGGTGCCCAAAGTAGACTGAGCGACAGTCGAAACCAGCCCCAATGAACAAGACGCCATTGCAAAACGTCTATACGCTACGGTCAAAGACGCTTTCCACACCACATGCTCTCATGTAGCCTACCTTACGAAGAAATCGCACAAGTCGGTCGCCCAGCGGTGGCATATGTCTTGCCTAACGTTTCTAGACCGATCAGCCTCACGAGTAGCCTGCTTGTGGTGTTTATAGTTTACGCTAGTCCAATCTGTATCGTGCCGCTTGGTATGGCTATTGTCGGCCTGGATGCAATTGTGCTCGCCATTTCAAC [...]
   +
@@ -92,10 +94,10 @@ Test ccs on 100 zmws from the lexogen-SIRV dataset, using --byStrand
   AAGCAGTGGTATCAACGCAGAGTACGGGGTTGGTGTATTTATCCGCTACGTGGTGGATGAACATGGATGCGAACGACATTTCGAAATATACGCAATGATATCCAACCCTACCGAAACAGCAATAATTGTAGAAGGTAGCATATCATGCCGAGAGTTTACTACGTTGTAGCGAGTTTAGTTGAAATAGTTTGTGATGTGTAAACTAAAACATACCAAATGGTAAACTTGTCACCCCCATTTACATTGCGACAGACACAGTTATGGAGTGGATGGAAGTGTGTTCGACTGTCAAGACCCTTCTATAATAGTCGAACCAGTACGGTAAGTGGGCAACATGCCCATATAAGTCGAAGCATTTCAAATGGTTCATCCAGTAGACGACGATGTCCTAGACAGTCATGTCTCTTCCCCATTTGAAGTCATGTAGTGGTTGTCTACTTTTTCATTGAAGACGTCCACCTCAACGCTATGAACGTTAGTTGAGACAATG [...]
   +
   FiMW[NY3oY[[WOmWNWX4?K[[R0MZWMkCpZNV&2dgXBFU4U[X:B+AdZ>f5TM?lVYB at jO0IPM<kT8YWT+R`VM7lfWXXV?LVOm[KSIWIGiJi0OeY[JmM/laV[NU+i.+iMlN[Z;1O/OFYNWZXA at QPXN<fJQ%GK2c5/UDYVKId8BXNWMBL8kkZNNmLA``DUKEhhNY8YZMQH,6UkUZ7mmkVZ[[Jm?nmZApY'jjUMf8WPZ*jjjh?$edMLOHONWN[W[N[W[WYKJk[ZAkO3@@N+VBkHS><?:?0RS5XT>'1>OmN[Amk<jUF at R)hN[KSUM*iHkBL[[V?m at NmNZ:WjV<k?XDLAmkAVX,ITLQ)IKlNWZ8kkU8llY=R<jV[Y6iYN[ZMBS7>=L[Z=WIlDYOV?YOZDZX=VR.S=\<lmm[;[<'JiIYRPCLDT:O5XLlLPWY[S2ll`QV[BS:NlN[T5OHm[IlB>Hc1NV@(S8NkWM9SZNNmMU9U?JnY6 [...]
-  @m150825_055401_42161_c100844482550000001823159012311525_s1_p0/456/ccs/fwd np:i:8 rq:f:0.999079
+  @m150825_055401_42161_c100844482550000001823159012311525_s1_p0/456/ccs/fwd np:i:8 rq:f:0.999066
   AAGCAGTGGTATCAACGCAGAGTACTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTGGTAACTATCTTAAAAACTTCTAAACTGCTGCTTAGTAGGCAATAATCGACTAAATCCATAATTTTTGCGACCAAACGCAAACTTCAAGAATTTTAGACTTTGAAGACCGCATCGGCAAACCCCATTTTAGATACCACTTTAATTTCCAGTTAATCTACGACGCAAGTCACTTCTTTGTCGTTAAGTTTTATTTAACTGTCGCAAACAACAAAATGGTTTTCTAAATTTACTAAAACCAGGACGCACCTAACTTTCTAAACAAGCACAAGTTTAGCTTCTTCGTAAACGTCACCGCGAACTTTGACGCAAGAATTTTCCATGACCATTTCTGGTTGGTTAGCCGAATTTGGCAGTTCATGTTTTTCCACATAGCCATTGACTCCCACGAATAGGTCTCTTTCTTCTTGTTCCATGCGAATGTAAACGATTAGGC [...]
   +
-  ~~~zplzR~bk^BdsH}c[~~~~sy%~~~~~~~~~~~~~~~~~~~~~~~~~~~~~_[~~h~ybq~{|~@~~~~m_~ay/~~t~~r`Wxx~~~}~h~ZV~XW~lw~pv~a~~\\~m~j~8~~~~UfcV8~N~~]uF?mjPi~e4~~f~4~~l]~lxK~ue]~~m7~;qv~um~_[~v8~~]GI~~~xx{~~2~Zb6~~_~Y~~J~~~R~`|{a~xER|e~dO~zvd~wi~n_~~l~ck}~P~lH~~~]N~lK~r~~~YxSL~~zs~l;~~~wk~E~~~w~D~~N~~~x~L~~~g~~i~~chVdI~~A~tQ~~|~U~~y\~~{~za~ln~~~~zg~MX~d~~;~yd~~O~P~[aje~kh~~~~~~pz~xp~]~~~X~j~~~Y~~V~~e~O~W~O~q~wqU~~v~h~~f~~~~_~jzyX@~~~cE~fm~~~~n~~~~~~m~R~~~~mG~~wo~~|~~F~~n~~~~~~~~i~d~x~~n~~x~[~~~~~r~&n~~ [...]
+  ~~~zplzR~bk^BdsH}c[~~~~sy%~~~~~~~~~~~~~~~~~~~~~~~~~~~~~_[~~h~ybq~{|~@~~~~m_~ay/~~t~~r`Wxx~~~}~h~ZV~XW~lw~pv~a~~\\~m~j~8~~~~UfcV8~N~~]uF?mjPi~e4~~f~4~~l]~lxK~ue]~~m7~;qv~um~_[~v8~~]GI~~~xx{~~2~Zb6~~_~Y~~J~~~R~`|{a~xER|e~dO~zvd~wi~n_~~l~ck}~P~lH~~~]N~lK~r~~~YxSL~~zs~l;~~~wk~E~~~w~D~~N~~~x~L~~~g~~i~~chVdI~~A~tQ~~|~U~~y\~~{~za~ln~~~~zg~MX~d~~;~yd~~O~P~[aje~kh~~~~~~pz~xp~]~~~X~j~~~Y~~V~~e~O~W~O~q~wqU~~v~h~~f~~~~_~jzyX@~~~cE~fm~~~~n~~~~~~m~R~~~~mG~~wo~~|~~F~~n~~~~~~~~i~d~x~~n~~x~[~~~~~r~&n~~ [...]
   @m150825_055401_42161_c100844482550000001823159012311525_s1_p0/456/ccs/rev np:i:9 rq:f:0.998884
   AAGCAGTGGTATCAACGCAGAGTACTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTGGTAACTATCTTAAAAACTTCTAAACTGCTGCTTAGTAGGCAATAATCGACTAAATCCATAATTTTTGCGACCAAACGCAAACTTCAAGAATTTTAGACTTTGAAGACCGCATCGGCAAACCCCATTTTAGATACCACTTTAATTTCCAGTTAATCTACGACGCAAGTCACTTCTTTGTCGTTAAGTTTTATTTAACTGTCGCAAACAACAAAATGGTTTTCTAAATTTACTAAAACCAGGACGCACCTAACTTTCTAAACAAGCACAAGTTTAGCTTCTTCGTAAACGTCACCGCGAACTTTGACGCAAGAATTTTCCATGACCATTTCTGGTTGGTTAGCCGAATTTGGCAGTTCATGTTTTTCCACATAGCCATTGACTCCCACGAATAGGTCTCTTTCTTCTTGTTCCATGCGAATGTAAACGATTAGGCG [...]
   +
@@ -108,10 +110,10 @@ Test ccs on 100 zmws from the lexogen-SIRV dataset, using --byStrand
   AAGCAGTGGTATCAACGCAGAGTACGGGGCATACTGCAAGACTTGTAGGCCCATGAATTACCCGCTTAAGGCAATGGGTAGACCTTTCCTTGCCGCGTGGAACAAACCGCCATGAGTGTTTTACGTTTACGGTCGGCGACCGGAGTCACAGCGCGACCAACGGGGCCAGGCAAAGGCCCATAGGCTTTTCCATCGGCACGCGACCGATTCCATCAAGTGTTAGGTGCAATCCCCATTCGGGACGGACACGCGAGAGCGTTAGTCGGCGCGTGCGCGGGACTATTTAGCGAAGGTCGCCGATCGTTTGCCCGTAAAACTAACTGGCAAAAGCCTAAGTGCTGTTTCGGGTGCAATGGTATAACTTCCCACATTTAGCCGAATAGCGCCAACAGCGTTATTATTTGGAACCAAGCAGTGGGCGATGTCAGCGACAATTCCACTTTGGTAGAGGTCGTTCTTTTGTAGAAAACAATCTAACATAACTATGACA [...]
   +
   .OIRTGG:YQJVQIW:F(UJY)H>A&]^^UI-T at UBZ9\CTFTuQccBS4rrbZ=TrB\C.S:NZDs)ID}[?]_8{wK]Na;r:T:Hh>POKlPAHD?^1qY.rq:oO:o^\Qb?F8-frrb[M:ajKY6e]Y2wZQb=q at Y?QL4]Y2CUKUKJ8>Mj[6qahMtb4vWIls- at Bitdcb2xZ3vkM=sbc\DsDHCLHO_ at iPa/g'm3[SVtPNP;IX0`&<+>US;VWUa/nV:rbc[2w`C`[PBIIK[<ZQKvcQc[2uZPD;IJ\PX9v|bEacEr``P[NMYB^cZ<NoOOJG'ET[O6si;L1bdg(KRi[Y%uT*cbW?LoMUtM[;VFL9Ld[:|O18ETrbBN%[[Cs[Tp3rpaV3EslKL<jPUtMaNF9>^EsYKMSJRsX at mb%hAAl)eIpVtQZMM\,xxWLbbO[[cR\Rc\UvUuOwbC(UFDtccQcB{c\RQuY3aOTQccQ5sbN?Rkb[N2bZcbCsXVVbR^\b [...]
-  @m150825_055401_42161_c100844482550000001823159012311525_s1_p0/603/ccs/fwd np:i:6 rq:f:0.997493
-  AAGCAGTGGTATCAACGCAGAGTACTTTTTTTTTTTTTTTTTTTTTTTTTTGTTTAACGCAAATGCCACCAATACATATGTGTCCTCTTAATGTTTGCATGCTTAATCTTTTGATTATTATTTCCTCTTTCTTTCTATTACTAACTTTGTAACTCTCGCTAACCGAATCAACATAAATACGTCAACGAATCAAATGTTGATCTCAAATATCTGTGTCCATGAAATTTCGGATCGTAATCTGCTCTACTTTTGTTATTACAACAAGAACTTCGACTAAAGAACGGACTATCTTGTCTAATAATAATGGCACTAAGTGCATACTTTCTCGACTACATTGACGACTCAAAATAAGAAAGGGAGTTTTTATACATTGACCTAACTCACTACTACGCCTTGGTTACCTTTGAACCTTTCGTTGTCAAAGTTCGTACGATGGTAAGTGCTTTCTACTCCTACCGCTATTTGGTTGAGAACCTGTTAAATGAGATGG [...]
+  @m150825_055401_42161_c100844482550000001823159012311525_s1_p0/603/ccs/fwd np:i:6 rq:f:0.997492
+  AAGCAGTGGTATCAACGCAGAGTACTTTTTTTTTTTTTTTTTTTTTTTTTGTTTAACGCAAATGCCACCAATACATATGTGTCCTCTTAATGTTTGCATGCTTAATCTTTTGATTATTATTTCCTCTTTCTTTCTATTACTAACTTTGTAACTCTCGCTAACCGAATCAACATAAATACGTCAACGAATCAAATGTTGATCTCAAATATCTGTGTCCATGAAATTTCGGATCGTAATCTGCTCTACTTTTGTTATTACAACAAGAACTTCGACTAAAGAACGGACTATCTTGTCTAATAATAATGGCACTAAGTGCATACTTTCTCGACTACATTGACGACTCAAAATAAGAAAGGGAGTTTTTATACATTGACCTAACTCACTACTACGCCTTGGTTACCTTTGAACCTTTCGTTGTCAAAGTTCGTACGATGGTAAGTGCTTTCTACTCCTACCGCTATTTGGTTGAGAACCTGTTAAATGAGATGGT [...]
   +
-  _~a[Q`jR~hRfD5oE^A%Y__Pf]%~~~~~~~~~~~~~~~~~~~~~~~~lj>~Z7mAUcAxyui?pYH~?jvshst]tjYkq2~occ~Q~ukK~~kgtvlgd~R~pg6~~~ltd~\Q~sQ~~S~pfK~~f>~jPo0b~^fs>veL~~kv`~bLN]MSev^|MRiR~ufP~e^tW~~vtglvfM~clU~ve=~~pUc~ltvgvgL~~vtugsmof[B~svlM~uK~~dF~rveTsL~nfulgvgu\d=~~~iX|se~rR,WRU~h[vdb~:WqcpDRhjL~c[~]frGqfd~j]apa~uR~uT~r2~NrfuP~ktTdIq]5Bd~NXdltgq,LZc~Ojfk^fva>rt~ub~lPlWQ~~]kK~~~~\sk<pT~ksG~uT~gve]fvtdb^`VT~e~[~K~]T~?~~j>~Rw0ppdTb~UqeDuaie~glq1`i2r4~v[~SrUeZ~~d[\cr=sBLE~kgu]L~~Y~L~kqjN~W~wkR~=|{rlqOXsY~ [...]
+  _~a[Q`jR~hRfD5oE^A%Y__Pf\%~~~~~~~~~~~~~~~~~~~~~~~tj>~Z7mAUcAxyui?pYH~?jvshst]tjYkq2~occ~Q~ukK~~kgtvlgd~R~pg6~~~ltd~\Q~sQ~~S~pfK~~f>~jPo0b~^fs>veL~~kv`~bLN]MSev^|MRiR~ufP~e^tW~~vtglvfM~clU~ve=~~pUc~ltvgvgL~~vtugsmof[B~svlM~uK~~dF~rveTsL~nfulgvgu\d=~~~iX|se~rR,WRU~h[vdb~:WqcpDRhjL~c[~]frGqfd~j]apa~uR~uT~r2~NrfuP~ktTdIq]5Bd~NXdltgq,LZc~Ojfk^fva>rt~ub~lPlWQ~~]kK~~~~\sk<pT~ksG~uT~gve]fvtdb^`VT~e~[~K~]T~?~~j>~Rw0ppdTb~UqeDuaie~glq1`i2r4~v[~SrUeZ~~d[\cr=sBLE~kgu]L~~Y~L~kqjN~W~wkR~=|{rlqOXsY~U [...]
   @m150825_055401_42161_c100844482550000001823159012311525_s1_p0/603/ccs/rev np:i:6 rq:f:0.994991
   AAGCAGTGGTATCAACGCAGAGTACTTTTTTTTTTTTTTTTTTTTTTTTTTTTTGTTTAACGCAAATGCCACCAATACATATGTGTCCTCTTAATGTTTGCATGCTTAATCTTTTGATTATTATTTCCTCTTTCTTTCTATTACTAACTTTGTAACTCTCGCTAACCGAATCAACATAAATACGTCAACGAATCAAATGTTGATCTCAAATATCTGTGTCCATGAAATTTCGGATCGTAATCTGCTCTACTTTTGTTATTACAACAAGAACTTCGACTAAAGAACGGACTATCTTGTCTAATAATAATGGCACTAAGTGCATACTTTCTCGACTACATTGACGACTCAAAATAAGAAAGGGAGTTTTTATACATTGACCTAACTCACTACTACGCCTTGGTTACCTTTTGAACCTTTCGTTGTCAAAGTTCGTACGATGGGTAAGTGCTTCTACTCCTACCGCTATTTGGTTGAGAACCTGTTAAATGAG [...]
   +
@@ -191,7 +193,7 @@ Test ccs on 100 zmws from the lexogen-SIRV dataset, using --byStrand
   @m150825_055401_42161_c100844482550000001823159012311525_s1_p0/1034/ccs/fwd np:i:11 rq:f:0.994946
   AAGCAGTGGTATCAACGCAGAGTACGGGATCGTGGCCCAGTCAGTGATTACGTTGACCATGAGTCTGGCTGTTCTTGGTTCACCATTAGCTGTGGTGACAATAACGGGCATTGTGGCAACGATACGTCGTACTGCAAGTCCCACTGTAACTAAGACAATTCGGATTCGACCGATACTTGGTCTGGTTCGTTAACTTCGCGTACCTTCTGCTTTACCAGCAGGTCGTCAACGACGAGCCACCGTAACGAGTGTGGTTTCGGTTCGCTTGTTGGTGCTCCAATTTCCAGTACCGAAGAGGTAATTGCAACTTCAATTGCTTAGTTGACGTGACCTTTCGGGTTGTCATGGACTACCGACGGTATCTCATACGTGACCTCGTTGTTGACCTCGTTCTTCATTCTGCACAGACTACAACGTTAGGACTACGGAACCAGTGTGAAGTTGACGGACGCGCTAGTTTATCAGATGCGGTTTATTGGATTGGTTACAA [...]
   +
-  w~gB}bmSp>NkU7kN=q~m~auZK+mMoGrP~KiA{f[m~fva0&TY}ec\OXT{Aimt at dgg3A%Cot[,AEP[VwNub at Zj]7gmlg|n|D~UbycSn}U}_0Vi|~[u\oR~`^zfhsn~xy~vx~~fc at Ocv{~;v~dnqPpV}RwJoja[\~k~]^~~g~{dx/CSs4NbEy`~yDlO~X{w\d~jj+Z~cHTrzqE~b~e~i63TpeR~~TYZOj`7SzXNUB;NVq~kCzh88*JGjH2KRb_~V|=wSI<MCI0cV;G4;n&GK=0'0HHWE*B<WB^I_K\GY~vx_~~z~h~yg\~_s~PUvr~hh[~rxP~xCSNLt{O~<~ph<~n&GIYLrG8]~e}j@~U~lS~mAS\ukbZj6eu`p5OWObK{Kik]PChX>No~yi~pW/^nhdRb={``:m|dFvmzu~qf~kOtJcQ\$wTyMw~tw4O}F*Qgq=NqyR_jk{ncuL|yp&Kn\R?>c\p.~~}_~XoVdeVzF:[h[_ [...]
+  w~gB}bmSp>NkU7kN=q~m~auZK+mMoLdP~KiA{f[m~fva0&TY}ec\OXT{Aimt at dgg3A%Cot[,AEP[VwNub at Zj]7gmlg|n|D~UbycSn}U}_0Vi|~[u\oR~`^zfhsn~xy~vx~~fc at Ocv{~;v~dnqPpV}RwJoja[\~k~]^~~g~{dx/CSs4NbEy`~yDlO~X{w\d~jj+Z~cHTrzqE~b~e~i63TpeR~~TYZOj`7SzXNUB;NVq~kCzh88*JGjH2KRb_~V|=wSI<MCI0cV;G4;n&GK=0'0HHWE*B<WB^I_K\GY~vx_~~z~h~yg\~_s~PUvr~hh[~rxP~xCSNLt{O~<~ph<~n&GIYLrG8]~e}j@~U~lS~mAS\ukbZj6eu`p5OWObK{Kik]PChX>No~yi~pW/^nhdRb={``:m|dFvmzu~qf~kOtJcQ\$wTyMw~tw4O}F*Qgq=NqyR_jk{ncuL|yp&Kn\R?>c\p.~~}_~XoVdeVzF:[h[_ [...]
   @m150825_055401_42161_c100844482550000001823159012311525_s1_p0/1034/ccs/rev np:i:12 rq:f:0.997156
   AAGCAGTGGTATCAACGCAGAGTACGGGGATCGTGGCCCAGTCAGTGGATTACGTTGACCATGAGTCTGGCTGTTCTTGGTTCACCATTAGCTGTGGTGACAATAACGGGCATTGTGGCAACGATACGTCGTACTGCAAGTCCCACTGTAACTAAGACAATTCGGATTCGACCGATACTTGGTCTGGTTCGTTAACTTCGCGTACCTTCTGCTTTACCAGCAGGTCGTCAACGACGAGCCACCGTAACGAGTGTGGTTTCGGTTCGCTTGGTTGGGTGCCCAATTTCCAGTACCGAAGAGGTAATTGCAACTTCAATTGCTTAGTTGACGTGACCTTTTCGGGTGTCATGGACTACCGACGGTATCTCATACGTGACCTCGTTGTTGACCTCGTTCTTCATCTGCACAGACTACAACGTTAGGACTACGGAACCAGTGTGAAGTTGACGGACGCGCTAGTTTACAGATGCGGTTTATTGGATTGGTTACA [...]
   +
@@ -228,14 +230,14 @@ Test ccs on 100 zmws from the lexogen-SIRV dataset, using --byStrand
   AAGCAGTGGTATCAACGCAGAGTACGGGGTGCTCGCCATTTCAACTAGTGCAGTTGCTAAAGTGCCAACTAAGGTTCGTCTTGAAGCAATCGGTAGTATCTGCAGTCAAGTCGTAGTCGTAGGTATGGCACTTGTCGTGCGTCTAGGACGCGTTGAAGCTATCTTATTGCCCGAAGGAGCCGAAAGTCTGGGACACGTCGTGGGACGTATCGTTAGGACTATGGGACTAGTCGTCTTCGGTCTTACAAATGTTGCAATGCCCTGTGAGCTACTTATGAAACATGAATGGTCGGTCTTGTGGTCGCTTTTGTCGAAATCACCGAAGTGCGTATAATTGATGAACGAGTCGAAGTCGAAGTTGTTCAACAAGAGAGTTAGGTAGTGCCGCTTTGAAAAAGTAATAGTGCAAATAAGAAAGTAAGACTGTATCGGAGACGACTTTTTAATAGTAGTAATTCTCGGTACAACTAAACCAGTAATTTCAGACACT [...]
   +
   v~~aT|p]~z~hy|~lyM~;eyd~a3~~~xlwh~mN~~[~~z~~~~~~(|b~Xm~l~~Y~~ar~m~k~~s~~?~~~~y~~s~~m~_~w~~~]~~~~~~~~c~~~y~~~~ka~vr~~~~w]~_~~~[Y~T^~m~~t~~MRl~w~~~a~~~q~~J~~K~~~~~~~t~~r~~\~~~~~L~~~g~s`~~~~~~H~~}z~~Lu~x~K~~~~{v~U~~S~~P~~~~~~J~~~~u~wv~]]~o~~v~~~t~~iq~~~~1}n(|~tu_~~s`~w~~~~~~]~~~~`~~~~~_q~cs~~~o~3~Q~z8S~~~x~?~~~l~p]a~~~x~m~wl~~~d]U~~lj~v~~U~~~~~~~~~~~~~y~~~~~~i~~S~~q~~~~w~~~yt~~d~~~lqqk~u~7~cX@~~~k~~Y~~~slp~i~~~~~~Z~~~wl~y~l~x~~v~K~yq~~[~~4~~~~~~~~~i~y~~~p~~~~@~Y~~q~o~J~~N~~vqT~c~~~~n~~~~z [...]
-  @m150825_055401_42161_c100844482550000001823159012311525_s1_p0/1216/ccs/fwd np:i:11 rq:f:0.99572
+  @m150825_055401_42161_c100844482550000001823159012311525_s1_p0/1216/ccs/fwd np:i:11 rq:f:0.995676
   AAGCAGTGGTATCAACGCAGAGTACGGGGCGATGGGGGCGACAATTGTGGACCGTATGGACTCCATTATGCTGGGACTCCTCGGGTCAACCGCTCTAAAAGCGAAGTTGTTGGACAAACAGTTATGCGTAACTGTAAAGCAAGGTGCCCAAAGTAGACTGAGCGACAGTCGAAACCAGCCCCAATGAACAAGACGCCATTGCAAAACGTCTATACGCTACGGTCAAAGACGCTTCCACACCACATGCTCTCATGTAGCCTACCTTACGAAGAAATCGCACAAGTCGGTCGCCCAGCGGTGGCATATGTCTTGCCTAACGTTTCTAGACCGATCAGCCTCACGAGTAGCCTGCTTGTGGTGTTTATAGTTTACCGCTAGTCCAATCTGTATCGTGCCGCTTGGTATGGCTATTGTCGGCCTGGATGCAATTGTGCTCGCCATTTCAACTAGTGCAGTTGCTAAAGTGCCAACTAAGGTTCGTCTTGAAGCA [...]
   +
-  a~lYaXa\~}P(<&bYWfsS~T~~g<~pt`bnY,~~~~NKmP]eQD:`G`eN~{~v~A~]>_I~li~zlc^iI~~~gsF~zQL~~wQk~Kpybq`r$R[`lfe=~dH~x[qW}YaKueNrIU~~qtOerQ~T~FpK~yd=ZvJk~=3_i;w~r;Bm[c~Qm@]f~Z~f~h~B~~M~cX/~~~h~~Ki~]m~pvDpF~q`~zRC`y~Y~iF~~~p at WU}idB~~2Om8=Y)rBEr$~sccIdL\G^NFpZn;aVo~kj=~~~D~X~mklAxPHusfg^dZmx~i^PB~eaf?MevYFS~~Z~VNw>F]aks~~'~~m~m~c~~U~~m~6~o|~j~~8~~hXZijT~~~0~~^\n~~~B~ziGfW~~~m8k~g$@A]t>hB9~L~ch~Mt~ghj~}F~Hdg~p~~q}2vTx~R~W~UN}=sj*aBdkjd~W~s~~n~3n4~zJ~uj[~j~~~~qfWmm~~p~Q~~~~l0~OO@~l~b~W~UjP]o~qh~~mk [...]
-  @m150825_055401_42161_c100844482550000001823159012311525_s1_p0/1216/ccs/rev np:i:12 rq:f:0.997323
-  AAGCAGTGGTATCAACGCAGAGTACGGGGCGATGGGGGCGACAATTGTGGACCGTATGGACTCCATTATGCTGGGACTCCTCGGGGTCAACCGCTCTAAAGCGAAGTTGTTGGACAAACAGTTATGCGTAACTGTAAAGCAAGGTGCCCAAAGTAGACTGAGCGACAGTCGAAACCAGCCCCAATGAACAAGACGCCATTGCAAACACGTCTATACGCTACGGTCAAAGACGCTTCCACACCACATGCTCTCATGTAGCCTACCTTACGAAGAAATCGCACAAGTCGGTCGCCCAGCCGGTGGCATATGTCTTGCCTAACGTTTCTAGACCGATCAGCCTCACGAGTAGCCTGCTTGTGGTGTTTATAGTTTACGCTAGTCCAATCTGTATCGTGCCGCTTGGTATGGCTATTGTCGGCCTGGATGCAATTGTGCTCGCCATTTCAACTAGTGCAGTTGCTAAAGTGCCAACTAAGGTTCGTCTTGAAGC [...]
+  x~}hujte~~H'<&bYWfsS~T~~g<~pt`bnY,~~~~NKmP]eQD:`G`eN~{~v~A~]>_I~li~zlc^iI~~~gsF~zQL~~wQk~Kpybq`r$R[`lfe=~dH~x[qW}YaKueNrIU~~qtOerQ~T~FpK~yd=ZvJk~=3_i;w~r;Bm[c~Qm@]f~Z~f~h~B~~M~cX/~~~h~~Ki~]m~pvDpF~q`~zRC`y~Y~iF~~~p at WU}idB~~2Om8=Y)rBEr$~sccIdL\G^NFpZn;aVo~kj=~~~D~X~mklAxPHusfg^dZmx~i^PB~eaf?MevYFS~~Z~VNw>F]aks~~'~~m~m~c~~U~~m~6~o|~j~~8~~hXZijT~~~0~~^\n~~~B~ziGfW~~~m8k~g$@A]t>hB9~L~ch~Mt~ghj~}F~Hdg~p~~q}2vTx~R~W~UN}=sj*aBdkjd~W~s~~n~3n4~zJ~uj[~j~~~~qfWmm~~p~Q~~~~l0~OO@~l~b~W~UjP]o~qh~~mk [...]
+  @m150825_055401_42161_c100844482550000001823159012311525_s1_p0/1216/ccs/rev np:i:12 rq:f:0.997025
+  AGCAGTGGTATCAACGCAGAGTACGGGGCGATGGGGGCGACAATTGTGGACCGTATGGACTCCATTATGCTGGGACTCCTCGGGGTCAACCGCTCTAAAGCGAAGTTGTTGGACAAACAGTTATGCGTAACTGTAAAGCAAGGTGCCCAAAGTAGACTGAGCGACAGTCGAAACCAGCCCCAATGAACAAGACGCCATTGCAAACACGTCTATACGCTACGGTCAAAGACGCTTCCACACCACATGCTCTCATGTAGCCTACCTTACGAAGAAATCGCACAAGTCGGTCGCCCAGCCGGTGGCATATGTCTTGCCTAACGTTTCTAGACCGATCAGCCTCACGAGTAGCCTGCTTGTGGTGTTTATAGTTTACGCTAGTCCAATCTGTATCGTGCCGCTTGGTATGGCTATTGTCGGCCTGGATGCAATTGTGCTCGCCATTTCAACTAGTGCAGTTGCTAAAGTGCCAACTAAGGTTCGTCTTGAAGCA [...]
   +
-  .eUzt^bFscS~~X|y[H~S^l~~~%sJ[uAZf%~~a\vTPvu~e~_d5xz\~M~LfH~~OPDz~gp~~Jr~F~~i~~b~~[*quuxYe~8}o^~m~U~~g~VQ~e|~T^~:~nxE~ieyiR~PlCe at H]X|~]YT~]1j~~:~gMM~~>~~gl~ZufeViZ~m~ZQl~GjU~}@xjO?~~~DkYfBH[_Il~]eW~Wo~k[6~~+G_Lvpop}okolS|~Z~XN`t~\~~Wqp~M~~q~j~i>Y~j~fVl~j~ko~VE~~~:LJb~~VQ~U^K~~~kocEbi]sdMwwdh>qxrh3XM~~?~~~Y~qosqt~[D~~w~|jT~~v~~_~k~lxZT~kh~~]~`m~kZfCiwh:qRw[>.~Y]^t~~~~qa~~~~jmpPCyD~`~m~~p~i~~ZzXI~Rgf~<~e~|X~~PxL~j~pA~K~}U~~~hpV~eoXhkp~|i[~xDzpZ0~[~~dJmmwYioW~iX~npxK:~Cre}{~U~_~ifQHIql^~BX [...]
+  %J~yftE~eS~~X|y[H~S^l~~~%sJ[vAZf%~~a\vTPvu~e~_d5xz\~M~LfH~~OPDz~gp~~Jr~F~~i~~b~~[*quuxYe~8}o^~m~U~~g~VQ~e|~T^~:~nxE~ieyiR~PlCe at H]X|~]YT~]1j~~:~gMM~~>~~gl~ZufeViZ~m~ZQl~GjU~}@xjO?~~~DkYfBH[_Il~]eW~Wo~k[6~~+G_Lvpop}okolS|~Z~XN`t~\~~Wqp~M~~q~j~i>Y~j~fVl~j~ko~VE~~~:LJb~~VQ~U^L~~~kocEbi]sdMwwdh>qxrh3XM~~?~~~Y~qosqt~[D~~w~|jT~~v~~_~k~lxZT~kh~~]~`m~kZfCiwh:qRw[>.~Y]^t~~~~qa~~~~jmpPCyD~`~m~~p~i~~ZzXI~Rgf~<~e~|X~~PxL~j~pA~K~}U~~~hpV~eoXhkp~|i[~xDzpZ0~[~~dJmmwYioW~iX~npxK:~Cre}{~U~_~ifRHIql^~BX[ [...]
   @m150825_055401_42161_c100844482550000001823159012311525_s1_p0/1226/ccs/fwd np:i:5 rq:f:0.986061
   AACAGTGGTATCAACGCAGAGTACTTTTTTTTTTTTTTTTTTTTTTTTTTTCCAATCTGGCAGATTAGATACAGCTATAGAGCGAATCACCACGTCTCCTAGATAACTGGCAAATCTTCACATTTACGCAAGACCATAGAATAGTCCATAAGCAACATATTGCCGCATCGACCAAATCATGGCTTTGCACCTCCCAACTTGCCTGAATCGTGTCAGACTATAGCGGGACGTTCGACCCATACTACTCATTCGATTACGCATTCACCTGACGAGAATAGCCATTCTTCCTGAACATACGTTAGAAGTAGTTGGTTAATGCTTGTCTACATTTGAGTGCGAAGCCACTAGGTTTGCCACTGTTGACCACTCAGCACGCAATCTGCAAGATACGCAGTAATGCTAAACCATACTATTTGACTTTGATGTTCTATCACTGGGTTAATGCCTGCTGCTACCTGACTTTTAGTCGCGAGCACAACGCTTCTTGCTA [...]
   +
@@ -256,10 +258,10 @@ Test ccs on 100 zmws from the lexogen-SIRV dataset, using --byStrand
   AAGCAGTGGTATCAACGCAGAGTACGGGACCGTGAGCCCCCACTTCGATCTGTAAATGGTAATCCCTTGTAAAACCTCATCTCCAAAAACAGTATACGCAGTACAGCTGATGTGATCCTCTCTACTATCTTCTCTGAGGAACCATGAGATGGATAGTGGGGGACCTGAGTCATACTAGGGTAACTTCTTATATGGTGACATCACTCCTACCGTAGAGGGGGACGGTAGTCTGTGGGAAATCTACCCTAGTGAAGAAAGGTAAGAGAATGTCTGAACATTACCTGTAGACGAAGGTACTCTCAGAACAACTACTCTCACATACGGAAAGGTTTGGGTCCTTGGTCAAAGGACTTTACTGACTCTGCAGACGGATGAATATCTGAACCAACACTTACTATCAAAGATGTTCGACTAGACCTCTCGTGGTAGGGCCTGGAAGTCAAAAGACTTCTCTATGGTACTAGGTAGGTAGTTAAGTACGGTCCCTGGT [...]
   +
   Ev_`UWQP~vx>EIjS[;RYshk~r1+V}N~hrWkb2ru}n]kQ{d<nVWnpbAhv_O~yWi7Dy~3mQg=~~x\~prlzVtF~<{jqg_fi~b|hKhIX(lZV\P^QaHg[ScUMI~isog}yDf`&H;wrlmai\X~R~Ow\ymrnZw8turtK`%UG[z|>ze`qanx~~~w|~:~~i\~r.|tY~pd~vY~{nzadywz\rR~~hT~ZhK;l'~~aktWSbxdc~Pknk-~nQ~~gihhDq~@X at bh0hI89\Ty]AdXNRTztft`{qa~?og~~[~knkUn~TiRpS~~lZR[gt~o]egHwb~rl]UeW~nfymdJ~H~~M~Q~p8zziU~Jx3Ne[B]H^~~K8~}jCxZstr[{_^~n~T%gp`eZ~bkyyym\~[\(pRWS*NO]lDRo;z~f\ofJ~j]Vn~jmUY~Md]ZTg/~{[IRsO~SL~P~SfJ3fvjjBZS~uxZv~x&ez~tOlCy_Q<j{~=WyY0j~~j9~|;~~^1~K [...]
-  @m150825_055401_42161_c100844482550000001823159012311525_s1_p0/1241/ccs/rev np:i:8 rq:f:0.991317
-  AAGCAGTGGTATCAACGCAGAGTACGGGACCGTGAGCCCCCACTTCGATCTGTAAATGGTAATCCCTTGTAAAACCTCATCTCCAAAACAGTATACGCAGGTACAGTGATGTGATCCTCTCTACTAGTCTTCTCTGAGGAACCATGAGATGGATAGTGGGGGACCTGGAGTCATACTAGGGTAACTTCTTATATGGTGACATCACTCTACCGTAGAGGGGGGACGGTAGTCTGTGGGAAATCTACCCTAGTGAAGAAAGGTAAGAGAATGTCTGACATTACCTGTAGACGAAGGTACTCTCAGAACAATACTCTCACAGACGGAAAGGTTTGGGTCCTTGGTCAAAGGACTTTACTGACTCTGCAGACGATGAATATCTGAACAACACTACTATCAAAGATGTTCGACTAGACTCTCGTGGTAGGGCCTGGAAGTCAAAGACTTCTCTATGGGGTACTAGGTAGGTAGTTAGAGTACGGTCCCTGGGGTG [...]
+  @m150825_055401_42161_c100844482550000001823159012311525_s1_p0/1241/ccs/rev np:i:8 rq:f:0.991368
+  AAGCAGTGGTATCAACGCAGAGTACGGGACCGTGAGCCCCCACTTCGATCTGTAAATGGTAATCCCTTGTAAAACCTCATCTCCAAAACAGTATACGCAGGTACAGTGATGTGATCCTCTCTACTAGTCTTCTCTGAGGAACCATGAGATGGATAGTGGGGGACCTGGAGTCATACTAGGGTAACTTCTTATATGGTGACATCACTCTACCGTAGAGGGGGGACGGTAGTCTGTGGGAAATCTACCCTAGTGAAGAAAGGTAAGAGAATGTCTGACATTACCTGTAGACGAAGGTACTCTCAGAACAACTACTCTCACATACGGAAAGGTTTGGGTCCTTGGTCAAAGGACTTTACTGACTCTGCAGACGATGAATATCTGAACAACACTACTATCAAAGATGTTCGACTAGACTCTCGTGGTAGGGCCTGGAAGTCAAAGACTTCTCTATGGGGTACTAGGTAGGTAGTTAGAGTACGGTCCCTGGGGT [...]
   +
-  HOD7;XC;dfglZIvCGEsjYfeeZ<~~l&svvsip0~iGFobY`[Wg~s~DdZ~~~M~|>DdIsf]gpf1~~VI|\eQ\SX[`%~~~n~s^w~b[\hAH}Ycmpb)eOS\Hm^dS~{RVevUUyrlB&.E6[Pbmg\lG~9~},mh^M~>h_VEJZ$It~y_MVi(PQih at H@\ci[@Fg^MoJO^ZDXIPcT[w[uxhIeld%J*h|M~iRwJy'XIlxffYVdMKo|[~r~5~~C~~~r~}9~~~z\~te~oA~~`~|N~[DPM~~`fbZ^7TYHz}]~~nh_[ioxNnP~GQ`_Noi}?R{WIR&l`lFkXd]Z-;nJY?epW{D~S5>KT8mFUTwZPIho4zn`Cqj_XcT^e7E8;?L]?HcufVWzgZD0jXbo)A~^oFgscOZcgK~~jIgC3eMf`b]^V_)^=>Qa`?~Pu<pwT~K,~d~W^L(ntUsTU|\gM_vj&7FosdN~vW~cBDpxsEH~teCgJRfVrOG~~d8ooq|\ [...]
+  G9.=<YC;dfglZIvCGEsjYfeeZ<~~l&svvsip0~iGFobY`[Wg~s~DdZ~~~M~|>DdIsf]gpf1~~VI|\eQ\SX[`%~~~n~s^w~b[\hAH}Ycmpb)eOS\Hm^dS~{RVevUUyrlB&.E6[Pbmg\lG~9~},mh^M~>h_VEJZ$It~y_MVi(PQih at H@\ci[@Fg^MoJO^ZDXIPcT[w[uxhIeld%J*h|M~iRwJy'XIlxffYVdMKo|[~r~5~~C~~~r~}9~~~z\~te~oA~~`~|N~[DPM~~`fbZ^7TYHz}]~~nh_[ioxNnP~GRiiXyn{IJ~DA~'JU]^Bi]K\d3NYFM8fs`~3~S5>KT8mFUTwZPIho4zn`Cqj_XcT^e7E8;?L]?HcufVWzgZD0jXbo)A~^oFgscOZcgK~~jIgC3eMf`b]^V_)^=>Qa`?~Pu<pwT~K,~d~W^L(ntUsTU|\gM_vj&7FosdN~vW~cBDpxsEH~teCgJRfVrOG~~d8ooq| [...]
   @m150825_055401_42161_c100844482550000001823159012311525_s1_p0/1250/ccs/fwd np:i:5 rq:f:0.991787
   AAGCAGTGGTATCAACGCAGAGTACGGGGTGGAGAAGCAAATACTTGGATACCGAATTTAGAGGCCCATAGGTTATGGAAAAAGTCAGTGGATTAGATAGTAAAAGTCGAAATCTTTATATTCGGTTCGATGTACTACGTTATTCGCGACTGTTCTGTCATGATAGTTTTTTATATAGTCCTAATAAAAGGAGTTTTTAAAGTAAATGACATTTCAGTAGTAAAGTTTAAGAGCTTTTTGTTCTGCCAGACCGTTCTGATAGTTGAGGAAAACGTGTGGTCAGCTAATAACTTGTGGTATGGAGTAAACGAACATCCAACAGTATGTACAATCGTATGAGAAAGGACAAATCTGAAGACGATATTAGAGGGAGTCCAACAAGTTTGTGATGATTCACGTAAGGAAATCGAAATGTAGATTATTCGTCAATGGAGGTATAAGACAACACACCAAGTAATTATACGCGACGAGTTTTCATGTTGACGATCCC [...]
   +
@@ -296,10 +298,10 @@ Test ccs on 100 zmws from the lexogen-SIRV dataset, using --byStrand
   AAGCAGTGGTATCAACGCAGAGTACGGGGCGATGGGGGCGACAATTGTGGACCGTATGGACTCCCATTATGCTGGGACTCCTCGGGTCAACCGCTCTAAAGCGAAGTTGTTGGACAAACAGTTATGCGTAACTGTAAAGCAAGGTGCCCAAAGTAACTGAGCGACAGTCGAAACCAGCCCCAATGAACAAGACGCCATTGCAAAACGTCTATACGCTACGGTCAAAGACGCTTCCACACCACATGCTCTCATGTAGCCTACCTTACGAAGAAATCGCACAAGTCGGTCGCCCAGCGGTGGCATATTGTCTTGCCTAACGTTTCTAGACCGATCAGCCTCACGAGTAGCCTGCTTGTGGTGTTTATAGTTTATCGCTAGTCCAATCTGTATCGTGCCGCTTGGTATGGCTATTGTCGGCCTGGATGCAATTGTGCTCGCCATTTCAACTAGTGCAGTTGCTAAAGTGCCAACTAAGGTTCGTCTTGAAGCA [...]
   +
   I~dFW_eQgTVlZL~XcWX`fKah\(~iNJaZk2fj~i at MhXV~TWH_;Rd5lJa at QBm\9G&NEDLlJX(SPH~~nYP6~TTFewU[]~EN_QbTjGSUb[fBhJ2}dNzS~gW4jdTeMI~mlaYen>]F:LdJLm`UWhR~TY3~~NmgMQP(F_coeYOgHndhDc>1W'MQb'eQfROQb>bEYzLk[^B_h\~OZ;~~s[fl\jS%O[`BR<?/HdYA~bcRGdZM[,W.B+)JMCS>cVQ at eZkP^kfHD~jnBlM{>WfWPfMofcWOXVEGicWY@\<T`Av~nbXR~eR~W<c_(QMSZN~c)~fPY+a?ojUb7WsP~ncwdylIu[W[H`saa[VM~co^P~W]Krx\F~rxlXUX{~b-NYawclpC~^oV`v[sDZagnm@~Z^B~5ohcuI~Y,\D~QpZG~JxYCg_pUO\vMl>XVKZH=N~w<~~a;wW[@i at PM=[S~T2<S~~Xf]<GNy_H^~Z~a|2gn0^~Ud~mc` [...]
-  @m150825_055401_42161_c100844482550000001823159012311525_s1_p0/1426/ccs/rev np:i:7 rq:f:0.993829
+  @m150825_055401_42161_c100844482550000001823159012311525_s1_p0/1426/ccs/rev np:i:7 rq:f:0.993881
   AAGCAGTTGGTATCAACGCCAGAGTACGGGGCGATGGGGGCGACAATTGTGGACCGTATGGACTCCATTATGCTGGGACTCCTCGGGTCAACCGCTCTAAAGCGAAGTTGTTGGACAAACAGTTATGCGTAACTGTAAAGCAAGGTGCCCAAAGTAGACTTGAGCGACAGTCGAAACCAGCCCCAATGAACAAGACGCCATTGCAAAACGTCTATTACGCTACGGTCAAAGACGCTTCCACACCACATGCTCTCATGTAGCCTACCTTACGAAGAAATCGCACAAGTCGGTCGCCCAGCGGTGGCATATGTCTTGCCTAACGTTTCTAGACCGATCAGCCTCACGATAGCCTGCTTGTGGTGTTTATAGTTTACGCTAGTCCAATCTGTATCGTGCCGCTTGGTATGGCTATGTCGGCCTGGATGCAATTGTGCTCGCCATTTCAACTAGTGCAGTTGCTAAAGTGCCAACTAAGGTTCGTCTTGAAGCA [...]
   +
-  37K*FK%27<N>MY0sZQ*ZR>FFJc\/|w=@+Cn-s;4Wb[ma7~U~ThH~hQ~TQ^S3^bY5/kQTfUkZKP+^mmaPPoU]3MwleL~T~ZcWc\It~[fZM~YDHCMO at qhc.eYQYVBb^`AFSe8l]P?L at JeZd>oG~XFFk~?|bUTK<hf$9A'Uf\mffS7bFR~~V~iWDnroH~cZ^|eKp1idEC~eWnWLH~~nb[lNVk.]TdWacK[3TjTR~~FkeWP*eLcTa8@~fahn[b)GS`e at U;:EQ~PRS~T~h`Q*sEEm~m[BNgbW}\ia4lgc1EngNZfI~kLwPkmmTT:KWx<9z?I~aR at y~dXkGkIzZWlfk2R~lOkd8G5dHNuiUPXmFkG~`L=]mUkj/IQxVd[fojDe0~Nu_LeZTbgcUXZ1f\b@?'dMNcK~`Qb(VWcIqQghH~hnJQLy@\WcXOidZ8wh:nzf_~f[lXh[gm[?uWHGP~mFRUJrM}bV[x%yU]_VlN8~XEyAMI [...]
+  37K*FK%27<N>MY0sZQ*ZR>FFJc\/|tZ=/@m-s;4Wb[ma7~U~ThH~hQ~TQ^S3^bY5/kQTfUkZKP+^mmaPPoU]3MwleL~T~ZcWc\It~[fZM~YDHCMO at qhc.eYQYVBb^`AFSe8l]P?L at JeZd>oG~XFFk~?|bUTK<hf$9A'Uf\mffS7bFR~~V~iWDnroH~cZ^|eKp1idEC~eWnWLH~~nb[lNVk.]TdWacK[3TjTR~~FkeWP*eLcTa8@~fahn[b)GS`e at U;:EQ~PRS~T~h`Q*sEEm~m[BNgbW}\ia4lgc1EngNZfI~kLwPkmmTT:KWx<9z?I~aR at y~dXkGkIzZWlfk2R~lOkd8G5dHNuiUPXmFkG~`L=]mUkj/IQxVd[fojDe0~Nu_LeZTbgcUXZ1f\b@?'dMNcK~`Qb(VWcIqQghH~hnJQLy@\WcXOidZ8wh:nzf_~f[lXh[gm[?uWHGP~mFRUJrM}bV[x%yU]_VlN8~XEyAMI [...]
   @m150825_055401_42161_c100844482550000001823159012311525_s1_p0/1446/ccs/fwd np:i:7 rq:f:0.992319
   AAGCAGTGGTATCAACGCAGAGTACGGGGCCTTGTCCGCGAGTGTCAACCGGGTTTTACAAAGGAGAAACTTCCAACATCAGTGTATGGGATGTTTCAAACACCCCCAGAGACGGAGACAATAGTGTGGTCACGTACATTTAGGAAGATAAAAATAACAACAACAGAAGGTGTGAGGCGCAAGGTACATGCTCTTACCCCACTCTCAGCACGTAGGGAGCGGAGTGTGGAAGACCAACAAGCCCGTCGCCTCTACCAAATACAGTGTTTAGGTGTGTCGGAGGGCAGAACCAACCGAAAGAAGGAACGATCAACACTTATATAGTGTCCTGTCGGCCCCAAATCCTAAGAGACCTTAGGTTTACCACATTAGTACTAAACAGCCTGTTGTATACCGTGAGCCCCCACTTCGATCTGTAAATGGTAATCCCTTGTAAAACCTCATCTCCAAAAACAGTATACGCAGGTACAGCTGATGTGATCCTCTCTAC [...]
   +
@@ -399,7 +401,7 @@ Test ccs on 100 zmws from the lexogen-SIRV dataset, using --byStrand
   @m150825_055401_42161_c100844482550000001823159012311525_s1_p0/1800/ccs/fwd np:i:8 rq:f:0.9959
   AAGCAGTGGTATCAACGCAGAGTACGGGGTTGGTGTATTTATCCGCTACGTGGTGGATGAACATGGATGCGAACGACATTTCGAAATATACGCAATGATATCCAACCCTACCGAAACAGCAATAATTGTAGAAGGTAGCATATCATGCCGAGAGTTTACTACGTTGTAGCGAGTTTAGTTGAAATAGTTTGTGATGTGTAAACTAAAACATACCAAATGGTAAAACTTGTCACCCCCCATTTACATTGCGACAGACACAGTTATGGAGTGGATGGAAGTGTGTTCGACTGTCAAGACCCTTCTATAATAGTCGAACCAGTACGGTAAGTGGGCAACATGCCCATAAAGTCGAAGCATTTCAAATGGTTCATCCAGTAGACGACGATGTCCTAGACAGTCATGTCTCTTCCCCATTTGAAGTCATGTAGTGGTTGTCTACTTTTTCATTGAAGACGTCCACCTCAACGCTATGAACGTTAGTTGAGACAAT [...]
   +
-  msV\yW]Ir[P?YUtYRH^.uD`wZ)olZAcBs_OM`2lib87bN5\y[FY3jUCrhYTYvHiPEn{MTOTGuXRMKX9_L^WYanZh\fVUYgyYEi\|U'\C`=ee^i5rQS^|]zV]Dh^VsCT2GvD]_CxHjV;t]e^CTXTHcVwWzW8{}{]a|^W-d:StFZD{W5{|oXQxXY|z[aV$ptV\SkXNGBILauZL;ahlKq]m4b2[\^Cw_Mq{lMRtV][v%@3/Wle6gawOqLxDZGz]zUhBqVcT2dRI;lnO8 at TX]EyUJV;3HC9[9UpI_V_]0UJk1]bHcKZQX`_VhV^KUVlCjeW^lKC^XY]QU.sdWW_9sQE0g<3DB&RVPYEV[V\k>jPS=xlV&>=tLfTGQ at VY]SL??M4RdOWL>wVgNjDtX[LkWXF)CUKa7kgdyE}[.Q^VaXb`X]zT^9tNgXYY]wN+x}}wWWHvUWuZvFDZ<kwCZZX=BZDTGlZV+aSSO_rWKqW^UdZ3NW [...]
+  x|]c~LbMyaZK`M~_]H^.uD`wZ)olZAcBs_OM`2lib87bN5\y[FY3jUCrhYTYvHiPEn{MTOTGuXRMKX9_L^WYanZh\fVUYgyYEi\|U'\C`=ee^i5rQS^|]zV]Dh^VsCT2GvD]_CxHjV;t]e^CTXTHcVwWzW8{}{]a|^W-d:StFZD{W5{|oXQxXY|z[aV$ptV\SkXNGBILauZL;ahlKq]m4b2[\^Cw_Mq{lMRtV][v%@3/Wle6gawOqLxDZGz]zUhBqVcT2dRI;lnO8 at TX]EyUJV;3HC9[9UpI_V_]0UJk1]bHcKZQX`_VhV^KUVlCjeW^lKC^XY]QU.sdWW_9sQE0g<3DB&RVPYEV[V\k>jPS=xlV&>=tLfTGQ at VY]SL??M4RdOWL>wVgNjDtX[LkWXF)CUKa7kgdyE}[.Q^VaXb`X]zT^9tNgXYY]wN+x}}wWWHvUWuZvFDZ<kwCZZX=BZDTGlZV+aSSO_rWKqW^UdZ3NW [...]
   @m150825_055401_42161_c100844482550000001823159012311525_s1_p0/1800/ccs/rev np:i:8 rq:f:0.994058
   AAGCAGTGGTATCAACGCAGAGTACGGGGGTTGGGTGTATTTATCCGCTACGTGGTGGATGAACATGGATGCGAACGACATTTCGAAAATATACGCAATGATATCCAACCCTACCGAAACAGCATAATTGTAGAAGGTAGCATATCATGCCGAGAGTTTACTACGTTGTAGCGAGTTTAGTTGAAATAGTTTGTGATGTGTAAACTAAAACATACCAAATGGTAAAAACTTGTCACCCCCATTTACATTGCGACAGACACAGTTATGGAGTGGATGGAAGTGTGTTCGGACTGTCAAGACCCTTCTATAATAGTCGAACCAGTACGGTAAGTGGGCAACATGCCCATATAAGTCGAAGCATTTTCAAATGGTTCATCCAGTAGACGACGATGTCCTAGACAGTCATGTCTCTTCCCCATTTGAAGTCATGTAGTGGTTGTCTACTTTTTCATTGAGACGGTCCACCCTCAACGCTATGAACGTTAGTTGA [...]
   +
@@ -416,10 +418,10 @@ Test ccs on 100 zmws from the lexogen-SIRV dataset, using --byStrand
   AAGCAGTGGTATCAACGCAGAGTACGGGGTAAGTTTATTGATAGGTAAAAAAATCAAGAGAGGGTAATAAAGAAGAAAGAATAATCAAAAGATAGAGCATGCAAACATTACATGGTAGTATTGTTATAGGCGGTATATTGGTAAATGACGATCCTTGACTTAGTTTTTTTACATCGAACGGTTGCAAATCCTAGCATACTTGATATTAATAGTAGATACTGAAATATATCTGAGTATATCAAGGGAAATCGAGATGTAACAATAAGTCGAGGAAATTAAGGTCAATTTAGTGCTTATCATAGAAATAACTACTTAAGCCCTTAAACGAACTAACTCAAATTAACGAGGTAGAGGTTATTCTGAATTGTACGAACGTAGTCGAAGTTTGTTACCAAGGGTAAAGCCAAAACAAAACGATTTTGACAAGAGAATCTATTCCATGTAGTAGTGCGTTTGTACGACGTTCTATTCGATGTAAATCATTAGGACG [...]
   +
   RkPR[PW5M<+5A&WQPRUJT:SD:(bjjVNkO5kkZIjOENJCmV)gXRai\VRAfP[KL<mmTCU8BdiO;e9:edO9f(9W?O6XWXNA=SI[PRZQ)P<lgRP,aKR[WCmW[PTN-SKIf,TUB]:3cUVO[Ji1iUDkhN9YP:YU4gKlP[RKl[P$iiaQW;<H[URPBX>>LI]894fgVElQLORWS:%FPL:VZ3VMgQPPVBOW?EQWP<liW[QOT9=MEN=?,A>N+e5bO9iiVP5HP[RKWNkRLkTKkPU<MEClGkjKl*P2cWRMj?mbLOWPRImY?OEUUK8gZP<aIWY;8iKMN/ggKl<khRP at V:P>RLVK'afHj<ULKDBZO[P[Cm3d[HlRWP at eJh:U[RM(HOLO[OP'I9cN9kX:9iZAfIf5nfV?SKIEj2kjaJ=jaNLID-jl[PWRJGM>G*Z:LV[GgEj[WPVWOT?HUOQL2\SJ=>INEQPKjOCC at WRKLVPW:ljRPEIm[ClEKO [...]
-  @m150825_055401_42161_c100844482550000001823159012311525_s1_p0/1902/ccs/rev np:i:4 rq:f:0.990087
-  AAGCAGTGTATCAACGCAGAGTACGGGGTAAGTTATTGATAGGTAAAAAATCAAGAGAGGGTAATAAAGAAGAAAGAATAATCAAAGATAGAGCATGCAAACATTACATGGTAGTATTGTTATAGGCGGTATATTGGTAAATGGACGATCCTTGACTTAGTTTTTTACATCGAACGGTTGCAATCCTAGCATACTTGATATTAATAGTAGATACTGAAATATATCTGAGTATATCAAGGGAAATCGAGATGTAACAATAAGTCGAGGAAATTAAGGTCAATTTAGTGCTTATCATAGAAATAACTACTTAAGCCCTTAACGAACTAACTCAAATTAACGAGGTAGAGGTTATTCTGAATTGTACGAACGTAGTCGAAGTTTGTTACCAAGGGTAAAGCCAAAACAAAACGATTTGACAAGAGAATCTATTCCATGTAGTAGTGCGTTTGTACGACGTTCTATTCGATGTAAATCATTAGGACGAGGGTTT [...]
+  @m150825_055401_42161_c100844482550000001823159012311525_s1_p0/1902/ccs/rev np:i:4 rq:f:0.990026
+  AAGCAGTGTATCAACGCAGAGTACGGGGGTAAGTTATTGATAGGTAAAAAATCAAGAGAGGGTAATAAAGAAGAAAGAATAATCAAAAGATAGAGCATGCAAACATTACATGGTAGTATTGTTATAGGCGGTATATTGGTAAATGGACGATCCTTGACTTAGTTTTTTACATCGAACGGTTGCAATCCTAGCATACTTGATATTAATAGTAGATACTGAAATATATCTGAGTATATCAAGGGAAATCGAGATGTAACAATAAGTCGAGGAAATTAAGGTCAATTTAGTGCTTATCATAGAAATAACTACTTAAGCCCTTAACGAACTAACTCAAATTAACGAGGTAGAGGTTATTCTGAATTGTACGAACGTAGTCGAAGTTTGTTACCAAGGGTAAAGCCAAAACAAAACGATTTGACAAGAGAATCTATTCCATGTAGTAGTGCGTTTGTACGACGTTCTATTCGATGTAAATCATTAGGACGAGGGT [...]
   +
-  4K9JUNA&G3 at 92[K4:S9GN at A9&JZ`EIlP+\K?hRTFR1SQ%kkdONTQDi@>@,+Q_R2:++WF71XL9jW<FeNIlVO+k[/LWQ7CPN>VP:6hjOVNkWPW[EjE:RTVKiM;XP[U5VN3a+^c^&nL|c8UrQ'LJW\agM~UbYaXAkVA.^peb]]TIdYXM[WKt1sYX-v5KlfaD0NO_JE_W\>D7WCyOa\g_D\P`XPZ;zyO`aUKTcB/AR`fafYTg4wwJ{|gV+DAPKW`?xXQf5 at yYNXY^'Z%oc.jBsKv:WT|OzzaGQZYWzbdY`P`\D}|a>yTN`XOZ/yX,e]JtT|XEOeYe/xWRX1gQGlSzXY[&nNHEF;_?u/>oU[\?pWyXP`Y\?nXVT7BSSAMeEAubK6[`Ly??&VO&Gjz\J|Az|vY/vtbXCHJh]\aYSzF_Z,adUUWJXJ}`QHM138GEOZYW=`tX\IU,YU\FsUdaFvXYMPWd>{pPYaK{aNzaYVX4Y5,T[ [...]
+  I]=JWOB&I4 at 92[MG:S8IN?C8$GOcDEJlQ.eUKROUESCP[)klgSMZPJfM)8N:NdZIQ,(WY7FZQ4iV'FePKl[P*ReXPSESRURN?XP:6hkOVNkWPW[EjE:RTVKiM;XP[U5VN3a+^c^&nL|c8UrQ'LJW\agM~UbYaXAkVA.^peb]]TIdYXM[WKt1sYX-v5KlfaD0NO_JE_W\>D7WCyOa\g_D\P`XPZ;zyO`aUKTcB/AR`fafYTg4wwJ{|gV+DAPKW`?xXQf5 at yYNXY^'Z%oc.jBsKv:WT|OzzaGQZYWzbdY`P`\D}|a>yTN`XOZ/yX,e]JtT|XEOeYe/xWRX1gQGlSzXY[&nNHEF;_?u/>oU[\?pWyXP`Y\?nXVT7BSSAMeEAubK6[`Ly??&VO&Gjz\J|Az|vY/vtbXCHJh]\aYSzF_Z,adUUWJXJ}`QHM138GEOZYW=`tX\IU,YU\FsUdaFvXYMPWd>{pPYaK{aNzaYVX4Y5, [...]
   @m150825_055401_42161_c100844482550000001823159012311525_s1_p0/1945/ccs/fwd np:i:13 rq:f:0.998296
   AAGCAGTGGTATCAACGCAGAGTACTTTTTTTTTTTTTTTTTTTTTTTTTTTTTGTTGGTTCGTACAGCGGTAAATGACTTGTTGAGTCTTGACGTCGACGACCAAAGCGACCACTTTGACCCAATTGCGAACTACTAAATCCTAAGCAAAGACTATTAGGTAGTAGCCAACTTCGTTAATTCCGTTCAGTACTTTTAAATTCTAACCGACCATCTTTCCGAGTTGCTTCAAACCCTCGTCCTAATGATTTACATCGAATAGAACGTCGTACAAACGCACTACTACATGGAATAGATTCTCTGTCAAATCGTTTTGTTTTGGCTTTACCCTTGGTAACAAACTTCGACTACGTTCGTACAATTCAGAATAACCTCTACCTCGTTAATTTGAGTTAGTTCGTTAAGGGCTTAAGTAGTTATTTCTATGATAAGCACTAAATTGACCTTAATTTCCTCGACTTATTGTTACATTCTCGATTTCCCTTGATAT [...]
   +
@@ -456,14 +458,14 @@ Test ccs on 100 zmws from the lexogen-SIRV dataset, using --byStrand
   AAGCAGTGGTATCAACGCAGAGTACGGGGTAAACGAACATCCAACAGTATGTACAATCGTATGAGAAAGGACAAATCTGAAGACGATATTAGAGGGAGTCCAACAAGTTTGTGATGATTCACGTAAGGAAATCGAAATGTAAGATTATTCGTCAATGGAGGTATAAGACACACACCAAGTAATTATACGCGACGAGTTTTCATGTTGACGATCCCTGAGACTATATCATACAAAATTGACCCAAATAATTAACTCGTTCCAATAGTTGAAGTGTTGATTAACACATTGAGACAAGTTGTCCGTACTTTAATCATCAAAGTTTTGGACTGACCTATAAATGAAATATTCGCGTTGTCTTCAGTTTAAGAAGTGATATTATTTTCGGTTTCAAGCCTATGTGGAGAGATACAGGAAATAGGTAAACTATAACTAATATAAATATACGCAGACGAAGCCTGTTAACTTTACCAAATCCAAATAGCGGGAGACA [...]
   +
   W~e]henC~hbp\H~\_MZcRcnOE=~~~pCucWd6hVbkK~7TIdMhheZEHEG_mFcpeU`4Y3zRA~fW6xcd]lMX~[YY_H8>J]>ch>~sZ=VIXPm\EkZFjwcmcaR`JI`WfV_nFdTt-cu_[c/c_^epUn__`~OI~\ep]KjeA~`P~PLc;NW;,%VdOX0>3eJk9ZLbR\gYIBI6BbheL~~~[>ne`~Md?X_n)rmWcheh[Z=UHNYVMJC(B`cWddR9~\@~~oX~'$$zBn]e[g>oKmhLcBPQ/vPlMVB`VU~7|ZQ\fM~O;AH\+LL_~ELL~emIUCzXCw_\eV[F~nM1w_sA~f\i]^-`[\_2~bUc3~f_'Ta2]]a5}HQXVu]Mc6b~Sd_0xaUcglgYnR=VYq\QwF~jF2/MM~nQUcnCud;cSRl:XO1f0z[OfQ~_8nmYUeiFk]pK~nK^LycoeSMCL[idhZMRsd<~lLHzJ~]R~lXL~>~oOJm:97jbcE6i`GR]CL [...]
-  @m150825_055401_42161_c100844482550000001823159012311525_s1_p0/1999/ccs/rev np:i:5 rq:f:0.993133
-  AAGCAGTGGTATCAACGCAGAGTACGGGGTAAACGAACATCCAACAGTATGTACAATCGTATGAGAAGGACAAATCTGAAGACGATATTAGAGGGAGTCCAACAAGTTTGTGATGATTCACGTAAGGAAATCGAAATGTAAGATTATTCGTCAATGGAGGTATAAGACAACACACCAAGTAATTATACGCGACGAGTTTTCATGTGACGATCCCTGAGACTATATCATACAAAATTGACCCAAATAATAAACTCGTTCCAATAGTTGAAGTGTTGATTAACACATTGAGACAAGTTGTCCGTACTTTAATCATCAAAGTTTTGGACTGACCTATAAATGAAATATTCGCGTTGTCTCAGTTTAAGAAGTGATATTATTTCGGTTTCAAGCCTATGTGGAGAGATACAGGAAATAGGTAAACTATAACTAATATAAATATACGCAGACGAAGCCTGTTAACTTTACCAAATCCAAATAGCGGGAGACACTA [...]
+  @m150825_055401_42161_c100844482550000001823159012311525_s1_p0/1999/ccs/rev np:i:5 rq:f:0.993312
+  AAGCAGTGGTATCAACGCAGAGTACGGGGTAAACGAACATCCAACAGTATGTACAATCGTATGAGAAGGACAAATCTGAAGACGATATTAGAGGGAGTCCAACAAGTTTGTGATGATTCACGTAAGGAAATCGAAATGTAAGATTATTCGTCAATGGAGGTATAAGACAACACACCAAGTAATTATACGCGACGAGTTTTCATGTGACGATCCCTGAGACTATATCATACAAAATTGACCCAAATAATAAACTCGTTCCAATAGTTGAAGTGTTGATTAACACATTGAGACAAGTTGTCCGTACTTTAATCATCAAAGTTTTGGACTGACCTATAAATGAAATATTCGCGTTGTCTCAGTTTAAGAAGTGATATTATTTCGGTTTCAAGCCTATGTGGAGAGATACAGGAAATAGGTAAACTATAACTAATATAAATATACGCAGACGAAGCCTGTTAACTTTACCAAATCCAAATAGCGGGAGACACTA [...]
   +
-  <aOGW[]-lfnQd`~MXFEP^Ygj_:~|_aF^Z`X8ycj_U~KrM[Zgi`FahEAaNZ>GA;;>S%m)]adCyoQa:[a~]pcFcVl=no]m&|h8MhQ~X~`Z~S5cXIdEfJBj6uKne\RL~NrDz`g`U8xuQ[h]rT5MagAfJEdM[tg>~f?|hnQS|Wg^M~dcHiOyX~]gL~2i`hlLDc\pe[OR1XgwdnKP%Bme]nJI~~bT:VneaLeohephp_0[byX~]pEsWD{~e`}bC{~Lfe]KgC~a~hp[$DFNvJY@'CGdBEH_^peoG~XiYc\0YDLcAbR~[;md0qh\gddf&`G~yX5pSnN}SKg]pU~hhRE~qR[J~~feImdZ`\@J[ca&apX8[F=uY:GQ;YUQl5nd1jJ7EFAZzeb~WP|c:_EaCg8,ODdKi5kO~2~shp:\:2xsQGmhZaZZGb\TQDnuhphjcG[nFkMZL~EO}\/6qIg]@~~oQ}Q|lRQ~GZyfk\e*~rhSjepec@ [...]
-  @m150825_055401_42161_c100844482550000001823159012311525_s1_p0/2012/ccs/fwd np:i:6 rq:f:0.993131
-  AAGCAGTGGTATCAACGCAGAGTACGGGGCTTGTCCGCGAGTGTCACCGGGTTTTACAAAGGAGAACTTCCAAACATCAAGTGTATGGGATGTTTCAAACACCCCCAGAGACGGAGACAATAGTGTGGTCACGTACATTTAGGAAGATAAAAATAACAACAACAGAAGGTGTGAGGCGCAAGGTACATGCTCTTACCCCACTCTCAGCACGTAGGGAGCGGAGTGTGGAAGACAACAAGCCCGTCGCCTCTACCAAATACAGCTATCCTGAGGTGCCAGGTTAGAATAGGCCCTACCACATCTAAGCCTTGAAACGGTCTGTTCCTCGTGTCAAGTTCTTGTCCGCTTATACCGCCATCTCTCGTTGTGGTACAAGAGTTGGTTACTCTCAGTCCCATTCCCAACACATCACTGAGAAGTATAGAGCCTAGTGGTCATTAGAAGGTCAACATGGAGTAGGTGTTTTAGGTGTGTCGGAGGGCAGAAACCA [...]
+  <aOGW[]-lfnQd`~MXFEP^Ygj_:~|_aF^Z`X8ycj_U~KrM[Zgi`FahEAaNZ>GA;;>S%m)]adCyoQa:[a~]pcFcVl=no]m&|h8MhQ~X~`Z~S5cXIdEfJBj6uKne\RL~NrDz`g`U8xuQ[h]rT5MagAfJEdM[tg>~f?|hnQS|Wg^M~dcHiOyX~]gL~2i`hlLDc\pe[OR1XgwdnKP%Bme]nJI~~bT:VneaLeohephp_0[byX~]pEsWD{~e`}bC{~Lfe]KgC~a~hp[$DFNvJY@'CGdBEH_^peoG~XiYc\0YDLcAbR~[;md0qh\gddf&`G~yX5pSnN}SKg]pU~hhRE~qR[J~~feImdZ`\@J[ca&apX8[F=uY:GQ;YUQl5nd1jJ7EFAZzeb~WP|c:_EaCg8,ODdKi5kO~2~shp:\:2xsQGmhZaZZGb\TQDnuhphjcG[nFkMZL~EO}\/6qIg]@~~oQ}Q|lRQ~GZyfk\e*~rhSjepec@ [...]
+  @m150825_055401_42161_c100844482550000001823159012311525_s1_p0/2012/ccs/fwd np:i:6 rq:f:0.993117
+  AAGCAGTGGTATCAACGCAGAGTACGGGGCTTGTCCGCGAGTGTCACCGGGTTTTACAAAGGAGAACTTCCAAACATCAAGTGTATGGGATGTTTCAAACACCCCCAGAGACGGAGACAATAGTGTGGTCACGTACATTTAGGAAGATAAAAATAACAACAACAGAAGGTGTGAGGCGCAAGGTACATGCTCTTACCCCACTCTCAGCACGTAGGGAGCGGAGTGTGGAAGACAACAAGCCCGTCGCCTCTACCAAATACAGCTATCCTGAGGTGCCAGGTTAGAATAGGCCCTACCACATCTAAGCCTTGAAACGGTCTGTTCCTCGTGTCAAGTTCTTGTCCGCTTATACCGCCATCTCTCGTTGTGGTACAAGAGTTGGTTACTCTCAGTCCCATTCCCAACACATCACTGAGAAGTATAGAGCCTAGTGGTCATTAGAAGGTCAACATGGAGTAGGTGTTTTAGGTGTGTCGGAGGGCAGAAACCA [...]
   +
-  RqXQ[V^Kp\B\Q at jPUODVDU\EP2qq`QKqX\2oWQWDW\@Z8-CnCpl6op]F?/6OGo[W=nPRp?V1OTNBWO2BP^X\E\Cpp[^W9oh:DmlMD1BXpj[X[X[QKp[X[P>n][X^X^Kp^Q[QX]I7I?gp[Fp at pX[^'m[Y^[DZPNnQNqQ[XNqKp^X^TPEdQXNKQHn^[OE\XNEOQnF/chf[Q\Q\Q[XOEPX^Y2mmZXQ1e[X^X\7lNpXV&+`9<\X:jUXY$DCq^QZ[Ds<pp^[Q[V;\[^EoXOCJm^V at X.JoRp[W9lSWKp<ss\F4a[Q[^Q^ApXDsQp=?[kQHs^QZ?:l4P?NX^X\:9X<Oh8)j?Z2nU9=mZ^Y2oV6pXWLSQ]QXQp@\Kp\B:MlX[U=m6k=nTQ^Q^Q[X^2tgZ?n=qm?T<OLE\Q[Q^TFVMm@[Z\PJ[XDs^[X^Kp]@YQp[W=nGr^QMf8-XKp[VDYKp^X)onZUGl]X\@\Q1e[CqnQR-7[XCn9 [...]
+  RqXQ[V^Kp\B\Q at jPUODVDU\EP2qq`QKqX\2oWQWDW\@Z8-CnCpl6op]F?/6OGo[W=nPRp?V1OTNBWO2BP^X\E\Cpp[^W9oh:DmlMD1BXpj[X[X[QKp[X[P>n][X^X^Kp^Q[QX]I7I?gp[Fp at pX[^'m[Y^[DZPNnQNqQ[XNqKp^X^TPEdQXNKQHn^[OE\XNEOQnF/chf[Q\Q\Q[XOEPX^Y2mmZXQ1e[X^X\7lNpXV&+`9<\X:jUXY$DCq^QZ[Ds<pp^[Q[V;\[^EoXOCJm^V at X.JoRp[W9lSWKp<ss\F4a[Q[^Q^ApXDsQp=?[kQHs^QZ?:l4P?NX^X\:9X<Oh8)j?Z2nU9=mZ^Y2oV6pXWLSQ]QXQp@\Kp\B:MlX[U=m6k=nTQ^Q^Q[X^2tgZ?n=qm?T<OLE\Q[Q^TFVMm@[Z\PJ[XDs^[X^Kp]@YQp[W=nGr^QMf8-XKp[VDYKp^X)onZUGl]X\@\Q1e[CqnQR-7[XCn9 [...]
   @m150825_055401_42161_c100844482550000001823159012311525_s1_p0/2012/ccs/rev np:i:5 rq:f:0.99375
   AAGCAGTGGTATCAACGCAGAGTACGGGGGCTTGTCCGCGAGTGTCAACCGGGTTTTACAAAGGAGAACTTTCCAACATCAGTGTATGGGATGTTTCAAACACCCCCAGAGACGGAGACAATAGTGTGGTCACGTACATTTAGGAAGATAAAAATAACAACAACAGAAGGTGTGAGGCGCAAGGTACATGCTCTTACCCCACTCTCAGCACGTAGGGAGCGGAGTGTGGAAGACCAACAAGCCCGTCGCCTCTACCAAATACAGCTATCCTGAGGTGCCAGGTTAGAATAGGCCCTACCACATCTAAGCCTTTGAAACGGTCTGTTCCTCGTGTCAAGTTCTTTGTCCGCTTATACCGCCATCTCTCGTTGTGGTACAAGAGTTGGTTACTCTCAGTCCCATTCCCAACACATCACTGAGAAGTATAGAGCCTAGTGGTCATTAGAAGGTCAACATGGAGTAGGTGTTTAGGTGTGTCGGAGGGCAGAAA [...]
   +
@@ -484,10 +486,10 @@ Test ccs on 100 zmws from the lexogen-SIRV dataset, using --byStrand
   AAGCAGTGGTATCAACGCAGAGTACGGGGGGACGAAGCATACTGCAAGACTTGTAGGCCCATGAATTACCCGCTTAGGCAATGGGTAGACCTTTCCTTGCCGCGTGGAACAAACCGCCATGAGTGTTTTACGTTTACGGTCGGCGACCGGAGTCACAGCGCGACCAACGGGGCCAGGCAAAGGCCCATAGGCTTTTCCATCGGCACGCGACCGATTTCCATCAAGTGTTAGGTGCAATCCCCATTCGGGACGGACACGCGAGAGCGTTAGTCGGCGCGTGCGCGGGACTATTTAGCGAAGGTCGCCGATCGTTTGCCCGTAAAACTAACTGGCAAAAGCCTAAGTGCTGTTTTCGGGTGCAATGGTATAACTTCCCACATTTAGCCGAATAGCGCCAACAGCGTTATTATTTGGAACCAAGCAGTGGGCGATGTCAGCGACAATTCCACTTTGGTAGAGGTCGTTCTTTTGTAGAAAACAATCTAACATA [...]
   +
   ;bIKCIQJXdaPB at eVY@K>ZYVNU5_^km]Y)PUsU=aaTVRGVVx[bLHlZcaH]5XWP[CTsGrM=~oWFHtf=xVUxPD|qMfXYKn;Zd=U;D08`TFTX<mKnF.RXA]FHuKPC<VQ?1xx^PJO3rc_VLze at 8rUZf7|JaYZQShUgWUCO&LG~VuV9uetAfL1jNJV]Dl)gT[8\7_U1xyTE{ggV<pR`VW at 2bCnZg(8F0hePUYxVKXGwfJ[dEQQWP0cYeNIbC?bZSL*gI?`?V at D_>^X at UStfFWUEbOVKAN2TX=(nudVfa:nueZVWCsGY:R*BaDcSVX3eeY/~bX`2kecS%CuWfJ[U3sy?/7eKSZZgZRI/)Ia\V5vpJTVYxgKwKUfYxLWw?~{aTa?vuMXAoV/,IbETDGx at Q>5S>RImO4fH8iP:tC_%o>K/G]=H)UX>3aMO_VeEUZbOOYQ_3[<RI`oItPa?VH`DVZFER+LjqGP[S=wxqRVfeVaRrReMG [...]
-  @m150825_055401_42161_c100844482550000001823159012311525_s1_p0/2126/ccs/fwd np:i:11 rq:f:0.998158
+  @m150825_055401_42161_c100844482550000001823159012311525_s1_p0/2126/ccs/fwd np:i:11 rq:f:0.998079
   AAGCAGTGGTATCAACGCAGAGTACGGGAGACCAGTAGTTGGGTCAGAAATTAGACGTGGTTTAGTCTGGTTACCGTGGAAAGAATAGCTGAACTCAAAGAAGCCGACAAAGATAAACAAAGAAGAAACGGTTAATACGATTGAGGAGAAATATTCAATCCAACGGCAACTATTAACGTTCAACTAGAATCTACGTTTCATACGCGGATTCCACATCCGTTCTTGCAATTAAAGAAACGATGTAGAAAACGCTTTGGTTGGCGACAACTTGGGCGGCAAAATAATTATGGTAGGTAATTGAAGTAGCGTTAAAACGCAAAAAGAAGGAAGCACGGATCACTGCAAAAAGGACTACTCAATAATGGTTTCTAAAGTCATTATGCTGGTGCTCCCTATGGCGGTGGTCAGTACTGTAACTAAAGATGGATTACGGCACTTGTAGAGCACGTATCAGACCCAGCTTTGAAAGAAGGCTGAGTTCGGTTCGGGT [...]
   +
-  ~~t_~p|K~bytoc~lbnrr~s~sX<~~~nm?~vy~~vTz9z{np~xa~~^~~f~rrp^~I~~~nA\}N~k~~I~u~_~J~~tj~~~dnja}~n~_a~~xj~hJ~s~Zk~~ft}^~~[U~~tN~uE~~pQ~F~V~t~gl5W~m|W~~_S~~RnYuXb~sD~oWWZ~Ul~ftif~h~Td$zdX~dwhn^uzdp~dl=~~Z~]cgnj\~|gq(~|[~vG~_U~ic~qkk~d~4~mPQPwZXlw]`TS2g~~bWcV~~I~e~Z~cYrVu~lX~;~~^H~hC~~~yb~E~}tF{ruKzcx~a~Zq~dqteV=V~8j~~ikUK~~~yirwY~V~iSyjX~|{j|U^ThS~~~~X~~cfRghZg~qB}rF~J~~kuN~~]uA~_~jTjS at J{{kYvDl~wttU~lW~hE~ZRvne~j_Yt5~Xx>~~mvfM~~Y~xR:FQGAd~lx~Yx\j~mny}dCop~9u~~`hX~~Yg~~it~J~fho~df~gE~b~iB~~N [...]
+  ~~t_~p|K~bytoc~lbnrr~s~sX<~~~nm?~vy~~vTz9z{np~xa~~^~~f~rrp^~I~~~nA\}N~k~~I~u~_~J~~tj~~~dnja}~n~_a~~xj~hJ~s~Zk~~ft}^~~[U~~tN~uE~~pQ~F~V~t~gl5W~m|W~~_S~~RnYuXb~sD~oWWZ~Ul~ftif~h~Td$zdX~dwhn^uzdp~dl=~~Z~]cgnj\~|gq(~|[~vG~_U~ic~qkk~d~4~mPQPwZXlw]`TS2g~~bWcV~~I~e~Z~cYrVu~lX~;~~^H~hC~~~yb~E~}tF{ruKzcx~a~Zq~dqteV=V~8j~~ikUK~~~yirwY~V~iSyjX~|{j|U^ThS~~~~X~~cfRghZg~qB}rF~J~~kuN~~]uA~_~jTjS at J{{kYvDl~wttU~lW~hE~ZRvne~j_Yt5~Xx>~~mvfM~~Y~xR:FQGAd~lx~Yx\j~mny}dCop~9u~~`hX~~Yg~~it~J~fho~df~gE~b~iB~~N [...]
   @m150825_055401_42161_c100844482550000001823159012311525_s1_p0/2126/ccs/rev np:i:12 rq:f:0.99809
   AGCAGTGGTATCAACGCAGAGTACGGGAGACCAGTAGTTGGGTCAGAAATTAGACGTGGTTTAGTCTGGTTACCGTGGAAAGAATAGCTGAACTCAAAGAAGCCGACAAAGATAAACAAAGAAGAAACGGTTAATACGATTGAGGAGAAATATTCAATCCAACGGCAACTATTAACGTTTCAACTAGAATCTACGTTTCATACGCGGATTCCACATCCGTTCTTGCAATTAAAGAAACGATGTAGAAAACGCTTTGGTTGGCGACAACTTGGGCGGCAAAATAATTATGGTAGGTAATTGAAGTAGCGTTAAAACGCAAAAAGAAGGAAGCACGGATCACTGCAAAAAGGACTACTCAATAATGGTTTCTAAAGTCATTATGCTGGTGCTCCCTATGGCGGTGGTCAGTACTGTAACTAAAGATGGATTACGGCACTTGTAGAGCACGTATCAGACCCAGCTTTGAAAGAAGGCTGAGTTCGGTTCGGGT [...]
   +
@@ -496,10 +498,10 @@ Test ccs on 100 zmws from the lexogen-SIRV dataset, using --byStrand
   AAGCAGTGGTATCAACGCAGAGTACTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTGACGCAAATGCCACCAATACATATGTGTCCTCTTAATGTTTGCATGCTTAATTCTTTTGATTATTATTTCCTCTTTCTTTCTATTACTAACTTTGTAACTCTCGCTAACCGAATCAACATAAATACGTCAACGAATCAAATGTTGATCTCAAATATCTGTGTCCATGAAATTTTCGGATCGTAATCTGCTCTACTTTTGTTATTACAACAAGAACTTCGACTAAAGAACGGACTATCTTGTCTAATAATAATGGCACTAAGTGCATACTTTCTCGACTACATTGACGACTCAAAATAAGAAAGGGAGTTTTTATACATTGACCTAACTCACTACTACGCCCTTGGTTACCTTTGAACCTTTCGTTGTCAAAGTTCGTACGATGGTAAGTGCTTTCTTACTCCTACCGCTATTTGGTTGAGAACCTGTTAAATGA [...]
   +
   p~y]httc~jM~\8zdfZ|xix~Nh$~~~~~~~~~~~~~~~~~~~~~~~~~~~~~``ZRw\@~~~yM~yZ~G~~zp~~h~mlx~X~j]Y~F~~yZ~~xVuj_YF~e~%lq@~~~rRc~~f~}I~~a~~lY~~sY~~mQb_~{niI~ra~cred~m|t{Oqn~Y~Xk^T~|j1qYul?~~htih^bNzaiJn(a7ys\gH~nnE\pa/|~|s|iyWzozH~h$c'T76~~u`6gn_gWwS~ycuodGc^PM<~~~mU~r`z at B7q_[~o=zbK~UPmfx)~~lN~S\~]hy]Y_b~jse]W~_S~\T~{]~hrcp.~jtR`VrmT]~~QxbjpNyqWTY~m]Wm[M[\0pTWpZhn?~nR~~snD~~~rDrXcsg~n]NlXN~Y<O:ZLDTx\ad&tWW~\~W~]U~Kh}VM~OZ1uoSb<~`IeNymgT~dl|djk)CZ~f1|j\hG9~~<+3/d{T~t]<`/bWm0~xIxO~gTi\~W~|nV~C~t]ms [...]
-  @m150825_055401_42161_c100844482550000001823159012311525_s1_p0/2164/ccs/rev np:i:7 rq:f:0.996992
-  AAGCAGTGGTATCAACGCAGAGTACTTTTTTTTTTTTTTTTTTTTTTTTTTTTTGACGCAAATGCCACCAATACATATGTGTCCTCTTAATGTTTGCATGCTTAATCTTTTGATTATTATTTCCTCTTTCTTTCTATTACTAACTTTGTAACTCTCGCTAACCGAATCAACATAAATACGTCAACGAATCAAATGTTGATCTCAAATATCTGTGTCCATGAAATTTCGGATCGTAATCTGCTCTACTTTTGTTATTACAACAAGAACTTCGACTAAAGAACGGACTATCTTGTCTAATAATAATGGCACTAAGTGCATACTTTCTCGACTACATTGACGACTCAAAATAAGAAAGGGAGTTTTTAATACATTGACCTAACTCACTACTACGCCTTGGTACCTTTGAACCTTTCGTTGTCAAAGTTCGTACGATGGTAAGTGCTTTCTACTCCTACCGCTATTATGGTTGAGAACCTGTTAAATGAGATGG [...]
+  @m150825_055401_42161_c100844482550000001823159012311525_s1_p0/2164/ccs/rev np:i:7 rq:f:0.996833
+  AAGCAGTGGTATCAACGCAGAGTACTTTTTTTTTTTTTTTTTTTTTTTTTTTTTGACGCAAATGCCACCAATACATATGTGTCCTCTTAATGTTTGCATGCTTAATCTTTTGATTATTATTTCCTCTTTCTTTCTATTACTAACTTTGTAACTCTCGCTAACCGAATCAACATAAATACGTCAACGAATCAAATGTTGATCTCAAATATCTGTGTCCATGAAATTTCGGATCGTAATCTGCTCTACTTTTGTTATTACAACAAGAACTTCGACTAAAGAACGGACTATCTTGTCTAATAATAATGGCACTAAGTGCATACTTTCTCGACTACATTGACGACTCAAAATAAGAAAGGGAGTTTTTAATACATTGACCTAACTCACTACTACGCCTTGGTACCTTTGAACCTTTCGTTGTCAAAGTTCGTACGATGGTAAGTGCTTTCTACTCCTACCGCTATTATGGTTGAGAACCTGTTAAATGAGATGG [...]
   +
-  X~\xjquU~PP9sH~\V6L>gp~~|&~~~~~~}tz~~~~~~~~~~~~~~~~~~rrkuqv3~~}tJ~YVg8~cydefJ[Ly`{f~~xZ~T~}mH~dGO2;Lj_~W~wtGqf~t~P~~i~~Y~~`~jtH~~vV~~xI0A}~{jZ~p9~~l}5~\;adLj^i+SRk)@;Azs~yjgU~~;}a:_r:~x_v~~{L~xQrK~r~[s{u1~}Kcx||WZUKZ~ui\V~~H~~uZ~~|vl_Zzyv{bW=kZev<~~aK8maU~~s9~ab~[a~{K~z]mvp7{~qr~j>~j{~oh{N~pPsjk~pf~[S~WU~c~{j[~i}Hswghm4~~jig0'Y`kwiLzZ]qdJ[Kx=~~qcZ~V:~~S~~Np;~~~oJoqLw~T~o|=~cv~{irhzR~wwi`kY~R~[~A~g~X~bkm~_iF~~roNw\hdi~~p\~vWubpS~~Z}Mu~r|rxM~~|~pxhN~NlR~lmKbOE+SOy^{dYj4~_~oGB~F~~yi=[ExS~ [...]
+  X~\xjquU~PP9sH~\V6L>gp~~|&~~~~~~}tz~~~~~~~~~~~~~~~~~~rrkuqv3~~}tJ~YVg8~cydefJ[Ly`{f~~xZ~T~}mH~dGO2;Lj_~W~wtGqf~t~P~~i~~Y~~`~jtH~~vV~~xI0A}~{jZ~p9~~l}5~\;adLj^i+SRk)@;Azs~yjgU~~;}a:_r:~x_v~~{L~xQrK~r~[s{u1~}Kcx||WZUKZ~ui\V~~H~~uZ~~|vl_Zzyv{bW=kZev<~~aK8maU~~s9~ab~[a~{K~z]mvp7{~qr~j>~j{~oh{N~pPsjk~pf~[S~WU~c~{j[~i}Hswghm4~~jig0'Y`kwiLzZ]qdJ[Kx=~~qcZ~V:~~S~~Np;~~~oJoqLw~T~o|=~cv~{irhzR~wwi`kY~R~[~A~g~X~bkm~_iF~~roNw\hdi~~p\~vWubpS~~Z}Mu~r|rxM~~|~pxhN~NlR~lmKbOE+SOy^{dYj4~_~oGB~F~~yi=[ExS~ [...]
   @m150825_055401_42161_c100844482550000001823159012311525_s1_p0/2225/ccs/fwd np:i:6 rq:f:0.995244
   AAGCAGTGGTATCAACGCAGAGTACTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTGTAGTAATGCCTCTACGTCAGTCGGAACAATGTCGTCGTGTAACTCGACGATCTTAGGAGCTACTAAGGAGAGTCTGTAGGGAACCGACTGGGAAGGTGCCACAAGTTTTCTCTACTACTCCGTCTCCTAAAACAACTCCAAGTGGAAGGTCTGTGGGTTTTTGAGTATAGTCCGTATCTAGACCCAAAAGGGCTTACCTTTCGCAATGAAAAGAATATCCTTATAGACACGAAACGGGAAGAACGGAATCGTTATTAATGACGTCGTACAACGTTTTCCAAGTTCTCCTCTTCCTCCGGATTCGGTTTGGGTTATCTCAACTAGTCCTTTCAAAGACATTGGAGAGTTTCACCTTCCCGTTAAGGTAGAACCCTCAGCATGTTTCACCCCCGGTGACCACTCAGTTACGGAATGTTTTTAAGCCACCTCAGCT [...]
   +
@@ -528,10 +530,10 @@ Test ccs on 100 zmws from the lexogen-SIRV dataset, using --byStrand
   AAGCAGTGGTATCAACGCAGAGTACTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTAGTCTGGCAGATTAGATACAGCTATAGAGCGAATCACCACGTCTCCTTAGATAACTGGCAAATCTTCACAATTACGCAAGACCATAGAATAGTCCTAAGCAACATTTGCCGCATCGACCAAATCATGGCTTTGCACTCCAACTTTGCCTGAATCGTGTCAGACTATAGCGGGACGTTCGACCATACTACTCATTCGATTACGCATTCACCTGACGAGAAATAGCCATTCTTCCTGAACATACGTTAGAAGTAGTTGGTTAATGCTTGTCTACATTTGAGTGCGAAGCCACTAGTGGTTTGCACTGTTGACCACCAGCAACGCAATCGCAAGATACGCAGTAATGCTAAACCATACTTATTTGACTTTGATGTTCTATCACTGGGTTAATGCCTGCTGCTACCTGACTTTTAGTCGCGAGCACAACGCTTCTTGGC [...]
   +
   S_GKVGB?[TFSL,ZRKRFJ[KR/B$PV_ddddb\WTSRNKJMRVXMIKPTLHNWU3M:T=fKCJZEcGJ\VU9X6O>YTEIEJSKLaGS\E\@@FLNQ2\IeFISD>cSV at mR6d_FSKfP.;NeJfFO7B at N;\EdFUYLMfV\I=4bU at dKQ1RAI4deJEXHFZTQ5ZFd>RSS;DU?lR/_F9=DJUEc;bP4EKJE`VKNfTR;V;R8CA*CU\UFJQ%_HI=I9dRK\EdBSAQREOVS[BFO=L7MH1F<ZKfS\FdVJD<IAF'^ZD8J4OUFGSJfFdVJ>cQADPRKKf\K>bKPEJH`>SJeOfVKSKfKVSVWGS<PVKC4=ISKM]G5bZNQZ7,2RBf^F9UGR%:L7V at _FFi\KR,D<H<NeVRJQ>XJAOUGJ<VKU:PUI:<9_P:VXTAMHf\CffK\SBf\F at TJ;cP<CTAH>D:eeEI:BSJ4aRF(SKQ=UDcVJWG8g[WQ:>O4<H\KSQQ>eRKL7QRJc1hR [...]
-  @m150825_055401_42161_c100844482550000001823159012311525_s1_p0/2295/ccs/rev np:i:4 rq:f:0.976003
-  AAGCAGTGGTATCAACGCAGAGTACTTTTTTTTTTTTTTTTTTTTTTTTTTTTAGTCTGGCAGATTAGATACAGCTATAGGAGCGAATCACCACGTCTCCTTAGATAACTGGCAAATTCTTCACAATTACGCAAGACCATAGAATAGTCCTAAGCAACATTTGCCGCATCGACCAAATCATGGCTTTTGCACTCAACTTTGCCTGAATCGTGTCAGACTATAGCGGGACGTTCGACCATACTACTCATTCGATTACGCATTCACCTGACGAGAATAGCCATTCTTCCTGAACATACGTTAGAAGTAGTTGGTTAATGCTTGTCTACATTTGACGTGCGAAGCCACTAGGTTTGCACTGTTGACCACCAGCACGCAATCGCAAGATACGCAAGTAATGCTAAACCATACTTATTTGACTTTGATGTTCTATCACTGGGTTAATGCCTGCTGCTACCTGACTTTTAGTCGCGAGCACAACGCTTCTTGGCTA [...]
+  @m150825_055401_42161_c100844482550000001823159012311525_s1_p0/2295/ccs/rev np:i:3 rq:f:0.977733
+  AAGCAGTGGTATCAACGCAGAGTACTTTTTTTTTTTTTTTTTTTTTTTTTTTTAGTCTGGCAGATTAGATACAGCTATAGGAGCGAATCACCACGTCTCCTTAGATAACTGGCAAATTCTTCACAATTACGCAAGACCATAGAATAGTCCTAAGCAACATTTGCCGCATCGACCAAATCATGGCTTTTGCACTCAACTTTGCCTGAATCGTGTCAGACTATAGCGGGACGTTCGACCATACTACTCATTCGATTACGCATTCACCTGACGAGAATAGCCATTCTTCCTGAACATACGTTAGAAGTAGTTGGTTAATGCTTGTCTACATTTGACGTGCGAAGCCACTAGGTTTGCACTGTTGACCACCAGCACGCAATCGCAAGATACGCAAGTAATGCTAAACCATACTTATTTGACTTTGATGTTCTATCACTGGGTTAATGCCTGCTGCTACCTGACTTTTAGTCGCGAGCACAACGCTTCTTGGCTA [...]
   +
-  <XD.GB at 3FB@1A*5/DBF=4)MHB$K at KTND<:COTOE?@GOJB>AJNC>D:3E:<O>TBKIJ%SD5JPJBH-3&KPK'JI2 at 2=8:AK&MA>3M<-:YCU6 at 7BBXB;;VB<XX5PB4UA4ABUEWKBH.AVIK9]KPKH-<;KIN(YN>XH-/TAJ1DTH*MIBKPA3I)G&TOPBJ:>VB%SSIHA4 at 8,AUB$SSG9]OF=P%AG9FJ<G<)?AKPKF:&UKKBH4SBIG6[GBJ+9JB9AKEWBIK5WKBH.IDWCK9\NGJBFKI;YOF68\J4UBDU+TCH0VBHK?BE2SJIBXH:JH4A-TDW9O;GB6 at C8@5IA4>VWIJ')NG?A<M9*PKB:I<F:N=2AKBN39PGG8YK9\GHBKBG?-U;.FBBXIKPKBH?+GHO3XNF;P<XW:YKPKB4UJ>VWD8A1UUHKPI@=AJ2L-IBP6P?1T(=:G9N:GBN1,NF&WMIKB-POLGDDA3AHJ2 at HBBXBD+6LBEW;P;=J [...]
+  <XD.GB at 3FB@1A*5/DBF=4)MHB$K at KTND<:COTOE?@GOJB>AJNC>D:3E:<O>TBKIJ%SD5JPJBH-3&KPK'JI2 at 2=8:AK&MA>3M<-:YCU6 at 7BBXB;;VB<XX5PB4UA4ABUEWKBH.AVIK9]KPKH-<;KIN(YN>XH-/TAJ1DTH*MIBKPA3I)G&TOPBJ:>VB%SSIHA4 at 8,AUB$SSG9]OF=P%AG9FJ<G<)?AKPKF:&UKKBH4SBIG6[GBJ+9JB9AKEWBIK5WKBH.IDWCK9\NGJBFKI;YOF68\J4UBDU+TCH0VBHK?BE2TJIBXH:JH4A-TDW9O;GB6 at C8@5IA4>VWIJ')NG?A<M9*PKB:I<F:N=2AKBN39PGG8YK9\GIBKBG?-U;.FBBXIKPKBH?+GHO3XNF;P<XW:YKPKB4UJ>VWD8A1UUHKPI@=AJ2L-IBP6P?1T(=:G9N:GBN1,NF&WMIKB-POLGDDA3AHJ2 at HBBXBD+6LBEW;P;=J [...]
   @m150825_055401_42161_c100844482550000001823159012311525_s1_p0/2305/ccs/fwd np:i:11 rq:f:0.999136
   AAGCAGTGGTATCAACGCAGAGTACGGGACGGTCGTACTAAAATCAGCTACGCGATCGCCGACTTAGAAGGCTGAGATGGAGAAACTTGTCTACTGGCAGACCTCACTATCTTTTAGGAAGGTCACGAAGCGGCTGGAGTGATGGCTAGTCTCAGCCACTGTCAACGGGAAGCGCGACGTTTATGGTCAATATAAACTAGCAGTTTAATCCGTATGGCGATCTTAGCGGATGTTACAGGATGGAGAAGATGACAAAGTAGAAGCTAGACAACTATATCAAATCGTTGTGTGGTCTTAAACCGACACAGTAGCATTCATCGTTGGATGTGGAAGGTCACAGCCTCGTTGGAGGAGATACTACGGTCCCGCTTTTCGTGGGTGACAAAGGTCGCAAAGGTTTCCTTAGGGAGGTCGTTTCCCGGATCTTTATCTACATCTCCTGGGTGAAGGGGATGATCTTTCTCTACATGTCCTGGGTGGAGGGGAGTTT [...]
   +
@@ -568,10 +570,10 @@ Test ccs on 100 zmws from the lexogen-SIRV dataset, using --byStrand
   AAGCAGTGGTATCAACGCAGAGTACGGGGTGGTAGCATAGCAACTGTTCTGAATGTGATATTCGGGTCAGGCCACGTTGACACTTACCAAAGCAAAGACAGAAGGAAGTTGACGGGACAATAGGGAAGATTGGCAAAGGGGATTTAAACATAGTCCAGTTCGCGTGGTGAATGACAGATTGCTACTGTTACCATTGGCGATACTAACGTTGGCGACTTTACTTGCCTCGGTAGCGACAGAACAAGTGTCGTCTACGCAACGAACAACCAGCCGTGTTAGCTGCAATGTCCCCTGTAGAAGACCCTCTTCTTTCTCTTCTGAATGATGTAGCTGTGGATAGAGCGTCTCCCACGTTAGGGTCTAGCAACCCTCCGGTGGTGTGTGGTTTCGGTTCGCTTGGTTGGGTGCCCAATTTCCAGTACCGAAGAGGTAATTGCAACTTCAATTGCTTAGTTGACGTGACCTTTCGGGTGTCATGGACTACCGACGG [...]
   +
   s~fpVr|d~fEWN^~ZuYftQt}7nM~~xN2q~g_nMz~vlZ~\~t8~mhs2~bpRsi~ig~,1~~~r~b~I~sdT5~lflgmT{iYj4~~vq%~tugr}pE~M~C~qj~J6A;XmW\:~|g4p~i~\N^r9~Z@|~${~nzKwd:~Y*asvanL~}q6~SpnDHa~}X_~uZ~lxFaA~0TwQl}w(y~Rf:V~_~G]f~bUy'porn~a~``[qR~~Rg0htQ~~tg~z6rpavqNaY~\@wv~[{+gReiemIZI~q_1~Za{X~wt(`_~Kn~;IG'Ys]~x1b0~~~xHizIX~wvE~z[gD~K;wvffEQB\|]H~e_EO;V`op~db;~d~~ti_[w{:p0~~~rb_~jJ~~~u~ganG~O~qg[~Q~~*~~nOT{R{5~~nL~W~\xeU~>~J~C~~cRG~r=j:sR>~_qk|Z~s8~rmO~ySvGN8oO~tp~lE~j~JS>}Qr.~^yfcqb{_w.~^IU~~|K],R~Kxbp~R9~HP[b~ [...]
-  @m150825_055401_42161_c100844482550000001823159012311525_s1_p0/2359/ccs/rev np:i:7 rq:f:0.994717
-  AAGCAGTGGGTATCAACGCAGAGTACGGGGTGTAGCATAGCAACTGTTTCTGAATGTGATATTTCGGTCAGGCCACGTTGACACTTACCAAAGCAAGACAGAAGGAAGTTGACGGGACAATAGGGAAGATTGGCAAAGGGATTTAAACATAGTCCAGTTCGCGTGGTGAATGACAGATTGCTACTGTTACCATTGGCGATACTACGTTGGCGACTTTACTTGCCTCGGTAGCGACAGAACAAGTGTCGTCTACGCAACGAACAACCAGCGTGTTAGCTGCAATGTCCCCTGTAGAAGACCCTCTTCTTTCTCTTCTGAATGATGTAGCTGTGGATAGAGCGTCTCCCACGTTAGGGTCTAGCAACCCTCGGTGGTGTGTGGTTTCGGTTCGCTTGGTTGGGTTGCCCAATTTCCAGTACCGAAGAGGTAATTGCAACTTCAATTGCTTAGTTGACGTGACCTTTCGGGTGTCATGGACTACCGACGGTAT [...]
+  @m150825_055401_42161_c100844482550000001823159012311525_s1_p0/2359/ccs/rev np:i:8 rq:f:0.994039
+  AAGCAGTGGTATCAACGCAGAGTACGGGGTGTAGCATAGCAACTGTTTCTGAATGTGATATTTCGGTCAGGCCACGTTGACACTTACCAAAGCAAGACAGAAGGAAGTTGACGGGACAATAGGGAAGATTGGCAAAGGGATTTAAACATAGTCCAGTTCGCGTGGTGAATGACAGATTGCTACTGTTACCATTGGCGATACTACGTTGGCGACTTTACTTGCCTCGGTAGCGACAGAACAAGTGTCGTCTACGCAACGAACAACCAGCGTGTTAGCTTGCAATGTCCCCTGTAGAAGACCCTCTTCTTTCTCTTCTGAATGATGTAGCTGTGGATAGAGCGTCTCCCACGTTAGGGTCTAGCAACCCTCGGTGGTGTGTGGTTTCGGTTCGCTTGGTTGGGTTGCCCAATTTCCAGTACCGAAGAGGTAATTGCAACTTCAATTGCTTAGTTGACGTGACCTTTCGGGTGTCATGGACTACCGACGGTAT [...]
   +
-  @~elwfF%~mp[VS?~jhlufpfIbQBt}roOCU`jojDclM~lrR,~phe,_~_eWMpsu,~7-Dk2RsA~Y~xjiQ~gog\j_vs2~6sf5QRm0PS[XMY?~V~^^e&YT*zr9O?t0X3~`R~QsBsK~lVr~?|x\*~?9{vNruua3Eon;^~UeUdHBx?Ea~Z9n=pPW:~_UrwkG_2~sY~VP~X~kRrGslKsfJ=~C~OIX;U~~s=M~K8cX<R~BAQlhulsc<oS\vc\clgdW`-qi:>d~kP8~;Q~\~whkQqg=~[dR-8ibzohjJ~~~re at SPN~6pR~~sk>~kM~~lskP~krT8SDfu[PpZ&f]fXQ~r.ofpglhsk\B~~tUe@~t>~~Xj\uhlf~4~<-$@pI+UJaT-1P~@~u[RsQ~SOTOxS~=fA~c,TRNz~b~=~v\~uRHqI~^6hUQGa\`~RxTTe~ma~Wd{:tdlP{oIJ~bXSfserZ~@~qU@~eZR0NQ`?iOb\oBx_sRBpO7+ [...]
+  @~k`~oE(~cX\W8~f^dkVeeNfDCk~nxV8GgkneKYbEw_wY(uphq5j~inbXyy}*~*$Ll;\~G~a~yqmD~ovcg`d~~5{9te9FYk6VGZ^HGG~Wvg_c+VE-nh4F at i&K3~dX~RfG~C~vX~zA~}f0~PC~mC|~gi>MnW>U~J^U\>JrLNf~N2v>xT\C~hay~p<d8yh`~bZ~X~g[pR~tT~rTF~N~XTUAV~~nIT~C.SSG\~IKZusyw~nG~dh~mhmvZlaW7}tEI]~uZF~F]~d~}_uIca0~QY`%-0rl~vpgH~~~zXH`TP~<vT~~{u6~uQ~~_wbO~roZ2D;nk_SuH)mcpaX~x1vZqXnfjrSD~~rZ[7~s7u~_t]~lwm~*~<8-G~T-fC`T(4Xz@~fMXvJ~]H_LzU~2TD}k%HOPy~\~<~~W~~\D|S~g8v^TBc^\~U{]^n~s_~``}Dy^vO~yDV~`aZZzkrb~7~lY<zjfM<VZgDf?lec9uOzXJ~X*1 [...]
   @m150825_055401_42161_c100844482550000001823159012311525_s1_p0/2409/ccs/fwd np:i:6 rq:f:0.996988
   AAGCAGTGGTATCAACGCAGAGTACTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTGATGCCTCTACGTCAGTCGGAACAATGTCGTCGTGTAACTCGACGATCTTAGGAGCTACTAAGGAGAGTCTGTAGGGAACCGACTGGGAAGGTGCCACAAGTTTTCTCTACTACTCCGTCTCCTAAAACAACTCCAAGTGGAAGGTCTGTGGGTTTTTGAGTATAGTCCGTATCTAGACCCAAAAGGGCTTACCTTCGCAATGAAAGAATATCCTTATAGACACGAACGGGAAGAACGGAATCGTTATTAATGACGTCGTACAACGTTTTCCAAGTTCTCCTCTTCCTCCGGATTCGGTTTGGGTTATCTCAACTAGTCCTTTCAAAGACATTGGAGAGTTTCACCTTCCCGTTAAGGTAGAACCCTCAGCATGTTTCACCCCCGGTGACCACTCAGTTACGGAATGTTTTTAAGCCACCTCAGCTAGTGTTCCG [...]
   +
@@ -588,14 +590,14 @@ Test ccs on 100 zmws from the lexogen-SIRV dataset, using --byStrand
   AAGCAGTGGTATCAACGCAGGAGTACGGGGTGGAGAAGCAAATACTTGGATACCGAATTTAGAGGCCATAGGTTATGGAAAAAGTCAGTGGATTAGATAGTAAAAGTCGAAATCTTTATATTCGGTTCGATGTACTACGTTATTCGCGACTGTTCTGTCATGATAGTTTTTTATATAGTCCTAATAAAAGGAGTTTTTAAAGTAAATGACATTTCAGTAGTAAAAGTTTAAGAGCTTTTTGTTCTGCCAGACGTTCTGATAGTTGAGGAAAACGTGTGGTCAGCTAATAACTTGTGGTATGGAGTAAACGAACATCCAACAGTATGTACAATCGTATGAGAAAGGACAAATCTGAAGACGATATTAGAGGGGAGTCCAACAAGTTTGTTGATGATTCACGTAAGGAAATCGAAATGTAAGATTATTCGTCAATGGAGGTATAAGACAACACACCAAGTAATTATACGCGACGAGTTTTCATGTTGACGAT [...]
   +
   @dLFIDMBcI.MBAx[ZFb*eVUfd\;~~oCDycZCcX[+xu9a[EzK}bPb@^EC|;t_KV]*SM~da\:zFx^K<t;z~~Y at d\bDMJzK6xb[a9afq;~~s_kfdE~~ZeO~~oqnN~bR~`~feol_lifqofOPzmO~eeePmfqe<~dVaiMl\eoqod6~scf{iSmegNDO~pI~i@~ulAvj_&ophpNq~YqT~~oOmfi&i~dnSqnepC~~~a2y[K~cobf'XnuaY.~cXcL~k9kfdUucCcnqpe?fMUSv0~~sed[`kNPqfoegqZo[^~g]rbnP~PnWHvQ]qE~~fd>udTRNy_~fmPnVXd[Vc9~XeepgKaoeQ~nA~VeR~~qbSIK~doe^RZlO~kfk%~~mn_eNtL~e_~N5|jP1^]O`ajV~Omfbk_~U~@~~qfdB~wYdZ]~OmV~o`~feqf_~SS~lRm[l[]~RQcN~eieiB~K~d^`~_~nXmfefeofend5~~~ekf_`~eofdnq [...]
-  @m150825_055401_42161_c100844482550000001823159012311525_s1_p0/2436/ccs/fwd np:i:7 rq:f:0.988106
-  AAGCAGTGGTATCAACGCAGAGTACTTTTTTTTTTTTTTTTTTTTTTTTTTTCGCCACGTCTCCTTAGATAACTGGCAAATCTTCACAATTACGCAAGACCATAGAATAGTCCTAAGCAACATTTGCCGCATCGACCAAACATGGCTTTGCACTCCAACTTTGCCTGAATCGTGGTCAGACTATAGCGGGACGTTCGACCATACTACTCCATTCGATTACGCATTCACCTGACGAGAATAGCCATTCTTCCTGAACATACGTTAGAAGTAGTTGGTTAATGCTTGTCTACATTGAGTGCGAAGCCACTAGGTTTGCACTGTTGACCACCAGCACGCAATCGCAAGATACGCAGTAATGCTAAACCATACTTATTTGACTTTGATGTTCTATCCACTGGGTTAATGCCTGCTGCTACCTGACTTTTAGTCGCGAGCACAACGCTTCTTGGCTACACATATGCTGTTGGGAATGTTTTTTACACTTATTATG [...]
+  @m150825_055401_42161_c100844482550000001823159012311525_s1_p0/2436/ccs/fwd np:i:7 rq:f:0.989186
+  AAGCAGTGGTATCAACGCAGAGTACTTTTTTTTTTTTTTTTTTTTTTTTTTTTCGCCACGTCTCCTTTAGATAACTGGCAAATCTTCACAATTACGCAAGACCATAGAATAGTCCTAAGCAACATTTGCCGCATCGACCAAATCACTGGCTTTGCACTCCAACTTTGCCTGAATCGTGTCAGACTATAGCGGGACGTTCGACCATACTACTCATTCGATTACGCATTCACCTGACGAGAATAGCCATTCTTCCTGAACATACGTTAGAAGTAGTTGGTTAATGCTTGTCTACATTGAGTGCGAAGCCACTAGGTTTGCACTGTTGACCACCCAGCACGCAATCGCAAGATACGCAGTAATGCTAAACCATACTTATTTGACTTTGATGTTCCTATCACTGGGTTAATGCCTGCTGCTACCTGACTTTTTAGTCGCGAGCACAACGCTTCTTGGCTACACATATGCTGTTGGGAATGGTTTTTTACACTTA [...]
   +
-  b~4Ykbg4[N.?ADSPiaKh^Qlo^$kURRUZZX]fi`XSQIHO]h_F9777:8=_iQOjMhGf,~KdYlT~\TQRS5p\KPCLXjbLo>SJQ[5.FGT:[BPLSAx^>DF at wkFeQIQmFM1RoX0tg_YZ_?i<B0R0$>(Hra0~q]Z^bjKqEd3KE[F>ICfPwfJRS%LPE\SXGeokWJD?AnkKJHeU]U)\NQm`ZY^\%QU5MUO,Nv]chQWO}b[Jw^bZL^jRSqSILDun at mNIgC~d?7FSnTVGcLM)SG~^X8MD}ABPU<@FEJJ~,6FMEAA+IP?WlIP>TjSDYYdStDD;^[W:CW_:<Uga5~K'JJMGefde5re7M%3JTHgbidekakC`XWRZIerT`sZMnQtUMK:Z9U1te^ZPeF:/`\a%(*cqL~~TwLWX^G|c\>bbRg7<UqFaO$t^K>K`QX:M;ROI'>7W[QNzK\gPz\~xljLoc`j^eufSs%wFFw&i'dxwxfVWRT?dZS{XaZ [...]
-  @m150825_055401_42161_c100844482550000001823159012311525_s1_p0/2436/ccs/rev np:i:7 rq:f:0.985893
-  AAGCAAGTGGTATCAACGCAGAGTACTTTTTTTTTTTTTTTTTTTTTTTTTTTTTCGCCACGTCTCTCCTTAGATAACTGGCAAATCTTCACAATTACGCTAAGACCATAGAATAGTCCTAAAGCAACATTTGCCGCATCGACCAAATCATGGCTTTGCACTCCAACTTTGCTCTGAATCGTGTCAGACGTATAGCGGGACGTTCGACCATACTACTCATTCGATTACGCATTCACCTGACGAGAATAGCCATTCTTCCCTGAACATACGTTAGAAGTAGTTGGTTAATGCTTGTCTACATTTGAGTGCGAAGCCACTAGGTTTGCACTGTTGACCACCAGCACGCAATCGCAAGATACGCAGTAATTGCTAAACCATACTTATTTGACTTTGATGTTCTATCACTGGGTTAATGCCTGCTGCTACCTGACTTTTAGTCGCCGAGCACAACGCTTCTTGGGCTACACATATGCTGCTTGGGAATGTTTTT [...]
+  X|-T_U[&W]8TA9XJ^W>^RGa^W$dPTTZbedgntmd^[VPPV`k_JAA at 53.6X`QX`D^Fe$`;HZOaTzUJG=X*l_MR<PO_X at q;]QRW69MP_AfMWBQGuV3:79kaOjG at O\<Q'EdN)c]UM`WF_7I4WW(=<(YMzY8~jZQ_ZcHpDiAE>YCDWJhO~j`db2NDffYHgpkYLE@@voKIEeVYU)`?Wo`^Y]H2W8O[b+M[X`hLQMvb[Ky`Z]M\k]PxPFFD}oJcNCbB~d?5<RoRV4ITb3REz`dBK at f<,QO;/DNJJ~?9FNMA?)YDGRm<FSESJD][``sL):nODIRbW6HMg]5s8-dS]NRffsg<~t?Y45\?FiakVljVr<OYQW^<ozM~tmQnLgVQR:eIF/j\RpgfAY'HanQ,9krK~|SyOb_\F~k`=fkQZ8;]j:U?*dR[HNRfMi<TLUON79:TZQK~]anT~f~ojmMw]rhaa~xVn&pON~(*C2[tqnp`S`YKh^ [...]
+  @m150825_055401_42161_c100844482550000001823159012311525_s1_p0/2436/ccs/rev np:i:6 rq:f:0.982503
+  AAGCAGTGGTATCAACGCAGAGTACTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTCGCCACGTCTCTCCTTAGATAACTGGCAAATCTTCACAATTACGCTAAGACCATAGAATAGTCCTAAAGCAACATTTGCCGCATCGACCCAAATCATGGCTTTGCACTCCAACTTTGCTCTGAATCGTGTCAGAACGTATAGCGGGACGTTCGACCATACTACTCATTCGATTACGCATTCACCTGACGAGAATAGCCATTCTTCCCTGAACATACGTTAGAAGTAGTTGGTTAATGCTTGTCTACATTTGAGTGCGAAGCCACTAGGTTTGCACTGTTGACCACCAGCACGCAATCGCAAGATACGCAGTAATTGCTAAACCATACTTATTTGACTTTGATGTTCTATCACTGGGTTAATGCCTGCTGCTACCTGACTTTTAGTCGCCGAGCACAACGCTTCTTGGCTACACATATGCTGCTTGGGAATGTTTT [...]
   +
-  RX<.5 at B:6SVNDfZle^h].J_jlT%gUYZTWWVWZ`c[VSQRU\hrsrrrrqSPLU~UbRL'IS at +E=hQT-3C4RLIpR<7fFfFnaV_U~T~lhM_/>_C_6mH1i=?_GIWIH7M,BMHJ3~OF:Mv`D1-\FUO5L+H.a at 5H758fH/jiEQhesU~Gh]CgjFK35iMDqdb3A3^PiZ)D,AYUJO[AqD'`[Kpe_gLtV1LQ[\_WPULR\7 at 6G=T+WH)vL?KkMF]ZBcYHfRcKRsnLjeJo)`QQ[VoU^V]a;>Q?RJl_VBMU_IJ6UR[/E*6FLRYQNeP6~~_ULZ&[V5~I6RFEUO>cGq`6_EadV;YFA?dZ at ogKOdIL4FtSP`UNe[HRccH>K<Z7Y.\VKJ at Y`?TCDS8TR[-jQI;28nZAPjVMnW:2+JNb^7~lPaNrPNF|odfY_esl;aSFbc0nolIHVV\%&DOZfhQLocDcS_>=S'LEB9LNNN`/g?X^iW/;ABZR;[TY2YSF? [...]
+  E=1.1B7:OVZG]Q[[T^^&9V\b^%l]ce^a__acglhb^[Z[^cnxyyyyvn\YYNxJWB>'DSN(82mYK'->+HNF]G05eH\>[VJUJtTyc]D\+H^?V?jQ)`HFQ?XPBKEF58M>>+rD;/>hW at +&R>L\@K%6:2Y;,P.>=a:/abQF[_fOm;TN;W[;E2/_D?x\W*?*WEaV(G=$5]IC?V=_S,USAa]ZbOpZ(MGSc_PY\BV\>1><0S+QG*fT?KnB>bX9XR<[JXBKbbB_ZCb3RTIRM_Y\M[W>AB5UKoV\DKPaC<,[Nd;<07FBPXJQ^]<vvVKFV0RR=q?8WGKHD7T<db-S<VXMH[=<4XU8n[CF_CO-=xMFWLEfQCEYY>4<2RCO+SOP;7HSEYN;I?NV\7aRA1</p_EEbYDu[1*1B\Ze>zgOdDaJD<veZ[NVZfcF^H>VY(`ahB?NLT-&;FS]`EP`Y;ZTbG2]&V;1DJFF^9^6NV]M$2E<]SETHP6MHL [...]
   @m150825_055401_42161_c100844482550000001823159012311525_s1_p0/2451/ccs/fwd np:i:8 rq:f:0.994616
   AGCAGTGGTATCAACGCAGAGTACGGGGTGAGGCTTGTCCGCGAGTGTCAACCGGGTTTTACAAAGGAGAACTTCCAACATCAGTGTATGGGATGTTTCAAACACCCCCAGAGACGGAGACAATAGTGTGGTCACGTACATTTAGGAAGATAAAAATAACAACAACAGAAGGTACAAGAGTTGGTTACTCTCAGTCCCATTCCCAACACATCACTGAGAAGTATAGAGCCTAGTGGTCATTAGAAGGTCAACATGGAGTAGGTGTTTAGGTGTGTCGGAGGGCAGAAACCAACGAAAGAAAGGAAACGATCAACACTTATATAGTGTCCTGTCGGGCCCAAATCCTAAGAGACCTTAGGTTTACCACATTAGTACTAAACAGCCTGTTGTATACCGTGAGCCCCCACTTCGATCTGTAAATGGTAATCCCTTGTAAAACCTCATCTCCAAAAACAGTATACGCAGGTACAGCTGATGTGATCCTCTCTAC [...]
   +
@@ -628,14 +630,14 @@ Test ccs on 100 zmws from the lexogen-SIRV dataset, using --byStrand
   AAGCAGTGGTATCAACGCAGAGTACTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTCTATACTACGAGGACGTCACCACTGAGGTCTCCGACATGGACACCTAGTCCCGGGACTCACCGAACCTACACCGTTCCCTTCAGTGTGTTCTTTCGGAGTAGTGAAAAAACGTTGGTCTTCCCGGTCTACTATCCATCGTTCATGTTCGGCTTTTACAAGTTACCTTCAACAATTTTTACAAAGCAATGCTTGTGGGCTAGGGCACCGCGTTTTGAAGTAAATAGATGTAACCTACCACCCATAAATGCTCTAACAATTTAAGTTCGTCGTCGCCTTCTTTTATATCACTAACGTGTACCTACCTTAGAGCGTTACCAAAGTACATATACAGATTTCTCAATGTATTTGACCTGGCTCTCTGCAATCTCTCTCAAGATGCGTAAGCACTTTCAGTAGGACGAATTTACGGTGGTAATTTCGCACACTTCGCA [...]
   +
   e~P^qNZQ~XpnH:~Z__n`l_Ul`%~~}rsw|~~~zupf_^gw~~~~|vmbagq~~`^pqZo^pkGJmTwYHcr`o-~Q[rerR~];\ExepHWoU~mZYLnNYaYFwv%}pr_r^YN~eb~:fWX[h<~`]~:~x_~HVKYaY<?q]=vg]:pN[\oNZ9;{~~no^aFeJlNC-d7X\QxJZDh_rrq<~qr`eO~^aIQRs_U~_>p]pr_L~e>~rN~a~^A}]Q~*~~~^WHO|~f_L~rf_P~_hI~~^\k:mlTXM~e_d4yesL)~bqR~~rs`Uperb~N~\qN~YG~~nr<~='`\p^pO~^a~HkkL~dO~^er_fr\fP~K~^5|~~plfl^t^qN~^T_bgrN~\qP{=~pbgb]b<dkL~W~~blp`qpXYp_rer<~w`n_a~W]Wa9~xerN~rS~_PTPUa.L9]9GG:A at MMQ[0UNYUYLCs,?@S7q:'C?I^:oNR)+Z(_cLTLS%JlfYx2_UT[WeW`REtU[UO [...]
-  @m150825_055401_42161_c100844482550000001823159012311525_s1_p0/2628/ccs/fwd np:i:12 rq:f:0.995752
-  AAGCAGTGGTATCAACGCAGAGTACTTTTTTTTTTTTTTTTTTTTTTTTTTTTACAGTAATGCCTCTACGTCAGTCGGAACAATGTCGTCGTGTAACTCGACGATCTTAGGAGCTACTAAGGAGAGTCTGTAGGGAACCGACTGGGAAGGTGCCACAAGTTTTCTCTACTAACTCCGTCTCCTAAAACAACTCCAAGTGGAAGGTCTGTGGGTTTTTGAGTATAGTCCGTATCTAGACCCAAAAGGGCTTACCTTCGCAATGAAAGAATATCCTTATAGACACGAACGGGAAGAACGGAATCGTTATTAATGACGTCGTACAACGTTTTCCAAGTTCTCCTCTTCCTCCGGATTCGGTTTGGGTTATCTCAACTAGTCCTTTCAAAGACATTGGAGAGTTTCACCTTCCCGTTAAGGTAGAACCCTCAGCATGTTTCACCCCGGTGACCACTCAGTTACGGAATGTTTTTAAGCCACCTCAGCTAGTGTT [...]
+  @m150825_055401_42161_c100844482550000001823159012311525_s1_p0/2628/ccs/fwd np:i:12 rq:f:0.99528
+  AAGCAGTGGTATCAACGCAGAGTACTTTTTTTTTTTTTTTTTTTTTTTTTTTTACAGTAATGCCTCTACGTCAGTCGGAACAATGTCGTCGTGTAACTCGACGATCTTAGGAGCTACTAAGGAGAGTCTGTAGGGAACCGACTGGGAAGGTGCCACAAGTTTTCTCTACTAACTCCGTCTCCTAAAACAACTCCAAGTGGAAGGTCTGTGGGTTTTTGAGTATAGTCCGTATCTAGACCCAAAAGGGCTTACCTTCGCAATGAAAGAATATCCTTATAGACACGAACGGGAAGAACGGAATCGTTATTAATGACGTCGTACAACGTTTTCCAAGTTCTCCTCTTCCTCCGGATTCGGTTTGGGTTATCTCAACTAGTCCTTTCAAAGACATTGGAGAGTTTCACCTTCCCGTTAAGGTAGAACCCTCAGCATGTTTCACCCCGGTGACCACTCAGTTACGGAATGTTTTTAAGCCACCTCAGCTAGTGTT [...]
   +
-  ~~~=|~~n~~v~XV~^~]t~q~~vY'~~~~~~~zstz~~~~~~~~~~~~~~~keIQ~~k~~jI~~Ic\N~k&~~~bj~\~^D~~~~N~~`~~~~f~b~Z~~_~v~_p`z~~~~XhEHl[w^j_~>|~:~Wx_Z~~_~D~qda~J~~g~uuyyG~fM_~~4~d[LlR~g[~AnZt.Hhl:W=~bH~~gQV_K~?}p~~~j~Yau~qP~Ys]~~2y~~l]]|{X~h~p<|i~xxMw`~f*~`:5~~c[PO~yL:PKvO~CZw~aY~~nU~_^0.VliDu&~Q)l8wQgXJ~},~i`~ab~Zm]4vc~dd~2|]qgT{W=YaaRZcG~D~~n'~As~Y~2c4~~>g~G~~A~hommy4b~\}}Ce^Va{t^~\\~^~XmaHlIt~NG~~msSnl~U~b~f~I~~N\Bah~0p`|`~RLK~o`~L~(}~~Kv~_c~~i~|5]'x~~E~~~qN~~H~\iMId_Ph|f~~Y>~~~lZl~J|}?ybWZ~^yrz{~v~ [...]
-  @m150825_055401_42161_c100844482550000001823159012311525_s1_p0/2628/ccs/rev np:i:14 rq:f:0.996595
-  AAGCAGTGGTATCAACGCAGAGTACTTTTTTTTTTTTTTTTTTTTTTTTTTTTTACAGTAATGCCTCTACGTCAGTCGGAACAATGTCGTCGTGTAACTCGACGATCTTAGGAGCTACTAAGGAGAGTCTGTAGGGAACCGACTGGGAAGGTGCCACAAGTTTTCTCTACTACTCCGTCTCCTAAAACAACTCCAAGTGGAAGGTCTGTGGGTTTTTGAGTATAGTCCGTATCTAGACCCAAAAGGGGCTTACCTTCGCAATGAAAGAATATCCTTATAGACACGAACGGGAAGAACGGAATCGTTATTAATGACGTTCGTACAACGTTTTCCAAGTTCTCCTCTTCCTCCGGATTCGGTTTGGTTATCTCAACTAGTCCTTTCAAAGACATTGGAGAGTTTCACCTTCCCGTTAAGGTAGAACCCTCAGCATGTTTCACCCCCGGTGACCACTCAGTTACGGGAATGTTTTTAAGCCACCTCAGCTAGT [...]
+  ~~~=|~~n~~v~XV~^~]t~q~~vY'~~~~~~~zstz~~~~~~~~~~~~~~~keIQ~~k~~jI~~Ic\N~k&~~~bj~\~^D~~~~N~~`~~~~f~b~Z~~_~v~_p`z~~~~XhEHl[w^j_~>|~:~Wx_Z~~_~D~qda~J~~g~uuyyG~fM_~~4~d[LlR~g[~AnZt.Hhl:W=~bH~~gQV_K~?}p~~~j~Yau~qP~Ys]~~2y~~l]]|{X~h~p<|i~xxMw`~f*~`:5~~c[PO~yL:PKvO~CZw~aY~~nU~_^0.VliDu&~Q)l8wQgXJ~},~i`~ab~Zm]4vc~dd~2|]qgT{W=YaaRZcG~D~~n'~As~Y~2c4~~>g~G~~A~hommy4b~\}}Ce^Va{t^~\\~^~XmaHlIt~NG~~msSnl~U~b~f~I~~N\Bah~0p`|`~RLK~o`~L~(}~~Kv~_c~~i~|5]'x~~E~~~qN~~H~\iMId_Ph|f~~Y>~~~lZl~J|}?ybWZ~^yrz{~v~ [...]
+  @m150825_055401_42161_c100844482550000001823159012311525_s1_p0/2628/ccs/rev np:i:14 rq:f:0.996931
+  AAGCAGTGGTATCAACGCAGAGTACTTTTTTTTTTTTTTTTTTTTTTTTTTTTTACAGTAATGCCTCTACGTCAGTCGGAACAATGTCGTCGTGTAACTCGACGATCTTAGGAGCTACTAAGGAGAGTCTGTAGGGAACCGACTGGGAAGGTGCCACAAGTTTTCTCTACTACTCCGTCTCCTAAAACAACTCCAAGTGGAAGGTCTGTGGGTTTTTGAGTATAGTCCGTATCTAGACCCAAAAGGGGCTTACCTTCGCAATGAAAGAATATCCTTATAGACACGAACGGGAAGAACGGAATCGTTATTAATGACGTTCGTACAACGTTTTCCAAGTTCTCCTCTTCCTCCGGATTCGGTTTGGTTATCTCAACTAGTCCTTTCAAAGACATTGGAGAGTTTCACCTTCCCGTTAAGGTAGAACCCTCAGCATGTTTCACCCCCGGTGACCACTCAGTTACGGGAATGTTTTTAAGCCACCTCAGCTAGT [...]
   +
-  =k`~|]f7sb~^ic~~c~~a~f~~~%~~~~~xfkx~~~~~~~~~~~~wkjs~rns:nbO]u^;`|\s]~~aS~~^aq7~T~~~~z`y~aw~Ak3s~~~~~c~~]~~~H~~H~~N|Z~~~{TKSfa~a~~q`ty?~~U~4~I{~g2~~yZLtR^~~~p~~b'~~~f~~}~~f~zU]m4v~^n~~?~~~lp~f^s~~~X[=~b~3oYj=Cb5hM.ZgxjG~)9y3Y>wp~Ma{t~`}9}d~~Mz~S&oYFHBx~V~X~~Y|v~^VGzqUw~Z~~z~i~~r{N~lu~^otd5~|0[Ec~uA~w~XsVBmdd~s[s;~eE.vuFs~~v~~K?}~~[~WwKM~uWPr at nQokoxl~F~~:~}.PF~h+xCv\NdZbHQ`t~e~m}Ia~~`}|ZzY~L~G~~Hk_R~~~~~~`~`~wRO~]c4}hbbXpaVeMr~9~~lPFy~~~X~~~d*HYId?~f~E~~_r~~~'~~~~uT)~~~~g~^s~~~~~~~U~v~Eb [...]
+  =k`~|]f7sb~^ic~~c~~a~f~~~%~~~~~xfkx~~~~~~~~~~~~wkjs~rns:nbO]u^;`|\s]~~aS~~^aq7~T~~~~z`y~aw~Ak3s~~~~~c~~]~~~H~~H~~N|Z~~~{TKSfa~a~~q`ty?~~U~4~I{~g2~~yZLtR^~~~p~~b'~~~f~~}~~f~zU]m4v~^n~~?~~~lp~f^s~~~X[=~b~3oYj=Cb5hM.ZgxjG~)9y3Y>wp~Ma{t~`}9}d~~Mz~S&oYFHBx~V~X~~Y|v~^VGzqUw~Z~~z~i~~r{N~lu~^otd5~|0[Ec~uA~w~XsVBmdd~s[s;~eE.vuFs~~v~~K?}~~[~WwKM~uWPr at nQokoxl~F~~:~}.PF~h+xCv\NdZbHQ`t~e~m}Ia~~`}|ZzY~L~G~~Hk_R~~~~~~`~`~wRO~]c4}hbbXpaVeMr~9~~lPFy~~~X~~~d*HYId?~f~E~~_r~~~'~~~~uT)~~~~g~^s~~~~~~~U~v~Eb [...]
   @m150825_055401_42161_c100844482550000001823159012311525_s1_p0/2648/ccs/fwd np:i:9 rq:f:0.998685
   AAGCAGTGGTATCAACGCAGAGTACGGGCAGAGTACTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTCGGTCTTCTAGCGTAACTATCTTAAAAACTTCTAAACTGCTGCTTAGTAGGCAATAATCGACTAAATCCATAATTTTTGCGACCAAACGCAAACTTCAAGAATTTTAGACTTTGAAGACCGCATCGGCAAACCCCATTTTAGATACCACTTTAATTTCCAGTTAATCTACGACGCAAGTCACTTCTTTGTCGTTAAGTTTTATTTAACTGTCGCAAACAACAAAATGGTTTTCTAAATTTACTAAAAACCAGGACGCACCTAACTTTCTAAACAAGCACAAGTTTAGCTTCTTCGTAAACGTCACCCGCGAACTTTGACGCAAGAATTTTCCATGACCATTTCTGGTTGGTTAGCCGAATTTGGCAGTTCATGTTTTTCCACATAGCCATTGACTCCCACGAATAGGTCTCTTTCTTCT [...]
   +
@@ -664,10 +666,10 @@ Test ccs on 100 zmws from the lexogen-SIRV dataset, using --byStrand
   AAGCAGTGGTATCAACGCAGAGTACGGGGGCTTGTCCGCGAGTGTCAACCGGGTTTTACAAAGGAGAACTTCCAACATCAGTGTATGGGATGTTTCAAACACCCCCAGAGACGGAGACAATAGTGTGGTCACGTACATTTAGGAAGATAAAAATAACAACAACAGAAGGTGTGAGGCGCAAGGTACATGCTCTTACCCCACTCTCAGCACGTAGGGGAGCGGAGTGTGGAAGACCAACAAGCCCGTCGCCTCTACCAAATACAGTGTTTTAGGTGTGTCGGAGGGCAGAAACCAACGAAAGAAAGGAAACGATCAACACTTATATAGTGTCCTGTCGGGCCCAAATCCTAAGAGACCTTAGGTTTACCACATTAGTACTAAAACAGCCCTGTTGTATACCGTGAGCCCCCACTTCGATCTGTAAATGGTAATCCCTTGTAAAACCTCATCTCCAAAAACAGTATACGCCAGGTACAGCTGATGTGATCCT [...]
   +
   Gu6,Lag@~b?2R6eV_ZRcgdnJR*`_rYQ&x^S0QX at 6[7iFDILmEv6a2'MgJ1VBsgOY:KBMX6~?qW~WYFY;al\L5N8Z_cdZ5dRA*LbZb)lrigVHJWQSNbXRG1*WVb^U`TS~o^g]bmN\eC~qXKSSdLeo:~scjcJw]LY45h]gdUlM]AF9__=~]]ZX~Q~cP[JZ`?:Q*[Y+ZU`^A_Z^FRKAOXHVP%we',N0<J0C^Xc1QEd_QL|8~\J~dBg_amFa?~VYJ*M~/~yod[QcmL$h`RaMikaj`M.R~gL~~]][?khGY;K5J/rnLJkkS|D~cGJOnW1fWIY0qgnd\F[hEZ<lfboW;g],qaN~~oN~oT}]gdgL~OjeSvF~iJ:ld[T9cFV at LED1ddM>MP'XROM9f5L6P7;TAQ1R3..-]@0HK]WYejZodnB~~nR~gPgJ%csVfUgBuyjLie]ejTc6y/jLL_\^^bEg?-9(LHEhi:.E76PV\MKeIOl3kB [...]
-  @m150825_055401_42161_c100844482550000001823159012311525_s1_p0/2771/ccs/rev np:i:5 rq:f:0.993412
-  AAGCAGTGGTATCAACGCAGGAGTACGGGGCTTGTCCGCGAGTGTCAACCGGGTTTTACAAAGGAGAACTTCCAACATCAGTGTATGGGATGTTTCAAACACCCCCAGAGACGGAGACAATAGTGTGGTCACGTACATTTAGGAAGATAAAAATAACAACAACAGAAGGTGTGAGGCGCAAGGTACATGCTCTTACCCCACTCTCAGCACGTAGGGAGCGGAGTGTGGGAAGACCAACAAGCCCGTCGCCTCTACCAAATACAGTGTTTAGGTGTGTCGGAGGGCAGAAACCAACGAAAGAAAGGAAACGATCAACACTTATATAGTGTCCTGTCGGGCCCAAATCCTAAGAGACCTTAGGTTTACCACATTAGTACTAAACAGCCTGTTGTATACCGTGAGCCCCCCACTTCGATCTGTAAAATGGTAATCCCTTGTAAAACCTCATCTCCAAAAACAGTATACGCAGGTACAGCTGATGTGATCCTCT [...]
+  @m150825_055401_42161_c100844482550000001823159012311525_s1_p0/2771/ccs/rev np:i:5 rq:f:0.993396
+  AAGCAGTGGTATCAACGCAGGAGTACGGGGGCTTGTCCGCGAGTGTCAACCGGGTTTTACAAAGGAGAACTTCCAACATCAGTGTATGGGATGTTTCAAACACCCCCAGAGACGGAGACAATAGTGTGGTCACGTACATTTAGGAAGATAAAAATAACAACAACAGAAGGTGTGAGGCGCAAGGTACATGCTCTTACCCCACTCTCAGCACGTAGGGAGCGGAGTGTGGGAAGACCAACAAGCCCGTCGCCTCTACCAAATACAGTGTTTAGGTGTGTCGGAGGGCAGAAACCAACGAAAGAAAGGAAACGATCAACACTTATATAGTGTCCTGTCGGGCCCAAATCCTAAGAGACCTTAGGTTTACCACATTAGTACTAAACAGCCTGTTGTATACCGTGAGCCCCCCACTTCGATCTGTAAAATGGTAATCCCTTGTAAAACCTCATCTCCAAAAACAGTATACGCAGGTACAGCTGATGTGATCCTC [...]
   +
-  KZA<P=@CqUIXXKtXSYV0WE?B/3$?XqKIX4H:kOV9H?cV^kR~Gy?~~<\~~yWN~vT~zPMsS*kJ~M~o|smads^]xlH~~s at b5~yj<~qh[D~~~~abHbzjJ`lOrmV~VYOCVC:SV[p_N\fGd5~yzU~PbKgm2~~~j]g~nUsnl~o|fV~D~XKYc{B~lbk?j:`C(9sGa*mnP~z=~}qyX^V^Zx_Szoblv1{ccN_LuschfG%ngazM{[~Aw:Jnb1ttOZ[PV|RWk^J~D~rm`QqbZ`2vzxEeCSL=ZYU~o3~zladL~uZzj~XdNuue7nfS~0ne[M^YUOtns)Kp\SmZugk^r]~pLm`?~~E~~N~~s\~Zf~gyQz]~b~|V~D~|yI~zox@~yblxn\P~~nzPIzmh^~di|sxW~`[`vc$s~~qkq?EI)LzrYrfo%v^0<;~Ve~qC~sLkdX9~tnZ~VTU_UQ0~9~~~~n|gpZT`ngotO~r{ozQl\f|sfqd3p]~mi\ [...]
+  KZA<P=@CqUIXXKtXG[[9VO2C-;$2Om`RK^:KBpZWCQKic^nS~Gz?~~<\~~yWN~vT~zPMsS*kJ~M~o|smads^]xlH~~s at b5~yj<~qh[D~~~~abHbzjJ`lOrmV~VYOCVC:SV[p_N\fGd5~yzU~PbKgm2~~~j]g~nUsnl~o|fV~D~XKYc{B~lbk?j:`C(9sGa*mnP~z=~}qyX^V^Zx_Szoblv1{ccN_LuschfG%ngazM{[~Aw:Jnb1ttOZ[PV|RWk^J~D~rm`QqbZ`2vzxEeCSL=ZYU~o3~zladL~uZzj~XdNuue7nfS~0ne[M^YUOtns)Kp\SmZugk^r]~pLm`?~~E~~N~~s\~Zf~gyQz]~b~|V~D~|yI~zox@~yblxn\P~~nzPIzmh^~di|sxW~`[`vc$s~~qkq?EI)LzrYrfo%v^0<;~Ve~qC~sLkdX9~tnZ~VTU_UQ0~9~~~~n|gpZT`ngotO~r{ozQl\f|sfqd3p]~mi [...]
   @m150825_055401_42161_c100844482550000001823159012311525_s1_p0/2772/ccs/fwd np:i:6 rq:f:0.994156
   AGCAGTGGTATCAACGCAGAGTACGGGGCGATGGGGGCGACAATTGTGGACCGTATGGACTCCATTATGCTGGGACTCCTCGGGTCAACCGCTCTAAAGCGAAGTTGTTGGACAAACAGTTATGCGTAACTGTAAAAGCAAGGTGCCCAAAGTAGACTGAGCGACAGTCGAAACCAGCCCCAATGAACAAGACGCCATTGCAAAACGTCTATACGCTACGGTCAAAGACGCTTCCACACCACATGCTCTCATGTAGCCTACCTTACGAAGAAATCGCACAAGTCGGTCGCCCCAGCGGTGGCATATGTCTTGCCTAACGTTTCTAGACCGATCAGCCTCACGAGTAGCCTGCTTGTGGTGTTTATAGTTTACGCTAGTCCAATCTGTATCGTGCCGCTTGGTATGGCTATTGTCGGCCCTGGATGCAATTGTGCTCGCCATTTCAACTTAGTGCAGTTGCTAAAGTGCCAACTAAGGTTCGTCTTGAAGC [...]
   +
@@ -740,10 +742,10 @@ Test ccs on 100 zmws from the lexogen-SIRV dataset, using --byStrand
   AAGCAGTGGTATCAACGCAGAGTACGGGGTTGGTGTATTTATCCGCTACGTGGGTGGATGAACATGGATGCGAACGACATTTCGAAATATACGCAATGATATCCAACCCTACCGAAACAGCAATAATTGTAGAAGGTAGCATATCATGCCGAGAGTTTACTACGTTGTAGCGAGTTTAGTTGAAATAGTTTGTGATGTGTAAACTAAAACATACCAAATGGGTAAACTTGTCACCCCCATTTACATTGCGACAGACACAGTTATGGAGTGGATGGAAGTGTGTTCGACTGTCAAGACCCTTCTATAATAGTCGAACCAGTACGGTAAGTGGGCAACATGCCCATATAAGTCGAAGCATTTCAAATGGTTCATCCAGTAGACGACGATGTCCTAGACAGTCATGTCTCTTCCCATTTGAAGTCATGTAGTGGTTGTCTACTTTTTCATTGAAGACGTCCACCTCAACGCTATGAACGTTAGTTGAGACAAT [...]
   +
   MmBD(39+h^dwrVz]OhrFFHxpo3xn\OVBYB?`wH}lwQ`tWqoboRZ*F8>=K(tYf~]zwF~xtO_Fd~pEwqwU~~sZV~~cWonWUY^JUCoQas9~U~M~~a\7wQJ~kIaSIa~yQkNiMYPRZv?yt:C4rcfcq{xWM~DtXpRIv~yp_QYRHzQ`xUrTt3HTwxWE~UJ~~L]UDkB=B?gQIKPfH~vYg<R_W``Rf:}M~~d'u=?-~~pb{U`m{E~~~~yK|_lOpByOVPbl[B^DYJLQ_yI[8xh;p&~qrF~at@[>\OOnbAqkZU[mEf8dItdKu_]ts_~uvPYlTa}Y~vUuwX?}9Ow=S7~~oS~lesSN~~qvtaa~DslSchCYvD~zX;ydo<~_xXjQS~q>YeSujF]>OGFQoL~kh1KmqLqjlaUnFbXAJ(T~sI~~Se~VrYqlB^_GrEw_`/Mndvn>kdz~m`=X-_v>cXB^Yqm?Xgbf~kQI,E&KQj`P6m`QAmTuTkmMws [...]
-  @m150825_055401_42161_c100844482550000001823159012311525_s1_p0/2951/ccs/fwd np:i:5 rq:f:0.99569
-  AAGCAGTGGTATCAAACGCAGAGTACGGGGCATACTGCAAGACTTGTAGGCCCATGAATTACCCGCTTAGGCAATGGGTAGACCTTTCCTTGCCGCGTGGAACAAACCGCCATGAGTGTTTTACGTTTACGGTCGGCGACCGGAGTCACAGCGCGACCAACGGGGCCAGGCAAAGGCCCATAGGCTTTTCCATCGGCACGCGACCGATTCCATCAAGTGTTAGGTGCAATCCCCATTCGGGACGGACACGCGAGAGCGTTAGTCGGCGCGTGCGCGGGACTATTTAGCGAAGGTCGCCGATCGTTTGCCCGTAAAACTAACTGGCAAAAGCCTAAGTGCTGTTTCGGGTGCAATGGTATAACTTCCCACATTTAGCCGAATAGCGCCAACAGCGTTATTATTTGGAACCAAGCAGTGGGCGATGTCAGCGACAATTCCACTTTGGTAGAGGTCGTTCTTTTGTAGAAAACAATCTAACATAACTATGACA [...]
+  @m150825_055401_42161_c100844482550000001823159012311525_s1_p0/2951/ccs/fwd np:i:5 rq:f:0.995229
+  AAGCAGTGGTATCAAACGCAGAGTACGGGGCATACTGCAAGACTTGTAGGCCCATGAATTACCCGCTTAGGCAATGGGTAGACCTTTCCTTGCCGCGTGGAACAAACCGCCATGAGTGTTTTACGTTTACGGTCGGCGACCGGAGTCACAGCGCGACCAACGGGGCCAGGCAAAGGCCCATAGGCTTTTCCATCGGCACGCGACCGATTCCATCAAGTGTTAGGTGCAATCCCCATTCGGGACGGACACGCGAGAGCGTTAGTCGGCGCGTGCGCGGGACTATTTAGCGAAGGTCGCCGATCGTTTGCCCGTAAAACTAACTGGCAAAAGCCTAAGTGCTGTTTCGGGTGCAATGGTATAACTTCCCACATTTAGCCGAATAGCGCCAACAGCGTTATTATTTGGAACCAAGCAGTGGGCGATGTCAGCGACAATTCCACTTTGGTAGAGGTCGTTCTTTTGTAGAAAACAATCTAACATAACTATGACA [...]
   +
-  ^~b^g^e;}KfkG${]^c]Q`RanfI=w~v]QkR^ncWEeTU\K~blQQtD~khncX~]~9C~kaX;NMM~]C|H;k~iK]f>~7rcO~_~bCnNKSkCl0gD:fe1?6<~gk^Qbnc@~~h9\cU~~h_S~n_OpK_f/G>bfcn]R^haFJ]cd-H,=?<~~hN~PB~]A~wS~F~~hlQR~H?~~Z:gPl_T~\O]aFHN/~bhZiLgQl^HxbVc]~QS~nc_Uji3~~~eJ~F5zcc_T~fHfZ5\chchc[FY~g^b2R~^c\Lkc^]EH~{;]mgE~w=K]bE~?~l`cO~^_PFaF~\54xcHj,~ye^lG~^l@~];~~~a>~lK~ckJBL`D~~^J~~kLX@`lT~lQl8l]Ty7~yg[;T~~hcNb35yQcL]cLjB_VK`FIJq:\~PD~|B~2YJID~M[hcmJ~~\Kfncn_hc\JM]E~J~?tg^F~~9xfhbKP~n_bK~]@t~kKjQa.~~~]GqXHU1z]gj%}]nhnbR^h [...]
+  ^~b^g^e;}KfkG${]^c]Q`RanfI=w~v]QkR^ncWEeTU\K~blQQtD~khncX~]~9C~kaX;NMM~]C|H;k~iK]f>~7rcO~_~bCnNKSkCl0gD:fe1?6<~gk^Qbnc@~~h9\cU~~h_S~n_OpK_f/G>bfcn]R^haFJ]cd-H,=?<~~hN~PB~]A~wS~F~~hlQR~H?~~Z:gPl_T~\O]aFHN/~bhZiLgQl^HxbVc]~QS~nc_Uji3~~~eJ~F5zcc_T~fHfZ5\chchc[FY~g^b2R~^c\Lkc^]EH~{;]mgE~w=K]bE~?~l`cO~^_PFaF~\54xcHj,~ye^lG~^l@~];~~~a>~lK~ckJBL`D~~^J~~kLX@`lT~lQl8l]Ty7~yg[;T~~hcNb35yQcL]cLjB_VK`FIJq:\~PD~|B~2YJID~M[hcmJ~~\Kfncn_hc\JM]E~J~?tg^F~~9xfhbKP~n_bK~]@t~kKjQa.~~~]GqXHU1z]gj%}]nhnbR^h [...]
   @m150825_055401_42161_c100844482550000001823159012311525_s1_p0/2951/ccs/rev np:i:5 rq:f:0.994585
   AAGCAGTGGTATCAACGCAGAGTACGGGGCATACTGCAAGACTTGTAGGCCCATGAATTTACCCGCTTAGGCAATGGGTAGACCTTTCCTTGCCGCGTGGAACAAACCGCCATGAGTGTTTTACGTTTACGGTCGGCGACCGGAGTCACAGCGCGACCAACGGGGCCAGGCAAAGGCCCATAGGCTTTTCCATCGGCACGCGACCGATTCCATCAAGTGTTAGGTGCAATCCCCATTCGGGACGGACACGCGAGAGCGTTAGTCGGCGCGTGCGCGGGACTATTTTAGCGAAGGTCGCCGATCGTTTGCCCGTAAAACTAACTGGCAAAAGCCTAAGTGCTGTTTCGGGTGCAATGGTATAACTTCCCACATTTAGCCGAATAGCGCCAACAGCGTTATTATTTGGAACCAAGCAGTGGGCGATGTCAGCGACAATTCCACTTTGGTAGAGGTCGTTCTTTTGTAGAAAACAATCTAACATAACTATGAC [...]
   +
@@ -772,14 +774,14 @@ Test ccs on 100 zmws from the lexogen-SIRV dataset, using --byStrand
   AGCAGTGGTATCAACGCAGAGTACGGGGTGTATTTATCCGCTACGTGGTGGATGAACATGGATGCGAACGACATTTCGAAATATACGCAATGATATCCAACCCTACCGAAACAGCAATAATTGTAGAAGGTAGCATATCATGCCGAGAGTTTACTACGTTGTAGCGAGTTTAGTTGAAATAGTTTGTGATGTGTAAACTAAAACATACCAAATGGTAAAACTTGTCACCCCATTTACATTGCGACAGGACACAGTTATGGAGTGGGATGGAAGTGTGTTCGACTGTCAAGACCCTTCTATAATAGTCGAACCAGTACGGTAAGTGGGCAACATGCCCATATAAGTCGAAGCATTTCAAATGGTTCATCCAGTAGACGACGATGTCCTAGACAGTCATGTCTCTTCCCCCATTTGAAGTCATGTAGTGGTTGTCTACTTTTTCATTGAAGACGTCCACCTCAACGCTATGAACGTTAGTTGAGACAATGTT [...]
   +
   'LAdS:7iJ_eS@`MFMDDNCSQD9nyxeR]c.p[^N:fTVHKUR^GlP>Y^c<DtSYeH{feSU?SrCTcWd,iV at 90rtcbM8+QUSZbUfef^6_S[1xqWd9wSHwrUMSW?sdAWLvUeeTIr at med?=`A\PWfdA.[UfUfT4\\dU7bVABaS_XUR;dT<kYdUNvT at Yi\MT3ttUUTaXUdTOIxvWd1vvpUMcc-KAunJ2=6)Y_[VFiA`Cb%uvaG<oucUYBWSU at cUM-jeUMUeS$pbbHzfO;,plfeHzTtLDJGGBZRQIVbTN at RuVc?|^@pWbfeTXefTOVS/sDXeU_AAEvSHoSd/XlVGuS_dUBz{`dacAv at bWUUwTAc?ZoVNvvQGnEsVdM.H`TOc at dWT`RUdO at cHzefUcAdKeVaXS7?KUDj&rvuMK-VSJDIOeWdH%6]TN4q59=_VHGR1uwwcULEuTQvVcWUaFtYHy_<FtUU<C7VTSpU at TuMSWwU`@cWTweT3r [...]
-  @m150825_055401_42161_c100844482550000001823159012311525_s1_p0/3046/ccs/fwd np:i:11 rq:f:0.997092
+  @m150825_055401_42161_c100844482550000001823159012311525_s1_p0/3046/ccs/fwd np:i:11 rq:f:0.996917
   AAGCAGTGGTAATCAACGCAGAGTACGGGGTACAAGAGTTGGTTACTCTCAGTCCCATTCCCAACACATCACTGAGAAGTATACGAGCCTAGTGGTCATTAGAAGGTCAACATGGAGTAGGTGTTTAGGTGTGTCGGAGGGCAGAAACCAACGAAAGAAAGGAAACGATCAACACTTATATAGTGTCCTGTCGGGCCCAAATCCTAAGAGACCTTAGGTTTACCACATTAGTACTAAACAGCCTGTTGTATACCGTGAGCCCCCACTTCGATCTGTAAATGGTAATGCCCTTGTAAAACCTCATCTCCAAAAACAGTATACGCAGGTACAGCTGATGTGATCCTCTCTACTAGTCTTCTCTGAGGAACCATGAGATGGATAGTGGGGGACCTGAGTCATACTAGGGTAACTTCTTATATGGTGACATCACTCCTACCGTAGAGGGGGGACGGTAGTCTGTGGGAAATCTACCCTAGTGAAGAAAGGTAAG [...]
   +
-  ~~Sbs]^R{C,cl]Jh/QHvexUoeW=~~~fFEG=BcZ,iAk;WjUgKiD`J97p~~W~@vaNmRi`otczarF{EOrLYWmn)VuM=wMgN]KxBX{]~=TEd8~cPSvh~FCgef^`/^X<M6}~T~`dsdoe<~~7~t+uR?hhO~W~dcD~~gN~m?~B~~ecwlfh~E~FPzxXfs~gqhpHu^TO_1~~@akJ~{n?}nQk`Rfg>}PwfOp8d~gFys=QZ~zRmvUk7bWd~W;`KdMhA^mqt?l?p^~P5gtwmpe_~ad{`MPgQW~~Z/~ps~t-;~{;_eGD|~s8keY_a\XJxS~~~~R~c_9H7ETLb8~^GYsP^JS~pd[dx_N~bSm>r~hr~dn`BlPs_gd~R~F~P~LRK\S~tR~~pzTa0y}~~~@~pg~Une~`oTc~?~|mZfNW~dN~~kem5~qT`gxi\_]TS~s~M}SX]g~5~~~~~eeS~ljeo5bSyE~eApYa\d~>~iix[b8b~hW~rI~gA~_ [...]
-  @m150825_055401_42161_c100844482550000001823159012311525_s1_p0/3046/ccs/rev np:i:11 rq:f:0.994641
-  AAGCAGTGGTATCAACGCAGAGTACGGGGTACAAGAGTTGGTTACTCTCAGTCCCATTCCCAACACATCACTGAGAAGTATAGAGCCTAGTGGTCATTTAGAAAGGTCACATGGAGTAGGTGTTTAGGTGTGTCGGAGGGCAGAAACCAACGAAAGAAAGGAAACGATCAACACTTATATAGTGTCCTGTCGGGCCCAAATCCTAAGAGACCTTAGGTTTACCACATTAGTACTAAACAGCCTGTTGTATACCGTGAGCCCCCACTTCGATCTGTAAATGGTAATCCCTTGTAAAACCTCATCTCCAAAAACAGTATACGCAGGTACAGCTGATGTGATCCTCTCTACTAGTCTTCTCTGAGGAACCATGAGATGGATAGTGGGGGACCTGAGTCATACTAGGGTAACTTCTTATATGGTGACATCACTCCTACCGTAGAGGGGGGACGTAGTCTGTGGGAAAATCTACCCTAGTGAAGAAAGGTAAGAG [...]
+  ~~[i{edU{[&Sj_Mf5WMlYxYbf\C~~~nOJ<EHeV1p6`4Ji[lQnEVQB0{~~_~:sYPmXgfp{j~arF{EOrLYWmn)VuM=wMgN]KxBX{]~=TEd8~cPSvh~FCgef^`/^X<M6}~T~`dsdoe<~~7~t+uR?hhO~W~dcD~~gN~m?~B~~ecwlfh~E~FPzxXfs~gqhpHu^TO_1~~@akJ~{n?}nQk`Rfg>}PwfOp8d~gFys=QZ~zRmvUk7bWd~W;`KdMhA^mqt?l?p^~P5gtwmpe_~ad{`MPgQW~~Z/~ps~t-;~{;_eGD|~s8keY_a\XJxS~~~~R~c_9H7ETLb8~^GYsP^JS~pd[dx_N~bSm>r~hr~dn`BlPs_gd~R~F~P~LRK\S~tR~~pzTa0y}~~~@~pg~Une~`oTc~?~|mZfNW~dN~~kem5~qT`gxi\_]TS~s~M}SX]g~5~~~~~eeS~ljeo>\OrFv^7uViUm~7~bquSZ0`ziS~sQ~s<~c [...]
+  @m150825_055401_42161_c100844482550000001823159012311525_s1_p0/3046/ccs/rev np:i:11 rq:f:0.995009
+  AAGCAGTGGTATCAACGCAGAGTACGGGGTACAAGAGTTGGTTACTCTCAGTCCCATTCCCAACACATCACTGAGAAGTATAGAGCCTAGTGGTCATTAGAAAGGTCACATGGAGTAGGTGTTTAGGTGTGTCGAGAGGCAGAAACCAACGAAAGAAAGGAAACGATCAACACTTATATAGTGTCCTGTCGGGCCCAAATCCTAAGAGACCTTAGGTTTACCACATTAGTACTAAACAGCCTGTTGTATACCGTGAGCCCCCACTTCGATCTGTAAATGGTAATCCCTTGTAAAACCTCATCTCCAAAAACAGTATACGCAGGTACAGCTGATGTGATCCTCTCTACTAGTCTTCTCTGAGGAACCATGAGATGGATAGTGGGGGACCTGAGTCATACTAGGGTAACTTCTTATATGGTGACATCACTCCTACCGTAGAGGGGGGACGTAGTCTGTGGGAAAATCTACCCTAGTGAAGAAAGGTAAGAGA [...]
   +
-  F~Ulufb9~|`f]Vz?\Mi\HNikP.`^q~u>_~lvi[~Z~o~^EpFse.=S6~r_lvD~e<~bT]Ljjf[~kqGFYb8dWS]^Q;qr=KpW~~FN+\URB(];8IRL(Bel(FM:[[FsoXP|m?Rz_SwYs`=&M*'lhm`=~gL~T}WFDwva:~\Ex;sugVZgJN~hlKPIkukxbAHAcR|Wf~]AbL)ghIq~~@~~>~TUQiD~mHgK~WcdgD~_EbY]QApgjYI~~nVWJeZaBuU7^jfL~h~Y\M/lf\boNVza`hxn~h~6qukMX`6~~I~~_\]p<~~bIxYUdzi~Xt9~~qvjjhooeuOgVe=kbO]Kgh`jmoSVJgzU~aSWf^S_fAEOgarScMpW\R~b~Y~s\MiQ^wU~QmL]w8;a~~tS~^CTDOfLxj[siH~~~^~Vm~fg~]w?L1~XW=lgni\ehC~kq>SA_iKp$sus|ijJ?CheYe`a=8Od(mqTM[oVA}~vj\_]D~\GGNT~}Itad` [...]
+  >~Phnbi0}wY_bQ~JfWm_MM~hV,igv~p8Z~fvcf~U~j~jNyP}b?<M;~oYg}J~sJ~]]YTse`V~fmTCP`Jb`O\[MGlp;DmT~{S<%QH2/U;0GHG'E^b$LF5gSAgy_K~o9LoTNnViZ)9WK$tcga>~hH~\vRAItw]<~\Dv8z}bc__BH~dfGPKdldojK?;cNtUd|fChS*iqNz~~C~yA~\X]lD~jY`J~`ce`K~dLe^RKLkafeJ~~hMRDiS\IkO/\`_D~b~[[M)nj``oGWyYZ_zf~d~/uwoLe\>~xE~~bUXy@~~fElNO^ve|Vw8~~glbhavnio[eb_BufYbVbhVcmgOOG^pQ~ZMc`f\ZrG?Eb^oZXReQUHy^sR}nQFbLVnPrSeDWo60U~~jK~gLLMY`CpebhaE~~vY~bp{^izTw5P+{`P4g^ucT^jE~ph?R<e`Gp(uwx~gbR9Mabc_l\@6Zq'x|LGVjd;~~lpUhW?vUBNWQxq at n[`Y@ [...]
   @m150825_055401_42161_c100844482550000001823159012311525_s1_p0/3116/ccs/fwd np:i:7 rq:f:0.995734
   AAGCAGTGGTATCAACGCAGAGTACGGGGGGCGACAATTGTGGACCGTATGGACTCCATTATGCTGGGACTCCTCGGGTCAACCGCTCTAAAGCGAAGTTGTTGGACAAACAGTTATGCGTAACTGTAAAGCAAGGTGCCCAAAGTAGACTGAGCGACAGTCGAAACCAGCCCCAATGAACAAGACGCCATTGCAAAACGTCTATACGCTACGGTCAAAGACGCTTCCACACCACATGCTCTCATGTAGCCTACCTTACGAGAAATCGCACAAGTCGGTCGCCCAGCGGTGGCATATGTCTTGCCTAACGTTTCTAGACCGATCAGCCTCACGAGTAGCCTGCTTGTGGTGTTTATAGTTTACGCTAGTCCAATCTGTATCGTGCCGCTTGGTATGGCTATTGTCGGCCTGGATGCAAGCACTAACGTGGTCATCAGACTGGTCTGCGCTATAATCTACGCAATAGAGGCACCAGCGGTCGTTGAAAGCC [...]
   +
diff --git a/tests/cram/force.t b/tests/cram/force.t
new file mode 100644
index 0000000..eac6528
--- /dev/null
+++ b/tests/cram/force.t
@@ -0,0 +1,14 @@
+
+Test if we mistakenly overwrite
+
+  $ touch exists.fq
+  $ $__PBTEST_CCS_EXE $TESTDIR/../data/0passes.bam exists.fq --logFile log.txt
+  [1]
+  $ if [ -s log.txt ] ; then echo "dirty"; else echo " clean"; fi
+  dirty
+
+  $ $__PBTEST_CCS_EXE $TESTDIR/../data/0passes.bam --force --minPasses=0 --minPredictedAccuracy=0.85 exists.fq
+  $ if [ -s exists.fq ] ; then echo "dirty"; else echo " clean"; fi
+  dirty
+
+  $ rm exists.fq
\ No newline at end of file
diff --git a/tests/cram/internal/big.t b/tests/cram/internal/big.t
new file mode 100644
index 0000000..400e7da
--- /dev/null
+++ b/tests/cram/internal/big.t
@@ -0,0 +1,20 @@
+This is a larger scale test run on a nightly basis.  It runs a good
+chunk of a movie through CCS and pushes the results through ccscheck.
+For now we just watch that the results don't change; in the future we
+might like to replace that with some bulk checks on alignment identity,
+for example.
+
+Run CCS:
+
+  $ DATADIR=/pbi/dept/consensus/testdata/unanimity-nightly
+
+  $ mkdir results
+  $ ${__PBTEST_CCS_EXE} --zmws 1-187412 $DATADIR/ds.subreadset.xml out.bam
+
+Run ccscheck, check output:
+
+  $ /pbi/dept/consensus/ccscheck/bin/ccscheck out.bam stats /pbi/dept/consensus/references/lambdaNEB.fasta
+  $ sort -t, -n -k1,1 -k2,2 stats/zmws.csv > zmws.sorted.csv
+  $ diff -NrU1 zmws.sorted.csv /pbi/dept/consensus/testdata/unanimity-nightly/zmws.sorted.to187412.csv
+
+TODO: copy back to the "lastrun" dir
diff --git a/tests/cram/logfile.t b/tests/cram/logfile.t
new file mode 100644
index 0000000..7aac8a8
--- /dev/null
+++ b/tests/cram/logfile.t
@@ -0,0 +1,14 @@
+
+Test if correctly stream to a log file
+
+  $ $__PBTEST_CCS_EXE 2> cerr.log
+  [1]
+  $ if [ -s cerr.log ] ; then echo "dirty"; else echo "clean"; fi
+  dirty
+
+  $ $__PBTEST_CCS_EXE --logFile out.log 2> cerr.log
+  [1]
+  $ if [ -s cerr.log ] ; then echo "dirty"; else echo "clean"; fi
+  clean
+  $ if [ -s out.log ] ; then echo "dirty"; else echo "clean"; fi
+  dirty
diff --git a/tests/cram/tiny.t b/tests/cram/tiny.t
index 7464a84..2b683e7 100644
--- a/tests/cram/tiny.t
+++ b/tests/cram/tiny.t
@@ -14,10 +14,10 @@ Test a tiny collection of a few ZMWs, write to FASTQ for inspection
   AAAACTGTACGATAAACGGTACGCTGAGGGCGGAAAAAATCGTCGGGGACATTGTAAAGGCGGCGAGCGCGGCTTTTCCGCGCCAGCGTGAAAGCAGTGTGGACTGGCCGTCAGGTACCCGTACTGTCACCGTGACCGATGACCATCCTTTTGATCGCCAGATAGTGGTGCTTCCGCTGACGTTTCGCGGAAGTAAGCGTACTGTCAGCGGCAGGACAACGTATTCGATGTGTTATCTGAAAGTACTGATGAACGGTGCGGTGATTTATGATGGCGCGGCGAACGAGGCGGTACAGGTGTTCTCCCGTATTGTTGACATGCCAGCGGGTCGGGGAAACGTGATCCTGACGTTCACGCTTACGTCCACACGGCATTCGGCAGATATTCCGCCGTATACGTTTGCCAGCGATGTGCAGGTTATGGTGATTAAGAAACAGGCGCTGGGCATCAGCGTGGTCTGAGTGTGTTACAGAGGTTCGTCCGGGAACGG [...]
   +
   J~~~~~~~~~~~~P~~~~~~~~~~~~~~~~~~~R~~~~~~~~~~P~~~~~~~~~~s~~~~~~~~~~~~~~~~~6~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~D~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~u~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~S~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ [...]
-  @m150404_101626_42267_c100807920800000001823174110291514_s1_p0/111500/ccs np:i:26 rq:f:0.999802
+  @m150404_101626_42267_c100807920800000001823174110291514_s1_p0/111500/ccs np:i:25 rq:f:0.999051
   TATCCAGACTAAATTCACTATCGCCACTTTTATTGGCGATGAAAAGATGTTTCGTGAAGCCGTCGACGCTTATAAAAAATGGATATTAATACTGAAACTGAGATCAAGCAAAAGCATTCACTAACCCCCTTTCCTGTTTTCCTAATCAGCCCGGCATTTCGCGGGCGATATTTTCACAGCTATTTCAGGAGTTCAGCCATGAACGCTTATTACATTCAGGATCGTCTTGAGGCTCAGAGCTGGGCGCGTCACTACCAGCAGCTCGCCCGTGAAGAGAAAGAGGCAGAACTGGCAGACGACATGGAAAAAGGCCTGCCCAGCACCTGTTTGAATCGCTATGCATCGATCATTTGCAACGCCACGGGGCCAGCAAAAAATCCATTACCCGTGCGTTTGATGACGATGTTGAGTTTCAGGAGCGCATGGCAGAACACATCCGGTACATGGTTGAAACCATTGCTCACCACCAGGTTGATATTGATTCAGAGGT [...]
   +
-  ~of~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~V~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~Y~~~~~~~~~~~~~~~w~~~~~~~~]~~~~~~v~~~~~q~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~p~~~~~~~~~~~~~~~~~~~~~~~C~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~9~~~~~~~~~~<~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~_~~~~~~~~-~~~~~~~~~~~~~~~~~~~~y~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~s~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ [...]
+  ~~s~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~u~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~N~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~T~~~~~~~~~~~~~~~r~~~~~~~~Y~~~~~~~~~~~~f~~~~~~~{~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~m~~~~~~~~~~~~~~~~~~~~~~~8~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~@~~~~~~~~~~F~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~`~~~~~~~~'~~~~~~~~~~~~~~~~~~~~o~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~l~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ [...]
   @m150404_101626_42267_c100807920800000001823174110291514_s1_p0/111715/ccs np:i:24 rq:f:0.999951
   GCGTCGGATCGCCAACAACATGCCGGAACAGTACGACGAAAAGCCGCAGGTACAGCAGGTAGCGCAGATCATCAACGGTGTGTTCAGCCAGTTACTGGCAACTTTCCCGGCGAGCCTGGCTAACCGTGACCAGAACGAAGTGAACGAAATCCGTCGCCAGTGGGTTCTGGCTTTTCGGGAAAACGGGATCACCACGATGGAACAGGTTAACGCAGGAATGCGCGTAGCCCGTCGGCAGAATCGACCATTTCTGCCATCACCCGGGCAGTTTGTTGCATGGTGCCGGGAAGAAGCATCCGTTACCGCCGGACTGCCAAACGTCAGCGAGCTGGTTGATATGGTTTACGAGTATTGCCGGAAGCGAGGCCTGTATCCGGATGCGGAGTCTTATCCGTGGAAATCAAACGCGCACTACTGGCTGGTTACCAACCTGTATCAGAACATGCGGGCCAATGCGCTTACTGATGCGGAATTACGCCGTAAGGCCGCA [...]
   +
diff --git a/tests/cram/tiny_noPolish.t b/tests/cram/tiny_noPolish.t
new file mode 100644
index 0000000..6619988
--- /dev/null
+++ b/tests/cram/tiny_noPolish.t
@@ -0,0 +1,33 @@
+
+Test ccs on a tiny collection of ZMWs, using --noPolish
+
+  $ $__PBTEST_CCS_EXE --noPolish $TESTDIR/../data/tiny.bam tiny.fq
+
+  $ grep -c ^+$ tiny.fq
+  6
+
+  $ cat tiny.fq
+  @m150404_101626_42267_c100807920800000001823174110291514_s1_p0/109097/ccs np:i:22 rq:f:0
+  CATGTACCGGATGTGTTCTGCCATGCGCTCCTGAAACTCAACATCGTCATCAAACGCACGGGTAATGGATTTTTTGCTGGCCCCGTGGCGTTGCAAATGATCGATGCATAGCGATTCAAACAGGTGCTGGGGCAGGCCTTTTTCCATGTCGTCTGCCAGTTCTGCCTCTTTCTCTTCACGGGCGAGCTGCTGGTAGTGACGCGCCCAGCTCTGAGCCTCAAGACGATCCTGAATGTAATAAGCGTTCATGGCTGAACTCCTGAAATAGCTGTGAAAATATCGCCCGCGAAATGCCGGCTGATTAGGAAAACAGGAAAGGGGTTAGTGAATGCTTTTGCTTGATCTCAGTTTCAGTATTAATATCCATTTTTTATAAGCGTCGACGGCTTCACGAAACATCTTTTCATCGCCAATAAAAGTGGCGATAGTGAATTTAGTCTGGATAGCCATAAGTGTTTGATCCATTCTTTGGGACTCCTGGCTGATTAAG [...]
+  +
+  5555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555 [...]
+  @m150404_101626_42267_c100807920800000001823174110291514_s1_p0/109700/ccs np:i:18 rq:f:0
+  GCGTGCTTGTGGTGGGTAACCGTCGTATTCCCGGCGCGTTTATTCAGCAACTGAAAAATGGCCGGTGGCATGTCATGCAGCGTGTGGCTGGGAAAAACCGTTACCCCATTGATGTGGTGAAAATCCCGATGGCGGTGCCGCTGACCACGGCGTTTAAACAAAATATTGAGCGGATACGGCGTGAACGTCTTCCGAAAGAGCTGGGCTATGCGCTGCAGCATCAACTGAGGATGGTAATAAAGCGATGAAACATACTGAACTCCGTGCAGCCGTACTGGATGCACTGGAGAAGCATGACACCGGGGCGACGTTTTTTGATGGTCGCCCCGCTGTTTTTGATGAGGCGGATTTTCCGGCAGTTGCCGTTTATCTCACCGGCGCTGAATACACGGGCGAAGAGCTGGACAGCGATACCTGGCAGGCGGAGCTGCATATCGAAGTTTTCCTGCCTGCTCAGGTGCCGGATTCAGAGCTGGATGCGTGGATGGAG [...]
+  +
+  5555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555 [...]
+  @m150404_101626_42267_c100807920800000001823174110291514_s1_p0/110513/ccs np:i:25 rq:f:0
+  AAAACTGTACGATAAACGGTACGCTGAGGGCGGAAAAAATCGTCGGGACATTGTAAAGGCGGCGAGCGCGGCTTTCCGCGCCAGCGTGAAAGCAGTGTGGACTGGCCGTCAGGTACCCGTACTGTCACCGTGACCGATGACCATCCTTTGATCGCCAGATAGTGGTGCTTCCGCTGACGTTTCGCGGAAGTAAGCGTACTGTCAGCGGCAGGACAACGTATTCGATGTGTTATCTGAAAGTACTGATGAACGGTGCGGTGATTTATGATGGCGCGGCGAACGAGGCGGTACAGGTGTTCTCCGTATTGTTGACATGCCAGCGGGTCGGGGAAACGTGATCCTGACGTTCACGCTTACGTCCACACGGCATTCGGCAGATATTCCGCCGTATACGTTTGCCAGCGATGTGCAGGTTATGGTGATTAAGAAACAGGCGCTGGGCATCAGCGTGGTCTGAGTGTGTTACAGAGGTTCGTCCGGGAACGGGCGT [...]
+  +
+  5555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555 [...]
+  @m150404_101626_42267_c100807920800000001823174110291514_s1_p0/111500/ccs np:i:28 rq:f:0
+  TATCCAGACTAATTCACTATCGCCACTTTTATTGGCGATGAAAAGATGTTTCGTGAAGCGTCGACGCTTATAAAAAATGGATATTAATACTGAAACTGAGATCAAGCAAAAGCATTCACTAACCCCTTTCCTGTTTTCCTAATGCACCGGCATTTCGCGGGCGATATTTTCACAGCTATTTCAGGAGTTCAGCATGAACGCTTATTACATTCAGGATCGTCTTGAGGCTCAGAGCTGGCGCGTCACTACCAGCAGCTCGCCGTGAAGAGAAAGAGGCAGAACTGGCAGACGACATGGAAAAGGCCTGCCCAGCACCTGTTTGAATCGCTATGCATCGATCATTTGCAACGCCAGGGGCAGCAAAAATCCATTACCCGTGCGTTTGATGACGATGTTGAGTTTCAGGAGCGCATGGCAGAACACATCGGTACATGGTTGAAACCATTGCTCACCACCAGGTTGATATGATTCAGAGGTATAAAACGAATGA [...]
+  +
+  5555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555 [...]
+  @m150404_101626_42267_c100807920800000001823174110291514_s1_p0/111715/ccs np:i:24 rq:f:0
+  GCGTCGGATCGCCAACAACATGCCGGAACAGTACGACGAAAAGCCGCAGGTACAGCAGGTAGCGCAGATCATCAACGGTGTGTTCAGCCAGTTACTGGCAACTTTCCGGCGAGCCTGGCTAACCGTGACCAGAACGAAGTGAACGAAATCCGTCGCCAGTGGGTTCTGGCTTTTCGGGAAAACGGGATCACCACGATGGAAGGTTAACGCAGGAATGCGCGTAGCCCGTCGGCAGAATCGACCATTTCTGCCATCACCCGGGCAGTTTGTTGCATGGTGCCGGGAAGAAGCATCCGTTACCGCCGGACTGCCAAACGTCAGCGAGCTGGTTGATATGGTTTACGAGTATTGCCGGAAGCGAGGCCTGTATCCGGATGCGGAGTCTTATCGTGGGAAACAAACGCGCACTACTGGCTGGTTACCAACCTGTATCAGAACATCGGGCCAATGCGCTTACTGATGCGGAATTACGCCGTAAGGCCGCAGATGA [...]
+  +
+  5555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555 [...]
+  @m150404_101626_42267_c100807920800000001823174110291514_s1_p0/112044/ccs np:i:30 rq:f:0
+  ATATCATTTTACGTTTCTCGTTCAGCTTTTTTATCTAAGTTGGCATTATAAAAAAGCATTGCTTATCAATTTGTTGCAACGAACAGGTCACTATCAGTCAAAATAAAATCATTATTTGATTTCAATTTTGTCCCACTCCCTGCCTCTGTCATCACGATACTGTGATGCCATGGTGTCCGACTTATGCCCGAGAAGATGTTGAGCAAACTTATCGCTTATCTGCTTCTCATAGAGTCTTGCAGACAAACTGCGCAACTCGTGAAAGGTAGGCGGATCCCTTCGAAGGAAAGACCTGATGCTTTTCGTGCGCGCATAAAATACCTTGATACTGTGCCGGATGAAAGCGGTTCGCGACGAGTAGATGCAATTATGGTTTCTCCGCCAAGAATCTCTTTGCATTTATCAAGTGTTTCCTTCATTGATATTCCGAGAGCATCAATATGCAATGCTGTTGGGATGGCAATTTTTACGCCTGTTTTGCTTTGCTCGA [...]
+  +
+  5555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555 [...]
diff --git a/tests/data/params/SP2C2.json b/tests/data/params/SP2C2.json
new file mode 100644
index 0000000..70d1d5d
--- /dev/null
+++ b/tests/data/params/SP2C2.json
@@ -0,0 +1,1026 @@
+{
+  "ConsensusModelVersion": "3.0.0",
+  "ChemistryName": "S/P2-C2",
+  "ModelForm": "PwSnr",
+  "SnrRanges": [
+    [
+      4.06761408,
+      7.87333488
+    ],
+    [
+      7.56100464,
+      14.9044018
+    ],
+    [
+      4.05258036,
+      6.67833996
+    ],
+    [
+      6.47991323,
+      10.7843523
+    ]
+  ],
+  "EmissionParameters": [
+    [
+      [
+        0.00735664387,
+        0.00190428659,
+        0.000128987185,
+        3.19609285e-05,
+        0.0579789127,
+        0.00159365177,
+        0.000377851288,
+        2.64641792e-05,
+        0.925861388,
+        0.0039544046,
+        0.000740333577,
+        4.51157354e-05
+      ],
+      [
+        0.00268702382,
+        0.0103554239,
+        5.5569919e-05,
+        0.00010710572,
+        0.0119429479,
+        0.0349107323,
+        0.000173873688,
+        3.71404194e-05,
+        0.0132184981,
+        0.925935393,
+        0.000163937702,
+        0.000412353133
+      ],
+      [
+        0.000303779953,
+        5.76150405e-05,
+        0.00682147837,
+        0.00396954594,
+        0.000590520182,
+        1.49898804e-05,
+        0.0623840757,
+        0.00479826006,
+        0.000162992201,
+        0.000111189159,
+        0.896219743,
+        0.0245658107
+      ],
+      [
+        0.000142620524,
+        3.85177333e-05,
+        0.00440064256,
+        0.018046601,
+        0.000210517258,
+        2.23325708e-05,
+        0.0272865144,
+        0.0538911959,
+        0.000157354862,
+        0.000143746285,
+        0.0491787167,
+        0.84648124
+      ],
+      [
+        0.00733096773,
+        0.00166007937,
+        0.000121497496,
+        0.000116125734,
+        0.0573233988,
+        0.00126886069,
+        0.00071151983,
+        7.74436926e-05,
+        0.927257837,
+        0.0023603384,
+        0.00153974443,
+        0.000232186399
+      ],
+      [
+        0.00219335118,
+        0.0112686045,
+        4.01328525e-05,
+        5.02885136e-05,
+        0.0117893856,
+        0.0371141169,
+        1.68691479e-05,
+        1.56068136e-05,
+        0.0116461848,
+        0.925851525,
+        1.25205575e-05,
+        1.41414695e-06
+      ],
+      [
+        0.000117348076,
+        1.75083299e-05,
+        0.00297146156,
+        0.0016269759,
+        0.000296647296,
+        4.87166628e-05,
+        0.0284358458,
+        0.002344226,
+        0.000568544223,
+        0.000237602686,
+        0.942157699,
+        0.021177424
+      ],
+      [
+        9.37972006e-05,
+        6.24310526e-05,
+        0.00526664739,
+        0.0207263945,
+        0.00012215642,
+        2.11772913e-05,
+        0.0320582675,
+        0.06180119,
+        0.000243487269,
+        0.000476247908,
+        0.0530240115,
+        0.826104192
+      ],
+      [
+        0.00314264389,
+        0.00082820948,
+        9.08246005e-05,
+        9.38915756e-05,
+        0.028554939,
+        0.000783143672,
+        0.000364350553,
+        2.37054476e-05,
+        0.961214998,
+        0.00421586002,
+        0.000391376658,
+        0.000296057041
+      ],
+      [
+        0.00119090385,
+        0.00593803619,
+        2.03588382e-05,
+        4.41352391e-05,
+        0.00628544188,
+        0.0204138621,
+        0.000138312951,
+        6.76020532e-05,
+        0.00866986949,
+        0.956464996,
+        0.000533431456,
+        0.000233049758
+      ],
+      [
+        6.43734294e-05,
+        1.22650033e-05,
+        0.00210011572,
+        0.00131543919,
+        9.48512735e-05,
+        9.02245873e-06,
+        0.0243938729,
+        0.00215317529,
+        0.00018372826,
+        3.35949921e-05,
+        0.950122398,
+        0.0195171634
+      ],
+      [
+        3.66710321e-05,
+        4.51849068e-05,
+        0.0024483006,
+        0.010397222,
+        8.29270369e-05,
+        1.71244431e-05,
+        0.0166213186,
+        0.0346020058,
+        8.05756611e-05,
+        0.000443816688,
+        0.0317772895,
+        0.903447564
+      ],
+      [
+        0.00584782932,
+        0.00152030367,
+        8.92185665e-05,
+        8.75578495e-05,
+        0.0450024718,
+        0.00128621735,
+        0.000488191126,
+        3.73830825e-05,
+        0.940618603,
+        0.00388969117,
+        0.00110426833,
+        2.82644734e-05
+      ],
+      [
+        0.00124169992,
+        0.00586665604,
+        3.58345575e-05,
+        7.76586763e-05,
+        0.00564348936,
+        0.0178975167,
+        0.000131182094,
+        2.75294579e-05,
+        0.00733345492,
+        0.961559728,
+        0.000111068097,
+        7.41824771e-05
+      ],
+      [
+        5.36955022e-05,
+        3.60866503e-05,
+        0.00270197625,
+        0.00158018444,
+        8.86444887e-05,
+        7.11501847e-06,
+        0.0271717889,
+        0.00206535023,
+        0.000463746178,
+        0.000180875439,
+        0.946297025,
+        0.0193535123
+      ],
+      [
+        4.54423247e-05,
+        1.30264171e-05,
+        0.00201775615,
+        0.00868651464,
+        2.93835524e-05,
+        8.6504974e-06,
+        0.0146074997,
+        0.0295302164,
+        1.74359077e-05,
+        6.74859902e-06,
+        0.0306931623,
+        0.914344164
+      ]
+    ],
+    [
+      [
+        0.13965274,
+        0.000214059166,
+        0.000214059166,
+        0.000214059166,
+        0.258968176,
+        0.000214059166,
+        0.000214059166,
+        0.000214059166,
+        0.599666611,
+        0.000214059166,
+        0.000214059166,
+        0
+      ],
+      [
+        0.000190616771,
+        0.0678223351,
+        0.000190616771,
+        0.000190616771,
+        0.000190616771,
+        0.100087597,
+        0.000190616771,
+        0.000190616771,
+        0.000190616771,
+        0.830565134,
+        0.000190616771,
+        0
+      ],
+      [
+        0.000101396092,
+        0.000101396092,
+        0.0616730324,
+        0.000101396092,
+        0.000101396092,
+        0.000101396092,
+        0.143805821,
+        0.000101396092,
+        0.000101396092,
+        0.000101396092,
+        0.793709977,
+        0
+      ],
+      [
+        0.000303994885,
+        0.000303994885,
+        0.000303994885,
+        0.1284746,
+        0.000303994885,
+        0.000303994885,
+        0.000303994885,
+        0.141454447,
+        0.000303994885,
+        0.000303994885,
+        0.000303994885,
+        0.727334999
+      ],
+      [
+        0.0433312739,
+        3.22994963e-05,
+        3.22994963e-05,
+        3.22994963e-05,
+        0.117471222,
+        3.22994963e-05,
+        3.22994963e-05,
+        3.22994963e-05,
+        0.838939108,
+        3.22994963e-05,
+        3.22994963e-05,
+        0
+      ],
+      [
+        4.12209605e-05,
+        0.0329945236,
+        4.12209605e-05,
+        4.12209605e-05,
+        4.12209605e-05,
+        0.0452292927,
+        4.12209605e-05,
+        4.12209605e-05,
+        4.12209605e-05,
+        0.921446416,
+        4.12209605e-05,
+        0
+      ],
+      [
+        5.6318833e-05,
+        5.6318833e-05,
+        0.0532155899,
+        5.6318833e-05,
+        5.6318833e-05,
+        5.6318833e-05,
+        0.12387295,
+        5.6318833e-05,
+        5.6318833e-05,
+        5.6318833e-05,
+        0.822460909,
+        0
+      ],
+      [
+        0.000171851328,
+        0.000171851328,
+        0.000171851328,
+        0.0769974228,
+        0.000171851328,
+        0.000171851328,
+        0.000171851328,
+        0.115058917,
+        0.000171851328,
+        0.000171851328,
+        0.000171851328,
+        0.806396998
+      ],
+      [
+        0.0289415541,
+        3.57312452e-05,
+        3.57312452e-05,
+        3.57312452e-05,
+        0.0863096576,
+        3.57312452e-05,
+        3.57312452e-05,
+        3.57312452e-05,
+        0.884462938,
+        3.57312452e-05,
+        3.57312452e-05,
+        0
+      ],
+      [
+        7.76665226e-05,
+        0.0487889535,
+        7.76665226e-05,
+        7.76665226e-05,
+        7.76665226e-05,
+        0.0563094047,
+        7.76665226e-05,
+        7.76665226e-05,
+        7.76665226e-05,
+        0.89428031,
+        7.76665226e-05,
+        0
+      ],
+      [
+        0.000224675996,
+        0.000224675996,
+        0.11442169,
+        0.000224675996,
+        0.000224675996,
+        0.000224675996,
+        0.177555734,
+        0.000224675996,
+        0.000224675996,
+        0.000224675996,
+        0.706225168,
+        0
+      ],
+      [
+        0.000147262818,
+        0.000147262818,
+        0.000147262818,
+        0.0548667631,
+        0.000147262818,
+        0.000147262818,
+        0.000147262818,
+        0.0766653324,
+        0.000147262818,
+        0.000147262818,
+        0.000147262818,
+        0.867142539
+      ],
+      [
+        0.0251062443,
+        3.11750569e-05,
+        3.11750569e-05,
+        3.11750569e-05,
+        0.0860636051,
+        3.11750569e-05,
+        3.11750569e-05,
+        3.11750569e-05,
+        0.88858075,
+        3.11750569e-05,
+        3.11750569e-05,
+        0
+      ],
+      [
+        5.64847834e-05,
+        0.0293039817,
+        5.64847834e-05,
+        5.64847834e-05,
+        5.64847834e-05,
+        0.0459491268,
+        5.64847834e-05,
+        5.64847834e-05,
+        5.64847834e-05,
+        0.924295013,
+        5.64847834e-05,
+        0
+      ],
+      [
+        5.20954226e-05,
+        5.20954226e-05,
+        0.0339074593,
+        5.20954226e-05,
+        5.20954226e-05,
+        5.20954226e-05,
+        0.103213362,
+        5.20954226e-05,
+        5.20954226e-05,
+        5.20954226e-05,
+        0.862462415,
+        0
+      ],
+      [
+        2.41719133e-05,
+        2.41719133e-05,
+        2.41719133e-05,
+        0.0373123704,
+        2.41719133e-05,
+        2.41719133e-05,
+        2.41719133e-05,
+        0.0666923249,
+        2.41719133e-05,
+        2.41719133e-05,
+        2.41719133e-05,
+        0.895777757
+      ]
+    ],
+    [
+      [
+        0.000146474028,
+        0.0297946523,
+        0.0803446626,
+        0.0323153575,
+        0.000146474028,
+        0.0181368779,
+        0.159977298,
+        0.0152271765,
+        0.000146474028,
+        0.244223284,
+        0.299539822,
+        0.120001447
+      ],
+      [
+        0.0754353435,
+        0.000106711295,
+        0.108178173,
+        0.05166508,
+        0.0659944961,
+        0.000106711295,
+        0.235061774,
+        0.0369961862,
+        0.0285965147,
+        0.000106711295,
+        0.241613261,
+        0.156139038
+      ],
+      [
+        0.150889801,
+        0.0424857824,
+        0.000318026612,
+        0.147445837,
+        0.0393052032,
+        0.0282810617,
+        0.000318026612,
+        0.0807560198,
+        0.00326633483,
+        0.214809655,
+        0.000318026612,
+        0.291806225
+      ],
+      [
+        0.140090388,
+        0.0466498235,
+        0.0955223418,
+        0.000146946243,
+        0.100971439,
+        0.0170277817,
+        0.173755469,
+        0.000146946243,
+        0.00152457994,
+        0.141450628,
+        0.282713657,
+        0
+      ],
+      [
+        0.000119247588,
+        0.0383163304,
+        0.11255615,
+        0.0436285288,
+        0.000119247588,
+        0.0192856198,
+        0.175758018,
+        0.020358817,
+        0.000119247588,
+        0.197235316,
+        0.288470104,
+        0.104033374
+      ],
+      [
+        0.0468282051,
+        3.20346125e-05,
+        0.0825016476,
+        0.0378754242,
+        0.0868836623,
+        3.20346125e-05,
+        0.146909879,
+        0.0191351973,
+        0.260577625,
+        3.20346125e-05,
+        0.213141376,
+        0.10605088
+      ],
+      [
+        0.146293011,
+        0.0331663512,
+        0.000105430841,
+        0.0501755794,
+        0.207187242,
+        0.0102551561,
+        0.000105430841,
+        0.027888217,
+        0.283407964,
+        0.0599407043,
+        0.000105430841,
+        0.181369481
+      ],
+      [
+        0.125236617,
+        0.0361508505,
+        0.0591068896,
+        0.000121340743,
+        0.165565282,
+        0.00791956686,
+        0.150064084,
+        0.000121340743,
+        0.202982991,
+        0.0283175644,
+        0.224413472,
+        0
+      ],
+      [
+        0.000210016244,
+        0.0414240647,
+        0.101760633,
+        0.0428484744,
+        0.000210016244,
+        0.0179312948,
+        0.161526364,
+        0.0189973372,
+        0.000210016244,
+        0.240930978,
+        0.173671163,
+        0.200279644
+      ],
+      [
+        0.0495830034,
+        4.61487199e-05,
+        0.151014753,
+        0.067951325,
+        0.0907268765,
+        4.61487199e-05,
+        0.315461425,
+        0.0277696796,
+        0.128849485,
+        4.61487199e-05,
+        0.0567220636,
+        0.111782943
+      ],
+      [
+        0.11555575,
+        0.0292950248,
+        0.00014832042,
+        0.0456759293,
+        0.15337244,
+        0.00761339039,
+        0.00014832042,
+        0.0203902102,
+        0.249082062,
+        0.122098355,
+        0.00014832042,
+        0.256471877
+      ],
+      [
+        0.147130835,
+        0.0327619952,
+        0.0756043295,
+        0.000188145734,
+        0.212444944,
+        0.0101329647,
+        0.114642199,
+        0.000188145734,
+        0.294425221,
+        0.107175814,
+        0.00530540568,
+        0
+      ],
+      [
+        8.22405627e-05,
+        0.0221237714,
+        0.037137767,
+        0.0162121049,
+        8.22405627e-05,
+        0.0187609213,
+        0.080696449,
+        0.0269716446,
+        8.22405627e-05,
+        0.248406873,
+        0.205991108,
+        0.343452639
+      ],
+      [
+        0.049159614,
+        5.43832178e-05,
+        0.0514031038,
+        0.0203847824,
+        0.0855463843,
+        5.43832178e-05,
+        0.0980144614,
+        0.0239136025,
+        0.168927456,
+        5.43832178e-05,
+        0.158422773,
+        0.344064673
+      ],
+      [
+        0.137668134,
+        0.0267105699,
+        0.000142351166,
+        0.0441201525,
+        0.19166368,
+        0.0114882132,
+        0.000142351166,
+        0.0202277277,
+        0.273478098,
+        0.129199413,
+        0.000142351166,
+        0.165016958
+      ],
+      [
+        0.0443720703,
+        0.011998886,
+        0.0370775788,
+        3.30887484e-05,
+        0.0768170894,
+        0.00839411198,
+        0.110338914,
+        3.30887484e-05,
+        0.22919549,
+        0.235978299,
+        0.245761384,
+        0
+      ]
+    ]
+  ],
+  "TransitionParameters": [
+    [
+      [
+        -7.36174689,
+        1.61101289,
+        -0.268464948,
+        0.0143320448
+      ],
+      [
+        -3.22220388,
+        0.496986063,
+        -0.181868245,
+        0.0125555841
+      ],
+      [
+        2.63396482,
+        -1.49671632,
+        0.145790372,
+        -0.00463126882
+      ]
+    ],
+    [
+      [
+        -4.29124266,
+        0.474781729,
+        -0.0691005634,
+        0.0024944116
+      ],
+      [
+        -5.8759345,
+        0.769176344,
+        -0.0794793302,
+        0.0026603066
+      ],
+      [
+        -2.52278775,
+        -0.0673361054,
+        -0.00420963573,
+        0.000173101656
+      ]
+    ],
+    [
+      [
+        1.44776405,
+        -1.89806596,
+        0.230489754,
+        -0.00788373432
+      ],
+      [
+        3.62328388,
+        -3.16155741,
+        0.380413687,
+        -0.0139731804
+      ],
+      [
+        -2.4113731,
+        1.5617699,
+        -0.464222808,
+        0.0330184761
+      ]
+    ],
+    [
+      [
+        -1.52188949,
+        -0.619888164,
+        0.0344820232,
+        -0.000466695436
+      ],
+      [
+        7.25871708,
+        -2.89355725,
+        0.226545422,
+        -0.00503769654
+      ],
+      [
+        1.80689962,
+        -0.775311988,
+        0.00287885444,
+        0.00212630128
+      ]
+    ],
+    [
+      [
+        -1.58612186,
+        -0.153996667,
+        -0.019362539,
+        0.00340134003
+      ],
+      [
+        -5.44435394,
+        1.26703171,
+        -0.267105283,
+        0.0166778421
+      ],
+      [
+        2.91356449,
+        -1.87150825,
+        0.226540613,
+        -0.010786308
+      ]
+    ],
+    [
+      [
+        2.73738367,
+        -1.52165103,
+        0.134485954,
+        -0.00364414263
+      ],
+      [
+        -1.96380465,
+        -0.0304224195,
+        -0.00741383211,
+        0.000655817377
+      ],
+      [
+        -5.65275902,
+        0.8554781,
+        -0.0747563725,
+        0.00213841659
+      ]
+    ],
+    [
+      [
+        6.82408162,
+        -5.00340617,
+        0.843280331,
+        -0.0477216713
+      ],
+      [
+        0.922836644,
+        -1.39570517,
+        0.0615167062,
+        0.00625866765
+      ],
+      [
+        -7.49471908,
+        4.08850937,
+        -0.931670394,
+        0.06135184
+      ]
+    ],
+    [
+      [
+        -2.03471379,
+        -0.183049895,
+        -0.0161448893,
+        0.00147588228
+      ],
+      [
+        -0.39397695,
+        -0.497506148,
+        -0.0025279351,
+        0.00199848358
+      ],
+      [
+        -3.14511306,
+        0.866929002,
+        -0.161209014,
+        0.00724003881
+      ]
+    ],
+    [
+      [
+        -4.03613088,
+        0.951183897,
+        -0.1707077,
+        0.00951914769
+      ],
+      [
+        -2.73727929,
+        -0.0846264685,
+        -0.0762702838,
+        0.00765998521
+      ],
+      [
+        -0.0115161507,
+        -0.676772845,
+        0.0186902046,
+        0.00114061014
+      ]
+    ],
+    [
+      [
+        -4.0450919,
+        0.19441825,
+        -0.0196572463,
+        0.000545513282
+      ],
+      [
+        -0.590738944,
+        -0.563607207,
+        0.0397364279,
+        -0.000835263676
+      ],
+      [
+        -0.650606525,
+        -0.793978644,
+        0.0672391429,
+        -0.0019742867
+      ]
+    ],
+    [
+      [
+        -7.1216888,
+        0.704299447,
+        -0.00675682556,
+        -0.00429905236
+      ],
+      [
+        4.0135083,
+        -2.99745283,
+        0.330100699,
+        -0.00866415885
+      ],
+      [
+        -2.95159941,
+        1.52304256,
+        -0.417790358,
+        0.0301178899
+      ]
+    ],
+    [
+      [
+        -5.71687526,
+        1.02827154,
+        -0.128832359,
+        0.00416099843
+      ],
+      [
+        -6.35542589,
+        1.25709282,
+        -0.1917998,
+        0.00889679996
+      ],
+      [
+        -1.20027791,
+        0.152425947,
+        -0.0921121841,
+        0.00518033583
+      ]
+    ],
+    [
+      [
+        -1.75233077,
+        -0.0165381386,
+        -0.0154477996,
+        0.00191469353
+      ],
+      [
+        -3.79457085,
+        0.695703623,
+        -0.170024823,
+        0.0125082712
+      ],
+      [
+        2.14044448,
+        -1.41498734,
+        0.116355694,
+        -0.00281465688
+      ]
+    ],
+    [
+      [
+        -1.89375385,
+        -0.103804215,
+        -0.00397067386,
+        0.000435442231
+      ],
+      [
+        -4.05701629,
+        0.431318996,
+        -0.0460802272,
+        0.0014783096
+      ],
+      [
+        -4.07119813,
+        0.0340792867,
+        0.00636890829,
+        -0.000665968456
+      ]
+    ],
+    [
+      [
+        7.14617037,
+        -5.07757031,
+        0.837708073,
+        -0.0452627753
+      ],
+      [
+        1.69236944,
+        -2.28936276,
+        0.274337077,
+        -0.00888968456
+      ],
+      [
+        -4.60392728,
+        2.15828049,
+        -0.515604387,
+        0.0324594302
+      ]
+    ],
+    [
+      [
+        -2.82895825,
+        -0.159891687,
+        0.0556441946,
+        -0.00321555705
+      ],
+      [
+        2.92995068,
+        -1.83116699,
+        0.202125712,
+        -0.00725218663
+      ],
+      [
+        0.981168958,
+        -0.682236621,
+        0.0147684255,
+        0.00146373056
+      ]
+    ]
+  ],
+  "CounterWeight": 3
+}
\ No newline at end of file
diff --git a/tests/python/test_tool_contract.py b/tests/python/test_tool_contract.py
index 30a41cd..917190a 100755
--- a/tests/python/test_tool_contract.py
+++ b/tests/python/test_tool_contract.py
@@ -32,7 +32,7 @@ class TestCCSApp(pbcommand.testkit.PbTestApp):
         "pbccs.task_options.min_passes": 3,
         "pbccs.task_options.min_zscore": -5,
         "pbccs.task_options.max_drop_frac": 0.33,
-        "pbccs.task_options.no_polish": True,
+        "pbccs.task_options.polish": False
     }
 
     def setUp(self):
diff --git a/tests/unit/TestLoadModels.cpp b/tests/unit/TestLoadModels.cpp
index 1d73655..0ef3f67 100644
--- a/tests/unit/TestLoadModels.cpp
+++ b/tests/unit/TestLoadModels.cpp
@@ -60,8 +60,6 @@ using namespace PacBio::Data;       // NOLINT
 
 namespace {
 const SNR snr(10, 7, 5, 11);
-const string SP1C1 = "S/P1-C1.1";
-const string SP1C1v2 = "S/P1-C1.2";
 
 const string longTpl =
     "GGGCGGCGACCTCGCGGGTTTTCGCTATTTATGAAAATTTTCCGGTTTAAGGCGTTTCCGTTCTTCTTCGTCAT"
@@ -103,7 +101,8 @@ Read MkRead(const string& seq, const SNR& snr, const string& mdl, const vector<u
 
 TEST(LoadModelsTest, SupportedChemistries)
 {
-    const std::set<std::string> chem = {"P6-C4", "S/P1-C1/beta", "S/P1-C1.1", "S/P1-C1.2"};
+    const std::set<std::string> chem = {"P6-C4",     "S/P1-C1/beta", "S/P1-C1.1",
+                                        "S/P1-C1.2", "S/P1-C1.3",    "S/P2-C2"};
     const std::set<std::string> supp = SupportedChemistries();
     std::set<std::string> diff;
     std::set_difference(chem.begin(), chem.end(), supp.begin(), supp.end(),
@@ -135,6 +134,7 @@ TEST(LoadModelsTest, Directory)
     ASSERT_TRUE(chems.find("S/P1-C1/beta::Marginal::FromFile") != chems.end());
     ASSERT_TRUE(chems.find("S/P1-C1.1::PwSnrA::FromFile") != chems.end());
     ASSERT_TRUE(chems.find("S/P1-C1.2::PwSnr::FromFile") != chems.end());
+    ASSERT_TRUE(chems.find("S/P2-C2::PwSnr::FromFile") != chems.end());
 
 // test identity between S/P1-C1/beta and S/P1-C1/beta::Marginal (loaded)
 //   disabled until S_P1C1Beta is fixed
@@ -183,6 +183,21 @@ TEST(LoadModelsTest, Directory)
 
         EXPECT_NEAR(ai1.LL(), ai2.LL(), 1.0e-5);
     }
+
+    // test identity between S/P1-C1.2 and S/P1-C1.2::PwSnr
+    {
+        MonoMolecularIntegrator ai1(longTpl, cfg, snr, "S/P2-C2::PwSnr::Compiled");
+        EXPECT_EQ(State::VALID,
+                  ai1.AddRead(MappedRead(MkRead(longRead, snr, "S/P2-C2::PwSnr::Compiled", longPws),
+                                         StrandType::FORWARD, 0, longTpl.length(), true, true)));
+
+        MonoMolecularIntegrator ai2(longTpl, cfg, snr, "S/P2-C2::PwSnr::FromFile");
+        EXPECT_EQ(State::VALID,
+                  ai2.AddRead(MappedRead(MkRead(longRead, snr, "S/P2-C2::PwSnr::FromFile", longPws),
+                                         StrandType::FORWARD, 0, longTpl.length(), true, true)));
+
+        EXPECT_NEAR(ai1.LL(), ai2.LL(), 1.0e-5);
+    }
 }
 
 #if EXTENSIVE_TESTING
@@ -196,9 +211,9 @@ TEST(LoadModelsTest, ModelTiming)
     LoadModels(tests::DataDir + "/params");
 
     const size_t nsamp = 100;
-    const std::vector<std::string> mdls = {"S/P1-C1/beta::Marginal::FromFile",
-                                           "S/P1-C1.1::PwSnrA::FromFile",
-                                           "S/P1-C1.2::PwSnr::FromFile"};
+    const std::vector<std::string> mdls = {
+        "S/P1-C1/beta::Marginal::FromFile", "S/P1-C1.1::PwSnrA::FromFile",
+        "S/P1-C1.2::PwSnr::FromFile", "S/P2-C2::PwSnr::FromFile"};
     for (const auto mdl : mdls) {
         MonoMolecularIntegrator ai(longTpl, cfg, snr, mdl);
         const auto stime = std::chrono::high_resolution_clock::now();
diff --git a/tests/unit/TestPoaConsensus.cpp b/tests/unit/TestPoaConsensus.cpp
index a2fb219..e8c3263 100644
--- a/tests/unit/TestPoaConsensus.cpp
+++ b/tests/unit/TestPoaConsensus.cpp
@@ -480,7 +480,7 @@ TEST(PoaConsensus, TestVerboseGraphVizOutput)
         " label=\"{ { 3 | G } | { 2 | 2 } | { 2.00 | 4.00 } }\"];"
         "4[shape=Mrecord, style=\"filled\", fillcolor=\"lightblue\" ,"
         " label=\"{ { 4 | G } | { 2 | 2 } | { 2.00 | 6.00 } }\"];"
-        "5[shape=Mrecord, label=\"{ { 5 | T } | { 1 | 1 } | { -0.00 | -0.00 } "
+        "5[shape=Mrecord, label=\"{ { 5 | T } | { 1 | 2 } | { -0.00 | -0.00 } "
         "}\"];"
         "0->2 ;"
         "2->3 ;"
@@ -509,7 +509,7 @@ TEST(PoaConsensus, TestLocalStaggered)
     // coverage for CCS is (numReads-2) (beginning, end read).
     // Application has to provide a sensible minCoverage.
     const PoaConsensus* pc = PoaConsensus::FindConsensus(reads, AlignMode::LOCAL, 4);
-    plotConsensus(pc, "local-staggered", true);
+    plotConsensus(pc, "local-staggered", false);
     EXPECT_EQ("ATAGTGCCGCCAATCTTCCAGTATATACAGCACGGAGTAGCATCACGTACGTACGTCTACACGTAATT", pc->Sequence);
     delete pc;
 }
@@ -533,6 +533,47 @@ TEST(PoaConsensus, TestLongInsert)
     delete pc;
 }
 
+TEST(PoaConsensus, TestSpanningReads)
+{
+    string read1 = "GAAAG";
+    string read2 = "GATAG";
+    vector<string> reads{read1, read1, read1, read2, read2, read2};
+    const PoaConsensus* pc = PoaConsensus::FindConsensus(reads, AlignMode::LOCAL);
+    plotConsensus(pc, "spanning-reads");
+
+    string dot = pc->Graph.ToGraphViz(PoaGraph::VERBOSE_NODES | PoaGraph::COLOR_NODES, pc);
+    // We expect to get spanning reads of 6 for the middle A/T nodes,
+    // but each only has 3 reads passing through.
+    // The PoaGraph doesn't really expose an API, we can only check it
+    // by looking at the GraphViz output.
+
+    // clang-format off
+    string expectedDot =
+        "digraph G {"
+        "rankdir=\"LR\";"
+        "0[shape=Mrecord, label=\"{ { 0 | ^ } | { 0 | 0 } | { 0.00 | 0.00 } }\"];"
+        "1[shape=Mrecord, label=\"{ { 1 | $ } | { 0 | 0 } | { 0.00 | 0.00 } }\"];"
+        "2[shape=Mrecord, style=\"filled\", fillcolor=\"lightblue\" , label=\"{ { 2 | G } | { 6 | 6 } | { 6.00 | 6.00 } }\"];"
+        "3[shape=Mrecord, style=\"filled\", fillcolor=\"lightblue\" , label=\"{ { 3 | A } | { 6 | 6 } | { 6.00 | 12.00 } }\"];"
+        "4[shape=Mrecord, style=\"filled\", fillcolor=\"lightblue\" , label=\"{ { 4 | A } | { 3 | 6 } | { -0.00 | 12.00 } }\"];"
+        "5[shape=Mrecord, style=\"filled\", fillcolor=\"lightblue\" , label=\"{ { 5 | A } | { 6 | 6 } | { 6.00 | 18.00 } }\"];"
+        "6[shape=Mrecord, style=\"filled\", fillcolor=\"lightblue\" , label=\"{ { 6 | G } | { 6 | 6 } | { 6.00 | 24.00 } }\"];"
+        "7[shape=Mrecord, label=\"{ { 7 | T } | { 3 | 6 } | { -0.00 | 12.00 } }\"];"
+        "0->2 ;"
+        "2->3 ;"
+        "3->4 ;"
+        "4->5 ;"
+        "5->6 ;"
+        "6->1 ;"
+        "7->5 ;"
+        "3->7 ;"
+        "}";
+    // clang-format on
+
+    EXPECT_EQ(expectedDot, erase_all_copy(dot, "\n"));
+    delete pc;
+}
+
 #if 0
 TEST(PoaConsensus, TestMutations)
 {
diff --git a/tests/unit/TestTemplate.cpp b/tests/unit/TestTemplate.cpp
index 38f8fe7..3a50c8a 100644
--- a/tests/unit/TestTemplate.cpp
+++ b/tests/unit/TestTemplate.cpp
@@ -332,7 +332,7 @@ TEST(TemplateTest, P6SiteNormalParameters)
     auto results = tester.NormalParameters();
 
     EXPECT_EQ(-9.3915588824261888, results.first);
-    EXPECT_EQ(26.883352639390957, results.second);
+    EXPECT_EQ(30.392545575324248, results.second);
 }
 
 }  // namespace anonymous

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/debian-med/unanimity.git



More information about the debian-med-commit mailing list