Skip to content

Commit 62a09ef

Browse files
authored
Update selection.py
Implementation of SugarSelection with the known abbreviations and aglycans obtained from the glycam webserver
1 parent b254921 commit 62a09ef

File tree

1 file changed

+249
-0
lines changed

1 file changed

+249
-0
lines changed

package/MDAnalysis/core/selection.py

Lines changed: 249 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1056,6 +1056,255 @@ def _apply(self, group):
10561056
return group[np.isin(nmidx, matches)]
10571057

10581058

1059+
class SugarSelection(Selection):
1060+
"""Consists of sugar residues with recognized abbreviations.
1061+
1062+
Recognized residue names in :attr:`SugarSelection.sugar_res`.
1063+
1064+
* from glycam.org server::
1065+
Abbreviations for PDB, CHARMM and GLYCAM
1066+
https://glycam.org/docs/othertoolsservice/2016/06/09/3d-snfg-list-of-residue-names/index.html
1067+
1068+
* manually added aglycans 'ROH', 'OME', 'TBT' from GLYCAM-Web generated files.
1069+
"""
1070+
token = 'sugar'
1071+
1072+
sugar_res = {
1073+
# https://glycam.org/docs/othertoolsservice/2016/06/09/3d-snfg-list-of-residue-names/index.html
1074+
# Full PDB Abbreviations Nomenclature
1075+
'GLC', 'MAL', 'BGC', 'NAG', '4YS', 'SGN', 'BGLN', 'NDG', 'GCS',
1076+
'GCU', 'QUI', 'OLI', 'MAN', 'BMA', 'MAV', 'BEM', 'RAM', 'TYV', 'ARA',
1077+
'AHR', 'GAL', 'GLA', 'NGA', 'ADA', 'GUL', 'GUP', 'GL0', 'LGU', 'ALT',
1078+
'ALL', 'WOO', 'TAL', 'IDO', 'IDS', 'FUC', 'FUL', 'LYX', 'ABE', 'XYL',
1079+
'XYS', 'LXC', 'XYP', 'PAR', 'RIB', 'DIG', 'COL', 'BAC', 'API', 'FRU',
1080+
'TAG', 'SOR', 'PSI', 'DHA', 'KDN', 'KDO', 'NEU', 'SIA', 'MUR', 'GMH',
1081+
# Full CHARMM Abbreviations Nomenclature
1082+
'AGLC', 'BGLC', 'AGLCNA', 'BGLCNA', 'BGLCN0', 'AGLCA', 'BGLCA',
1083+
'BGLCA0', 'AMAN', 'BMAN', 'ARHM', 'BRHM', 'AARB', 'BARB', 'AGAL',
1084+
'BGAL', 'AGALNA', 'BGALNA', 'AGUL', 'BGUL', 'AALT', 'BALT', 'AALL',
1085+
'ATAL', 'BTAL', 'AIDO', 'BIDO', 'AIDOA', 'BIDOA', 'AFUC', 'BFUC',
1086+
'ALYF', 'BLYF', 'AXYL', 'BXYL', 'AXYF', 'BXYF', 'ARIB', 'BRIB',
1087+
'AFRU', 'BFRU', 'ANE5AC', 'BNE5AC',
1088+
# GLYCAM Abbreviations
1089+
# Glucose Nomenculature
1090+
'0GA', '0GB', '1GA', '1GB', '2GA', '2GB', '3GA', '3GB', '4GA', '4GB',
1091+
'6GA', '6GB', 'ZGA', 'ZGB', 'YGA', 'YGB', 'XGA', 'XGB', 'WGA', 'WGB',
1092+
'VGA', 'VGB', 'UGA', 'UGB', 'TGA', 'TGB', 'SGA', 'SGB', 'RGA', 'RGB',
1093+
'QGA', 'QGB', 'PGA', 'PGB', '0gA', '0gB', '1gA', '1gB', '2gA', '2gB',
1094+
'3gA', '3gB', '4gA', '4gB', '6gA', '6gB', 'ZgA', 'ZgB', 'YgA', 'YgB',
1095+
'XgA', 'XgB', 'WgA', 'WgB', 'VgA', 'VgB', 'UgA', 'UgB', 'TgA', 'TgB',
1096+
'SgA', 'SgB', 'RgA', 'RgB', 'QgA', 'QgB', 'PgA', 'PgB',
1097+
# N-Acetyl Glucosamine Nomenculature
1098+
'0YA', '0YB', '1YA', '1YB', '3YA', '3YB', '4YA', '4YB', '6YA', '6YB',
1099+
'WYA', 'WYB', 'VYA', 'VYB', 'UYA', 'UYB', 'QYA', 'QYB', '0yA', '0yB',
1100+
'1yA', '1yB', '3yA', '3yB', '4yA', '4yB', '6yA', '6yB', 'WyA', 'WyB',
1101+
'VyA', 'VyB', 'UyA', 'UyB', 'QyA', 'QyB',
1102+
# Glucosamine Nomenculature
1103+
'0YN', '0Yn', '0YNP', '0YnP', '0YS', '0Ys', '3YS', '3Ys', '4YS',
1104+
'4Ys', '6YS', '6Ys', 'QYS', 'QYs', 'UYS', 'UYs', 'VYS', 'VYs',
1105+
'WYS', 'WYs', '0yS', '0ys', '3yS', '3ys', '4yS', '4ys',
1106+
# Glucuronic Acid Nomenculature
1107+
'0ZA', '0ZB', '1ZA', '1ZB', '2ZA', '2ZB', '3ZA', '3ZB', '4ZA',
1108+
'4ZB', 'ZZA', 'ZZB', 'YZA', 'YZB', 'WZA', 'WZB', 'TZA', 'TZB',
1109+
'0zA', '0zB', '1zA', '1zB', '2zA', '2zB', '3zA', '3zB', '4zA',
1110+
'4zB', 'ZzA', 'ZzB', 'YzA', 'YzB', 'WzA', 'WzB', 'TzA',
1111+
'TzB', '0ZBP',
1112+
# Quinovose Nomenculature
1113+
'0QA', '0QB', '1QA', '1QB', '2QA', '2QB', '3QA', '3QB', '4QA',
1114+
'4QB', 'ZQA', 'ZQB', 'YQA', 'YQB', 'WQA', 'WQB', 'TQA', 'TQB',
1115+
'0qA', '0qB', '1qA', '1qB', '2qA', '2qB', '3qA', '3qB', '4qA',
1116+
'4qB', 'ZqA', 'ZqB', 'YqA', 'YqB', 'WqA', 'WqB', 'TqA', 'TqB',
1117+
# Mannose Nomenculature
1118+
'0MA', '0MB', '1MA', '1MB', '2MA', '2MB', '3MA', '3MB', '4MA',
1119+
'4MB', '6MA', '6MB', 'ZMA', 'ZMB', 'YMA', 'YMB', 'XMA', 'XMB',
1120+
'WMA', 'WMB', 'VMA', 'VMB', 'UMA', 'UMB', 'TMA', 'TMB', 'SMA',
1121+
'SMB', 'RMA', 'RMB', 'QMA', 'QMB', 'PMA', 'PMB', '0mA', '0mB',
1122+
'1mA', '1mB', '2mA', '2mB', '3mA', '3mB', '4mA', '4mB', '6mA',
1123+
'6mB', 'ZmA', 'ZmB', 'YmA', 'YmB', 'XmA', 'XmB', 'WmA', 'WmB',
1124+
'VmA', 'VmB', 'UmA', 'UmB', 'TmA', 'TmB', 'SmA', 'SmB', 'RmA',
1125+
'RmB', 'QmA', 'QmB', 'PmA', 'PmB',
1126+
# N-Acetyl Mannosamine Nomenculature
1127+
'0WA', '0WB', '1WA', '1WB', '3WA', '3WB', '4WA', '4WB', '6WA',
1128+
'6WB', 'WWA', 'WWB', 'VWA', 'VWB', 'UWA', 'UWB', 'QWA', 'QWB',
1129+
'0wA', '0wB', '1wA', '1wB', '3wA', '3wB', '4wA', '4wB', '6wA',
1130+
'6wB', 'WwA', 'WwB', 'VwA', 'VwB', 'UwA', 'UwB', 'QwA', 'QwB',
1131+
# Rhamnose Nomenculature
1132+
'0HA', '0HB', '1HA', '1HB', '2HA', '2HB', '3HA', '3HB', '4HA',
1133+
'4HB', 'ZHA', 'ZHB', 'YHA', 'YHB', 'WHA', 'WHB', 'THA', 'THB',
1134+
'0hA', '0hB', '1hA', '1hB', '2hA', '2hB', '3hA', '3hB', '4hA',
1135+
'4hB', 'ZhA', 'ZhB', 'YhA', 'YhB', 'WhA', 'WhB', 'ThA', 'ThB',
1136+
# Tyvelose Nomenculature
1137+
'0TV', '0Tv', '1TV', '1Tv', '2TV', '2Tv', '4TV', '4Tv', 'YTV',
1138+
'YTv', '0tV', '0tv', '1tV', '1tv', '2tV', '2tv', '4tV', '4tv',
1139+
'YtV', 'Ytv',
1140+
# Arabinose Nomenculature
1141+
'0AA', '0AB', '1AA', '1AB', '2AA', '2AB', '3AA', '3AB', '4AA',
1142+
'4AB', 'ZAA', 'ZAB', 'YAA', 'YAB', 'WAA', 'WAB', 'TAA', 'TAB',
1143+
'0AD', '0AU', '1AD', '1AU', '2AD', '2AU', '3AD', '3AU', '5AD',
1144+
'5AU', 'ZAD', 'ZAU', '0aA', '0aB', '1aA', '1aB', '2aA', '2aB',
1145+
'3aA', '3aB', '4aA', '4aB', 'ZaA', 'ZaB', 'YaA', 'YaB', 'WaA',
1146+
'WaB', 'TaA', 'TaB', '0aD', '0aU', '1aD', '1aU', '2aD', '2aU',
1147+
'3aD', '3aU', '5aD', '5aU', 'ZaD', 'ZaU',
1148+
# Galactose Nomenculature
1149+
'0LA', '0LB', '1LA', '1LB', '2LA', '2LB', '3LA', '3LB', '4LA',
1150+
'4LB', '6LA', '6LB', 'ZLA', 'ZLB', 'YLA', 'YLB', 'XLA', 'XLB',
1151+
'WLA', 'WLB', 'VLA', 'VLB', 'ULA', 'ULB', 'TLA', 'TLB', 'SLA',
1152+
'SLB', 'RLA', 'RLB', 'QLA', 'QLB', 'PLA', 'PLB', '0lA', '0lB',
1153+
'1lA', '1lB', '2lA', '2lB', '3lA', '3lB', '4lA', '4lB', '6lA',
1154+
'6lB', 'ZlA', 'ZlB', 'YlA', 'YlB', 'XlA', 'XlB', 'WlA', 'WlB',
1155+
'VlA', 'VlB', 'UlA', 'UlB', 'TlA', 'TlB', 'SlA', 'SlB', 'RlA',
1156+
'RlB', 'QlA', 'QlB', 'PlA', 'PlB',
1157+
# N-Acetyl Galactosamine Nomenculature
1158+
'0VA', '0VB', '1VA', '1VB', '3VA', '3VB', '4VA', '4VB', '6VA',
1159+
'6VB', 'WVA', 'WVB', 'VVA', 'VVB', 'UVA', 'UVB', 'QVA', 'QVB',
1160+
'0vA', '0vB', '1vA', '1vB', '3vA', '3vB', '4vA', '4vB', '6vA',
1161+
'6vB', 'WvA', 'WvB', 'VvA', 'VvB', 'UvA', 'UvB', 'QvA', 'QvB',
1162+
# Galacturonic Acid Nomenculature
1163+
'0OA', '0OB', '1OA', '1OB', '2OA', '2OB', '3OA', '3OB', '4OA',
1164+
'4OB', 'ZOA', 'ZOB', 'YOA', 'YOB', 'WOA', 'WOB', 'TOA', 'TOB',
1165+
'0oA', '0oB', '1oA', '1oB', '2oA', '2oB', '3oA', '3oB', '4oA',
1166+
'4oB', 'ZoA', 'ZoB', 'YoA', 'YoB', 'WoA', 'WoB', 'ToA', 'ToB',
1167+
# Gulose Nomenculature
1168+
'0KA', '0KB', '1KA', '1KB', '2KA', '2KB', '3KA', '3KB', '4KA',
1169+
'4KB', '6KA', '6KB', 'ZKA', 'ZKB', 'YKA', 'YKB', 'XKA', 'XKB',
1170+
'WKA', 'WKB', 'VKA', 'VKB', 'UKA', 'UKB', 'TKA', 'TKB', 'SKA',
1171+
'SKB', 'RKA', 'RKB', 'QKA', 'QKB', 'PKA', 'PKB', '0kA', '0kB',
1172+
'1kA', '1kB', '2kA', '2kB', '3kA', '3kB', '4kA', '4kB', '6kA',
1173+
'6kB', 'ZkA', 'ZkB', 'YkA', 'YkB', 'XkA', 'XkB', 'WkA', 'WkB',
1174+
'VkA', 'VkB', 'UkA', 'UkB', 'TkA', 'TkB', 'SkA', 'SkB', 'RkA',
1175+
'RkB', 'QkA', 'QkB', 'PkA', 'PkB',
1176+
# Altrose Nomenculature
1177+
'0EA', '0EB', '1EA', '1EB', '2EA', '2EB', '3EA', '3EB', '4EA',
1178+
'4EB', '6EA', '6EB', 'ZEA', 'ZEB', 'YEA', 'YEB', 'XEA', 'XEB',
1179+
'WEA', 'WEB', 'VEA', 'VEB', 'UEA', 'UEB', 'TEA', 'TEB', 'SEA',
1180+
'SEB', 'REA', 'REB', 'QEA', 'QEB', 'PEA', 'PEB', '0eA', '0eB',
1181+
'1eA', '1eB', '2eA', '2eB', '3eA', '3eB', '4eA', '4eB', '6eA',
1182+
'6eB', 'ZeA', 'ZeB', 'YeA', 'YeB', 'XeA', 'XeB', 'WeA', 'WeB',
1183+
'VeA', 'VeB', 'UeA', 'UeB', 'TeA', 'TeB', 'SeA', 'SeB', 'ReA',
1184+
'ReB', 'QeA', 'QeB', 'PeA', 'PeB',
1185+
# Allose Nomenculature
1186+
'0NA', '0NB', '1NA', '1NB', '2NA', '2NB', '3NA', '3NB', '4NA',
1187+
'4NB', '6NA', '6NB', 'ZNA', 'ZNB', 'YNA', 'YNB', 'XNA', 'XNB',
1188+
'WNA', 'WNB', 'VNA', 'VNB', 'UNA', 'UNB', 'TNA', 'TNB', 'SNA',
1189+
'SNB', 'RNA', 'RNB', 'QNA', 'QNB', 'PNA', 'PNB', '0nA', '0nB',
1190+
'1nA', '1nB', '2nA', '2nB', '3nA', '3nB', '4nA', '4nB', '6nA',
1191+
'6nB', 'ZnA', 'ZnB', 'YnA', 'YnB', 'XnA', 'XnB', 'WnA', 'WnB',
1192+
'VnA', 'VnB', 'UnA', 'UnB', 'TnA', 'TnB', 'SnA', 'SnB', 'RnA',
1193+
'RnB', 'QnA', 'QnB', 'PnA', 'PnB',
1194+
# Talose Nomenculature
1195+
'0TA', '0TB', '1TA', '1TB', '2TA', '2TB', '3TA', '3TB', '4TA',
1196+
'4TB', '6TA', '6TB', 'ZTA', 'ZTB', 'YTA', 'YTB', 'XTA', 'XTB',
1197+
'WTA', 'WTB', 'VTA', 'VTB', 'UTA', 'UTB', 'TTA', 'TTB', 'STA',
1198+
'STB', 'RTA', 'RTB', 'QTA', 'QTB', 'PTA', 'PTB', '0tA', '0tB',
1199+
'1tA', '1tB', '2tA', '2tB', '3tA', '3tB', '4tA', '4tB', '6tA',
1200+
'6tB', 'ZtA', 'ZtB', 'YtA', 'YtB', 'XtA', 'XtB', 'WtA', 'WtB',
1201+
'VtA', 'VtB', 'UtA', 'UtB', 'TtA', 'TtB', 'StA', 'StB', 'RtA',
1202+
'RtB', 'QtA', 'QtB', 'PtA', 'PtB',
1203+
# Iduronic Acid Nomenculature
1204+
'0UA', '0UB', '1UA', '1UB', '2UA', '2UB', '3UA', '3UB', '4UA',
1205+
'4UB', 'ZUA', 'ZUB', 'YUA', 'YUB', 'WUA', 'WUB', 'TUA', 'TUB',
1206+
'0uA', '0uB', '1uA', '1uB', '2uA', '2uB', '3uA', '3uB', '4uA',
1207+
'4uB', 'ZuA', 'ZuB', 'YuA', 'YuB', 'WuA', 'WuB', 'TuA', 'TuB',
1208+
'YuAP',
1209+
# Fucose Nomenculature
1210+
'0FA', '0FB', '1FA', '1FB', '2FA', '2FB', '3FA', '3FB', '4FA',
1211+
'4FB', 'ZFA', 'ZFB', 'YFA', 'YFB', 'WFA', 'WFB', 'TFA', 'TFB',
1212+
'0fA', '0fB', '1fA', '1fB', '2fA', '2fB', '3fA', '3fB', '4fA',
1213+
'4fB', 'ZfA', 'ZfB', 'YfA', 'YfB', 'WfA', 'WfB', 'TfA', 'TfB',
1214+
# Lyxose Nomenculature
1215+
'0DA', '0DB', '1DA', '1DB', '2DA', '2DB', '3DA', '3DB', '4DA',
1216+
'4DB', 'ZDA', 'ZDB', 'YDA', 'YDB', 'WDA', 'WDB', 'TDA', 'TDB',
1217+
'0DD', '0DU', '1DD', '1DU', '2DD', '2DU', '3DD', '3DU', '5DD',
1218+
'5DU', 'ZDD', 'ZDU', '0dA', '0dB', '1dA', '1dB', '2dA', '2dB',
1219+
'3dA', '3dB', '4dA', '4dB', 'ZdA', 'ZdB', 'YdA', 'YdB', 'WdA',
1220+
'WdB', 'TdA', 'TdB', '0dD', '0dU', '1dD', '1dU', '2dD', '2dU',
1221+
'3dD', '3dU', '5dD', '5dU', 'ZdD', 'ZdU',
1222+
# Abequose Nomenculature
1223+
'0AE', '2AE', '4AE', 'YGa', '0AF', '2AF', '4AF', 'YAF',
1224+
# Xylose Nomenculature
1225+
'0XA', '0XB', '1XA', '1XB', '2XA', '2XB', '3XA', '3XB', '4XA',
1226+
'4XB', 'ZXA', 'ZXB', 'YXA', 'YXB', 'WXA', 'WXB', 'TXA', 'TXB',
1227+
'0XD', '0XU', '1XD', '1XU', '2XD', '2XU', '3XD', '3XU', '5XD',
1228+
'5XU', 'ZXD', 'ZXU', '0xA', '0xB', '1xA', '1xB', '2xA', '2xB',
1229+
'3xA', '3xB', '4xA', '4xB', 'ZxA', 'ZxB', 'YxA', 'YxB', 'WxA',
1230+
'WxB', 'TxA', 'TxB', '0xD', '0xU', '1xD', '1xU', '2xD', '2xU',
1231+
'3xD', '3xU', '5xD', '5xU', 'ZxD', 'ZxU',
1232+
# Ribose Nomenculature
1233+
'0RA', '0RB', '1RA', '1RB', '2RA', '2RB', '3RA', '3RB', '4RA',
1234+
'4RB', 'ZRA', 'ZRB', 'YRA', 'YRB', 'WRA', 'WRB', 'TRA', 'TRB',
1235+
'0RD', '0RU', '1RD', '1RU', '2RD', '2RU', '3RD', '3RU', '5RD',
1236+
'5RU', 'ZRD', 'ZRU', '0rA', '0rB', '1rA', '1rB', '2rA', '2rB',
1237+
'3rA', '3rB', '4rA', '4rB', 'ZrA', 'ZrB', 'YrA', 'YrB', 'WrA',
1238+
'WrB', 'TrA', 'TrB', '0rD', '0rU', '1rD', '1rU', '2rD', '2rU',
1239+
'3rD', '3rU', '5rD', '5rU', 'ZrD', 'ZrU',
1240+
# Bacillosamine Nomenculature
1241+
'0BC', '3BC', '0bC', '3bC',
1242+
# Fructose Nomenculature
1243+
'0CA', '0CB', '1CA', '1CB', '2CA', '2CB', '3CA', '3CB', '4CA',
1244+
'4CB', '5CA', '5CB', 'WCA', 'WCB', '0CD', '0CU', '1CD', '1CU',
1245+
'2CD', '2CU', '3CD', '3CU', '4CD', '4CU', '6CD', '6CU', 'WCD',
1246+
'WCU', 'VCD', 'VCU', 'UCD', 'UCU', 'QCD', 'QCU', '0cA', '0cB',
1247+
'1cA', '1cB', '2cA', '2cB', '3cA', '3cB', '4cA', '4cB', '5cA',
1248+
'5cB', 'WcA', 'WcB', '0cD', '0cU', '1cD', '1cU', '2cD', '2cU',
1249+
'3cD', '3cU', '4cD', '4cU', '6cD', '6cU', 'WcD', 'WcU', 'VcD',
1250+
'VcU', 'UcD', 'UcU', 'QcD', 'QcU',
1251+
# Tagatose Nomenculature
1252+
'0JA', '0JB', '1JA', '1JB', '2JA', '2JB', '3JA', '3JB', '4JA',
1253+
'4JB', '5JA', '5JB', 'WJA', 'WJB', '0JD', '0JU', '1JD', '1JU',
1254+
'2JD', '2JU', '3JD', '3JU', '4JD', '4JU', '6JD', '6JU', 'WJD',
1255+
'WJU', 'VJD', 'VJU', 'UJD', 'UJU', 'QJD', 'QJU', '0jA', '0jB',
1256+
'1jA', '1jB', '2jA', '2jB', '3jA', '3jB', '4jA', '4jB', '5jA',
1257+
'5jB', 'WjA', 'WjB', '0jD', '0jU', '1jD', '1jU', '2jD', '2jU',
1258+
'3jD', '3jU', '4jD', '4jU', '6jD', '6jU', 'WjD', 'WjU', 'VjD',
1259+
'VjU', 'UjD', 'UjU', 'QjD', 'QjU',
1260+
# Sorbose Nomenculature
1261+
'0BA', '0BB', '1BA', '1BB', '2BA', '2BB', '3BA', '3BB', '4BA',
1262+
'4BB', '5BA', '5BB', 'WBA', 'WBB', '0BD', '0BU', '1BD', '1BU',
1263+
'2BD', '2BU', '3BD', '3BU', '4BD', '4BU', '6BD', '6BU', 'WBD',
1264+
'WBU', 'VBD', 'VBU', 'UBD', 'UBU', 'QBD', 'QBU', '0bA', '0bB',
1265+
'1bA', '1bB', '2bA', '2bB', '3bA', '3bB', '4bA', '4bB', '5bA',
1266+
'5bB', 'WbA', 'WbB', '0bD', '0bU', '1bD', '1bU', '2bD', '2bU',
1267+
'3bD', '3bU', '4bD', '4bU', '6bD', '6bU', 'WbD', 'WbU', 'VbD',
1268+
'VbU', 'UbD', 'UbU', 'QbD', 'QbU',
1269+
# Psicose Nomenculature
1270+
'0PA', '0PB', '1PA', '1PB', '2PA', '2PB', '3PA', '3PB', '4PA',
1271+
'4PB', '5PA', '5PB', 'WPA', 'WPB', '0PD', '0PU', '1PD', '1PU',
1272+
'2PD', '2PU', '3PD', '3PU', '4PD', '4PU', '6PD', '6PU', 'WPD',
1273+
'WPU', 'VPD', 'VPU', 'UPD', 'UPU', 'QPD', 'QPU', '0pA', '0pB',
1274+
'1pA', '1pB', '2pA', '2pB', '3pA', '3pB', '4pA', '4pB', '5pA',
1275+
'5pB', 'WpA', 'WpB', '0pD', '0pU', '1pD', '1pU', '2pD', '2pU',
1276+
'3pD', '3pU', '4pD', '4pU', '6pD', '6pU', 'WpD', 'WpU', 'VpD',
1277+
'VpU', 'UpD', 'UpU', 'QpD', 'QpU',
1278+
# N-Acetyl Neuraminic Acid Nomenculature
1279+
'0SA', '0SB', '4SA', '4SB', '7SA', '7SB', '8SA', '8SB', '9SA',
1280+
'9SB', 'ASA', 'ASB', 'BSA', 'BSB', 'CSA', 'CSB', 'DSA', 'DSB',
1281+
'ESA', 'ESB', 'FSA', 'FSB', 'GSA', 'GSB', 'HSA', 'HSB', 'ISA',
1282+
'ISB', 'JSA', 'JSB', 'KSA', 'KSB', '0sA', '0sB', '4sA', '4sB',
1283+
'7sA', '7sB', '8sA', '8sB', '9sA', '9sB', 'AsA', 'AsB', 'BsA',
1284+
'BsB', 'CsA', 'CsB', 'DsA', 'DsB', 'EsA', 'EsB', 'FsA', 'FsB',
1285+
'GsA', 'GsB', 'HsA', 'HsB', 'IsA', 'IsB', 'JsA', 'JsB', 'KsA',
1286+
'KsB',
1287+
# N-Glycolyl Neuraminic Acid Nomenculature
1288+
'0GL', '4GL', '7GL', '8GL', '9GL', 'CGL', 'DGL', 'EGL', 'FGL',
1289+
'GGL', 'HGL', 'IGL', 'JGL', 'KGL', '0gL', '4gL', '7gL', '8gL',
1290+
'9gL', 'AgL', 'BgL', 'CgL', 'DgL', 'EgL', 'FgL', 'GgL', 'HgL',
1291+
'IgL', 'JgL', 'KgL',
1292+
# Aglycon Nomenculature
1293+
'ROH', 'OME', 'TBT',
1294+
}
1295+
1296+
def _apply(self, group):
1297+
resname_attr = group.universe._topology.resnames
1298+
# which values in resname attr are in sugar_res?
1299+
matches = [ix for (nm, ix) in resname_attr.namedict.items()
1300+
if nm in self.sugar_res]
1301+
# index of each atom's resname
1302+
nmidx = resname_attr.nmidx[group.resindices]
1303+
# intersect atom's resname index and matches to sugar_res
1304+
return group[np.isin(nmidx, matches)]
1305+
1306+
1307+
10591308
class NucleicSelection(Selection):
10601309
"""All atoms in nucleic acid residues with recognized residue names.
10611310

0 commit comments

Comments
 (0)