Quickstart

Example 1

from plotProfile import ReactionProfilePlotter

energy_sets = {
    "Pathway A": [0.00, -2.0, 10.2, 1.4, -1.5, 2.0, -7.2],
    "Pathway B": [None, -2.0, 6.2, 4.3, 5.8, 2.0],
    "Pathway C": [None, -2.0, -6.8,-6.8, None, -2.0],
    "diastereomer": [None, None, 12.2],
    "diastereomer2": [None, None, 9.8, 9.8]
}
annotations = {
    'Step 1': (0,3),
    'Step 2': (3,5),
    'Step 3': (5,6),
}

plotter = ReactionProfilePlotter(dashed=["Pathway C"])
plotter.plot(energy_sets, annotations=annotations, filename="../images/profile1")

Passing in annotations for labelling of the reaction profile:

  • this is done in the plotting function rather than the class

  • using dictionary with keys of labels and a tuple of the start and end x-indices

  • allowing for multiple plots of the same style with different annotations

Example 1

Example 2

Using style="presentation" which sets a larger figsize=(X,X) with thicker lines and a larger font size:

plotter = ReactionProfilePlotter(style="presentation", dashed=["Pathway B"], point_type='dot', desaturate=False, colors='Blues_r', show_legend=False, curviness=0.5, x_label='Reaction Profile', y_label='Free Energy (kcal/mol)')
plotter.plot(energy_sets, filename="../images/profile2")

A variety of other paremters can be tuned for the plotting, including:

  • axes="box|y|x|both|None"

  • curviness=0.42 - reduce for less curve and vice versa

  • colors=["list","of","colors"]|cmap - specify colour list or colour map

    • if the colour list is too short then colours will be repeated.

    • if the cmap is invalid, viridis will be set as a default

  • show_legend=Bool

  • units="kj|kcal"

  • energy="e|electronic|g|gibbs|h|enthalpy|s|entropy|"

  • x_label and y_label can be used to set cutoms axis labels, superceeding units or energy

Example 2

Example 3

plotter = ReactionProfilePlotter(style="straight", figsize=(6,4), dashed=["Pathway C"], point_type='bar', annotation_color='black', axes='y', colors=['midnightblue', 'slateblue', 'darkviolet'], energy='electronic', units='kj', annotation_below_arrow=True, dash_spacing=5.0, desaturate=False)
plotter.plot(energy_sets, annotations=annotations, filename="../images/profile3", exclude_from_legend=["Pathway B"], include_keys=["Pathway A", "Pathway B", "Pathway C", "diastereomer"])
  • Straight lines set in a style, which can also be done by passing in curviness=0

  • Labels can be placed below the annotation arrow

  • Some parameters regarding the plotting data can be tuned in ReactionProfilePlotter.plot:

    • include_keys - only some of the energy_sets keys() included in the plot

    • exclude_from_legend - excluded one of the energy_sets key from the legend

Example 3

Example 4

energy_sets = {
    "1": [-3.0, 12.5, 2.9, 0.0, 1.8, 10.5, 2.9]
}

annotations = {
    'Step 1': (0,3),
    'Step 2\nAlternate': (3,6),
}

point_labels = {
    "1": [None, "TS1", None, "Int1", None, "TS2"]
}

plotter = ReactionProfilePlotter(figsize=(4.5,4), axes='box', show_legend=False)
plotter.plot(energy_sets, annotations=annotations, point_labels=point_labels, filename="../images/profile4")
  • Point labels can be also added by passing point_labels to ReactionProfilePlotter.plot

  • Annotations can accommodate newline characters \n and spacing will be adjusted automatically

Example 4

Example 5

energy_sets = {
    "1": [-3.0, 12.5, 2.9, 0.0, 1.8, 10.5, 2.9]
}

annotations = {
    'Step 1': (0,3),
    'Step 2\nAlternate': (3,6),
}

point_labels = {
    "1": [None, "TS1", None, "Int1", None, "TS2"]
}

plotter = ReactionProfilePlotter(figsize=(4.5,4), axes='box', curviness=0.5, show_legend=False, point_type='bar', bar_length=0.3, bar_width=3, connect_bar_ends=False, dashed=["1"], dash_spacing=1.5)
plotter.plot(energy_sets, annotations=annotations, point_labels=point_labels, filename="../images/profile5")
  • Bar lengths and widths can be adjusted

  • Default line/curve behaviour with bars is to connect at the edges, this can be turned off with connect_bar_ends=False

  • Dash spacing of the line can be changed with dash_spacing

Example 5