From e32b9c264843e65aa003935be6dd5c175786c355 Mon Sep 17 00:00:00 2001
From: Chris Maffeo <cmaffeo2@illinois.edu>
Date: Fri, 15 Mar 2019 13:49:36 -0500
Subject: [PATCH] Added _generate_bead_callbacks. Made lists into tuples for
 ParticleType __hash_key function

---
 mrdna/model/arbdmodel.py | 1 +
 mrdna/segmentmodel.py    | 7 +++++++
 2 files changed, 8 insertions(+)

diff --git a/mrdna/model/arbdmodel.py b/mrdna/model/arbdmodel.py
index a0b7608..e2a1f90 100644
--- a/mrdna/model/arbdmodel.py
+++ b/mrdna/model/arbdmodel.py
@@ -327,6 +327,7 @@ class ParticleType():
     def __hash_key(self):
         l = [self.name,self.charge]
         for keyval in sorted(self.__dict__.items()):
+            if isinstance(keyval[1], list): keyval = (keyval[0],tuple(keyval[1]))
             l.extend(keyval)
         return tuple(l)
 
diff --git a/mrdna/segmentmodel.py b/mrdna/segmentmodel.py
index 99c6cf9..5212f95 100644
--- a/mrdna/segmentmodel.py
+++ b/mrdna/segmentmodel.py
@@ -1541,10 +1541,13 @@ class SegmentModel(ArbdModel):
                            decompPeriod, pairlistDistance=None,
                            nonbondedResolution=0)
 
+
         # self.max_basepairs_per_bead = max_basepairs_per_bead     # dsDNA
         # self.max_nucleotides_per_bead = max_nucleotides_per_bead # ssDNA
         self.children = self.segments = segments
 
+        self._generate_bead_callbacks = []
+
         self._bonded_potential = dict() # cache for bonded potentials
         self._generate_strands()
         self.grid_potentials = []
@@ -2543,6 +2546,10 @@ class SegmentModel(ArbdModel):
                     pot = self.get_dihedral_potential(k,t0)
                     self.add_dihedral( n1,n2,n3,n4, pot )
 
+        for callback in self._generate_bead_callbacks:
+            callback(self)
+
+
         # ## remove duplicate potentials; ## TODO ensure that they aren't added twice in the first place? 
         # self.remove_duplicate_terms()
 
-- 
GitLab