From 38683ec7959de165d95459b42bb0e95fda4ed376 Mon Sep 17 00:00:00 2001
From: Chris Maffeo <cmaffeo2@illinois.edu>
Date: Fri, 21 Dec 2018 11:04:50 -0600
Subject: [PATCH] Fixed corner case bug where crossovers at end of ssDNA were
 not neccesarily recognized as intrahelical connections

---
 mrdna/readers/segmentmodel_from_lists.py | 2 +-
 mrdna/segmentmodel.py                    | 4 +++-
 2 files changed, 4 insertions(+), 2 deletions(-)

diff --git a/mrdna/readers/segmentmodel_from_lists.py b/mrdna/readers/segmentmodel_from_lists.py
index e8f7cc2..4b993d4 100644
--- a/mrdna/readers/segmentmodel_from_lists.py
+++ b/mrdna/readers/segmentmodel_from_lists.py
@@ -221,7 +221,7 @@ def model_from_basepair_stack_3prime(coordinates, basepair, stack, three_prime,
         nt1,nt2 = [hrank[i] for i in (r1,r2)]
         f1,f2 = [fwd[i] for i in (r1,r2)]
 
-        if nt1 in (0,seg1.num_nt) or nt2 in (0,seg2.num_nt):
+        if nt1 in (0,seg1.num_nt-1) or nt2 in (0,seg2.num_nt-1):
             seg1.add_crossover(nt1,seg2,nt2,[f1,f2],type_="terminal_crossover")
         else:
             seg1.add_crossover(nt1,seg2,nt2,[f1,f2])
diff --git a/mrdna/segmentmodel.py b/mrdna/segmentmodel.py
index a6d5632..1b9fb84 100644
--- a/mrdna/segmentmodel.py
+++ b/mrdna/segmentmodel.py
@@ -1177,7 +1177,9 @@ class SingleStrandedSegment(Segment):
         """ Add a crossover between two helices """
         ## TODO Validate other, nt, other_nt
 
-        if nt in (0,1,self.num_nt) and other_nt in (0,1,other.num_nt):
+        assert(nt < self.num_nt)
+        assert(other_nt < other.num_nt)
+        if nt in (0,1,self.num_nt-1) and other_nt in (0,1,other.num_nt-1):
             if nt_on_5prime == True:
                 other_end = other.start5 if strands_fwd[1] else other.end5
                 self.connect_end3( other_end )
-- 
GitLab