In [ ]:
import numpy as np
import pandas as pd
import re

%matplotlib inline
import matplotlib as mpl
import matplotlib.pyplot as plt

In [ ]:
def get_data(filepath, i=-1):
    data = pd.read_csv(filepath)

    reactions = []
    species = []
    for column in data.columns:
        if 'dln[k' in column:
            reactions.append((column, data[column].iloc[-1]))
        elif 'dG[' in column:
            species.append((column, data[column].iloc[-1]))

    reactions.sort(key=lambda x: abs(x[1]), reverse=True)
    species.sort(key=lambda x: abs(x[1]), reverse=True)
    
    return reactions, species

In [ ]:
def plot_sens(data, n, xlab, ylab=None):
    plt.style.use('seaborn-paper')
    plt.rcParams['axes.labelsize'] = 16
    plt.rcParams['xtick.labelsize'] = 12
    plt.rcParams['ytick.labelsize'] = 12

    fig, ax = plt.subplots(figsize=(3, 3))

    selected = data[:n]

    labels, values = zip(*selected)
    pos = np.arange(len(labels))

    ax.barh(pos, values, color='k')
    
    #ax.set_aspect('equal', adjustable='box')

    ax.invert_yaxis()
    ax.set_yticks(pos)
    if ylab is not None:
        ax.set_yticklabels(ylab)
    else:
        ax.set_yticklabels(labels)

    ax.set_xlabel(xlab)

In [ ]:
filepath = '/home/mjliu/Documents/Models/Naphthalene/acetylene/run10/sensitivity/sensitivity_1_SPC_1.csv'

reactions, species = get_data(filepath)

ylab_rxn = [
    '1-iodonaphthalene + H = naphthalene + I',
    '1-naphthyl + C2H2 = 1-vinylnaphthalene',
    '1-naphthyl + H = naphthalene',
    'H + C2H3 = H2 + H2CC',
    'H + C2H2 (+M) = C2H3 (+M)',
]

ylab_spc = [
    'C2H2',
    'naphthalene',
    'H',
    'C2H3',
    'C1=CC2CC=C1c1ccccc12',
]

plot_sens(reactions, 5, 'dln(c)/dln(k)')#, ylab_rxn)
plot_sens(species, 5, 'dln(c)/dG (mol/kcal)')#, ylab_spc)

In [ ]:
filepath = '/home/mjliu/Documents/Models/Naphthalene/acetylene/run10/sensitivity/sensitivity_1_SPC_5.csv'

reactions, species = get_data(filepath)

ylab_rxn = [
    '1-naphthyl + C2H2 = 1-vinylnaphthalene',
    '1-iodonaphthalene + H = naphthalene + I',
    '2-naphthyl = 1-naphthyl',
    '1-naphthyl + H = naphthalene',
    '1-vinylnaphthalene = [CH]1C=CC2C=Cc3cccc1c32',
]

ylab_spc = [
    '1-naphthyl',
    '2-naphthyl',
    '1-vinylnaphthalene',
    '[CH]1C=C2C=CC1c1ccccc12',
    'H',
]

plot_sens(reactions, 5, 'dln(c)/dln(k)')#, ylab_rxn)
plot_sens(species, 5, 'dln(c)/dG (mol/kcal)')#, ylab_spc)

In [ ]: