# -*- coding: utf-8 -*- 
#Nicolas Enfon - 01/05/14 - LSIS DYNI
import numpy as np
from matplotlib.pyplot import *
from scipy.io.wavfile import read, write
from pylab import norm
import os, glob

#GET THE CLICKS
#initial = os.getcwd()
initial = '/net/nas-lsis-3/SABIOD/public_data/ANTARESV3_21'
click_folder = initial + '/Antares_067528.21/'
os.chdir(click_folder)#we move to the click folder
click_wav = glob.glob(os.getcwd()+'/*1.wav')[0]#select the click + its path
#Reading of the input audio data
sampling_rate, signal = read(click_wav)
#Extracting and normalizing the clicks in the signal
index1 = (np.array((0.07975, 0.07995)) * sampling_rate).astype(int)
index2 = (np.array((1.3092,1.3094)) * sampling_rate).astype(int)
index3 = (np.array((1.55345, 1.55375)) * sampling_rate).astype(int)
indexall = [index1, index2, index3]
#--------------
#indexes for antares report:
index = (np.array((2.33,2.34)) * sampling_rate).astype(int)
click = signal[index[0]:index[1]]
click = click / float((click**2).sum())
fig=figure(figsize=(25,15))
ax=subplot(211)
plot(click)
xlim(0,len(click))
t=ax.get_xticks()/float(sampling_rate)
ax.set_xticklabels(t)
xlabel('Time (s)')
ylabel('Signal')
savefig('click.png')
#-------------
clicks = [   signal[index1[0]:index1[1]], signal[index2[0]:index2[1]], signal[index3[0]:index3[1]]   ]
for i in xrange(len(clicks)):
        clicks[i] = clicks[i] / float( (clicks[i]**2).sum() )
os.chdir(initial)
fig = figure(figsize=(25,20))
for i in xrange(len(clicks)):
	ax = subplot(len(clicks), 1, i+1)
	plot(clicks[i])
	xlim(0,len(clicks[i]))
	t=ax.get_xticks()/float(sampling_rate)*1000
	ax.set_xticklabels(t)
	xlabel('Time (ms)')
	ylabel('Signal')
	title('position: '+str(indexall[i][0]/float(sampling_rate))+'s')
savefig('3_clicks_antares67528.png')
#convolution signal * click
#conv = []
#for i in xrange(len(clicks)):
#        conv.append( np.convolve(signal,clicks[i],mode='same') )

#Folders with TP Ziphius
TP = ['Antares_066447.21-part2', 'Antares_067528.21-part1', 'Antares_066545.21-part1']
#Folders with FP Ziphius
FP = ['Antares_066471.21-part1', 'Antares_067209.21-part1', 'Antares_067489.21-part4', 'Antares_066588.21-part6']
FPtitle = ['pings','confondu avec cachalot', 'bruit', 'bruit']
#Folders with mixed sounds
MS = ['Antares_067251.21-part2', 'Antares_067567.21-part1','Antares_067230.21-part3', 'Antares_066699.21-part5']
MStitle = ['Z & P', 'Z & P','Z & pings', 'Z & pings']

figure(figsize=(65,25))
for i in xrange(len(TP)):
	sampling_rate, signal = read( glob.glob( initial+'/'+TP[i].split('-')[0]+'/*'+TP[i].split('-')[1]+'.wav'   )[0]  )
	subplot(2*len(TP),1,i*2+1)
	plot(signal)
	xlim(0,len(signal))
	title('signal of '+TP[i])
	subplot(2*len(TP),1,i*2+1+1)
	plot(np.convolve(signal,clicks[2],mode='same'))
	xlim(0,len(signal))
	title('True Positives: Convolved signal of '+TP[i])
savefig('TP.png')

figure(figsize=(65,25))
for i in xrange(len(FP)):
	sampling_rate, signal = read( glob.glob( initial+'/'+FP[i].split('-')[0]+'/*'+FP[i].split('-')[1]+'.wav'   )[0]  )	
	subplot(2*len(FP),1,i*2+1)
	plot(signal)
	xlim(0,len(signal))
	title('signal of '+FP[i])
	subplot(2*len(FP),1,i*2+1+1)
	plot(np.convolve(signal,clicks[2],mode='same'))
	xlim(0,len(signal))
	title('False Positives: convolved signal of '+FP[i]+' -- '+FPtitle[i])
savefig('FP.png')

figure(figsize=(65,25))
for i in xrange(len(MS)):
    sampling_rate, signal = read( glob.glob( initial+'/'+MS[i].split('-')[0]+'/*'+MS[i].split('-')[1]+'.wav'   )[0]  )
    subplot(2*len(MS),1,i*2+1)
    plot(signal)
    xlim(0,len(signal))
    title('signal of '+MS[i])
    subplot(2*len(MS),1,i*2+1+1)
    plot(np.convolve(signal,clicks[2],mode='same'))
    xlim(0,len(signal))
    title('Mixed signals: convolved signal of '+MS[i] + ' -- '+MStitle[i])
savefig('MS.png')
