예제 #1
0
def left_right_power():
    test = ProcessSignal('191011')
    csv_types = test.read_type_file()
    csv_signals = csv_types['signal_files']
    csv_signal_nums = csv_types['signal_nums']
    excel_dicts = test.read_excel(csv_signal_nums)['numbers']
    magnetron_nums = excel_dicts['magnetron']
    print('All magnetron nums:', magnetron_nums)

    m_1_nums = []
    m_2_nums = []

    for num in magnetron_nums:
        if 66 <= int(num) < 112:
            m_1_nums.append(num)
        elif 112 <= int(num) < 152:
            m_2_nums.append(num)
    m_lists = [m_1_nums, m_2_nums]
    labels_list = ['№2, 3', '№2, 3, A']

    for i, m_list in enumerate(m_lists):
        e_left = []
        e_right = []
        pl_d = []
        fig = plt.figure(num=1, dpi=200, figsize=[11.69, 8.27])
        ax = fig.add_subplot(111)
        ax.set_prop_cycle(color=['orange', 'indigo'])
        for signal in csv_signals:
            num = signal[3:6]
            if num in m_list:
                file = test.open_file(signal, reduced=True)
                u = file['voltage']
                t = file['time']
                dt = file['time_resolution']
                u_highpass = test.highpass(t, u, 2.769e9)
                u_lowpass = test.lowpass(t, u, 2.706e9)

                fft_pass = test.fft_signal(t, u, dt)
                freqs = fft_pass['frequency']
                amps = fft_pass['amplitude']
                high_inds = freqs > 2.769e9
                low_inds = freqs < 2.709e9

                high_freqs = freqs[high_inds]
                low_freqs = freqs[low_inds]

                high_amps = amps[high_inds]
                low_amps = amps[low_inds]

                e_high = test.e_square(high_freqs, high_amps)
                e_low = test.e_square(low_freqs, low_amps)
                '''
                e_high = test.e_square(t, u_highpass)
                e_low = test.e_square(t, u_lowpass)
                '''
                pl_density = test.read_excel(csv_signal_nums)['dicts'][num]['Ток плазмы, А']

                #plt.plot(fft_high['frequency'], fft_high['amplitude'], color='blue')
                #plt.plot(high_freqs, high_amps, color='red')
                #plt.plot(low_freqs, low_amps, color='k')
                e_left.append(e_low)
                e_right.append(e_high)
                pl_d.append(pl_density)
                #plt.show()
        pl_d = np.array(pl_d)
        inds = np.argsort(pl_d)
        pl_d = pl_d[inds]
        e_left = np.array(e_left)[inds]

        line1, = ax.plot(pl_d, e_left, marker='o')
        line1.set_label('f < 2,72 GHz')
        line2, = ax.plot(pl_d, e_right, marker='o')
        line2.set_label('f > 2,76 GHz')

        ax.set_ylim(bottom=0)
        ax.set_xlim(left=5)
        ax.set_xlabel(r'$Plasma\/density, arb.units $', fontsize=16)
        ax.set_ylabel(r'$\int E^2 dt $', fontsize=16)
        ax.legend(loc='best', fontsize=12)
        ax.grid(which='both', axis='both')
        ax.set_title('191011, {}'.format(labels_list[i]), fontsize=20)
        mean_png = test.pics_path / 'left_right_power{}.png'.format(i)
        fig.savefig(mean_png)
        plt.close(fig)
        plt.show()
 file = test.open_file(csv_signal, reduced=False)
 t, u = file['time'], file['voltage']
 cut_file_inds = np.logical_and(t > 70e-9, t < 332e-9)
 t_cut, u_cut = t[cut_file_inds], u[cut_file_inds]
 simple_cut_integral = np.round(test.e_square(t_cut, u_cut) / 1e-8, 2)
 pl_density = test.read_excel(csv_signal)['dicts'][num]['Ток плазмы, А']
 #plt.plot(t, u)
 #plt.title(f'{u[0], u[-1], t[-1]-t[0]}')
 #plt.show()
 dt_2 = (t[-1] - t[0])**2
 fft_old = fft_amplitude_old(t, u)
 amps_old, freqs_old = fft_old['amplitude'], fft_old['frequency']
 fft_new = fft_amplitude_new(t, u)
 amps_new, freqs_new = fft_new['amplitude'], fft_new['frequency']
 integral_u = np.round(test.e_square(t, u) / 1e-8, 2)
 fft_signal = test.fft_signal(t, u, np.abs(t[1] - t[0]))
 simple_amps_fft, simple_freqs_fft = fft_signal['amplitude'], fft_signal[
     'frequency']
 simple_fft_integral = np.round(
     dt_2 * test.e_square(simple_freqs_fft, simple_amps_fft) / 2e-8, 2)
 integral_amp_old = np.round(
     dt_2 * test.e_square(freqs_old, amps_old) / 2e-8, 2)
 integral_amp_new = np.round(
     dt_2 * test.e_square(freqs_new, amps_new) / 2e-8, 2)
 integral_amp = test.e_square(freqs_new, amps_new)
 plt.plot(freqs_old, amps_old, color='k')
 plt.plot(freqs_new, amps_new, color='red')
 plt.xlim(left=2.7e9, right=2.78e9)
 plt.title(
     f'num = {num}, e_2 = {integral_u}, amp_2 = {simple_cut_integral}, peak={np.max(amps_new)}'
 )