public static ROMol Parse(string smarts) { if (smarts == null) { throw new ArgumentNullException(nameof(smarts)); } var pattern = SmartsCache.GetOrAdd(smarts, a_smarts => { ROMol query = Chem.MolFromSmarts(a_smarts); if (query == null) { return(nullSmarts); } query.setProp("source", "SMARTS"); return(query); }); if (object.ReferenceEquals(pattern, nullSmarts)) { return(null); } return(pattern); }
public TempFile GenerateTemporary(string text, double width, double height) { var min = Math.Min(width, height); if (min < Config.MinimumEdgePixels) { double scale = Config.MinimumEdgePixels / min; width *= scale; height *= scale; } RWMol mol = null; mol = Chem.MolFromSmiles(text); if (mol == null) { mol = Chem.MolFromSmarts(text); } if (mol == null) { return(null); } var tempFile = new TempFile("." + Config.ImageType); var filename = tempFile.FileName; MolToFile(mol, filename, new Tuple <int, int>((int)width, (int)height)); if (filename.EndsWith(".svg")) { string svg; using (var r = new StreamReader(filename)) { svg = r.ReadToEnd(); } if (ImageBGIsTransparent()) { using (var r = new StreamWriter(filename)) { r.Write(re_rect_tag.Replace(svg, "")); } } } return(tempFile); }