Isotope Support

Okay, I’m starting a branch for isotope support, in part based on @Juanes recent question.

Here’s the “to do”

  • read / write in CML and CJSON files including tests
  • checking other formats for isotope support (e.g., reading output files, Molden, etc.)
  • support for isotopes in mass calculations, including calculating exact isotopic mass
  • set / unset isotopes (e.g., in the atom properties)
  • support for isotopes in formulas (e.g. printing \ce{CDCl3} or \ce{^{13}CH3})
    • should include returning “D” or “T” for hydrogen atoms with appropriate isotopes
  • support for isotopes in input generators

As far as mass, the default isotope is “0” (i.e., the most abundant isotope for that element).

I can think of two possible ways to handle the default average mass calculation:

  • all atoms return the average mass for the element unless an isotope is set (e.g., \ce{CDH3})
  • once an isotope is set, every other atom returns the most abundant isotope for that element

I’m leaning towards behavior #1 since isotopic substitution at one place does not mean you cannot get isotopomers on the other atoms.

Thoughts? What else am I missing?

2 Likes

I’m in favour of option 1), one explicit exchange for an isotope only changes one atom. A brief note somewhere in the documentation, a reference (perhaps with an active internet hyperlink) to the relevant reference implemented. Which could be another page curated by GP Moss here, or e.g., IUAPC’s 2021 report (Standard atomic weights of the elements 2021 (IUPAC Techn..., open access, table 1, column 7).

Option 2) could be/become an optional extension to Avogadro though if one wants an isotopic pattern for mass spectrometry, editors like ChemDraw have the advantage to display multiple molecules/fragments and their m/z at once.

1 Like

I’ll mention that I absolutely could use some help digging up syntax for isotopes for input generators.

  • CP2K
  • Dalton
  • GAMESS
  • GAMESS-UK
  • Gaussian (e.g., add C(Iso=13) to the atom symbol
  • ORCA (e.g., add M <mass> to the end of the XYZ line
  • Molpro
  • NWChem
  • Psi
  • PySCF
  • Q-Chem
  • Terachem

While I do not qualify as «trained user» in any of these programs, I relayed the question to the robot of https://chat.mistral.ai/chat. Subject to review (some of the answers added a link to the manual), the output is the Markdown attached below.

isotopes.md.tar.gz (1.9 KB)

1 Like

I’d agree that option 1 makes more sense.

This will require a bit of work because in most cases, this involves tweaking the coordinate block. At the moment, most of the input generators use “shortcuts” to do that like S_xyz handled by Avogadro.

I think the best solution for this is to add an optional second line indicating how atoms with isotopes are handled, e.g. S_xyz_M $mass or S(Iso=$I)_xyz or similar syntax.

I’ll put that in the possibly helpful use of AI, although verification is absolutely needed when there isn’t a link to the manual.

1 Like