Skip to content

Commit 1b46c35

Browse files
committed
change clustering results to residue ids
1 parent 9e63bad commit 1b46c35

File tree

2 files changed

+21
-4
lines changed

2 files changed

+21
-4
lines changed

domhmm/analysis/base.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -140,6 +140,7 @@ def __init__(
140140
self.membrane = universe_or_atomgroup.select_atoms(membrane_select)
141141
self.membrane_unique_resids = np.unique(self.membrane.resids)
142142
self.resids_index_map = {resid: idx for idx, resid in enumerate(self.membrane_unique_resids)}
143+
self.index_resid_map = {idx: resid for idx, resid in enumerate(self.membrane_unique_resids)}
143144
self.heads = heads
144145
self.tails = tails
145146
self.sterol_heads = sterol_heads

domhmm/analysis/domhmm.py

Lines changed: 20 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1396,7 +1396,11 @@ def result_clustering(self):
13961396
w_ii_f=self.results["Getis_Ord"][j][f"w_ii_{j}"][i],
13971397
core_lipids=core_lipids)
13981398
frame_number = self.start + i * self.step
1399-
self.results["Clustering"][str(j)][frame_number] = list(clusters.values())
1399+
leaflet_index_resid_map = self.get_leaflet_step_index_to_resid(j, i)
1400+
cluster_result = []
1401+
for cluster in clusters.values():
1402+
cluster_result.append([leaflet_index_resid_map[leaflet_index] for leaflet_index in cluster])
1403+
self.results["Clustering"][str(j)][frame_number] = cluster_result
14001404

14011405
@staticmethod
14021406
def assign_core_lipids(weight_matrix_f, g_star_i_f, order_states_f, w_ii_f, z_score):
@@ -1560,7 +1564,7 @@ def get_leaflet_step_order(self, leaflet, step):
15601564
#Init two empty lists for ...
15611565
temp = [] #... order states prediction
15621566
idxs = [] #... indices of lipids
1563-
1567+
15641568
#Iterate over lipids
15651569
for res, data in self.results.train_data_per_type.items():
15661570

@@ -1583,11 +1587,11 @@ def get_leaflet_step_order(self, leaflet, step):
15831587
return order_states
15841588

15851589

1586-
1590+
15871591

15881592
def get_leaflet_step_order_index(self, leaflet, step):
15891593
"""
1590-
Receive residue's indexes and positions for a specific leaflet at any frame of the trajecytory.
1594+
Receive residue's indexes and positions for a specific leaflet at any frame of the trajectory.
15911595
15921596
Parameters
15931597
----------
@@ -1625,3 +1629,15 @@ def get_leaflet_step_order_index(self, leaflet, step):
16251629
f"resname {res} and name {self.sterol_heads[res]}")).positions
16261630

16271631
return indexes, positions
1632+
1633+
def get_leaflet_step_index_to_resid(self, leaflet, step):
1634+
leaflet_assignment_step = self.leaflet_assignment[:, step]
1635+
leaflet_assignment_mask = leaflet_assignment_step == leaflet
1636+
result_map = {}
1637+
for resname in self.unique_resnames:
1638+
sys_index = np.where(self.membrane.residues.resnames == resname)[0]
1639+
sys_index =sys_index[leaflet_assignment_mask[sys_index]]
1640+
leaflet_index = np.where(self.membrane.residues[leaflet_assignment_mask].resnames == resname)[0]
1641+
for i in range(0, len(leaflet_index)):
1642+
result_map[leaflet_index[i]] = self.index_resid_map[sys_index[i]]
1643+
return result_map

0 commit comments

Comments
 (0)