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