@@ -151,10 +151,16 @@ def get_residue_axes(
151151 trans_axes = data_container .atoms .principal_axes ()
152152 if len (edge_atom_set ) == 1 :
153153 edge_atom = edge_atom_set [0 ]
154- rot_center , rot_axes = self .get_terminal_axes (residue , edge_atom )
154+ rot_center , rot_axes = self .get_terminal_axes (
155+ residue = residue ,
156+ edge = edge_atom ,
157+ dimensions = data_container .dimensions [:3 ],
158+ )
155159 else :
156160 rot_center , rot_axes = self .get_non_terminal_axes (
157- residue , edge_atom_set
161+ residue = residue ,
162+ edges = edge_atom_set ,
163+ dimensions = data_container .dimensions [:3 ],
158164 )
159165 moment_of_inertia = self .get_custom_residue_moment_of_inertia (
160166 center_of_mass = rot_center ,
@@ -297,7 +303,9 @@ def get_UA_axes(self, data_container, index: int, res_position):
297303 )
298304 edge_atom = edge_atom_set [0 ]
299305 trans_center , trans_axes = self .get_terminal_axes (
300- residue , edge_atom
306+ residue = residue ,
307+ edge = edge_atom ,
308+ dimensions = data_container .dimensions [:3 ],
301309 )
302310 else :
303311 # between 2 residues
@@ -312,7 +320,9 @@ def get_UA_axes(self, data_container, index: int, res_position):
312320 f"resindex { resindex_next } )"
313321 )
314322 trans_center , trans_axes = self .get_non_terminal_axes (
315- residue , edge_atom_set
323+ residue = residue ,
324+ edges = edge_atom_set ,
325+ dimensions = data_container .dimensions [:3 ],
316326 )
317327 # look for heavy atoms in residue of interest
318328 residue_heavy_atoms = residue .atoms .select_atoms ("mass 2 to 999" )
@@ -562,7 +572,7 @@ def get_residue_custom_axes(self, edges, center):
562572 rot_center = first_edge_origin_vector + edges [0 ]
563573 return rot_center , rot_axes
564574
565- def get_terminal_axes (self , residue , edge ):
575+ def get_terminal_axes (self , residue , edge , dimensions ):
566576 """
567577 Compute rotation axes at the residue level/translation axes at the UA level
568578 for the terminal residues in a polymer, given the edge atom
@@ -582,6 +592,7 @@ def get_terminal_axes(self, residue, edge):
582592 Args:
583593 residue: MDAnalysis AtomGroup
584594 edge: MDAnalysis atom
595+ dimensions: (3,) dimensions of the simulation box
585596
586597 Returns:
587598 rot_center: (3,) rotation centre,
@@ -616,11 +627,14 @@ def get_terminal_axes(self, residue, edge):
616627 else :
617628 rot_center = edge .position
618629 rot_axes = self .get_custom_axes (
619- a = edge .position , b = [average_bonded ], c = np .zeros (3 )
630+ a = edge .position ,
631+ b_list = [average_bonded ],
632+ c = np .zeros (3 ),
633+ dimensions = dimensions ,
620634 )
621635 return rot_center , rot_axes
622636
623- def get_non_terminal_axes (self , residue , edges ):
637+ def get_non_terminal_axes (self , residue , edges , dimensions ):
624638 """
625639 Compute rotation axes at the residue level/ translation axes at
626640 the UA level for the non-terminal residues in a linear polymer, given the
@@ -635,6 +649,7 @@ def get_non_terminal_axes(self, residue, edges):
635649 Args:
636650 residue: MDAnalysis AtomGroup
637651 edges: MDAnalysis AtomGroup
652+ dimensions: (3,) dimensions of the simulation box
638653
639654 Returns:
640655 rot_center: (3,) rotation centre,
@@ -651,7 +666,12 @@ def get_non_terminal_axes(self, residue, edges):
651666 )
652667 else :
653668 rot_center = (edges [0 ].position + edges [1 ].position ) / 2
654- rot_axes = self .get_custom_axes (a = rot_center , b = [edges [0 ]], c = np .zeros (3 ))
669+ rot_axes = self .get_custom_axes (
670+ a = rot_center ,
671+ b_list = [edges [0 ].position ],
672+ c = np .zeros (3 ),
673+ dimensions = dimensions ,
674+ )
655675 return rot_center , rot_axes
656676
657677 def get_bonded_axes (self , system , atom , dimensions : np .ndarray ):
0 commit comments