162 lines
5.5 KiB
Python
162 lines
5.5 KiB
Python
from functionssimulation import find_lm
|
|
from functionssimulation import find_periods
|
|
from functionssimulation import integrate_chirp
|
|
from functionssimulation import global_maxima
|
|
from functionssimulation import find_lm
|
|
from functionssimulation import find_dev
|
|
from functionssimulation import remove_all_spines
|
|
import matplotlib.pyplot as plt
|
|
import numpy as np
|
|
from IPython import embed
|
|
import matplotlib as matplotlib
|
|
import math
|
|
import scipy.integrate as integrate
|
|
from scipy import signal
|
|
from scipy.interpolate import interp1d
|
|
from scipy.interpolate import CubicSpline
|
|
import scipy as sp
|
|
import pickle
|
|
from scipy.spatial import distance
|
|
from myfunctions import *
|
|
import time
|
|
from matplotlib import gridspec
|
|
from matplotlib_scalebar.scalebar import ScaleBar
|
|
import matplotlib.mlab as ml
|
|
import scipy.integrate as si
|
|
import pandas as pd
|
|
#embed()
|
|
from functionssimulation import pl_eods
|
|
from functionssimulation import single_stim
|
|
from functionssimulation import find_times
|
|
|
|
|
|
#embed()
|
|
if __name__ == "__main__":
|
|
delta_t = 0.014 # ms
|
|
interest_interval = delta_t * 1.2
|
|
bef_c = interest_interval / 2
|
|
aft_c = interest_interval / 2
|
|
sigma = delta_t / math.sqrt((2 * math.log(10))) # width of the chirp
|
|
size = [120] # maximal frequency excursion during chirp / 60 or 100 here
|
|
phase_zero = [0] # phase when the chirp occured (vary later) / zero at the peak o a beat cycle
|
|
phase_zero = np.arange(0,2*np.pi,2*np.pi/10)
|
|
eod_fr = 500 # eod fish reciever
|
|
a_fr = 1 # amplitude fish reciever
|
|
amplitude = a_fe = 0.50 # amplitude fish emitter
|
|
factor = 200
|
|
sampling = eod_fr * factor
|
|
sampling_fish = 500
|
|
start = 510
|
|
end = 3500
|
|
step = 500
|
|
win = 'w2'
|
|
minus_bef = -15
|
|
plus_bef = -10
|
|
eod_fe = np.array([10, 510,1010,1510])
|
|
eod_fe = np.array([560])
|
|
eod_fr = 500
|
|
beats = eod_fe - eod_fr
|
|
beat_corr = eod_fe % eod_fr
|
|
beat_corr[beat_corr > eod_fr / 2] = eod_fr - beat_corr[beat_corr > eod_fr / 2]
|
|
#plot_eod(beat_corr, minus_bef, plus_bef,2,2,a_fe, delta_t, a_fr, size, beat_corr, 0, 0, a_fe, phase_zero, deviation_ms, eod_fe, deviation_dp, eod_fr, sampling, factor,fs = [6.2992, 5],shift_phase = (2 * np.pi) / 4)
|
|
ax = {}
|
|
s = 0
|
|
times_width = 1.5
|
|
times_up = 1
|
|
fig = plt.figure(figsize = [6.7,1.8*times_up])
|
|
beat_corr_col = 'goldenrod'
|
|
df_col = 'steelblue'
|
|
beat_corr_col = 'no'
|
|
df_col = 'no'
|
|
colors = ['red']
|
|
sampling_rate = sampling
|
|
nfft = 4096
|
|
row = 1
|
|
col = 1
|
|
p = 0
|
|
delta_t = 0.014 # ms
|
|
x = [ 1.5]
|
|
deviation_ms, deviation_s, deviation_dp = find_dev(x, sampling)
|
|
d = 0
|
|
e = 0
|
|
shift_phase = 0
|
|
ax = {}
|
|
lower = gridspec.GridSpec(1, 5,width_ratios = [1,0.33,1,0.33,1],left = 0.13,hspace = 0.5, wspace = 0.1, bottom = 0.27)
|
|
#ax = plot_beat_corr(ax,lower,beat_corr_col = beat_corr_col,df_col = df_col,ax_nr = 0)
|
|
#plt.grid()
|
|
left_c = minus_bef * delta_t * sampling
|
|
right_c = plus_bef * delta_t * sampling
|
|
time, time_cut, cut = find_times(left_c, right_c, sampling, deviation_dp[d] / (1000 * sampling))
|
|
time_fish_r = time * 2 * np.pi * eod_fe[0]
|
|
eod_fish_e = a_fe * np.sin(time_fish_r)
|
|
|
|
nr = 1
|
|
ax[nr] = plt.subplot(lower[nr])
|
|
plt.scatter(0,0, 200,marker = '+',color = 'black')
|
|
plt.xlim([-50,100])
|
|
#plt.ylim([-200, 200])
|
|
remove_all_spines(ax, nr)
|
|
ax[nr].set_yticks([])
|
|
ax[nr].set_xticks([])
|
|
ax[nr] .spines['right'].set_visible(False)
|
|
ax[nr] .spines['top'].set_visible(False)
|
|
|
|
#embed()
|
|
nr = 0
|
|
ax[nr] = plt.subplot(lower[nr])
|
|
plt.ylabel('[mv]')
|
|
#plt.xlabel('Time [ms]')
|
|
plt.xlabel('Time [ms]')
|
|
plt.title('Receiver f = '+str(eod_fr)+' Hz')
|
|
time_fish_r = time * 2 * np.pi * eod_fr
|
|
eod_fish_r = a_fr * np.sin(time_fish_r)
|
|
plt.plot(time * 1000-time[0]* 1000,eod_fish_r,color = 'silver')
|
|
ax[nr].set_xlabel('Time [ms]')
|
|
ax[nr] .spines['right'].set_visible(False)
|
|
ax[nr] .spines['top'].set_visible(False)
|
|
|
|
|
|
|
|
|
|
|
|
nr = 3
|
|
ax[nr] = plt.subplot(lower[nr])
|
|
#plt.scatter(0,0, 200,marker = '+',color = 'black')
|
|
plt.plot([-35, 15],[20,20], 10, color='black',linewidth = 3)
|
|
plt.plot([-35, 15],[-20,-20], 10, color='black',linewidth = 3)
|
|
ax[nr] .spines['right'].set_visible(False)
|
|
ax[nr] .spines['top'].set_visible(False)
|
|
|
|
plt.xlim([-50,100])
|
|
#plt.ylim([-200, 200])
|
|
remove_all_spines(ax, nr)
|
|
ax[nr].set_yticks([])
|
|
ax[nr].set_xticks([])
|
|
plt.ylim([-200, 200])
|
|
|
|
fmax,lims,ax = single_stim(ax,colors, row, col, eod_fr, eod_fe,e,lower, s = s, p = p, d = d, df_col = df_col, factor = factor, beat_corr_col = beat_corr_col, nfft = nfft, minus_bef = minus_bef, delta_t = delta_t, sampling = sampling,
|
|
plus_bef = plus_bef,a_fe = a_fe, a_fr = a_fr, phase_zero = phase_zero, shift_phase = shift_phase, size = size, a_fe = a_fe,ax_nr = 4,lw_whole = 1,y = 'no')
|
|
|
|
#embed()
|
|
minumum = np.min([lims, eod_fish_e, eod_fish_r])
|
|
maximum = np.max([lims, eod_fish_e, eod_fish_r])
|
|
plt.ylim([minumum,maximum])
|
|
|
|
|
|
nr = 2
|
|
ax[nr] = plt.subplot(lower[nr])
|
|
#plt.ylabel('[mv]')
|
|
|
|
plt.title('Emitting f = ' + str(eod_fe[0])+' Hz')
|
|
plt.plot(time * 1000-time[0]* 1000,eod_fish_e,color = 'silver')
|
|
plt.xlabel('Time [ms]')
|
|
plt.ylim([minumum, maximum])
|
|
ax[0].set_ylim([minumum, maximum])
|
|
ax[nr] .spines['right'].set_visible(False)
|
|
ax[nr] .spines['top'].set_visible(False)
|
|
ax[2].set_ylim([minumum, maximum])
|
|
|
|
|
|
plt.savefig('introamtuning.pdf')
|
|
plt.savefig('../highbeats_pdf/introamtuning.pdf')
|
|
plt.show() |