Depicting Property Maps — Toolkits — Cpp
The previous chapters give examples about how to depict atom properties either by using glyphs (see Annotating Atoms and Bonds chapter) or projecting them into a 2D molecule surface (see Drawing a Molecule Surface chapter). Grapheme TK can also map atom properties into a 2D grid, called a property map, using a Gaussian function. After the grid is generated, colors are rendered to each cell using the OELinearColorGradient class that interpolates colors between a specified range. The following Listing 1 example demonstrates how to depict partial charges using the property map. After constructing the molecule and preparing it for depiction, the MMFF partial charges are calculated. These partial charges are attached to the corresponding atom as generic data with a specific tagname. A OE2DPropMap object is then generated by specifying three colors: When the OE2DPropMap::Render method is called with the tagname, the properties that were attached to the atoms as generic data are retrieved and a 2D grid is generated along with an OELinearColorGradient object that is used to assign colors to the cells of the grid. The colored grid is then rendered into the below layer of the OE2DMolDisplay object, i.e., it appears underneath the molecular diagram. The image created by Listing 1 is shown in Figure: Example of depicting a property map. When the OE2DPropMap::Render method is called, the color gradient is initialized by searching for the minimum and maximum values by the given tagname. This means that when more than one molecule is depicted, each depiction will have its own independent value range. (See Figure: Example of depicting a property map). In the Listing 2 example, the value range of the property map is pre-set by identifying the minimum and maximum atom partial charges for a whole molecule set. See the result in Figure: Example of depicting property maps in the same value range. Each black box around the color gradient legend indicates the range of the atom partial charges for the corresponding molecule. The above examples show how to project atom properties (such as partial charges) into the property map. However, the OE2DPropMap class can also be used to visualize bond properties by attaching a value to each bond as a generic data using a tagname. When the OE2DPropMap::Render method is called with the same tagname, the property that was attached to a bond is retrieved and projected at the middle of that bond before applying a Gaussian function to blur out the 2D grid underneath the molecular graph. The Table: Depicting atom or/and bond properties table shows the differences between visualizing atom or/and bond properties using the OE2DPropMap class. Source.