[med-svn] [manta] 03/06: New upstream version 1.1.0+dfsg

Andreas Tille tille at debian.org
Tue May 2 12:34:05 UTC 2017


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

tille pushed a commit to branch master
in repository manta.

commit a2454901205d64fddb1a76db55b195f30905d3be
Author: Andreas Tille <tille at debian.org>
Date:   Tue May 2 14:13:33 2017 +0200

    New upstream version 1.1.0+dfsg
---
 CMakeLists.txt                                     |   2 +-
 COPYRIGHT.txt                                      |   4 +-
 ChangeLog.txt                                      |  19 +
 docs/developerGuide/README.md                      |   8 +-
 docs/developerGuide/alignment.md                   |   8 +-
 docs/developerGuide/breakendGraph.md               |   8 +-
 docs/developerGuide/debugFullRun.md                |   8 +-
 docs/developerGuide/debugSingleSV.md               |   8 +-
 docs/developerGuide/testAssembler.md               |   8 +-
 docs/methods/primary/methods.tex                   | 149 ++++++--
 docs/userGuide/README.md                           |  17 +-
 docs/userGuide/installation.md                     |  18 +-
 redist/CMakeLists.txt                              |   2 +-
 src/CMakeLists.txt                                 |   2 +-
 src/c++/CMakeLists.txt                             |   2 +-
 src/c++/bin/CMakeLists.txt                         |   2 +-
 src/c++/bin/CheckSVLoci.cpp                        |   3 +-
 src/c++/bin/DumpSVLoci.cpp                         |   3 +-
 src/c++/bin/EstimateSVLoci.cpp                     |   3 +-
 src/c++/bin/GenerateSVCandidates.cpp               |   3 +-
 src/c++/bin/GetAlignmentStats.cpp                  |   3 +-
 src/c++/bin/GetChromDepth.cpp                      |   3 +-
 src/c++/bin/MergeAlignmentStats.cpp                |   3 +-
 src/c++/bin/MergeEdgeStats.cpp                     |   3 +-
 src/c++/bin/MergeSVLoci.cpp                        |   3 +-
 src/c++/bin/SummarizeAlignmentStats.cpp            |   3 +-
 src/c++/bin/SummarizeSVLoci.cpp                    |   3 +-
 src/c++/bin/TestAssembler.cpp                      |   3 +-
 src/c++/lib/CMakeLists.txt                         |   2 +-
 src/c++/lib/alignment/AlignerBase.hh               |   3 +-
 src/c++/lib/alignment/AlignerBaseImpl.hh           |   3 +-
 src/c++/lib/alignment/AlignerUtil.hh               |   3 +-
 src/c++/lib/alignment/Alignment.cpp                |   3 +-
 src/c++/lib/alignment/Alignment.hh                 |   3 +-
 src/c++/lib/alignment/AlignmentScores.hh           |   3 +-
 src/c++/lib/alignment/AlignmentUtil.cpp            |   3 +-
 src/c++/lib/alignment/AlignmentUtil.hh             |   3 +-
 src/c++/lib/alignment/CMakeLists.txt               |   2 +-
 src/c++/lib/alignment/GlobalAligner.hh             |   3 +-
 src/c++/lib/alignment/GlobalAlignerImpl.hh         |   3 +-
 src/c++/lib/alignment/GlobalJumpAligner.hh         |   3 +-
 src/c++/lib/alignment/GlobalJumpAlignerImpl.hh     |   3 +-
 src/c++/lib/alignment/GlobalJumpIntronAligner.hh   |   3 +-
 .../lib/alignment/GlobalJumpIntronAlignerImpl.hh   |   3 +-
 src/c++/lib/alignment/GlobalLargeIndelAligner.hh   |   3 +-
 .../lib/alignment/GlobalLargeIndelAlignerImpl.hh   |   3 +-
 src/c++/lib/alignment/JumpAlignerBase.hh           |   3 +-
 src/c++/lib/alignment/JumpAlignerBaseImpl.hh       |   3 +-
 src/c++/lib/alignment/ReadScorer.cpp               |   3 +-
 src/c++/lib/alignment/ReadScorer.hh                |   3 +-
 src/c++/lib/alignment/SingleRefAlignerShared.hh    |   3 +-
 .../lib/alignment/SingleRefAlignerSharedImpl.hh    |   3 +-
 src/c++/lib/alignment/test/AlignmentUtilTest.cpp   |   3 +-
 src/c++/lib/alignment/test/CMakeLists.txt          |   2 +-
 src/c++/lib/alignment/test/GlobalAlignerTest.cpp   |   3 +-
 .../lib/alignment/test/GlobalJumpAlignerTest.cpp   |   3 +-
 .../alignment/test/GlobalJumpIntronAlignerTest.cpp |   3 +-
 .../alignment/test/GlobalLargeIndelAlignerTest.cpp |   3 +-
 src/c++/lib/alignment/test/test_main.cpp           |   3 +-
 src/c++/lib/applications/CMakeLists.txt            |   2 +-
 .../lib/applications/CheckSVLoci/CMakeLists.txt    |   2 +-
 .../lib/applications/CheckSVLoci/CSLOptions.cpp    |   3 +-
 src/c++/lib/applications/CheckSVLoci/CSLOptions.hh |   3 +-
 .../lib/applications/CheckSVLoci/CheckSVLoci.cpp   |   3 +-
 .../lib/applications/CheckSVLoci/CheckSVLoci.hh    |   3 +-
 src/c++/lib/applications/DumpSVLoci/CMakeLists.txt |   2 +-
 src/c++/lib/applications/DumpSVLoci/DSLOptions.cpp |   3 +-
 src/c++/lib/applications/DumpSVLoci/DSLOptions.hh  |   3 +-
 src/c++/lib/applications/DumpSVLoci/DumpSVLoci.cpp |   3 +-
 src/c++/lib/applications/DumpSVLoci/DumpSVLoci.hh  |   3 +-
 .../lib/applications/EstimateSVLoci/CMakeLists.txt |   2 +-
 .../lib/applications/EstimateSVLoci/ESLOptions.cpp |   5 +-
 .../lib/applications/EstimateSVLoci/ESLOptions.hh  |   4 +-
 .../applications/EstimateSVLoci/EstimateSVLoci.cpp |   3 +-
 .../applications/EstimateSVLoci/EstimateSVLoci.hh  |   3 +-
 .../EstimateSVLoci/SVLocusSetFinder.cpp            |   3 +-
 .../EstimateSVLoci/SVLocusSetFinder.hh             |   3 +-
 .../GenerateSVCandidates/CMakeLists.txt            |   2 +-
 .../GenerateSVCandidates/EdgeOptions.hh            |   3 +-
 .../GenerateSVCandidates/EdgeOptionsParser.cpp     |   3 +-
 .../GenerateSVCandidates/EdgeOptionsParser.hh      |   3 +-
 .../GenerateSVCandidates/EdgeRetriever.hh          |   3 +-
 .../GenerateSVCandidates/EdgeRetrieverBin.cpp      |   3 +-
 .../GenerateSVCandidates/EdgeRetrieverBin.hh       |   3 +-
 .../GenerateSVCandidates/EdgeRetrieverJumpBin.cpp  |   3 +-
 .../GenerateSVCandidates/EdgeRetrieverJumpBin.hh   |   3 +-
 .../GenerateSVCandidates/EdgeRetrieverLocus.cpp    |   3 +-
 .../GenerateSVCandidates/EdgeRetrieverLocus.hh     |   3 +-
 .../GenerateSVCandidates/EdgeRuntimeTracker.cpp    |   3 +-
 .../GenerateSVCandidates/EdgeRuntimeTracker.hh     |   3 +-
 .../GenerateSVCandidates/FatSVCandidate.cpp        |   3 +-
 .../GenerateSVCandidates/FatSVCandidate.hh         |   3 +-
 .../GenerateSVCandidates/GSCEdgeStatsManager.cpp   |   3 +-
 .../GenerateSVCandidates/GSCEdgeStatsManager.hh    |   5 +-
 .../GenerateSVCandidates/GSCOptions.cpp            |   5 +-
 .../GenerateSVCandidates/GSCOptions.hh             |   6 +-
 .../GenerateSVCandidates/GenerateSVCandidates.cpp  |   6 +-
 .../GenerateSVCandidates/GenerateSVCandidates.hh   |   3 +-
 .../GenerateSVCandidates/JunctionCallInfo.hh       |   3 +-
 .../SVCandidateAssemblyRefiner.cpp                 |   3 +-
 .../SVCandidateAssemblyRefiner.hh                  |   3 +-
 .../GenerateSVCandidates/SVCandidateProcessor.cpp  | 148 ++++++--
 .../GenerateSVCandidates/SVCandidateProcessor.hh   |   4 +-
 .../GenerateSVCandidates/SVEvidence.cpp            |   3 +-
 .../GenerateSVCandidates/SVEvidence.hh             |   3 +-
 .../applications/GenerateSVCandidates/SVFinder.cpp |  15 +-
 .../applications/GenerateSVCandidates/SVFinder.hh  |   8 +-
 .../SVScorePairAltProcessor.cpp                    |   3 +-
 .../SVScorePairAltProcessor.hh                     |   3 +-
 .../GenerateSVCandidates/SVScorePairProcessor.cpp  |   3 +-
 .../GenerateSVCandidates/SVScorePairProcessor.hh   |  15 +-
 .../SVScorePairRefProcessor.cpp                    |  12 +-
 .../SVScorePairRefProcessor.hh                     |   3 +-
 .../applications/GenerateSVCandidates/SVScorer.cpp |  70 ++--
 .../applications/GenerateSVCandidates/SVScorer.hh  |  20 +-
 .../GenerateSVCandidates/SVScorerPair.cpp          |  12 +-
 .../GenerateSVCandidates/SVScorerPairOptions.hh    |  15 +-
 .../GenerateSVCandidates/SVScorerShared.cpp        |   3 +-
 .../GenerateSVCandidates/SVScorerShared.hh         |   3 +-
 .../GenerateSVCandidates/SVScorerSplit.cpp         |  11 +-
 .../GenerateSVCandidates/SVSupports.cpp            |   9 +-
 .../GenerateSVCandidates/SVSupports.hh             |   7 +-
 .../GenerateSVCandidates/SplitReadAlignment.cpp    |   3 +-
 .../GenerateSVCandidates/SplitReadAlignment.hh     |   3 +-
 .../GenerateSVCandidates/test/CMakeLists.txt       |   2 +-
 .../test/EdgeRetrieverBinTest.cpp                  |   3 +-
 .../test/EdgeRetrieverJumpBinTest.cpp              |   3 +-
 .../test/EdgeRetrieverLocusTest.cpp                |   3 +-
 .../test/SVCandidateAssemblyRefinerTest.cpp        |   3 +-
 .../GenerateSVCandidates/test/test_main.cpp        |   3 +-
 .../GetAlignmentStats/AlignmentStatsOptions.cpp    |   3 +-
 .../GetAlignmentStats/AlignmentStatsOptions.hh     |   3 +-
 .../applications/GetAlignmentStats/CMakeLists.txt  |   2 +-
 .../GetAlignmentStats/GetAlignmentStats.cpp        |   3 +-
 .../GetAlignmentStats/GetAlignmentStats.hh         |   3 +-
 .../lib/applications/GetChromDepth/CMakeLists.txt  |   2 +-
 .../GetChromDepth/ChromDepthOptions.cpp            |   3 +-
 .../GetChromDepth/ChromDepthOptions.hh             |   3 +-
 .../applications/GetChromDepth/GetChromDepth.cpp   |   3 +-
 .../applications/GetChromDepth/GetChromDepth.hh    |   3 +-
 .../MergeAlignmentStats/CMakeLists.txt             |   2 +-
 .../MergeAlignmentStats/MergeAlignmentStats.cpp    |   3 +-
 .../MergeAlignmentStats/MergeAlignmentStats.hh     |   3 +-
 .../MergeAlignmentStatsOptions.cpp                 |   3 +-
 .../MergeAlignmentStatsOptions.hh                  |   3 +-
 .../lib/applications/MergeEdgeStats/CMakeLists.txt |   2 +-
 .../lib/applications/MergeEdgeStats/MESOptions.cpp |   3 +-
 .../lib/applications/MergeEdgeStats/MESOptions.hh  |   3 +-
 .../applications/MergeEdgeStats/MergeEdgeStats.cpp |   3 +-
 .../applications/MergeEdgeStats/MergeEdgeStats.hh  |   3 +-
 .../lib/applications/MergeSVLoci/CMakeLists.txt    |   2 +-
 .../lib/applications/MergeSVLoci/MSLOptions.cpp    |   3 +-
 src/c++/lib/applications/MergeSVLoci/MSLOptions.hh |   3 +-
 .../lib/applications/MergeSVLoci/MergeSVLoci.cpp   |   3 +-
 .../lib/applications/MergeSVLoci/MergeSVLoci.hh    |   3 +-
 .../SummarizeAlignmentStats/CMakeLists.txt         |   2 +-
 .../SummarizeAlignmentStats/SASOptions.cpp         |   3 +-
 .../SummarizeAlignmentStats/SASOptions.hh          |   3 +-
 .../SummarizeAlignmentStats.cpp                    |  14 +-
 .../SummarizeAlignmentStats.hh                     |   3 +-
 .../applications/SummarizeSVLoci/CMakeLists.txt    |   2 +-
 .../applications/SummarizeSVLoci/SSLOptions.cpp    |   3 +-
 .../lib/applications/SummarizeSVLoci/SSLOptions.hh |   3 +-
 .../SummarizeSVLoci/SummarizeSVLoci.cpp            |   3 +-
 .../SummarizeSVLoci/SummarizeSVLoci.hh             |   3 +-
 .../lib/applications/TestAssembler/CMakeLists.txt  |   2 +-
 .../applications/TestAssembler/TestAssembler.cpp   |   3 +-
 .../applications/TestAssembler/TestAssembler.hh    |   3 +-
 .../TestAssembler/TestAssemblerOptions.cpp         |   3 +-
 .../TestAssembler/TestAssemblerOptions.hh          |   3 +-
 .../TestAssembler/extractAssemblyReads.cpp         |   3 +-
 .../TestAssembler/extractAssemblyReads.hh          |   3 +-
 src/c++/lib/appstats/CMakeLists.txt                |   2 +-
 src/c++/lib/appstats/GSCEdgeStats.cpp              |   3 +-
 src/c++/lib/appstats/GSCEdgeStats.hh               |   3 +-
 src/c++/lib/appstats/SVFinderStats.cpp             |   3 +-
 src/c++/lib/appstats/SVFinderStats.hh              |  19 +-
 src/c++/lib/assembly/AssembledContig.cpp           |   3 +-
 src/c++/lib/assembly/AssembledContig.hh            |   3 +-
 src/c++/lib/assembly/AssemblyReadInfo.hh           |   3 +-
 src/c++/lib/assembly/CMakeLists.txt                |   2 +-
 src/c++/lib/assembly/IterativeAssembler.cpp        |   3 +-
 src/c++/lib/assembly/IterativeAssembler.hh         |   3 +-
 src/c++/lib/assembly/SmallAssembler.cpp            |   3 +-
 src/c++/lib/assembly/SmallAssembler.hh             |   3 +-
 src/c++/lib/assembly/test/CMakeLists.txt           |   2 +-
 .../lib/assembly/test/IterativeAssemblerTest.cpp   |   3 +-
 src/c++/lib/assembly/test/SmallAssemblerTest.cpp   |   3 +-
 src/c++/lib/assembly/test/test_main.cpp            |   3 +-
 src/c++/lib/blt_util/CMakeLists.txt                |   2 +-
 src/c++/lib/blt_util/CircularCounter.hh            |   3 +-
 src/c++/lib/blt_util/LinearScaler.hh               |   3 +-
 src/c++/lib/blt_util/MedianDepthTracker.hh         |   3 +-
 src/c++/lib/blt_util/PolymorphicObject.hh          |   3 +-
 src/c++/lib/blt_util/RangeMap.hh                   |   3 +-
 src/c++/lib/blt_util/ReadKey.cpp                   |   3 +-
 src/c++/lib/blt_util/ReadKey.hh                    |   3 +-
 src/c++/lib/blt_util/RegionSum.hh                  |   3 +-
 src/c++/lib/blt_util/RegionTracker.cpp             |   3 +-
 src/c++/lib/blt_util/RegionTracker.hh              |   9 +-
 src/c++/lib/blt_util/RegionTrackerImpl.hh          |   3 +-
 src/c++/lib/blt_util/SampleVector.hh               |   3 +-
 src/c++/lib/blt_util/SampleVectorImpl.hh           |   3 +-
 src/c++/lib/blt_util/SimpleAlignment.cpp           |   3 +-
 src/c++/lib/blt_util/SimpleAlignment.hh            |   3 +-
 src/c++/lib/blt_util/SizeDistribution.cpp          |   3 +-
 src/c++/lib/blt_util/SizeDistribution.hh           |   3 +-
 src/c++/lib/blt_util/align_path.cpp                |   3 +-
 src/c++/lib/blt_util/align_path.hh                 |   3 +-
 src/c++/lib/blt_util/align_path_impl.hh            |   3 +-
 .../lib/blt_util/align_path_match_descriptor.cpp   |   3 +-
 .../lib/blt_util/align_path_match_descriptor.hh    |   3 +-
 src/c++/lib/blt_util/align_path_util.hh            |   3 +-
 src/c++/lib/blt_util/basic_matrix.hh               |   3 +-
 src/c++/lib/blt_util/binomial_test.cpp             |   3 +-
 src/c++/lib/blt_util/binomial_test.hh              |   3 +-
 src/c++/lib/blt_util/blt_exception.cpp             |   3 +-
 src/c++/lib/blt_util/blt_exception.hh              |   3 +-
 src/c++/lib/blt_util/blt_types.hh                  |   3 +-
 src/c++/lib/blt_util/chrom_depth_map.cpp           |   3 +-
 src/c++/lib/blt_util/chrom_depth_map.hh            |   3 +-
 src/c++/lib/blt_util/compat_unistd.h               |   2 +-
 src/c++/lib/blt_util/compat_util.cpp               |   3 +-
 src/c++/lib/blt_util/compat_util.hh                |   3 +-
 src/c++/lib/blt_util/depth_buffer.hh               |   3 +-
 src/c++/lib/blt_util/depth_buffer_util.cpp         |   3 +-
 src/c++/lib/blt_util/depth_buffer_util.hh          |   3 +-
 src/c++/lib/blt_util/flyweight_observer.hh         |   3 +-
 src/c++/lib/blt_util/id_map.hh                     |   3 +-
 src/c++/lib/blt_util/input_stream_handler.cpp      |   3 +-
 src/c++/lib/blt_util/input_stream_handler.hh       |   3 +-
 src/c++/lib/blt_util/io_util.cpp                   |   3 +-
 src/c++/lib/blt_util/io_util.hh                    |   3 +-
 src/c++/lib/blt_util/istream_line_splitter.cpp     |   3 +-
 src/c++/lib/blt_util/istream_line_splitter.hh      |   3 +-
 src/c++/lib/blt_util/known_pos_range2.cpp          |   3 +-
 src/c++/lib/blt_util/known_pos_range2.hh           |  10 +-
 src/c++/lib/blt_util/log.cpp                       |   3 +-
 src/c++/lib/blt_util/log.hh                        |   3 +-
 src/c++/lib/blt_util/math_util.hh                  |   3 +-
 src/c++/lib/blt_util/observer.hh                   |   3 +-
 src/c++/lib/blt_util/parse_util.cpp                |   3 +-
 src/c++/lib/blt_util/parse_util.hh                 |   3 +-
 src/c++/lib/blt_util/pos_processor_base.hh         |   3 +-
 src/c++/lib/blt_util/pos_range.cpp                 |   3 +-
 src/c++/lib/blt_util/pos_range.hh                  |  27 +-
 src/c++/lib/blt_util/prob_util.cpp                 |   3 +-
 src/c++/lib/blt_util/prob_util.hh                  |  40 +-
 src/c++/lib/blt_util/qscore.hh                     |   6 +-
 src/c++/lib/blt_util/qscore_cache.cpp              |   3 +-
 src/c++/lib/blt_util/qscore_cache.hh               |   3 +-
 src/c++/lib/blt_util/qscore_snp.cpp                |   3 +-
 src/c++/lib/blt_util/qscore_snp.hh                 |   3 +-
 src/c++/lib/blt_util/reference_contig_segment.hh   |   3 +-
 src/c++/lib/blt_util/seq_printer.cpp               |   3 +-
 src/c++/lib/blt_util/seq_printer.hh                |   3 +-
 src/c++/lib/blt_util/seq_util.cpp                  |   3 +-
 src/c++/lib/blt_util/seq_util.hh                   |   3 +-
 src/c++/lib/blt_util/set_util.hh                   |   3 +-
 src/c++/lib/blt_util/sig_handler.cpp               |   3 +-
 src/c++/lib/blt_util/sig_handler.hh                |   3 +-
 src/c++/lib/blt_util/stage_manager.cpp             |   3 +-
 src/c++/lib/blt_util/stage_manager.hh              |   3 +-
 src/c++/lib/blt_util/stat_util.cpp                 |   3 +-
 src/c++/lib/blt_util/stat_util.hh                  |   3 +-
 src/c++/lib/blt_util/stream_stat.cpp               |   3 +-
 src/c++/lib/blt_util/stream_stat.hh                |   3 +-
 src/c++/lib/blt_util/string_util.cpp               |   3 +-
 src/c++/lib/blt_util/string_util.hh                |   3 +-
 src/c++/lib/blt_util/test/CMakeLists.txt           |   2 +-
 src/c++/lib/blt_util/test/CircularCounter_test.cpp |   3 +-
 .../lib/blt_util/test/MedianDepthTracker_test.cpp  |   3 +-
 src/c++/lib/blt_util/test/RangeMap_test.cpp        |   3 +-
 src/c++/lib/blt_util/test/RegionSum_test.cpp       |   3 +-
 src/c++/lib/blt_util/test/RegionTracker_test.cpp   |   3 +-
 src/c++/lib/blt_util/test/SampleVector_test.cpp    |   3 +-
 src/c++/lib/blt_util/test/SimpleAlignment_test.cpp |   3 +-
 .../lib/blt_util/test/SizeDistribution_test.cpp    |   3 +-
 src/c++/lib/blt_util/test/align_path_test.cpp      |   7 +-
 src/c++/lib/blt_util/test/binomial_test_test.cpp   |   3 +-
 src/c++/lib/blt_util/test/boost_icl_test.cpp       |   3 +-
 src/c++/lib/blt_util/test/compat_util_test.cpp     |   3 +-
 src/c++/lib/blt_util/test/depth_buffer_test.cpp    |   3 +-
 src/c++/lib/blt_util/test/id_map_test.cpp          |   3 +-
 src/c++/lib/blt_util/test/io_util_test.cpp         |   3 +-
 .../blt_util/test/istream_line_splitter_test.cpp   |   3 +-
 .../lib/blt_util/test/known_pos_range2_test.cpp    |   3 +-
 src/c++/lib/blt_util/test/math_util_test.cpp       |   3 +-
 src/c++/lib/blt_util/test/observer_test.cpp        |   3 +-
 src/c++/lib/blt_util/test/parse_util_test.cpp      |   3 +-
 src/c++/lib/blt_util/test/pos_range_test.cpp       |   3 +-
 src/c++/lib/blt_util/test/prob_util_test.cpp       |   3 +-
 src/c++/lib/blt_util/test/seq_util_test.cpp        |   3 +-
 src/c++/lib/blt_util/test/set_util_test.cpp        |   3 +-
 src/c++/lib/blt_util/test/stage_manager_test.cpp   |   3 +-
 src/c++/lib/blt_util/test/stream_stat_test.cpp     |   3 +-
 src/c++/lib/blt_util/test/string_util_test.cpp     |   3 +-
 src/c++/lib/blt_util/test/test_main.cpp            |   3 +-
 src/c++/lib/blt_util/test/window_util_test.cpp     |   3 +-
 src/c++/lib/blt_util/thirdparty_pop.h              |   3 +-
 src/c++/lib/blt_util/thirdparty_push.h             |   3 +-
 src/c++/lib/blt_util/time_util.cpp                 |   3 +-
 src/c++/lib/blt_util/time_util.hh                  |   3 +-
 src/c++/lib/blt_util/window_util.hh                |   7 +-
 src/c++/lib/common/CMakeLists.txt                  |   2 +-
 src/c++/lib/common/Exceptions.cpp                  |   3 +-
 src/c++/lib/common/Exceptions.hh                   |   3 +-
 src/c++/lib/common/OutStream.cpp                   |   3 +-
 src/c++/lib/common/OutStream.hh                    |   3 +-
 src/c++/lib/common/Program.cpp                     |   3 +-
 src/c++/lib/common/Program.hh                      |   3 +-
 src/c++/lib/common/ProgramConfig.hh                |   3 +-
 src/c++/lib/common/ProgramUtil.cpp                 |   3 +-
 src/c++/lib/common/ProgramUtil.hh                  |   3 +-
 src/c++/lib/common/ReadPairOrient.cpp              |   3 +-
 src/c++/lib/common/ReadPairOrient.hh               |   3 +-
 src/c++/lib/common/config.h.in                     |   3 +-
 src/c++/lib/common/configBuildTimeInfo.h.in        |   3 +-
 src/c++/lib/common/test/CMakeLists.txt             |   2 +-
 src/c++/lib/common/test/ReadPairOrientTest.cpp     |   3 +-
 src/c++/lib/common/test/test_main.cpp              |   3 +-
 src/c++/lib/format/CMakeLists.txt                  |   2 +-
 src/c++/lib/format/VcfWriterCandidateSV.cpp        |   3 +-
 src/c++/lib/format/VcfWriterCandidateSV.hh         |   3 +-
 src/c++/lib/format/VcfWriterDiploidSV.cpp          |   3 +-
 src/c++/lib/format/VcfWriterDiploidSV.hh           |   3 +-
 src/c++/lib/format/VcfWriterSV.cpp                 |   3 +-
 src/c++/lib/format/VcfWriterSV.hh                  |   3 +-
 src/c++/lib/format/VcfWriterScoredSV.hh            |   3 +-
 src/c++/lib/format/VcfWriterSomaticSV.cpp          |   3 +-
 src/c++/lib/format/VcfWriterSomaticSV.hh           |   3 +-
 src/c++/lib/format/VcfWriterTumorSV.cpp            |   3 +-
 src/c++/lib/format/VcfWriterTumorSV.hh             |   3 +-
 src/c++/lib/htsapi/CMakeLists.txt                  |   2 +-
 src/c++/lib/htsapi/SimpleAlignment_bam_util.cpp    |   3 +-
 src/c++/lib/htsapi/SimpleAlignment_bam_util.hh     |   3 +-
 src/c++/lib/htsapi/align_path_bam_util.cpp         |   3 +-
 src/c++/lib/htsapi/align_path_bam_util.hh          |   3 +-
 src/c++/lib/htsapi/bam_dumper.cpp                  |   3 +-
 src/c++/lib/htsapi/bam_dumper.hh                   |   3 +-
 src/c++/lib/htsapi/bam_header_info.cpp             |   3 +-
 src/c++/lib/htsapi/bam_header_info.hh              |   3 +-
 src/c++/lib/htsapi/bam_header_util.cpp             |   3 +-
 src/c++/lib/htsapi/bam_header_util.hh              |  10 +-
 src/c++/lib/htsapi/bam_record.cpp                  |   8 +-
 src/c++/lib/htsapi/bam_record.hh                   |   3 +-
 src/c++/lib/htsapi/bam_record_util.cpp             |   7 +-
 src/c++/lib/htsapi/bam_record_util.hh              |   3 +-
 src/c++/lib/htsapi/bam_seq.cpp                     |   3 +-
 src/c++/lib/htsapi/bam_seq.hh                      |   3 +-
 src/c++/lib/htsapi/bam_seq_read_util.cpp           |   3 +-
 src/c++/lib/htsapi/bam_seq_read_util.hh            |   3 +-
 src/c++/lib/htsapi/bam_streamer.cpp                |  35 +-
 src/c++/lib/htsapi/bam_streamer.hh                 |  28 +-
 src/c++/lib/htsapi/bam_util.cpp                    |   3 +-
 src/c++/lib/htsapi/bam_util.hh                     |   3 +-
 src/c++/lib/htsapi/bed_record.cpp                  |   3 +-
 src/c++/lib/htsapi/bed_record.hh                   |   3 +-
 src/c++/lib/htsapi/bed_streamer.cpp                |   3 +-
 src/c++/lib/htsapi/bed_streamer.hh                 |  13 +-
 src/c++/lib/htsapi/hts_streamer.cpp                |  26 +-
 src/c++/lib/htsapi/hts_streamer.hh                 |  15 +-
 src/c++/lib/htsapi/sam_util.hh                     |   3 +-
 src/c++/lib/htsapi/samtools_fasta_util.cpp         |   3 +-
 src/c++/lib/htsapi/samtools_fasta_util.hh          |   3 +-
 src/c++/lib/htsapi/tabix_util.hh                   |   3 +-
 src/c++/lib/htsapi/test/CMakeLists.txt             |   2 +-
 .../lib/htsapi/test/align_path_bam_util_test.cpp   |   3 +-
 src/c++/lib/htsapi/test/bam_header_util_test.cpp   |   3 +-
 src/c++/lib/htsapi/test/bed_streamer_test.cpp      |   3 +-
 src/c++/lib/htsapi/test/test_config.h.in           |   3 +-
 src/c++/lib/htsapi/test/test_main.cpp              |   3 +-
 src/c++/lib/htsapi/test/vcf_streamer_test.cpp      | 182 ++++++++-
 src/c++/lib/htsapi/test/vcf_streamer_test.vcf.gz   | Bin 1126 -> 1898 bytes
 .../lib/htsapi/test/vcf_streamer_test.vcf.gz.tbi   | Bin 139 -> 273 bytes
 src/c++/lib/htsapi/vcf_record.cpp                  |  17 +-
 src/c++/lib/htsapi/vcf_record.hh                   |  29 +-
 src/c++/lib/htsapi/vcf_streamer.cpp                |  46 ++-
 src/c++/lib/htsapi/vcf_streamer.hh                 |  35 +-
 src/c++/lib/htsapi/vcf_util.cpp                    |   3 +-
 src/c++/lib/htsapi/vcf_util.hh                     |  16 +-
 src/c++/lib/manta/BamRegionProcessor.hh            |   3 +-
 src/c++/lib/manta/CMakeLists.txt                   |   2 +-
 src/c++/lib/manta/ChromDepthFilterUtil.cpp         |   3 +-
 src/c++/lib/manta/ChromDepthFilterUtil.hh          |   3 +-
 src/c++/lib/manta/EventInfo.hh                     |   3 +-
 src/c++/lib/manta/JunctionIdGenerator.cpp          |   3 +-
 src/c++/lib/manta/JunctionIdGenerator.hh           |   5 +-
 src/c++/lib/manta/MultiJunctionUtil.cpp            |  49 ++-
 src/c++/lib/manta/MultiJunctionUtil.hh             |  15 +-
 src/c++/lib/manta/ReadChromDepthUtil.cpp           |   5 +-
 src/c++/lib/manta/ReadChromDepthUtil.hh            |   3 +-
 src/c++/lib/manta/ReadGroupLabel.cpp               |   3 +-
 src/c++/lib/manta/ReadGroupLabel.hh                |   3 +-
 src/c++/lib/manta/ReadGroupStats.hh                |   3 +-
 src/c++/lib/manta/ReadGroupStatsSet.cpp            |   3 +-
 src/c++/lib/manta/ReadGroupStatsSet.hh             |   3 +-
 src/c++/lib/manta/ReadGroupStatsUtil.cpp           | 405 +++++++++++++++++----
 src/c++/lib/manta/ReadGroupStatsUtil.hh            |   3 +-
 src/c++/lib/manta/RemoteMateReadUtil.cpp           |   3 +-
 src/c++/lib/manta/RemoteMateReadUtil.hh            |   3 +-
 src/c++/lib/manta/SVBreakend.cpp                   |   3 +-
 src/c++/lib/manta/SVBreakend.hh                    |   3 +-
 src/c++/lib/manta/SVCandidate.cpp                  |   3 +-
 src/c++/lib/manta/SVCandidate.hh                   |  12 +-
 src/c++/lib/manta/SVCandidateAssembler.cpp         |   7 +-
 src/c++/lib/manta/SVCandidateAssembler.hh          |   3 +-
 src/c++/lib/manta/SVCandidateAssemblyData.cpp      |   3 +-
 src/c++/lib/manta/SVCandidateAssemblyData.hh       |   3 +-
 src/c++/lib/manta/SVCandidateSetData.cpp           |   3 +-
 src/c++/lib/manta/SVCandidateSetData.hh            |   3 +-
 src/c++/lib/manta/SVCandidateUtil.cpp              |   5 +-
 src/c++/lib/manta/SVCandidateUtil.hh               |   3 +-
 src/c++/lib/manta/SVLocusEvidenceCount.hh          |   5 +-
 src/c++/lib/manta/SVLocusScanner.cpp               | 127 +++++--
 src/c++/lib/manta/SVLocusScanner.hh                |  10 +-
 src/c++/lib/manta/SVLocusScannerSemiAligned.cpp    |   3 +-
 src/c++/lib/manta/SVLocusScannerSemiAligned.hh     |   3 +-
 src/c++/lib/manta/SVModelScoreInfo.hh              |   3 +-
 src/c++/lib/manta/SVMultiJunctionCandidate.cpp     |   3 +-
 src/c++/lib/manta/SVMultiJunctionCandidate.hh      |   3 +-
 src/c++/lib/manta/SVMultiJunctionCandidateUtil.hh  |   3 +-
 src/c++/lib/manta/SVReferenceUtil.cpp              |   3 +-
 src/c++/lib/manta/SVReferenceUtil.hh               |   3 +-
 src/c++/lib/manta/SVScoreInfo.cpp                  |   3 +-
 src/c++/lib/manta/SVScoreInfo.hh                   |   3 +-
 src/c++/lib/manta/SVScoreInfoDiploid.cpp           |   9 +-
 src/c++/lib/manta/SVScoreInfoDiploid.hh            |  10 +-
 src/c++/lib/manta/SVScoreInfoSomatic.cpp           |   3 +-
 src/c++/lib/manta/SVScoreInfoSomatic.hh            |   3 +-
 src/c++/lib/manta/SVScoreInfoTumor.hh              |   3 +-
 src/c++/lib/manta/ShadowReadFinder.cpp             |   3 +-
 src/c++/lib/manta/ShadowReadFinder.hh              |   3 +-
 src/c++/lib/manta/test/CMakeLists.txt              |   2 +-
 .../manta/test/SVLocusScannerSemiAlignedTest.cpp   |   3 +-
 src/c++/lib/manta/test/SVLocusScannerTest.cpp      |   7 +-
 src/c++/lib/manta/test/test_main.cpp               |   3 +-
 src/c++/lib/options/AlignmentFileOptions.hh        |   3 +-
 src/c++/lib/options/AlignmentFileOptionsParser.cpp |   3 +-
 src/c++/lib/options/AlignmentFileOptionsParser.hh  |   3 +-
 src/c++/lib/options/CMakeLists.txt                 |   2 +-
 src/c++/lib/options/CallOptionsDiploid.cpp         |   3 +-
 src/c++/lib/options/CallOptionsDiploid.hh          |   3 +-
 src/c++/lib/options/CallOptionsShared.hh           |   3 +-
 src/c++/lib/options/CallOptionsSomatic.cpp         |   3 +-
 src/c++/lib/options/CallOptionsSomatic.hh          |   3 +-
 src/c++/lib/options/CallOptionsTumor.cpp           |   3 +-
 src/c++/lib/options/CallOptionsTumor.hh            |   3 +-
 src/c++/lib/options/IterativeAssemblerOptions.hh   |   3 +-
 src/c++/lib/options/ReadScannerOptions.hh          |   3 +-
 src/c++/lib/options/ReadScannerOptionsParser.cpp   |   3 +-
 src/c++/lib/options/ReadScannerOptionsParser.hh    |   3 +-
 src/c++/lib/options/SVLocusSetOptions.hh           |   3 +-
 src/c++/lib/options/SVLocusSetOptionsParser.cpp    |   3 +-
 src/c++/lib/options/SVLocusSetOptionsParser.hh     |   3 +-
 src/c++/lib/options/SVRefinerOptions.hh            |   3 +-
 src/c++/lib/options/SmallAssemblerOptions.hh       |   3 +-
 src/c++/lib/options/optionsUtil.cpp                |   3 +-
 src/c++/lib/options/optionsUtil.hh                 |   3 +-
 src/c++/lib/svgraph/CMakeLists.txt                 |   2 +-
 src/c++/lib/svgraph/EdgeInfo.cpp                   |   3 +-
 src/c++/lib/svgraph/EdgeInfo.hh                    |   3 +-
 src/c++/lib/svgraph/EdgeInfoUtil.cpp               |   3 +-
 src/c++/lib/svgraph/EdgeInfoUtil.hh                |   3 +-
 src/c++/lib/svgraph/GenomeInterval.cpp             |   3 +-
 src/c++/lib/svgraph/GenomeInterval.hh              |   3 +-
 src/c++/lib/svgraph/GenomeIntervalTracker.hh       |   3 +-
 src/c++/lib/svgraph/GenomeIntervalUtil.cpp         |   3 +-
 src/c++/lib/svgraph/GenomeIntervalUtil.hh          |   3 +-
 src/c++/lib/svgraph/SVLocus.cpp                    |   3 +-
 src/c++/lib/svgraph/SVLocus.hh                     |  32 +-
 src/c++/lib/svgraph/SVLocusNode.cpp                |   3 +-
 src/c++/lib/svgraph/SVLocusNode.hh                 |  83 +++--
 src/c++/lib/svgraph/SVLocusSampleCounts.cpp        |   3 +-
 src/c++/lib/svgraph/SVLocusSampleCounts.hh         |   3 +-
 src/c++/lib/svgraph/SVLocusSet.cpp                 |   3 +-
 src/c++/lib/svgraph/SVLocusSet.hh                  |  50 ++-
 src/c++/lib/svgraph/test/CMakeLists.txt            |   2 +-
 src/c++/lib/svgraph/test/GenomeIntervalTest.cpp    |   3 +-
 .../lib/svgraph/test/GenomeIntervalUtilTest.cpp    |   3 +-
 src/c++/lib/svgraph/test/SVLocusNodeTest.cpp       |   3 +-
 src/c++/lib/svgraph/test/SVLocusSerializeTest.cpp  |   3 +-
 src/c++/lib/svgraph/test/SVLocusSetPrivateTest.cpp |   3 +-
 .../lib/svgraph/test/SVLocusSetSerializeTest.cpp   |   3 +-
 src/c++/lib/svgraph/test/SVLocusSetTest.cpp        |   3 +-
 src/c++/lib/svgraph/test/SVLocusTest.cpp           |   3 +-
 src/c++/lib/svgraph/test/SVLocusTestUtil.hh        |   3 +-
 src/c++/lib/svgraph/test/test_main.cpp             |   3 +-
 src/cmake/boost.cmake                              |   2 +-
 src/cmake/bootstrap/common.bash                    |   2 +-
 src/cmake/bootstrap/installCmake.bash              |   2 +-
 src/cmake/buildTimeConfigure.cmake                 |   2 +-
 src/cmake/cxxCommon.cmake                          |   2 +-
 src/cmake/cxxConfigure.cmake                       |  51 ++-
 src/cmake/cxxExecutable.cmake                      |   2 +-
 src/cmake/cxxLibrary.cmake                         |   2 +-
 src/cmake/cxxTestLibrary.cmake                     |   2 +-
 src/cmake/getBuildTimeConfigInfo.cmake             |   2 +-
 src/cmake/globals.cmake                            |   2 +-
 src/cmake/macros.cmake                             |   2 +-
 src/cmake/postInstall/CMakeLists.txt               |   2 +-
 src/cmake/preInstall/CMakeLists.txt                |   2 +-
 .../checkTargetPathsWritable/CMakeLists.txt        |   2 +-
 .../checkTargetPathWritable.cmake                  |   2 +-
 .../preInstall/copyrightAndChanges/CMakeLists.txt  |   2 +-
 src/demo/CMakeLists.txt                            |   2 +-
 src/demo/data/CMakeLists.txt                       |   2 +-
 src/demo/runMantaWorkflowDemo.py                   |   2 +-
 src/python/CMakeLists.txt                          |   2 +-
 src/python/bin/CMakeLists.txt                      |   2 +-
 src/python/bin/configManta.py                      |   7 +-
 src/python/lib/CMakeLists.txt                      |   2 +-
 src/python/lib/checkChromSet.py                    |   4 +-
 src/python/lib/configBuildTimeInfo.py              |   2 +-
 src/python/lib/configureOptions.py                 |  17 +-
 src/python/lib/configureUtil.py                    |  20 +-
 src/python/lib/estimateHardware.py                 |   2 +-
 src/python/lib/makeRunScript.py                    |   2 +-
 src/python/lib/mantaOptions.py                     |   2 +-
 src/python/lib/mantaWorkflow.py                    |  28 +-
 src/python/lib/sharedWorkflow.py                   |   3 +-
 src/python/lib/workflowUtil.py                     |  42 ++-
 src/python/libexec/CMakeLists.txt                  |   2 +-
 src/python/libexec/cat.py                          |   2 +-
 src/python/libexec/denovo_scoring.py               |   2 +-
 src/python/libexec/extractSmallIndelCandidates.py  |   2 +-
 src/python/libexec/filterBam.py                    |   2 +-
 src/python/libexec/mergeBam.py                     |   2 +-
 src/python/libexec/mergeChromDepth.py              |   4 +-
 src/python/libexec/ploidyFilter.py                 |   2 +-
 src/python/libexec/sortBam.py                      |   2 +-
 src/python/libexec/sortEdgeLogs.py                 |   2 +-
 src/python/libexec/sortVcf.py                      |  10 +-
 src/python/libexec/vcfCmdlineSwapper.py            |   2 +-
 src/srcqc/check_for_nonascii_source.bash           |   2 +-
 src/srcqc/run_cppcheck.py                          |   2 +-
 536 files changed, 2075 insertions(+), 1471 deletions(-)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 8f407a1..c518e99 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -82,7 +82,7 @@ join(CMAKE_CONFIGURATION_TYPES ", " CMAKE_CONFIGURATION_TYPES_STRING)
 if (NOT CMAKE_BUILD_TYPE)
     set(DEFAULT_CMAKE_BUILD_TYPE Release)
     set(CMAKE_BUILD_TYPE ${DEFAULT_CMAKE_BUILD_TYPE} CACHE STRING
-        "Choose the type of build, options are: {${CMAKE_CONFIGURATION_TYPES_STRING}} (default: ${DEFAULT_CMAKE_BUILD_TYPE})")
+        "Choose the type of build, options are: {${CMAKE_CONFIGURATION_TYPES_STRING}} (default: ${DEFAULT_CMAKE_BUILD_TYPE})" FORCE)
 endif()
 
 # check that a valid build type has been selected:
diff --git a/COPYRIGHT.txt b/COPYRIGHT.txt
index b289f3c..9b31d0d 100644
--- a/COPYRIGHT.txt
+++ b/COPYRIGHT.txt
@@ -1,5 +1,5 @@
 Manta - Stuctural Variant and Indel Caller
-Copyright (c) 2013-2016 Illumina, Inc.
+Copyright (c) 2013-2017 Illumina, Inc.
 
 This program is free software: you can redistribute it and/or modify
 it under the terms of the GNU General Public License as published by
@@ -172,7 +172,7 @@ corresponding subdirectories.
 
 ******************************************************************
 
-pyFlow 1.1.12
+pyFlow 1.1.14
 
 pyFlow - a lightweight parallel task engine
 
diff --git a/ChangeLog.txt b/ChangeLog.txt
index 5ebcb81..742c5db 100644
--- a/ChangeLog.txt
+++ b/ChangeLog.txt
@@ -1,3 +1,22 @@
+v1.1.0
+- Manta-677 Stats generation
+-- Add a sampling buffer to skip regions with a large number of abnormal reads
+-- Add a compiler flag to output fragment-size cdf in stats summary
+- Sync shared library/build changes with strelka
+- Scratch: Merge src formatting changes from strelka
+- Docs: Update comments in automated TOC generation; Fix nonstandard markdown links
+- MANTA-583 Document multi-junction handling
+- MANTA-518 Add sample level check of genotyping for multi-junction events
+- MANTA-486/[#57] clarify rna mode configuration/improve errors
+- MANTA-436 Classify indels with unknown size insertions as insertions
+- MANTA-304 Merge RNAMaster branch
+-- RNA: Include some spliced reads in insert-size estimation
+-- RNA: Include split-reads as evidence for imprecise translocations
+-- RNA: Use proper-pair BAM flag for abnormal pair detection
+
+v1.0.3
+- MANTA-302 fix the bug of duplicate variant ID
+- MANTA-279 fix the bug of reporting variants beyond chromosome end position
 v1.0.2
 - SPW-316 update denovo scoring script to write valide vcf when the input vcf contains more than three samples
 - Remove old/unused reference utility functions
diff --git a/docs/developerGuide/README.md b/docs/developerGuide/README.md
index c710925..b3d741c 100644
--- a/docs/developerGuide/README.md
+++ b/docs/developerGuide/README.md
@@ -2,7 +2,9 @@ Manta Developer Guide
 =====================
 
 ## Table of Contents
-[] (BEGIN automated TOC section, any edits will be overwritten on next source refresh)
+
+[//]: # (BEGIN automated TOC section, any edits will be overwritten on next source refresh)
+
 * [Scope](#scope)
 * [Developer Build Notes](#developer-build-notes)
   * [Building from source repository vs. versioned code distribution:](#building-from-source-repository-vs-versioned-code-distribution)
@@ -22,7 +24,9 @@ Manta Developer Guide
     * [Logging](#logging)
   * [Unit tests](#unit-tests)
 * [Special Topic Guides](#special-topic-guides)
-[] (END automated TOC section, any edits will be overwritten on next source refresh)
+
+[//]: # (END automated TOC section, any edits will be overwritten on next source refresh)
+
 
 ## Scope
 
diff --git a/docs/developerGuide/alignment.md b/docs/developerGuide/alignment.md
index a983920..3e75281 100644
--- a/docs/developerGuide/alignment.md
+++ b/docs/developerGuide/alignment.md
@@ -3,11 +3,15 @@
 [Developer Guide Home](README.md)
 
 ## Table of Contents
-[] (BEGIN automated TOC section, any edits will be overwritten on next source refresh)
+
+[//]: # (BEGIN automated TOC section, any edits will be overwritten on next source refresh)
+
 * [Introduction](#introduction)
 * [Debugging](#debugging)
 * [Running single alignment unit tests](#running-single-alignment-unit-tests)
-[] (END automated TOC section, any edits will be overwritten on next source refresh)
+
+[//]: # (END automated TOC section, any edits will be overwritten on next source refresh)
+
 
 ## Introduction
 
diff --git a/docs/developerGuide/breakendGraph.md b/docs/developerGuide/breakendGraph.md
index f34bbd2..b23f812 100644
--- a/docs/developerGuide/breakendGraph.md
+++ b/docs/developerGuide/breakendGraph.md
@@ -3,10 +3,14 @@
 [Developer Guide Home](README.md)
 
 ## Table of Contents
-[] (BEGIN automated TOC section, any edits will be overwritten on next source refresh)
+
+[//]: # (BEGIN automated TOC section, any edits will be overwritten on next source refresh)
+
 * [Summary](#summary)
 * [Querying the graph](#querying-the-graph)
-[] (END automated TOC section, any edits will be overwritten on next source refresh)
+
+[//]: # (END automated TOC section, any edits will be overwritten on next source refresh)
+
 
 ## Summary
 
diff --git a/docs/developerGuide/debugFullRun.md b/docs/developerGuide/debugFullRun.md
index 2330cc7..0e64c74 100644
--- a/docs/developerGuide/debugFullRun.md
+++ b/docs/developerGuide/debugFullRun.md
@@ -3,12 +3,16 @@
 [Developer Guide Home](README.md)
 
 ## Table of Contents
-[] (BEGIN automated TOC section, any edits will be overwritten on next source refresh)
+
+[//]: # (BEGIN automated TOC section, any edits will be overwritten on next source refresh)
+
 * [Summary](#summary)
 * [Rerun SVCandidateGeneration without recreating the SVLocus graph](#rerun-svcandidategeneration-without-recreating-the-svlocus-graph)
 * [Comparing VCF output between runs](#comparing-vcf-output-between-runs)
 * [Options to accelerate a small test case](#options-to-accelerate-a-small-test-case)
-[] (END automated TOC section, any edits will be overwritten on next source refresh)
+
+[//]: # (END automated TOC section, any edits will be overwritten on next source refresh)
+
 
 ## Summary
 
diff --git a/docs/developerGuide/debugSingleSV.md b/docs/developerGuide/debugSingleSV.md
index f0d4a3a..1b6ec5f 100644
--- a/docs/developerGuide/debugSingleSV.md
+++ b/docs/developerGuide/debugSingleSV.md
@@ -3,7 +3,9 @@
 [Developer Guide Home](README.md)
 
 ## Table of Contents
-[] (BEGIN automated TOC section, any edits will be overwritten on next source refresh)
+
+[//]: # (BEGIN automated TOC section, any edits will be overwritten on next source refresh)
+
 * [Summary](#summary)
 * [Scenario 0: Debug SV call in both graph creation and SV candidate generation steps](#scenario-0-debug-sv-call-in-both-graph-creation-and-sv-candidate-generation-steps)
 * [Scenario 1 : Debug gold-standard SV call which is already covered by an edge in the SVLocus graph](#scenario-1--debug-gold-standard-sv-call-which-is-already-covered-by-an-edge-in-the-svlocus-graph)
@@ -13,7 +15,9 @@
     * [S1 - Step 1C : Query Locus in the SV Locus graph](#s1---step-1c--query-locus-in-the-sv-locus-graph)
     * [S1 - Step 2 : Run candidate generation on specific SV locus or specific SV locus edge](#s1---step-2--run-candidate-generation-on-specific-sv-locus-or-specific-sv-locus-edge)
 * [Debugging Infrastructure TODO](#debugging-infrastructure-todo)
-[] (END automated TOC section, any edits will be overwritten on next source refresh)
+
+[//]: # (END automated TOC section, any edits will be overwritten on next source refresh)
+
 
 ## Summary
 
diff --git a/docs/developerGuide/testAssembler.md b/docs/developerGuide/testAssembler.md
index e993f0a..8444ff3 100644
--- a/docs/developerGuide/testAssembler.md
+++ b/docs/developerGuide/testAssembler.md
@@ -3,10 +3,14 @@
 [Developer Guide Home](README.md)
 
 ## Table of Contents
-[] (BEGIN automated TOC section, any edits will be overwritten on next source refresh)
+
+[//]: # (BEGIN automated TOC section, any edits will be overwritten on next source refresh)
+
 * [Introduction](#introduction)
 * [Operation](#operation)
-[] (END automated TOC section, any edits will be overwritten on next source refresh)
+
+[//]: # (END automated TOC section, any edits will be overwritten on next source refresh)
+
 
 ## Introduction
 
diff --git a/docs/methods/primary/methods.tex b/docs/methods/primary/methods.tex
index a6d2e0f..24b01f2 100644
--- a/docs/methods/primary/methods.tex
+++ b/docs/methods/primary/methods.tex
@@ -28,13 +28,11 @@
 
 \tableofcontents
 
-\section{Overview}
+\section{Purpose}
 
 On any release branch, the methods described here should reflect the default implementation in the source repository containing this document.
 
-\section{Methods}
-
-\subsection{Manta Workflow Overview}
+\section{Manta Workflow Overview}
 
 Manta's structural variant calling workflow contains two major phases. In the first phase, the genome is scanned to build a genome-wide breakend graph. In the second phase, edges of this graph are analyzed to generate SV candidates, each of which is assembled, scored according to diploid or somatic quality models and reported. A high-level schematic of the workflow is described in Figure \ref{fig:workflow} below.
 
@@ -54,13 +52,13 @@ Phase two of Manta's workflow occurs after the complete breakend graph is create
 
 Manta's two phase structure enables a high level of parallelization. In the first phase a set of independent tasks generate subsets of the breakend graph corresponding to small segments of the genome (Manta's default segment size is 12 Megabases). At the end of this phase there is a final step to merge all genome segment graphs into a single graph for the whole genome. In the next phase the genome breakend graph edges are divided among a set of independent SV discovery processes. The out [...]
 
-\subsection{Fragment size and depth statistics}
+\section{Fragment size and depth statistics}
 
-Before entering the first major phase of the workflow, Manta completes a rapid estimation of fragment size and read depth information. During this step the sequence fragment size distribution is estimated for each BAM file provided as input. To accomplish this efficiently, the size distribution is sampled until convergence, so that only a small subset of the input sequence alignments for each sample need to be scanned. To reduce regional bias, this step cycles through several small secti [...]
+Before entering the first major phase of the workflow, Manta completes a rapid estimation of fragment size and read depth information. During this step the sequence fragment size distribution is estimated for each BAM file provided as input. To accomplish this efficiently, the size distribution is sampled so that only a small subset of the input sequence alignments for each sample need to be scanned. To reduce regional bias, this step cycles through several small sections from different  [...]
 
 A related prerequisite step Manta performs is estimation of the sequencing depth for each chromosome. For somatic analysis this depth is only computed for the normal sample. This information is used downstream to filter out high-depth regions (details below) when Manta is run in its default whole genome sequencing mode, these values can be ignored for exome or other targeted analyses.
 
-\subsubsection{Chromosome depth estimation}
+\subsection{Chromosome depth estimation}
 
 For each chromosome, depth is estimated using a modified median calculation. As a first step, each chromosome is partitioned into segments of similar size to ensure the estimation process samples several chromosome regions. The chromosome is divided into the smallest number of segments no larger than $S_{max}$, where all segments have nearly equal size (all sizes must be $S$ or $S+1$, given smallest segment size of $S$). If this procedure results in more than 20 segments than $S_max$ is  [...]
 
@@ -72,26 +70,28 @@ Depth is estimated from the resulting pileup, using a simple median over all dep
 
 The depth estimation procedure is run separately for each non-tumor sample, and all high-depth thresholds are set based on the sum of depth estimates over these samples.
 
-\subsection{Manta Workflow Phase One: Breakend graph construction}
+\section{Manta Workflow Phase One: Breakend graph construction}
 
-\subsubsection{Breakend graph structure}
+\subsection{Breakend graph structure}
 
 The breakend graph $G$ describes regions of the genome which are connected by one or more possible breakend junctions. The graph, $G = (V, E)$, comprises a set of nodes $V$ and a set of directed edges $E$. Each node $v \in V$ is annotated with a contiguous genome segment containing one or more breakends. Each edge $e \in E$ connects nodes where evidence of a breakend junction exists. Edge direction is set from the node where a direct read mapping observation is observed to the node where [...]
 
 This graph is designed to contain only the information required to partition the SV discovery problem into a set of independent SV discovery processes in the second workflow phase. It does not provide sufficient detail to support candidate discovery on its own. According to this design the breakend graph for full human genomes can be represented in a small memory footprint. In practice, a case has yet to be found where the graph (and its indexing structures) require greater than 2Gb, inc [...]
 
-\subsubsection{Genome segment distribution}
+\subsection{Genome segment distribution}
 
 The breakend graph is constructed by first computing subgraphs corresponding to individual segments of the genome. Graph construction is run in parallel over a set of disjoint segments covering the entire genome, followed by a graph merging step. Given a maximum segment size (default is 12 Mb), each chromosome is partitioned into a set of nearly equal size segments without exceeding the maximum segment size, and one subgraph construction process is started for each.
 
-\subsubsection{Genome segment breakend graph construction}
+\subsection{Genome segment breakend graph construction}
 
 For each genome segment, input BAM file(s) are scanned over the corresponding genome region for breakend associated reads, which are merged into the segment's breakend graph. To do so, each mapped read in the genome segment must first pass through a filtration process to eliminate noise. Any remaining reads are then translated into a set of small breakend graphs (currently each of these graphs is a single edge connecting either one or two nodes). These graphs are merged into the segment' [...]
 
-\paragraph{Filtration}
+\subsubsection{Filtration}
 For graph construction, reads are removed if they are marked as secondary, filtered or PCR duplicates. Reads also must be mapped and have a mapping quality of 15 or greater. A read pair is determined to be anomalous if it has (1) unexpected read orientation, (2) a mate mapping to another chromosome, or (3) an unexpectedly large fragment size. For the fragment size to be considered anomalous at the initial filtration stage, it must be greater than $1.5s_{max}$, where $s_{max}$ is the 99th [...]
 
-\paragraph{Read pair translation to breakend graph set}
+\subsubsection{Read pair translation to breakend graph set}
+\label{sec:pair2graph}
+
 Each unfiltered read pair is translated into a set of breakend graphs via a two step process. The read pair is first translated to a set of SV candidates. The translation process allows for the possibility that the BAM record for only one read of the pair is available, in which case the length and alignment of the remote mate read is approximated. The logic to translate read pairs to SV candidates is the same as that used in SV hypothesis generation during Manta's second phase.
 
 The translation of each read (or read pair) into a set of SV candidates proceeds as follows:
@@ -122,7 +122,7 @@ Complex region candidates indicate that there is evidence for small indels or SV
 
 These SV candidates are translated into breakend graph elements by converting SV breakend regions into graph nodes spanning the same region and representing the connection between regions as a directed edge from the region of direct evidence (the locally observed read of a pair), to the region of indirect evidence (the remote read of a pair). Complex region candidates are translated into a single graph node spanning the candidate region with a self-edge added to indicate that there is ev [...]
 
-\paragraph{Merge and de-noising procedure}
+\subsubsection{Merge and de-noising procedure}
 
 In the procedure above, each SV-associated read or read pair is translated into one or more single-edge breakend graphs. Each one of the these single-edge breakend graphs is then sequentially merged into the breakend graph for the entire genomic segment. Merging is performed using a procedure which is general to any two breakend graphs. The high-level steps to this procedure are (1) take the union of the two input graphs, (2) find nodes from the graph union which qualify for merging, and [...]
 
@@ -269,15 +269,15 @@ The breakend graph merge procedure can be limited under conditions of high graph
 
 As the target genome segment is scanned, the region breakend graph is periodically de-noised. The procedure is only performed for edges where the input alignment files have been scanned over the genomic regions of the nodes incident on the edge (excluding small buffer zones at the edges of the scanned genome segments). For any edge $e = (v,w)$ which is eligible for de-noising, if both evidence[$(v,w)$] and evidence[$(w,v)$] are less than $e_s$, the edge is removed from the graph, togethe [...]
 
-\subsubsection{Global breakend graph construction}
+\subsection{Global breakend graph construction}
 
 Using the graph merging and de-noising procedures described in the previous section, it is straightforward to create the global breakend graph from the set of genome segment graphs. To do so the genome segment breakend graphs are sequentially merged into the global breakend graph using the breakend graph merge procedure described in the previous section. This merging step is followed by a final de-noising step which is the same as that described for genome segments above, except that all [...]
 
-\subsection{Manta Workflow Phase Two: Hypothesis generation and scoring}
+\section{Manta Workflow Phase Two: Hypothesis generation and scoring}
 
 After construction of the global breakend graph, each set of independent breakend-associations is distributed among a group of SV discovery workers running in parallel. Each worker handles SV hypothesis generation, scoring and reporting for its input breakend associations. At present an independent breakend association is approximated as a single breakend graph edge, however Manta's design enables larger highly-connected subgraphs to be distributed to SV discovery workers in the future t [...]
 
-\subsubsection{SV hypothesis generation}
+\subsection{SV hypothesis generation}
 
 Hypothesis generation currently proceeds from a single breakend graph edge. The noise filtration criteria for hypothesis generation are more strict than that used in the graph de-noising step, so that any edge $e = (v,w)$ where either evidence[$(v,w)$] or evidence[$(w,v)$] is less than $e_s$ is filtered.
 
@@ -285,13 +285,52 @@ For any non-filtered edge, the first step of hypothesis generation is to find al
 
 After gathering SV-associated reads from the targeted regions, each read or read pair is translated into a set of SV candidates using the same logic described for graph construction above. Any SV candidate which does not intersect the targeted graph edge is discarded. Intersecting the graph edge is defined as having one breakend intersect each of the two genomic regions connected by the edge. The SV candidates remaining after this filtration process are merged into a combined SV candidat [...]
 
-\subsubsection{SV hypothesis refinement}
+\subsubsection{Building multi-junction SV candidates}
+
+Standard SV candidates (ie. non-complex candidates) represent a single novel junction between two genomic regions. At a larger scale, it is helpful to group together multiple junctions which have proximal in-phase breakends, with these grouped junctions being reported and/or scored as a single event. An example of such an event is a reciprocal translocation, which is composed of two junctions.
+
+Manta has limited support for multi-junction event detection and scoring. This process begins after the initial SV hypothesis generation step by grouping junctions into candidate multi-junction events. This process currently only considers standard (non-complex) SV candidates. Non-inversion intrachromosomal events of size 100000 or less are also excluded from multi-junction event detection to reduce spurious associations. Given this filtered set of input SV candidates, the method searche [...]
+(2) have breakends with genomic regions centered within 1000 bases of each other at both junction ends (3) must have been discovered from the analysis of the same breakend graph edge. If more than one partner junction is eligible for grouping with a given junction, the pair with the lowest breakend region distance is selected -- such that only 2 junctions can be grouped together.
+
+The multi-junction candidate search is currently limited to grouping together no more than 2 junctions for simplicity, in principle the method could be expanded to look for transitive associations over a larger set of junctions. To do this, constraint (3) above would need to be relaxed by ensuring that all edges possibly participating in the multi-junction event are analyzed by the same process (at present edges are distributed to independent processes for analysis).
+
+\subsubsection{Early SV candidate filtration}
+
+Before proceeding to downstream refinement steps, filters are applied to the standard and complex SV candidates. Standard SV filters are as follows:
+
+\begin{enumerate}
+    \item Standard SV candidates are filtered out if they are supported only by \textit{semi-mapped} anomalous read pairs. A \textit{semi-mapped} read pair refers to pairs where one read has a mapping quality of zero.
+    \item Standard SV candidates are filtered out if they have fewer than 3 supporting spanning observations. A multi-junction SV candidate will fail this filter only if all individual junctions fail the filter.
+    \item Standard SV candidates are filtered if the frequency of spanning read evidence is insufficient to reject (at $\alpha = 0.05$) a null model based on the \textit{spanning evidence noise rate} according to a one-sided binomial exact test. The estimation of \textit{spanning evidence noise rate} is described below. This test result is ignored if an SV candidate is grouped into a multi-junction event. This filter is skipped for RNA-Seq analysis. Note that this filter is intended to c [...]
+\end{enumerate}
+
+Filters for complex SVs are:
+
+\begin{enumerate}
+    \item Complex SV candidates are filtered out if they have fewer than 2 supporting observations of the same type associated with evidence of an indel (e.g. soft-clipping, etc).
+    \item Complex SV candidates are filtered if the frequency of assembly evidence is insufficient to reject (at $\alpha = 0.005$) a null model based on the \textit{assembly evidence noise rate} according to a one-sided binomial exact test. The definition of assembly evidence and estimation procedure for \textit{assembly evidence noise rate} are described below.
+\end{enumerate}
+
+\paragraph{Noise Rates estimated from input read alignments}
+
+The \textit{spanning evidence noise rate} and \textit{assembly evidence noise rate} used in the above filtration process are based on read counts accumulated during the first phase of Manta's workflow.
+
+The \textit{spanning evidence noise rate} is based on the number of spanning (anomalous read pairs and split reads)  observations $s$ vs all reads observed $n$. Including pseudocounts, the estimate for this rate is $(s + 10) / (n + 1000)$.
+
+\textit{Assembly evidence} observations are reads with poorly aligned edges (either soft-clipped or having a high mismatch density) as described above in section ``\nameref{sec:pair2graph}''. The \textit{assembly evidence noise rate} is based on the count of assembly evidence, $p$ vs all reads observed $n$. Including pseudocounts, the estimate for this rate is $(p + 10) / (n + 1000)$.
+
+Given multiple alignment files, the above noise rates will be estimated independently for each alignment file, but only the maximum estimated noise rate will be kept for the purpose of SV candidate significance testing.
+
+
+
+\subsection{SV hypothesis refinement}
 
 Initial SV hypothesis generation translates each graph edge into a set of low-resolution SV candidates, where breakends are associated with an imprecise region. In the refinement step, each low-resolution SV candidate is translated into a set of basepair-resolution SV candidates via local read assembly. If the assembly procedure fails to produce at least one basepair-resolution candidate, then the low-resolution candidate can still be scored and reported in the variant caller output as a [...]
 
 Hypothesis refinement is described below in two alternate forms: standard SV assembly describes the case of two remote breakend regions associated with a specific SV candidate; complex region assembly describes the case of a single breakend region where small indels or SVs are likely to exist, but no specific variant hypothesis exists.
 
-\paragraph{Contig assembly}
+
+\subsubsection{Contig assembly}
 
 The contig assembly procedure gathers SV-associated reads from the candidate region or regions and assembles these reads into contigs intended to represent variant haplotypes.
 
@@ -303,7 +342,7 @@ The selected reads are assembled using a simple algorithm implicitly based on th
 
 For a given word size $k$, a list is made of all $k$-mers present in the input reads. The most frequent $k$-mer is chosen as a seed for the resulting contig assembly if it is observed in at least 3 reads. The contig is extended from this seed in each direction by choosing $k$-mers from this list having a $k-1$ overlap with the contig end. To avoid haplotype switching, reads that support the contig are tracked at each extension point. When there are multiple potential extensions, a $k$-me [...]
 
-\paragraph{Contig alignment for large SVs} For large SV candidates spanning two distinct regions of the genome, the reference sequences are extracted from the two expected breakend regions, and the order and/or orientation of the references is adjusted such that if the candidate SV exists, the left-most segment of the SV contig should align to the first transformed reference region and the right-most contig segment should align to the second reference region. The contig is aligned across [...]
+\subsubsection{Contig alignment for large SVs} For large SV candidates spanning two distinct regions of the genome, the reference sequences are extracted from the two expected breakend regions, and the order and/or orientation of the references is adjusted such that if the candidate SV exists, the left-most segment of the SV contig should align to the first transformed reference region and the right-most contig segment should align to the second reference region. The contig is aligned ac [...]
 
 \begin{figure}[!tpb]
 \centerline{
@@ -318,29 +357,43 @@ For a given word size $k$, a list is made of all $k$-mers present in the input r
 The alignment scores used for each reference segment are (2,-8,-12,-1) for match, mismatch, gap open and gap extend. Switching between insertion and deletion states is allowed at no cost. Scores to transition into and extend the 'jump' state are -24 and 0, respectively. The jump state is entered from any point in reference segment 1 and exits to any point in reference segment 2. The alignments resulting from this method are only used when a transition through the jump state occurs. In ad [...]
 
 
-\paragraph{Contig alignment for complex region candidates}
+\subsubsection{Contig alignment for complex region candidates}
 Complex regions are segments of the genome targeted for assembly without a specific variant hypothesis. For this reason the problem of aligning contigs for these regions is somewhat more difficult than for specific large SV candidates, because a wide range of variant sizes are possible. This is reflected in the alignment procedure for complex region contigs, which are checked against two aligners optimized for large and small indels respectively.
 
 A contig is first aligned with the large indel aligner and only checked for small indels if no large indels are found. The structure of the large indel aligner is a variant on a standard affine-gap scheme, in which a second pair of delete and insert states are added for large indels. Alignment scores for standard alignment states are (2, -8, -18, -1) for match, mismatch, gap open, and gap extend. Open and extend scores for 'large' gaps are -24 and 0. Transitions are allowed between stand [...]
 
 If the large indel aligner fails to identify a candidate meeting the size and quality criteria above, the contig is used to search for smaller indels, this time using a conventional affine gap aligner with parameters: (2,-8,-12,0) for match, mismatch, gap open, gap extend. All indels larger than the minimum indel size are identified. For each indel, the flanking contig alignment quality and uniqueness checks described above are applied to filter likely false positives, and any remaining  [...]
 
-\paragraph{Large Insertions}
+\subsubsection{Large Insertions}
 
 Fully assembled large insertions will be detected by the standard contig assembly and alignment pipeline described above. Additional logic is added to detect and report the signature of a large insertion represented by two contig alignments which are consistent with left and right breakends of a large insertion. Under this scheme, all contig alignments are checked for the a signature of a high quality alignment for only a left or right subsegment of the contig. If two contigs form a left [...]
 
-\paragraph{Post-alignment}
+\subsubsection{Post-alignment}
 Following alignment of either complex region or standard SV candidates, the homology length and inserted sequence at the breakend junction are extracted from the alignment so that these can be included in the candidate scoring and reporting stages.
 
-The total set of refined candidates (or imprecise candidates in the case of assembly failure) are reported to a `candidate' VCF file. This file does not include scoring or quality filtration information but provides partial support for applications which are not represented by Manta's current scoring models (i.e. tumor without matched normal), as a method development aid, or as input to a small variant caller or another SV scoring/genotyping method. As an example of the latter case. in t [...]
+\paragraph{Late SV candidate filtration}
+
+Candidates are filtered following SV hypothesis refinement as follows:
+
+\begin{enumerate}
+    \item Standard SV candidates are filtered out if they have fewer than 3 supporting spanning observations. A multi-junction SV candidate will fail this filter only if all individual junctions fail the filter.
+    \item Standard SV candidates (either successfully assembled or imprecise) are filtered if they have fewer than 2 supporting spanning observations. Multi-junction status has no effect on this filtration step, each component junction will be tested and filtered indepedently.
+    \item Any complex SV candidates which failed to assembled are filtered
+    \item SV candidate is below the minimum candidate SV size (8 by default) are filtered
+\end{enumerate}
 
-\subsubsection{Scoring}
+\paragraph{Candidate output}
 
-Following initial SV hypothesis generation and refinement via assembly, all candidate variants are scored. In this phase, multiple scoring models can be applied to the candidate variants. Manta currently applies a diploid scoring model for individual and control samples, as well as a somatic scoring model when a tumor and matched normal sample pair are given.
+Following the late filtration steps, the total set of refined candidates (or imprecise candidates in the case of assembly failure) are reported to a `candidate' VCF file. This file does not include scoring or quality filtration information but provides partial support for applications which are not represented by Manta's current scoring models (i.e. tumor without matched normal), as a method development aid, or as input to a small variant caller or another SV scoring/genotyping method. A [...]
 
-\paragraph{Diploid scoring model}
 
-The diploid scoring model produces diploid genotype probabilities for each candidate structural variant. Candidates are approximated as independent for scoring purposes, therefore we apply a simple model with a single alternate allele, that is, for reference and alternate alleles $A = \{r,x\}$ the genotype states at each allele are restricted to $G = \{rr, rx, xx\}$. We solve for the posterior probability over G using
+\subsection{Scoring}
+
+Following initial SV hypothesis generation, refinement via assembly, and filtration, all candidate variants are scored. In this phase, multiple scoring models can be applied to the candidate variants. Manta currently applies a diploid scoring model for one or more diploid samples (treated as unrelated), as well as a somatic scoring model when a tumor and matched normal sample pair are given.
+
+\subsubsection{Diploid scoring model}
+
+The diploid scoring model produces diploid genotype probabilities for each candidate structural variant. Most candidates are approximated as independent for scoring purposes, therefore we apply a simple model with a single alternate allele, that is, for reference and alternate alleles $A = \{r,x\}$ the genotype states at each allele are restricted to $G = \{rr, rx, xx\}$. We solve for the posterior probability over G using
 
 \begin{equation*}
 P( G \vert D ) \propto P( D \vert G )  P (G)
@@ -380,8 +433,29 @@ P(d \vert G) = \sum_{a \in A} P(d \vert a) P(a|G)
 
 This likelihood for each fragment to support a given allele $P(d \vert a)$ is common to both diploid and somatic scoring models, and is detailed below.
 
+\paragraph{Multi-junction scoring}
+
+For multi-junction variants, an alternate scoring procedure is applied, wherein the genotype likelihood represents the joint likelihood over all junctions in the multi-junction event, assuming that all junctions in the event must have the same genotype. Thus the genotype likelihood of the set of junctions $J$ is:
+
+\begin{equation*}
+P(D_{J} \vert G) = \prod_{j \in J} P(D_{j} \vert G)
+\end{equation*}
+
+The multi-junction likelihood is evaluated to see if it provides a better fit to the data. If either of the conditions hold, the event scoring and reporting is reverted to the independent junction format (1) if the number of variant filters applied to the multi-junction record is higher than what would have been applied to any of the single junctions (2) if the probability of any variant genotype is lower for the multi-junction record than it would have been for any of the single junctions.
+
+In the case of multiple samples, the event is then further evaluated for each individual sample after the multi-junction likelihood calculation. For each sample, the assumption that every junction shares the same genotype is evaluated. The check is failed if the individual junctions should be potentially assigned different genotypes.
+\begin{enumerate}
+    \item A sample fails the check if the joint genotype is hom-ref.
+    \item A sample fails the check if both of the creteria are met:
+    \begin{enumerate}
+        \item The joint event changes the genotype of the junction and increases the posterior prob of the new genotype by more than 0.9.
+        \item The posterior prob of the old genotype is larger than 0.9 when the junction is genotyped individually.
+    \end{enumerate}
+\end{enumerate}
+
+A multi-junction event is reported only if at least one sample passes the check. For the samples that pass the check, the sample-level scoring remains the same as the multi-junction event; for the samples that fail the check, the sample-level scoring is reverted to that of individual junctions.
 
-\paragraph{Somatic scoring model}
+\subsubsection{Somatic scoring model}
 
 The somatic scoring model expresses the probability that the candidate variant is somatic, i.e exists in the tumor but not in a matched normal or other type of control. The scoring model used in Manta is a simplification of the same model used in the Strelka small variant caller \cite{strelka2012}. In this simplified form a 'somatic genotype' state space is defined consisting of non-somatic germline variant states $\{rr, rx, xx\}$, a noise state $n$ representing spurious observations at  [...]
 
@@ -439,11 +513,20 @@ P(d \vert S) = \sum_{a \in A} P(d \vert a) P(a | S)
 \noindent
 where $P(a|S)$ is derived from the expected tumor and normal allele frequencies as discussed above. The likelihood for each fragment to support a given allele $P(d \vert a)$ is shared with the germline model and detailed further below.
 
+\paragraph{Multi-junction scoring}
+
+For multi-junction variants, an alternate scoring procedure is applied, wherein the somatic likelihood represents the joint likelihood over all junctions in the multi-junction event, assuming that all junctions in the event must have the same somatic variant status. Thus the likelihood of the set of junctions $J$ is thus:
+
+\begin{equation*}
+P(D_{J} \vert S) = \prod_{j \in J} P(D_{j} \vert S)
+\end{equation*}
+
+
 \paragraph{Somatic calling tiers}
 
 An additional feature of the somatic scoring model is that it uses two calling tiers to reduce false positives. Tier 1 uses relatively stringent noise filtration parameters, while the Tier 2 is more permissive. All calls are initially made using Tier 1 settings, after which the variant is called again using Tier 2. Manta reports the minimum of the two somatic call qualities $Q = \min(Q_{\text{Tier 1}},Q_{\text{Tier 2}})$ as the final somatic quality score. The parameters used for each ti [...]
 
-\paragraph{Allele likelihood computation}
+\subsubsection{Allele likelihood computation}
 
 For any read fragment $d$ which interacts with one of the variant allele breakends, the likelihood $P(d \vert a)$ is found for the reference and alternate allele $a$. As described above, these values are shared by diploid and somatic quality scoring schemes for each variant. The read fragment likelihood combines both paired-read and split-read evidence, approximating their contributions as independent:
 
@@ -490,7 +573,11 @@ P ( r \vert a) = P ( r \vert a,m ) (P(m \vert a))  + P (\neg m \vert \neg a)
 
 In theory, the mapping qualities for each read should be used to set the spurious mapping values, however in Manta's current implementation constant values are used to approximate read mapping errors.  In all models the reference allele erroneous mapping probability is $P(\neg m \vert r) =  1\e{-6}$. In the diploid model the alternate allele erroneous mapping probability is $P(\neg m \vert x) =  1\e{-4}$. In the somatic model this value is the same except for the Tier 2 evaluation, in wh [...]
 
-\paragraph{Variant Filters}
+
+
+
+
+\subsection{Variant Filters}
 
 Filters are applied in a final step to improve precision of the scored output. These filters include the minimum quality scores appropriate for each scoring model and additional terms which correlate with error modes not represented in the scoring models.
 
diff --git a/docs/userGuide/README.md b/docs/userGuide/README.md
index 1f47865..81271a2 100644
--- a/docs/userGuide/README.md
+++ b/docs/userGuide/README.md
@@ -2,7 +2,9 @@ Manta User Guide
 ================
 
 ## Table of Contents
-[] (BEGIN automated TOC section, any edits will be overwritten on next source refresh)
+
+[//]: # (BEGIN automated TOC section, any edits will be overwritten on next source refresh)
+
 * [Introduction](#introduction)
 * [Installation](#installation)
 * [Method Overview](#method-overview)
@@ -35,7 +37,9 @@ Manta User Guide
   * [High sensitivity calling](#high-sensitivity-calling)
   * [De novo calling](#de-novo-calling)
   * [Generating evidence bams](#generating-evidence-bams)
-[] (END automated TOC section, any edits will be overwritten on next source refresh)
+
+[//]: # (END automated TOC section, any edits will be overwritten on next source refresh)
+
 
 ## Introduction
 
@@ -419,11 +423,11 @@ Additional secondary output is provided in `${MANTA_ANALYSIS_PATH}/results/stats
 ## Runtime hardware requirements
 
 Manta workflows are parallelized at the process level using the
-[pyFlow] [pyflow_site] task manager. pyFlow can distrubute Manta
+[pyFlow][pyflow_site] task manager. pyFlow can distrubute Manta
 workflows to a specified number of cores on a single host or
 SGE-managed cluster.
 
-As a useful runtime benchmark, [Platinum Genomes] [PG] sequencing
+As a useful runtime benchmark, [Platinum Genomes][PG] sequencing
 reads for NA12878 at 50x coverage (whole genome) can be analyzed in
 less than 20 minutes on 20 physical cores using a dual Xeon E5-2680
 v2 server with the BAM accessed from a conventional local
@@ -612,12 +616,15 @@ Supplying the '--rna' flag at configuration time will provide
 experimental settings for RNA-Seq Fusion calling. At present this flag
 disables all high depth filters which are designed to exclude
 pericentromeric reference compressions in the WGS case but cannot be
-applied correctly to RNA-Seq analysis.  In addition many custom RNA
+applied correctly to RNA-Seq analysis. In addition many custom RNA
 read processing and alignment steps are invoked. This mode is designed
 to function as part of larger workflow with additional steps to reduce
 overall false positive rate which take place downstream from Manta's
 fusion calling step.
 
+When RNA mode is turned on, exactly one sample must be specified as normal
+input only (using either the `--bam` or `--normalBam` option).
+
 It may also be helpful to consider the high sensitivity calling
 documentation below for this mode.
 
diff --git a/docs/userGuide/installation.md b/docs/userGuide/installation.md
index 6df670a..573de3a 100644
--- a/docs/userGuide/installation.md
+++ b/docs/userGuide/installation.md
@@ -4,7 +4,9 @@ Manta User Guide - Installation
 [User Guide Home](README.md)
 
 ## Table of Contents
-[] (BEGIN automated TOC section, any edits will be overwritten on next source refresh)
+
+[//]: # (BEGIN automated TOC section, any edits will be overwritten on next source refresh)
+
 * [Prerequisites to build from source](#prerequisites-to-build-from-source)
 * [Runtime prerequisites](#runtime-prerequisites)
 * [Operating System Guidelines](#operating-system-guidelines)
@@ -19,18 +21,20 @@ Manta User Guide - Installation
 * [Build procedure](#build-procedure)
     * [Workflow relocation](#workflow-relocation)
 * [Demo](#demo)
-[] (END automated TOC section, any edits will be overwritten on next source refresh)
+
+[//]: # (END automated TOC section, any edits will be overwritten on next source refresh)
+
 
 It is recommended to start from one of the [binary distributions on
-the Manta releases page] [releases] if a suitable version is available
+the Manta releases page][releases] if a suitable version is available
 (note that the CentOS 5 binary distribution is expected to support a
 large variety of linux systems).  If building from source start from
 the release distributions of the source code, also provided on the
-[Manta releases page] [releases]. Cloning/archiving the source
+[Manta releases page][releases]. Cloning/archiving the source
 directly from git could result in missing version number entries,
 undesirably stringent build requirements or an unstable development
 version between releases. Additional build notes for Manta developers can
-be found in the [manta developer guide] [developerGuide].
+be found in the [manta developer guide][developerGuide].
 
 [releases]:https://github.com/Illumina/manta/releases
 [DeveloperGuide]:../developerGuide/README.md
@@ -38,7 +42,7 @@ be found in the [manta developer guide] [developerGuide].
 
 ### Prerequisites to build from source
 
-[![Build Status] [tcistatus]] [tcihome]
+[![Build Status][tcistatus]][tcihome]
 
 [tcistatus]:https://travis-ci.org/Illumina/manta.svg?branch=master
 [tcihome]:https://travis-ci.org/Illumina/manta
@@ -71,7 +75,7 @@ are not tested for this platform.
 ##### Windows
 
 Manta does not build or run on windows. Library-level compilation is
-possible for Visual Studio users. See the the [manta developer guide] [DeveloperGuide] for details.
+possible for Visual Studio users. See the the [manta developer guide][DeveloperGuide] for details.
 
 ### Linux Package Additions
 
diff --git a/redist/CMakeLists.txt b/redist/CMakeLists.txt
index c29d778..8eef02c 100644
--- a/redist/CMakeLists.txt
+++ b/redist/CMakeLists.txt
@@ -183,7 +183,7 @@ endif ()
 # pyflow
 #
 
-set(PYFLOW_PREFIX "pyflow-1.1.12")
+set(PYFLOW_PREFIX "pyflow-1.1.14")
 set(PYFLOW_DIR "${CMAKE_CURRENT_BINARY_DIR}/${PYFLOW_PREFIX}")
 set(PYFLOW_SCRIPT "${PYFLOW_DIR}/src/pyflow.py")
 
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index ce7ccf9..f5f57d0 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -1,6 +1,6 @@
 #
 # Manta - Structural Variant and Indel Caller
-# Copyright (c) 2013-2016 Illumina, Inc.
+# Copyright (c) 2013-2017 Illumina, Inc.
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/src/c++/CMakeLists.txt b/src/c++/CMakeLists.txt
index 94f189a..4aa9b4f 100644
--- a/src/c++/CMakeLists.txt
+++ b/src/c++/CMakeLists.txt
@@ -1,6 +1,6 @@
 #
 # Manta - Structural Variant and Indel Caller
-# Copyright (c) 2013-2016 Illumina, Inc.
+# Copyright (c) 2013-2017 Illumina, Inc.
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/src/c++/bin/CMakeLists.txt b/src/c++/bin/CMakeLists.txt
index 4cdc2d7..7f1d81e 100644
--- a/src/c++/bin/CMakeLists.txt
+++ b/src/c++/bin/CMakeLists.txt
@@ -1,6 +1,6 @@
 #
 # Manta - Structural Variant and Indel Caller
-# Copyright (c) 2013-2016 Illumina, Inc.
+# Copyright (c) 2013-2017 Illumina, Inc.
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/src/c++/bin/CheckSVLoci.cpp b/src/c++/bin/CheckSVLoci.cpp
index aa8f33a..d686360 100644
--- a/src/c++/bin/CheckSVLoci.cpp
+++ b/src/c++/bin/CheckSVLoci.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/bin/DumpSVLoci.cpp b/src/c++/bin/DumpSVLoci.cpp
index 3497cd7..2b09cf8 100644
--- a/src/c++/bin/DumpSVLoci.cpp
+++ b/src/c++/bin/DumpSVLoci.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/bin/EstimateSVLoci.cpp b/src/c++/bin/EstimateSVLoci.cpp
index cd225fd..fe437d0 100644
--- a/src/c++/bin/EstimateSVLoci.cpp
+++ b/src/c++/bin/EstimateSVLoci.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/bin/GenerateSVCandidates.cpp b/src/c++/bin/GenerateSVCandidates.cpp
index 30dbf06..abf1e1e 100644
--- a/src/c++/bin/GenerateSVCandidates.cpp
+++ b/src/c++/bin/GenerateSVCandidates.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/bin/GetAlignmentStats.cpp b/src/c++/bin/GetAlignmentStats.cpp
index 58fbd27..57d2da8 100644
--- a/src/c++/bin/GetAlignmentStats.cpp
+++ b/src/c++/bin/GetAlignmentStats.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/bin/GetChromDepth.cpp b/src/c++/bin/GetChromDepth.cpp
index 74a47ca..a0b779d 100644
--- a/src/c++/bin/GetChromDepth.cpp
+++ b/src/c++/bin/GetChromDepth.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/bin/MergeAlignmentStats.cpp b/src/c++/bin/MergeAlignmentStats.cpp
index 0a8b233..25797c0 100644
--- a/src/c++/bin/MergeAlignmentStats.cpp
+++ b/src/c++/bin/MergeAlignmentStats.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/bin/MergeEdgeStats.cpp b/src/c++/bin/MergeEdgeStats.cpp
index 2345a24..45e15c2 100644
--- a/src/c++/bin/MergeEdgeStats.cpp
+++ b/src/c++/bin/MergeEdgeStats.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/bin/MergeSVLoci.cpp b/src/c++/bin/MergeSVLoci.cpp
index 7643604..8089a7d 100644
--- a/src/c++/bin/MergeSVLoci.cpp
+++ b/src/c++/bin/MergeSVLoci.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/bin/SummarizeAlignmentStats.cpp b/src/c++/bin/SummarizeAlignmentStats.cpp
index af5a917..9267c97 100644
--- a/src/c++/bin/SummarizeAlignmentStats.cpp
+++ b/src/c++/bin/SummarizeAlignmentStats.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/bin/SummarizeSVLoci.cpp b/src/c++/bin/SummarizeSVLoci.cpp
index e8f2d23..4cfa61e 100644
--- a/src/c++/bin/SummarizeSVLoci.cpp
+++ b/src/c++/bin/SummarizeSVLoci.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/bin/TestAssembler.cpp b/src/c++/bin/TestAssembler.cpp
index e4cf312..01a0c28 100644
--- a/src/c++/bin/TestAssembler.cpp
+++ b/src/c++/bin/TestAssembler.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/CMakeLists.txt b/src/c++/lib/CMakeLists.txt
index e84caee..905d1b1 100644
--- a/src/c++/lib/CMakeLists.txt
+++ b/src/c++/lib/CMakeLists.txt
@@ -1,6 +1,6 @@
 #
 # Manta - Structural Variant and Indel Caller
-# Copyright (c) 2013-2016 Illumina, Inc.
+# Copyright (c) 2013-2017 Illumina, Inc.
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/alignment/AlignerBase.hh b/src/c++/lib/alignment/AlignerBase.hh
index d5568f1..a845f34 100644
--- a/src/c++/lib/alignment/AlignerBase.hh
+++ b/src/c++/lib/alignment/AlignerBase.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/alignment/AlignerBaseImpl.hh b/src/c++/lib/alignment/AlignerBaseImpl.hh
index b6e3a27..531336b 100644
--- a/src/c++/lib/alignment/AlignerBaseImpl.hh
+++ b/src/c++/lib/alignment/AlignerBaseImpl.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/alignment/AlignerUtil.hh b/src/c++/lib/alignment/AlignerUtil.hh
index 596c897..69f79a5 100644
--- a/src/c++/lib/alignment/AlignerUtil.hh
+++ b/src/c++/lib/alignment/AlignerUtil.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/alignment/Alignment.cpp b/src/c++/lib/alignment/Alignment.cpp
index 2263c54..45ed321 100644
--- a/src/c++/lib/alignment/Alignment.cpp
+++ b/src/c++/lib/alignment/Alignment.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/alignment/Alignment.hh b/src/c++/lib/alignment/Alignment.hh
index 4cdf569..8abda14 100644
--- a/src/c++/lib/alignment/Alignment.hh
+++ b/src/c++/lib/alignment/Alignment.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/alignment/AlignmentScores.hh b/src/c++/lib/alignment/AlignmentScores.hh
index 364a8fd..277fd20 100644
--- a/src/c++/lib/alignment/AlignmentScores.hh
+++ b/src/c++/lib/alignment/AlignmentScores.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/alignment/AlignmentUtil.cpp b/src/c++/lib/alignment/AlignmentUtil.cpp
index 3925337..3ba01f8 100644
--- a/src/c++/lib/alignment/AlignmentUtil.cpp
+++ b/src/c++/lib/alignment/AlignmentUtil.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/alignment/AlignmentUtil.hh b/src/c++/lib/alignment/AlignmentUtil.hh
index ae0ad0b..2441f64 100644
--- a/src/c++/lib/alignment/AlignmentUtil.hh
+++ b/src/c++/lib/alignment/AlignmentUtil.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/alignment/CMakeLists.txt b/src/c++/lib/alignment/CMakeLists.txt
index 977b8e2..d155110 100644
--- a/src/c++/lib/alignment/CMakeLists.txt
+++ b/src/c++/lib/alignment/CMakeLists.txt
@@ -1,6 +1,6 @@
 #
 # Manta - Structural Variant and Indel Caller
-# Copyright (c) 2013-2016 Illumina, Inc.
+# Copyright (c) 2013-2017 Illumina, Inc.
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/alignment/GlobalAligner.hh b/src/c++/lib/alignment/GlobalAligner.hh
index 520d829..9f5b446 100644
--- a/src/c++/lib/alignment/GlobalAligner.hh
+++ b/src/c++/lib/alignment/GlobalAligner.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/alignment/GlobalAlignerImpl.hh b/src/c++/lib/alignment/GlobalAlignerImpl.hh
index 97d6991..90a859d 100644
--- a/src/c++/lib/alignment/GlobalAlignerImpl.hh
+++ b/src/c++/lib/alignment/GlobalAlignerImpl.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/alignment/GlobalJumpAligner.hh b/src/c++/lib/alignment/GlobalJumpAligner.hh
index 49f4caa..646ad39 100644
--- a/src/c++/lib/alignment/GlobalJumpAligner.hh
+++ b/src/c++/lib/alignment/GlobalJumpAligner.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/alignment/GlobalJumpAlignerImpl.hh b/src/c++/lib/alignment/GlobalJumpAlignerImpl.hh
index 5ed774c..2b120bc 100644
--- a/src/c++/lib/alignment/GlobalJumpAlignerImpl.hh
+++ b/src/c++/lib/alignment/GlobalJumpAlignerImpl.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/alignment/GlobalJumpIntronAligner.hh b/src/c++/lib/alignment/GlobalJumpIntronAligner.hh
index 573ca92..a882202 100644
--- a/src/c++/lib/alignment/GlobalJumpIntronAligner.hh
+++ b/src/c++/lib/alignment/GlobalJumpIntronAligner.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/alignment/GlobalJumpIntronAlignerImpl.hh b/src/c++/lib/alignment/GlobalJumpIntronAlignerImpl.hh
index 0171953..f8e623b 100644
--- a/src/c++/lib/alignment/GlobalJumpIntronAlignerImpl.hh
+++ b/src/c++/lib/alignment/GlobalJumpIntronAlignerImpl.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/alignment/GlobalLargeIndelAligner.hh b/src/c++/lib/alignment/GlobalLargeIndelAligner.hh
index c80734d..d4cb767 100644
--- a/src/c++/lib/alignment/GlobalLargeIndelAligner.hh
+++ b/src/c++/lib/alignment/GlobalLargeIndelAligner.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/alignment/GlobalLargeIndelAlignerImpl.hh b/src/c++/lib/alignment/GlobalLargeIndelAlignerImpl.hh
index bb27d7f..f04db6b 100644
--- a/src/c++/lib/alignment/GlobalLargeIndelAlignerImpl.hh
+++ b/src/c++/lib/alignment/GlobalLargeIndelAlignerImpl.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/alignment/JumpAlignerBase.hh b/src/c++/lib/alignment/JumpAlignerBase.hh
index af3867c..88c9483 100644
--- a/src/c++/lib/alignment/JumpAlignerBase.hh
+++ b/src/c++/lib/alignment/JumpAlignerBase.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/alignment/JumpAlignerBaseImpl.hh b/src/c++/lib/alignment/JumpAlignerBaseImpl.hh
index 676178f..ce8c92f 100644
--- a/src/c++/lib/alignment/JumpAlignerBaseImpl.hh
+++ b/src/c++/lib/alignment/JumpAlignerBaseImpl.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/alignment/ReadScorer.cpp b/src/c++/lib/alignment/ReadScorer.cpp
index b96e553..a756ffe 100644
--- a/src/c++/lib/alignment/ReadScorer.cpp
+++ b/src/c++/lib/alignment/ReadScorer.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/alignment/ReadScorer.hh b/src/c++/lib/alignment/ReadScorer.hh
index 000a78f..f5f01d8 100644
--- a/src/c++/lib/alignment/ReadScorer.hh
+++ b/src/c++/lib/alignment/ReadScorer.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/alignment/SingleRefAlignerShared.hh b/src/c++/lib/alignment/SingleRefAlignerShared.hh
index d3c826d..957e62e 100644
--- a/src/c++/lib/alignment/SingleRefAlignerShared.hh
+++ b/src/c++/lib/alignment/SingleRefAlignerShared.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/alignment/SingleRefAlignerSharedImpl.hh b/src/c++/lib/alignment/SingleRefAlignerSharedImpl.hh
index 9a9233a..79e56f5 100644
--- a/src/c++/lib/alignment/SingleRefAlignerSharedImpl.hh
+++ b/src/c++/lib/alignment/SingleRefAlignerSharedImpl.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/alignment/test/AlignmentUtilTest.cpp b/src/c++/lib/alignment/test/AlignmentUtilTest.cpp
index a37de2b..e789165 100644
--- a/src/c++/lib/alignment/test/AlignmentUtilTest.cpp
+++ b/src/c++/lib/alignment/test/AlignmentUtilTest.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/alignment/test/CMakeLists.txt b/src/c++/lib/alignment/test/CMakeLists.txt
index ebb21c8..c56c210 100644
--- a/src/c++/lib/alignment/test/CMakeLists.txt
+++ b/src/c++/lib/alignment/test/CMakeLists.txt
@@ -1,6 +1,6 @@
 #
 # Manta - Structural Variant and Indel Caller
-# Copyright (c) 2013-2016 Illumina, Inc.
+# Copyright (c) 2013-2017 Illumina, Inc.
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/alignment/test/GlobalAlignerTest.cpp b/src/c++/lib/alignment/test/GlobalAlignerTest.cpp
index cb40518..aaa05f5 100644
--- a/src/c++/lib/alignment/test/GlobalAlignerTest.cpp
+++ b/src/c++/lib/alignment/test/GlobalAlignerTest.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/alignment/test/GlobalJumpAlignerTest.cpp b/src/c++/lib/alignment/test/GlobalJumpAlignerTest.cpp
index 9a39d79..7ec9e89 100644
--- a/src/c++/lib/alignment/test/GlobalJumpAlignerTest.cpp
+++ b/src/c++/lib/alignment/test/GlobalJumpAlignerTest.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/alignment/test/GlobalJumpIntronAlignerTest.cpp b/src/c++/lib/alignment/test/GlobalJumpIntronAlignerTest.cpp
index 71d0b08..5dba270 100644
--- a/src/c++/lib/alignment/test/GlobalJumpIntronAlignerTest.cpp
+++ b/src/c++/lib/alignment/test/GlobalJumpIntronAlignerTest.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/alignment/test/GlobalLargeIndelAlignerTest.cpp b/src/c++/lib/alignment/test/GlobalLargeIndelAlignerTest.cpp
index d759651..9dc950d 100644
--- a/src/c++/lib/alignment/test/GlobalLargeIndelAlignerTest.cpp
+++ b/src/c++/lib/alignment/test/GlobalLargeIndelAlignerTest.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/alignment/test/test_main.cpp b/src/c++/lib/alignment/test/test_main.cpp
index 3a2f6be..2435867 100644
--- a/src/c++/lib/alignment/test/test_main.cpp
+++ b/src/c++/lib/alignment/test/test_main.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/applications/CMakeLists.txt b/src/c++/lib/applications/CMakeLists.txt
index 1ebcbfc..2c38ac2 100644
--- a/src/c++/lib/applications/CMakeLists.txt
+++ b/src/c++/lib/applications/CMakeLists.txt
@@ -1,6 +1,6 @@
 #
 # Manta - Structural Variant and Indel Caller
-# Copyright (c) 2013-2016 Illumina, Inc.
+# Copyright (c) 2013-2017 Illumina, Inc.
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/applications/CheckSVLoci/CMakeLists.txt b/src/c++/lib/applications/CheckSVLoci/CMakeLists.txt
index 977b8e2..d155110 100644
--- a/src/c++/lib/applications/CheckSVLoci/CMakeLists.txt
+++ b/src/c++/lib/applications/CheckSVLoci/CMakeLists.txt
@@ -1,6 +1,6 @@
 #
 # Manta - Structural Variant and Indel Caller
-# Copyright (c) 2013-2016 Illumina, Inc.
+# Copyright (c) 2013-2017 Illumina, Inc.
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/applications/CheckSVLoci/CSLOptions.cpp b/src/c++/lib/applications/CheckSVLoci/CSLOptions.cpp
index ba9e583..0aeba0c 100644
--- a/src/c++/lib/applications/CheckSVLoci/CSLOptions.cpp
+++ b/src/c++/lib/applications/CheckSVLoci/CSLOptions.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/applications/CheckSVLoci/CSLOptions.hh b/src/c++/lib/applications/CheckSVLoci/CSLOptions.hh
index 9f19d51..32a7da1 100644
--- a/src/c++/lib/applications/CheckSVLoci/CSLOptions.hh
+++ b/src/c++/lib/applications/CheckSVLoci/CSLOptions.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/applications/CheckSVLoci/CheckSVLoci.cpp b/src/c++/lib/applications/CheckSVLoci/CheckSVLoci.cpp
index 4fdefc0..d5d1b82 100644
--- a/src/c++/lib/applications/CheckSVLoci/CheckSVLoci.cpp
+++ b/src/c++/lib/applications/CheckSVLoci/CheckSVLoci.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/applications/CheckSVLoci/CheckSVLoci.hh b/src/c++/lib/applications/CheckSVLoci/CheckSVLoci.hh
index 615620a..85936f4 100644
--- a/src/c++/lib/applications/CheckSVLoci/CheckSVLoci.hh
+++ b/src/c++/lib/applications/CheckSVLoci/CheckSVLoci.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/applications/DumpSVLoci/CMakeLists.txt b/src/c++/lib/applications/DumpSVLoci/CMakeLists.txt
index 977b8e2..d155110 100644
--- a/src/c++/lib/applications/DumpSVLoci/CMakeLists.txt
+++ b/src/c++/lib/applications/DumpSVLoci/CMakeLists.txt
@@ -1,6 +1,6 @@
 #
 # Manta - Structural Variant and Indel Caller
-# Copyright (c) 2013-2016 Illumina, Inc.
+# Copyright (c) 2013-2017 Illumina, Inc.
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/applications/DumpSVLoci/DSLOptions.cpp b/src/c++/lib/applications/DumpSVLoci/DSLOptions.cpp
index 34a62fd..0a52fb8 100644
--- a/src/c++/lib/applications/DumpSVLoci/DSLOptions.cpp
+++ b/src/c++/lib/applications/DumpSVLoci/DSLOptions.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/applications/DumpSVLoci/DSLOptions.hh b/src/c++/lib/applications/DumpSVLoci/DSLOptions.hh
index f6a9316..967b004 100644
--- a/src/c++/lib/applications/DumpSVLoci/DSLOptions.hh
+++ b/src/c++/lib/applications/DumpSVLoci/DSLOptions.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/applications/DumpSVLoci/DumpSVLoci.cpp b/src/c++/lib/applications/DumpSVLoci/DumpSVLoci.cpp
index 051f8d2..5b728cd 100644
--- a/src/c++/lib/applications/DumpSVLoci/DumpSVLoci.cpp
+++ b/src/c++/lib/applications/DumpSVLoci/DumpSVLoci.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/applications/DumpSVLoci/DumpSVLoci.hh b/src/c++/lib/applications/DumpSVLoci/DumpSVLoci.hh
index 0a59e3c..ec29985 100644
--- a/src/c++/lib/applications/DumpSVLoci/DumpSVLoci.hh
+++ b/src/c++/lib/applications/DumpSVLoci/DumpSVLoci.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/applications/EstimateSVLoci/CMakeLists.txt b/src/c++/lib/applications/EstimateSVLoci/CMakeLists.txt
index 977b8e2..d155110 100644
--- a/src/c++/lib/applications/EstimateSVLoci/CMakeLists.txt
+++ b/src/c++/lib/applications/EstimateSVLoci/CMakeLists.txt
@@ -1,6 +1,6 @@
 #
 # Manta - Structural Variant and Indel Caller
-# Copyright (c) 2013-2016 Illumina, Inc.
+# Copyright (c) 2013-2017 Illumina, Inc.
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/applications/EstimateSVLoci/ESLOptions.cpp b/src/c++/lib/applications/EstimateSVLoci/ESLOptions.cpp
index 2d0ea34..6eddee5 100644
--- a/src/c++/lib/applications/EstimateSVLoci/ESLOptions.cpp
+++ b/src/c++/lib/applications/EstimateSVLoci/ESLOptions.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
@@ -87,8 +86,6 @@ parseESLOptions(
      "pre-computed alignment statistics for the input alignment files (required)")
     ("chrom-depth", po::value(&opt.chromDepthFilename),
      "average depth estimate for each chromosome")
-    ("truth-vcf", po::value(&opt.truthVcfFilename),
-     "optional truth VCF file (for testing)")
     ("region", po::value<regions_t>(),
      "samtools formatted region, eg. 'chr1:20-30'. May be supplied more than once but regions must not overlap. At least one entry required.")
     ("rna", po::value(&opt.isRNA)->zero_tokens(),
diff --git a/src/c++/lib/applications/EstimateSVLoci/ESLOptions.hh b/src/c++/lib/applications/EstimateSVLoci/ESLOptions.hh
index 75e8f03..ef52d12 100644
--- a/src/c++/lib/applications/EstimateSVLoci/ESLOptions.hh
+++ b/src/c++/lib/applications/EstimateSVLoci/ESLOptions.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
@@ -48,7 +47,6 @@ struct ESLOptions
     std::vector<std::string> regions;
     std::string statsFilename;
     std::string chromDepthFilename;
-    std::string truthVcfFilename;
 
     /// TODO remove the need for this bool by having a single overlap pair handler
     bool isRNA = false;
diff --git a/src/c++/lib/applications/EstimateSVLoci/EstimateSVLoci.cpp b/src/c++/lib/applications/EstimateSVLoci/EstimateSVLoci.cpp
index d48d4fa..28bf65d 100644
--- a/src/c++/lib/applications/EstimateSVLoci/EstimateSVLoci.cpp
+++ b/src/c++/lib/applications/EstimateSVLoci/EstimateSVLoci.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/applications/EstimateSVLoci/EstimateSVLoci.hh b/src/c++/lib/applications/EstimateSVLoci/EstimateSVLoci.hh
index e42cb66..f89f27c 100644
--- a/src/c++/lib/applications/EstimateSVLoci/EstimateSVLoci.hh
+++ b/src/c++/lib/applications/EstimateSVLoci/EstimateSVLoci.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/applications/EstimateSVLoci/SVLocusSetFinder.cpp b/src/c++/lib/applications/EstimateSVLoci/SVLocusSetFinder.cpp
index c608f5c..7d85719 100644
--- a/src/c++/lib/applications/EstimateSVLoci/SVLocusSetFinder.cpp
+++ b/src/c++/lib/applications/EstimateSVLoci/SVLocusSetFinder.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/applications/EstimateSVLoci/SVLocusSetFinder.hh b/src/c++/lib/applications/EstimateSVLoci/SVLocusSetFinder.hh
index 996285a..975d37e 100644
--- a/src/c++/lib/applications/EstimateSVLoci/SVLocusSetFinder.hh
+++ b/src/c++/lib/applications/EstimateSVLoci/SVLocusSetFinder.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/applications/GenerateSVCandidates/CMakeLists.txt b/src/c++/lib/applications/GenerateSVCandidates/CMakeLists.txt
index 977b8e2..d155110 100644
--- a/src/c++/lib/applications/GenerateSVCandidates/CMakeLists.txt
+++ b/src/c++/lib/applications/GenerateSVCandidates/CMakeLists.txt
@@ -1,6 +1,6 @@
 #
 # Manta - Structural Variant and Indel Caller
-# Copyright (c) 2013-2016 Illumina, Inc.
+# Copyright (c) 2013-2017 Illumina, Inc.
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/applications/GenerateSVCandidates/EdgeOptions.hh b/src/c++/lib/applications/GenerateSVCandidates/EdgeOptions.hh
index 65d4568..a5bf162 100644
--- a/src/c++/lib/applications/GenerateSVCandidates/EdgeOptions.hh
+++ b/src/c++/lib/applications/GenerateSVCandidates/EdgeOptions.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/applications/GenerateSVCandidates/EdgeOptionsParser.cpp b/src/c++/lib/applications/GenerateSVCandidates/EdgeOptionsParser.cpp
index 5f08110..cee2e15 100644
--- a/src/c++/lib/applications/GenerateSVCandidates/EdgeOptionsParser.cpp
+++ b/src/c++/lib/applications/GenerateSVCandidates/EdgeOptionsParser.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/applications/GenerateSVCandidates/EdgeOptionsParser.hh b/src/c++/lib/applications/GenerateSVCandidates/EdgeOptionsParser.hh
index ef724e1..273000c 100644
--- a/src/c++/lib/applications/GenerateSVCandidates/EdgeOptionsParser.hh
+++ b/src/c++/lib/applications/GenerateSVCandidates/EdgeOptionsParser.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/applications/GenerateSVCandidates/EdgeRetriever.hh b/src/c++/lib/applications/GenerateSVCandidates/EdgeRetriever.hh
index 45ab10e..11a925e 100644
--- a/src/c++/lib/applications/GenerateSVCandidates/EdgeRetriever.hh
+++ b/src/c++/lib/applications/GenerateSVCandidates/EdgeRetriever.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/applications/GenerateSVCandidates/EdgeRetrieverBin.cpp b/src/c++/lib/applications/GenerateSVCandidates/EdgeRetrieverBin.cpp
index d8a00cb..3af7e6f 100644
--- a/src/c++/lib/applications/GenerateSVCandidates/EdgeRetrieverBin.cpp
+++ b/src/c++/lib/applications/GenerateSVCandidates/EdgeRetrieverBin.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/applications/GenerateSVCandidates/EdgeRetrieverBin.hh b/src/c++/lib/applications/GenerateSVCandidates/EdgeRetrieverBin.hh
index 4974820..c6a2f0f 100644
--- a/src/c++/lib/applications/GenerateSVCandidates/EdgeRetrieverBin.hh
+++ b/src/c++/lib/applications/GenerateSVCandidates/EdgeRetrieverBin.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/applications/GenerateSVCandidates/EdgeRetrieverJumpBin.cpp b/src/c++/lib/applications/GenerateSVCandidates/EdgeRetrieverJumpBin.cpp
index 27add6a..169b6aa 100644
--- a/src/c++/lib/applications/GenerateSVCandidates/EdgeRetrieverJumpBin.cpp
+++ b/src/c++/lib/applications/GenerateSVCandidates/EdgeRetrieverJumpBin.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/applications/GenerateSVCandidates/EdgeRetrieverJumpBin.hh b/src/c++/lib/applications/GenerateSVCandidates/EdgeRetrieverJumpBin.hh
index 6289c2f..835215e 100644
--- a/src/c++/lib/applications/GenerateSVCandidates/EdgeRetrieverJumpBin.hh
+++ b/src/c++/lib/applications/GenerateSVCandidates/EdgeRetrieverJumpBin.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/applications/GenerateSVCandidates/EdgeRetrieverLocus.cpp b/src/c++/lib/applications/GenerateSVCandidates/EdgeRetrieverLocus.cpp
index df89cc1..76af1f5 100644
--- a/src/c++/lib/applications/GenerateSVCandidates/EdgeRetrieverLocus.cpp
+++ b/src/c++/lib/applications/GenerateSVCandidates/EdgeRetrieverLocus.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/applications/GenerateSVCandidates/EdgeRetrieverLocus.hh b/src/c++/lib/applications/GenerateSVCandidates/EdgeRetrieverLocus.hh
index fd910f3..2c38254 100644
--- a/src/c++/lib/applications/GenerateSVCandidates/EdgeRetrieverLocus.hh
+++ b/src/c++/lib/applications/GenerateSVCandidates/EdgeRetrieverLocus.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/applications/GenerateSVCandidates/EdgeRuntimeTracker.cpp b/src/c++/lib/applications/GenerateSVCandidates/EdgeRuntimeTracker.cpp
index 857a1c4..c3d7c3f 100644
--- a/src/c++/lib/applications/GenerateSVCandidates/EdgeRuntimeTracker.cpp
+++ b/src/c++/lib/applications/GenerateSVCandidates/EdgeRuntimeTracker.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/applications/GenerateSVCandidates/EdgeRuntimeTracker.hh b/src/c++/lib/applications/GenerateSVCandidates/EdgeRuntimeTracker.hh
index d54e27c..b4f8dac 100644
--- a/src/c++/lib/applications/GenerateSVCandidates/EdgeRuntimeTracker.hh
+++ b/src/c++/lib/applications/GenerateSVCandidates/EdgeRuntimeTracker.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/applications/GenerateSVCandidates/FatSVCandidate.cpp b/src/c++/lib/applications/GenerateSVCandidates/FatSVCandidate.cpp
index 0153278..5a8ec3c 100644
--- a/src/c++/lib/applications/GenerateSVCandidates/FatSVCandidate.cpp
+++ b/src/c++/lib/applications/GenerateSVCandidates/FatSVCandidate.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/applications/GenerateSVCandidates/FatSVCandidate.hh b/src/c++/lib/applications/GenerateSVCandidates/FatSVCandidate.hh
index 61c3bf5..2ebda96 100644
--- a/src/c++/lib/applications/GenerateSVCandidates/FatSVCandidate.hh
+++ b/src/c++/lib/applications/GenerateSVCandidates/FatSVCandidate.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/applications/GenerateSVCandidates/GSCEdgeStatsManager.cpp b/src/c++/lib/applications/GenerateSVCandidates/GSCEdgeStatsManager.cpp
index 18c5249..c9fd48b 100644
--- a/src/c++/lib/applications/GenerateSVCandidates/GSCEdgeStatsManager.cpp
+++ b/src/c++/lib/applications/GenerateSVCandidates/GSCEdgeStatsManager.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/applications/GenerateSVCandidates/GSCEdgeStatsManager.hh b/src/c++/lib/applications/GenerateSVCandidates/GSCEdgeStatsManager.hh
index 685a5da..5763d24 100644
--- a/src/c++/lib/applications/GenerateSVCandidates/GSCEdgeStatsManager.hh
+++ b/src/c++/lib/applications/GenerateSVCandidates/GSCEdgeStatsManager.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
@@ -75,7 +74,7 @@ struct GSCEdgeStatsManager : private boost::noncopyable
     }
 
     void
-    updateJunctionCandidates(
+    updateJunctionCandidateCounts(
         const EdgeInfo& edge,
         const unsigned junctionCount,
         const bool isComplex)
diff --git a/src/c++/lib/applications/GenerateSVCandidates/GSCOptions.cpp b/src/c++/lib/applications/GenerateSVCandidates/GSCOptions.cpp
index 924e274..293d89d 100644
--- a/src/c++/lib/applications/GenerateSVCandidates/GSCOptions.cpp
+++ b/src/c++/lib/applications/GenerateSVCandidates/GSCOptions.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
@@ -82,8 +81,6 @@ parseGSCOptions(
      "average depth estimate for each chromosome")
     ("ref", po::value(&opt.referenceFilename),
      "fasta reference sequence (required)")
-    ("truth-vcf", po::value(&opt.truthVcfFilename),
-     "optional truth VCF file (for testing)")
     ("edge-runtime-log", po::value(&opt.edgeRuntimeFilename),
      "optionally log time for long-running edges to this file")
     ("edge-stats-log", po::value(&opt.edgeStatsFilename),
diff --git a/src/c++/lib/applications/GenerateSVCandidates/GSCOptions.hh b/src/c++/lib/applications/GenerateSVCandidates/GSCOptions.hh
index 1e1f6b5..f62ac09 100644
--- a/src/c++/lib/applications/GenerateSVCandidates/GSCOptions.hh
+++ b/src/c++/lib/applications/GenerateSVCandidates/GSCOptions.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
@@ -53,7 +52,6 @@ struct GSCOptions
     std::string referenceFilename;
     std::string statsFilename;
     std::string chromDepthFilename;
-    std::string truthVcfFilename;
     std::string edgeRuntimeFilename;
     std::string edgeStatsFilename;
 
@@ -73,7 +71,7 @@ struct GSCOptions
 
     bool isRNA = false; ///< if true, RNA specific filtering on candidates and diploid scoring is used
 
-    bool isUnstrandedRNA = false; /// For unstranded RNA data, the direction of fusion transcripts is unknown
+    bool isUnstrandedRNA = false; ///< For unstranded RNA data, the direction of fusion transcripts is unknown
 
     unsigned minCandidateSpanningCount = 3; ///< how many spanning evidence observations are required to become a candidate?
 
diff --git a/src/c++/lib/applications/GenerateSVCandidates/GenerateSVCandidates.cpp b/src/c++/lib/applications/GenerateSVCandidates/GenerateSVCandidates.cpp
index 269a856..977b52f 100644
--- a/src/c++/lib/applications/GenerateSVCandidates/GenerateSVCandidates.cpp
+++ b/src/c++/lib/applications/GenerateSVCandidates/GenerateSVCandidates.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
@@ -241,7 +240,8 @@ runGSC(
 
             SupportSamples svSupports;
             svSupports.supportSamples.resize(sampleSize);
-            // determine if this is the only edge for this node:
+
+            // assemble, score and output SVs
             svProcessor.evaluateCandidates(edge, mjSVs, svData, svSupports);
 
             // write supporting reads into bam files
diff --git a/src/c++/lib/applications/GenerateSVCandidates/GenerateSVCandidates.hh b/src/c++/lib/applications/GenerateSVCandidates/GenerateSVCandidates.hh
index 05f26e0..ba958fc 100644
--- a/src/c++/lib/applications/GenerateSVCandidates/GenerateSVCandidates.hh
+++ b/src/c++/lib/applications/GenerateSVCandidates/GenerateSVCandidates.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/applications/GenerateSVCandidates/JunctionCallInfo.hh b/src/c++/lib/applications/GenerateSVCandidates/JunctionCallInfo.hh
index d0ff1ab..5d1b793 100644
--- a/src/c++/lib/applications/GenerateSVCandidates/JunctionCallInfo.hh
+++ b/src/c++/lib/applications/GenerateSVCandidates/JunctionCallInfo.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/applications/GenerateSVCandidates/SVCandidateAssemblyRefiner.cpp b/src/c++/lib/applications/GenerateSVCandidates/SVCandidateAssemblyRefiner.cpp
index a89edc0..00d9977 100644
--- a/src/c++/lib/applications/GenerateSVCandidates/SVCandidateAssemblyRefiner.cpp
+++ b/src/c++/lib/applications/GenerateSVCandidates/SVCandidateAssemblyRefiner.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/applications/GenerateSVCandidates/SVCandidateAssemblyRefiner.hh b/src/c++/lib/applications/GenerateSVCandidates/SVCandidateAssemblyRefiner.hh
index fe12393..afa687a 100644
--- a/src/c++/lib/applications/GenerateSVCandidates/SVCandidateAssemblyRefiner.hh
+++ b/src/c++/lib/applications/GenerateSVCandidates/SVCandidateAssemblyRefiner.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/applications/GenerateSVCandidates/SVCandidateProcessor.cpp b/src/c++/lib/applications/GenerateSVCandidates/SVCandidateProcessor.cpp
index e10b03d..a1a6188 100644
--- a/src/c++/lib/applications/GenerateSVCandidates/SVCandidateProcessor.cpp
+++ b/src/c++/lib/applications/GenerateSVCandidates/SVCandidateProcessor.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
@@ -106,12 +105,15 @@ writeSV(
     SupportSamples& svSupports)
 {
     const unsigned junctionCount(mjSV.junction.size());
+
+    // relax min spanning count to just 2 for the special case of a junction that is part of a multi-junction EVENT
+    //
     const unsigned minJunctionCandidateSpanningCount(std::min(2u,opt.minCandidateSpanningCount));
 
     // track filtration for each junction:
     std::vector<bool> isJunctionFiltered(isInputJunctionFiltered);
 
-    // early SV filtering:
+    // first step of SV filtering (before candidates are written):
     //
     // 2 junction filter types:
     // 1) tests where the junction can fail independently
@@ -128,14 +130,15 @@ writeSV(
 
 #ifdef DEBUG_GSV
         log_os << __FUNCTION__ << ": isSpanningSV junction: " <<  isCandidateSpanning << "\n";
+        log_os << __FUNCTION__ << ": Pairs:" << sv.bp1.getPairCount() << " Spanning:" << sv.bp1.getSpanningCount() << "\n";
 #endif
 
         // junction dependent tests:
-        //   (1) at least one junction in the set must have spanning count of 3 or more
+        //   (1) at least one junction in the set must have spanning count of minCandidateSpanningCount or more
         bool isJunctionSpanFail(false);
         if (isCandidateSpanning)
         {
-            if (sv.getPostAssemblySpanningCount() < opt.minCandidateSpanningCount)
+            if (sv.getPostAssemblySpanningCount(opt.isRNA) < opt.minCandidateSpanningCount)
             {
                 isJunctionSpanFail=true;
             }
@@ -148,7 +151,7 @@ writeSV(
         //   (2) no unassembled non-spanning candidates
         if (isCandidateSpanning)
         {
-            if (sv.getPostAssemblySpanningCount() < minJunctionCandidateSpanningCount)
+            if (sv.getPostAssemblySpanningCount(opt.isRNA) < minJunctionCandidateSpanningCount)
             {
                 isJunctionFiltered[junctionIndex] = true;
                 continue;
@@ -241,8 +244,10 @@ writeSV(
 
     bool isMJEvent(false);
 
+    unsigned sampleCount(svScore.sampleCount());
+    unsigned diploidSampleCount(svScore.diploidSampleCount());
     SVModelScoreInfo mjJointModelScoreInfo;
-    mjJointModelScoreInfo.setSampleCount(svScore.sampleCount(),svScore.diploidSampleCount());
+    mjJointModelScoreInfo.setSampleCount(sampleCount, diploidSampleCount);
     svScore.scoreSV(svData, mjAssemblyData, mjSV, junctionSVId,
                     isJunctionFiltered, isSomatic, isTumorOnly,
                     mjModelScoreInfo, mjJointModelScoreInfo,
@@ -254,15 +259,81 @@ writeSV(
     bool isMJDiploidEvent(isMJEvent);
     EventInfo event;
     event.junctionCount=unfilteredJunctionCount;
+
     bool isMJEventWriteDiploid(false);
     bool isMJEventWriteSomatic(false);
 
+    std::vector<bool> isJunctionSampleCheckFail(diploidSampleCount, false);
+
     if (isMJEvent)
     {
+        // sample specific check for the assumption of multi-junction candidates: every junction shares the same genotype.
+        // check if the individual junctions should be potentially assigned different genotypes.
+        for (unsigned sampleIndex(0); sampleIndex<diploidSampleCount; ++sampleIndex)
+        {
+            const SVScoreInfoDiploid& jointDiploidInfo(mjJointModelScoreInfo.diploid);
+            const SVScoreInfoDiploidSample& jointDiploidSampleInfo(jointDiploidInfo.samples[sampleIndex]);
+            const DIPLOID_GT::index_t jointGT(jointDiploidSampleInfo.gt);
+            const double jointGtPProb(jointDiploidSampleInfo.pprob[jointGT]);
+
+            if (jointGT == DIPLOID_GT::REF)
+            {
+                isJunctionSampleCheckFail[sampleIndex] = true;
+#ifdef DEBUG_GSV
+                if (isJunctionSampleCheckFail[sampleIndex])
+                {
+                    log_os << __FUNCTION__ << ": The multi-junction candidate has hom-ref for sample #"
+                           << sampleIndex << ".\n";
+                }
+#endif
+                continue;
+            }
+
+            for (unsigned junctionIndex(0); junctionIndex < junctionCount; ++junctionIndex)
+            {
+                if (isJunctionFiltered[junctionIndex]) continue;
+
+                const SVScoreInfoDiploid& diploidInfo(mjModelScoreInfo[junctionIndex].diploid);
+                const SVScoreInfoDiploidSample& diploidSampleInfo(diploidInfo.samples[sampleIndex]);
+                const DIPLOID_GT::index_t singleGT(diploidSampleInfo.gt);
+                const double singleGtPProb(diploidSampleInfo.pprob[singleGT]);
+                const double deltaGtPProb(jointGtPProb - diploidSampleInfo.pprob[jointGT]);
+
+                // fail the genotype check if
+                // 1) the joint event changes the genotype of the junction and increases the posterior prob by more than 0.9
+                // 2) the posterior prob is larger than 0.9 when the junction is genotyped individually
+                if ((! (jointGT==singleGT)) && (deltaGtPProb > 0.9) && (singleGtPProb > 0.9))
+                {
+                    isJunctionSampleCheckFail[sampleIndex] = true;
+                    break;
+                }
+            }
+
+#ifdef DEBUG_GSV
+            if (isJunctionSampleCheckFail[sampleIndex])
+            {
+                log_os << __FUNCTION__ << ": The multi-junction candidate failed the check of sample-specific genotyping for sample #"
+                       << sampleIndex << ".\n";
+            }
+#endif
+        }
+
+        // if any sample passing the genotype check, the multi-junction diploid event remains valid;
+        // otherwise, fail the multi-junction candidate
+        if (! isAnyFalse(isJunctionSampleCheckFail)) isMJDiploidEvent = false;
+
+#ifdef DEBUG_GSV
+        if (! isMJDiploidEvent)
+        {
+            log_os << __FUNCTION__ << ": Rejecting the multi-junction candidate, failed the sample-specific check of genotyping for all diploid samples.\n";
+        }
+#endif
+
         for (unsigned junctionIndex(0); junctionIndex<junctionCount; ++junctionIndex)
         {
             if (isJunctionFiltered[junctionIndex]) continue;
 
+            // set the Id of the first junction in the group as the event (i.e. multi-junction) label
             if (event.label.empty())
             {
                 const SVId& svId(junctionSVId[junctionIndex]);
@@ -271,7 +342,8 @@ writeSV(
 
             const SVModelScoreInfo& modelScoreInfo(mjModelScoreInfo[junctionIndex]);
 
-            // for diploid case only we decide to use multi-junction or single junction based on best score:
+            // for diploid case only,
+            // we decide to use multi-junction or single junction based on best score:
             // (for somatic case a lower somatic score could be due to reference evidence in an event member)
             //
             if (mjJointModelScoreInfo.diploid.filters.size() > modelScoreInfo.diploid.filters.size())
@@ -282,23 +354,9 @@ writeSV(
             {
                 isMJDiploidEvent=false;
             }
-        }
-
-        // for events, we write all junctions, or no junctions, so we need to determine write status over
-        // the whole set rather than a single junctions:
-        for (unsigned junctionIndex(0); junctionIndex<junctionCount; ++junctionIndex)
-        {
-            const SVModelScoreInfo& modelScoreInfo(mjModelScoreInfo[junctionIndex]);
-
-            if (isMJDiploidEvent)
-            {
-                if ((mjJointModelScoreInfo.diploid.altScore >= opt.diploidOpt.minOutputAltScore) ||
-                    (modelScoreInfo.diploid.altScore >= opt.diploidOpt.minOutputAltScore))
-                {
-                    isMJEventWriteDiploid = true;
-                }
-            }
 
+            // for somatic case,
+            // report multi-junction if either the multi-junction OR ANY single junction has a good score.
             if ((mjJointModelScoreInfo.somatic.somaticScore >= opt.somaticOpt.minOutputSomaticScore) ||
                 (modelScoreInfo.somatic.somaticScore >= opt.somaticOpt.minOutputSomaticScore))
             {
@@ -307,6 +365,13 @@ writeSV(
 
             //TODO: set up criteria for isMJEventWriteTumor
         }
+
+        // for events, we write all junctions, or no junctions,
+        // so we need to determine write status over the whole set rather than a single junction
+        if (isMJDiploidEvent)
+        {
+            isMJEventWriteDiploid = (mjJointModelScoreInfo.diploid.altScore >= opt.diploidOpt.minOutputAltScore);
+        }
     }
 
     // final scored output is treated (mostly) independently for each junction:
@@ -334,8 +399,27 @@ writeSV(
         {
             {
                 const EventInfo& diploidEvent( isMJDiploidEvent ? event : nonEvent );
-                const SVModelScoreInfo& scoreInfo(isMJDiploidEvent ? mjJointModelScoreInfo : modelScoreInfo);
-                const SVScoreInfoDiploid& diploidInfo(scoreInfo.diploid);
+                const SVModelScoreInfo& scoreInfo( isMJDiploidEvent ? mjJointModelScoreInfo : modelScoreInfo);
+                SVScoreInfoDiploid diploidInfo(scoreInfo.diploid);
+
+                if (isMJDiploidEvent)
+                {
+                    // if one sample failed the genotype check,
+                    // use the sample-specific diploid scoreInfo, instead of the joint scoreInfo
+                    for (unsigned sampleIndex(0); sampleIndex<diploidSampleCount; ++sampleIndex)
+                    {
+                        if (isJunctionSampleCheckFail[sampleIndex])
+                        {
+#ifdef DEBUG_GSV
+                            log_os << __FUNCTION__ << ": Junction #" << junctionIndex
+                                   << ": Swapped diploid info for sample #" << sampleIndex << ".\n"
+                                   << "Before:" << diploidInfo.samples[sampleIndex] << "\n"
+                                   << "After:" << modelScoreInfo.diploid.samples[sampleIndex] << "\n" ;
+#endif
+                            diploidInfo.samples[sampleIndex] = modelScoreInfo.diploid.samples[sampleIndex];
+                        }
+                    }
+                }
 
                 bool isWriteDiploid(false);
                 if (isMJDiploidEvent)
@@ -357,6 +441,7 @@ writeSV(
 
             if (isSomatic)
             {
+                const EventInfo& somaticEvent( isMJEvent ? event : nonEvent );
                 const SVModelScoreInfo& scoreInfo(isMJEvent ? mjJointModelScoreInfo : modelScoreInfo);
                 const SVScoreInfoSomatic& somaticInfo(scoreInfo.somatic);
 
@@ -373,7 +458,7 @@ writeSV(
 
                 if (isWriteSomatic)
                 {
-                    somWriter.writeSV(svData, assemblyData, sv, svId, baseInfo, somaticInfo, event, modelScoreInfo.somatic);
+                    somWriter.writeSV(svData, assemblyData, sv, svId, baseInfo, somaticInfo, somaticEvent, modelScoreInfo.somatic);
                 }
             }
         }
@@ -462,9 +547,11 @@ evaluateCandidate(
     const bool isComplex(isComplexSV(mjCandidateSV));
     _edgeTracker.addCand(isComplex);
 
-    _edgeStatMan.updateJunctionCandidates(edge, junctionCount, isComplex);
+    _edgeStatMan.updateJunctionCandidateCounts(edge, junctionCount, isComplex);
 
-    // assemble each junction independently:
+    // true if any junction returns a complex (indel) assembly result
+    //
+    // if true, and if the candidate is multi-junction then score and write each junction independently:
     bool isAnySmallAssembler(false);
     std::vector<SVCandidateAssemblyData> mjAssemblyData(junctionCount);
 
@@ -522,6 +609,7 @@ evaluateCandidate(
         // It doesn't do that -- but the broken thing it does, in fact, do, is what we
         // want for the isAnySmallAssembler case so it's well enough for now.
         //
+        /// TODO: update docs -- what is it we "want for the isAnySmallAssembler case"?
         bool isWrite(false);
         for (unsigned junctionIndex(0); junctionIndex<junctionCount; ++junctionIndex)
         {
@@ -557,6 +645,8 @@ evaluateCandidate(
         const TimeScoper scoreTime(_edgeTracker.scoreTime);
         if ((junctionCount>1) && isAnySmallAssembler)
         {
+            // call each junction independently by providing a filter vector in each iteration
+            // which only leaves a single junction unfiltered:
             for (unsigned junctionIndex(0); junctionIndex<junctionCount; ++junctionIndex)
             {
                 std::vector<bool> isJunctionFilteredHack(junctionCount,true);
diff --git a/src/c++/lib/applications/GenerateSVCandidates/SVCandidateProcessor.hh b/src/c++/lib/applications/GenerateSVCandidates/SVCandidateProcessor.hh
index a481ed2..dfbf663 100644
--- a/src/c++/lib/applications/GenerateSVCandidates/SVCandidateProcessor.hh
+++ b/src/c++/lib/applications/GenerateSVCandidates/SVCandidateProcessor.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
@@ -98,6 +97,7 @@ struct SVCandidateProcessor
         EdgeRuntimeTracker& edgeTracker,
         GSCEdgeStatsManager& _edgeStatMan);
 
+    /// Refine initial low-resolution candidates using an assembly step, then score and output final SVs
     void
     evaluateCandidates(
         const EdgeInfo& edge,
diff --git a/src/c++/lib/applications/GenerateSVCandidates/SVEvidence.cpp b/src/c++/lib/applications/GenerateSVCandidates/SVEvidence.cpp
index 0c0d647..17bef7e 100644
--- a/src/c++/lib/applications/GenerateSVCandidates/SVEvidence.cpp
+++ b/src/c++/lib/applications/GenerateSVCandidates/SVEvidence.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/applications/GenerateSVCandidates/SVEvidence.hh b/src/c++/lib/applications/GenerateSVCandidates/SVEvidence.hh
index 84d990e..95bbfd4 100644
--- a/src/c++/lib/applications/GenerateSVCandidates/SVEvidence.hh
+++ b/src/c++/lib/applications/GenerateSVCandidates/SVEvidence.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/applications/GenerateSVCandidates/SVFinder.cpp b/src/c++/lib/applications/GenerateSVCandidates/SVFinder.cpp
index 6569e50..43751d5 100644
--- a/src/c++/lib/applications/GenerateSVCandidates/SVFinder.cpp
+++ b/src/c++/lib/applications/GenerateSVCandidates/SVFinder.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
@@ -343,7 +342,7 @@ addSVNodeData(
         bam_streamer& readStream(*bamPtr);
 
         // set bam stream to new search interval:
-        readStream.set_new_region(searchInterval.tid,searchInterval.range.begin_pos(),searchInterval.range.end_pos());
+        readStream.resetRegion(searchInterval.tid,searchInterval.range.begin_pos(),searchInterval.range.end_pos());
 
 #ifdef DEBUG_SVDATA
         log_os << __FUNCTION__ << ": scanning bamIndex: " << bamIndex << "\n";
@@ -1085,9 +1084,9 @@ enum index_t
 
 
 
-/// return true for candidates that should be filtered out, based on
+/// return enumerator describing the candidate's filtration state, based on
 /// information available in a single junction (as opposed to
-/// requiring multi-junction analysis
+/// requiring multi-junction analysis)
 ///
 static
 SINGLE_FILTER::index_t
@@ -1127,6 +1126,11 @@ isFilterSingleJunctionCandidate(
 
 
 
+/// run early filters on all SV candidates
+///
+/// some candidates are immediately filtered in this function (so the length of svs will be shorter), other
+/// filtration cases require the SV to be marked now and evaluated for filtration once more information is
+/// available
 static
 void
 filterCandidates(
@@ -1159,6 +1163,7 @@ filterCandidates(
             isFilter = true;
             break;
         case SPANNINGLOWSIGNAL:
+            // this case is marked, but filtering is delayed until a multi-junction evaluation can be done later
             svs[index].isSingleJunctionFilter = true;
             break;
         default:
diff --git a/src/c++/lib/applications/GenerateSVCandidates/SVFinder.hh b/src/c++/lib/applications/GenerateSVCandidates/SVFinder.hh
index 44b3f03..a459c7d 100644
--- a/src/c++/lib/applications/GenerateSVCandidates/SVFinder.hh
+++ b/src/c++/lib/applications/GenerateSVCandidates/SVFinder.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
@@ -149,7 +148,12 @@ private:
     /// throwaway stats tracker...
     SampleEvidenceCounts _eCounts;
 
+    /// rate of spanning read noise estimated from the current dataset
+    /// - estimate is roughly (anom + split)/all
     double _spanningNoiseRate;
+
+    /// rate of assembly read noise estimated from the current dataset
+    /// - assembly read noise means reads with edges which have high mismatch density or soft-clipping
     double _assemblyNoiseRate;
 
     EdgeRuntimeTracker& _edgeTracker;
diff --git a/src/c++/lib/applications/GenerateSVCandidates/SVScorePairAltProcessor.cpp b/src/c++/lib/applications/GenerateSVCandidates/SVScorePairAltProcessor.cpp
index 0dec5fd..b262bb1 100644
--- a/src/c++/lib/applications/GenerateSVCandidates/SVScorePairAltProcessor.cpp
+++ b/src/c++/lib/applications/GenerateSVCandidates/SVScorePairAltProcessor.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/applications/GenerateSVCandidates/SVScorePairAltProcessor.hh b/src/c++/lib/applications/GenerateSVCandidates/SVScorePairAltProcessor.hh
index 8159ac1..5bc196a 100644
--- a/src/c++/lib/applications/GenerateSVCandidates/SVScorePairAltProcessor.hh
+++ b/src/c++/lib/applications/GenerateSVCandidates/SVScorePairAltProcessor.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/applications/GenerateSVCandidates/SVScorePairProcessor.cpp b/src/c++/lib/applications/GenerateSVCandidates/SVScorePairProcessor.cpp
index 916cb70..7dba49e 100644
--- a/src/c++/lib/applications/GenerateSVCandidates/SVScorePairProcessor.cpp
+++ b/src/c++/lib/applications/GenerateSVCandidates/SVScorePairProcessor.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/applications/GenerateSVCandidates/SVScorePairProcessor.hh b/src/c++/lib/applications/GenerateSVCandidates/SVScorePairProcessor.hh
index a3b251d..d56b5e1 100644
--- a/src/c++/lib/applications/GenerateSVCandidates/SVScorePairProcessor.hh
+++ b/src/c++/lib/applications/GenerateSVCandidates/SVScorePairProcessor.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
@@ -95,10 +94,10 @@ struct SVScorePairProcessor : public BamRegionProcessor
     processRecord(
             const bam_record& bamRead)
     {
-    	if (isSkipRecordCore(bamRead)) return;
-    	if (isSkipRecord(bamRead)) return;
+        if (isSkipRecordCore(bamRead)) return;
+        if (isSkipRecord(bamRead)) return;
 
-    	processClearedRecord(bamRead);
+        processClearedRecord(bamRead);
     }
     */
 
@@ -140,7 +139,6 @@ struct SVScorePairProcessor : public BamRegionProcessor
 
 protected:
 
-    static
     void
     setAlleleFrag(
         const SizeDistribution& fragDistro,
@@ -160,10 +158,13 @@ protected:
             fragProb = fragDistro.cdf(size);
             fragProb = std::min(fragProb, (1-fragProb));
         }
+        if (pairOpt.RNA)
+        {
+            fragProb = std::max(fragProb, pairOpt.minFragProb);
+        }
 #ifdef DEBUG_MEGAPAIR
         log_os << __FUNCTION__ << ": fraglen,prob " << size << " " << fragProb << "\n";
 #endif
-
         bp.isFragmentSupport = true;
         bp.fragLengthProb = fragProb;
     }
diff --git a/src/c++/lib/applications/GenerateSVCandidates/SVScorePairRefProcessor.cpp b/src/c++/lib/applications/GenerateSVCandidates/SVScorePairRefProcessor.cpp
index 7f41163..98f6836 100644
--- a/src/c++/lib/applications/GenerateSVCandidates/SVScorePairRefProcessor.cpp
+++ b/src/c++/lib/applications/GenerateSVCandidates/SVScorePairRefProcessor.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
@@ -66,8 +65,13 @@ processClearedRecord(
 
     /// check if fragment is too big or too small:
     const int templateSize(std::abs(bamRead.template_size()));
-    if (templateSize < bamParams.minFrag) return;
-    if (templateSize > bamParams.maxFrag) return;
+
+    if (!pairOpt.useProperPairFlag)
+    {
+        if (templateSize < bamParams.minFrag) return;
+        if (templateSize > bamParams.maxFrag) return;
+    }
+    else if (!bamRead.is_proper_pair()) return;
 
     // count only from the down stream reads
     const bool isFirstBamRead(isFirstRead(bamRead));
diff --git a/src/c++/lib/applications/GenerateSVCandidates/SVScorePairRefProcessor.hh b/src/c++/lib/applications/GenerateSVCandidates/SVScorePairRefProcessor.hh
index 05a822b..394eb85 100644
--- a/src/c++/lib/applications/GenerateSVCandidates/SVScorePairRefProcessor.hh
+++ b/src/c++/lib/applications/GenerateSVCandidates/SVScorePairRefProcessor.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/applications/GenerateSVCandidates/SVScorer.cpp b/src/c++/lib/applications/GenerateSVCandidates/SVScorer.cpp
index e28ed52..56baa3e 100644
--- a/src/c++/lib/applications/GenerateSVCandidates/SVScorer.cpp
+++ b/src/c++/lib/applications/GenerateSVCandidates/SVScorer.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
@@ -189,7 +188,7 @@ getBreakendMaxMappedDepthAndMQ0(
         bam_streamer& bamStream(*_bamStreams[bamIndex]);
 
         // set bam stream to new search interval:
-        bamStream.set_new_region(bp.interval.tid, searchRange.begin_pos(), searchRange.end_pos());
+        bamStream.resetRegion(bp.interval.tid, searchRange.begin_pos(), searchRange.end_pos());
 
         while (bamStream.next())
         {
@@ -602,10 +601,9 @@ resolvePairSplitConflicts(
 
 
 
-/// shared information gathering steps of all scoring models
 void
 SVScorer::
-scoreSV(
+getSVSupportingEvidence(
     const SVCandidateSetData& svData,
     const SVCandidateAssemblyData& assemblyData,
     const bool isTumorOnly,
@@ -831,7 +829,7 @@ getFragLnLhood(
 
     double ret(al.fragPair);
 
-    // limit split read evidence to only one read, b/c it's only possible for one section
+    // limit split read evidence to only one read, because it's only possible for one section
     // of the molecule to independently cross the breakend:
     if (isRead1Evaluated)
     {
@@ -1015,21 +1013,20 @@ addDiploidLoglhood(
         bool isRead1Evaluated(true);
         bool isRead2Evaluated(true);
 
-        /// TODO: set this from graph data:
-        ///
-        /// put some more thought into this -- is this P (spurious | any old read) or P( spurious | chimera ) ??
-        /// it seems like it should be the latter in the usages that really matter.
-        ///
+        /// TODO: set this value from error rates observed in input data:
+        //
+        // put some more thought into this -- is this P (spurious | any old read) or P( spurious | chimera ) ??
+        // it seems like it should be the latter in the usages that really matter.
+        //
         static const ProbSet chimeraProb(1e-3);
 
-        /// use a constant mapping prob for now just to get the zero-th order concept into the model
-        /// that "reads are mismapped at a non-trivial rate"
+        // use a constant mapping prob for now just to get the zero-th order concept into the model
+        // that "reads are mismapped at a non-trivial rate"
         /// TODO: experiment with per-read mapq values
-        ///
         static const ProbSet refSplitMapProb(1e-6);
         static const ProbSet altSplitMapProb(1e-5);
 
-        /// don't use semi-mapped reads for germline calling:
+        // don't use semi-mapped reads for germline calling:
         static const double semiMappedPower(0.);
 
         static const bool isPermissive(false);
@@ -1042,6 +1039,14 @@ addDiploidLoglhood(
             continue;
         }
 
+        const double refLnFragLhood(getFragLnLhood(refLnLhoodSet, isRead1Evaluated, isRead2Evaluated));
+        const double altLnFragLhood(getFragLnLhood(altLnLhoodSet, isRead1Evaluated, isRead2Evaluated));
+
+#ifdef DEBUG_SCORE
+        log_os << __FUNCTION__ << ": refLnFragLhood: " << refLnFragLhood << "\n";
+        log_os << __FUNCTION__ << ": altLnFragLhood: " << altLnFragLhood << "\n";
+#endif
+
         for (unsigned gt(0); gt<DIPLOID_GT::SIZE; ++gt)
         {
             using namespace DIPLOID_GT;
@@ -1051,14 +1056,6 @@ addDiploidLoglhood(
 #endif
 
             const index_t gtid(static_cast<index_t>(gt));
-            const double refLnFragLhood(getFragLnLhood(refLnLhoodSet, isRead1Evaluated, isRead2Evaluated));
-#ifdef DEBUG_SCORE
-            log_os << __FUNCTION__ << ": refLnFragLhood: " << refLnFragLhood << "\n";
-#endif
-            const double altLnFragLhood(getFragLnLhood(altLnLhoodSet, isRead1Evaluated, isRead2Evaluated));
-#ifdef DEBUG_SCORE
-            log_os << __FUNCTION__ << ": altLnFragLhood: " << altLnFragLhood << "\n";
-#endif
             const double refLnLhood(refLnFragLhood + altLnCompFraction(gtid));
             const double altLnLhood(altLnFragLhood + altLnFraction(gtid));
             loglhood[gt] += log_sum(refLnLhood, altLnLhood);
@@ -1144,6 +1141,7 @@ scoreDiploidSV(
             }
             for (unsigned gt(0); gt<DIPLOID_GT::SIZE; ++gt)
             {
+                diploidSampleInfo.pprob[gt] = pprob[gt];
                 diploidSampleInfo.phredLoghood[gt] = std::min(maxQ,ln_error_prob_to_qphred(loglhood[gt]-loglhood[maxIndex]));
             }
         }
@@ -1364,6 +1362,9 @@ scoreRNASV(
     //log_os << __FUNCTION__ << "Scoring RNA candidate " << sv << "\n";
 #endif
 
+    // RNA assumes exactly one 'normal' sample:
+    assert(diploidInfo.samples.size() == 1);
+
     /// TODO TMP add real sampleIndex
     const unsigned sampleIndex(0);
 
@@ -1606,7 +1607,7 @@ scoreSomaticSV(
     const unsigned normalSampleIndex(0);
     const unsigned tumorSampleIndex(1);
 
-    /// for multi-junction events, we use the prior noise weight associated with the largest event:
+    // for multi-junction events, we use the prior noise weight associated with the largest junction:
     float largeNoiseWeight(0.f);
     for (const JunctionCallInfo& junction : junctionData)
     {
@@ -1644,10 +1645,9 @@ scoreSomaticSV(
         static const ProbSet chimeraProbPermissive(5e-6);
         const ProbSet& chimeraProb( isPermissive ? chimeraProbPermissive : chimeraProbDefault );
 
-        /// use a constant mapping prob for now just to get the zero-th order concept into the model
-        /// that "reads are mismapped at a non-trivial rate"
+        // use a constant mapping prob for now just to get the zero-th order concept into the model
+        // that "reads are mismapped at a non-trivial rate"
         /// TODO: experiment with per-read mapq values
-        ///
         static const ProbSet refSplitMapProb(1e-6);
 
         static const ProbSet altSplitMapProbDefault(1e-4);
@@ -1869,12 +1869,14 @@ scoreSV(
     const unsigned junctionCount(mjSV.junction.size());
     mjModelScoreInfo.resize(junctionCount);
     std::vector<SVEvidence> junctionEvidence(junctionCount);
+
+    // set the degree to which we rely on spanning pair evidence for each junction, see getSpanningPairWeight()
     std::vector<float> junctionSpanningPairWeight(junctionCount);
 
-    for (unsigned jIndex(0); jIndex<junctionCount; ++jIndex)
+    for (unsigned junctionIndex(0); junctionIndex<junctionCount; ++junctionIndex)
     {
-        mjModelScoreInfo[jIndex].setSampleCount(sampleCount(),diploidSampleCount());
-        junctionEvidence[jIndex].samples.resize(sampleCount());
+        mjModelScoreInfo[junctionIndex].setSampleCount(sampleCount(),diploidSampleCount());
+        junctionEvidence[junctionIndex].samples.resize(sampleCount());
     }
 
     mjJointModelScoreInfo.clear();
@@ -1900,10 +1902,10 @@ scoreSV(
 
         modelScoreInfo.clear();
 
-        // accumulate model-neutral evidence for each candidate (or its corresponding reference allele)
+        // accumulate model-agnostic evidence for each candidate (or its corresponding reference allele)
         SVEvidence& evidence(junctionEvidence[junctionIndex]);
-        scoreSV(svData, assemblyData, isTumorOnly, sv, svId,
-                modelScoreInfo.base, evidence, svSupports);
+        getSVSupportingEvidence(svData, assemblyData, isTumorOnly, sv, svId,
+                                modelScoreInfo.base, evidence, svSupports);
 
         // score components specific to diploid-germline model:
         float& spanningPairWeight(junctionSpanningPairWeight[junctionIndex]);;
@@ -1932,6 +1934,8 @@ scoreSV(
         junctionData.resize(unfilteredJunctionCount);
         for (unsigned junctionIndex(0); junctionIndex<junctionCount; ++junctionIndex)
         {
+            if (isJunctionFiltered[junctionIndex]) continue;
+
             junctionData[junctionIndex].init(
                 mjSV.junction[junctionIndex],
                 junctionEvidence[junctionIndex],
diff --git a/src/c++/lib/applications/GenerateSVCandidates/SVScorer.hh b/src/c++/lib/applications/GenerateSVCandidates/SVScorer.hh
index 1bd4652..0dd94f9 100644
--- a/src/c++/lib/applications/GenerateSVCandidates/SVScorer.hh
+++ b/src/c++/lib/applications/GenerateSVCandidates/SVScorer.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
@@ -144,6 +143,8 @@ private:
 
 
 
+/// object to support SV scoring process
+///
 struct SVScorer
 {
     SVScorer(
@@ -154,6 +155,10 @@ struct SVScorer
     /// gather supporting evidence and generate:
     /// 1) diploid quality score and genotype for SV candidate
     /// 2) somatic quality score
+    ///
+    /// \param mjModelScoreInfo standard (junction-independent) scoring information for each junction
+    /// \param mjJointModelScoreInfo  joint junction scoring information used for cases where a multi-junction event
+    ///                               is detected
     void
     scoreSV(
         const SVCandidateSetData& svData,
@@ -249,6 +254,9 @@ private:
         float& MQ0Frac);
 
     /// apply all scoring models relevant to this event:
+    ///
+    /// \param junctionData one element describing each junction of an event, for normal (single-junction) candidates,
+    ///                     the vector size should be one
     void
     computeAllScoreModels(
         const bool isSomatic,
@@ -256,9 +264,13 @@ private:
         const std::vector<JunctionCallInfo>& junctionData,
         SVModelScoreInfo& modelScoreInfo);
 
-    /// shared information gathering steps of all scoring models
+    /// accumulate (model-agnostic) evidence for the SV alt/ref alleles
+    ///
+    /// This step gathers information (such as counts and allele likelihoods) to be used downstream by more specific
+    /// (germline, somatic, etc..) scoring models.
+    ///
     void
-    scoreSV(
+    getSVSupportingEvidence(
         const SVCandidateSetData& svData,
         const SVCandidateAssemblyData& assemblyData,
         const bool isTumorOnly,
diff --git a/src/c++/lib/applications/GenerateSVCandidates/SVScorerPair.cpp b/src/c++/lib/applications/GenerateSVCandidates/SVScorerPair.cpp
index 46c4188..476af8b 100644
--- a/src/c++/lib/applications/GenerateSVCandidates/SVScorerPair.cpp
+++ b/src/c++/lib/applications/GenerateSVCandidates/SVScorerPair.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
@@ -89,7 +88,7 @@ processBamProcList(
             if (scanInterval.range.begin_pos() >= scanInterval.range.end_pos()) continue;
 
             // set bam stream to new search interval:
-            bamStream.set_new_region(scanInterval.tid, scanInterval.range.begin_pos(), scanInterval.range.end_pos());
+            bamStream.resetRegion(scanInterval.tid, scanInterval.range.begin_pos(), scanInterval.range.end_pos());
 
             /// define the procs where' going to handle in this interval:
             std::vector<unsigned> targetProcs;
@@ -462,7 +461,10 @@ getFragProb(
     log_os << logtag << "cdf: " << fragProb << " final: " << std::min(fragProb, (1-fragProb)) << "\n";
 #endif
     fragProb = std::min(fragProb, (1-fragProb));
-
+    if (pairOpt.RNA)
+    {
+        fragProb = std::max(fragProb, pairOpt.minFragProb);
+    }
     /// TODO: any cases where fragProb is 0 or extremely small should be some
     /// sort of mulit-SV error artifact (like a large CIGAR indel in one of the
     /// reads of the pair) try to improve this case -- ideally we can account
@@ -473,7 +475,7 @@ getFragProb(
     }
 
 #ifdef DEBUG_PAIR
-    log_os << logtag << "isSupportSV: " << isFragSupportSV << "\n";
+    log_os << logtag << "isSupportSV: " << isFragSupportSV << " fragProb: " << fragProb << "\n";
 #endif
 }
 
diff --git a/src/c++/lib/applications/GenerateSVCandidates/SVScorerPairOptions.hh b/src/c++/lib/applications/GenerateSVCandidates/SVScorerPairOptions.hh
index 0e90f70..5fe08c0 100644
--- a/src/c++/lib/applications/GenerateSVCandidates/SVScorerPairOptions.hh
+++ b/src/c++/lib/applications/GenerateSVCandidates/SVScorerPairOptions.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
@@ -33,7 +32,10 @@ struct PairOptions
     explicit
     PairOptions(const bool isRNA) :
         minFragSupport(50),
-        minFragProb(! isRNA ? 0.0001f : 0.0f)
+        minFragProb(0.0001f),
+        RNA(isRNA),
+        useProperPairFlag(isRNA)
+
     {}
 
     /// we're interested in any fragments which cross center pos with at least N bases of support on each side
@@ -43,4 +45,11 @@ struct PairOptions
     const pos_t minFragSupport;
 
     const float minFragProb;
+
+    /// This is an RNA dataset. Insert size distribution is less meaningful due to splicing
+    const bool RNA;
+
+    /// Use the proper pair flag to decide if read pairs are are anomalous for ref and alt scoring
+    /// Used for RNA, since splicing makes the pair insert size distribution less informative
+    const bool useProperPairFlag;
 };
diff --git a/src/c++/lib/applications/GenerateSVCandidates/SVScorerShared.cpp b/src/c++/lib/applications/GenerateSVCandidates/SVScorerShared.cpp
index 7aaf72f..594856b 100644
--- a/src/c++/lib/applications/GenerateSVCandidates/SVScorerShared.cpp
+++ b/src/c++/lib/applications/GenerateSVCandidates/SVScorerShared.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/applications/GenerateSVCandidates/SVScorerShared.hh b/src/c++/lib/applications/GenerateSVCandidates/SVScorerShared.hh
index 364730a..a8bf52e 100644
--- a/src/c++/lib/applications/GenerateSVCandidates/SVScorerShared.hh
+++ b/src/c++/lib/applications/GenerateSVCandidates/SVScorerShared.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/applications/GenerateSVCandidates/SVScorerSplit.cpp b/src/c++/lib/applications/GenerateSVCandidates/SVScorerSplit.cpp
index 29bccc8..46cfac8 100644
--- a/src/c++/lib/applications/GenerateSVCandidates/SVScorerSplit.cpp
+++ b/src/c++/lib/applications/GenerateSVCandidates/SVScorerSplit.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
@@ -237,9 +236,9 @@ scoreSplitReads(
     // extract reads overlapping the break point
     // We are not looking for remote reads, (semialigned-) reads mapping near this breakpoint, but not across it
     // or any other kind of additional reads used for assembly.
-    readStream.set_new_region(bp.interval.tid,
-                              std::max(0, bp.interval.range.begin_pos() - extendedSearchRange),
-                              bp.interval.range.end_pos() + extendedSearchRange);
+    readStream.resetRegion(bp.interval.tid,
+                           std::max(0, bp.interval.range.begin_pos() - extendedSearchRange),
+                           bp.interval.range.end_pos() + extendedSearchRange);
     while (readStream.next())
     {
         const bam_record& bamRead(*(readStream.get_record_ptr()));
@@ -294,7 +293,7 @@ scoreSplitReads(
             assert(false && "Invalid bp state");
         }
 
-        readStream.set_new_region(bp.interval.tid, shadowRange.begin_pos(), shadowRange.end_pos());
+        readStream.resetRegion(bp.interval.tid, shadowRange.begin_pos(), shadowRange.end_pos());
 
         ShadowReadFinder shadow(shadowMinMapq,isSearchForLeftOpen,isSearchForRightOpen);
 
diff --git a/src/c++/lib/applications/GenerateSVCandidates/SVSupports.cpp b/src/c++/lib/applications/GenerateSVCandidates/SVSupports.cpp
index cb55f27..1f54b68 100644
--- a/src/c++/lib/applications/GenerateSVCandidates/SVSupports.cpp
+++ b/src/c++/lib/applications/GenerateSVCandidates/SVSupports.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
@@ -94,7 +93,7 @@ processBamRecords(
            << interval << "\n";
 #endif
 
-    origBamStream.set_new_region(interval.tid, interval.range.begin_pos(), interval.range.end_pos());
+    origBamStream.resetRegion(interval.tid, interval.range.begin_pos(), interval.range.end_pos());
     while (origBamStream.next())
     {
         const bam_record* origBamRec(origBamStream.get_record_ptr());
@@ -150,9 +149,9 @@ processBamRecords(
 
 
 void
-writeSupportBam(bam_streamer_ptr origBamStreamPtr,
+writeSupportBam(const bam_streamer_ptr& origBamStreamPtr,
                 const SupportFragments& svSupportFrags,
-                bam_dumper_ptr supportBamDumperPtr)
+                const bam_dumper_ptr& supportBamDumperPtr)
 {
     std::vector<SupportRead> supportReads;
     const support_fragments_t& supportFrags(svSupportFrags.supportFrags);
diff --git a/src/c++/lib/applications/GenerateSVCandidates/SVSupports.hh b/src/c++/lib/applications/GenerateSVCandidates/SVSupports.hh
index 50dd383..d7f07d0 100644
--- a/src/c++/lib/applications/GenerateSVCandidates/SVSupports.hh
+++ b/src/c++/lib/applications/GenerateSVCandidates/SVSupports.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
@@ -213,7 +212,7 @@ processBamRecords(bam_streamer& origBamStream,
                   bam_dumper& bamDumper);
 
 void
-writeSupportBam(bam_streamer_ptr origBamStream,
+writeSupportBam(const bam_streamer_ptr& origBamStream,
                 const SupportFragments& svSupportFrags,
-                bam_dumper_ptr supportBamDumper);
+                const bam_dumper_ptr& supportBamDumper);
 
diff --git a/src/c++/lib/applications/GenerateSVCandidates/SplitReadAlignment.cpp b/src/c++/lib/applications/GenerateSVCandidates/SplitReadAlignment.cpp
index 02f9b50..262d8f5 100644
--- a/src/c++/lib/applications/GenerateSVCandidates/SplitReadAlignment.cpp
+++ b/src/c++/lib/applications/GenerateSVCandidates/SplitReadAlignment.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/applications/GenerateSVCandidates/SplitReadAlignment.hh b/src/c++/lib/applications/GenerateSVCandidates/SplitReadAlignment.hh
index beeafc5..4f50682 100644
--- a/src/c++/lib/applications/GenerateSVCandidates/SplitReadAlignment.hh
+++ b/src/c++/lib/applications/GenerateSVCandidates/SplitReadAlignment.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/applications/GenerateSVCandidates/test/CMakeLists.txt b/src/c++/lib/applications/GenerateSVCandidates/test/CMakeLists.txt
index 5ce107a..2180153 100644
--- a/src/c++/lib/applications/GenerateSVCandidates/test/CMakeLists.txt
+++ b/src/c++/lib/applications/GenerateSVCandidates/test/CMakeLists.txt
@@ -1,6 +1,6 @@
 #
 # Manta - Structural Variant and Indel Caller
-# Copyright (c) 2013-2016 Illumina, Inc.
+# Copyright (c) 2013-2017 Illumina, Inc.
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/applications/GenerateSVCandidates/test/EdgeRetrieverBinTest.cpp b/src/c++/lib/applications/GenerateSVCandidates/test/EdgeRetrieverBinTest.cpp
index a24c033..21bd770 100644
--- a/src/c++/lib/applications/GenerateSVCandidates/test/EdgeRetrieverBinTest.cpp
+++ b/src/c++/lib/applications/GenerateSVCandidates/test/EdgeRetrieverBinTest.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/applications/GenerateSVCandidates/test/EdgeRetrieverJumpBinTest.cpp b/src/c++/lib/applications/GenerateSVCandidates/test/EdgeRetrieverJumpBinTest.cpp
index e839ad2..7d3ebeb 100644
--- a/src/c++/lib/applications/GenerateSVCandidates/test/EdgeRetrieverJumpBinTest.cpp
+++ b/src/c++/lib/applications/GenerateSVCandidates/test/EdgeRetrieverJumpBinTest.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/applications/GenerateSVCandidates/test/EdgeRetrieverLocusTest.cpp b/src/c++/lib/applications/GenerateSVCandidates/test/EdgeRetrieverLocusTest.cpp
index 79f4fd1..83ef090 100644
--- a/src/c++/lib/applications/GenerateSVCandidates/test/EdgeRetrieverLocusTest.cpp
+++ b/src/c++/lib/applications/GenerateSVCandidates/test/EdgeRetrieverLocusTest.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/applications/GenerateSVCandidates/test/SVCandidateAssemblyRefinerTest.cpp b/src/c++/lib/applications/GenerateSVCandidates/test/SVCandidateAssemblyRefinerTest.cpp
index e5e6b24..613741d 100644
--- a/src/c++/lib/applications/GenerateSVCandidates/test/SVCandidateAssemblyRefinerTest.cpp
+++ b/src/c++/lib/applications/GenerateSVCandidates/test/SVCandidateAssemblyRefinerTest.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/applications/GenerateSVCandidates/test/test_main.cpp b/src/c++/lib/applications/GenerateSVCandidates/test/test_main.cpp
index 411b2de..1142495 100644
--- a/src/c++/lib/applications/GenerateSVCandidates/test/test_main.cpp
+++ b/src/c++/lib/applications/GenerateSVCandidates/test/test_main.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/applications/GetAlignmentStats/AlignmentStatsOptions.cpp b/src/c++/lib/applications/GetAlignmentStats/AlignmentStatsOptions.cpp
index c2e5112..a1c065f 100644
--- a/src/c++/lib/applications/GetAlignmentStats/AlignmentStatsOptions.cpp
+++ b/src/c++/lib/applications/GetAlignmentStats/AlignmentStatsOptions.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/applications/GetAlignmentStats/AlignmentStatsOptions.hh b/src/c++/lib/applications/GetAlignmentStats/AlignmentStatsOptions.hh
index 4c69e2d..d92096b 100644
--- a/src/c++/lib/applications/GetAlignmentStats/AlignmentStatsOptions.hh
+++ b/src/c++/lib/applications/GetAlignmentStats/AlignmentStatsOptions.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/applications/GetAlignmentStats/CMakeLists.txt b/src/c++/lib/applications/GetAlignmentStats/CMakeLists.txt
index 977b8e2..d155110 100644
--- a/src/c++/lib/applications/GetAlignmentStats/CMakeLists.txt
+++ b/src/c++/lib/applications/GetAlignmentStats/CMakeLists.txt
@@ -1,6 +1,6 @@
 #
 # Manta - Structural Variant and Indel Caller
-# Copyright (c) 2013-2016 Illumina, Inc.
+# Copyright (c) 2013-2017 Illumina, Inc.
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/applications/GetAlignmentStats/GetAlignmentStats.cpp b/src/c++/lib/applications/GetAlignmentStats/GetAlignmentStats.cpp
index 00b6017..5964a76 100644
--- a/src/c++/lib/applications/GetAlignmentStats/GetAlignmentStats.cpp
+++ b/src/c++/lib/applications/GetAlignmentStats/GetAlignmentStats.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/applications/GetAlignmentStats/GetAlignmentStats.hh b/src/c++/lib/applications/GetAlignmentStats/GetAlignmentStats.hh
index 631d94b..dca69f1 100644
--- a/src/c++/lib/applications/GetAlignmentStats/GetAlignmentStats.hh
+++ b/src/c++/lib/applications/GetAlignmentStats/GetAlignmentStats.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/applications/GetChromDepth/CMakeLists.txt b/src/c++/lib/applications/GetChromDepth/CMakeLists.txt
index 977b8e2..d155110 100644
--- a/src/c++/lib/applications/GetChromDepth/CMakeLists.txt
+++ b/src/c++/lib/applications/GetChromDepth/CMakeLists.txt
@@ -1,6 +1,6 @@
 #
 # Manta - Structural Variant and Indel Caller
-# Copyright (c) 2013-2016 Illumina, Inc.
+# Copyright (c) 2013-2017 Illumina, Inc.
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/applications/GetChromDepth/ChromDepthOptions.cpp b/src/c++/lib/applications/GetChromDepth/ChromDepthOptions.cpp
index be2908b..e46aff7 100644
--- a/src/c++/lib/applications/GetChromDepth/ChromDepthOptions.cpp
+++ b/src/c++/lib/applications/GetChromDepth/ChromDepthOptions.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/applications/GetChromDepth/ChromDepthOptions.hh b/src/c++/lib/applications/GetChromDepth/ChromDepthOptions.hh
index f499b4f..407730e 100644
--- a/src/c++/lib/applications/GetChromDepth/ChromDepthOptions.hh
+++ b/src/c++/lib/applications/GetChromDepth/ChromDepthOptions.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/applications/GetChromDepth/GetChromDepth.cpp b/src/c++/lib/applications/GetChromDepth/GetChromDepth.cpp
index 17b3a1b..5769dfd 100644
--- a/src/c++/lib/applications/GetChromDepth/GetChromDepth.cpp
+++ b/src/c++/lib/applications/GetChromDepth/GetChromDepth.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/applications/GetChromDepth/GetChromDepth.hh b/src/c++/lib/applications/GetChromDepth/GetChromDepth.hh
index a62036f..b538ef0 100644
--- a/src/c++/lib/applications/GetChromDepth/GetChromDepth.hh
+++ b/src/c++/lib/applications/GetChromDepth/GetChromDepth.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/applications/MergeAlignmentStats/CMakeLists.txt b/src/c++/lib/applications/MergeAlignmentStats/CMakeLists.txt
index 977b8e2..d155110 100644
--- a/src/c++/lib/applications/MergeAlignmentStats/CMakeLists.txt
+++ b/src/c++/lib/applications/MergeAlignmentStats/CMakeLists.txt
@@ -1,6 +1,6 @@
 #
 # Manta - Structural Variant and Indel Caller
-# Copyright (c) 2013-2016 Illumina, Inc.
+# Copyright (c) 2013-2017 Illumina, Inc.
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/applications/MergeAlignmentStats/MergeAlignmentStats.cpp b/src/c++/lib/applications/MergeAlignmentStats/MergeAlignmentStats.cpp
index 79a071f..6dfe70d 100644
--- a/src/c++/lib/applications/MergeAlignmentStats/MergeAlignmentStats.cpp
+++ b/src/c++/lib/applications/MergeAlignmentStats/MergeAlignmentStats.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/applications/MergeAlignmentStats/MergeAlignmentStats.hh b/src/c++/lib/applications/MergeAlignmentStats/MergeAlignmentStats.hh
index 634cf37..f387c8d 100644
--- a/src/c++/lib/applications/MergeAlignmentStats/MergeAlignmentStats.hh
+++ b/src/c++/lib/applications/MergeAlignmentStats/MergeAlignmentStats.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/applications/MergeAlignmentStats/MergeAlignmentStatsOptions.cpp b/src/c++/lib/applications/MergeAlignmentStats/MergeAlignmentStatsOptions.cpp
index a86753f..f49daa5 100644
--- a/src/c++/lib/applications/MergeAlignmentStats/MergeAlignmentStatsOptions.cpp
+++ b/src/c++/lib/applications/MergeAlignmentStats/MergeAlignmentStatsOptions.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/applications/MergeAlignmentStats/MergeAlignmentStatsOptions.hh b/src/c++/lib/applications/MergeAlignmentStats/MergeAlignmentStatsOptions.hh
index 43ba4c0..433f922 100644
--- a/src/c++/lib/applications/MergeAlignmentStats/MergeAlignmentStatsOptions.hh
+++ b/src/c++/lib/applications/MergeAlignmentStats/MergeAlignmentStatsOptions.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/applications/MergeEdgeStats/CMakeLists.txt b/src/c++/lib/applications/MergeEdgeStats/CMakeLists.txt
index 977b8e2..d155110 100644
--- a/src/c++/lib/applications/MergeEdgeStats/CMakeLists.txt
+++ b/src/c++/lib/applications/MergeEdgeStats/CMakeLists.txt
@@ -1,6 +1,6 @@
 #
 # Manta - Structural Variant and Indel Caller
-# Copyright (c) 2013-2016 Illumina, Inc.
+# Copyright (c) 2013-2017 Illumina, Inc.
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/applications/MergeEdgeStats/MESOptions.cpp b/src/c++/lib/applications/MergeEdgeStats/MESOptions.cpp
index 3983ebc..875ebfb 100644
--- a/src/c++/lib/applications/MergeEdgeStats/MESOptions.cpp
+++ b/src/c++/lib/applications/MergeEdgeStats/MESOptions.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/applications/MergeEdgeStats/MESOptions.hh b/src/c++/lib/applications/MergeEdgeStats/MESOptions.hh
index a89165b..8006728 100644
--- a/src/c++/lib/applications/MergeEdgeStats/MESOptions.hh
+++ b/src/c++/lib/applications/MergeEdgeStats/MESOptions.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/applications/MergeEdgeStats/MergeEdgeStats.cpp b/src/c++/lib/applications/MergeEdgeStats/MergeEdgeStats.cpp
index d22b661..616926c 100644
--- a/src/c++/lib/applications/MergeEdgeStats/MergeEdgeStats.cpp
+++ b/src/c++/lib/applications/MergeEdgeStats/MergeEdgeStats.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/applications/MergeEdgeStats/MergeEdgeStats.hh b/src/c++/lib/applications/MergeEdgeStats/MergeEdgeStats.hh
index 3236e11..832b4b6 100644
--- a/src/c++/lib/applications/MergeEdgeStats/MergeEdgeStats.hh
+++ b/src/c++/lib/applications/MergeEdgeStats/MergeEdgeStats.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/applications/MergeSVLoci/CMakeLists.txt b/src/c++/lib/applications/MergeSVLoci/CMakeLists.txt
index 977b8e2..d155110 100644
--- a/src/c++/lib/applications/MergeSVLoci/CMakeLists.txt
+++ b/src/c++/lib/applications/MergeSVLoci/CMakeLists.txt
@@ -1,6 +1,6 @@
 #
 # Manta - Structural Variant and Indel Caller
-# Copyright (c) 2013-2016 Illumina, Inc.
+# Copyright (c) 2013-2017 Illumina, Inc.
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/applications/MergeSVLoci/MSLOptions.cpp b/src/c++/lib/applications/MergeSVLoci/MSLOptions.cpp
index a83d1c6..1146bc6 100644
--- a/src/c++/lib/applications/MergeSVLoci/MSLOptions.cpp
+++ b/src/c++/lib/applications/MergeSVLoci/MSLOptions.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/applications/MergeSVLoci/MSLOptions.hh b/src/c++/lib/applications/MergeSVLoci/MSLOptions.hh
index 593f413..11725f6 100644
--- a/src/c++/lib/applications/MergeSVLoci/MSLOptions.hh
+++ b/src/c++/lib/applications/MergeSVLoci/MSLOptions.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/applications/MergeSVLoci/MergeSVLoci.cpp b/src/c++/lib/applications/MergeSVLoci/MergeSVLoci.cpp
index b2033db..f41ed53 100644
--- a/src/c++/lib/applications/MergeSVLoci/MergeSVLoci.cpp
+++ b/src/c++/lib/applications/MergeSVLoci/MergeSVLoci.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/applications/MergeSVLoci/MergeSVLoci.hh b/src/c++/lib/applications/MergeSVLoci/MergeSVLoci.hh
index 047720e..cdde838 100644
--- a/src/c++/lib/applications/MergeSVLoci/MergeSVLoci.hh
+++ b/src/c++/lib/applications/MergeSVLoci/MergeSVLoci.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/applications/SummarizeAlignmentStats/CMakeLists.txt b/src/c++/lib/applications/SummarizeAlignmentStats/CMakeLists.txt
index 977b8e2..d155110 100644
--- a/src/c++/lib/applications/SummarizeAlignmentStats/CMakeLists.txt
+++ b/src/c++/lib/applications/SummarizeAlignmentStats/CMakeLists.txt
@@ -1,6 +1,6 @@
 #
 # Manta - Structural Variant and Indel Caller
-# Copyright (c) 2013-2016 Illumina, Inc.
+# Copyright (c) 2013-2017 Illumina, Inc.
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/applications/SummarizeAlignmentStats/SASOptions.cpp b/src/c++/lib/applications/SummarizeAlignmentStats/SASOptions.cpp
index bc177c2..f7db895 100644
--- a/src/c++/lib/applications/SummarizeAlignmentStats/SASOptions.cpp
+++ b/src/c++/lib/applications/SummarizeAlignmentStats/SASOptions.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/applications/SummarizeAlignmentStats/SASOptions.hh b/src/c++/lib/applications/SummarizeAlignmentStats/SASOptions.hh
index ec52720..b06e34f 100644
--- a/src/c++/lib/applications/SummarizeAlignmentStats/SASOptions.hh
+++ b/src/c++/lib/applications/SummarizeAlignmentStats/SASOptions.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/applications/SummarizeAlignmentStats/SummarizeAlignmentStats.cpp b/src/c++/lib/applications/SummarizeAlignmentStats/SummarizeAlignmentStats.cpp
index 4501671..a1d9116 100644
--- a/src/c++/lib/applications/SummarizeAlignmentStats/SummarizeAlignmentStats.cpp
+++ b/src/c++/lib/applications/SummarizeAlignmentStats/SummarizeAlignmentStats.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
@@ -31,7 +30,7 @@
 
 #include <iostream>
 
-
+//#define OUTPUT_CDF
 
 static
 void
@@ -65,6 +64,15 @@ runSAS(const SASOptions& opt)
             report_os << quantLevel[quantLevelIndex] << '\t' << rgs.fragStats.quantile(quantLevel[quantLevelIndex]) << '\n';
         }
         report_os << '\n';
+
+#ifdef OUTPUT_CDF
+        report_os << "fragment length cdf:\n";
+        for (unsigned fragIndex(0); fragIndex<=1000; ++fragIndex)
+        {
+            const unsigned fragLen(fragIndex * 10);
+            report_os << fragLen << '\t' << rgs.fragStats.cdf(fragLen) << '\n';
+        }
+#endif
     }
 }
 
diff --git a/src/c++/lib/applications/SummarizeAlignmentStats/SummarizeAlignmentStats.hh b/src/c++/lib/applications/SummarizeAlignmentStats/SummarizeAlignmentStats.hh
index 9ce12e9..8d409aa 100644
--- a/src/c++/lib/applications/SummarizeAlignmentStats/SummarizeAlignmentStats.hh
+++ b/src/c++/lib/applications/SummarizeAlignmentStats/SummarizeAlignmentStats.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/applications/SummarizeSVLoci/CMakeLists.txt b/src/c++/lib/applications/SummarizeSVLoci/CMakeLists.txt
index 977b8e2..d155110 100644
--- a/src/c++/lib/applications/SummarizeSVLoci/CMakeLists.txt
+++ b/src/c++/lib/applications/SummarizeSVLoci/CMakeLists.txt
@@ -1,6 +1,6 @@
 #
 # Manta - Structural Variant and Indel Caller
-# Copyright (c) 2013-2016 Illumina, Inc.
+# Copyright (c) 2013-2017 Illumina, Inc.
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/applications/SummarizeSVLoci/SSLOptions.cpp b/src/c++/lib/applications/SummarizeSVLoci/SSLOptions.cpp
index fdb883d..587c9ab 100644
--- a/src/c++/lib/applications/SummarizeSVLoci/SSLOptions.cpp
+++ b/src/c++/lib/applications/SummarizeSVLoci/SSLOptions.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/applications/SummarizeSVLoci/SSLOptions.hh b/src/c++/lib/applications/SummarizeSVLoci/SSLOptions.hh
index 447eab6..dbaba7d 100644
--- a/src/c++/lib/applications/SummarizeSVLoci/SSLOptions.hh
+++ b/src/c++/lib/applications/SummarizeSVLoci/SSLOptions.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/applications/SummarizeSVLoci/SummarizeSVLoci.cpp b/src/c++/lib/applications/SummarizeSVLoci/SummarizeSVLoci.cpp
index c007ff3..878563c 100644
--- a/src/c++/lib/applications/SummarizeSVLoci/SummarizeSVLoci.cpp
+++ b/src/c++/lib/applications/SummarizeSVLoci/SummarizeSVLoci.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/applications/SummarizeSVLoci/SummarizeSVLoci.hh b/src/c++/lib/applications/SummarizeSVLoci/SummarizeSVLoci.hh
index 6156a58..0becdcb 100644
--- a/src/c++/lib/applications/SummarizeSVLoci/SummarizeSVLoci.hh
+++ b/src/c++/lib/applications/SummarizeSVLoci/SummarizeSVLoci.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/applications/TestAssembler/CMakeLists.txt b/src/c++/lib/applications/TestAssembler/CMakeLists.txt
index 977b8e2..d155110 100644
--- a/src/c++/lib/applications/TestAssembler/CMakeLists.txt
+++ b/src/c++/lib/applications/TestAssembler/CMakeLists.txt
@@ -1,6 +1,6 @@
 #
 # Manta - Structural Variant and Indel Caller
-# Copyright (c) 2013-2016 Illumina, Inc.
+# Copyright (c) 2013-2017 Illumina, Inc.
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/applications/TestAssembler/TestAssembler.cpp b/src/c++/lib/applications/TestAssembler/TestAssembler.cpp
index fb982f4..100f508 100644
--- a/src/c++/lib/applications/TestAssembler/TestAssembler.cpp
+++ b/src/c++/lib/applications/TestAssembler/TestAssembler.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/applications/TestAssembler/TestAssembler.hh b/src/c++/lib/applications/TestAssembler/TestAssembler.hh
index 6368908..0fb6622 100644
--- a/src/c++/lib/applications/TestAssembler/TestAssembler.hh
+++ b/src/c++/lib/applications/TestAssembler/TestAssembler.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/applications/TestAssembler/TestAssemblerOptions.cpp b/src/c++/lib/applications/TestAssembler/TestAssemblerOptions.cpp
index 5ab18ca..616b2fa 100644
--- a/src/c++/lib/applications/TestAssembler/TestAssemblerOptions.cpp
+++ b/src/c++/lib/applications/TestAssembler/TestAssemblerOptions.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/applications/TestAssembler/TestAssemblerOptions.hh b/src/c++/lib/applications/TestAssembler/TestAssemblerOptions.hh
index 098df2d..51a67d1 100644
--- a/src/c++/lib/applications/TestAssembler/TestAssemblerOptions.hh
+++ b/src/c++/lib/applications/TestAssembler/TestAssemblerOptions.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/applications/TestAssembler/extractAssemblyReads.cpp b/src/c++/lib/applications/TestAssembler/extractAssemblyReads.cpp
index bf630de..8bec356 100644
--- a/src/c++/lib/applications/TestAssembler/extractAssemblyReads.cpp
+++ b/src/c++/lib/applications/TestAssembler/extractAssemblyReads.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/applications/TestAssembler/extractAssemblyReads.hh b/src/c++/lib/applications/TestAssembler/extractAssemblyReads.hh
index 7546843..1fc3558 100644
--- a/src/c++/lib/applications/TestAssembler/extractAssemblyReads.hh
+++ b/src/c++/lib/applications/TestAssembler/extractAssemblyReads.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/appstats/CMakeLists.txt b/src/c++/lib/appstats/CMakeLists.txt
index 977b8e2..d155110 100644
--- a/src/c++/lib/appstats/CMakeLists.txt
+++ b/src/c++/lib/appstats/CMakeLists.txt
@@ -1,6 +1,6 @@
 #
 # Manta - Structural Variant and Indel Caller
-# Copyright (c) 2013-2016 Illumina, Inc.
+# Copyright (c) 2013-2017 Illumina, Inc.
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/appstats/GSCEdgeStats.cpp b/src/c++/lib/appstats/GSCEdgeStats.cpp
index d62f9b8..8b0400d 100644
--- a/src/c++/lib/appstats/GSCEdgeStats.cpp
+++ b/src/c++/lib/appstats/GSCEdgeStats.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/appstats/GSCEdgeStats.hh b/src/c++/lib/appstats/GSCEdgeStats.hh
index 225a4aa..8ab4f53 100644
--- a/src/c++/lib/appstats/GSCEdgeStats.hh
+++ b/src/c++/lib/appstats/GSCEdgeStats.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/appstats/SVFinderStats.cpp b/src/c++/lib/appstats/SVFinderStats.cpp
index 1854463..342a318 100644
--- a/src/c++/lib/appstats/SVFinderStats.cpp
+++ b/src/c++/lib/appstats/SVFinderStats.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/appstats/SVFinderStats.hh b/src/c++/lib/appstats/SVFinderStats.hh
index 5ea482c..f11ccb2 100644
--- a/src/c++/lib/appstats/SVFinderStats.hh
+++ b/src/c++/lib/appstats/SVFinderStats.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
@@ -31,6 +30,10 @@
 #include <iosfwd>
 
 
+/// statistics accumulated during the SVFinder process
+///
+/// this includes trackers for filtered edges, sv candidates, and reads/read-pairs
+///
 struct SVFinderStats
 {
     SVFinderStats() {}
@@ -60,11 +63,21 @@ struct SVFinderStats
     void
     report(std::ostream& os) const;
 
-
+    /// number of edges filtered out from the SV finding process
     uint64_t edgeFilter = 0;
+
+    /// number of sv candidates filtered out for being supported only be semi-mapped read pairs
     uint64_t semiMappedFilter = 0;
+
+    /// number of complex candidates filtered out for not meeting hard evidence count thresholds
     uint64_t ComplexLowCountFilter = 0;
+
+    /// number of complex candidates filtered out for evidence counts which are not significant relative to noise rates
+    /// in the data
     uint64_t ComplexLowSignalFilter = 0;
+
+    /// number of read-pairs filtered out becuase the read1 and read2 alignment records contained conflicting
+    /// information
     uint64_t unmatchedReadPairFilter = 0;
 };
 
diff --git a/src/c++/lib/assembly/AssembledContig.cpp b/src/c++/lib/assembly/AssembledContig.cpp
index 37edda5..ecac342 100644
--- a/src/c++/lib/assembly/AssembledContig.cpp
+++ b/src/c++/lib/assembly/AssembledContig.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/assembly/AssembledContig.hh b/src/c++/lib/assembly/AssembledContig.hh
index da16839..f9a6dd1 100644
--- a/src/c++/lib/assembly/AssembledContig.hh
+++ b/src/c++/lib/assembly/AssembledContig.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/assembly/AssemblyReadInfo.hh b/src/c++/lib/assembly/AssemblyReadInfo.hh
index f068169..5632c99 100644
--- a/src/c++/lib/assembly/AssemblyReadInfo.hh
+++ b/src/c++/lib/assembly/AssemblyReadInfo.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/assembly/CMakeLists.txt b/src/c++/lib/assembly/CMakeLists.txt
index 977b8e2..d155110 100644
--- a/src/c++/lib/assembly/CMakeLists.txt
+++ b/src/c++/lib/assembly/CMakeLists.txt
@@ -1,6 +1,6 @@
 #
 # Manta - Structural Variant and Indel Caller
-# Copyright (c) 2013-2016 Illumina, Inc.
+# Copyright (c) 2013-2017 Illumina, Inc.
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/assembly/IterativeAssembler.cpp b/src/c++/lib/assembly/IterativeAssembler.cpp
index 9ed5d8a..92e1c9a 100644
--- a/src/c++/lib/assembly/IterativeAssembler.cpp
+++ b/src/c++/lib/assembly/IterativeAssembler.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/assembly/IterativeAssembler.hh b/src/c++/lib/assembly/IterativeAssembler.hh
index 09af184..7779263 100644
--- a/src/c++/lib/assembly/IterativeAssembler.hh
+++ b/src/c++/lib/assembly/IterativeAssembler.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/assembly/SmallAssembler.cpp b/src/c++/lib/assembly/SmallAssembler.cpp
index 00ed10a..06924c6 100644
--- a/src/c++/lib/assembly/SmallAssembler.cpp
+++ b/src/c++/lib/assembly/SmallAssembler.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/assembly/SmallAssembler.hh b/src/c++/lib/assembly/SmallAssembler.hh
index ea09ba1..bc6ddf5 100644
--- a/src/c++/lib/assembly/SmallAssembler.hh
+++ b/src/c++/lib/assembly/SmallAssembler.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/assembly/test/CMakeLists.txt b/src/c++/lib/assembly/test/CMakeLists.txt
index ebb21c8..c56c210 100644
--- a/src/c++/lib/assembly/test/CMakeLists.txt
+++ b/src/c++/lib/assembly/test/CMakeLists.txt
@@ -1,6 +1,6 @@
 #
 # Manta - Structural Variant and Indel Caller
-# Copyright (c) 2013-2016 Illumina, Inc.
+# Copyright (c) 2013-2017 Illumina, Inc.
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/assembly/test/IterativeAssemblerTest.cpp b/src/c++/lib/assembly/test/IterativeAssemblerTest.cpp
index 1fa49bf..21c17cc 100644
--- a/src/c++/lib/assembly/test/IterativeAssemblerTest.cpp
+++ b/src/c++/lib/assembly/test/IterativeAssemblerTest.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/assembly/test/SmallAssemblerTest.cpp b/src/c++/lib/assembly/test/SmallAssemblerTest.cpp
index ad9e75a..2797d07 100644
--- a/src/c++/lib/assembly/test/SmallAssemblerTest.cpp
+++ b/src/c++/lib/assembly/test/SmallAssemblerTest.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/assembly/test/test_main.cpp b/src/c++/lib/assembly/test/test_main.cpp
index 86aafa5..dc2466f 100644
--- a/src/c++/lib/assembly/test/test_main.cpp
+++ b/src/c++/lib/assembly/test/test_main.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/blt_util/CMakeLists.txt b/src/c++/lib/blt_util/CMakeLists.txt
index 9511b67..7e9a46c 100644
--- a/src/c++/lib/blt_util/CMakeLists.txt
+++ b/src/c++/lib/blt_util/CMakeLists.txt
@@ -1,6 +1,6 @@
 #
 # Manta - Structural Variant and Indel Caller
-# Copyright (c) 2013-2016 Illumina, Inc.
+# Copyright (c) 2013-2017 Illumina, Inc.
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/blt_util/CircularCounter.hh b/src/c++/lib/blt_util/CircularCounter.hh
index e742f24..8d19612 100644
--- a/src/c++/lib/blt_util/CircularCounter.hh
+++ b/src/c++/lib/blt_util/CircularCounter.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/blt_util/LinearScaler.hh b/src/c++/lib/blt_util/LinearScaler.hh
index 610ec6b..6c2fe53 100644
--- a/src/c++/lib/blt_util/LinearScaler.hh
+++ b/src/c++/lib/blt_util/LinearScaler.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/blt_util/MedianDepthTracker.hh b/src/c++/lib/blt_util/MedianDepthTracker.hh
index a034ef6..db91e54 100644
--- a/src/c++/lib/blt_util/MedianDepthTracker.hh
+++ b/src/c++/lib/blt_util/MedianDepthTracker.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/blt_util/PolymorphicObject.hh b/src/c++/lib/blt_util/PolymorphicObject.hh
index 5c84e39..518aef8 100644
--- a/src/c++/lib/blt_util/PolymorphicObject.hh
+++ b/src/c++/lib/blt_util/PolymorphicObject.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/blt_util/RangeMap.hh b/src/c++/lib/blt_util/RangeMap.hh
index ea5e596..92f84d7 100644
--- a/src/c++/lib/blt_util/RangeMap.hh
+++ b/src/c++/lib/blt_util/RangeMap.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/blt_util/ReadKey.cpp b/src/c++/lib/blt_util/ReadKey.cpp
index d819569..b589482 100644
--- a/src/c++/lib/blt_util/ReadKey.cpp
+++ b/src/c++/lib/blt_util/ReadKey.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/blt_util/ReadKey.hh b/src/c++/lib/blt_util/ReadKey.hh
index 73772fb..2be7d12 100644
--- a/src/c++/lib/blt_util/ReadKey.hh
+++ b/src/c++/lib/blt_util/ReadKey.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/blt_util/RegionSum.hh b/src/c++/lib/blt_util/RegionSum.hh
index 14f50e6..b3cff54 100644
--- a/src/c++/lib/blt_util/RegionSum.hh
+++ b/src/c++/lib/blt_util/RegionSum.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/blt_util/RegionTracker.cpp b/src/c++/lib/blt_util/RegionTracker.cpp
index 54e3ed4..a9ce1f8 100644
--- a/src/c++/lib/blt_util/RegionTracker.cpp
+++ b/src/c++/lib/blt_util/RegionTracker.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/blt_util/RegionTracker.hh b/src/c++/lib/blt_util/RegionTracker.hh
index ce678ca..d67262a 100644
--- a/src/c++/lib/blt_util/RegionTracker.hh
+++ b/src/c++/lib/blt_util/RegionTracker.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
@@ -145,6 +144,12 @@ struct RegionPayloadTracker
         return _regions.empty();
     }
 
+    void
+    clear()
+    {
+        _regions.clear();
+    }
+
     /// is single position in a tracked region w/ payload?
     boost::optional<T>
     isIntersectRegion(
diff --git a/src/c++/lib/blt_util/RegionTrackerImpl.hh b/src/c++/lib/blt_util/RegionTrackerImpl.hh
index f2fed41..a721801 100644
--- a/src/c++/lib/blt_util/RegionTrackerImpl.hh
+++ b/src/c++/lib/blt_util/RegionTrackerImpl.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/blt_util/SampleVector.hh b/src/c++/lib/blt_util/SampleVector.hh
index cff7d7a..db07eb0 100644
--- a/src/c++/lib/blt_util/SampleVector.hh
+++ b/src/c++/lib/blt_util/SampleVector.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/blt_util/SampleVectorImpl.hh b/src/c++/lib/blt_util/SampleVectorImpl.hh
index 2d65ca2..a673402 100644
--- a/src/c++/lib/blt_util/SampleVectorImpl.hh
+++ b/src/c++/lib/blt_util/SampleVectorImpl.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/blt_util/SimpleAlignment.cpp b/src/c++/lib/blt_util/SimpleAlignment.cpp
index 2002808..cce97df 100644
--- a/src/c++/lib/blt_util/SimpleAlignment.cpp
+++ b/src/c++/lib/blt_util/SimpleAlignment.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/blt_util/SimpleAlignment.hh b/src/c++/lib/blt_util/SimpleAlignment.hh
index 8ed72c5..a50eecf 100644
--- a/src/c++/lib/blt_util/SimpleAlignment.hh
+++ b/src/c++/lib/blt_util/SimpleAlignment.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/blt_util/SizeDistribution.cpp b/src/c++/lib/blt_util/SizeDistribution.cpp
index 67def5d..90425c4 100644
--- a/src/c++/lib/blt_util/SizeDistribution.cpp
+++ b/src/c++/lib/blt_util/SizeDistribution.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/blt_util/SizeDistribution.hh b/src/c++/lib/blt_util/SizeDistribution.hh
index 08b90ef..6d86cf6 100644
--- a/src/c++/lib/blt_util/SizeDistribution.hh
+++ b/src/c++/lib/blt_util/SizeDistribution.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/blt_util/align_path.cpp b/src/c++/lib/blt_util/align_path.cpp
index 7133f1c..712d201 100644
--- a/src/c++/lib/blt_util/align_path.cpp
+++ b/src/c++/lib/blt_util/align_path.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/blt_util/align_path.hh b/src/c++/lib/blt_util/align_path.hh
index 15dfe9b..9c9f7f9 100644
--- a/src/c++/lib/blt_util/align_path.hh
+++ b/src/c++/lib/blt_util/align_path.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/blt_util/align_path_impl.hh b/src/c++/lib/blt_util/align_path_impl.hh
index af95d3e..7bde53a 100644
--- a/src/c++/lib/blt_util/align_path_impl.hh
+++ b/src/c++/lib/blt_util/align_path_impl.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/blt_util/align_path_match_descriptor.cpp b/src/c++/lib/blt_util/align_path_match_descriptor.cpp
index c95e0b2..ccdda7a 100644
--- a/src/c++/lib/blt_util/align_path_match_descriptor.cpp
+++ b/src/c++/lib/blt_util/align_path_match_descriptor.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/blt_util/align_path_match_descriptor.hh b/src/c++/lib/blt_util/align_path_match_descriptor.hh
index 775bcdc..7df3aa6 100644
--- a/src/c++/lib/blt_util/align_path_match_descriptor.hh
+++ b/src/c++/lib/blt_util/align_path_match_descriptor.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/blt_util/align_path_util.hh b/src/c++/lib/blt_util/align_path_util.hh
index de496da..6aec6b0 100644
--- a/src/c++/lib/blt_util/align_path_util.hh
+++ b/src/c++/lib/blt_util/align_path_util.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/blt_util/basic_matrix.hh b/src/c++/lib/blt_util/basic_matrix.hh
index 956a5ad..9332f22 100644
--- a/src/c++/lib/blt_util/basic_matrix.hh
+++ b/src/c++/lib/blt_util/basic_matrix.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/blt_util/binomial_test.cpp b/src/c++/lib/blt_util/binomial_test.cpp
index 5dc9065..6051e7a 100644
--- a/src/c++/lib/blt_util/binomial_test.cpp
+++ b/src/c++/lib/blt_util/binomial_test.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/blt_util/binomial_test.hh b/src/c++/lib/blt_util/binomial_test.hh
index 4d907ce..846a3f5 100644
--- a/src/c++/lib/blt_util/binomial_test.hh
+++ b/src/c++/lib/blt_util/binomial_test.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/blt_util/blt_exception.cpp b/src/c++/lib/blt_util/blt_exception.cpp
index 80fba71..c74a1e5 100644
--- a/src/c++/lib/blt_util/blt_exception.cpp
+++ b/src/c++/lib/blt_util/blt_exception.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/blt_util/blt_exception.hh b/src/c++/lib/blt_util/blt_exception.hh
index b3cdacf..7146e99 100644
--- a/src/c++/lib/blt_util/blt_exception.hh
+++ b/src/c++/lib/blt_util/blt_exception.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/blt_util/blt_types.hh b/src/c++/lib/blt_util/blt_types.hh
index a4b6d06..dc5b9ec 100644
--- a/src/c++/lib/blt_util/blt_types.hh
+++ b/src/c++/lib/blt_util/blt_types.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/blt_util/chrom_depth_map.cpp b/src/c++/lib/blt_util/chrom_depth_map.cpp
index 5248418..c663025 100644
--- a/src/c++/lib/blt_util/chrom_depth_map.cpp
+++ b/src/c++/lib/blt_util/chrom_depth_map.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/blt_util/chrom_depth_map.hh b/src/c++/lib/blt_util/chrom_depth_map.hh
index fd2caaa..d2d3979 100644
--- a/src/c++/lib/blt_util/chrom_depth_map.hh
+++ b/src/c++/lib/blt_util/chrom_depth_map.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/blt_util/compat_unistd.h b/src/c++/lib/blt_util/compat_unistd.h
index 2799378..907db5f 100644
--- a/src/c++/lib/blt_util/compat_unistd.h
+++ b/src/c++/lib/blt_util/compat_unistd.h
@@ -49,4 +49,4 @@ typedef unsigned __int16  uint16_t;
 typedef unsigned __int32  uint32_t;
 typedef unsigned __int64  uint64_t;
 
-#endif /* unistd.h  */
\ No newline at end of file
+#endif /* unistd.h  */
diff --git a/src/c++/lib/blt_util/compat_util.cpp b/src/c++/lib/blt_util/compat_util.cpp
index 50c6202..79dc941 100644
--- a/src/c++/lib/blt_util/compat_util.cpp
+++ b/src/c++/lib/blt_util/compat_util.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/blt_util/compat_util.hh b/src/c++/lib/blt_util/compat_util.hh
index 2977619..341ccf8 100644
--- a/src/c++/lib/blt_util/compat_util.hh
+++ b/src/c++/lib/blt_util/compat_util.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/blt_util/depth_buffer.hh b/src/c++/lib/blt_util/depth_buffer.hh
index 75caab6..510e483 100644
--- a/src/c++/lib/blt_util/depth_buffer.hh
+++ b/src/c++/lib/blt_util/depth_buffer.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/blt_util/depth_buffer_util.cpp b/src/c++/lib/blt_util/depth_buffer_util.cpp
index 7d9fee1..d56e998 100644
--- a/src/c++/lib/blt_util/depth_buffer_util.cpp
+++ b/src/c++/lib/blt_util/depth_buffer_util.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/blt_util/depth_buffer_util.hh b/src/c++/lib/blt_util/depth_buffer_util.hh
index 92acbcf..e4410fc 100644
--- a/src/c++/lib/blt_util/depth_buffer_util.hh
+++ b/src/c++/lib/blt_util/depth_buffer_util.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/blt_util/flyweight_observer.hh b/src/c++/lib/blt_util/flyweight_observer.hh
index 92d259a..7704be6 100644
--- a/src/c++/lib/blt_util/flyweight_observer.hh
+++ b/src/c++/lib/blt_util/flyweight_observer.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/blt_util/id_map.hh b/src/c++/lib/blt_util/id_map.hh
index 03b8964..5502226 100644
--- a/src/c++/lib/blt_util/id_map.hh
+++ b/src/c++/lib/blt_util/id_map.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/blt_util/input_stream_handler.cpp b/src/c++/lib/blt_util/input_stream_handler.cpp
index 8575534..0290e23 100644
--- a/src/c++/lib/blt_util/input_stream_handler.cpp
+++ b/src/c++/lib/blt_util/input_stream_handler.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/blt_util/input_stream_handler.hh b/src/c++/lib/blt_util/input_stream_handler.hh
index 05c6b1f..91e6f81 100644
--- a/src/c++/lib/blt_util/input_stream_handler.hh
+++ b/src/c++/lib/blt_util/input_stream_handler.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/blt_util/io_util.cpp b/src/c++/lib/blt_util/io_util.cpp
index 3580c7c..69a5230 100644
--- a/src/c++/lib/blt_util/io_util.cpp
+++ b/src/c++/lib/blt_util/io_util.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/blt_util/io_util.hh b/src/c++/lib/blt_util/io_util.hh
index df6239e..9a886a0 100644
--- a/src/c++/lib/blt_util/io_util.hh
+++ b/src/c++/lib/blt_util/io_util.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/blt_util/istream_line_splitter.cpp b/src/c++/lib/blt_util/istream_line_splitter.cpp
index 80a6922..992875c 100644
--- a/src/c++/lib/blt_util/istream_line_splitter.cpp
+++ b/src/c++/lib/blt_util/istream_line_splitter.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/blt_util/istream_line_splitter.hh b/src/c++/lib/blt_util/istream_line_splitter.hh
index 24095bf..2549d81 100644
--- a/src/c++/lib/blt_util/istream_line_splitter.hh
+++ b/src/c++/lib/blt_util/istream_line_splitter.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/blt_util/known_pos_range2.cpp b/src/c++/lib/blt_util/known_pos_range2.cpp
index 4c4306d..27a75d2 100644
--- a/src/c++/lib/blt_util/known_pos_range2.cpp
+++ b/src/c++/lib/blt_util/known_pos_range2.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/blt_util/known_pos_range2.hh b/src/c++/lib/blt_util/known_pos_range2.hh
index cfd4c3c..739d70b 100644
--- a/src/c++/lib/blt_util/known_pos_range2.hh
+++ b/src/c++/lib/blt_util/known_pos_range2.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
@@ -95,6 +94,13 @@ struct known_pos_range2
         _end_pos += offsetSize;
     }
 
+    void
+    makeNonNegative()
+    {
+        if (_begin_pos < 0) _begin_pos = 0;
+        if (_end_pos < 0) _end_pos = 0;
+    }
+
     pos_t
     begin_pos() const
     {
diff --git a/src/c++/lib/blt_util/log.cpp b/src/c++/lib/blt_util/log.cpp
index 670d4c9..b6cf02e 100644
--- a/src/c++/lib/blt_util/log.cpp
+++ b/src/c++/lib/blt_util/log.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/blt_util/log.hh b/src/c++/lib/blt_util/log.hh
index b57005c..60fc160 100644
--- a/src/c++/lib/blt_util/log.hh
+++ b/src/c++/lib/blt_util/log.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/blt_util/math_util.hh b/src/c++/lib/blt_util/math_util.hh
index 36f41ed..93339ba 100644
--- a/src/c++/lib/blt_util/math_util.hh
+++ b/src/c++/lib/blt_util/math_util.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/blt_util/observer.hh b/src/c++/lib/blt_util/observer.hh
index c03b481..f145922 100644
--- a/src/c++/lib/blt_util/observer.hh
+++ b/src/c++/lib/blt_util/observer.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/blt_util/parse_util.cpp b/src/c++/lib/blt_util/parse_util.cpp
index 78ff306..edb5e7c 100644
--- a/src/c++/lib/blt_util/parse_util.cpp
+++ b/src/c++/lib/blt_util/parse_util.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/blt_util/parse_util.hh b/src/c++/lib/blt_util/parse_util.hh
index a1a97d9..3eee785 100644
--- a/src/c++/lib/blt_util/parse_util.hh
+++ b/src/c++/lib/blt_util/parse_util.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/blt_util/pos_processor_base.hh b/src/c++/lib/blt_util/pos_processor_base.hh
index 4a60f9c..7e91955 100644
--- a/src/c++/lib/blt_util/pos_processor_base.hh
+++ b/src/c++/lib/blt_util/pos_processor_base.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/blt_util/pos_range.cpp b/src/c++/lib/blt_util/pos_range.cpp
index f9791d7..dcbee29 100644
--- a/src/c++/lib/blt_util/pos_range.cpp
+++ b/src/c++/lib/blt_util/pos_range.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/blt_util/pos_range.hh b/src/c++/lib/blt_util/pos_range.hh
index 176dd22..4765f50 100644
--- a/src/c++/lib/blt_util/pos_range.hh
+++ b/src/c++/lib/blt_util/pos_range.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
@@ -146,6 +145,23 @@ struct pos_range
         return false;
     }
 
+    bool
+    operator==(const pos_range& rhs) const
+    {
+        if ((is_begin_pos != rhs.is_begin_pos) || (is_end_pos != rhs.is_end_pos)) return false;
+
+        if (is_begin_pos)
+        {
+            if (begin_pos!=rhs.begin_pos) return false;
+        }
+        if (is_end_pos)
+        {
+            if (end_pos!=rhs.end_pos) return false;
+        }
+
+        return true;
+    }
+
     template<class Archive>
     void serialize(Archive& ar, const unsigned /* version */)
     {
@@ -169,11 +185,8 @@ struct known_pos_range : public pos_range
     operator<(const pos_range& rhs) const
     {
         if (begin_pos < rhs.begin_pos) return true;
-        if (begin_pos == rhs.begin_pos)
-        {
-            if (end_pos < rhs.end_pos) return true;
-        }
-        return false;
+        if (begin_pos != rhs.begin_pos) return false;
+        return (end_pos < rhs.end_pos);
     }
 
     bool
diff --git a/src/c++/lib/blt_util/prob_util.cpp b/src/c++/lib/blt_util/prob_util.cpp
index 73c1a80..89f4309 100644
--- a/src/c++/lib/blt_util/prob_util.cpp
+++ b/src/c++/lib/blt_util/prob_util.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/blt_util/prob_util.hh b/src/c++/lib/blt_util/prob_util.hh
index 000d9c2..63f24c8 100644
--- a/src/c++/lib/blt_util/prob_util.hh
+++ b/src/c++/lib/blt_util/prob_util.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
@@ -190,14 +189,16 @@ prob_comp(It begin,
     return val;
 }
 
-
-/// given a log() transformed distribution, transform it to a standard
-/// distro, set max_idx to the index of the most probable component
+/// probability distro normalization for log-transformed input
+///
+/// \param max_idx[out] set to the index of the most probable component
+///
 template <typename It>
 void
-normalize_ln_distro(const It pbegin,
-                    const It pend,
-                    unsigned& max_idx)
+normalize_ln_distro(
+    const It pbegin,
+    const It pend,
+    unsigned& max_idx)
 {
     typedef typename std::iterator_traits<It>::value_type float_type;
 
@@ -231,19 +232,20 @@ normalize_ln_distro(const It pbegin,
 }
 
 
-// optimized version of probability normalization
-//
-// values significantly less than opt-max will be treated as zero probability
-//
-// opt-max is found within the subset of the distribution where the predicate
-// iterator is true
-//
+/// optimized version of probability distro normalization for log-transformed input
+///
+/// optimization is to treat values significantly less than opt-max as zero probability
+///
+/// opt-max is found within the subset of the distribution where the predicate
+/// iterator is true
+///
 template <typename It,typename It2>
 void
-opt_normalize_ln_distro(const It pbegin,
-                        const It pend,
-                        const It2 pred_begin,
-                        unsigned& max_idx)
+opt_normalize_ln_distro(
+    const It pbegin,
+    const It pend,
+    const It2 pred_begin,
+    unsigned& max_idx)
 {
     typedef typename std::iterator_traits<It>::value_type float_type;
 
diff --git a/src/c++/lib/blt_util/qscore.hh b/src/c++/lib/blt_util/qscore.hh
index 59154b8..6195297 100644
--- a/src/c++/lib/blt_util/qscore.hh
+++ b/src/c++/lib/blt_util/qscore.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
@@ -30,6 +29,7 @@
 
 #include <algorithm>
 #include <limits>
+#include <type_traits>
 
 
 //
@@ -44,6 +44,7 @@ template <typename FloatType>
 FloatType
 error_prob_to_phred(const FloatType prob)
 {
+    static_assert(std::is_floating_point<FloatType>::value, "Transform requires floating point type.");
     static const FloatType minlog10(static_cast<FloatType>(std::numeric_limits<FloatType>::min_exponent10));
     return -10.*std::max(minlog10,std::log10(prob));
 }
@@ -52,6 +53,7 @@ template <typename FloatType>
 FloatType
 ln_error_prob_to_phred(const FloatType lnProb)
 {
+    static_assert(std::is_floating_point<FloatType>::value, "Transform requires floating point type.");
     static const FloatType minlog10(static_cast<FloatType>(std::numeric_limits<FloatType>::min_exponent10));
     static const FloatType ln10(std::log(static_cast<FloatType>(10)));
     return -10.*std::max(minlog10,lnProb/ln10);
diff --git a/src/c++/lib/blt_util/qscore_cache.cpp b/src/c++/lib/blt_util/qscore_cache.cpp
index 2530ec0..0859df2 100644
--- a/src/c++/lib/blt_util/qscore_cache.cpp
+++ b/src/c++/lib/blt_util/qscore_cache.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/blt_util/qscore_cache.hh b/src/c++/lib/blt_util/qscore_cache.hh
index 2d04449..d89b726 100644
--- a/src/c++/lib/blt_util/qscore_cache.hh
+++ b/src/c++/lib/blt_util/qscore_cache.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/blt_util/qscore_snp.cpp b/src/c++/lib/blt_util/qscore_snp.cpp
index b763419..be69719 100644
--- a/src/c++/lib/blt_util/qscore_snp.cpp
+++ b/src/c++/lib/blt_util/qscore_snp.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/blt_util/qscore_snp.hh b/src/c++/lib/blt_util/qscore_snp.hh
index 574d09b..9a3d938 100644
--- a/src/c++/lib/blt_util/qscore_snp.hh
+++ b/src/c++/lib/blt_util/qscore_snp.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/blt_util/reference_contig_segment.hh b/src/c++/lib/blt_util/reference_contig_segment.hh
index f7b3aec..9fec2a3 100644
--- a/src/c++/lib/blt_util/reference_contig_segment.hh
+++ b/src/c++/lib/blt_util/reference_contig_segment.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/blt_util/seq_printer.cpp b/src/c++/lib/blt_util/seq_printer.cpp
index 429c66d..1d85add 100644
--- a/src/c++/lib/blt_util/seq_printer.cpp
+++ b/src/c++/lib/blt_util/seq_printer.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/blt_util/seq_printer.hh b/src/c++/lib/blt_util/seq_printer.hh
index acce8e5..62cf599 100644
--- a/src/c++/lib/blt_util/seq_printer.hh
+++ b/src/c++/lib/blt_util/seq_printer.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/blt_util/seq_util.cpp b/src/c++/lib/blt_util/seq_util.cpp
index f5325b6..82d05a5 100644
--- a/src/c++/lib/blt_util/seq_util.cpp
+++ b/src/c++/lib/blt_util/seq_util.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/blt_util/seq_util.hh b/src/c++/lib/blt_util/seq_util.hh
index 1c2378c..838a6c2 100644
--- a/src/c++/lib/blt_util/seq_util.hh
+++ b/src/c++/lib/blt_util/seq_util.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/blt_util/set_util.hh b/src/c++/lib/blt_util/set_util.hh
index 48b2c86..3d673bb 100644
--- a/src/c++/lib/blt_util/set_util.hh
+++ b/src/c++/lib/blt_util/set_util.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/blt_util/sig_handler.cpp b/src/c++/lib/blt_util/sig_handler.cpp
index 0af8d9b..eba1a5c 100644
--- a/src/c++/lib/blt_util/sig_handler.cpp
+++ b/src/c++/lib/blt_util/sig_handler.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/blt_util/sig_handler.hh b/src/c++/lib/blt_util/sig_handler.hh
index 1c5d060..2705897 100644
--- a/src/c++/lib/blt_util/sig_handler.hh
+++ b/src/c++/lib/blt_util/sig_handler.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/blt_util/stage_manager.cpp b/src/c++/lib/blt_util/stage_manager.cpp
index 7ee16ea..3c66506 100644
--- a/src/c++/lib/blt_util/stage_manager.cpp
+++ b/src/c++/lib/blt_util/stage_manager.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/blt_util/stage_manager.hh b/src/c++/lib/blt_util/stage_manager.hh
index 4f8a9ee..c02a5d4 100644
--- a/src/c++/lib/blt_util/stage_manager.hh
+++ b/src/c++/lib/blt_util/stage_manager.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/blt_util/stat_util.cpp b/src/c++/lib/blt_util/stat_util.cpp
index 014cae8..5f61bd9 100644
--- a/src/c++/lib/blt_util/stat_util.cpp
+++ b/src/c++/lib/blt_util/stat_util.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/blt_util/stat_util.hh b/src/c++/lib/blt_util/stat_util.hh
index 526d7e6..2af12f3 100644
--- a/src/c++/lib/blt_util/stat_util.hh
+++ b/src/c++/lib/blt_util/stat_util.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/blt_util/stream_stat.cpp b/src/c++/lib/blt_util/stream_stat.cpp
index ead3cb6..e413962 100644
--- a/src/c++/lib/blt_util/stream_stat.cpp
+++ b/src/c++/lib/blt_util/stream_stat.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/blt_util/stream_stat.hh b/src/c++/lib/blt_util/stream_stat.hh
index 03d78d1..144b6b7 100644
--- a/src/c++/lib/blt_util/stream_stat.hh
+++ b/src/c++/lib/blt_util/stream_stat.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/blt_util/string_util.cpp b/src/c++/lib/blt_util/string_util.cpp
index f2ac2df..fb8e1af 100644
--- a/src/c++/lib/blt_util/string_util.cpp
+++ b/src/c++/lib/blt_util/string_util.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/blt_util/string_util.hh b/src/c++/lib/blt_util/string_util.hh
index 080f0d1..a3b78da 100644
--- a/src/c++/lib/blt_util/string_util.hh
+++ b/src/c++/lib/blt_util/string_util.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/blt_util/test/CMakeLists.txt b/src/c++/lib/blt_util/test/CMakeLists.txt
index 83c64d7..1f7d1de 100644
--- a/src/c++/lib/blt_util/test/CMakeLists.txt
+++ b/src/c++/lib/blt_util/test/CMakeLists.txt
@@ -1,6 +1,6 @@
 #
 # Manta - Structural Variant and Indel Caller
-# Copyright (c) 2013-2016 Illumina, Inc.
+# Copyright (c) 2013-2017 Illumina, Inc.
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/blt_util/test/CircularCounter_test.cpp b/src/c++/lib/blt_util/test/CircularCounter_test.cpp
index f58187a..3d212ab 100644
--- a/src/c++/lib/blt_util/test/CircularCounter_test.cpp
+++ b/src/c++/lib/blt_util/test/CircularCounter_test.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/blt_util/test/MedianDepthTracker_test.cpp b/src/c++/lib/blt_util/test/MedianDepthTracker_test.cpp
index d48b335..bcbf475 100644
--- a/src/c++/lib/blt_util/test/MedianDepthTracker_test.cpp
+++ b/src/c++/lib/blt_util/test/MedianDepthTracker_test.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/blt_util/test/RangeMap_test.cpp b/src/c++/lib/blt_util/test/RangeMap_test.cpp
index a25a0c1..9649fea 100644
--- a/src/c++/lib/blt_util/test/RangeMap_test.cpp
+++ b/src/c++/lib/blt_util/test/RangeMap_test.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/blt_util/test/RegionSum_test.cpp b/src/c++/lib/blt_util/test/RegionSum_test.cpp
index 6c2c0b2..4e625ad 100644
--- a/src/c++/lib/blt_util/test/RegionSum_test.cpp
+++ b/src/c++/lib/blt_util/test/RegionSum_test.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/blt_util/test/RegionTracker_test.cpp b/src/c++/lib/blt_util/test/RegionTracker_test.cpp
index 8bee9e3..765c2c7 100644
--- a/src/c++/lib/blt_util/test/RegionTracker_test.cpp
+++ b/src/c++/lib/blt_util/test/RegionTracker_test.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/blt_util/test/SampleVector_test.cpp b/src/c++/lib/blt_util/test/SampleVector_test.cpp
index 061ac78..0fdf119 100644
--- a/src/c++/lib/blt_util/test/SampleVector_test.cpp
+++ b/src/c++/lib/blt_util/test/SampleVector_test.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/blt_util/test/SimpleAlignment_test.cpp b/src/c++/lib/blt_util/test/SimpleAlignment_test.cpp
index 510b51a..9215ae4 100644
--- a/src/c++/lib/blt_util/test/SimpleAlignment_test.cpp
+++ b/src/c++/lib/blt_util/test/SimpleAlignment_test.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/blt_util/test/SizeDistribution_test.cpp b/src/c++/lib/blt_util/test/SizeDistribution_test.cpp
index dd5e974..adf9bd0 100644
--- a/src/c++/lib/blt_util/test/SizeDistribution_test.cpp
+++ b/src/c++/lib/blt_util/test/SizeDistribution_test.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/blt_util/test/align_path_test.cpp b/src/c++/lib/blt_util/test/align_path_test.cpp
index b396eef..f572789 100644
--- a/src/c++/lib/blt_util/test/align_path_test.cpp
+++ b/src/c++/lib/blt_util/test/align_path_test.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
@@ -177,6 +176,10 @@ BOOST_AUTO_TEST_CASE( test_apath_limit_ref_length )
 
     BOOST_REQUIRE_EQUAL(test_limit_case(testCigar,true,1),"1X");
     BOOST_REQUIRE_EQUAL(test_limit_case(testCigar,true,5),"1X3=1D");
+
+    static const std::string testCigar2("2=1X1=4I3=1X");
+    BOOST_REQUIRE_EQUAL(test_limit_case(testCigar2,false,5),"2=1X1=4I1=");
+    BOOST_REQUIRE_EQUAL(test_limit_case(testCigar2,true,5),"1X3=4I1=");
 }
 
 
diff --git a/src/c++/lib/blt_util/test/binomial_test_test.cpp b/src/c++/lib/blt_util/test/binomial_test_test.cpp
index 255ace4..71408f8 100644
--- a/src/c++/lib/blt_util/test/binomial_test_test.cpp
+++ b/src/c++/lib/blt_util/test/binomial_test_test.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/blt_util/test/boost_icl_test.cpp b/src/c++/lib/blt_util/test/boost_icl_test.cpp
index 3acee25..f319221 100644
--- a/src/c++/lib/blt_util/test/boost_icl_test.cpp
+++ b/src/c++/lib/blt_util/test/boost_icl_test.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/blt_util/test/compat_util_test.cpp b/src/c++/lib/blt_util/test/compat_util_test.cpp
index 92f8206..3a3b1a6 100644
--- a/src/c++/lib/blt_util/test/compat_util_test.cpp
+++ b/src/c++/lib/blt_util/test/compat_util_test.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/blt_util/test/depth_buffer_test.cpp b/src/c++/lib/blt_util/test/depth_buffer_test.cpp
index 48c852e..80b64f0 100644
--- a/src/c++/lib/blt_util/test/depth_buffer_test.cpp
+++ b/src/c++/lib/blt_util/test/depth_buffer_test.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/blt_util/test/id_map_test.cpp b/src/c++/lib/blt_util/test/id_map_test.cpp
index df34eb1..1aa831e 100644
--- a/src/c++/lib/blt_util/test/id_map_test.cpp
+++ b/src/c++/lib/blt_util/test/id_map_test.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/blt_util/test/io_util_test.cpp b/src/c++/lib/blt_util/test/io_util_test.cpp
index d08128f..20ff8b5 100644
--- a/src/c++/lib/blt_util/test/io_util_test.cpp
+++ b/src/c++/lib/blt_util/test/io_util_test.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/blt_util/test/istream_line_splitter_test.cpp b/src/c++/lib/blt_util/test/istream_line_splitter_test.cpp
index 10698e0..db70eec 100644
--- a/src/c++/lib/blt_util/test/istream_line_splitter_test.cpp
+++ b/src/c++/lib/blt_util/test/istream_line_splitter_test.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/blt_util/test/known_pos_range2_test.cpp b/src/c++/lib/blt_util/test/known_pos_range2_test.cpp
index 1b063bb..84370f2 100644
--- a/src/c++/lib/blt_util/test/known_pos_range2_test.cpp
+++ b/src/c++/lib/blt_util/test/known_pos_range2_test.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/blt_util/test/math_util_test.cpp b/src/c++/lib/blt_util/test/math_util_test.cpp
index ca09d33..099ab61 100644
--- a/src/c++/lib/blt_util/test/math_util_test.cpp
+++ b/src/c++/lib/blt_util/test/math_util_test.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/blt_util/test/observer_test.cpp b/src/c++/lib/blt_util/test/observer_test.cpp
index 5918d51..28fe2f2 100644
--- a/src/c++/lib/blt_util/test/observer_test.cpp
+++ b/src/c++/lib/blt_util/test/observer_test.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/blt_util/test/parse_util_test.cpp b/src/c++/lib/blt_util/test/parse_util_test.cpp
index fec13a2..273e59b 100644
--- a/src/c++/lib/blt_util/test/parse_util_test.cpp
+++ b/src/c++/lib/blt_util/test/parse_util_test.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/blt_util/test/pos_range_test.cpp b/src/c++/lib/blt_util/test/pos_range_test.cpp
index 172ed42..5d9a5db 100644
--- a/src/c++/lib/blt_util/test/pos_range_test.cpp
+++ b/src/c++/lib/blt_util/test/pos_range_test.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/blt_util/test/prob_util_test.cpp b/src/c++/lib/blt_util/test/prob_util_test.cpp
index 8e734ad..fe775c2 100644
--- a/src/c++/lib/blt_util/test/prob_util_test.cpp
+++ b/src/c++/lib/blt_util/test/prob_util_test.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/blt_util/test/seq_util_test.cpp b/src/c++/lib/blt_util/test/seq_util_test.cpp
index 4415e88..b613909 100644
--- a/src/c++/lib/blt_util/test/seq_util_test.cpp
+++ b/src/c++/lib/blt_util/test/seq_util_test.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/blt_util/test/set_util_test.cpp b/src/c++/lib/blt_util/test/set_util_test.cpp
index cf3f578..4e956cd 100644
--- a/src/c++/lib/blt_util/test/set_util_test.cpp
+++ b/src/c++/lib/blt_util/test/set_util_test.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/blt_util/test/stage_manager_test.cpp b/src/c++/lib/blt_util/test/stage_manager_test.cpp
index 7b81289..176e10e 100644
--- a/src/c++/lib/blt_util/test/stage_manager_test.cpp
+++ b/src/c++/lib/blt_util/test/stage_manager_test.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/blt_util/test/stream_stat_test.cpp b/src/c++/lib/blt_util/test/stream_stat_test.cpp
index dae9557..8cd9739 100644
--- a/src/c++/lib/blt_util/test/stream_stat_test.cpp
+++ b/src/c++/lib/blt_util/test/stream_stat_test.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/blt_util/test/string_util_test.cpp b/src/c++/lib/blt_util/test/string_util_test.cpp
index c3c3867..fdc546b 100644
--- a/src/c++/lib/blt_util/test/string_util_test.cpp
+++ b/src/c++/lib/blt_util/test/string_util_test.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/blt_util/test/test_main.cpp b/src/c++/lib/blt_util/test/test_main.cpp
index 312e5ab..e251fb0 100644
--- a/src/c++/lib/blt_util/test/test_main.cpp
+++ b/src/c++/lib/blt_util/test/test_main.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/blt_util/test/window_util_test.cpp b/src/c++/lib/blt_util/test/window_util_test.cpp
index 0fec4a9..17cfddf 100644
--- a/src/c++/lib/blt_util/test/window_util_test.cpp
+++ b/src/c++/lib/blt_util/test/window_util_test.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/blt_util/thirdparty_pop.h b/src/c++/lib/blt_util/thirdparty_pop.h
index aba4f51..783ad60 100644
--- a/src/c++/lib/blt_util/thirdparty_pop.h
+++ b/src/c++/lib/blt_util/thirdparty_pop.h
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/blt_util/thirdparty_push.h b/src/c++/lib/blt_util/thirdparty_push.h
index 49e374a..443b4ef 100644
--- a/src/c++/lib/blt_util/thirdparty_push.h
+++ b/src/c++/lib/blt_util/thirdparty_push.h
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/blt_util/time_util.cpp b/src/c++/lib/blt_util/time_util.cpp
index 96f0969..4eb97c6 100644
--- a/src/c++/lib/blt_util/time_util.cpp
+++ b/src/c++/lib/blt_util/time_util.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/blt_util/time_util.hh b/src/c++/lib/blt_util/time_util.hh
index 8604774..a1339a9 100644
--- a/src/c++/lib/blt_util/time_util.hh
+++ b/src/c++/lib/blt_util/time_util.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/blt_util/window_util.hh b/src/c++/lib/blt_util/window_util.hh
index 1e260d2..cf21a53 100644
--- a/src/c++/lib/blt_util/window_util.hh
+++ b/src/c++/lib/blt_util/window_util.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
@@ -30,8 +29,8 @@
 #include <vector>
 
 
-// maintains the average of a set in a sliding window
-//
+/// maintains the average of a set in a sliding window
+///
 struct window_average
 {
     window_average(const int32_t init_full_size)
diff --git a/src/c++/lib/common/CMakeLists.txt b/src/c++/lib/common/CMakeLists.txt
index 977b8e2..d155110 100644
--- a/src/c++/lib/common/CMakeLists.txt
+++ b/src/c++/lib/common/CMakeLists.txt
@@ -1,6 +1,6 @@
 #
 # Manta - Structural Variant and Indel Caller
-# Copyright (c) 2013-2016 Illumina, Inc.
+# Copyright (c) 2013-2017 Illumina, Inc.
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/common/Exceptions.cpp b/src/c++/lib/common/Exceptions.cpp
index bbab286..a9d3090 100644
--- a/src/c++/lib/common/Exceptions.cpp
+++ b/src/c++/lib/common/Exceptions.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/common/Exceptions.hh b/src/c++/lib/common/Exceptions.hh
index 9d8fe1e..b79269a 100644
--- a/src/c++/lib/common/Exceptions.hh
+++ b/src/c++/lib/common/Exceptions.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/common/OutStream.cpp b/src/c++/lib/common/OutStream.cpp
index 60fa5a7..bdc79c8 100644
--- a/src/c++/lib/common/OutStream.cpp
+++ b/src/c++/lib/common/OutStream.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/common/OutStream.hh b/src/c++/lib/common/OutStream.hh
index 35a0018..f32de19 100644
--- a/src/c++/lib/common/OutStream.hh
+++ b/src/c++/lib/common/OutStream.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/common/Program.cpp b/src/c++/lib/common/Program.cpp
index e4e18c2..b6944fe 100644
--- a/src/c++/lib/common/Program.cpp
+++ b/src/c++/lib/common/Program.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/common/Program.hh b/src/c++/lib/common/Program.hh
index 890d083..bb11d45 100644
--- a/src/c++/lib/common/Program.hh
+++ b/src/c++/lib/common/Program.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/common/ProgramConfig.hh b/src/c++/lib/common/ProgramConfig.hh
index 31c2954..f6ee43d 100644
--- a/src/c++/lib/common/ProgramConfig.hh
+++ b/src/c++/lib/common/ProgramConfig.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/common/ProgramUtil.cpp b/src/c++/lib/common/ProgramUtil.cpp
index c8ad14e..bb327e9 100644
--- a/src/c++/lib/common/ProgramUtil.cpp
+++ b/src/c++/lib/common/ProgramUtil.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/common/ProgramUtil.hh b/src/c++/lib/common/ProgramUtil.hh
index e6cf4f1..f592de7 100644
--- a/src/c++/lib/common/ProgramUtil.hh
+++ b/src/c++/lib/common/ProgramUtil.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/common/ReadPairOrient.cpp b/src/c++/lib/common/ReadPairOrient.cpp
index f88ed3b..1f022cc 100644
--- a/src/c++/lib/common/ReadPairOrient.cpp
+++ b/src/c++/lib/common/ReadPairOrient.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/common/ReadPairOrient.hh b/src/c++/lib/common/ReadPairOrient.hh
index 4f1e52c..5716533 100644
--- a/src/c++/lib/common/ReadPairOrient.hh
+++ b/src/c++/lib/common/ReadPairOrient.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/common/config.h.in b/src/c++/lib/common/config.h.in
index 529ed12..b91ac1b 100644
--- a/src/c++/lib/common/config.h.in
+++ b/src/c++/lib/common/config.h.in
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/common/configBuildTimeInfo.h.in b/src/c++/lib/common/configBuildTimeInfo.h.in
index 79b8eb4..a9c7e05 100644
--- a/src/c++/lib/common/configBuildTimeInfo.h.in
+++ b/src/c++/lib/common/configBuildTimeInfo.h.in
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/common/test/CMakeLists.txt b/src/c++/lib/common/test/CMakeLists.txt
index 83c64d7..1f7d1de 100644
--- a/src/c++/lib/common/test/CMakeLists.txt
+++ b/src/c++/lib/common/test/CMakeLists.txt
@@ -1,6 +1,6 @@
 #
 # Manta - Structural Variant and Indel Caller
-# Copyright (c) 2013-2016 Illumina, Inc.
+# Copyright (c) 2013-2017 Illumina, Inc.
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/common/test/ReadPairOrientTest.cpp b/src/c++/lib/common/test/ReadPairOrientTest.cpp
index ec17e31..a964af0 100644
--- a/src/c++/lib/common/test/ReadPairOrientTest.cpp
+++ b/src/c++/lib/common/test/ReadPairOrientTest.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/common/test/test_main.cpp b/src/c++/lib/common/test/test_main.cpp
index 66d5348..db49619 100644
--- a/src/c++/lib/common/test/test_main.cpp
+++ b/src/c++/lib/common/test/test_main.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/format/CMakeLists.txt b/src/c++/lib/format/CMakeLists.txt
index 977b8e2..d155110 100644
--- a/src/c++/lib/format/CMakeLists.txt
+++ b/src/c++/lib/format/CMakeLists.txt
@@ -1,6 +1,6 @@
 #
 # Manta - Structural Variant and Indel Caller
-# Copyright (c) 2013-2016 Illumina, Inc.
+# Copyright (c) 2013-2017 Illumina, Inc.
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/format/VcfWriterCandidateSV.cpp b/src/c++/lib/format/VcfWriterCandidateSV.cpp
index 5158754..17dcf8e 100644
--- a/src/c++/lib/format/VcfWriterCandidateSV.cpp
+++ b/src/c++/lib/format/VcfWriterCandidateSV.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/format/VcfWriterCandidateSV.hh b/src/c++/lib/format/VcfWriterCandidateSV.hh
index 2ac838f..b19c3df 100644
--- a/src/c++/lib/format/VcfWriterCandidateSV.hh
+++ b/src/c++/lib/format/VcfWriterCandidateSV.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/format/VcfWriterDiploidSV.cpp b/src/c++/lib/format/VcfWriterDiploidSV.cpp
index c840cfa..1f0752e 100644
--- a/src/c++/lib/format/VcfWriterDiploidSV.cpp
+++ b/src/c++/lib/format/VcfWriterDiploidSV.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/format/VcfWriterDiploidSV.hh b/src/c++/lib/format/VcfWriterDiploidSV.hh
index dda43a1..b1afe46 100644
--- a/src/c++/lib/format/VcfWriterDiploidSV.hh
+++ b/src/c++/lib/format/VcfWriterDiploidSV.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/format/VcfWriterSV.cpp b/src/c++/lib/format/VcfWriterSV.cpp
index 4423ca1..5fca72c 100644
--- a/src/c++/lib/format/VcfWriterSV.cpp
+++ b/src/c++/lib/format/VcfWriterSV.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/format/VcfWriterSV.hh b/src/c++/lib/format/VcfWriterSV.hh
index 389c81f..2b40844 100644
--- a/src/c++/lib/format/VcfWriterSV.hh
+++ b/src/c++/lib/format/VcfWriterSV.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/format/VcfWriterScoredSV.hh b/src/c++/lib/format/VcfWriterScoredSV.hh
index e29cc2f..b644b83 100644
--- a/src/c++/lib/format/VcfWriterScoredSV.hh
+++ b/src/c++/lib/format/VcfWriterScoredSV.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/format/VcfWriterSomaticSV.cpp b/src/c++/lib/format/VcfWriterSomaticSV.cpp
index 9454756..ed8f533 100644
--- a/src/c++/lib/format/VcfWriterSomaticSV.cpp
+++ b/src/c++/lib/format/VcfWriterSomaticSV.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/format/VcfWriterSomaticSV.hh b/src/c++/lib/format/VcfWriterSomaticSV.hh
index 54e08be..3930668 100644
--- a/src/c++/lib/format/VcfWriterSomaticSV.hh
+++ b/src/c++/lib/format/VcfWriterSomaticSV.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/format/VcfWriterTumorSV.cpp b/src/c++/lib/format/VcfWriterTumorSV.cpp
index f3a8c6b..3cca205 100644
--- a/src/c++/lib/format/VcfWriterTumorSV.cpp
+++ b/src/c++/lib/format/VcfWriterTumorSV.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/format/VcfWriterTumorSV.hh b/src/c++/lib/format/VcfWriterTumorSV.hh
index babfac2..a81bb4d 100644
--- a/src/c++/lib/format/VcfWriterTumorSV.hh
+++ b/src/c++/lib/format/VcfWriterTumorSV.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/htsapi/CMakeLists.txt b/src/c++/lib/htsapi/CMakeLists.txt
index 9511b67..7e9a46c 100644
--- a/src/c++/lib/htsapi/CMakeLists.txt
+++ b/src/c++/lib/htsapi/CMakeLists.txt
@@ -1,6 +1,6 @@
 #
 # Manta - Structural Variant and Indel Caller
-# Copyright (c) 2013-2016 Illumina, Inc.
+# Copyright (c) 2013-2017 Illumina, Inc.
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/htsapi/SimpleAlignment_bam_util.cpp b/src/c++/lib/htsapi/SimpleAlignment_bam_util.cpp
index 0bc31e6..a799ffd 100644
--- a/src/c++/lib/htsapi/SimpleAlignment_bam_util.cpp
+++ b/src/c++/lib/htsapi/SimpleAlignment_bam_util.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/htsapi/SimpleAlignment_bam_util.hh b/src/c++/lib/htsapi/SimpleAlignment_bam_util.hh
index c1fb25a..05b6205 100644
--- a/src/c++/lib/htsapi/SimpleAlignment_bam_util.hh
+++ b/src/c++/lib/htsapi/SimpleAlignment_bam_util.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/htsapi/align_path_bam_util.cpp b/src/c++/lib/htsapi/align_path_bam_util.cpp
index e3676e1..dfa51a1 100644
--- a/src/c++/lib/htsapi/align_path_bam_util.cpp
+++ b/src/c++/lib/htsapi/align_path_bam_util.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/htsapi/align_path_bam_util.hh b/src/c++/lib/htsapi/align_path_bam_util.hh
index f964b48..f8deee1 100644
--- a/src/c++/lib/htsapi/align_path_bam_util.hh
+++ b/src/c++/lib/htsapi/align_path_bam_util.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/htsapi/bam_dumper.cpp b/src/c++/lib/htsapi/bam_dumper.cpp
index d89a243..3bc1d82 100644
--- a/src/c++/lib/htsapi/bam_dumper.cpp
+++ b/src/c++/lib/htsapi/bam_dumper.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/htsapi/bam_dumper.hh b/src/c++/lib/htsapi/bam_dumper.hh
index d9703d7..6620dde 100644
--- a/src/c++/lib/htsapi/bam_dumper.hh
+++ b/src/c++/lib/htsapi/bam_dumper.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/htsapi/bam_header_info.cpp b/src/c++/lib/htsapi/bam_header_info.cpp
index 21bd6fd..ea221ba 100644
--- a/src/c++/lib/htsapi/bam_header_info.cpp
+++ b/src/c++/lib/htsapi/bam_header_info.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/htsapi/bam_header_info.hh b/src/c++/lib/htsapi/bam_header_info.hh
index 3f82e86..44a7323 100644
--- a/src/c++/lib/htsapi/bam_header_info.hh
+++ b/src/c++/lib/htsapi/bam_header_info.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/htsapi/bam_header_util.cpp b/src/c++/lib/htsapi/bam_header_util.cpp
index 13feea5..ddd77a7 100644
--- a/src/c++/lib/htsapi/bam_header_util.cpp
+++ b/src/c++/lib/htsapi/bam_header_util.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/htsapi/bam_header_util.hh b/src/c++/lib/htsapi/bam_header_util.hh
index 8cc22b4..8f3b29b 100644
--- a/src/c++/lib/htsapi/bam_header_util.hh
+++ b/src/c++/lib/htsapi/bam_header_util.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
@@ -35,6 +34,10 @@
 
 /// parse a bam region into chrom/begin/end values
 ///
+/// \param[out] begin_pos start position (zero-indexed, closed)
+/// \param[out] end_pos end position (zero-indexed, open)
+///
+/// example: "chr2:100-200" will be parsed to begin_pos=99 and end_pos=200
 void
 parse_bam_region(
     const char* region,
@@ -46,6 +49,9 @@ parse_bam_region(
 /// parse a bam region into chrom-index/begin/end values based
 /// on chromosome index lookup and end positions in bam header
 ///
+/// \param[out] tid htslib zero-indexed contig id
+/// \param[out] begin_pos start position (zero-indexed, closed)
+/// \param[out] end_pos end position (zero-indexed, open)
 void
 parse_bam_region_from_hdr(
     const bam_hdr_t* header,
diff --git a/src/c++/lib/htsapi/bam_record.cpp b/src/c++/lib/htsapi/bam_record.cpp
index 8e2591f..1f52205 100644
--- a/src/c++/lib/htsapi/bam_record.cpp
+++ b/src/c++/lib/htsapi/bam_record.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
@@ -47,7 +46,10 @@ operator<<(std::ostream& os, const bam_record& br)
         bam_cigar_to_apath(br.raw_cigar(),br.n_cigar(),apath);
         os << " cigar: " << apath;
 
-        /// print SAtag if present:
+
+        os << " templSize: " << br.template_size();
+
+        // print SAtag if present:
         static const char satag[] = {'S','A'};
         const char* saStr(br.get_string_tag(satag));
         if (nullptr != saStr)
diff --git a/src/c++/lib/htsapi/bam_record.hh b/src/c++/lib/htsapi/bam_record.hh
index c95aa23..4e78e90 100644
--- a/src/c++/lib/htsapi/bam_record.hh
+++ b/src/c++/lib/htsapi/bam_record.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/htsapi/bam_record_util.cpp b/src/c++/lib/htsapi/bam_record_util.cpp
index f24bb84..8d93d60 100644
--- a/src/c++/lib/htsapi/bam_record_util.cpp
+++ b/src/c++/lib/htsapi/bam_record_util.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
@@ -71,11 +70,13 @@ is_innie_pair(
 }
 
 
-
 bool
 is_possible_adapter_pair(
     const bam_record& bamRead)
 {
+    // TODO: improvements for datasets with short fragment size
+    // - return false when one read is split aligned
+    // - check both alignment start and alignment end for signals of running into adapters
     if (! is_mapped_chrom_pair(bamRead)) return false;
     if (bamRead.is_fwd_strand() == bamRead.is_mate_fwd_strand()) return false;
 
diff --git a/src/c++/lib/htsapi/bam_record_util.hh b/src/c++/lib/htsapi/bam_record_util.hh
index 5562e1f..b0fbe55 100644
--- a/src/c++/lib/htsapi/bam_record_util.hh
+++ b/src/c++/lib/htsapi/bam_record_util.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/htsapi/bam_seq.cpp b/src/c++/lib/htsapi/bam_seq.cpp
index bf78950..f61e0e1 100644
--- a/src/c++/lib/htsapi/bam_seq.cpp
+++ b/src/c++/lib/htsapi/bam_seq.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/htsapi/bam_seq.hh b/src/c++/lib/htsapi/bam_seq.hh
index 9190a13..72f5659 100644
--- a/src/c++/lib/htsapi/bam_seq.hh
+++ b/src/c++/lib/htsapi/bam_seq.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/htsapi/bam_seq_read_util.cpp b/src/c++/lib/htsapi/bam_seq_read_util.cpp
index 0189f66..21b4a64 100644
--- a/src/c++/lib/htsapi/bam_seq_read_util.cpp
+++ b/src/c++/lib/htsapi/bam_seq_read_util.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/htsapi/bam_seq_read_util.hh b/src/c++/lib/htsapi/bam_seq_read_util.hh
index 06b085f..cec51f5 100644
--- a/src/c++/lib/htsapi/bam_seq_read_util.hh
+++ b/src/c++/lib/htsapi/bam_seq_read_util.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/htsapi/bam_streamer.cpp b/src/c++/lib/htsapi/bam_streamer.cpp
index 7640e02..3f71d92 100644
--- a/src/c++/lib/htsapi/bam_streamer.cpp
+++ b/src/c++/lib/htsapi/bam_streamer.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
@@ -76,7 +75,6 @@ bam_streamer(
     if (nullptr == region)
     {
         // read the whole BAM file:
-
         if (_hdr->n_targets)
         {
             // parse any contig name so that header->hash is created
@@ -84,11 +82,12 @@ bam_streamer(
             // exists
             target_name_to_id("fake_name");
         }
-        return;
     }
-
-    // read a specific region of the bam file:
-    set_new_region(region);
+    else
+    {
+        // read a specific region of the bam file:
+        resetRegion(region);
+    }
 }
 
 
@@ -172,14 +171,14 @@ _load_index()
 
 void
 bam_streamer::
-set_new_region(const char* region)
+resetRegion(const char* region)
 {
-    int32_t ref,beg,end;
-    parse_bam_region_from_hdr(_hdr, region, ref, beg, end);
+    int32_t referenceContigId, beginPos, endPos;
+    parse_bam_region_from_hdr(_hdr, region, referenceContigId, beginPos, endPos);
 
     try
     {
-        set_new_region(ref,beg,end);
+        resetRegion(referenceContigId, beginPos, endPos);
         _region=region;
     }
     catch (const std::exception& /*e*/)
@@ -194,24 +193,27 @@ set_new_region(const char* region)
 
 void
 bam_streamer::
-set_new_region(const int ref, const int beg, const int end)
+resetRegion(
+    int referenceContigId,
+    int beginPos,
+    int endPos)
 {
     if (nullptr != _hitr) hts_itr_destroy(_hitr);
 
     _load_index();
 
-    if (ref < 0)
+    if (referenceContigId < 0)
     {
         std::ostringstream oss;
-        oss << "Invalid region (contig index: " << ref << ") specified for BAM/CRAM file: " << name();
+        oss << "Invalid region (contig index: " << referenceContigId << ") specified for BAM/CRAM file: " << name();
         throw blt_exception(oss.str().c_str());
     }
 
-    _hitr = sam_itr_queryi(_hidx,ref,beg,end);
+    _hitr = sam_itr_queryi(_hidx,referenceContigId,beginPos,endPos);
     if (_hitr == nullptr)
     {
         std::ostringstream oss;
-        oss << "Failed to fetch region: #" << ref << ":" << beg << "-" << end << " specified for BAM/CRAM file: " << name();
+        oss << "Failed to fetch region: #" << referenceContigId << ":" << beginPos << "-" << endPos << " specified for BAM/CRAM file: " << name();
         throw blt_exception(oss.str().c_str());
     }
     _is_region = true;
@@ -222,6 +224,7 @@ set_new_region(const int ref, const int beg, const int end)
 }
 
 
+
 bool
 bam_streamer::
 next()
diff --git a/src/c++/lib/htsapi/bam_streamer.hh b/src/c++/lib/htsapi/bam_streamer.hh
index 080be5b..8e46116 100644
--- a/src/c++/lib/htsapi/bam_streamer.hh
+++ b/src/c++/lib/htsapi/bam_streamer.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
@@ -48,25 +47,28 @@ struct bam_streamer : public boost::noncopyable
     /// \param region if filename is indexed CRAM or BAM, you can
     ///        restrict the stream to a specific region
     explicit
-    bam_streamer(const char* filename,
-                 const char* region = nullptr);
+    bam_streamer(
+        const char* filename,
+        const char* region = nullptr);
 
     ~bam_streamer();
 
-    /// \brief set new or first region for file:
+    /// \brief set new region for indexed file
     ///
-    /// \param region if ctor filename is indexed CRAM or BAM, you can
-    ///        restrict the stream to a specific region
+    /// \param region htslib-style region string in format: "chromName:beginPos-endPos", cannot be nullptr
     void
-    set_new_region(const char* region);
+    resetRegion(const char* region);
 
-    /// \brief set new or first region for file:
+    /// \brief set new region for indexed file
     ///
-    /// \param beg zero-indexed start pos
-    /// \param end zero-indexed end pos
+    /// \param referenceContigId htslib zero-indexed contig id
+    /// \param beginPos start position (zero-indexed, closed)
+    /// \param endPos end position (zero-indexed, closed)
     void
-    set_new_region(
-        int reg, int beg, int end);
+    resetRegion(
+        int referenceContigId,
+        int beginPos,
+        int endPos);
 
     bool next();
 
diff --git a/src/c++/lib/htsapi/bam_util.cpp b/src/c++/lib/htsapi/bam_util.cpp
index ea46767..9cb9868 100644
--- a/src/c++/lib/htsapi/bam_util.cpp
+++ b/src/c++/lib/htsapi/bam_util.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/htsapi/bam_util.hh b/src/c++/lib/htsapi/bam_util.hh
index 5d3f65f..c4dceac 100644
--- a/src/c++/lib/htsapi/bam_util.hh
+++ b/src/c++/lib/htsapi/bam_util.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/htsapi/bed_record.cpp b/src/c++/lib/htsapi/bed_record.cpp
index 37fccdf..a01a4d2 100644
--- a/src/c++/lib/htsapi/bed_record.cpp
+++ b/src/c++/lib/htsapi/bed_record.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/htsapi/bed_record.hh b/src/c++/lib/htsapi/bed_record.hh
index 791fd0b..45c25e8 100644
--- a/src/c++/lib/htsapi/bed_record.hh
+++ b/src/c++/lib/htsapi/bed_record.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/htsapi/bed_streamer.cpp b/src/c++/lib/htsapi/bed_streamer.cpp
index 8b3a770..9fec11d 100644
--- a/src/c++/lib/htsapi/bed_streamer.cpp
+++ b/src/c++/lib/htsapi/bed_streamer.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/htsapi/bed_streamer.hh b/src/c++/lib/htsapi/bed_streamer.hh
index b4eb84e..816348a 100644
--- a/src/c++/lib/htsapi/bed_streamer.hh
+++ b/src/c++/lib/htsapi/bed_streamer.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
@@ -28,6 +27,16 @@
 #include "hts_streamer.hh"
 
 
+/// Stream records from BED files.
+//
+// Example use:
+//
+// bed_streamer bst("foo.bed.gz","chr20:100-200");
+// while (bst.next()) {
+//     const bed_record& bre(*(bst.get_record_ptr()));
+//     if(bre.end > 100) foo++;
+// }
+//
 struct bed_streamer : public hts_streamer
 {
     bed_streamer(
diff --git a/src/c++/lib/htsapi/hts_streamer.cpp b/src/c++/lib/htsapi/hts_streamer.cpp
index de1a082..b25ffe4 100644
--- a/src/c++/lib/htsapi/hts_streamer.cpp
+++ b/src/c++/lib/htsapi/hts_streamer.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
@@ -32,9 +31,11 @@
 #include <iostream>
 
 
+
 static const kstring_t kinit = {0,0,0};
 
 
+
 hts_streamer::
 hts_streamer(
     const char* filename,
@@ -53,11 +54,6 @@ hts_streamer(
         throw blt_exception("hts filename is null ptr");
     }
 
-    if (nullptr == region)
-    {
-        throw blt_exception("hts region is null ptr");
-    }
-
     if ('\0' == *filename)
     {
         throw blt_exception("hts filename is empty string");
@@ -73,7 +69,10 @@ hts_streamer(
     _load_index();
 
     // read only a region of HTS file:
-    set_region(region);
+    if (nullptr != region)
+    {
+        resetRegion(region);
+    }
 }
 
 
@@ -88,23 +87,20 @@ hts_streamer::
 }
 
 
+
 void
 hts_streamer::
-set_region(
+resetRegion(
     const char* region)
 {
-    // free _titr if it's already been set to avoid memory leaks
     if (nullptr != _titr) tbx_itr_destroy(_titr);
 
     _titr = tbx_itr_querys(_tidx, region);
-    if (nullptr == _titr)
-    {
-        _is_stream_end=true;
-    }
+    _is_stream_end = (nullptr == _titr);
 }
 
 
-// load index if it hasn't been set already:
+
 void
 hts_streamer::
 _load_index()
diff --git a/src/c++/lib/htsapi/hts_streamer.hh b/src/c++/lib/htsapi/hts_streamer.hh
index d93dab8..61e9ec3 100644
--- a/src/c++/lib/htsapi/hts_streamer.hh
+++ b/src/c++/lib/htsapi/hts_streamer.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
@@ -34,6 +33,11 @@
 
 struct hts_streamer : private boost::noncopyable
 {
+    /// \param[in] filename (required)
+    /// \param[in] region (may be nullptr)
+    ///
+    /// note that region must be set before iteration will produce any output
+    /// (ie. there is no "whole genome iteration" enabled if no region is provided)
     hts_streamer(
         const char* filename,
         const char* region);
@@ -52,10 +56,15 @@ struct hts_streamer : private boost::noncopyable
         return _record_no;
     }
 
-    void set_region(
+    /// \brief set new region for indexed file
+    ///
+    /// \param region htslib-style region string in format: "chromName:beginPos-endPos", cannot be nullptr
+    void
+    resetRegion(
         const char* region);
 
 protected:
+    /// load index if it hasn't been set already
     void
     _load_index();
 
diff --git a/src/c++/lib/htsapi/sam_util.hh b/src/c++/lib/htsapi/sam_util.hh
index 8c13569..990b3f4 100644
--- a/src/c++/lib/htsapi/sam_util.hh
+++ b/src/c++/lib/htsapi/sam_util.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/htsapi/samtools_fasta_util.cpp b/src/c++/lib/htsapi/samtools_fasta_util.cpp
index 3897f80..ab911fe 100644
--- a/src/c++/lib/htsapi/samtools_fasta_util.cpp
+++ b/src/c++/lib/htsapi/samtools_fasta_util.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/htsapi/samtools_fasta_util.hh b/src/c++/lib/htsapi/samtools_fasta_util.hh
index 8d89a03..da0eea5 100644
--- a/src/c++/lib/htsapi/samtools_fasta_util.hh
+++ b/src/c++/lib/htsapi/samtools_fasta_util.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/htsapi/tabix_util.hh b/src/c++/lib/htsapi/tabix_util.hh
index 36cd4f4..e3d0cfe 100644
--- a/src/c++/lib/htsapi/tabix_util.hh
+++ b/src/c++/lib/htsapi/tabix_util.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/htsapi/test/CMakeLists.txt b/src/c++/lib/htsapi/test/CMakeLists.txt
index 83c64d7..1f7d1de 100644
--- a/src/c++/lib/htsapi/test/CMakeLists.txt
+++ b/src/c++/lib/htsapi/test/CMakeLists.txt
@@ -1,6 +1,6 @@
 #
 # Manta - Structural Variant and Indel Caller
-# Copyright (c) 2013-2016 Illumina, Inc.
+# Copyright (c) 2013-2017 Illumina, Inc.
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/htsapi/test/align_path_bam_util_test.cpp b/src/c++/lib/htsapi/test/align_path_bam_util_test.cpp
index d1d8d3b..6e744a9 100644
--- a/src/c++/lib/htsapi/test/align_path_bam_util_test.cpp
+++ b/src/c++/lib/htsapi/test/align_path_bam_util_test.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/htsapi/test/bam_header_util_test.cpp b/src/c++/lib/htsapi/test/bam_header_util_test.cpp
index d66be4a..8f26b92 100644
--- a/src/c++/lib/htsapi/test/bam_header_util_test.cpp
+++ b/src/c++/lib/htsapi/test/bam_header_util_test.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/htsapi/test/bed_streamer_test.cpp b/src/c++/lib/htsapi/test/bed_streamer_test.cpp
index ee00a0d..093266c 100644
--- a/src/c++/lib/htsapi/test/bed_streamer_test.cpp
+++ b/src/c++/lib/htsapi/test/bed_streamer_test.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/htsapi/test/test_config.h.in b/src/c++/lib/htsapi/test/test_config.h.in
index c686c6c..da12688 100644
--- a/src/c++/lib/htsapi/test/test_config.h.in
+++ b/src/c++/lib/htsapi/test/test_config.h.in
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/htsapi/test/test_main.cpp b/src/c++/lib/htsapi/test/test_main.cpp
index 6cf9c45..32dbf08 100644
--- a/src/c++/lib/htsapi/test/test_main.cpp
+++ b/src/c++/lib/htsapi/test/test_main.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/htsapi/test/vcf_streamer_test.cpp b/src/c++/lib/htsapi/test/vcf_streamer_test.cpp
index 15c1f79..a50c58c 100644
--- a/src/c++/lib/htsapi/test/vcf_streamer_test.cpp
+++ b/src/c++/lib/htsapi/test/vcf_streamer_test.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
@@ -22,8 +21,9 @@
 
 #include "htsapi/vcf_streamer.hh"
 
-#include "boost/test/unit_test.hpp"
+#include "common/Exceptions.hh"
 
+#include "boost/test/unit_test.hpp"
 
 
 BOOST_AUTO_TEST_SUITE( test_vcf_streamer )
@@ -43,24 +43,35 @@ BOOST_AUTO_TEST_CASE( test_vcf_streamer_region )
 
     const vcf_record* vptr(nullptr);
 
-    BOOST_REQUIRE( vcfs.next() );
+    // first check that valid record does not throw an exception
+    BOOST_REQUIRE_NO_THROW( vcfs.next() );
     vptr = vcfs.get_record_ptr();
     assert(vptr != nullptr);
 
-    BOOST_REQUIRE( vptr->is_valid() );
+    // VCF record test for
+    // chr1    757807  MantaDEL:44:0:0:0:1:0   CCCTGGCCAGCAGATCCACCCTGTCTATACTACCTG    C       ...
+    // testing variant assignment, normalize and validity checks, position, and ref
+    BOOST_REQUIRE(vptr->isSimpleVariantLocus() );
     BOOST_REQUIRE( vptr->is_indel() );
+    BOOST_REQUIRE( vptr->is_normalized());
     BOOST_REQUIRE( ! vptr->is_snv() );
 
     BOOST_REQUIRE_EQUAL(vptr->pos, 757807);
     BOOST_REQUIRE_EQUAL(vptr->ref,"CCCTGGCCAGCAGATCCACCCTGTCTATACTACCTG");
 
+    // also check that a valid record returns true
     BOOST_REQUIRE( vcfs.next() );
     vptr = vcfs.get_record_ptr();
     assert(vptr != nullptr);
 
-    BOOST_REQUIRE( vptr->is_valid() );
+    // VCF record test for
+    // chr1    758807  FAKED   C       T,A     ...
+    // testing variant assignment, normalize and validity checks, position, alt size, and alt
+    BOOST_REQUIRE(vptr->isSimpleVariantLocus() );
     BOOST_REQUIRE( ! vptr->is_indel() );
     BOOST_REQUIRE( vptr->is_snv() );
+    BOOST_REQUIRE( vptr->is_normalized());
+
     BOOST_REQUIRE_EQUAL(vptr->pos, 758807);
     BOOST_REQUIRE_EQUAL(vptr->alt.size(),2u);
     BOOST_REQUIRE_EQUAL(vptr->alt[0],"T");
@@ -69,38 +80,173 @@ BOOST_AUTO_TEST_CASE( test_vcf_streamer_region )
     vptr = vcfs.get_record_ptr();
     assert(vptr != nullptr);
 
-    BOOST_REQUIRE( vptr->is_valid() );
+    // VCF record test for
+    // chr1    821604  MantaINS:53:0:0:0:1:0   T       TGCCCTTTGGCAGAGCAGGTGTGCTGTGCTG ...
+    // testing variant assignment, normalize and validity checks, position, alt size, and alt
+    BOOST_REQUIRE(vptr->isSimpleVariantLocus() );
     BOOST_REQUIRE( vptr->is_indel() );
     BOOST_REQUIRE( ! vptr->is_snv() );
+    BOOST_REQUIRE( vptr->is_normalized());
+
     BOOST_REQUIRE_EQUAL(vptr->pos, 821604);
     BOOST_REQUIRE_EQUAL(vptr->alt.size(),1u);
     BOOST_REQUIRE_EQUAL(vptr->alt[0],"TGCCCTTTGGCAGAGCAGGTGTGCTGTGCTG");
 
-    BOOST_REQUIRE( ! vcfs.next() );
+    vcfs.resetRegion("chr10:89717700-89717810");
+
+    // tests that we can reset VCF regions
+    BOOST_REQUIRE( vcfs.next() );
     vptr = vcfs.get_record_ptr();
-    assert(vptr == nullptr);
-}
+    assert(vptr != nullptr);
 
-#if 0
-BOOST_AUTO_TEST_CASE( test_vcf_streamer_noregion )
-{
-    vcf_streamer vcfs(getTestpath());
+    // VCF record test for
+    // chr10   89717769        COSM30622       TA      T       ...
+    // testing that deletion is reported as normalized
+    BOOST_REQUIRE(vptr->isSimpleVariantLocus() );
+    BOOST_REQUIRE( vptr->is_indel() );
+    BOOST_REQUIRE( ! vptr->is_snv() );
+    BOOST_REQUIRE( vptr->is_normalized());
+    BOOST_REQUIRE_EQUAL(vptr->pos, 89717769);
+    BOOST_REQUIRE_EQUAL(vptr->alt.size(),1u);
+    BOOST_REQUIRE_EQUAL(vptr->alt[0],"T");
 
-    const vcf_record* vptr(nullptr);
+    BOOST_REQUIRE_THROW( vcfs.next(), illumina::common::LogicException );
+    vptr = vcfs.get_record_ptr();
+    assert(vptr != nullptr);
+
+    // VCF record test for
+    // chr10   89717774        COSM5809        AA      A       ...
+    // testing that deletion is not reported as left-shifted
+    BOOST_REQUIRE(vptr->isSimpleVariantLocus() );
+    BOOST_REQUIRE( vptr->is_indel() );
+    BOOST_REQUIRE( ! vptr->is_snv() );
+    BOOST_REQUIRE( ! vptr->is_normalized());
+    BOOST_REQUIRE_EQUAL(vptr->pos, 89717774);
+    BOOST_REQUIRE_EQUAL(vptr->alt.size(),1u);
+    BOOST_REQUIRE_EQUAL(vptr->alt[0],"A");
+
+    BOOST_REQUIRE_THROW( vcfs.next(), illumina::common::LogicException );
+    vptr = vcfs.get_record_ptr();
+    assert(vptr != nullptr);
+
+    // VCF record test for
+    // chr10   89717775        COSM5012        A       AA      ...
+    // testing that insertion is not reported as left-shifted
+    BOOST_REQUIRE(vptr->isSimpleVariantLocus() );
+    BOOST_REQUIRE( vptr->is_indel() );
+    BOOST_REQUIRE( ! vptr->is_snv() );
+    BOOST_REQUIRE( ! vptr->is_normalized());
+    BOOST_REQUIRE_EQUAL(vptr->pos, 89717775);
+    BOOST_REQUIRE_EQUAL(vptr->alt.size(),1u);
+    BOOST_REQUIRE_EQUAL(vptr->alt[0],"AA");
 
     BOOST_REQUIRE( vcfs.next() );
     vptr = vcfs.get_record_ptr();
     assert(vptr != nullptr);
 
-    BOOST_REQUIRE( vptr->is_valid() );
+    // VCF record test for
+    // chr10   89717776        VALID_MNV_1     TCG     AGT     ...
+    // testing that MNV is reported as normalized
+    BOOST_REQUIRE(vptr->isSimpleVariantLocus() );
     BOOST_REQUIRE( vptr->is_indel() );
     BOOST_REQUIRE( ! vptr->is_snv() );
+    BOOST_REQUIRE( vptr->is_normalized());
+    BOOST_REQUIRE_EQUAL(vptr->pos, 89717776);
+    BOOST_REQUIRE_EQUAL(vptr->alt.size(),1u);
+    BOOST_REQUIRE_EQUAL(vptr->alt[0],"AGT");
 
-    BOOST_REQUIRE_EQUAL(vptr->pos, 54712);
+    BOOST_REQUIRE_THROW( vcfs.next(), illumina::common::LogicException );
+    vptr = vcfs.get_record_ptr();
+    assert(vptr != nullptr);
+
+    // VCF record test for
+    // chr10   89717779        INVALID_MNV_1   TCG     AGG     ...
+    // testing that MNV is not reported as normalized
+    BOOST_REQUIRE(vptr->isSimpleVariantLocus() );
+    BOOST_REQUIRE( vptr->is_indel() );
+    BOOST_REQUIRE( ! vptr->is_snv() );
+    BOOST_REQUIRE( ! vptr->is_normalized());
+    BOOST_REQUIRE_EQUAL(vptr->pos, 89717779);
+    BOOST_REQUIRE_EQUAL(vptr->alt.size(),1u);
+    BOOST_REQUIRE_EQUAL(vptr->alt[0],"AGG");
 
     BOOST_REQUIRE( vcfs.next() );
+    vptr = vcfs.get_record_ptr();
+    assert(vptr != nullptr);
+
+    // VCF record test for
+    // chr10   89717782        INVALID_MNV_2   ACG     AGT     ...
+    // testing that MNV is reported as normalized, despite first base
+    // matching (Manta returns MNV candidates with reference-padding, so
+    // this is to maintain consistency with its inputs)
+    BOOST_REQUIRE(vptr->isSimpleVariantLocus() );
+    BOOST_REQUIRE( vptr->is_indel() );
+    BOOST_REQUIRE( ! vptr->is_snv() );
+    BOOST_REQUIRE( vptr->is_normalized());
+    BOOST_REQUIRE_EQUAL(vptr->pos, 89717782);
+    BOOST_REQUIRE_EQUAL(vptr->alt.size(),1u);
+    BOOST_REQUIRE_EQUAL(vptr->alt[0],"AGT");
+
+    BOOST_REQUIRE_THROW( vcfs.next(), illumina::common::LogicException );
+    vptr = vcfs.get_record_ptr();
+    assert(vptr != nullptr);
+
+    // VCF record test for
+    // chr10   89717785        INVALID_SNV   A     A     ...
+    // testing that SNV is not reported as normalized
+    BOOST_REQUIRE(vptr->isSimpleVariantLocus() );
+    BOOST_REQUIRE( ! vptr->is_indel() );
+    BOOST_REQUIRE( vptr->is_snv() );
+    BOOST_REQUIRE( ! vptr->is_normalized());
+    BOOST_REQUIRE_EQUAL(vptr->pos, 89717785);
+    BOOST_REQUIRE_EQUAL(vptr->alt.size(),1u);
+    BOOST_REQUIRE_EQUAL(vptr->alt[0],"A");
+
+    BOOST_REQUIRE_THROW( vcfs.next(), illumina::common::LogicException );
+    vptr = vcfs.get_record_ptr();
+    assert(vptr != nullptr);
+
+    // VCF record test for
+    // chr10   89717785        RIGHT_PAD_INDEL ACCC    AC      ...
+    // testing that indel is not reported as normalized
+    BOOST_REQUIRE(vptr->isSimpleVariantLocus() );
+    BOOST_REQUIRE( vptr->is_indel() );
+    BOOST_REQUIRE( ! vptr->is_snv() );
+    BOOST_REQUIRE( ! vptr->is_normalized());
+    BOOST_REQUIRE_EQUAL(vptr->pos, 89717785);
+    BOOST_REQUIRE_EQUAL(vptr->alt.size(),1u);
+    BOOST_REQUIRE_EQUAL(vptr->alt[0],"AC");
+
+    BOOST_REQUIRE( vcfs.next() );
+    vptr = vcfs.get_record_ptr();
+    assert(vptr != nullptr);
+
+    // VCF record test for
+    // chr10   89717790        COMPLEX GAGCTGTG   AGCT ...
+    // testing that complex allele is reported as normalized
+    BOOST_REQUIRE(vptr->isSimpleVariantLocus() );
+    BOOST_REQUIRE( vptr->is_indel() );
+    BOOST_REQUIRE( ! vptr->is_snv() );
+    BOOST_REQUIRE( vptr->is_normalized());
+    BOOST_REQUIRE_EQUAL(vptr->pos, 89717790);
+    BOOST_REQUIRE_EQUAL(vptr->alt.size(),1u);
+    BOOST_REQUIRE_EQUAL(vptr->alt[0],"AGCT");
+
+    BOOST_REQUIRE( vcfs.next() );
+    vptr = vcfs.get_record_ptr();
+    assert(vptr != nullptr);
+
+    // VCF record test for complex val
+    // chr10   89717799    INVALID_ALT A   <DEL>   .   .   .
+    // this should not be parsed as an SNV or indel
+    BOOST_REQUIRE(not vptr->isSimpleVariantLocus());
+
+    // testing that next returns false after last record
+    BOOST_REQUIRE( ! vcfs.next() );
+    vptr = vcfs.get_record_ptr();
+    assert(vptr == nullptr);
 }
-#endif
+
 
 BOOST_AUTO_TEST_SUITE_END()
 
diff --git a/src/c++/lib/htsapi/test/vcf_streamer_test.vcf.gz b/src/c++/lib/htsapi/test/vcf_streamer_test.vcf.gz
index 21770f9..31f9dcc 100644
Binary files a/src/c++/lib/htsapi/test/vcf_streamer_test.vcf.gz and b/src/c++/lib/htsapi/test/vcf_streamer_test.vcf.gz differ
diff --git a/src/c++/lib/htsapi/test/vcf_streamer_test.vcf.gz.tbi b/src/c++/lib/htsapi/test/vcf_streamer_test.vcf.gz.tbi
index 993ab64..9b7de31 100644
Binary files a/src/c++/lib/htsapi/test/vcf_streamer_test.vcf.gz.tbi and b/src/c++/lib/htsapi/test/vcf_streamer_test.vcf.gz.tbi differ
diff --git a/src/c++/lib/htsapi/vcf_record.cpp b/src/c++/lib/htsapi/vcf_record.cpp
index 8701576..455193d 100644
--- a/src/c++/lib/htsapi/vcf_record.cpp
+++ b/src/c++/lib/htsapi/vcf_record.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
@@ -91,13 +90,19 @@ set(const char* s)
                 // additional parse loop for ',' character:
             {
                 const char* p2(start);
+
                 while (p2<=p)
                 {
-                    if ((*p2==',') || (p2==p))
+                    if ((*p2 == ',') || (p2 == p))
                     {
-                        alt.emplace_back(start,p2-start);
-                        stoupper(alt.back());
-                        start=p2+1;
+                        // recognize '.' value and leave alt empty in this case:
+                        const bool isEmpty((p2==p) and alt.empty() and ((p2-start) == 1) and (*start == '.'));
+                        if (not isEmpty)
+                        {
+                            alt.emplace_back(start, p2 - start);
+                            stoupper(alt.back());
+                        }
+                        start = p2 + 1;
                     }
                     p2++;
                 }
diff --git a/src/c++/lib/htsapi/vcf_record.hh b/src/c++/lib/htsapi/vcf_record.hh
index 82e4c06..ff2c4e0 100644
--- a/src/c++/lib/htsapi/vcf_record.hh
+++ b/src/c++/lib/htsapi/vcf_record.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
@@ -38,7 +37,7 @@ struct vcf_record
         clear();
     }
 
-    // set record from record string s, return false on error
+    /// set the vcf record from record string s, return false on error
     bool set(const char* s);
 
     void clear()
@@ -50,14 +49,18 @@ struct vcf_record
         line=nullptr;
     }
 
-
+    /// test if the variant represents a "simple" SNV or small indel
+    /// where all REF/ALT entries are composed of only [ACGTN] sequences
+    //
     // N.B. the current implementation of is_valid does not
     // allow symbolic ALTs, e.g. representing a deletion using
     // the <DEL> symbolic allele and the END INFO field.  This
     // is probably fine, but worth noting
     bool
-    is_valid() const
+    isSimpleVariantLocus() const
     {
+        if (ref.empty()) return false;
+        if (alt.empty()) return false;
         if (! is_valid_seq(ref.c_str())) return false;
         for (const auto& alt_allele : alt)
         {
@@ -66,10 +69,12 @@ struct vcf_record
         return true;
     }
 
+    /// check for REF or ALT alleles with a size > 1, alleles with equal length REF and ALT sequences will
+    /// count as an indel
     bool
     is_indel() const
     {
-        if (! is_valid()) return false;
+        if (!isSimpleVariantLocus()) return false;
         if ((ref.size()>1) && (alt.size()>0)) return true;
         for (const auto& alt_allele : alt)
         {
@@ -81,7 +86,7 @@ struct vcf_record
     bool
     is_snv() const
     {
-        if (! is_valid()) return false;
+        if (!isSimpleVariantLocus()) return false;
         if (1 != ref.size()) return false;
         for (const auto& alt_allele : alt)
         {
@@ -90,6 +95,16 @@ struct vcf_record
         return true;
     }
 
+    /// complements is_snv() by taking case of the form: REF="A", ALT="."
+    bool
+    is_ref_site() const
+    {
+        if (ref.empty()) return false;
+        if (! is_valid_seq(ref.c_str())) return false;
+        if (1 != ref.size()) return false;
+        return (alt.empty());
+    }
+
     bool is_normalized() const;
 
     std::string chrom;
diff --git a/src/c++/lib/htsapi/vcf_streamer.cpp b/src/c++/lib/htsapi/vcf_streamer.cpp
index 662d469..66394df 100644
--- a/src/c++/lib/htsapi/vcf_streamer.cpp
+++ b/src/c++/lib/htsapi/vcf_streamer.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
@@ -28,18 +27,21 @@
 #include "blt_util/log.hh"
 #include "blt_util/seq_util.hh"
 
+#include "common/Exceptions.hh"
+
 #include <cassert>
 #include <cstdlib>
 #include <sys/stat.h>
 
 #include <iostream>
+#include <sstream>
 #include <set>
 #include <string>
 
 
 
-// return true only if all chromosomes in the bcf/vcf exist in the
-// bam header
+/// return true only if all chromosomes in the bcf/vcf exist in the
+/// bam header
 static
 void
 check_bam_bcf_header_compatability(
@@ -74,9 +76,11 @@ check_bam_bcf_header_compatability(
 vcf_streamer::
 vcf_streamer(
     const char* filename,
-    const char* region) :
+    const char* region,
+    const bool isRequireNormalized) :
     hts_streamer(filename,region),
-    _hdr(nullptr)
+    _hdr(nullptr),
+    _isRequireNormalized(isRequireNormalized)
 {
     //
     // note with the switch to samtools 1.X vcf/bcf still involve predominantly separate
@@ -90,6 +94,7 @@ vcf_streamer(
         log_os << "ERROR: Failed to load header for VCF file: '" << filename << "'\n";
         exit(EXIT_FAILURE);
     }
+    _sampleCount = bcf_hdr_nsamples(_hdr);
 }
 
 
@@ -104,8 +109,7 @@ vcf_streamer::
 
 bool
 vcf_streamer::
-next(
-    const bool is_indel_only)
+next()
 {
     if (_is_stream_end || (nullptr==_hfp) || (nullptr==_titr)) return false;
 
@@ -132,8 +136,30 @@ next(
             log_os << "ERROR: Can't parse vcf record: '" << _kstr.s << "'\n";
             exit(EXIT_FAILURE);
         }
-        if (! _vcfrec.is_valid()) continue;
-        if (is_indel_only && (! _vcfrec.is_indel())) continue;
+
+        if (_vcfrec.isSimpleVariantLocus())
+        {
+            if (!_vcfrec.is_normalized())
+            {
+                std::ostringstream oss;
+                oss << "Input VCF record is not normalized:\n";
+                report_state(oss);
+
+                if (_isRequireNormalized)
+                {
+                    std::ostringstream ess;
+                    ess << "ERROR: " << oss.str();
+                    ess << "Please normalize all records in this VCF with a tool such as vt, then resubmit\n";
+                    BOOST_THROW_EXCEPTION(illumina::common::LogicException(ess.str()));
+                }
+                else
+                {
+                    log_os << "WARNING: " << oss.str();
+                    log_os << "All alleles in this VCF record have been skipped.\n";
+                    continue;
+                }
+            }
+        }
 
         break; // found expected vcf record type
     }
diff --git a/src/c++/lib/htsapi/vcf_streamer.hh b/src/c++/lib/htsapi/vcf_streamer.hh
index fc12444..a21e216 100644
--- a/src/c++/lib/htsapi/vcf_streamer.hh
+++ b/src/c++/lib/htsapi/vcf_streamer.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
@@ -27,20 +26,23 @@
 #include "hts_streamer.hh"
 #include "vcf_record.hh"
 
+#include <cassert>
+
 
 struct vcf_streamer : public hts_streamer
 {
+    /// \param isRequireNormalized[in] if true an exception is thrown for any input variant records which are not
+    ///                                left shifted
     vcf_streamer(
         const char* filename,
-        const char* region);
+        const char* region,
+        const bool isRequireNormalized = true);
 
     ~vcf_streamer();
 
-    // advance to next vcf record
-    //
-    // is_indel_only - if set, skip all records except indels
-    //
-    bool next(const bool is_indel_only=false);
+    /// advance to next (normalized) vcf record
+    ///
+    bool next();
 
     const vcf_record*
     get_record_ptr() const
@@ -57,7 +59,24 @@ struct vcf_streamer : public hts_streamer
     validateBamHeaderChromSync(
         const bam_hdr_t& header) const;
 
+    unsigned
+    getSampleCount() const
+    {
+        assert(nullptr != _hdr);
+        return _sampleCount;
+    }
+
+    const char*
+    getSampleName(const unsigned sampleIndex) const
+    {
+        assert(nullptr != _hdr);
+        assert(sampleIndex < _sampleCount);
+        return _hdr->samples[sampleIndex];
+    }
+
 private:
     bcf_hdr_t* _hdr;
+    unsigned _sampleCount;
     vcf_record _vcfrec;
+    bool _isRequireNormalized;
 };
diff --git a/src/c++/lib/htsapi/vcf_util.cpp b/src/c++/lib/htsapi/vcf_util.cpp
index adadb08..10112f8 100644
--- a/src/c++/lib/htsapi/vcf_util.cpp
+++ b/src/c++/lib/htsapi/vcf_util.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/htsapi/vcf_util.hh b/src/c++/lib/htsapi/vcf_util.hh
index d4aa966..eb1a0e5 100644
--- a/src/c++/lib/htsapi/vcf_util.hh
+++ b/src/c++/lib/htsapi/vcf_util.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
@@ -70,9 +69,9 @@ write_vcf_filter(
     const char* desc);
 
 
-// look for 'key' in vcf FORMAT field, provide index of key or return
-// false
-//
+/// look for 'key' in vcf FORMAT field, provide index of key or return
+/// false
+///
 inline
 bool
 get_format_key_index(const char* format,
@@ -115,6 +114,7 @@ get_format_string_nocopy(const char* const* word,
 
 // returns -1 for '.' alleles
 void
-parse_gt(const char* gt,
-         std::vector<int>& gti,
-         const bool is_allow_bad_end_char=false);
+parse_gt(
+    const char* gt,
+    std::vector<int>& gti,
+    const bool is_allow_bad_end_char=false);
diff --git a/src/c++/lib/manta/BamRegionProcessor.hh b/src/c++/lib/manta/BamRegionProcessor.hh
index 71e77dc..358afa5 100644
--- a/src/c++/lib/manta/BamRegionProcessor.hh
+++ b/src/c++/lib/manta/BamRegionProcessor.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/manta/CMakeLists.txt b/src/c++/lib/manta/CMakeLists.txt
index 977b8e2..d155110 100644
--- a/src/c++/lib/manta/CMakeLists.txt
+++ b/src/c++/lib/manta/CMakeLists.txt
@@ -1,6 +1,6 @@
 #
 # Manta - Structural Variant and Indel Caller
-# Copyright (c) 2013-2016 Illumina, Inc.
+# Copyright (c) 2013-2017 Illumina, Inc.
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/manta/ChromDepthFilterUtil.cpp b/src/c++/lib/manta/ChromDepthFilterUtil.cpp
index ec40502..1bbfc4b 100644
--- a/src/c++/lib/manta/ChromDepthFilterUtil.cpp
+++ b/src/c++/lib/manta/ChromDepthFilterUtil.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/manta/ChromDepthFilterUtil.hh b/src/c++/lib/manta/ChromDepthFilterUtil.hh
index 27bfdf4..ce291d3 100644
--- a/src/c++/lib/manta/ChromDepthFilterUtil.hh
+++ b/src/c++/lib/manta/ChromDepthFilterUtil.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/manta/EventInfo.hh b/src/c++/lib/manta/EventInfo.hh
index 33b671d..c91f3a2 100644
--- a/src/c++/lib/manta/EventInfo.hh
+++ b/src/c++/lib/manta/EventInfo.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/manta/JunctionIdGenerator.cpp b/src/c++/lib/manta/JunctionIdGenerator.cpp
index d167255..408b8e6 100644
--- a/src/c++/lib/manta/JunctionIdGenerator.cpp
+++ b/src/c++/lib/manta/JunctionIdGenerator.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/manta/JunctionIdGenerator.hh b/src/c++/lib/manta/JunctionIdGenerator.hh
index dbbd796..11690cd 100644
--- a/src/c++/lib/manta/JunctionIdGenerator.hh
+++ b/src/c++/lib/manta/JunctionIdGenerator.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
@@ -33,7 +32,7 @@
 
 /// A pair of ids for both ends of a single SV junction
 ///
-/// the mateid will only be defined for tranlocations, and empty otherwise
+/// the mateId will only be defined for tranlocations, and empty otherwise
 ///
 struct SVId
 {
diff --git a/src/c++/lib/manta/MultiJunctionUtil.cpp b/src/c++/lib/manta/MultiJunctionUtil.cpp
index 743dc36..3ccda9a 100644
--- a/src/c++/lib/manta/MultiJunctionUtil.cpp
+++ b/src/c++/lib/manta/MultiJunctionUtil.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
@@ -53,7 +52,7 @@ isFilterMultiJunctionCandidate(
                 isCountFilter = false;
             }
 
-            if (! sv.isSingleJunctionFilter)
+            if (not sv.isSingleJunctionFilter)
             {
                 isSingleFilter = false;
             }
@@ -77,7 +76,10 @@ isFilterMultiJunctionCandidate(
 }
 
 
-
+/// distance between the centerpoint from each of two intervals
+///
+/// if intervals are on different chroms, return max(unsigned)
+///
 static
 unsigned
 getIntervalDist(
@@ -301,16 +303,15 @@ findMultiJunctionCandidates(
 
     mjComplexCount = complexSVs.size();
 
-    /// do a brute-force intersection test to see if we can associate candidates:
-    ///
-    /// intersection rules : breakend region center must be within distance N
-    /// intersecting breakend orientation makes it possible for these to be a single event -- ie. pointing away or towards each other
-    /// full set of intersections must complete a loop, this is an intentionally conservative requirement to make sure we start into
-    ///    this without getting involved in the really difficult stuff
-    ///
-    /// just for the starting version, the number of SVCandidates which can intersect is limited to 2
-    ///
-
+    // do a brute-force intersection test to see if we can associate candidates:
+    //
+    // intersection rules : breakend region center must be within distance N
+    // intersecting breakend orientation makes it possible for these to be a single event -- ie. pointing away or towards each other
+    // full set of intersections must complete a loop, this is an intentionally conservative requirement to make sure we start into
+    //    this without getting involved in the really difficult stuff
+    //
+    // just for the starting version, the number of SVCandidates which can intersect is limited to 2
+    //
     const unsigned spanCount(spanningSVs.size());
     std::vector<MJ_INTERACTION::MJState> spanPartners(spanCount);
     {
@@ -332,8 +333,13 @@ findMultiJunctionCandidates(
                 bool isGroup(false);
                 if (isSameBpGroup || isFlipBpGroup)
                 {
-                    /// check that this isn't a flipped association as breakpoints get near each other,
-                    /// if it is treat the association as independent junctions:
+                    // check that this isn't a flipped association as breakpoints get near each other,
+                    // if it is treat the association as independent junctions:
+                    //
+                    // the basic idea is that if we think SV1.bp1 is associated with SV2.bp1, then something is wrong if
+                    // we see that distance(SV1.bp1,SV2.bp2) or distance(SV1.bp2,SV2,bp1) is shorter than
+                    // distance(SV1.bp1,SV2.bp1), etc.
+                    //
                     if (isSameBpGroup)
                     {
                         isGroup = (getJunctionBpAlignment(spanA, spanB) > 0);
@@ -344,7 +350,7 @@ findMultiJunctionCandidates(
                     }
                 }
 
-                if (!isGroup) continue;
+                if (not isGroup) continue;
 
                 const index_t newType( isSameBpGroup ? SAME : FLIP );
                 const unsigned maxPartnerDistance(getMaxIntervalDistance(spanA, spanB, isSameBpGroup));
@@ -364,7 +370,7 @@ findMultiJunctionCandidates(
                 }
                 else
                 {
-                    /// multiple candidates, keep the pair that's closer, and don't tolerate more than one repeat
+                    // multiple candidates
                     spanPartners[spanIndexA].type = CONFLICT;
                     spanPartners[spanIndexB].type = CONFLICT;
                 }
@@ -376,6 +382,11 @@ findMultiJunctionCandidates(
     //
     // spanning SVs should come first in order so that overlap checks can
     // be used to reduce work in the assembler
+    //
+    // note that everything is being pushed into the SVMultiJunctionCandidate format
+    // even though in most cases they will be "multi-junctions" with a junction size
+    // of one, it should be thought of as a multi-junction "capable" object.
+    //
     for (unsigned spanIndex(0); spanIndex<spanCount; ++spanIndex)
     {
         SVMultiJunctionCandidate mj;
@@ -410,6 +421,4 @@ findMultiJunctionCandidates(
         mj.junction.push_back(candidateSV);
         mjSVs.push_back(mj);
     }
-
-
 }
diff --git a/src/c++/lib/manta/MultiJunctionUtil.hh b/src/c++/lib/manta/MultiJunctionUtil.hh
index a8426f5..55980f7 100644
--- a/src/c++/lib/manta/MultiJunctionUtil.hh
+++ b/src/c++/lib/manta/MultiJunctionUtil.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
@@ -30,6 +29,18 @@
 #include <vector>
 
 
+/// convert independent SV candidates into multi-junction event candidates
+///
+/// given a set of un-associated single-junction SV candidates, analyze which
+/// candidate junctions could potentially be treated as a single multi-junction
+/// event (such as a reciprocal translocation)
+///
+/// right now multi-junction events are limited to pairs of (spannning) SV candidates, where
+/// the breakends of both junctions in the pair are proximal and meeting the expected orientation
+/// pattern consistent with a reciprocal translocation.
+///
+/// Note that 'complex' (short assembly targets from self-edges) SVs will not be grouped into
+//
 void
 findMultiJunctionCandidates(
     const std::vector<SVCandidate>& svs,
diff --git a/src/c++/lib/manta/ReadChromDepthUtil.cpp b/src/c++/lib/manta/ReadChromDepthUtil.cpp
index 7af49ac..b6fbaa7 100644
--- a/src/c++/lib/manta/ReadChromDepthUtil.cpp
+++ b/src/c++/lib/manta/ReadChromDepthUtil.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
@@ -435,7 +434,7 @@ readChromDepthFromAlignment(
 #ifdef DEBUG_DPS
             log_os << "scanning region: " << startPos << "," << endPos << "\n";
 #endif
-            read_stream.set_new_region(chromIndex,startPos,endPos);
+            read_stream.resetRegion(chromIndex,startPos,endPos);
 
             cdTracker.setNewRegion();
 
diff --git a/src/c++/lib/manta/ReadChromDepthUtil.hh b/src/c++/lib/manta/ReadChromDepthUtil.hh
index 7cf31b9..15b6d22 100644
--- a/src/c++/lib/manta/ReadChromDepthUtil.hh
+++ b/src/c++/lib/manta/ReadChromDepthUtil.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/manta/ReadGroupLabel.cpp b/src/c++/lib/manta/ReadGroupLabel.cpp
index 75659dd..fd3f8b1 100644
--- a/src/c++/lib/manta/ReadGroupLabel.cpp
+++ b/src/c++/lib/manta/ReadGroupLabel.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/manta/ReadGroupLabel.hh b/src/c++/lib/manta/ReadGroupLabel.hh
index 2807a0a..fa7e3a7 100644
--- a/src/c++/lib/manta/ReadGroupLabel.hh
+++ b/src/c++/lib/manta/ReadGroupLabel.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/manta/ReadGroupStats.hh b/src/c++/lib/manta/ReadGroupStats.hh
index 861b8e4..2672360 100644
--- a/src/c++/lib/manta/ReadGroupStats.hh
+++ b/src/c++/lib/manta/ReadGroupStats.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/manta/ReadGroupStatsSet.cpp b/src/c++/lib/manta/ReadGroupStatsSet.cpp
index 6ae1f86..88af046 100644
--- a/src/c++/lib/manta/ReadGroupStatsSet.cpp
+++ b/src/c++/lib/manta/ReadGroupStatsSet.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/manta/ReadGroupStatsSet.hh b/src/c++/lib/manta/ReadGroupStatsSet.hh
index 3d3d833..2927d69 100644
--- a/src/c++/lib/manta/ReadGroupStatsSet.hh
+++ b/src/c++/lib/manta/ReadGroupStatsSet.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/manta/ReadGroupStatsUtil.cpp b/src/c++/lib/manta/ReadGroupStatsUtil.cpp
index fbec695..7ba7538 100644
--- a/src/c++/lib/manta/ReadGroupStatsUtil.cpp
+++ b/src/c++/lib/manta/ReadGroupStatsUtil.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
@@ -39,6 +38,7 @@
 #include <sstream>
 #include <vector>
 
+//#define DEBUG_RPS
 
 
 /// compare distributions to determine stats convergence
@@ -93,17 +93,20 @@ getRelOrient(
 }
 
 
-
-/// get insert size from bam record but limit the precision to 4 digits
+/// given an input integer, return an integer with all but the highest 4 decimal digits set to zero
+///
+/// this method is not written effeciently, and not intended for general integer truncation.
+/// it is used as part of a simple compression scheme for the fragment sizes of the frag size
+/// distribution
+///
 static
 unsigned
 getSimplifiedFragSize(
-    const bam_record& bamRead)
+    unsigned fragmentSize)
 {
-    unsigned fragSize(std::abs(bamRead.template_size()));
+    unsigned fragSize(fragmentSize);
 
     // reduce fragsize resolution for very large sizes:
-    // (large sizes are uncommon -- this doesn't need to be efficient, and it's not)
     unsigned steps(0);
     while (fragSize>1000)
     {
@@ -111,11 +114,58 @@ getSimplifiedFragSize(
         steps++;
     }
     for (unsigned stepIndex(0); stepIndex<steps; ++stepIndex) fragSize *= 10;
+    return fragSize;
+}
+
+
+/// get insert size from bam record removing refskip (e.g. spliced) segments
+static
+int
+getFragSizeMinusSkip(
+    const bam_record& bamRead)
+{
+    using namespace ALIGNPATH;
+    ALIGNPATH::path_t _apath;
+    bam_cigar_to_apath(bamRead.raw_cigar(), bamRead.n_cigar(), _apath);
+
+    int fragSize(std::abs(bamRead.template_size()));
+    if (fragSize == 0) return 0;
+    for (const path_segment& ps : _apath)
+    {
+        if (ps.type == SKIP) fragSize -= ps.length;
+    }
+
+    if (fragSize <= 0)
+    {
+        using namespace illumina::common;
+
+        std::ostringstream oss;
+        oss << "ERROR: unexpected fragment size (" << fragSize << ") deduced from bam record: " << bamRead << "\n"
+            << "\tPossible invalid template size in bam record.";
+        BOOST_THROW_EXCEPTION(LogicException(oss.str()));
+    }
 
     return fragSize;
 }
 
 
+/// Does this read contain any refskip operation
+static
+bool
+hasRefSkip(
+    const bam_record& bamRead)
+{
+    using namespace ALIGNPATH;
+    ALIGNPATH::path_t _apath;
+    bam_cigar_to_apath(bamRead.raw_cigar(), bamRead.n_cigar(), _apath);
+
+    for (const path_segment& ps : _apath)
+    {
+        if (ps.type == SKIP) return true;
+    }
+    return false;
+}
+
 
 /// track pair orientation so that a consensus can be found for a read group
 ///
@@ -218,6 +268,86 @@ private:
 };
 
 
+struct SimpleRead
+{
+    SimpleRead(
+        PAIR_ORIENT::index_t  ort,
+        unsigned sz):
+        _orient(ort),
+        _insertSize(sz)
+    {}
+
+    PAIR_ORIENT::index_t  _orient;
+    unsigned _insertSize;
+};
+
+
+struct ReadGroupBuffer
+{
+    ReadGroupBuffer():
+        _abnormalRpCount(0),
+        _observationRpCount(0)
+    {}
+
+    void
+    updateBuffer(PAIR_ORIENT::index_t ort, unsigned sz)
+    {
+        _readInfo.emplace_back(ort, sz);
+
+        if (ort == PAIR_ORIENT::Rp)
+        {
+            _observationRpCount++;
+            if (sz >= 5000) _abnormalRpCount++;
+        }
+    }
+
+    bool
+    isBufferFull() const
+    {
+        return (_observationRpCount >= 1000);
+    }
+
+    bool
+    isBufferNormal() const
+    {
+        if (_observationRpCount == 0) return false;
+
+        return ((_abnormalRpCount/(float)_observationRpCount) < 0.01);
+    }
+
+    unsigned
+    getAbnormalCount()
+    {
+        return _abnormalRpCount;
+    }
+
+    unsigned
+    getObservationCount()
+    {
+        return _observationRpCount;
+    }
+
+    const std::vector<SimpleRead>&
+    getBufferedReads()
+    {
+        return _readInfo;
+    }
+
+    void
+    clearBuffer()
+    {
+        _abnormalRpCount = 0;
+        _observationRpCount = 0;
+        _readInfo.clear();
+    }
+
+private:
+
+    unsigned _abnormalRpCount;
+    unsigned _observationRpCount;
+    std::vector<SimpleRead> _readInfo;
+};
+
 
 
 /// all data required to build ReadGroupStats during estimation from the bam file
@@ -238,22 +368,6 @@ struct ReadGroupTracker
         _isInsertSizeConverged(false)
     {}
 
-    void
-    addOrient(
-        const PAIR_ORIENT::index_t ori)
-    {
-        assert(! _isFinalized);
-
-        _orientInfo.addOrient(ori);
-    }
-
-    void
-    addInsertSize(const int size)
-    {
-        assert(! _isFinalized);
-
-        _stats.fragStats.addObservation(size);
-    }
 
     unsigned
     insertSizeObservations() const
@@ -261,19 +375,18 @@ struct ReadGroupTracker
         return _stats.fragStats.totalObservations();
     }
 
-    bool
-    isInsertSizeCountCheck()
+    void
+    checkInsertSizeCount()
     {
         static const unsigned statsCheckCnt(100000);
         const bool isCheck((insertSizeObservations() % statsCheckCnt) == 0);
         if (isCheck) _isChecked=true;
-        return isCheck;
     }
 
     bool
-    isChecked() const
+    isInsertSizeChecked() const
     {
-        return (_isChecked || isInsertSizeConverged());
+        return _isChecked;
     }
 
     void
@@ -288,6 +401,12 @@ struct ReadGroupTracker
         return _isInsertSizeConverged;
     }
 
+    bool
+    isCheckedOrConverged() const
+    {
+        return (_isChecked || isInsertSizeConverged());
+    }
+
     void
     updateInsertSizeConvergenceTest()
     {
@@ -299,6 +418,82 @@ struct ReadGroupTracker
         _oldInsertSize = _stats.fragStats;
     }
 
+    ReadGroupBuffer&
+    getBuffer()
+    {
+        return _buffer;
+    }
+
+    void
+    addBufferedData()
+    {
+        for (const SimpleRead& srd: _buffer.getBufferedReads())
+        {
+            // get orientation stats before final filter for innie reads below:
+            //
+            // we won't use anything but innie reads for insert size stats, but sampling
+            // orientation beforehand allows us to detect, ie. a mate-pair library
+            // so that we can blow-up with an informative error msg
+            //
+            const PAIR_ORIENT::index_t ori(srd._orient);
+            addOrient(ori);
+
+            // filter mapped innies on the same chrom
+            //
+            // note we don't rely on the proper pair bit because this already contains an
+            // arbitrary length filter and  subjects the method to aligner specific variation
+            //
+            // TODO: ..note this locks-in standard ilmn orientation -- okay for now but this function needs major
+            // re-arrangement for mate-pair support, we could still keep independence from each aligner's proper
+            // pair decisions by estimating a fragment distro for each orientation and only keeping the one with
+            // the most samples
+            //
+            if (ori != PAIR_ORIENT::Rp) continue;
+            addInsertSize(srd._insertSize);
+        }
+    }
+
+    /// Add one observation to the buffer
+    /// If the buffer is full, AND if the fragment size distribution in the buffer looks normal, add the buffered data;
+    /// otherwise, discard the buffer and move to the next region
+    bool
+    addObservation(PAIR_ORIENT::index_t ori, unsigned sz)
+    {
+        bool isNormal(true);
+
+        _buffer.updateBuffer(ori, sz);
+
+        if (_buffer.isBufferFull())
+        {
+            // check abnormal fragment-size distribution in the buffer
+            if (_buffer.isBufferNormal())
+            {
+                addBufferedData();
+                checkInsertSizeCount();
+            }
+            else
+            {
+                isNormal = false;
+#ifdef DEBUG_RPS
+                std::cerr << "The previous region (buffered) contains too many abnormal reads. "
+                          << "abnormalCount=" << _buffer.getAbnormalCount()
+                          << " observationCount=" << _buffer.getObservationCount()
+                          << "\n";
+#endif
+            }
+
+            _buffer.clearBuffer();
+        }
+
+        return isNormal;
+    }
+
+    const ReadGroupOrientTracker&
+    getOrintInfo() const
+    {
+        return _orientInfo;
+    }
+
     /// getting a const ref of the stats forces finalization steps:
     const ReadGroupStats&
     getStats() const
@@ -312,6 +507,10 @@ struct ReadGroupTracker
     {
         if (_isFinalized) return;
 
+        // add the remaining data in the buffer
+        if (_buffer.isBufferNormal()) addBufferedData();
+        _buffer.clearBuffer();
+
         // finalize pair orientation:
         _stats.relOrients = _orientInfo.getConsensusOrient();
 
@@ -337,14 +536,15 @@ struct ReadGroupTracker
                     << "\tTotal observed read pairs: " << insertSizeObservations() << "\n";
                 BOOST_THROW_EXCEPTION(LogicException(oss.str()));
             }
-            else if (! isInsertSizeCountCheck())
+            else if (! isInsertSizeChecked())
             {
                 updateInsertSizeConvergenceTest();
             }
 
             if (! isInsertSizeConverged())
             {
-                log_os << "WARNING: read pair statistics did not converge for " << _rgLabel << "\n";
+                log_os << "WARNING: read pair statistics did not converge for " << _rgLabel << "\n"
+                       << "\tTotal observed read pairs: " << insertSizeObservations() << "\n";
             }
         }
 
@@ -358,6 +558,24 @@ struct ReadGroupTracker
 
 private:
 
+    void
+    addOrient(
+        const PAIR_ORIENT::index_t ori)
+    {
+        assert(! _isFinalized);
+
+        _orientInfo.addOrient(ori);
+    }
+
+    void
+    addInsertSize(const int size)
+    {
+        assert(! _isFinalized);
+
+        _stats.fragStats.addObservation(size);
+    }
+
+
     bool _isFinalized;
     const ReadGroupLabel _rgLabel;
     ReadGroupOrientTracker _orientInfo;
@@ -366,6 +584,7 @@ private:
     bool _isInsertSizeConverged;
     SizeDistribution _oldInsertSize; // previous fragment distribution is stored to determine convergence
 
+    ReadGroupBuffer _buffer;
     ReadGroupStats _stats;
 };
 
@@ -374,7 +593,8 @@ private:
 struct ReadAlignFilter
 {
     /// use only the most conservative alignments to generate fragment stats --
-    /// filter reads containing any cigar types besides MATCH with optional trailing soft-clip
+    /// filter reads containing any cigar types besides MATCH with optional
+    /// trailing SOFTCLIP and single REFSKIP
     bool
     isFilterRead(
         const bam_record& bamRead)
@@ -386,6 +606,7 @@ struct ReadAlignFilter
         if (! bamRead.is_fwd_strand()) std::reverse(_apath.begin(),_apath.end());
 
         bool isMatched(false);
+        bool isSkip(false);
         bool isClipped(false);
         for (const path_segment& ps : _apath)
         {
@@ -394,6 +615,11 @@ struct ReadAlignFilter
                 if (isClipped) return true;
                 isMatched = true;
             }
+            else if (ps.type == SKIP)
+            {
+                if (isSkip) return true;
+                isSkip = true;
+            }
             else if (ps.type == SOFT_CLIP)
             {
                 isClipped = true;
@@ -442,6 +668,9 @@ struct ReadPairDepthFilter
         const unsigned readNum(bamRead.is_first() ? 1 : 2);
         assert(bamRead.is_second() == (readNum == 2));
 
+        // Filter pairs with templateSize 0 (unknown)
+        if (bamRead.template_size() == 0) return true;
+
         // sample each read pair once by sampling stats from
         // downstream read only, or whichever read is encountered
         // second if the read and its mate start at the same position:
@@ -477,8 +706,12 @@ struct ReadPairDepthFilter
         static const unsigned maxMateSetSize(100000);
         if (_goodMates.size() > maxMateSetSize) _goodMates.clear();
 
-        _goodMates.insert(ReadKey(bamRead));
+        // Ignore pairs where the upstream mate has a refskip, since we cannot
+        // compute the correct insert size later when looking at the downstream mate
+        // (Or we would have to save the total refskip length here)
+        if (hasRefSkip(bamRead)) return true;
 
+        _goodMates.insert(ReadKey(bamRead));
         return true;
     }
 
@@ -511,7 +744,7 @@ struct CoreInsertStatsReadFilter
         // filter any split reads with an SA tag:
         if (bamRead.isSASplit()) return true;
 
-        // remove alignments other than {X}M({Y}S)? (or reverse for reverse strand)
+        // remove alignments other than {X}M({Z}N{X2}M)?({Y}S)? (or reverse for reverse strand)
         if (alignFilter.isFilterRead(bamRead)) return true;
 
         // filter out upstream reads and high depth regions:
@@ -655,13 +888,14 @@ struct ReadGroupManager
         return rgIter->second;
     }
 
-    // check if all read groups have been sufficiently sampled in this region:
+    /// check if all read groups have been sufficiently sampled for a slice
+    /// for each read group, either 100k samples has been collected, or the insert size distrubution has converged
     bool
-    isFinishedRegion()
+    isFinishedSlice()
     {
         for (RGMapType::value_type& val : _rgTracker)
         {
-            if (! val.second.isChecked()) return false;
+            if (! val.second.isCheckedOrConverged()) return false;
         }
 
         for (RGMapType::value_type& val : _rgTracker)
@@ -672,7 +906,7 @@ struct ReadGroupManager
         return true;
     }
 
-    // test if all read groups have converged or hit other stopping conditions
+    /// test if all read groups have converged or hit other stopping conditions
     bool
     isStopEstimation()
     {
@@ -745,63 +979,78 @@ extractReadGroupStatsFromBam(
         {
             if (isStopEstimation) break;
 
-            const int32_t startPos(chromHighestPos[chromIndex]+1);
+            // keep sampling until
+            // either the chromosome has been exhuasted
+            // or the current chunk has been sufficiently sampled
+            bool isFinishedSlice(false);
+            while (! isFinishedSlice)
+            {
+                const int32_t startPos(chromHighestPos[chromIndex] + 1);
+                if (startPos >= chromSize[chromIndex]) break;
+
 #ifdef DEBUG_RPS
-            std::cerr << "INFO: Stats requesting bam region starting from: chrid: " << chromIndex << " start: " << startPos << "\n";
+                std::cerr << "INFO: Stats requesting bam region starting from: chrid: " << chromIndex << " start: "
+                          << startPos << "\n";
 #endif
-            if (startPos >= chromSize[chromIndex]) continue;
+                read_stream.resetRegion(chromIndex, startPos, chromSize[chromIndex]);
 
-            read_stream.set_new_region(chromIndex,startPos,chromSize[chromIndex]);
-            while (read_stream.next())
-            {
-                const bam_record& bamRead(*(read_stream.get_record_ptr()));
-                if (bamRead.pos()<startPos) continue;
+                while (read_stream.next())
+                {
+                    const bam_record& bamRead(*(read_stream.get_record_ptr()));
+                    if (bamRead.pos() < startPos) continue;
 
-                chromHighestPos[chromIndex]=bamRead.pos();
-                isActiveChrom=true;
+                    chromHighestPos[chromIndex] = bamRead.pos();
+                    isActiveChrom = true;
 
-                if (coreFilter.isFilterRead(bamRead)) continue;
+                    if (coreFilter.isFilterRead(bamRead)) continue;
 
 #ifdef READ_GROUPS
-                ReadGroupTracker& rgInfo(rgManager.getTracker(bamRead));
+                    ReadGroupTracker& rgInfo(rgManager.getTracker(bamRead));
 #endif
+                    if (rgInfo.isInsertSizeConverged()) continue;
+
+                    const PAIR_ORIENT::index_t ori(getRelOrient(bamRead));
+                    unsigned fragSize(0);
+                    if (ori == PAIR_ORIENT::Rp)
+                    {
+                        fragSize = getSimplifiedFragSize(getFragSizeMinusSkip(bamRead));
+                    }
+                    const bool isNormal = rgInfo.addObservation(ori, fragSize);
+
+                    if (! isNormal)
+                    {
+                        chromHighestPos[chromIndex] += chromSize[chromIndex]/100;
+#ifdef DEBUG_RPS
+                        std::cerr << " Jump to chrid: " << chromIndex << " position: "
+                                  << chromHighestPos[chromIndex] << "\n";
+#endif
+                        break;
+                    }
 
-                if (rgInfo.isInsertSizeConverged()) continue;
-
-                // get orientation stats before final filter for innie reads below:
-                //
-                // we won't use anything but innie reads for insert size stats, but sampling
-                // orientation beforehand allows us to detect, ie. a mate-pair library
-                // so that we can blow-up with an informative error msg
-                //
-                const PAIR_ORIENT::index_t ori(getRelOrient(bamRead));
-                rgInfo.addOrient(ori);
+                    if (! rgInfo.isInsertSizeChecked()) continue;
 
-                // filter mapped innies on the same chrom
-                //
-                // note we don't rely on the proper pair bit because this already contains an
-                // arbitrary length filter and  subjects the method to aligner specific variation
-                //
-                // TODO: ..note this locks-in standard ilmn orientation -- okay for now but this function needs major
-                // re-arrangement for mate-pair support, we could still keep independence from each aligner's proper
-                // pair decisions by estimating a fragment distro for each orientation and only keeping the one with
-                // the most samples
-                //
-                if (ori != PAIR_ORIENT::Rp) continue;
+                    // check convergence
+                    rgInfo.updateInsertSizeConvergenceTest();
 
-                rgInfo.addInsertSize(getSimplifiedFragSize(bamRead));
+                    isFinishedSlice = rgManager.isFinishedSlice();
+                    if (! isFinishedSlice) continue;
 
-                if (! rgInfo.isInsertSizeCountCheck()) continue;
+                    isStopEstimation = rgManager.isStopEstimation();
 
-                // check convergence
-                rgInfo.updateInsertSizeConvergenceTest();
+                    // break from reading the current chromosome
+                    break;
+                }
 
-                if (! rgManager.isFinishedRegion()) continue;
+                // move to next region if no read falling in the current region
+                if (chromHighestPos[chromIndex] <= startPos)
+                {
+#ifdef DEBUG_RPS
+                    std::cerr << "No read found in the previous region.\n";
+#endif
+                    chromHighestPos[chromIndex] += chromSize[chromIndex]/100;
 
-                isStopEstimation = rgManager.isStopEstimation();
+                }
 
-                // break from reading the current chromosome
-                break;
             }
         }
     }
diff --git a/src/c++/lib/manta/ReadGroupStatsUtil.hh b/src/c++/lib/manta/ReadGroupStatsUtil.hh
index 416a03c..a78f045 100644
--- a/src/c++/lib/manta/ReadGroupStatsUtil.hh
+++ b/src/c++/lib/manta/ReadGroupStatsUtil.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/manta/RemoteMateReadUtil.cpp b/src/c++/lib/manta/RemoteMateReadUtil.cpp
index ba59087..62abcfe 100644
--- a/src/c++/lib/manta/RemoteMateReadUtil.cpp
+++ b/src/c++/lib/manta/RemoteMateReadUtil.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/manta/RemoteMateReadUtil.hh b/src/c++/lib/manta/RemoteMateReadUtil.hh
index f25750e..bd4ac49 100644
--- a/src/c++/lib/manta/RemoteMateReadUtil.hh
+++ b/src/c++/lib/manta/RemoteMateReadUtil.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/manta/SVBreakend.cpp b/src/c++/lib/manta/SVBreakend.cpp
index 3e09d00..40afeaa 100644
--- a/src/c++/lib/manta/SVBreakend.cpp
+++ b/src/c++/lib/manta/SVBreakend.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/manta/SVBreakend.hh b/src/c++/lib/manta/SVBreakend.hh
index 756510d..9f1cbd3 100644
--- a/src/c++/lib/manta/SVBreakend.hh
+++ b/src/c++/lib/manta/SVBreakend.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/manta/SVCandidate.cpp b/src/c++/lib/manta/SVCandidate.cpp
index 54f1d45..df2f4e1 100644
--- a/src/c++/lib/manta/SVCandidate.cpp
+++ b/src/c++/lib/manta/SVCandidate.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/manta/SVCandidate.hh b/src/c++/lib/manta/SVCandidate.hh
index d021706..a21b207 100644
--- a/src/c++/lib/manta/SVCandidate.hh
+++ b/src/c++/lib/manta/SVCandidate.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
@@ -143,13 +142,11 @@ struct SVCandidate
         return std::abs(bp2.interval.range.center_pos() - bp1.interval.range.center_pos());
     }
 
-    /// for precise SV report the full spanning count
-    /// for imprecise SV report spanning pairs only
-    ///
+    /// Report the full spanning count
     unsigned
-    getPostAssemblySpanningCount() const
+    getPostAssemblySpanningCount(const bool isRNA) const
     {
-        if (isImprecise())
+        if (!isRNA && isImprecise())
         {
             return bp1.getPairCount();
         }
@@ -186,6 +183,7 @@ public:
 
     unsigned fwReads = 0; ///< Number of reads (pairs) supporting a direction from bp1 to bp2 (used for stranded RNA data)
     unsigned rvReads = 0; ///< Number of reads (pairs) directed from bp2 to bp1
+
     /// filter out this sv candidate unless it's rescued by a multi-junction event:
     bool isSingleJunctionFilter = false;
 };
diff --git a/src/c++/lib/manta/SVCandidateAssembler.cpp b/src/c++/lib/manta/SVCandidateAssembler.cpp
index 68b6fdc..1204080 100644
--- a/src/c++/lib/manta/SVCandidateAssembler.cpp
+++ b/src/c++/lib/manta/SVCandidateAssembler.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
@@ -232,7 +231,7 @@ recoverRemoteReads(
 #endif
 
         // set bam stream to new search interval:
-        bamStream.set_new_region(
+        bamStream.resetRegion(
             interval.tid,
             interval.range.begin_pos(),
             interval.range.end_pos()+1);
@@ -420,7 +419,7 @@ getBreakendReads(
         bam_streamer& bamStream(*_bamStreams[bamIndex]);
 
         // set bam stream to new search interval:
-        bamStream.set_new_region(bp.interval.tid, searchBeginPos, searchEndPos);
+        bamStream.resetRegion(bp.interval.tid, searchBeginPos, searchEndPos);
 
         ShadowReadFinder shadow(_scanOpt.minSingletonMapqCandidates, isSearchForLeftOpen, isSearchForRightOpen);
 
diff --git a/src/c++/lib/manta/SVCandidateAssembler.hh b/src/c++/lib/manta/SVCandidateAssembler.hh
index 9d9d3b5..eabcdab 100644
--- a/src/c++/lib/manta/SVCandidateAssembler.hh
+++ b/src/c++/lib/manta/SVCandidateAssembler.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/manta/SVCandidateAssemblyData.cpp b/src/c++/lib/manta/SVCandidateAssemblyData.cpp
index cbdaa16..97af9af 100644
--- a/src/c++/lib/manta/SVCandidateAssemblyData.cpp
+++ b/src/c++/lib/manta/SVCandidateAssemblyData.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/manta/SVCandidateAssemblyData.hh b/src/c++/lib/manta/SVCandidateAssemblyData.hh
index d5ee120..9c330a2 100644
--- a/src/c++/lib/manta/SVCandidateAssemblyData.hh
+++ b/src/c++/lib/manta/SVCandidateAssemblyData.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/manta/SVCandidateSetData.cpp b/src/c++/lib/manta/SVCandidateSetData.cpp
index f99c414..aa9bd03 100644
--- a/src/c++/lib/manta/SVCandidateSetData.cpp
+++ b/src/c++/lib/manta/SVCandidateSetData.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/manta/SVCandidateSetData.hh b/src/c++/lib/manta/SVCandidateSetData.hh
index a2ec162..f7b2369 100644
--- a/src/c++/lib/manta/SVCandidateSetData.hh
+++ b/src/c++/lib/manta/SVCandidateSetData.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/manta/SVCandidateUtil.cpp b/src/c++/lib/manta/SVCandidateUtil.cpp
index b62b75c..8e3b763 100644
--- a/src/c++/lib/manta/SVCandidateUtil.cpp
+++ b/src/c++/lib/manta/SVCandidateUtil.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
@@ -98,6 +97,8 @@ index_t
 classifyIndel(
     const SVCandidate& sv)
 {
+    if (sv.isUnknownSizeInsertion) return INSERT;
+
     const bool isBp1First(sv.bp1.interval.range.begin_pos()<=sv.bp2.interval.range.begin_pos());
 
     const SVBreakend& bpA(isBp1First ? sv.bp1 : sv.bp2);
diff --git a/src/c++/lib/manta/SVCandidateUtil.hh b/src/c++/lib/manta/SVCandidateUtil.hh
index d33899f..d4af4df 100644
--- a/src/c++/lib/manta/SVCandidateUtil.hh
+++ b/src/c++/lib/manta/SVCandidateUtil.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/manta/SVLocusEvidenceCount.hh b/src/c++/lib/manta/SVLocusEvidenceCount.hh
index 7633292..ee064d0 100644
--- a/src/c++/lib/manta/SVLocusEvidenceCount.hh
+++ b/src/c++/lib/manta/SVLocusEvidenceCount.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
@@ -61,7 +60,7 @@ struct SVLocusEvidenceCount
 
     // using doubles for integral counts here because (1) counts are potentially very high and (2) exact counts don't matter
 
-    ///< total number of non-filtered anomalous reads scanned
+    ///< total number of non-filtered reads scanned
     double total = 0;
 
     ///< total number of non-filtered reads ignored for SV purposes
diff --git a/src/c++/lib/manta/SVLocusScanner.cpp b/src/c++/lib/manta/SVLocusScanner.cpp
index 51ad318..a105394 100644
--- a/src/c++/lib/manta/SVLocusScanner.cpp
+++ b/src/c++/lib/manta/SVLocusScanner.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
@@ -97,6 +96,7 @@ SVObservation
 GetSplitSVCandidate(
     const ReadScannerDerivOptions& dopt,
     const int32_t alignTid,
+    const pos_t alignTlen,
     const pos_t leftPos,
     const pos_t rightPos,
     const SVEvidenceType::index_t& svSource,
@@ -130,15 +130,15 @@ GetSplitSVCandidate(
 
     if (! isComplex)
     {
-        localBreakend.interval.range.set_end_pos(leftPos+dopt.afterBreakend);
+        localBreakend.interval.range.set_end_pos(std::min(alignTlen, (leftPos+dopt.afterBreakend)));
     }
     else
     {
-        localBreakend.interval.range.set_end_pos(rightPos+dopt.afterBreakend);
+        localBreakend.interval.range.set_end_pos(std::min(alignTlen, (rightPos+dopt.afterBreakend)));
     }
 
     remoteBreakend.interval.range.set_begin_pos(std::max(0,rightPos-dopt.beforeBreakend));
-    remoteBreakend.interval.range.set_end_pos(rightPos+dopt.afterBreakend);
+    remoteBreakend.interval.range.set_end_pos(std::min(alignTlen, (rightPos+dopt.afterBreakend)));
 
     return sv;
 }
@@ -164,7 +164,8 @@ void
 updateSABreakend(
     const ReadScannerDerivOptions& dopt,
     const SimpleAlignment& align,
-    SVBreakend& breakend)
+    SVBreakend& breakend,
+    const bam_header_info& bamHeader)
 {
     // Need to use the match descriptors to determine if the split is upstream (i.e. 5' assuming fwd strand)
     // of the current alignment (i.e. we are clipped on the left side) or downstream
@@ -186,6 +187,7 @@ updateSABreakend(
     }
 
     breakend.interval.tid = align.tid;
+    const pos_t alignTlength(bamHeader.chrom_data[align.tid].length);
     // get the position of the breakend implied by the split, if split
     // is downstream (see above) the split position is the end of this split
     // read segment
@@ -196,7 +198,7 @@ updateSABreakend(
         pos += apath_ref_length(align.path);
     }
     breakend.interval.range.set_begin_pos(std::max(0,pos-dopt.beforeBreakend));
-    breakend.interval.range.set_end_pos(pos+dopt.afterBreakend);
+    breakend.interval.range.set_end_pos(std::min(alignTlength, (pos+dopt.afterBreakend)));
 }
 
 
@@ -209,7 +211,8 @@ GetSplitSACandidate(
     const bam_record& localRead,
     const SimpleAlignment& localAlign,
     const SimpleAlignment& remoteAlign,
-    const FRAGSOURCE::index_t fragSource)
+    const FRAGSOURCE::index_t fragSource,
+    const bam_header_info& bamHeader)
 {
     using namespace SVEvidenceType;
     static const index_t svSource(SPLIT_ALIGN);
@@ -225,8 +228,8 @@ GetSplitSACandidate(
     // reverse edge. this protects against double-count:
     localBreakend.lowresEvidence.add(svSource);
 
-    updateSABreakend(dopt, localAlign, localBreakend);
-    updateSABreakend(dopt, remoteAlign, remoteBreakend);
+    updateSABreakend(dopt, localAlign, localBreakend, bamHeader);
+    updateSABreakend(dopt, remoteAlign, remoteBreakend, bamHeader);
 
     // If the local (bp1) alignment is split downstream (on the right side) then this read goes from bp1 -> bp2.
     // If it is a forward read (e.g. read1 on + strand), this means it's a forward read for this event.
@@ -324,13 +327,13 @@ getSACandidatesFromRead(
     const bam_record& localRead,
     const SimpleAlignment& localAlign,
     const FRAGSOURCE::index_t fragSource,
-    const chromMap_t& chromToIndex,
+    const bam_header_info& bamHeader,
     std::vector<SVObservation>& candidates)
 {
     using namespace ALIGNPATH;
 
     std::vector<SimpleAlignment> remoteAlign;
-    parseSACandidatesFromRead(opt, localRead, chromToIndex, remoteAlign);
+    parseSACandidatesFromRead(opt, localRead, bamHeader.chrom_to_index, remoteAlign);
 
     if (remoteAlign.empty()) return;
 
@@ -341,7 +344,7 @@ getSACandidatesFromRead(
 
     for (const auto& ral : remoteAlign)
     {
-        candidates.push_back(GetSplitSACandidate(dopt, localRead, localAlign, ral, fragSource));
+        candidates.push_back(GetSplitSACandidate(dopt, localRead, localAlign, ral, fragSource, bamHeader));
 #ifdef DEBUG_SCANNER
         log_os << __FUNCTION__ << ": evaluating SA sv for inclusion: " << candidates.back() << "\n";
 #endif
@@ -357,6 +360,7 @@ getSVCandidatesFromReadIndels(
     const ReadScannerOptions& opt,
     const ReadScannerDerivOptions& dopt,
     const SimpleAlignment& align,
+    const bam_header_info& bamHeader,
     const FRAGSOURCE::index_t fragSource,
     std::vector<SVObservation>& candidates)
 {
@@ -369,6 +373,8 @@ getSVCandidatesFromReadIndels(
     unsigned pathIndex(0);
     unsigned readOffset(0);
     pos_t refHeadPos(align.pos);
+    const int32_t alignTid(align.tid);
+    const pos_t alignTlen(bamHeader.chrom_data[alignTid].length);
 
     const unsigned pathSize(align.path.size());
     while (pathIndex<pathSize)
@@ -400,7 +406,7 @@ getSVCandidatesFromReadIndels(
                 if (ps.length >= opt.minCandidateVariantSize)
                 {
                     static const bool isComplex(true);
-                    candidates.push_back(GetSplitSVCandidate(dopt, align.tid, refHeadPos, refHeadPos, svSource, fragSource, isComplex));
+                    candidates.push_back(GetSplitSVCandidate(dopt, alignTid, alignTlen, refHeadPos, refHeadPos, svSource, fragSource, isComplex));
                 }
             }
         }
@@ -409,7 +415,7 @@ getSVCandidatesFromReadIndels(
             const swap_info sinfo(align.path,pathIndex);
             if ((sinfo.delete_length >= opt.minCandidateVariantSize) || (sinfo.insert_length >= opt.minCandidateVariantSize))
             {
-                candidates.push_back(GetSplitSVCandidate(dopt, align.tid, refHeadPos, refHeadPos+sinfo.delete_length, svSource, fragSource));
+                candidates.push_back(GetSplitSVCandidate(dopt, alignTid, alignTlen, refHeadPos, refHeadPos+sinfo.delete_length, svSource, fragSource));
             }
 
             nPathSegments = sinfo.n_seg;
@@ -422,14 +428,14 @@ getSVCandidatesFromReadIndels(
             {
                 if (ps.length >= opt.minCandidateVariantSize)
                 {
-                    candidates.push_back(GetSplitSVCandidate(dopt, align.tid, refHeadPos, refHeadPos+ps.length, svSource, fragSource));
+                    candidates.push_back(GetSplitSVCandidate(dopt, alignTid, alignTlen, refHeadPos, refHeadPos+ps.length, svSource, fragSource));
                 }
             }
             else if (ps.type == INSERT)
             {
                 if (ps.length >= opt.minCandidateVariantSize)
                 {
-                    candidates.push_back(GetSplitSVCandidate(dopt, align.tid, refHeadPos, refHeadPos, svSource, fragSource));
+                    candidates.push_back(GetSplitSVCandidate(dopt, alignTid, alignTlen, refHeadPos, refHeadPos, svSource, fragSource));
                 }
             }
         }
@@ -451,6 +457,7 @@ getSVCandidatesFromSemiAligned(
     const ReadScannerOptions& opt,
     const ReadScannerDerivOptions& dopt,
     const bam_record& bamRead,
+    const bam_header_info& bamHeader,
     const SimpleAlignment& bamAlign,
     const FRAGSOURCE::index_t fragSource,
     const reference_contig_segment& refSeq,
@@ -472,17 +479,19 @@ getSVCandidatesFromSemiAligned(
     // semi-aligned reads don't define a full hypothesis, so they're always evidence for a 'complex' ie. undefined, event
     // in a fashion analogous to clipped reads
     static const bool isComplex(true);
+    const int32_t alignTid(bamRead.target_id());
+    const pos_t alignTlen(bamHeader.chrom_data[alignTid].length);
 
     if (leadingMismatchLen >= opt.minSemiAlignedMismatchLen)
     {
         const pos_t pos(leadingRefPos);
-        candidates.push_back(GetSplitSVCandidate(dopt,bamRead.target_id(),pos,pos,svSource, fragSource,isComplex));
+        candidates.push_back(GetSplitSVCandidate(dopt,alignTid,alignTlen,pos,pos,svSource, fragSource,isComplex));
     }
 
     if (trailingMismatchLen >= opt.minSemiAlignedMismatchLen)
     {
         const pos_t pos(trailingRefPos);
-        candidates.push_back(GetSplitSVCandidate(dopt,bamRead.target_id(),pos,pos,svSource, fragSource,isComplex));
+        candidates.push_back(GetSplitSVCandidate(dopt,alignTid,alignTlen,pos,pos,svSource, fragSource,isComplex));
     }
 }
 
@@ -494,10 +503,12 @@ struct AlignmentPairAnalyzer
     AlignmentPairAnalyzer(
         const ReadScannerOptions& opt,
         const ReadScannerDerivOptions& dopt,
-        const SVLocusScanner::CachedReadGroupStats& rstats)
+        const SVLocusScanner::CachedReadGroupStats& rstats,
+        const bam_header_info& bamHeader)
         : _opt(opt),
           _dopt(dopt),
-          _rstats(rstats)
+          _rstats(rstats),
+          _header(bamHeader)
     {}
 
     void
@@ -527,6 +538,7 @@ struct AlignmentPairAnalyzer
         return (_scale >= 0.);
     }
 
+
     void
     getSVObservation(
         SVObservation& sv)
@@ -578,35 +590,69 @@ struct AlignmentPairAnalyzer
         const pos_t remoteStartRefPos(remoteAlign().pos);
 
         localBreakend.interval.tid = localAlign().tid;
+        const pos_t localAlignTlen(_header.chrom_data[localBreakend.interval.tid].length);
         // expected breakpoint range is from the end of the localRead alignment to the (probabilistic) end of the fragment:
         if (localAlign().is_fwd_strand)
         {
             localBreakend.state = SVBreakendState::RIGHT_OPEN;
-            localBreakend.interval.range.set_begin_pos(_localEndRefPos);
-            localBreakend.interval.range.set_end_pos(_localEndRefPos + breakendSize);
+            localBreakend.interval.range.set_begin_pos(std::min(localAlignTlen, _localEndRefPos));
+            localBreakend.interval.range.set_end_pos(std::min(localAlignTlen, (_localEndRefPos + breakendSize)));
         }
         else
         {
             localBreakend.state = SVBreakendState::LEFT_OPEN;
             localBreakend.interval.range.set_end_pos(localStartRefPos);
-            localBreakend.interval.range.set_begin_pos(localStartRefPos - breakendSize);
+            localBreakend.interval.range.set_begin_pos(std::max(0, (localStartRefPos - breakendSize)));
         }
 
         remoteBreakend.interval.tid = remoteAlign().tid;
+        const pos_t remoteAlignTlen(_header.chrom_data[remoteBreakend.interval.tid].length);
         if (remoteAlign().is_fwd_strand)
         {
             remoteBreakend.state = SVBreakendState::RIGHT_OPEN;
-            remoteBreakend.interval.range.set_begin_pos(_remoteEndRefPos);
-            remoteBreakend.interval.range.set_end_pos(_remoteEndRefPos + breakendSize);
+            remoteBreakend.interval.range.set_begin_pos(std::min(remoteAlignTlen, _remoteEndRefPos));
+            remoteBreakend.interval.range.set_end_pos(std::min(remoteAlignTlen, (_remoteEndRefPos + breakendSize)));
         }
         else
         {
             remoteBreakend.state = SVBreakendState::LEFT_OPEN;
             remoteBreakend.interval.range.set_end_pos(remoteStartRefPos);
-            remoteBreakend.interval.range.set_begin_pos(remoteStartRefPos - breakendSize);
+            remoteBreakend.interval.range.set_begin_pos(std::max(0, (remoteStartRefPos - breakendSize)));
         }
     }
 
+    /// return true if the open end of a read is aligned to chromosome ends
+    bool
+    isAlignedToChrmEnds()
+    {
+        const int32_t localTid(localAlign().tid);
+        const pos_t localAlignTlen(_header.chrom_data[localTid].length);
+        const int32_t remoteTid(remoteAlign().tid);
+        const pos_t remoteAlignTlen(_header.chrom_data[remoteTid].length);
+
+        if (localAlign().is_fwd_strand)
+        {
+            if (_localEndRefPos >= localAlignTlen) return true;
+        }
+        else
+        {
+            if (localAlign().pos <= 0) return true;
+        }
+
+
+        if (remoteAlign().is_fwd_strand)
+        {
+            if (_remoteEndRefPos >= remoteAlignTlen) return true;
+        }
+        else
+        {
+            if (remoteAlign().pos <= 0) return true;
+        }
+
+        return false;
+    }
+
+
     /// return the amount of unaligned sequence proceding the pair insert:
     static
     unsigned
@@ -716,6 +762,7 @@ private:
     const ReadScannerOptions& _opt;
     const ReadScannerDerivOptions& _dopt;
     const SVLocusScanner::CachedReadGroupStats& _rstats;
+    const bam_header_info& _header;
     const SimpleAlignment* _local = nullptr;
     const SimpleAlignment* _remote = nullptr;
     bool _isRemote = false;
@@ -739,6 +786,7 @@ getSVCandidatesFromPair(
     const bam_record& localRead,
     const SimpleAlignment& localAlign,
     const bam_record* remoteReadPtr,
+    const bam_header_info& bamHeader,
     std::vector<SVObservation>& candidates)
 {
     if (! localRead.is_paired()) return;
@@ -755,11 +803,13 @@ getSVCandidatesFromPair(
     const bool isRemote(nullptr != remoteReadPtr);
     const SimpleAlignment remoteAlign(isRemote ? getAlignment(*remoteReadPtr) : getFakeMateAlignment(localRead));
 
-    AlignmentPairAnalyzer pairInspector(opt, dopt, rstats);
+    AlignmentPairAnalyzer pairInspector(opt, dopt, rstats, bamHeader);
     pairInspector.reset(localAlign, remoteAlign, isRemote, localRead.is_first());
 
     if (! pairInspector.computeLargeEventRegionScale()) return;
 
+    if (pairInspector.isAlignedToChrmEnds()) return;
+
     candidates.emplace_back();
     pairInspector.getSVObservation(candidates.back());
 
@@ -851,7 +901,7 @@ getSingleReadSVCandidates(
     const ReadScannerDerivOptions& dopt,
     const bam_record& localRead,
     const SimpleAlignment& localAlign,
-    const chromMap_t& chromToIndex,
+    const bam_header_info& bamHeader,
     const reference_contig_segment& refSeq,
     std::vector<SVObservation>& candidates)
 {
@@ -861,7 +911,7 @@ getSingleReadSVCandidates(
     const FRAGSOURCE::index_t fragSource(isRead2 ? FRAGSOURCE::READ2 : FRAGSOURCE::READ1);
 
     // - process any large indels in the localRead:
-    getSVCandidatesFromReadIndels(opt, dopt, localAlign, fragSource, candidates);
+    getSVCandidatesFromReadIndels(opt, dopt, localAlign, bamHeader, fragSource, candidates);
 #ifdef DEBUG_SCANNER
     log_os << __FUNCTION__ << ": post-indels candidate_size: " << candidates.size() << "\n";
 #endif
@@ -872,8 +922,7 @@ getSingleReadSVCandidates(
     // be very rare.
     if (localRead.isSASplit())
     {
-        getSACandidatesFromRead(opt, dopt, localRead, localAlign, fragSource, chromToIndex,
-                                candidates);
+        getSACandidatesFromRead(opt, dopt, localRead, localAlign, fragSource, bamHeader, candidates);
 #ifdef DEBUG_SCANNER
         log_os << __FUNCTION__ << ": post-split read candidate_size: " << candidates.size() << "\n";
 #endif
@@ -882,7 +931,7 @@ getSingleReadSVCandidates(
     {
         if (dopt.isSmallCandidates)
         {
-            getSVCandidatesFromSemiAligned(opt, dopt, localRead, localAlign, fragSource, refSeq,
+            getSVCandidatesFromSemiAligned(opt, dopt, localRead, bamHeader, localAlign, fragSource, refSeq,
                                            candidates);
         }
 #ifdef DEBUG_SCANNER
@@ -926,7 +975,7 @@ getReadBreakendsImpl(
 
     try
     {
-        getSingleReadSVCandidates(opt, dopt, localRead, localAlign, chromToIndex,
+        getSingleReadSVCandidates(opt, dopt, localRead, localAlign, bamHeader,
                                   localRefSeq, candidates);
 
         // run the same check on the read's mate if we have access to it
@@ -941,7 +990,7 @@ getReadBreakendsImpl(
                 BOOST_THROW_EXCEPTION(LogicException(msg));
             }
             getSingleReadSVCandidates(opt, dopt, remoteRead, remoteAlign,
-                                      chromToIndex, (*remoteRefSeqPtr),
+                                      bamHeader, (*remoteRefSeqPtr),
                                       candidates);
         }
 
@@ -949,8 +998,8 @@ getReadBreakendsImpl(
         //getSVCandidatesFromShadow(opt, rstats, localRead, localAlign,remoteReadPtr,candidates);
 
         // - process anomalous read pairs:
-        getSVCandidatesFromPair(opt, dopt, rstats, localRead, localAlign, remoteReadPtr,
-                                candidates);
+        getSVCandidatesFromPair(opt, dopt, rstats, localRead, localAlign,
+                                remoteReadPtr, bamHeader, candidates);
     }
     catch (...)
     {
@@ -1259,7 +1308,8 @@ isProperPair(
 
     const Range& ppr(_stats[defaultReadGroupIndex].properPair);
     const int32_t fragmentSize(std::abs(bamRead.template_size()));
-
+    /// Unknown fragment size
+    if (fragmentSize == 0) return false;
     // we're seeing way to much large fragment garbage in cancers to use
     // vanilla proper pair criteria, push the max fragment size out a bit for now:
     static const float maxAnomFactor(1.5);
@@ -1280,6 +1330,7 @@ _getFragmentSizeType(
     using namespace FragmentSizeType;
     if (bamRead.target_id() != bamRead.mate_target_id()) return DISTANT;
     const int32_t fragmentSize(std::abs(bamRead.template_size()));
+    if (fragmentSize == 0) return UNKNOWN;
     return classifySize(_stats[defaultReadGroupIndex], fragmentSize);
 }
 
diff --git a/src/c++/lib/manta/SVLocusScanner.hh b/src/c++/lib/manta/SVLocusScanner.hh
index fb09bf8..411e7b3 100644
--- a/src/c++/lib/manta/SVLocusScanner.hh
+++ b/src/c++/lib/manta/SVLocusScanner.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
@@ -47,6 +46,7 @@ enum index_t
 {
     COMPRESSED,
     NORMAL,
+    UNKNOWN,
     VERYCLOSE,
     CLOSE,
     DISTANT
@@ -192,7 +192,9 @@ struct SVLocusScanner
     isLocalIndelEvidence(
         const SimpleAlignment& bamAlign) const;
 
-    /// semi-aligned and soft-clipped edges
+    /// true for reads with semi-aligned and soft-clipped edges
+    ///
+    /// "semi-aligned" here means the edge has a high density of mismatches
     bool
     isSemiAlignedEvidence(
         const bam_record& bamRead,
@@ -214,6 +216,8 @@ struct SVLocusScanner
         const bam_record& bamRead,
         const reference_contig_segment& refSeq) const;
 
+    /// \brief fast screen to eliminate reads which are very unlikely to contribute any SV or indel evidence
+    ///
     bool
     isSVEvidence(
         const bam_record& bamRead,
diff --git a/src/c++/lib/manta/SVLocusScannerSemiAligned.cpp b/src/c++/lib/manta/SVLocusScannerSemiAligned.cpp
index 23f177d..d7f857d 100644
--- a/src/c++/lib/manta/SVLocusScannerSemiAligned.cpp
+++ b/src/c++/lib/manta/SVLocusScannerSemiAligned.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/manta/SVLocusScannerSemiAligned.hh b/src/c++/lib/manta/SVLocusScannerSemiAligned.hh
index f9b0af8..a87b56c 100644
--- a/src/c++/lib/manta/SVLocusScannerSemiAligned.hh
+++ b/src/c++/lib/manta/SVLocusScannerSemiAligned.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/manta/SVModelScoreInfo.hh b/src/c++/lib/manta/SVModelScoreInfo.hh
index a7c30af..5a42427 100644
--- a/src/c++/lib/manta/SVModelScoreInfo.hh
+++ b/src/c++/lib/manta/SVModelScoreInfo.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/manta/SVMultiJunctionCandidate.cpp b/src/c++/lib/manta/SVMultiJunctionCandidate.cpp
index b5721be..205fb44 100644
--- a/src/c++/lib/manta/SVMultiJunctionCandidate.cpp
+++ b/src/c++/lib/manta/SVMultiJunctionCandidate.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/manta/SVMultiJunctionCandidate.hh b/src/c++/lib/manta/SVMultiJunctionCandidate.hh
index 95e6254..81eec9c 100644
--- a/src/c++/lib/manta/SVMultiJunctionCandidate.hh
+++ b/src/c++/lib/manta/SVMultiJunctionCandidate.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/manta/SVMultiJunctionCandidateUtil.hh b/src/c++/lib/manta/SVMultiJunctionCandidateUtil.hh
index df6d686..314b2a7 100644
--- a/src/c++/lib/manta/SVMultiJunctionCandidateUtil.hh
+++ b/src/c++/lib/manta/SVMultiJunctionCandidateUtil.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/manta/SVReferenceUtil.cpp b/src/c++/lib/manta/SVReferenceUtil.cpp
index d58330f..6d2def6 100644
--- a/src/c++/lib/manta/SVReferenceUtil.cpp
+++ b/src/c++/lib/manta/SVReferenceUtil.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/manta/SVReferenceUtil.hh b/src/c++/lib/manta/SVReferenceUtil.hh
index 59522ec..94010b6 100644
--- a/src/c++/lib/manta/SVReferenceUtil.hh
+++ b/src/c++/lib/manta/SVReferenceUtil.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/manta/SVScoreInfo.cpp b/src/c++/lib/manta/SVScoreInfo.cpp
index 1140b7c..5b254c9 100644
--- a/src/c++/lib/manta/SVScoreInfo.cpp
+++ b/src/c++/lib/manta/SVScoreInfo.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/manta/SVScoreInfo.hh b/src/c++/lib/manta/SVScoreInfo.hh
index 762d7b6..3de5820 100644
--- a/src/c++/lib/manta/SVScoreInfo.hh
+++ b/src/c++/lib/manta/SVScoreInfo.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/manta/SVScoreInfoDiploid.cpp b/src/c++/lib/manta/SVScoreInfoDiploid.cpp
index 08aba83..0a2f788 100644
--- a/src/c++/lib/manta/SVScoreInfoDiploid.cpp
+++ b/src/c++/lib/manta/SVScoreInfoDiploid.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
@@ -44,6 +43,12 @@ operator<<(
         if (gt!=0) os << ',';
         os << sids.phredLoghood[gt];
     }
+    os << " pprob=";
+    for (unsigned gt(0); gt<DIPLOID_GT::SIZE; ++gt)
+    {
+        if (gt!=0) os << ',';
+        os << sids.pprob[gt];
+    }
     os << " sampleFilters:";
     for (const std::string& filter : sids.filters)
     {
diff --git a/src/c++/lib/manta/SVScoreInfoDiploid.hh b/src/c++/lib/manta/SVScoreInfoDiploid.hh
index d39f281..0dbe55d 100644
--- a/src/c++/lib/manta/SVScoreInfoDiploid.hh
+++ b/src/c++/lib/manta/SVScoreInfoDiploid.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
@@ -119,8 +118,9 @@ altLnCompFraction(const index_t i)
 
 struct SVScoreInfoDiploidSample
 {
-    SVScoreInfoDiploidSample()
-        : phredLoghood(DIPLOID_GT::SIZE,0)
+    SVScoreInfoDiploidSample() :
+        phredLoghood(DIPLOID_GT::SIZE,0),
+        pprob(DIPLOID_GT::SIZE,0)
     {}
 
     void
@@ -130,6 +130,7 @@ struct SVScoreInfoDiploidSample
         gt=DIPLOID_GT::REF;
         gtScore=0;
         std::fill(phredLoghood.begin(),phredLoghood.end(),0);
+        std::fill(pprob.begin(), pprob.end(),0);
     }
 
     std::set<std::string> filters;
@@ -139,6 +140,7 @@ struct SVScoreInfoDiploidSample
     unsigned gtScore = 0; ///< quality score of genotype
 
     std::vector<unsigned> phredLoghood;
+    std::vector<double> pprob;
 };
 
 
diff --git a/src/c++/lib/manta/SVScoreInfoSomatic.cpp b/src/c++/lib/manta/SVScoreInfoSomatic.cpp
index a25c794..2b74729 100644
--- a/src/c++/lib/manta/SVScoreInfoSomatic.cpp
+++ b/src/c++/lib/manta/SVScoreInfoSomatic.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/manta/SVScoreInfoSomatic.hh b/src/c++/lib/manta/SVScoreInfoSomatic.hh
index 13cec0c..52a9b49 100644
--- a/src/c++/lib/manta/SVScoreInfoSomatic.hh
+++ b/src/c++/lib/manta/SVScoreInfoSomatic.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/manta/SVScoreInfoTumor.hh b/src/c++/lib/manta/SVScoreInfoTumor.hh
index 425b175..6b67e8c 100644
--- a/src/c++/lib/manta/SVScoreInfoTumor.hh
+++ b/src/c++/lib/manta/SVScoreInfoTumor.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/manta/ShadowReadFinder.cpp b/src/c++/lib/manta/ShadowReadFinder.cpp
index d224b8e..a0c6592 100644
--- a/src/c++/lib/manta/ShadowReadFinder.cpp
+++ b/src/c++/lib/manta/ShadowReadFinder.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/manta/ShadowReadFinder.hh b/src/c++/lib/manta/ShadowReadFinder.hh
index d8da8ef..a923d60 100644
--- a/src/c++/lib/manta/ShadowReadFinder.hh
+++ b/src/c++/lib/manta/ShadowReadFinder.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/manta/test/CMakeLists.txt b/src/c++/lib/manta/test/CMakeLists.txt
index 8164e48..bd7004c 100644
--- a/src/c++/lib/manta/test/CMakeLists.txt
+++ b/src/c++/lib/manta/test/CMakeLists.txt
@@ -1,6 +1,6 @@
 #
 # Manta - Structural Variant and Indel Caller
-# Copyright (c) 2013-2016 Illumina, Inc.
+# Copyright (c) 2013-2017 Illumina, Inc.
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/manta/test/SVLocusScannerSemiAlignedTest.cpp b/src/c++/lib/manta/test/SVLocusScannerSemiAlignedTest.cpp
index 51ec2b9..760a3f9 100644
--- a/src/c++/lib/manta/test/SVLocusScannerSemiAlignedTest.cpp
+++ b/src/c++/lib/manta/test/SVLocusScannerSemiAlignedTest.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/manta/test/SVLocusScannerTest.cpp b/src/c++/lib/manta/test/SVLocusScannerTest.cpp
index 6402f98..680cd6b 100644
--- a/src/c++/lib/manta/test/SVLocusScannerTest.cpp
+++ b/src/c++/lib/manta/test/SVLocusScannerTest.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
@@ -46,12 +45,14 @@ BOOST_AUTO_TEST_CASE( test_getSVCandidatesFromReadIndels )
     edit_bam_cigar(inputPath,*bamDataPtr);
 
     SimpleAlignment align(getAlignment(bamRead));
+    align.tid = 0;
 
     std::vector<SVObservation> candidates;
 
     bam_header_info hdr_info;
+    hdr_info.chrom_data.emplace_back("chr1", 1000000);
 
-    getSVCandidatesFromReadIndels(opt, dopt, align, FRAGSOURCE::UNKNOWN, candidates);
+    getSVCandidatesFromReadIndels(opt, dopt, align, hdr_info, FRAGSOURCE::UNKNOWN, candidates);
 
     BOOST_REQUIRE_EQUAL(candidates.size(),1u);
     BOOST_REQUIRE(candidates[0].bp1.interval.range.is_pos_intersect(100));
diff --git a/src/c++/lib/manta/test/test_main.cpp b/src/c++/lib/manta/test/test_main.cpp
index 031e8ec..3c92850 100644
--- a/src/c++/lib/manta/test/test_main.cpp
+++ b/src/c++/lib/manta/test/test_main.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/options/AlignmentFileOptions.hh b/src/c++/lib/options/AlignmentFileOptions.hh
index 7f1e13a..71f69bb 100644
--- a/src/c++/lib/options/AlignmentFileOptions.hh
+++ b/src/c++/lib/options/AlignmentFileOptions.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/options/AlignmentFileOptionsParser.cpp b/src/c++/lib/options/AlignmentFileOptionsParser.cpp
index 4c0f696..afab1ce 100644
--- a/src/c++/lib/options/AlignmentFileOptionsParser.cpp
+++ b/src/c++/lib/options/AlignmentFileOptionsParser.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/options/AlignmentFileOptionsParser.hh b/src/c++/lib/options/AlignmentFileOptionsParser.hh
index 4499f55..dec1724 100644
--- a/src/c++/lib/options/AlignmentFileOptionsParser.hh
+++ b/src/c++/lib/options/AlignmentFileOptionsParser.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/options/CMakeLists.txt b/src/c++/lib/options/CMakeLists.txt
index 977b8e2..d155110 100644
--- a/src/c++/lib/options/CMakeLists.txt
+++ b/src/c++/lib/options/CMakeLists.txt
@@ -1,6 +1,6 @@
 #
 # Manta - Structural Variant and Indel Caller
-# Copyright (c) 2013-2016 Illumina, Inc.
+# Copyright (c) 2013-2017 Illumina, Inc.
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/options/CallOptionsDiploid.cpp b/src/c++/lib/options/CallOptionsDiploid.cpp
index 2962ae4..0436c18 100644
--- a/src/c++/lib/options/CallOptionsDiploid.cpp
+++ b/src/c++/lib/options/CallOptionsDiploid.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/options/CallOptionsDiploid.hh b/src/c++/lib/options/CallOptionsDiploid.hh
index 15b2f25..409ec4e 100644
--- a/src/c++/lib/options/CallOptionsDiploid.hh
+++ b/src/c++/lib/options/CallOptionsDiploid.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/options/CallOptionsShared.hh b/src/c++/lib/options/CallOptionsShared.hh
index 24e541d..2f3b3ca 100644
--- a/src/c++/lib/options/CallOptionsShared.hh
+++ b/src/c++/lib/options/CallOptionsShared.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/options/CallOptionsSomatic.cpp b/src/c++/lib/options/CallOptionsSomatic.cpp
index 11b161d..02bc965 100644
--- a/src/c++/lib/options/CallOptionsSomatic.cpp
+++ b/src/c++/lib/options/CallOptionsSomatic.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/options/CallOptionsSomatic.hh b/src/c++/lib/options/CallOptionsSomatic.hh
index a8df15d..81f35ca 100644
--- a/src/c++/lib/options/CallOptionsSomatic.hh
+++ b/src/c++/lib/options/CallOptionsSomatic.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/options/CallOptionsTumor.cpp b/src/c++/lib/options/CallOptionsTumor.cpp
index f3b3855..88b4c8d 100644
--- a/src/c++/lib/options/CallOptionsTumor.cpp
+++ b/src/c++/lib/options/CallOptionsTumor.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/options/CallOptionsTumor.hh b/src/c++/lib/options/CallOptionsTumor.hh
index 5076e52..f43925a 100644
--- a/src/c++/lib/options/CallOptionsTumor.hh
+++ b/src/c++/lib/options/CallOptionsTumor.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/options/IterativeAssemblerOptions.hh b/src/c++/lib/options/IterativeAssemblerOptions.hh
index 12b52d3..e85f7ea 100644
--- a/src/c++/lib/options/IterativeAssemblerOptions.hh
+++ b/src/c++/lib/options/IterativeAssemblerOptions.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/options/ReadScannerOptions.hh b/src/c++/lib/options/ReadScannerOptions.hh
index 2747542..5a41cf2 100644
--- a/src/c++/lib/options/ReadScannerOptions.hh
+++ b/src/c++/lib/options/ReadScannerOptions.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/options/ReadScannerOptionsParser.cpp b/src/c++/lib/options/ReadScannerOptionsParser.cpp
index fb4b1a6..8132e73 100644
--- a/src/c++/lib/options/ReadScannerOptionsParser.cpp
+++ b/src/c++/lib/options/ReadScannerOptionsParser.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/options/ReadScannerOptionsParser.hh b/src/c++/lib/options/ReadScannerOptionsParser.hh
index ee3b74e..35b0e82 100644
--- a/src/c++/lib/options/ReadScannerOptionsParser.hh
+++ b/src/c++/lib/options/ReadScannerOptionsParser.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/options/SVLocusSetOptions.hh b/src/c++/lib/options/SVLocusSetOptions.hh
index 5e4595b..fd51af8 100644
--- a/src/c++/lib/options/SVLocusSetOptions.hh
+++ b/src/c++/lib/options/SVLocusSetOptions.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/options/SVLocusSetOptionsParser.cpp b/src/c++/lib/options/SVLocusSetOptionsParser.cpp
index 2b29c82..92b4d4b 100644
--- a/src/c++/lib/options/SVLocusSetOptionsParser.cpp
+++ b/src/c++/lib/options/SVLocusSetOptionsParser.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/options/SVLocusSetOptionsParser.hh b/src/c++/lib/options/SVLocusSetOptionsParser.hh
index c699f15..a287b03 100644
--- a/src/c++/lib/options/SVLocusSetOptionsParser.hh
+++ b/src/c++/lib/options/SVLocusSetOptionsParser.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/options/SVRefinerOptions.hh b/src/c++/lib/options/SVRefinerOptions.hh
index e9ade60..5e670d3 100644
--- a/src/c++/lib/options/SVRefinerOptions.hh
+++ b/src/c++/lib/options/SVRefinerOptions.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/options/SmallAssemblerOptions.hh b/src/c++/lib/options/SmallAssemblerOptions.hh
index bf708a9..d171506 100644
--- a/src/c++/lib/options/SmallAssemblerOptions.hh
+++ b/src/c++/lib/options/SmallAssemblerOptions.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/options/optionsUtil.cpp b/src/c++/lib/options/optionsUtil.cpp
index 0b7ebb8..b0b22c9 100644
--- a/src/c++/lib/options/optionsUtil.cpp
+++ b/src/c++/lib/options/optionsUtil.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/options/optionsUtil.hh b/src/c++/lib/options/optionsUtil.hh
index 39a975c..fce19eb 100644
--- a/src/c++/lib/options/optionsUtil.hh
+++ b/src/c++/lib/options/optionsUtil.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/svgraph/CMakeLists.txt b/src/c++/lib/svgraph/CMakeLists.txt
index 977b8e2..d155110 100644
--- a/src/c++/lib/svgraph/CMakeLists.txt
+++ b/src/c++/lib/svgraph/CMakeLists.txt
@@ -1,6 +1,6 @@
 #
 # Manta - Structural Variant and Indel Caller
-# Copyright (c) 2013-2016 Illumina, Inc.
+# Copyright (c) 2013-2017 Illumina, Inc.
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/svgraph/EdgeInfo.cpp b/src/c++/lib/svgraph/EdgeInfo.cpp
index 255a485..5b8879b 100644
--- a/src/c++/lib/svgraph/EdgeInfo.cpp
+++ b/src/c++/lib/svgraph/EdgeInfo.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/svgraph/EdgeInfo.hh b/src/c++/lib/svgraph/EdgeInfo.hh
index 172733f..10846c9 100644
--- a/src/c++/lib/svgraph/EdgeInfo.hh
+++ b/src/c++/lib/svgraph/EdgeInfo.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/svgraph/EdgeInfoUtil.cpp b/src/c++/lib/svgraph/EdgeInfoUtil.cpp
index 51f836c..17bb75f 100644
--- a/src/c++/lib/svgraph/EdgeInfoUtil.cpp
+++ b/src/c++/lib/svgraph/EdgeInfoUtil.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/svgraph/EdgeInfoUtil.hh b/src/c++/lib/svgraph/EdgeInfoUtil.hh
index cdcc500..f7e7883 100644
--- a/src/c++/lib/svgraph/EdgeInfoUtil.hh
+++ b/src/c++/lib/svgraph/EdgeInfoUtil.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/svgraph/GenomeInterval.cpp b/src/c++/lib/svgraph/GenomeInterval.cpp
index 5c71f6f..dde5b44 100644
--- a/src/c++/lib/svgraph/GenomeInterval.cpp
+++ b/src/c++/lib/svgraph/GenomeInterval.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/svgraph/GenomeInterval.hh b/src/c++/lib/svgraph/GenomeInterval.hh
index 26fdb60..117e661 100644
--- a/src/c++/lib/svgraph/GenomeInterval.hh
+++ b/src/c++/lib/svgraph/GenomeInterval.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/svgraph/GenomeIntervalTracker.hh b/src/c++/lib/svgraph/GenomeIntervalTracker.hh
index 70bfd71..a07af53 100644
--- a/src/c++/lib/svgraph/GenomeIntervalTracker.hh
+++ b/src/c++/lib/svgraph/GenomeIntervalTracker.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/svgraph/GenomeIntervalUtil.cpp b/src/c++/lib/svgraph/GenomeIntervalUtil.cpp
index df03ef4..55ef159 100644
--- a/src/c++/lib/svgraph/GenomeIntervalUtil.cpp
+++ b/src/c++/lib/svgraph/GenomeIntervalUtil.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/svgraph/GenomeIntervalUtil.hh b/src/c++/lib/svgraph/GenomeIntervalUtil.hh
index b9f1041..aff1ae5 100644
--- a/src/c++/lib/svgraph/GenomeIntervalUtil.hh
+++ b/src/c++/lib/svgraph/GenomeIntervalUtil.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/svgraph/SVLocus.cpp b/src/c++/lib/svgraph/SVLocus.cpp
index c18600d..84bf29d 100644
--- a/src/c++/lib/svgraph/SVLocus.cpp
+++ b/src/c++/lib/svgraph/SVLocus.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/svgraph/SVLocus.hh b/src/c++/lib/svgraph/SVLocus.hh
index d28d2a1..c7a67ff 100644
--- a/src/c++/lib/svgraph/SVLocus.hh
+++ b/src/c++/lib/svgraph/SVLocus.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
@@ -41,17 +40,28 @@ struct SVLocusSet;
 
 
 
-/// \brief a set of regions containing dependent SV evidence
+/// \brief a connected subgraph of the full SV locus graph
 ///
-/// An SV locus is a region set hypothetically containing the breakends of 1 to many
-/// SVs.
+/// An SVLocus is a set of graph nodes which are all (transitivivly) associated by some level of sequencing evidence,
+/// thus when the full SVLocus set is analyzed, each SVLocus can be treated as an independent variant calling problem
+/// without introducing any approximations.
 ///
-/// The locus is composed of a set of non-overlapping contiguous genomic regions and
-/// the links (edges) between them. Each link has an associated evidence count.
+/// The SVLocus acts as a "container of SVLocusNode objects" and thus a significant portion of the API surface is
+/// container-like (empty/size/begin/end). Note that edges are not explicitly stored in this graph format, nodes
+/// contain all edge information.
 ///
-/// This class internally manages the node shared pointers in a synced data structure,
-/// there's probably a better way to do this with transform_iterator, but I've always
-/// regretted using that.
+/// The index number of this SVLocs is stored in the class and needs to be synced with the parent SVLocusSet object.
+///
+/// The parent SVLocusSet object tracks individual SVLocusNode objects in this class (to enable a fast region-based
+/// query of all nodes). Thus any operation which changes node index numbers has to be synced with SVLocusSet via the
+/// flyweight_notifier base class.
+///
+/// The SVLocusNode index numbers also need to be synced with the node index number stored in the SVLocusNode edges,
+/// all edges are recorded between nodes via node index numbers, so any change to the node index number requires
+/// all in/out edges to be updated appropriately.
+///
+/// All SVLocusNodes will be non-overlapping when the graph is finalized, but during the graph building stage this may
+/// not be the case.
 ///
 struct SVLocus : public flyweight_notifier<SVLocusNodeMoveMessage>
 {
@@ -150,7 +160,7 @@ struct SVLocus : public flyweight_notifier<SVLocusNodeMoveMessage>
 
     /// find all node indices connected to startIndex
     ///
-    /// non-recursive version
+    /// this version uses a stack to avoid recursive function calls (otherwise this call tends to fail on large graphs)
     void
     findConnected(
         const NodeIndexType startIndex,
diff --git a/src/c++/lib/svgraph/SVLocusNode.cpp b/src/c++/lib/svgraph/SVLocusNode.cpp
index 29fc5d4..76ebdfd 100644
--- a/src/c++/lib/svgraph/SVLocusNode.cpp
+++ b/src/c++/lib/svgraph/SVLocusNode.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/svgraph/SVLocusNode.hh b/src/c++/lib/svgraph/SVLocusNode.hh
index 17a4511..d1aee91 100644
--- a/src/c++/lib/svgraph/SVLocusNode.hh
+++ b/src/c++/lib/svgraph/SVLocusNode.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
@@ -54,8 +53,12 @@
 
 struct SVLocusNode;
 
-
-// no constructor so that this can be used in a union:
+/// \brief object to represent graph edges
+///
+/// Note most edge information is pushed to the node class, the edge object only holds evidence count information.
+///
+/// This class has no constructor so that it can be used in a union
+///
 struct SVLocusEdge
 {
     unsigned
@@ -166,11 +169,14 @@ private:
 };
 #endif
 
-
+/// This map is used to represent all edges for a node in the "normal" case.
+///
 typedef std::map<NodeIndexType,SVLocusEdge> SVLocusEdgesType;
 
 
-/// used for an alternate compact representation of a node with zero or one edges
+/// this object is used for an alternate compact representation of a node, when the node has only zero or one
+/// edges. It is an alternative to to SVLocusEdgesType. Because the majority of nodes have a zero or one edge count,
+/// this leads to a very large savings in RAM required to represent the graph in memory.
 struct SVLocusEdgeSingle
 {
     template<class Archive>
@@ -186,8 +192,10 @@ struct SVLocusEdgeSingle
 };
 
 
-/// The edge manager enables iterator over the two forms of edges stored as a union
-/// TODO: hide the union behind an actual iteraror class
+/// The edge manager enables iterator over either of the two edge container formats (the "fat" map option or the
+/// compact SVLocusEdgeSingle option). The two edge formats need to be differentiated from a union.
+///
+/// TODO: hide the union behind an actual iterator class
 struct SVLocusEdgeManager
 {
     SVLocusEdgeManager(const SVLocusEdgeSingle& edge) :
@@ -219,6 +227,18 @@ private:
 };
 
 
+
+/// \brief stores all node region information plus all edges connecting to this node
+///
+/// This class stores all of the SV Locus graph information associated with each node:
+/// (1) genomic region of the node
+/// (2) genomic region of the sequencing evidence used to propose the node
+/// (3) a container of outgoing node edges.
+///
+/// Note to minimize memory usage, the edge container switches between two different formats which are wrapped behind
+/// a union. One container allows for any number of edges, an second compact format allows only zero or one edges.
+/// SVLocusNode itself is responsible for tracking the object type presently supported in this union.
+///
 struct SVLocusNode
 {
     typedef SVLocusEdgesType::const_iterator const_iterator;
@@ -229,7 +249,24 @@ struct SVLocusNode
         _edges.single.isZero=true;
     }
 
-    // specialized copy ctor which offsets all address:
+    /// standard copy ctor
+    SVLocusNode(const SVLocusNode& rhs) :
+        _interval(rhs._interval),
+        _evidenceRange(rhs._evidenceRange),
+        _isSingle(rhs._isSingle)
+    {
+        if (_isSingle)
+        {
+            _edges.single = rhs._edges.single;
+        }
+        else
+        {
+            _edges.multiPtr = new SVLocusEdgesType;
+            getMap() = rhs.getMap();
+        }
+    }
+
+    /// specialized copy ctor which offsets all node index numbers compared to those in the source object
     SVLocusNode(
         const SVLocusNode& in,
         const unsigned offset) :
@@ -255,22 +292,6 @@ struct SVLocusNode
         }
     }
 
-    SVLocusNode(const SVLocusNode& rhs) :
-        _interval(rhs._interval),
-        _evidenceRange(rhs._evidenceRange),
-        _isSingle(rhs._isSingle)
-    {
-        if (_isSingle)
-        {
-            _edges.single = rhs._edges.single;
-        }
-        else
-        {
-            _edges.multiPtr = new SVLocusEdgesType;
-            getMap() = rhs.getMap();
-        }
-    }
-
     ~SVLocusNode()
     {
         if (! _isSingle) delete _edges.multiPtr;
@@ -608,8 +629,8 @@ private:
         return *(_edges.multiPtr);
     }
 
-    // given a node in the multi-edge state with one edge, convert to
-    // the single-edge state
+    /// given a node in the multi-edge state with one edge, convert to
+    /// the single-edge state
     void
     convertToSingle()
     {
@@ -629,8 +650,8 @@ private:
     }
 
 
-    // given a node in the single-edge state with one edge, convert to
-    // the multi-edge state
+    /// given a node in the single-edge state with one edge, convert to
+    /// the multi-edge state
     void
     convertToMulti()
     {
@@ -648,10 +669,12 @@ private:
         const NodeIndexType toIndex,
         const char* label) const;
 
-    //////////////////  data:
+    //--------------  data:
     GenomeInterval _interval;
     known_pos_range2 _evidenceRange;
     CompactEdgeType _edges;
+
+    /// if true the CompactEdgeType union is set to represent type: SVLocusEdgeSingle
     bool _isSingle;
 };
 
diff --git a/src/c++/lib/svgraph/SVLocusSampleCounts.cpp b/src/c++/lib/svgraph/SVLocusSampleCounts.cpp
index 37fe654..f7d0565 100644
--- a/src/c++/lib/svgraph/SVLocusSampleCounts.cpp
+++ b/src/c++/lib/svgraph/SVLocusSampleCounts.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/svgraph/SVLocusSampleCounts.hh b/src/c++/lib/svgraph/SVLocusSampleCounts.hh
index 985e965..34ba4f1 100644
--- a/src/c++/lib/svgraph/SVLocusSampleCounts.hh
+++ b/src/c++/lib/svgraph/SVLocusSampleCounts.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/svgraph/SVLocusSet.cpp b/src/c++/lib/svgraph/SVLocusSet.cpp
index 6a25b1f..fb5bc70 100644
--- a/src/c++/lib/svgraph/SVLocusSet.cpp
+++ b/src/c++/lib/svgraph/SVLocusSet.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/svgraph/SVLocusSet.hh b/src/c++/lib/svgraph/SVLocusSet.hh
index 7a379b3..ffc1efa 100644
--- a/src/c++/lib/svgraph/SVLocusSet.hh
+++ b/src/c++/lib/svgraph/SVLocusSet.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
@@ -44,9 +43,44 @@
 #endif
 
 
-/// A set of SVLocus objects comprising a full locus graph
+/// \brief parent object used to manage Manta's SV Locus graph
 ///
-/// When finalized, the SVLocusSet contains non-overlapping SVLoci
+/// This includes all data on the graph itself, in addition to various meta-data on the graph or graph creation process.
+///
+/// The primary role of this object, per its name, is to act as a "bag of SVLocus objects", thus there is some standard
+/// container interface supporting this role (size/begin/end...), and special interface reflecting the region based
+/// nature of the stored objects (getRegionIntersect). The rationale of the SVLocus object is that one should exist for
+/// each disjoint subgraph of the SV Locus graph. This is true when the graph is finalized, but may not hold during
+/// intermediate stages of the graph building and merging process.
+///
+/// Additional interface methods added to this object include:
+///
+/// merge() - Merging 2 SVLocusSet objects is the fundamental operation which allows for the creation of a genome-wide
+/// graph. It is one of the more complex operations in Manta due to the signal vs. noise edge evidence distinction.
+///
+/// cleanRegion()/clean()/finalize() - 'cleaning' is an operation to remove noise edges. For the merge operation to work
+/// without information loss, this cannot be done until all sequences from a region have been observed and merged in,
+/// after which any noise edge connecting two nodes which both lie in the observed region can be removed. cleanRegion()
+/// does this for a specific region (executed as information is scanned in for the purpose of memory management), while
+/// clean() removes all noise edges from the entire graph. finalize() is used to declare intent to stop merging
+/// information into the graph and begin variant calling, its primary role is to run clean().
+///
+/// save()/load() - write/read the graph
+///
+/// Various additional stats functions report on:
+/// (1) graph summary stats (no of nodes, edges, self-edges, etc...)
+/// (2) graph creation summary stats (no of anom/split/filtered read-pairs observed, etc...)
+/// (3) graph processing info (no of edges/nodes cleaned so far), reading merging runtime cost,...
+/// (4) object parameters
+///
+/// Internal methods mostly provide details to support the above interface. Of special note is the node indexing system
+/// used by this object. For certain operations we (internally) need to provide range based queries for nodes
+/// intersecting points or segments of the genome. While an interval tree is an obvious starting point for this, it is
+/// pessimistic in time/memory, given that nodes are very small relative to chrom size. Instead, the maximum node size
+/// is stored for every chromosome, then a binary search is used to search nodes indexed on their beginning positions,
+/// and linear search backwards up to the maximum node size guarantees that all nodes intersecting a point can be found
+/// in (effectively) log-N time. This object inherits from flyweight_observer to help keep this node indexing data
+/// structure up to date as nodes are added/deleted within the SVLocus objects managed by this graph.
 ///
 struct SVLocusSet : public flyweight_observer<SVLocusNodeMoveMessage>
 {
@@ -110,16 +144,12 @@ struct SVLocusSet : public flyweight_observer<SVLocusNodeMoveMessage>
         return _loci[index];
     }
 
-    /// merge locus into this:
-    ///
-    /// locus is destroyed in this process
+    /// merge a single locus into this
     ///
     void
     merge(const SVLocus& locus);
 
-    /// merge locus set into this:
-    ///
-    /// locus set is destroyed in this process
+    /// merge a second locus set into this
     ///
     void
     merge(const SVLocusSet& set);
diff --git a/src/c++/lib/svgraph/test/CMakeLists.txt b/src/c++/lib/svgraph/test/CMakeLists.txt
index 83c64d7..1f7d1de 100644
--- a/src/c++/lib/svgraph/test/CMakeLists.txt
+++ b/src/c++/lib/svgraph/test/CMakeLists.txt
@@ -1,6 +1,6 @@
 #
 # Manta - Structural Variant and Indel Caller
-# Copyright (c) 2013-2016 Illumina, Inc.
+# Copyright (c) 2013-2017 Illumina, Inc.
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/svgraph/test/GenomeIntervalTest.cpp b/src/c++/lib/svgraph/test/GenomeIntervalTest.cpp
index 7c7849d..49d6bd6 100644
--- a/src/c++/lib/svgraph/test/GenomeIntervalTest.cpp
+++ b/src/c++/lib/svgraph/test/GenomeIntervalTest.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/svgraph/test/GenomeIntervalUtilTest.cpp b/src/c++/lib/svgraph/test/GenomeIntervalUtilTest.cpp
index 54be847..516f91e 100644
--- a/src/c++/lib/svgraph/test/GenomeIntervalUtilTest.cpp
+++ b/src/c++/lib/svgraph/test/GenomeIntervalUtilTest.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/svgraph/test/SVLocusNodeTest.cpp b/src/c++/lib/svgraph/test/SVLocusNodeTest.cpp
index cd7a386..377ead3 100644
--- a/src/c++/lib/svgraph/test/SVLocusNodeTest.cpp
+++ b/src/c++/lib/svgraph/test/SVLocusNodeTest.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/svgraph/test/SVLocusSerializeTest.cpp b/src/c++/lib/svgraph/test/SVLocusSerializeTest.cpp
index fb7d459..2346134 100644
--- a/src/c++/lib/svgraph/test/SVLocusSerializeTest.cpp
+++ b/src/c++/lib/svgraph/test/SVLocusSerializeTest.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/svgraph/test/SVLocusSetPrivateTest.cpp b/src/c++/lib/svgraph/test/SVLocusSetPrivateTest.cpp
index 222b12a..5d0246e 100644
--- a/src/c++/lib/svgraph/test/SVLocusSetPrivateTest.cpp
+++ b/src/c++/lib/svgraph/test/SVLocusSetPrivateTest.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/svgraph/test/SVLocusSetSerializeTest.cpp b/src/c++/lib/svgraph/test/SVLocusSetSerializeTest.cpp
index dd92d30..bf4b195 100644
--- a/src/c++/lib/svgraph/test/SVLocusSetSerializeTest.cpp
+++ b/src/c++/lib/svgraph/test/SVLocusSetSerializeTest.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/svgraph/test/SVLocusSetTest.cpp b/src/c++/lib/svgraph/test/SVLocusSetTest.cpp
index d204045..02d6a26 100644
--- a/src/c++/lib/svgraph/test/SVLocusSetTest.cpp
+++ b/src/c++/lib/svgraph/test/SVLocusSetTest.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/svgraph/test/SVLocusTest.cpp b/src/c++/lib/svgraph/test/SVLocusTest.cpp
index 8bc479f..155134d 100644
--- a/src/c++/lib/svgraph/test/SVLocusTest.cpp
+++ b/src/c++/lib/svgraph/test/SVLocusTest.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/svgraph/test/SVLocusTestUtil.hh b/src/c++/lib/svgraph/test/SVLocusTestUtil.hh
index c19d20c..5377a1c 100644
--- a/src/c++/lib/svgraph/test/SVLocusTestUtil.hh
+++ b/src/c++/lib/svgraph/test/SVLocusTestUtil.hh
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/c++/lib/svgraph/test/test_main.cpp b/src/c++/lib/svgraph/test/test_main.cpp
index 1f05f22..09c689e 100644
--- a/src/c++/lib/svgraph/test/test_main.cpp
+++ b/src/c++/lib/svgraph/test/test_main.cpp
@@ -1,7 +1,6 @@
-// -*- mode: c++; indent-tabs-mode: nil; -*-
 //
 // Manta - Structural Variant and Indel Caller
-// Copyright (c) 2013-2016 Illumina, Inc.
+// Copyright (c) 2013-2017 Illumina, Inc.
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff --git a/src/cmake/boost.cmake b/src/cmake/boost.cmake
index 1b11200..8296812 100644
--- a/src/cmake/boost.cmake
+++ b/src/cmake/boost.cmake
@@ -1,6 +1,6 @@
 #
 # Manta - Structural Variant and Indel Caller
-# Copyright (c) 2013-2016 Illumina, Inc.
+# Copyright (c) 2013-2017 Illumina, Inc.
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/src/cmake/bootstrap/common.bash b/src/cmake/bootstrap/common.bash
index 1241d53..d7d5da8 100644
--- a/src/cmake/bootstrap/common.bash
+++ b/src/cmake/bootstrap/common.bash
@@ -1,6 +1,6 @@
 #
 # Manta - Structural Variant and Indel Caller
-# Copyright (c) 2013-2016 Illumina, Inc.
+# Copyright (c) 2013-2017 Illumina, Inc.
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/src/cmake/bootstrap/installCmake.bash b/src/cmake/bootstrap/installCmake.bash
index 4bd8199..21fb9d8 100644
--- a/src/cmake/bootstrap/installCmake.bash
+++ b/src/cmake/bootstrap/installCmake.bash
@@ -1,7 +1,7 @@
 #!/usr/bin/env bash
 #
 # Manta - Structural Variant and Indel Caller
-# Copyright (c) 2013-2016 Illumina, Inc.
+# Copyright (c) 2013-2017 Illumina, Inc.
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/src/cmake/buildTimeConfigure.cmake b/src/cmake/buildTimeConfigure.cmake
index 731e205..3acbeb1 100644
--- a/src/cmake/buildTimeConfigure.cmake
+++ b/src/cmake/buildTimeConfigure.cmake
@@ -1,6 +1,6 @@
 #
 # Manta - Structural Variant and Indel Caller
-# Copyright (c) 2013-2016 Illumina, Inc.
+# Copyright (c) 2013-2017 Illumina, Inc.
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/src/cmake/cxxCommon.cmake b/src/cmake/cxxCommon.cmake
index ba7ba37..14bef9b 100644
--- a/src/cmake/cxxCommon.cmake
+++ b/src/cmake/cxxCommon.cmake
@@ -1,6 +1,6 @@
 #
 # Manta - Structural Variant and Indel Caller
-# Copyright (c) 2013-2016 Illumina, Inc.
+# Copyright (c) 2013-2017 Illumina, Inc.
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/src/cmake/cxxConfigure.cmake b/src/cmake/cxxConfigure.cmake
index 62cf8b5..7ad1449 100644
--- a/src/cmake/cxxConfigure.cmake
+++ b/src/cmake/cxxConfigure.cmake
@@ -1,6 +1,6 @@
 #
 # Manta - Structural Variant and Indel Caller
-# Copyright (c) 2013-2016 Illumina, Inc.
+# Copyright (c) 2013-2017 Illumina, Inc.
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -44,6 +44,14 @@ check_function_exists(powf HAVE_POWF)
 
 include ("${THIS_MACROS_CMAKE}")
 
+if (NOT CMAKE_CXX_COMPILER_ID)
+    message(FATAL_ERROR "CMAKE failed to detect c++ compiler id for CMAKE_CXX_COMPILER: '${CMAKE_CXX_COMPILER}'")
+endif ()
+
+if (NOT (CMAKE_C_COMPILER_ID AND (${CMAKE_CXX_COMPILER_ID} STREQUAL ${CMAKE_CXX_COMPILER_ID})))
+    message(FATAL_ERROR "CMAKE detected different C++ and C compiler types, which could lead to link errors in certain cases. Please set CC and CXX to the C and C++ front ends of the same compiler installation.")
+endif ()
+
 # Support for static linking
 # Note that this implies that all libraries must be found with the
 # exact file name (libXXX.a or libXXX.so)
@@ -89,8 +97,8 @@ if (NOT WIN32)
     endif()
 endif ()
 
-set (IS_CLANG ((CMAKE_C_COMPILER_ID STREQUAL "Clang") OR (CMAKE_C_COMPILER_ID STREQUAL "AppleClang")))
-set (IS_CLANGXX ((CMAKE_CXX_COMPILER_ID STREQUAL "Clang") OR (CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang")))
+set (IS_CLANG ((${CMAKE_C_COMPILER_ID} STREQUAL "Clang") OR (${CMAKE_C_COMPILER_ID} STREQUAL "AppleClang")))
+set (IS_CLANGXX ((${CMAKE_CXX_COMPILER_ID} STREQUAL "Clang") OR (${CMAKE_CXX_COMPILER_ID} STREQUAL "AppleClang")))
 
 
 if (${IS_CCACHE})
@@ -167,7 +175,7 @@ set (min_msvc_version "1800") # cl.exe 18, as shipped in Visual Studio 12 2013
 set (CXX_COMPILER_NAME "${CMAKE_CXX_COMPILER_ID}")
 set (COMPILER_VERSION "UNKNOWN")
 
-if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
+if (${CMAKE_CXX_COMPILER_ID} STREQUAL "GNU")
     get_compiler_version(COMPILER_VERSION)
     set (CXX_COMPILER_NAME "g++")
     test_min_compiler(${COMPILER_VERSION} "${min_gxx_version}" "${CXX_COMPILER_NAME}")
@@ -175,7 +183,7 @@ elseif (${IS_CLANGXX})
     get_clang_version(COMPILER_VERSION)
     set (CXX_COMPILER_NAME "clang++")
     test_min_compiler(${COMPILER_VERSION} "${min_clang_version}" "${CXX_COMPILER_NAME}")
-elseif (CMAKE_CXX_COMPILER_ID STREQUAL "Intel")
+elseif (${CMAKE_CXX_COMPILER_ID} STREQUAL "Intel")
     get_compiler_version(COMPILER_VERSION)
     set (CXX_COMPILER_NAME "icpc")
     test_min_compiler(${COMPILER_VERSION} "${min_intel_version}" "${CXX_COMPILER_NAME}")
@@ -187,7 +195,7 @@ endif ()
 
 message (STATUS "Using compiler: ${CXX_COMPILER_NAME} version ${COMPILER_VERSION}")
 
-if (CMAKE_CXX_COMPILER_ID STREQUAL "Intel")
+if (${CMAKE_CXX_COMPILER_ID} STREQUAL "Intel")
     # for intel we also need to test the minimum version of g++ currently
     # in the path (because this is the stdc++ library that intel will use):
     get_compiler_name_version("g++" gxx_compiler_version)
@@ -205,11 +213,11 @@ endif ()
 ## set static linking of standard libraries for binary redistribution:
 ##
 set (IS_STANDARD_STATIC FALSE)
-if     (CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
+if     (${CMAKE_CXX_COMPILER_ID} STREQUAL "GNU")
     if (NOT (${COMPILER_VERSION} VERSION_LESS "4.5"))
         set (IS_STANDARD_STATIC TRUE)
     endif ()
-elseif (CMAKE_CXX_COMPILER_ID STREQUAL "Intel")
+elseif (${CMAKE_CXX_COMPILER_ID} STREQUAL "Intel")
     set (IS_STANDARD_STATIC TRUE)
 endif ()
 
@@ -223,9 +231,9 @@ endif ()
 ##
 
 # determine version of libstdc++ library
-if     (CMAKE_CXX_COMPILER_ID STREQUAL "INTEL")
+if     (${CMAKE_CXX_COMPILER_ID} STREQUAL "INTEL")
     set(STDCXX_VERSION ${gxx_compiler_version})
-elseif (CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
+elseif (${CMAKE_CXX_COMPILER_ID} STREQUAL "GNU")
     set(STDCXX_VERSION ${COMPILER_VERSION})
 else ()
     set(STDCXX_VERSION FALSE)
@@ -252,18 +260,18 @@ endif ()
 ##
 ## set warning flags:
 ##
-set (GNU_COMPAT_COMPILER ( (CMAKE_CXX_COMPILER_ID STREQUAL "GNU") OR (${IS_CLANGXX}) OR (CMAKE_CXX_COMPILER_ID STREQUAL "Intel")))
+set (GNU_COMPAT_COMPILER ( (${CMAKE_CXX_COMPILER_ID} STREQUAL "GNU") OR (${IS_CLANGXX}) OR (${CMAKE_CXX_COMPILER_ID} STREQUAL "Intel")))
 if (${GNU_COMPAT_COMPILER})
     append_args(CXX_WARN_FLAGS "-Wall -Wextra -Wshadow -Wunused -Wpointer-arith -Winit-self -pedantic -Wunused-parameter")
     append_args(CXX_WARN_FLAGS "-Wundef -Wno-unknown-pragmas")
     append_args(CXX_WARN_FLAGS "-Wdeprecated")
 
-    if ((NOT CMAKE_CXX_COMPILER_ID STREQUAL "Intel") OR (NOT ${COMPILER_VERSION} VERSION_LESS "14.0"))
+    if ((NOT ${CMAKE_CXX_COMPILER_ID} STREQUAL "Intel") OR (NOT ${COMPILER_VERSION} VERSION_LESS "14.0"))
         append_args(CXX_WARN_FLAGS "-Wdisabled-optimization")
         append_args(CXX_WARN_FLAGS "-Wno-missing-braces")
     endif ()
 
-    if (NOT CMAKE_CXX_COMPILER_ID STREQUAL "Intel")
+    if (NOT ${CMAKE_CXX_COMPILER_ID} STREQUAL "Intel")
         append_args(CXX_WARN_FLAGS "-Wempty-body")
         append_args(CXX_WARN_FLAGS "-Wredundant-decls")
     endif ()
@@ -280,7 +288,7 @@ elseif (MSVC)
     append_args(CXX_WARN_FLAGS "/wd4503")
 endif ()
 
-if     (CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
+if     (${CMAKE_CXX_COMPILER_ID} STREQUAL "GNU")
     if (NOT (${COMPILER_VERSION} VERSION_LESS "4.2"))
         append_args(CXX_WARN_FLAGS "-Wlogical-op")
     endif ()
@@ -361,7 +369,14 @@ elseif (${IS_CLANGXX})
         endif ()
     endif ()
 
-elseif (CMAKE_CXX_COMPILER_ID STREQUAL "Intel")
+    if (NOT (${COMPILER_VERSION} VERSION_LESS "3.9"))
+        append_args(CXX_WARN_FLAGS "-Wnewline-eof")
+
+        if (${IS_WARN_EVERYTHING})
+            append_args(CXX_WARN_FLAGS "-Wno-comma")
+        endif ()
+    endif ()
+elseif (${CMAKE_CXX_COMPILER_ID} STREQUAL "Intel")
     # suppress errors in boost headers:
     append_args(CXX_WARN_FLAGS "-diag-disable 177,193,869,1599,3280")
 
@@ -376,7 +391,7 @@ append_args (CMAKE_CXX_FLAGS "${CXX_WARN_FLAGS}")
 # other customizations
 #
 if (${GNU_COMPAT_COMPILER})
-    if ((NOT CMAKE_CXX_COMPILER_ID STREQUAL "Intel") OR (${COMPILER_VERSION} VERSION_LESS "15.0"))
+    if ((NOT ${CMAKE_CXX_COMPILER_ID} STREQUAL "Intel") OR (${COMPILER_VERSION} VERSION_LESS "15.0"))
         append_args (CMAKE_CXX_FLAGS "-std=c++0x")
     else ()
         append_args (CMAKE_CXX_FLAGS "-std=c++11")
@@ -407,7 +422,7 @@ endif()
 # if ASan build type is requested, check that the compiler supports it:
 if (CMAKE_BUILD_TYPE STREQUAL "ASan")
     set (IS_ASAN_SUPPORTED false)
-    if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
+    if (${CMAKE_CXX_COMPILER_ID} STREQUAL "GNU")
         if (NOT (${COMPILER_VERSION} VERSION_LESS "4.8"))
             set (IS_ASAN_SUPPORTED true)
         endif ()
@@ -442,7 +457,7 @@ if (${GNU_COMPAT_COMPILER})
     # being identified as a system header
     #
     set(IS_WERROR true)
-    if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
+    if (${CMAKE_CXX_COMPILER_ID} STREQUAL "GNU")
         if (${COMPILER_VERSION} VERSION_LESS "4.2")
             set(IS_WERROR false)
         endif ()
diff --git a/src/cmake/cxxExecutable.cmake b/src/cmake/cxxExecutable.cmake
index 02d4a31..7bf7769 100644
--- a/src/cmake/cxxExecutable.cmake
+++ b/src/cmake/cxxExecutable.cmake
@@ -1,6 +1,6 @@
 #
 # Manta - Structural Variant and Indel Caller
-# Copyright (c) 2013-2016 Illumina, Inc.
+# Copyright (c) 2013-2017 Illumina, Inc.
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/src/cmake/cxxLibrary.cmake b/src/cmake/cxxLibrary.cmake
index 5d90cfb..532fc87 100644
--- a/src/cmake/cxxLibrary.cmake
+++ b/src/cmake/cxxLibrary.cmake
@@ -1,6 +1,6 @@
 #
 # Manta - Structural Variant and Indel Caller
-# Copyright (c) 2013-2016 Illumina, Inc.
+# Copyright (c) 2013-2017 Illumina, Inc.
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/src/cmake/cxxTestLibrary.cmake b/src/cmake/cxxTestLibrary.cmake
index 0f84ff9..0c51d5b 100644
--- a/src/cmake/cxxTestLibrary.cmake
+++ b/src/cmake/cxxTestLibrary.cmake
@@ -1,6 +1,6 @@
 #
 # Manta - Structural Variant and Indel Caller
-# Copyright (c) 2013-2016 Illumina, Inc.
+# Copyright (c) 2013-2017 Illumina, Inc.
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/src/cmake/getBuildTimeConfigInfo.cmake b/src/cmake/getBuildTimeConfigInfo.cmake
index 4af6a45..b14c73f 100644
--- a/src/cmake/getBuildTimeConfigInfo.cmake
+++ b/src/cmake/getBuildTimeConfigInfo.cmake
@@ -1,6 +1,6 @@
 #
 # Manta - Structural Variant and Indel Caller
-# Copyright (c) 2013-2016 Illumina, Inc.
+# Copyright (c) 2013-2017 Illumina, Inc.
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/src/cmake/globals.cmake b/src/cmake/globals.cmake
index e5fab52..d6dba63 100644
--- a/src/cmake/globals.cmake
+++ b/src/cmake/globals.cmake
@@ -1,6 +1,6 @@
 #
 # Manta - Structural Variant and Indel Caller
-# Copyright (c) 2013-2016 Illumina, Inc.
+# Copyright (c) 2013-2017 Illumina, Inc.
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/src/cmake/macros.cmake b/src/cmake/macros.cmake
index d4e80b8..6704e41 100644
--- a/src/cmake/macros.cmake
+++ b/src/cmake/macros.cmake
@@ -1,6 +1,6 @@
 #
 # Manta - Structural Variant and Indel Caller
-# Copyright (c) 2013-2016 Illumina, Inc.
+# Copyright (c) 2013-2017 Illumina, Inc.
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/src/cmake/postInstall/CMakeLists.txt b/src/cmake/postInstall/CMakeLists.txt
index 76c638e..662a1bc 100644
--- a/src/cmake/postInstall/CMakeLists.txt
+++ b/src/cmake/postInstall/CMakeLists.txt
@@ -1,6 +1,6 @@
 #
 # Manta - Structural Variant and Indel Caller
-# Copyright (c) 2013-2016 Illumina, Inc.
+# Copyright (c) 2013-2017 Illumina, Inc.
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/src/cmake/preInstall/CMakeLists.txt b/src/cmake/preInstall/CMakeLists.txt
index c95ea49..d826f7d 100644
--- a/src/cmake/preInstall/CMakeLists.txt
+++ b/src/cmake/preInstall/CMakeLists.txt
@@ -1,6 +1,6 @@
 #
 # Manta - Structural Variant and Indel Caller
-# Copyright (c) 2013-2016 Illumina, Inc.
+# Copyright (c) 2013-2017 Illumina, Inc.
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/src/cmake/preInstall/checkTargetPathsWritable/CMakeLists.txt b/src/cmake/preInstall/checkTargetPathsWritable/CMakeLists.txt
index e42688e..eded98f 100644
--- a/src/cmake/preInstall/checkTargetPathsWritable/CMakeLists.txt
+++ b/src/cmake/preInstall/checkTargetPathsWritable/CMakeLists.txt
@@ -1,6 +1,6 @@
 #
 # Manta - Structural Variant and Indel Caller
-# Copyright (c) 2013-2016 Illumina, Inc.
+# Copyright (c) 2013-2017 Illumina, Inc.
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/src/cmake/preInstall/checkTargetPathsWritable/checkTargetPathWritable.cmake b/src/cmake/preInstall/checkTargetPathsWritable/checkTargetPathWritable.cmake
index 9fee275..df53e9e 100644
--- a/src/cmake/preInstall/checkTargetPathsWritable/checkTargetPathWritable.cmake
+++ b/src/cmake/preInstall/checkTargetPathsWritable/checkTargetPathWritable.cmake
@@ -1,6 +1,6 @@
 #
 # Manta - Structural Variant and Indel Caller
-# Copyright (c) 2013-2016 Illumina, Inc.
+# Copyright (c) 2013-2017 Illumina, Inc.
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/src/cmake/preInstall/copyrightAndChanges/CMakeLists.txt b/src/cmake/preInstall/copyrightAndChanges/CMakeLists.txt
index 611abe4..9e7f0cc 100644
--- a/src/cmake/preInstall/copyrightAndChanges/CMakeLists.txt
+++ b/src/cmake/preInstall/copyrightAndChanges/CMakeLists.txt
@@ -1,6 +1,6 @@
 #
 # Manta - Structural Variant and Indel Caller
-# Copyright (c) 2013-2016 Illumina, Inc.
+# Copyright (c) 2013-2017 Illumina, Inc.
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/src/demo/CMakeLists.txt b/src/demo/CMakeLists.txt
index ea73cff..a2199d5 100644
--- a/src/demo/CMakeLists.txt
+++ b/src/demo/CMakeLists.txt
@@ -1,6 +1,6 @@
 #
 # Manta - Structural Variant and Indel Caller
-# Copyright (c) 2013-2016 Illumina, Inc.
+# Copyright (c) 2013-2017 Illumina, Inc.
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/src/demo/data/CMakeLists.txt b/src/demo/data/CMakeLists.txt
index cbce860..666aeff 100644
--- a/src/demo/data/CMakeLists.txt
+++ b/src/demo/data/CMakeLists.txt
@@ -1,6 +1,6 @@
 #
 # Manta - Structural Variant and Indel Caller
-# Copyright (c) 2013-2016 Illumina, Inc.
+# Copyright (c) 2013-2017 Illumina, Inc.
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/src/demo/runMantaWorkflowDemo.py b/src/demo/runMantaWorkflowDemo.py
index 3951081..417a15f 100644
--- a/src/demo/runMantaWorkflowDemo.py
+++ b/src/demo/runMantaWorkflowDemo.py
@@ -1,7 +1,7 @@
 #!/usr/bin/env python
 #
 # Manta - Structural Variant and Indel Caller
-# Copyright (c) 2013-2016 Illumina, Inc.
+# Copyright (c) 2013-2017 Illumina, Inc.
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/src/python/CMakeLists.txt b/src/python/CMakeLists.txt
index 0bcac8f..b47bdbe 100644
--- a/src/python/CMakeLists.txt
+++ b/src/python/CMakeLists.txt
@@ -1,6 +1,6 @@
 #
 # Manta - Structural Variant and Indel Caller
-# Copyright (c) 2013-2016 Illumina, Inc.
+# Copyright (c) 2013-2017 Illumina, Inc.
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/src/python/bin/CMakeLists.txt b/src/python/bin/CMakeLists.txt
index afca5a0..79a8cfd 100644
--- a/src/python/bin/CMakeLists.txt
+++ b/src/python/bin/CMakeLists.txt
@@ -1,6 +1,6 @@
 #
 # Manta - Structural Variant and Indel Caller
-# Copyright (c) 2013-2016 Illumina, Inc.
+# Copyright (c) 2013-2017 Illumina, Inc.
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/src/python/bin/configManta.py b/src/python/bin/configManta.py
index a690c13..270511f 100644
--- a/src/python/bin/configManta.py
+++ b/src/python/bin/configManta.py
@@ -1,7 +1,7 @@
 #!/usr/bin/env python
 #
 # Manta - Structural Variant and Indel Caller
-# Copyright (c) 2013-2016 Illumina, Inc.
+# Copyright (c) 2013-2017 Illumina, Inc.
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -130,6 +130,11 @@ You must specify a BAM or CRAM file for at least one sample.
         if ((safeLen(options.tumorBamList) > 0) and (safeLen(options.normalBamList) > 1)) :
             raise OptParseException("Can't accept multiple normal samples for tumor subtraction")
 
+        if options.isRNA :
+            if ((safeLen(options.normalBamList) != 1) or
+                (safeLen(options.tumorBamList) != 0)) :
+                raise OptParseException("RNA mode currently requires exactly one normal sample")
+
         bcheck = BamSetChecker()
         bcheck.appendBams(options.normalBamList,"Normal")
         bcheck.appendBams(options.tumorBamList,"Tumor")
diff --git a/src/python/lib/CMakeLists.txt b/src/python/lib/CMakeLists.txt
index c7e4461..4bffa2c 100644
--- a/src/python/lib/CMakeLists.txt
+++ b/src/python/lib/CMakeLists.txt
@@ -1,6 +1,6 @@
 #
 # Manta - Structural Variant and Indel Caller
-# Copyright (c) 2013-2016 Illumina, Inc.
+# Copyright (c) 2013-2017 Illumina, Inc.
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/src/python/lib/checkChromSet.py b/src/python/lib/checkChromSet.py
index 1860815..dcfd13c 100644
--- a/src/python/lib/checkChromSet.py
+++ b/src/python/lib/checkChromSet.py
@@ -1,6 +1,6 @@
 #
 # Manta - Structural Variant and Indel Caller
-# Copyright (c) 2013-2016 Illumina, Inc.
+# Copyright (c) 2013-2017 Illumina, Inc.
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -108,7 +108,7 @@ def checkChromSet(htsfileBin,referenceFasta,bamList,bamLabel=None,isReferenceLoc
     @param referenceFasta - samtools indexed fasta file
     @param bamList - a container of indexed bam/cram(s) to check for consistency
     @param bamLabel - a container of labels for each bam/cram file (default is to label files by index number)
-    @param isReferenceLocked - if true, then the input BAMs must contain all of the chromosomes in the reference fasta
+    @param isReferenceLocked - if true, then the input BAM/CRAMs must contain all of the chromosomes in the reference fasta
 
     This function closely follows the strelka input configuration step validator
     """
diff --git a/src/python/lib/configBuildTimeInfo.py b/src/python/lib/configBuildTimeInfo.py
index b206620..8e1540c 100644
--- a/src/python/lib/configBuildTimeInfo.py
+++ b/src/python/lib/configBuildTimeInfo.py
@@ -1,6 +1,6 @@
 #
 # Manta - Structural Variant and Indel Caller
-# Copyright (c) 2013-2016 Illumina, Inc.
+# Copyright (c) 2013-2017 Illumina, Inc.
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/src/python/lib/configureOptions.py b/src/python/lib/configureOptions.py
index 47a748c..78e349a 100644
--- a/src/python/lib/configureOptions.py
+++ b/src/python/lib/configureOptions.py
@@ -1,6 +1,6 @@
 #
 # Manta - Structural Variant and Indel Caller
-# Copyright (c) 2013-2016 Illumina, Inc.
+# Copyright (c) 2013-2017 Illumina, Inc.
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -119,10 +119,11 @@ class ConfigureWorkflowOptions(object) :
 
         # next is the 'global' ini file, in the same directory as the configure
         # script:
-        cmdlineScriptName=os.path.basename(sys.argv[0])
+        realArg0=os.path.realpath(sys.argv[0])
+        cmdlineScriptName=os.path.basename(realArg0)
         configFileName=cmdlineScriptName+".ini"
 
-        cmdlineScriptDir=os.path.abspath(os.path.dirname(sys.argv[0]))
+        cmdlineScriptDir=os.path.abspath(os.path.dirname(realArg0))
         globalConfigPath=os.path.join(cmdlineScriptDir,configFileName)
         updateIniSections(iniSections,getIniSections(globalConfigPath))
 
@@ -148,11 +149,13 @@ class ConfigureWorkflowOptions(object) :
             parser.print_help()
             sys.exit(2)
 
-        if len(args) : # or (len(sys.argv) == 1):
-            parser.print_help()
-            sys.exit(2)
-
         try :
+            nargs=len(args)
+            if nargs :
+                plural=""
+                if nargs>1 : plural="s"
+                raise OptParseException("%i unrecognized argument%s:\n%s" % (nargs, plural, "\n".join(["'"+arg+"'" for arg in args])))
+
             # sanitize arguments before writing defaults, check for missing arguments after:
             #
             self.validateAndSanitizeExistingOptions(options)
diff --git a/src/python/lib/configureUtil.py b/src/python/lib/configureUtil.py
index 6259a63..86db261 100644
--- a/src/python/lib/configureUtil.py
+++ b/src/python/lib/configureUtil.py
@@ -1,6 +1,6 @@
 #
 # Manta - Structural Variant and Indel Caller
-# Copyright (c) 2013-2016 Illumina, Inc.
+# Copyright (c) 2013-2017 Illumina, Inc.
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -198,10 +198,11 @@ def validateFixExistingFileArg(argFile,label) :
 
 def checkTabixIndexedFile(iname,label) :
     assert(iname is not None)
-    tabixFile = iname + ".tbi"
-    if os.path.isfile(tabixFile) : return
-    raise OptParseException("Can't find expected %s index file: '%s'" % (label,tabixFile))
-
+    if not os.path.isfile(iname) :
+        raise OptParseException("Can't find expected %s file: '%s'" % (label,iname))
+    tabixIndexFile = iname + ".tbi"
+    if not os.path.isfile(tabixIndexFile) :
+        raise OptParseException("Can't find expected %s index file: '%s'" % (label,tabixIndexFile))
 
 def checkOptionalTabixIndexedFile(iname,label) :
     """
@@ -210,14 +211,13 @@ def checkOptionalTabixIndexedFile(iname,label) :
     if iname is None : return
     checkTabixIndexedFile(iname,label)
 
-
-def checkTabixListOption(opt,label) :
+def checkTabixListOption(tabixList,label) :
     """
     check a list of files which are expected to be tabix indexed
     """
-    if opt is None : return
-    for val in opt :
-        checkTabixIndexedFile(val,label)
+    if tabixList is None : return
+    for tabixFile in tabixList :
+        checkTabixIndexedFile(tabixFile,label)
 
 
 def checkForBamIndex(bamFile):
diff --git a/src/python/lib/estimateHardware.py b/src/python/lib/estimateHardware.py
index a9a96fe..afeefd7 100644
--- a/src/python/lib/estimateHardware.py
+++ b/src/python/lib/estimateHardware.py
@@ -1,6 +1,6 @@
 #
 # Manta - Structural Variant and Indel Caller
-# Copyright (c) 2013-2016 Illumina, Inc.
+# Copyright (c) 2013-2017 Illumina, Inc.
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/src/python/lib/makeRunScript.py b/src/python/lib/makeRunScript.py
index 1a9654b..e4ac128 100644
--- a/src/python/lib/makeRunScript.py
+++ b/src/python/lib/makeRunScript.py
@@ -1,6 +1,6 @@
 #
 # Manta - Structural Variant and Indel Caller
-# Copyright (c) 2013-2016 Illumina, Inc.
+# Copyright (c) 2013-2017 Illumina, Inc.
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/src/python/lib/mantaOptions.py b/src/python/lib/mantaOptions.py
index 41281dc..d00c19e 100644
--- a/src/python/lib/mantaOptions.py
+++ b/src/python/lib/mantaOptions.py
@@ -1,6 +1,6 @@
 #
 # Manta - Structural Variant and Indel Caller
-# Copyright (c) 2013-2016 Illumina, Inc.
+# Copyright (c) 2013-2017 Illumina, Inc.
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/src/python/lib/mantaWorkflow.py b/src/python/lib/mantaWorkflow.py
index 42919a1..f61ce24 100644
--- a/src/python/lib/mantaWorkflow.py
+++ b/src/python/lib/mantaWorkflow.py
@@ -1,6 +1,6 @@
 #
 # Manta - Structural Variant and Indel Caller
-# Copyright (c) 2013-2016 Illumina, Inc.
+# Copyright (c) 2013-2017 Illumina, Inc.
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -23,7 +23,6 @@ Manta SV discovery workflow
 
 
 import os.path
-import shutil
 import sys
 
 # add script path to pull in utils in same directory:
@@ -35,12 +34,11 @@ pyflowDir=os.path.join(scriptDir,"pyflow")
 sys.path.append(os.path.abspath(pyflowDir))
 
 from configBuildTimeInfo import workflowVersion
-from configureUtil import getIniSections,dumpIniSections
 from pyflow import WorkflowRunner
 from sharedWorkflow import getMkdirCmd, getMvCmd, getRmCmd, getRmdirCmd, \
-                           quoteStringList, runDepthFromAlignments
-from workflowUtil import checkFile, ensureDir, isWindows, preJoin, which, \
-                         getNextGenomeSegment, getFastaChromOrderSize, cleanPyEnv
+                           runDepthFromAlignments
+from workflowUtil import checkFile, ensureDir, preJoin, \
+                          getGenomeSegmentGroups, getFastaChromOrderSize, cleanPyEnv
 
 
 __version__ = workflowVersion
@@ -127,24 +125,6 @@ def runLocusGraph(self,taskPrefix="",dependencies=None):
     tmpGraphFiles = []
     graphTasks = set()
 
-    def getGenomeSegmentGroups(params) :
-        """
-        Iterate segment groups and 'clump' small contigs together
-        """
-
-        minSegmentGroupSize=200000
-        group = []
-        headSize = 0
-        for gseg in getNextGenomeSegment(self.params) :
-            if headSize+gseg.size() <= minSegmentGroupSize :
-                group.append(gseg)
-                headSize += gseg.size()
-            else :
-                if len(group) != 0 : yield(group)
-                group = [gseg]
-                headSize = gseg.size()
-        if len(group) != 0 : yield(group)
-
     for gsegGroup in getGenomeSegmentGroups(self.params) :
         assert(len(gsegGroup) != 0)
         gid=gsegGroup[0].id
diff --git a/src/python/lib/sharedWorkflow.py b/src/python/lib/sharedWorkflow.py
index 28a1ff4..caccabf 100644
--- a/src/python/lib/sharedWorkflow.py
+++ b/src/python/lib/sharedWorkflow.py
@@ -1,6 +1,6 @@
 #
 # Manta - Structural Variant and Indel Caller
-# Copyright (c) 2013-2016 Illumina, Inc.
+# Copyright (c) 2013-2017 Illumina, Inc.
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -188,4 +188,3 @@ def runDepthFromAlignments(self, bamList, outputPath, taskPrefix="",dependencies
         return nextStepWait
 
     return _runDepthShared(self, taskPrefix, dependencies, bamList, outputPath, depthFunc)
-
diff --git a/src/python/lib/workflowUtil.py b/src/python/lib/workflowUtil.py
index 9063027..a4b0ae3 100644
--- a/src/python/lib/workflowUtil.py
+++ b/src/python/lib/workflowUtil.py
@@ -1,6 +1,6 @@
 #
 # Manta - Structural Variant and Indel Caller
-# Copyright (c) 2013-2016 Illumina, Inc.
+# Copyright (c) 2013-2017 Illumina, Inc.
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -332,6 +332,33 @@ def getNextGenomeSegment(params) :
 
 
 
+def getGenomeSegmentGroups(params, excludedContigs = None) :
+    """
+    Iterate segment groups and 'clump' small contigs together
+    """
+
+    def isGroupEligible(gseg) :
+        if excludedContigs is None : return True
+        return (gseg.chromLabel not in excludedContigs)
+
+    minSegmentGroupSize=200000
+    group = []
+    headSize = 0
+    isLastSegmentGroupEligible = True
+    for gseg in getNextGenomeSegment(params) :
+        isSegmentGroupEligible = isGroupEligible(gseg)
+        if (isSegmentGroupEligible and isLastSegmentGroupEligible) and (headSize+gseg.size() <= minSegmentGroupSize) :
+            group.append(gseg)
+            headSize += gseg.size()
+        else :
+            if len(group) != 0 : yield(group)
+            group = [gseg]
+            headSize = gseg.size()
+        isLastSegmentGroupEligible = isSegmentGroupEligible
+    if len(group) != 0 : yield(group)
+
+
+
 def cleanPyEnv() :
     """
     clear out some potentially destabilizing env variables:
@@ -376,3 +403,16 @@ def exeFile(filename):
     """
     if isWindows() : return filename + ".exe"
     return filename
+
+
+def bamListCatCmd(samtoolsBin, bamList, output) :
+    assert(len(bamList) > 0)
+
+    if len(bamList) > 1:
+        headerTmp = bamList[0] + "header"
+        cmd  = "\"%s\" view -H \"%s\" >| \"%s\"" % (samtoolsBin, bamList[0], headerTmp)
+        cmd += " && \"%s\" merge -h \"%s\" \"%s\" " % (samtoolsBin, headerTmp, output)
+        cmd += " ".join(bamList)
+    else:
+        cmd = "mv -f \"%s\" \"%s\"" % (bamList[0], output)
+    return cmd + " && \"%s\" index \"%s\"" % (samtoolsBin, output)
diff --git a/src/python/libexec/CMakeLists.txt b/src/python/libexec/CMakeLists.txt
index 316e79e..123e910 100644
--- a/src/python/libexec/CMakeLists.txt
+++ b/src/python/libexec/CMakeLists.txt
@@ -1,6 +1,6 @@
 #
 # Manta - Structural Variant and Indel Caller
-# Copyright (c) 2013-2016 Illumina, Inc.
+# Copyright (c) 2013-2017 Illumina, Inc.
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/src/python/libexec/cat.py b/src/python/libexec/cat.py
index 94278ec..772a899 100755
--- a/src/python/libexec/cat.py
+++ b/src/python/libexec/cat.py
@@ -1,7 +1,7 @@
 #!/usr/bin/env python
 #
 # Manta - Structural Variant and Indel Caller
-# Copyright (c) 2013-2016 Illumina, Inc.
+# Copyright (c) 2013-2017 Illumina, Inc.
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/src/python/libexec/denovo_scoring.py b/src/python/libexec/denovo_scoring.py
index df386ea..c10ee83 100755
--- a/src/python/libexec/denovo_scoring.py
+++ b/src/python/libexec/denovo_scoring.py
@@ -1,7 +1,7 @@
 #!/usr/bin/env python
 #
 # Manta - Structural Variant and Indel Caller
-# Copyright (c) 2013-2016 Illumina, Inc.
+# Copyright (c) 2013-2017 Illumina, Inc.
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/src/python/libexec/extractSmallIndelCandidates.py b/src/python/libexec/extractSmallIndelCandidates.py
index ceb12c2..2d3e49c 100755
--- a/src/python/libexec/extractSmallIndelCandidates.py
+++ b/src/python/libexec/extractSmallIndelCandidates.py
@@ -1,7 +1,7 @@
 #!/usr/bin/env python
 #
 # Manta - Structural Variant and Indel Caller
-# Copyright (c) 2013-2016 Illumina, Inc.
+# Copyright (c) 2013-2017 Illumina, Inc.
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/src/python/libexec/filterBam.py b/src/python/libexec/filterBam.py
index f9294d5..de8412e 100755
--- a/src/python/libexec/filterBam.py
+++ b/src/python/libexec/filterBam.py
@@ -1,7 +1,7 @@
 #! /usr/bin/env python
 #
 # Manta - Structural Variant and Indel Caller
-# Copyright (c) 2013-2016 Illumina, Inc.
+# Copyright (c) 2013-2017 Illumina, Inc.
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/src/python/libexec/mergeBam.py b/src/python/libexec/mergeBam.py
index a98e47a..f408e9d 100755
--- a/src/python/libexec/mergeBam.py
+++ b/src/python/libexec/mergeBam.py
@@ -1,7 +1,7 @@
 #! /usr/bin/env python
 #
 # Manta - Structural Variant and Indel Caller
-# Copyright (c) 2013-2016 Illumina, Inc.
+# Copyright (c) 2013-2017 Illumina, Inc.
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/src/python/libexec/mergeChromDepth.py b/src/python/libexec/mergeChromDepth.py
index 41788e8..b4fc4c9 100755
--- a/src/python/libexec/mergeChromDepth.py
+++ b/src/python/libexec/mergeChromDepth.py
@@ -1,7 +1,7 @@
 #!/usr/bin/env python
 #
 # Manta - Structural Variant and Indel Caller
-# Copyright (c) 2013-2016 Illumina, Inc.
+# Copyright (c) 2013-2017 Illumina, Inc.
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -19,7 +19,7 @@
 #
 
 """
-Merge chrom depth from multiple samples/BAM files
+Merge chrom depth from multiple samples/mapping files
 """
 
 import os,sys
diff --git a/src/python/libexec/ploidyFilter.py b/src/python/libexec/ploidyFilter.py
index 9a59fe9..471afe7 100755
--- a/src/python/libexec/ploidyFilter.py
+++ b/src/python/libexec/ploidyFilter.py
@@ -1,7 +1,7 @@
 #! /usr/bin/env python
 #
 # Manta - Structural Variant and Indel Caller
-# Copyright (c) 2013-2016 Illumina, Inc.
+# Copyright (c) 2013-2017 Illumina, Inc.
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/src/python/libexec/sortBam.py b/src/python/libexec/sortBam.py
index 0b5956a..49e89f8 100755
--- a/src/python/libexec/sortBam.py
+++ b/src/python/libexec/sortBam.py
@@ -1,7 +1,7 @@
 #! /usr/bin/env python
 #
 # Manta - Structural Variant and Indel Caller
-# Copyright (c) 2013-2016 Illumina, Inc.
+# Copyright (c) 2013-2017 Illumina, Inc.
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/src/python/libexec/sortEdgeLogs.py b/src/python/libexec/sortEdgeLogs.py
index ed7be93..0e0e592 100755
--- a/src/python/libexec/sortEdgeLogs.py
+++ b/src/python/libexec/sortEdgeLogs.py
@@ -1,7 +1,7 @@
 #!/usr/bin/env python
 #
 # Manta - Structural Variant and Indel Caller
-# Copyright (c) 2013-2016 Illumina, Inc.
+# Copyright (c) 2013-2017 Illumina, Inc.
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/src/python/libexec/sortVcf.py b/src/python/libexec/sortVcf.py
index e9a9799..36ba6b5 100755
--- a/src/python/libexec/sortVcf.py
+++ b/src/python/libexec/sortVcf.py
@@ -1,7 +1,7 @@
 #!/usr/bin/env python
 #
 # Manta - Structural Variant and Indel Caller
-# Copyright (c) 2013-2016 Illumina, Inc.
+# Copyright (c) 2013-2017 Illumina, Inc.
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -27,12 +27,12 @@ import re
 
 
 def isInfoKey(string,key) :
-    match=re.search("[;\t]%s[;\t]" % (key) ,string)
+    match=re.search("(^|;)%s(;|$)" % (key) ,string)
     return match is not None
 
 
 def getKeyVal(string,key) :
-    match=re.search("%s=([^;\t]*);?" % (key) ,string)
+    match=re.search("%s=([^;]*);?" % (key) ,string)
     if match is None : return None
     return match.group(1);
 
@@ -58,12 +58,14 @@ class VcfRecord :
             self.alt=w[VCF_ALT]
             self.qual=w[VCF_QUAL]
             self.isPass=(w[VCF_FILTER] == "PASS")
+
             self.invState=None
             inv3 = isInfoKey(w[VCF_INFO],"INV3")
-            inv5 = getKeyVal(w[VCF_INFO],"INV5")
+            inv5 = isInfoKey(w[VCF_INFO],"INV5")
             assert(not (inv3 and inv5))
             if inv3: self.invState = "INV3"
             if inv5: self.invState = "INV5"
+
         self.endPos=self.pos+len(w[VCF_REF])-1
         val = getKeyVal(w[VCF_INFO],"END")
         if val is not None :
diff --git a/src/python/libexec/vcfCmdlineSwapper.py b/src/python/libexec/vcfCmdlineSwapper.py
index aa9ef5b..cc5dbe2 100644
--- a/src/python/libexec/vcfCmdlineSwapper.py
+++ b/src/python/libexec/vcfCmdlineSwapper.py
@@ -1,7 +1,7 @@
 #!/usr/bin/env python
 #
 # Manta - Structural Variant and Indel Caller
-# Copyright (c) 2013-2016 Illumina, Inc.
+# Copyright (c) 2013-2017 Illumina, Inc.
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/src/srcqc/check_for_nonascii_source.bash b/src/srcqc/check_for_nonascii_source.bash
index 31be0c1..2ce56c6 100755
--- a/src/srcqc/check_for_nonascii_source.bash
+++ b/src/srcqc/check_for_nonascii_source.bash
@@ -1,7 +1,7 @@
 #!/usr/bin/env bash
 #
 # Manta - Structural Variant and Indel Caller
-# Copyright (c) 2013-2016 Illumina, Inc.
+# Copyright (c) 2013-2017 Illumina, Inc.
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/src/srcqc/run_cppcheck.py b/src/srcqc/run_cppcheck.py
index 09730af..b1bced9 100755
--- a/src/srcqc/run_cppcheck.py
+++ b/src/srcqc/run_cppcheck.py
@@ -1,7 +1,7 @@
 #!/usr/bin/env python
 #
 # Manta - Structural Variant and Indel Caller
-# Copyright (c) 2013-2016 Illumina, Inc.
+# Copyright (c) 2013-2017 Illumina, Inc.
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by

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



More information about the debian-med-commit mailing list