[HN Gopher] Parsing Chemistry
___________________________________________________________________
Parsing Chemistry
Author : kencausey
Score : 49 points
Date : 2025-10-24 18:07 UTC (12 days ago)
(HTM) web link (re.factorcode.org)
(TXT) w3m dump (re.factorcode.org)
| whitten wrote:
| Does the SMILE (or Simplified Molecular Input Line Entry System)
| code have an EBNF definition ?
| https://en.wikipedia.org/wiki/Simplified_Molecular_Input_Lin...
| Claims there is a context free grammar.
| dalke wrote:
| That's "SMILES".
|
| Yes. Here is the yacc grammar for the SMILES parser in the
| RDKit.
| https://github.com/rdkit/rdkit/blob/master/Code/GraphMol/Smi...
|
| There's also one from OpenSMILES at
| http://opensmiles.org/opensmiles.html#_grammar . It has a
| shift/reduce error (as I recall) that I was not competent
| enough to fix.
|
| I prefer to parser almost completely in the lexer, with a small
| amount of lexer state to handle balanced parens, bracket atoms,
| and matching ring closures. See
| https://hg.sr.ht/~dalke/opensmiles-ragel and more specifically
| https://hg.sr.ht/~dalke/opensmiles-ragel/browse/opensmiles.r...
| .
| dekhn wrote:
| I wrote a very simple SMILES parser using pyparsing
| https://github.com/dakoner/smilesparser/tree/master I wouldn't
| say it's intended for production work, but it has been useful
| in situations where I didn't want to pull in rdkit.
| the__alchemist wrote:
| Note: There are two standardized formats for this called SMILES
| and SELFIES. SMILES is much better supported, but SELFIES is more
| robust. I'm integrating them into some bio and chem software I'm
| working on.
|
| You can do things like look up, using PubChem's API, similar
| molecules etc to a SMILES string.
|
| I believe most molecule editors can load and save SMILES.
| dachrillz wrote:
| What about inchi? Isn't that a common way of describing
| molecules as well?
| the__alchemist wrote:
| Good point!
| fred_tandemai wrote:
| InChI isn't really meant to be used as a format to store 2D
| molecules say for rendering but rather serves as a unique
| descriptive chemical identifier. InChI has many flavors but
| the Standard InChI yields one unique identifier for multiple
| forms (tautomers) of the same molecule.
| jugoetz wrote:
| SMILES and SELFIES are molecular graph representations and
| aren't meant to solve the "parse this sum formula" problem.
|
| SELFIES are for genAI. If you ask a VAE to generate SMILES, it
| will spit out some strings that are invalid - can't happen with
| SELFIES, that is the one application where they are robust.
| dekhn wrote:
| It's still being argued if you really need SELFIES, or if
| SMILES autoencoders can be trained to only generate valid
| molecules, or if generating invalid molecules is useful (I'm
| in camp SELFIES, but I also want better ways to represent and
| learn on graphical chemical structures, ratehr than
| serialized strings).
| chermi wrote:
| can you guys explain what makes SELFIES robust? I'd only
| heard of SMILES until this thread, but I have been out of
| this space for 10 years.
| logifail wrote:
| Does this do structural formulae too?
|
| Was thinking of InChI[0] but on Googling SMILES and SELFIES I
| found this[1] talk, this[2] paper and my goodness I've been down
| a few rabbit holes since...
|
| [0]
| https://en.wikipedia.org/wiki/International_Chemical_Identif...
| [1] https://www.inchi-trust.org/wp/wp-
| content/uploads/2019/12/18... [2]
| https://pubs.rsc.org/en/content/articlehtml/2022/dd/d1dd0001...
| jugoetz wrote:
| No, in Python you can use rdkit
| (https://github.com/rdkit/rdkit) for that
| toast_x wrote:
| this is insanely cool
| Jaxan wrote:
| ... It is just a parser? Sure the parser is written very
| succinctly and that's neat. But parser generators for other
| languages can do it similarly.
| brilee wrote:
| Does this handle, e.g., water of hydration CaSO4 . 2H2O? states
| of matter H2O(g)? does it preserve subunit information, as in
| (C6H5)CH2COOH? Writing a parser for basic formulae is such a tiny
| tiny part of the actual problem... deciding the scope of what you
| want to handle and how is the real problem
| mwt wrote:
| This code is jibberish to me, but it appears the target is just
| parsing how many atoms are in a molecule string of some
| representation. That's cool, but to do just about anything useful
| in chemistry we need the bond graph (and often more - bond orders
| stereochemistry, plus much more for biopolymers).
| the__alchemist wrote:
| That was my initial reaction too, but I suspect this is has
| utility in applications other than what you and I are looking
| for. From context, I gather this may be for thermodynamic
| arithmetic, or reaction product arithmetic.
| mwt wrote:
| I'd be really interested to know of anybody making money with
| those topics (and doesn't already have their own domain-
| specific practice for the problem)
| fred_tandemai wrote:
| Cheminformatics is such an example. Heavily used in
| computational drug discovery.
| chermi wrote:
| Computational biology/cheminformatics has probably been
| on the most frustrating investments pharma companies have
| made in the past 20 years. There's been waves of optimism
| with many hires, then a slump after reality doesn't match
| optimistic expections, and so on. _This_ time it may
| actually be different, and I myself am in that camp. I 'm
| particularly excited by the discoveries in sampling
| methods that aren't just molecular dynamics. And the
| cellular foundation models for pre-screening drug
| interactions - they aren't quite there yet, but give it
| time.
___________________________________________________________________
(page generated 2025-11-05 23:02 UTC)