#!/usr/bin/env python

# before lounching the executable activate the timagetk conda environement
# conda activate florivar

# general imports :
from sys import argv
import pandas as pd
import os


def read_areas(dirname):
    listfiles=os.listdir(dirname)
    listfiles=[i for i in listfiles if '-area.csv' in i]
    sepalname=[]
    area=[]
    for i in listfiles:
        name=i.split('-area.csv')[0]
        sepalname.append(name)
        df=pd.read_csv(dirname+i, delimiter=',')[:-2]
        A=sum(df['Value'])/2.
        area.append(A)
    data = {'Sepal': sepalname, 'Area': area}
    newdf=pd.DataFrame.from_dict(data)    
    newdf=newdf.sort_values("Sepal", ascending=True, inplace=False)
    return newdf

def read_measurements(fname):
    df=pd.read_csv(fname, delimiter=';')
    print("Reading file : ",fname)
    print("Number of entries at reading: ",df.shape)
    df['Sepal']=[name.split('_oriented')[0] for name in df['Sepal']]
    df=df.sort_values("Sepal", ascending=True, inplace=False)
    return df


measures_filename = argv[1]
areadir = argv[2]+'/'

root=measures_filename.split('.csv')[0]
outputfile=root+"_full.csv"


df=read_measurements(measures_filename)
newdf=read_areas(areadir)
#
df = pd.merge(df, newdf, left_on="Sepal", right_on="Sepal")
#
df['CurvedSF']=df['CurvedWidth']/df['CurvedLength']
df['FlatSF']=df['FlatWidth']/df['FlatLength']
#
df['Thickness']=df['volume']/df['Area']
#
df['GaussK']=1./df['LR']/df['TR']
df['CentralGaussK']=1./df['LR423']/df['TR423']
df.to_csv(outputfile, index=False, sep=";")
print("Number of entries : ",df.shape)
labels=list(df.columns[1:])
print('Columns written:',list(df.columns))
print('Sepals:',list(df['Sepal']))
print('Measurements written in file:',outputfile)


