# -*- coding: utf8 -*-
# Nicolas Enfon - LSIS DYNI - 08/07/14
from disp_freq_v1 import *
import shutil

#----Chose relevant frequencies----
def disp_energy_var(specnb, showplot=False, sauve=None):
    os.chdir(specroot + str(specnb))
    datfiles = glob.glob('LIFECLEF2014_BIRDAMAZON_XC_WAV_RN*.dat')
    wavfiles = []
    for i in xrange(len(datfiles)):
        wavfiles.append( glob.glob('*'+datfiles[i].split('_')[4]) )
    #os.rmdir('PROFILE_FOR_EACH_RECORDING')
    #shutil.rmtree('PROFILE_FOR_EACH_RECORDING')
    os.mkdir('PROFILE_FOR_EACH_RECORDING')
    for i in xrange(len(datfiles)):
	print '.dat file:  ', datfiles[i]
	energy_profile(datfiles[i], wavfiles[i][0], sauve='PROFILE_FOR_EACH_RECORDING/')
	close('all')

def select_freq(datfile, c_ener=1, c_var=1, threshold1=1, threshold2=1, size=20, skip=True, normalize=True, loaded=False):
    if loaded:
	dat = datfile
    else:
	dat = loadtxt(datfile, delimiter=',')
    if len(dat) == 0:
        print 'Problem: the .dat file (scalogram) is empty'
        return
    if skip:
        dat = dat[1:,:]
    profile = dat.sum(1)
    variance = dat.std(1)
    if normalize:
        profile = profile / norm(profile)
        variance = variance / norm(variance)
    ratio = (c_ener * profile) / (c_var * variance)
    ratio2 = (c_ener * profile) / (c_var * variance) * profile
    difference = (c_ener * profile) - (c_var * variance)
    difference2 = ((c_ener * profile) - (c_var * variance)) * profile
    difference3 = ((c_ener * profile) - (c_var * variance)) * variance
    convratio = convolve(ones(size), ratio, mode='valid')
    convratio2 = convolve(ones(size), ratio2, mode='valid')
    convdiff = convolve(ones(size), difference, mode='valid')
    convdiff2 = convolve(ones(size), difference2, mode='valid')
    convdiff3 = convolve(ones(size), difference3, mode='valid')    

#TODO: faire attention à peut-être enlever carrément les 5 premières et 3 dernières lignes
#TODO: essayer de déouper en enlevant les parties avec beaucoup trop d'insectes

    return ratio,ratio2,difference,difference2,difference3#, convratio.argmax(), convdiff.argmax(), convratio.argmin(), convdiff.argmin()


#----Plots scalo, spectro, scalolines energy & std----
if __name__ == '__main__':
    for i in xrange(80,502):
        print 'Species nb '+str(i)+'...'
        disp_energy_var(i)
			



