''' Various way to plot 1D and 2D histograms '''
#Nicolas Enfon - LSIS DYNI - 28/04/2014
from matplotlib.pyplot import *
import numpy as np
from math import factorial as fact

fulldata = 'ToutReadmeAntaresV3_21houronly.txt'
#sunname = 'sunrise_sunset_2012.csv'
#moonname = ''

#import data
data = np.loadtxt(fulldata, delimiter=',')
#remove NaN
sansNaN=[nb for nb in avecNaN if np.isnan(nb) == False]

#Hist 1D
def hist1dall(data, figx=10, figy=10, bins=100, savename=None):
    figure(figsize=(10,10))
    for i in xrange(len(data[0])):
        subplot(len(data[0]),1,i)
        hist(data[:,i], bins=bins)
	title('data['+str(i)+'])
    if savename != None:
	savefig(savename)

#Hist 2D
def hist2dall(data, figx=10, figy=10, bins=100, savename=None):
    '''plots all the possible pairs of comparison'''
    figure(figsize=(figx,figy))
    combin = lambda k,n: fact(int(n))//(fact(int(k))*fact(int(n-k)))
    index = 1
    for i in xrange(len(data[0]) - 1):
        for j in xrange(i+1, len(data[0])):
	    subplot(combin(2,len(data[0])), 1, index)
	    index += 1
	    H, xedges, yedges = np.histogram2d(data[:,i],data[:,j],bins=bins)
	    imshow(H, interpolation='nearest', origin='low', extent=[xedges[0], xedges[-1], yedges[0], yedges[-1]])
	    title('data['+str(i)+'] VS data['+str(j)+']')
    if savename != None:
	savefig(savename)
#------------
#Prepare data
#------------
part, filenb, day_raw,month,h1,h2,wavsq,captured_ratio,ziphius,physeter=data[:,0],data[:,1],data[:,2],data[:,3],data[:,5],data[:,6],data[:,7],data[:,8],data[:,11],data[:,15]
#We reshape the dates, to have them continuously arranged from 1 to 61
day = []
for i in xrange(len(month)):
    if month[i] == 8:
	day.append(0)
    else:
	day.append(day_raw[i] + (month[i] - 9) * 30 )
#conversions
wavsq = np.log10(wavsq)
ziphius = 0.000512 * ziphius
physeter = 0.000512 * physeter
#Create the moon data: first 10 days are full moon, then nothing ...
moon = np.zeros(len(day))
i = day.index(9)
moon[:i] = 1
j = day.index(23)
k = day.index(38)
moon[j:k] = 1
l = day.index(52)
moon[l:] = 1

total = [part, filenb, day, h1, h2, wavsq, captured_ratio, ziphius, physeter, moon]
#Then np.savetxt('file_day_h1_h2_db_ratio_z_p_moon.2.txt',total,delimiter=',')


#To get the histogram for Sperm Whale:
hist(data[:,1],bins=100,range=(0.05,2))
#Ziphius:
hist(data[:,0],bins=40,range=(0.01,0.15))

#We want to see if Z and P are present at the same time
phy=[0.6<data[i,1]<1.2 for i in xrange(len(data))]
ziph=[0.06<data[i,0]<0.12 for i in xrange(len(data))]

#TODO: aller voir les exemples d'ICI particuliers
filephyfaible=[ file[i] for i in xrange(len(phy)) if phyfaible[i]==True]
#Physeter
deb, fin, nb = 0.1, 2., 10.
r = np.arange(deb, fin+(fin-deb)/nb, (fin-deb)/nb)
ICItypes = []
for i in xrange(len(range) - 1):
    file_with_given_ici = [ [part[j],file[j]] for j in xrange(len(phy)) if   r[i] < phy[j] < r[i+1] ]
    ICItypes.append( file_with_given_ici )
    

