def __init__(self, p_range, r_front_range, r_back_range, fig_fourier,
                 ax_fourier):
        self.p_range = p_range
        self.r_front_range = r_front_range
        self.r_back_range = r_back_range
        self.fig_fourier = fig_fourier
        self.ax_fourier = ax_fourier

        self.p_index = 0
        self.r_front_index = 0
        self.r_back_index = 0

        self.si = ShelfInterface(db_path)
        key = [self.r_front_index, self.r_back_index]
        self.q = self.si.get(key)
        q0 = self.q[self.p_index][:, 0]

        self.plot_fourier(q0)
from shelf_interface import ShelfInterface

INTERFACE = ShelfInterface()
INTERFACE.run()

	return q

def grouper(n, iterable, fillvalue=None):
    "grouper(3, 'ABCDEFG', 'x') --> ABC DEF Gxx"
    args = [iter(iterable)] * n
    return izip_longest(fillvalue=fillvalue, *args)

def find_r_indices(r_front_range, r_back_range, n_cores):
	r= [(r_front,r_back) for r_front in r_front_range for r_back in r_back_range]
	r_indices = [[i,j] for i in range(len(r_front_range)) for j in range(len(r_back_range))]
	r_indices = list(grouper(n_cores, r_indices))
	r_indices[-1] = [i for i in r_indices[-1] if i is not None]

	return r_indices

si = ShelfInterface(db_path)
si.insert('params', params)
si.insert('p_range', p_range)
si.insert('r_front_range', r_front_range)
si.insert('r_back_range', r_front_range)
n_cores = 4
#r_indices = find_r_indices(r_front_range, r_back_range, n_cores)
try:
	for idx in r_indices:
		q = Parallel(n_jobs=n_cores)(delayed(vary_pressure)
			(p_range, r_front_range[i[0]], r_back_range[i[1]]) for i in idx)
		map(si.insert, idx, q)

finally:
	np.save('idx', idx)
	si.close()