From a070d98c25fdcd993696a29885d2103b22ab20d2 Mon Sep 17 00:00:00 2001 From: Sriraksha Srinivasan Date: Fri, 29 Sep 2023 14:30:59 +0100 Subject: [PATCH] Added LipidSelection class * residue names from CHARMM top_all36_lipid.rtf --- package/MDAnalysis/core/selection.py | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/package/MDAnalysis/core/selection.py b/package/MDAnalysis/core/selection.py index 2edbf79e01b..9c6f5dad708 100644 --- a/package/MDAnalysis/core/selection.py +++ b/package/MDAnalysis/core/selection.py @@ -1056,6 +1056,28 @@ def _apply(self, group): return group[np.isin(nmidx, matches)] +class LipidSelection(Selection): + token = 'lipid' + + lipid_res = { + 'LPPC', 'DLPC', 'DLPE', 'DLPS', 'DLPA', 'DLPG', 'DMPC', 'DMPE', 'DMPS', + 'DMPA', 'DMPG', 'DPPC', 'DPPE', 'DPPS', 'DPPA', 'DPPG', 'DSPC', 'DSPE', + 'DSPS', 'DSPA', 'DSPG', 'DOPC', 'DOPE', 'DOPS', 'DOPA', 'DOPG', 'POPC', + 'POPE', 'POPS', 'POPA', 'POPG', 'SAPC', 'SDPC', 'SOPC', 'DAPC' + } + + def _apply(self, group): + resnames = group.universe._topology.resnames + nmidx = resnames.nmidx[group.resindices] + + matches = [ix for (nm, ix) in resnames.namedict.items() + if nm in self.lipid_res] + mask = np.isin(nmidx, matches) + + return group[mask] + + + class NucleicSelection(Selection): """All atoms in nucleic acid residues with recognized residue names.