#!/usr/bin/env python

import numpy as np
import matplotlib.pyplot as plt
import sys


def plot(table, title='', log=False):
    plt.figure()
    plt.suptitle(title)

    plt.subplot(111)
    if log:
        plt.xscale('log')
    plt.title('EMD' + ' '*10, loc='right')

    plt.plot(table[0], table[1], color='#92182b')
    plt.tick_params(axis='y', labelcolor='#92182b')
    plt.ylabel('average', color='#92182b')
    plt.ticklabel_format(style='sci', axis='y',
                         scilimits=(0, 0), useMathText=True)

    twin = plt.twinx()
    twin.plot(table[0], table[2], color='gray')
    twin.tick_params(axis='y', labelcolor='gray')
    twin.set_ylabel('standard deviation', color='gray')
    twin.ticklabel_format(style='sci', axis='y',
                          scilimits=(0, 0), useMathText=True)
    plt.tight_layout()


file = sys.argv[1] if len(sys.argv) > 1 else 'noiseless'
table = np.loadtxt('ex-6/plots/emd-' + file + '.txt')

if file == 'noiseless':
    plot(table[:31].T,   title=r'noise at $\sigma_N = 0.005$', log=True)
    plot(table[31:51].T, title=r'noise at $\sigma_N = 0.005$')
    plot(table[51:].T,   title=r'noise at $\sigma_N = 0.01$')
else:
    plot(table[:20].T,   title=r'noise at $\sigma_N = 0.005$')
    plot(table[20:40].T, title=r'noise at $\sigma_N = 0.005$')
    plot(table[40:].T,   title=r'noise at $\sigma_N = 0.01$')

plot(table[:27].T, title='noiseless', log=True)
plot(table[27:47].T, title=r'noise at $\sigma=0.005$')
plot(table[47:67].T, title=r'noise at $\sigma=0.01$')
plot(table[67:].T, title=r'noise at $\sigma=0.05$')
plt.show()