message: tweak guessElementSymbolString
diff: /**
  - * Copyright (c) 2019-2020 mol* contributors, licensed under MIT, See LICENSE file for more info.
  + * Copyright (c) 2019-2022 mol* contributors, licensed under MIT, See LICENSE file for more info.
  *
  * @author Alexander Rose <alexander.rose@weirdbyte.de>
  */
  @@ -46,6 +46,9 @@ export function guessElementSymbolTokens(tokens: Tokens, str: string, start: num
  TokenBuilder.add(tokens, s, s); // no reasonable guess, add empty token
  }
  +const TwoCharElementNames = new Set(['NA', 'CL', 'FE', 'SI', 'BR', 'AS']);
  +const OneCharElementNames = new Set(['C', 'H', 'N', 'O', 'P', 'S']);
  +
  const reTrimSpacesAndNumbers = /^[\s\d]+|[\s\d]+$/g;
  export function guessElementSymbolString(atomId: string, compId: string) {
  // trim spaces and numbers, convert to upper case
  @@ -54,14 +57,10 @@ export function guessElementSymbolString(atomId: string, compId: string) {
  if (l === 0) return atomId; // empty
  if (l === 1) return atomId; // one char
  + if (TwoCharElementNames.has(atomId)) return atomId; // two chars
  - if (l === 2) { // two chars
  - if (atomId === 'NA' || atomId === 'CL' || atomId === 'FE' || atomId === 'SI' ||
  - atomId === 'BR' || atomId === 'AS'
  - ) return atomId;
  - }
  -
  - if (l === 3 && compId === atomId) { // three chars
  + // check for Charmm ion names where component and atom id are the same
  + if (l === 3 && compId === atomId) {
  if (atomId === 'SOD') return 'NA';
  if (atomId === 'POT') return 'K';
  if (atomId === 'CES') return 'CS';
  @@ -69,8 +68,7 @@ export function guessElementSymbolString(atomId: string, compId: string) {
  if (atomId === 'CLA') return 'CL';
  }
  - const c = atomId[0];
  - if (c === 'C' || c === 'H' || c === 'N' || c === 'O' || c === 'P' || c === 'S') return c;
  + if (OneCharElementNames.has(atomId[0])) return atomId[0];
  return ''; // no reasonable guess, return empty string
  }
  