[med-svn] [Git][med-team/snap-aligner][upstream] New upstream version 2.0.5+dfsg

Michael R. Crusoe (@crusoe) gitlab at salsa.debian.org
Fri Sep 5 13:48:02 BST 2025



Michael R. Crusoe pushed to branch upstream at Debian Med / snap-aligner


Commits:
7a8ef679 by Michael R. Crusoe at 2025-09-05T13:51:44+02:00
New upstream version 2.0.5+dfsg
- - - - -


7 changed files:

- README.md
- SNAPLib/AlignerOptions.cpp
- SNAPLib/BaseAligner.cpp
- SNAPLib/CommandProcessor.cpp
- SNAPLib/IntersectingPairedEndAligner.cpp
- docs/SNAP User Manual.docx
- docs/SNAP User Manual.pdf


Changes:

=====================================
README.md
=====================================
@@ -13,15 +13,7 @@ need for several pipeline stages used by other aligners.
 
 ## Binaries
 
-The SNAP executable
-- [v2.0.2 For Linux](https://1drv.ms/u/s!AhuEg_0yZD86hcpYCkpLlDktZnVaow?e=QRDhs4)
-- [v2.0.2 for Windows 10](https://1drv.ms/u/s!AhuEg_0yZD86hcpZQUgOEMrmA5qaLA?e=eUNeHZ)
-- [v2.0.0 for OSX](https://1drv.ms/u/s!AhuEg_0yZD86hcphrIjwoeTjdSvgoA?e=coSU85)
-
-The SNAPCommand tool
-- [SNAPCommand for Linux](https://1drv.ms/u/s!AhuEg_0yZD86hcpdvv0ZBdB1BqF57g?e=IHVbq2>)
-- [SNAPCommand for Windows 10](https://1drv.ms/u/s!AhuEg_0yZD86hcpaSLKPRGJ6dcvVgA?e=vXH8y6)
-- [SNAPCommand for OSX](https://1drv.ms/u/s!AhuEg_0yZD86hcpgy-ONBaw0DjFpTQ?e=cMc6eE)
+Current binaries are available on this GitHub page under "releases"
 
 
 ## Documentation
@@ -39,6 +31,6 @@ When you build it, you will have to set it to build for x64, not "Any CPU" or 32
 
 For Linux, simply type `make`. Requirements:
 - g++ version 4.8.5 or later
-- zlib 1.2.11 or later from http://zlib.net/
+- zlib 1.2.11 or later from http://zlib.net/.  On Ubuntu, do sudo apt install libz1g-dev
 
 


=====================================
SNAPLib/AlignerOptions.cpp
=====================================
@@ -154,7 +154,7 @@ AlignerOptions::usage()
             "  -x   explore some hits of overly popular seeds (useful for filtering)\n"
             "  -S   suppress additional processing (sorted BAM output only)\n"
             "       i=index, d=duplicate marking\n"
-            "  -f   stop on first match within edit distance limit (filtering mode)\n"
+            "  -f   stop on first match within edit distance limit (filtering mode, single-end only)\n"
             "  -F   filter output (a=aligned only, s=single hit only (MAPQ >= %d), u=unaligned only, l=long enough to align (see -mrl))\n"
             "  -E   an alternate (and fully general) way to specify filter options.  Emit only these types s = single hit (MAPQ >= %d), m = multiple hit (MAPQ < %d),\n"
             "       x = not long enough to align, u = unaligned, b = filter must apply to both ends of a paired-end read.  Combine the letters after\n"


=====================================
SNAPLib/BaseAligner.cpp
=====================================
@@ -1292,6 +1292,21 @@ Return Value:
 
                     bool foundAlignment = useHamming ? (score1Gapless != ScoreAboveLimit && score2Gapless != ScoreAboveLimit) : (score1 != ScoreAboveLimit && score2 != ScoreAboveLimit);
 
+                    if (foundAlignment && genomeLocationOffset != 0 && 
+                        NULL == genome->getSubstring(genomeLocation + genomeLocationOffset, genomeDataLength)) {
+                        //
+                        // We had an indel that pushed the alignment to cross a contig boundary.  Just dump it
+                        // (though maybe hard clipping is more approproiate).
+                        //
+                        foundAlignment = false;
+#ifdef  _DEBUG
+                        if (_DumpAlignments) {
+                            printf("\t\t Rejected candidate alignment at %s because an indel caused it to cross a contig boundary\n",
+                                genome->genomeLocationInStringForm(genomeLocation.location, genomeLocationBuffer, genomeLocationBufferSize));
+                        }
+#endif  // _DEBUG
+                    }
+
                     if (foundAlignment) {
                         score = score1 + score2;
                         scoreGapless = score1Gapless + score2Gapless;
@@ -1303,7 +1318,6 @@ Return Value:
                         //
                         genomeLocation += genomeLocationOffset;
 
-
                         agScore = agScore1 + agScore2;
 
                         //
@@ -1478,8 +1492,15 @@ Return Value:
                     // care about the best alignment. Stop now but mark the result as MultipleHits because we're not
                     // confident that it's the best one.  We don't support mapq in this secnario, because we haven't
                     // explored enough to compute it.
+
+
+                    (altAwareness ? scoresForNonAltAlignments : scoresForAllAlignments).fillInSingleAlignmentResult(primaryResult, popularSeedsSkipped);
+                    //
+                    // Force MAPQ 0 in this case, since we didn't explore the whole space and can't say.
+                    //
                     primaryResult->status = MultipleHits;
                     primaryResult->mapq = 0;
+                    firstALTResult->status = NotFound;
                     return true;
                 }
 


=====================================
SNAPLib/CommandProcessor.cpp
=====================================
@@ -36,7 +36,7 @@ Revision History:
 #include "Compat.h"
 #include "HitDepth.h"
 
-const char *SNAP_VERSION = "2.0.3";
+const char *SNAP_VERSION = "2.0.5";
 
 static void usage()
 {


=====================================
SNAPLib/IntersectingPairedEndAligner.cpp
=====================================
@@ -3359,6 +3359,19 @@ IntersectingPairedEndAligner::scoreLocation(
         agScore2 = (seedOffset - score2) * matchReward - score2 * subPenalty;
     }
 
+    if (0 != *genomeLocationOffset && NULL == genome->getSubstring(genomeLocation + *genomeLocationOffset, genomeDataLength)) {
+        // 
+        // We adjusted the alignment offset due to an indel in such a way that it now crosses a contig boundary.
+        // Dump the alignment.
+        //
+#ifdef _DEBUG
+        if (_DumpAlignments) {
+            printf("Rejecting alignment candidate because an indel caused a contig boundary cross\n");
+        }
+#endif  // _DEBUG
+        score2 = ScoreAboveLimit;
+    }
+
     if (score1 != ScoreAboveLimit && score2 != ScoreAboveLimit) {
         *score = score1 + score2;
         _ASSERT(*score <= scoreLimit);


=====================================
docs/SNAP User Manual.docx
=====================================
Binary files a/docs/SNAP User Manual.docx and b/docs/SNAP User Manual.docx differ


=====================================
docs/SNAP User Manual.pdf
=====================================
Binary files a/docs/SNAP User Manual.pdf and b/docs/SNAP User Manual.pdf differ



View it on GitLab: https://salsa.debian.org/med-team/snap-aligner/-/commit/7a8ef679ea93153b54b5577b3d5e7d6d8bee80c3

-- 
View it on GitLab: https://salsa.debian.org/med-team/snap-aligner/-/commit/7a8ef679ea93153b54b5577b3d5e7d6d8bee80c3
You're receiving this email because of your account on salsa.debian.org.


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://alioth-lists.debian.net/pipermail/debian-med-commit/attachments/20250905/19c54c76/attachment-0001.htm>


More information about the debian-med-commit mailing list