From 5d97a73602fcb1cb10fbb8c52d31eceece571985 Mon Sep 17 00:00:00 2001
From: Chris Maffeo <cmaffeo2@illinois.edu>
Date: Tue, 10 Jul 2018 10:58:50 -0500
Subject: [PATCH] Added code to allow segment model to be extended or updated

---
 segmentmodel.py | 20 +++++++++++++++++++-
 1 file changed, 19 insertions(+), 1 deletion(-)

diff --git a/segmentmodel.py b/segmentmodel.py
index 9839fed..f59f7d9 100644
--- a/segmentmodel.py
+++ b/segmentmodel.py
@@ -1280,14 +1280,32 @@ class SegmentModel(ArbdModel):
         k = opt.leastsq( fitFun, x0=np.exp(-sep/Lp) )
         return k[0][0] * 2*kT*0.00030461742
 
+    def extend(self, other, copy=True):
+        assert( isinstance(other, SegmentModel) )
+        if copy:
+            for s in other.segments:
+                self.segments.append(deepcopy(s))
+        else:
+            for s in other.segments:
+                self.segments.append(s)
+        self._clear_beads()
+
+    def update(self, segment , copy=False):
+        assert( isinstance(other, SegmentModel) )
+        if copy:
+            segment = deepcopy(segment)
+        self.segments.append(segment)
+        self._clear_beads()
+
     """ Mapping between different resolution models """
     def _clear_beads(self):
         for s in self.segments:
             s.clear_all()
         self.clear_all(keep_children=True)
+
+        ## Check that it worked
         assert( len([b for b in self]) == 0 )
         locParticles = []
-        # for c,A,B in self.get_connections():
         for s in self.segments:
             for c,A,B in s.get_connections_and_locations():
                 for l in (A,B):
-- 
GitLab