5
$\begingroup$
MoleculePlot@Molecule["O=C(C1CCC1)S[C@@H]1CCC1(C)C"]

This is a documented example usage of MoleculePlot, but it returns a Graphics expression that is gray everywhere.

PacletFind["Chemistry"][[1]]["Version"]
(* 12.2.31 *)

I confirmed that this is a bug. It occurs in certain situations. The following code produces the scene I've seen:

With[{def = Options[$FrontEnd, DefaultStyleDefinitions]},
  DownValues@Chemistry`MoleculePlot`LabelGraphics`Private`labelGraphics = Last@DownValues@Chemistry`MoleculePlot`LabelGraphics`Private`labelGraphics};
  SetOptions[$FrontEnd, DefaultStyleDefinitions->"Package.nb"];
  Print@MoleculePlot@Molecule["O=C(C1CCC1)S[C@@H]1CCC1(C)C"];
  SetOptions[$FrontEnd, def];
]

UTC202201231306 update:

This issue still exists for newest Chemistry-13.0.25. And the workaround from the answer still works.

$\endgroup$
0
6
$\begingroup$

This issue seems to happen when the default style definitions have a different background color. This will be fixed in an upcoming version. Either of the following should serve as a workaround:

Molecule;
SetOptions[Chemistry`MoleculePlot`MoleculePlot2D`Private`MoleculePlotMethod, "TextGraphics" -> False]

or

With[{
  ilg = Chemistry`MoleculePlot`LabelGraphics`Private`iLabelGraphics2,
  tfc = Chemistry`MoleculePlot`LabelGraphics`Private`transformFilledCurves},
  Molecule;
  DownValues[ilg] = 
   DownValues[ilg] /. 
    tfc -> Composition[Cases[#, {__, _FilledCurve}] &, tfc];
 ]
$\endgroup$
0
$\begingroup$

Chemistry`MoleculePlot`LabelGraphics`Private`labelGraphics use UsingFrontEnd and ExportPacket to generate a Graphics of a string, which make the result being dependent on the front-end option Background. When it's not None, the front-end will generate a Polygon of that color, which covers the whole MoleculePlot.

It does memorization. For a correct output, we have to clean the wrong cache of it by assigning DownValues.

I'm not sure of whether it had been fixed in newer versions.

$\endgroup$
2
  • 1
    $\begingroup$ I had to edit the post, since the way it was written it rendered my front end not usable (Options[symbol, optionName] returns optionName -> value). I think what you have written here should be added to the question rather than as an answer. Finally, are you saying the issue only comes up when you have the stylesheet set to "Package.nb"? $\endgroup$
    – Jason B.
    Oct 19 '21 at 16:53
  • $\begingroup$ @JasonB. Thanks for the edit. I wrote the method to replicate it in the answer because I do not know how to replicate it before being able to answer this question. I'll move it to the question to help readers replicate it eazily. $\endgroup$
    – rnotlnglgq
    Oct 20 '21 at 4:41

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.