From 0d3cc3e81f9ff08dc6a33f8065fe89ccfc0779e9 Mon Sep 17 00:00:00 2001 From: Chris Maffeo <cmaffeo2@illinois.edu> Date: Wed, 13 Jun 2018 16:14:19 -0500 Subject: [PATCH] Too many beads were being placed in a given contour length --- segmentmodel.py | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/segmentmodel.py b/segmentmodel.py index c6b97bb..3801791 100644 --- a/segmentmodel.py +++ b/segmentmodel.py @@ -859,11 +859,11 @@ class Segment(ConnectableElement, Group): if len(existing_beads) == 0 or existing_beads[0].get_nt_position(self) > 0.5: # if len(existing_beads) > 0: # assert(existing_beads[0].get_nt_position(self) >= 0.5) - b = self._generate_one_bead(0, 0) + b = self._generate_one_bead( self.nt_pos_to_contour(0), 0) existing_beads = [b] + existing_beads if existing_beads[-1].get_nt_position(self)-(self.num_nts-1) < -0.5: - b = self._generate_one_bead(1, 0) + b = self._generate_one_bead( self.nt_pos_to_contour(self.num_nts-1), 0) existing_beads.append(b) assert(len(existing_beads) > 1) @@ -1028,7 +1028,8 @@ class DoubleStrandedSegment(Segment): else: end2.container._connect( end1.container, Connection( end2, end1, type_=type_ ), in_3prime_direction=True ) def _get_num_beads(self, contour, max_basepairs_per_bead, max_nucleotides_per_bead): - return int(contour*self.num_nts // max_basepairs_per_bead) + # return int(contour*self.num_nts // max_basepairs_per_bead) + return int(contour*(self.num_nts**2/(self.num_nts+1)) // max_basepairs_per_bead) def _generate_one_bead(self, contour_position, nts): pos = self.contour_to_position(contour_position) @@ -1146,7 +1147,8 @@ class SingleStrandedSegment(Segment): other._connect(self, Connection( other_loc, loc, type_="sscrossover" ), in_3prime_direction=True ) def _get_num_beads(self, contour, max_basepairs_per_bead, max_nucleotides_per_bead): - return int(contour*self.num_nts // max_nucleotides_per_bead) + return int(contour*(self.num_nts**2/(self.num_nts+1)) // max_basepairs_per_bead) + # return int(contour*self.num_nts // max_nucleotides_per_bead) def _generate_one_bead(self, contour_position, nts): pos = self.contour_to_position(contour_position) -- GitLab