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)
	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)
class ParameterSlider:
    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)

    def update_values(self):
        self.p = self.p_range[self.p_index]
        self.r_front = r_front_range[self.r_front_index]
        self.r_back = r_back_range[self.r_back_index]
        self.params = calc_params(p, r_front, r_back)

        #self.qdot = np.array([flow(_, 0, params) for _ in self.q[self.p_index]])

    def plot_fourier(self, q0):
        T1 = 7000
        T2 = 9000
        q0 = q0[T1:T2]
        f = c / L * np.fft.rfftfreq(len(q0), d=1 / fs)
        Q0 = np.fft.rfft(q0 - np.mean(q0))
        self.ax_fourier[0].cla()
        self.ax_fourier[0].plot(f, abs(Q0), color='darkorange')
        self.ax_fourier[0].set_xlim(0, max(f))
        self.ax_fourier[0].set_ylim(0, 0.002)
        self.ax_fourier[0].set_xlabel('Frequency (Hz)')
        self.ax_fourier[0].set_ylabel('Abs(Fourier(u_0(t))',
                                      rotation=0,
                                      labelpad=40)
        self.fig_fourier.canvas.draw()

    def plot_phase_diagram(self, q0, q0dot):
        plt.plot(q0)

    def on_pressure_slide(self, p_index):
        self.p_index = int(p_index)
        self.update_values()

        pressure_slider.valtext.set_text(str(rho * c**2 * self.p) + "(pa)")
        q0 = c * self.q[self.p_index][:, 0]

        self.plot_fourier(q0)

    def on_r_front_slide(self, r_front_index):
        self.r_front_index = int(r_front_index)
        key = [self.r_front_index, self.r_back_index]
        self.q = self.si.get(key)
        self.update_values()

        r_front_slider.valtext.set_text(str(1000 * self.r_front) + "(mm)")
        q0 = c * self.q[self.p_index][:, 0]
        self.plot_fourier(q0)

    def on_r_back_slide(self, r_back_index):
        self.r_back_index = int(r_back_index)
        key = [self.r_front_index, self.r_back_index]
        self.q = self.si.get(key)
        self.update_values()

        r_back_slider.valtext.set_text(str(1000 * self.r_back) + "(mm)")
        q0 = c * self.q[self.p_index][:, 0]
        self.plot_fourier(q0)
from shelf_interface import ShelfInterface

INTERFACE = ShelfInterface()
INTERFACE.run()

Example #5
0
	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()
class ParameterSlider:
	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)

	def update_values(self):
		self.p = self.p_range[self.p_index]
		self.r_front = r_front_range[self.r_front_index]
		self.r_back = r_back_range[self.r_back_index]
		self.params = calc_params(p, r_front, r_back)

		#self.qdot = np.array([flow(_, 0, params) for _ in self.q[self.p_index]])
	
	def plot_fourier(self, q0):
		T1 = 7000 
		T2 = 9000
		q0 = q0[T1:T2]
		f = c / L * np.fft.rfftfreq( len(q0), d=1/fs )
		Q0 = np.fft.rfft( q0 - np.mean(q0) )
		self.ax_fourier[0].cla()
		self.ax_fourier[0].plot(f, abs(Q0), color='darkorange')
		self.ax_fourier[0].set_xlim(0, max(f))
		self.ax_fourier[0].set_ylim(0, 0.002)
		self.ax_fourier[0].set_xlabel('Frequency (Hz)')
		self.ax_fourier[0].set_ylabel('Abs(Fourier(u_0(t))', rotation=0, labelpad=40)
		self.fig_fourier.canvas.draw()

	def plot_phase_diagram(self, q0, q0dot):
		plt.plot(q0)

	def on_pressure_slide(self, p_index):
		self.p_index = int(p_index)
		self.update_values()

		pressure_slider.valtext.set_text(str(rho*c**2*self.p)+"(pa)")
		q0 = c * self.q[self.p_index][:, 0]

		self.plot_fourier(q0)		

	def on_r_front_slide(self, r_front_index):
		self.r_front_index = int(r_front_index)
		key = [self.r_front_index, self.r_back_index]
		self.q = self.si.get(key)
		self.update_values()

		r_front_slider.valtext.set_text(str(1000*self.r_front) + "(mm)")
		q0 = c * self.q[self.p_index][:, 0]
		self.plot_fourier(q0)

	def on_r_back_slide(self, r_back_index):
		self.r_back_index = int(r_back_index)
		key = [self.r_front_index, self.r_back_index]
		self.q = self.si.get(key)
		self.update_values()

		r_back_slider.valtext.set_text(str(1000*self.r_back) + "(mm)")
		q0 = c * self.q[self.p_index][:, 0]
		self.plot_fourier(q0)