Statistiques
| Révision :

root / bin / image2geometry / gather_data.py @ 16

Historique | Voir | Annoter | Télécharger (1,7 ko)

1 10 akiss
#!/usr/bin/env python
2 10 akiss
3 10 akiss
# before lounching the executable activate the timagetk conda environement
4 10 akiss
# conda activate florivar
5 10 akiss
6 10 akiss
# general imports :
7 10 akiss
from sys import argv
8 10 akiss
import pandas as pd
9 10 akiss
import os
10 10 akiss
11 10 akiss
12 10 akiss
def read_areas(dirname):
13 10 akiss
    listfiles=os.listdir(dirname)
14 10 akiss
    listfiles=[i for i in listfiles if '-area.csv' in i]
15 10 akiss
    sepalname=[]
16 10 akiss
    area=[]
17 10 akiss
    for i in listfiles:
18 10 akiss
        name=i.split('-area.csv')[0]
19 10 akiss
        sepalname.append(name)
20 10 akiss
        df=pd.read_csv(dirname+i, delimiter=',')[:-2]
21 11 akiss
        A=sum(df['Value'])/2.
22 10 akiss
        area.append(A)
23 10 akiss
    data = {'Sepal': sepalname, 'Area': area}
24 10 akiss
    newdf=pd.DataFrame.from_dict(data)
25 10 akiss
    newdf=newdf.sort_values("Sepal", ascending=True, inplace=False)
26 10 akiss
    return newdf
27 10 akiss
28 10 akiss
def read_measurements(fname):
29 10 akiss
    df=pd.read_csv(fname, delimiter=';')
30 10 akiss
    print("Reading file : ",fname)
31 10 akiss
    print("Number of entries at reading: ",df.shape)
32 10 akiss
    df['Sepal']=[name.split('_oriented')[0] for name in df['Sepal']]
33 10 akiss
    df=df.sort_values("Sepal", ascending=True, inplace=False)
34 10 akiss
    return df
35 10 akiss
36 10 akiss
37 10 akiss
measures_filename = argv[1]
38 10 akiss
areadir = argv[2]+'/'
39 10 akiss
40 10 akiss
root=measures_filename.split('.csv')[0]
41 10 akiss
outputfile=root+"_full.csv"
42 10 akiss
43 10 akiss
44 10 akiss
df=read_measurements(measures_filename)
45 10 akiss
newdf=read_areas(areadir)
46 10 akiss
#
47 10 akiss
df = pd.merge(df, newdf, left_on="Sepal", right_on="Sepal")
48 10 akiss
#
49 10 akiss
df['CurvedSF']=df['CurvedWidth']/df['CurvedLength']
50 10 akiss
df['FlatSF']=df['FlatWidth']/df['FlatLength']
51 10 akiss
#
52 10 akiss
df['Thickness']=df['volume']/df['Area']
53 10 akiss
#
54 10 akiss
df['GaussK']=1./df['LR']/df['TR']
55 10 akiss
df['CentralGaussK']=1./df['LR423']/df['TR423']
56 10 akiss
df.to_csv(outputfile, index=False, sep=";")
57 10 akiss
print("Number of entries : ",df.shape)
58 10 akiss
labels=list(df.columns[1:])
59 10 akiss
print('Columns written:',list(df.columns))
60 10 akiss
print('Sepals:',list(df['Sepal']))
61 10 akiss
print('Measurements written in file:',outputfile)
62 10 akiss