@@ -87,26 +87,18 @@ for step in analysis.decisions:
8787
8888### Natural-language description (` describe ` )
8989
90- ` bluenamer.describe(smiles) ` emits structure-driven, reconstructable
91- prose about the molecule: the parent skeleton, heteroatoms, unsaturation,
92- stereochemistry, substituents, and connectivity for atom-by-atom
93- rebuilding. Useful for explainability views and for generating
94- (SMILES, name, description) training tuples:
90+ ` bluenamer.describe(smiles) ` walks the same trace and renders a
91+ deterministic, multi-paragraph explanation of how the name is built.
92+ Useful for explainability views and for generating (SMILES, name,
93+ description) training tuples:
9594
9695``` python
9796from bluenamer import describe
9897
99- d = describe(" CCO" )
100- print (d)
101- # The molecule is built around a 2-atom carbon chain. Within that parent
102- # framework, all parent-chain bonds are single. Attached to the parent is
103- # a hydroxy group at position 1. For reconstruction, number the parent
104- # as follows: 1-2 single.
105-
106- d.facts[0 ].parent_summary # 'a 2-atom carbon chain'
107- d.facts[0 ].substituents # ('a hydroxy group at position 1',)
108- d.facts[0 ].connectivity # ('1-2 single',)
109- d.name # 'ethanol' (handy, from the namer)
98+ d = describe(" CC(=O)Nc1ccccc1" )
99+ print (d) # multi-paragraph prose
100+ d.rules_hit # ('P-44', 'P-45', 'P-41', 'P-61', 'P-67')
101+ d.components[0 ] # DescribedComponent(phase='parse', text='RDKit parsed ...')
110102```
111103
112104Same input → same output. No LLM in the loop.
0 commit comments