Skip to content

Commit

Permalink
2 IHM compare et extraction
Browse files Browse the repository at this point in the history
  • Loading branch information
YLefrais committed Oct 9, 2020
1 parent 0effe74 commit 8487e50
Show file tree
Hide file tree
Showing 8 changed files with 1,599 additions and 573 deletions.
433 changes: 0 additions & 433 deletions LIBStick.py

This file was deleted.

588 changes: 588 additions & 0 deletions LIBStick_GUI_compare.py

Large diffs are not rendered by default.

692 changes: 692 additions & 0 deletions LIBStick_GUI_extraction.py

Large diffs are not rendered by default.

174 changes: 174 additions & 0 deletions LIBStick_comp_spectres.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,174 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Created on Thu Apr 2 11:31:54 2020
@author: yannick
"""

import numpy,os,pandas
import matplotlib.pyplot as plt
import mpl_toolkits.mplot3d as plt3d
import LIBStick_echange_vars

#rep_travail="/home/yannick/Bureau/LIBS/Scripts_divers_pour_LIBS/Fluorose_LIBS/Spectres_moyen/528-543/"
#bornes_moyenne_spectres=numpy.linspace(528,543,150)
limites_zone1=[534.5 , 535.8]
limites_zone2=[528.0 , 543.0]
limites_spectre=[528.0, 543.0]

###############################################################################
# 1- fonction qui liste des fichiers *.mean d'un répertoire
###############################################################################
def repertoire_de_travail(rep_script,rep_travail_relatif):
rep_travail=rep_script+"/"+rep_travail_relatif
return rep_travail

def creation_liste_fichiers(rep_travail):
os.chdir(rep_travail)
liste=[]
for fichier in os.listdir():
if (os.path.isfile(fichier) and fichier[-4:] == "mean") :
liste.append(fichier)
liste.sort()
return liste

def lit_spectre(fichier,tableau_abscisses):
spectre=numpy.loadtxt(fichier,delimiter="\t",usecols=[0],dtype=float,encoding="Latin-1")
#tableau_abscisses=lit_tableau_abscisses()
spectre=numpy.vstack((tableau_abscisses,spectre))
# spectre=numpy.zeros((0,document.shape[0]))
# for ligne in document :
# spectre=numpy.row_stack((spectre,ligne))
return spectre

def lit_tableau_abscisses():
global tableau_abscisses
tableau_abscisses=numpy.loadtxt("tableau_abscisses.txt", delimiter="\t", usecols=[0])
return tableau_abscisses

def creer_tableau(liste):
i=0
for nom_fichier in liste :
if i==0 :
fichier_entree=numpy.loadtxt(nom_fichier, delimiter="\t", usecols=[0])
#print(fichier_entree)
tableau_comparatif=numpy.zeros((0,fichier_entree.shape[0]))
tableau_comparatif=numpy.row_stack((tableau_comparatif,fichier_entree))
else :
fichier_entree=numpy.loadtxt(nom_fichier, delimiter="\t", usecols=[0])
tableau_comparatif=numpy.row_stack((tableau_comparatif,fichier_entree))
i=i+1
#print(tableau_comparatif.shape)
return tableau_comparatif

def creer_DataFrame(tableau_comparatif,liste, tableau_abscisses):
DataFrame_comparatif=pandas.DataFrame(data=tableau_comparatif, index=liste, columns=tableau_abscisses)
return DataFrame_comparatif

def creer_DataFrame_resultats(DataFrame_comparatif, limites_zone1,limites_zone2):
DataFrame_tableau_calculs=pandas.DataFrame()
Sous_DataFrame = DataFrame_comparatif.loc[ : , limites_zone1[0]:limites_zone1[1]]
#print(Sous_DataFrame)
DataFrame_tableau_calculs["Somme zone 1"] = Sous_DataFrame.sum(axis=1)
Sous_DataFrame = DataFrame_comparatif.loc[ : , limites_zone2[0]:limites_zone2[1]]
#print(Sous_DataFrame)
DataFrame_tableau_calculs["Somme zone 2"] = Sous_DataFrame.sum(axis=1)
DataFrame_tableau_calculs["Rapport"]=DataFrame_tableau_calculs["Somme zone 1"] / DataFrame_tableau_calculs["Somme zone 2"]
return DataFrame_tableau_calculs

def Convertir_Dataframe_tableau(DataFrame_comparatif):
tableau=DataFrame_comparatif.values
tableau= numpy.delete(tableau, -1 , axis=1)
return tableau

def enregistre_DataFrame_resultats(DataFrame_resultats):
DataFrame_resultats.to_csv("Resultat_fichiers_classes.csv")
DataFrame_resultats.to_csv("Resultat_fichiers_classes.tsv", sep='\t')

###############################################################################
# 2- fonction d'affichage graphique du tableau de résultats
###############################################################################
def tableau_256gris(tableau_norm):
tableau8bits=tableau_norm*255
tableau8bits=tableau8bits.astype(int)
return tableau8bits

def graphique_creation(tableau8bits,nom_echantillon,limites_spectre):
#fig=plt.figure()
fig, ax=plt.subplots()
#plt.imshow(tableau8bits, cmap="gray", extent=[limites_spectre[0],limites_spectre[1],tableau8bits.shape[0],0], aspect="auto")
plt.imshow(tableau8bits, cmap="inferno", extent=[limites_spectre[0],limites_spectre[1],tableau8bits.shape[0],0], aspect="auto")
#print(tableau8bits.shape[0])
#print(tableau8bits.shape[1])

#imageplot=plt.imshow(tableau8bits, cmap="hot")
#imageplot=plt.imshow(tableau8bits, cmap="nipy_spectral")
#plt.colorbar()
plt.title(nom_echantillon)
plt.xlabel("Longueur d'onde (nm)")
plt.ylabel( "Spectres echantillons classés")
plt.yticks(range(0,tableau8bits.shape[0],5))
ax.yaxis.get_ticklocs(minor=True)
ax.minorticks_on()
ax.xaxis.set_tick_params(which='minor', bottom=False)
plt.savefig("figure_plot.png")
#plt.xlim(limites_spectre[0], limites_spectre[1])
#plt.ioff()
plt.show(block=False)

def graphique_3D_creation(tableau8bits,nom_echantillon,limites_spectre):
xx, yy = numpy.mgrid[0:tableau8bits.shape[0], 0:tableau8bits.shape[1]]
#fig = plt.figure(figsize=(15,15))
fig = plt.figure()
ax = fig.gca(projection='3d')
ax.plot_surface(xx, yy, tableau8bits ,rstride=1, cstride=1, cmap="inferno",linewidth=0, antialiased=False)
ax.view_init(80, 30)

plt.title(nom_echantillon)
plt.ylabel("Longueur d'onde (nm)")
plt.xlabel( "Spectres suivant z")
#ax.set_ylim(limites_spectre[0],limites_spectre[1])

plt.xticks(range(0,tableau8bits.shape[0],5))
ax.xaxis.get_ticklocs(minor=True)
ax.minorticks_on()
ax.yaxis.set_tick_params(which='minor', bottom=False)

plt.show(block=False)

def graphique_sauvegarde(tableau8bits) :
plt.imsave("figure.png",tableau8bits, cmap="inferno")

###############################################################################
# programme principal
###############################################################################
def main(rep_travail, tableau_bornes):
os.chdir(rep_travail)
liste=LIBStick_echange_vars.L_comp_liste_fichiers
tableau_comparatif=creer_tableau(liste)
#tableau_abscisses=lit_tableau_abscisses()
DataFrame_comparatif=creer_DataFrame(tableau_comparatif,liste,tableau_abscisses)
limites_zone1[0]=tableau_bornes[0,0]
limites_zone1[1]=tableau_bornes[0,1]
limites_zone2[0]=tableau_bornes[1,0]
limites_zone2[1]=tableau_bornes[1,1]
DataFrame_resultats=creer_DataFrame_resultats(DataFrame_comparatif,limites_zone1,limites_zone2)
DataFrame_comparatif=pandas.concat([DataFrame_comparatif, DataFrame_resultats["Rapport"]], axis=1)
DataFrame_comparatif=DataFrame_comparatif.sort_values(by=["Rapport"])
#print(DataFrame_comparatif)
LIBStick_echange_vars.L_comp_DataFrame_resultats = DataFrame_resultats = DataFrame_resultats.sort_values(by=["Rapport"])
print(DataFrame_resultats.shape)
enregistre_DataFrame_resultats(DataFrame_resultats)

tableau_comparatif=Convertir_Dataframe_tableau(DataFrame_comparatif)
#print (tableau_comparatif)
#print (tableau_comparatif.shape)

tableau8bits=tableau_256gris(tableau_comparatif)
if LIBStick_echange_vars.L_comp_flag_2D :
graphique_creation(tableau8bits, "Echantillons classés", limites_spectre)
if LIBStick_echange_vars.L_comp_flag_3D :
graphique_3D_creation(tableau8bits, "Echantillons classés", limites_spectre)
graphique_sauvegarde(tableau8bits)

61 changes: 61 additions & 0 deletions LIBStick_creation_spectre_moyen.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Created on Mon Mar 23 14:42:42 2020
@author: yannick
"""

import numpy,os
import LIBStick_echange_vars

###############################################################################
# 1- fonctions
###############################################################################
def extraction_spectres(tableau_norm):
#tableau_extrait=LIBStick_creation_tableau_norm.tableau_norm.copy()
tableau_extrait=tableau_norm.copy()
print ("format tableau initial : ")
print(tableau_extrait.shape)
indice_premier=(LIBStick_echange_vars.L_ext_bornes_moyenne_spectres[0]-1)
indice_dernier=(LIBStick_echange_vars.L_ext_bornes_moyenne_spectres[1]-1)
cols_supprime_debut=list()
cols_supprime_fin=list()
if indice_premier > 0 :
for i in range(0,indice_premier) :
cols_supprime_debut.append(i)
if indice_dernier < LIBStick_echange_vars.L_ext_nombre_fichiers :
for i in range(indice_dernier+1, LIBStick_echange_vars.L_ext_nombre_fichiers):
cols_supprime_fin.append(i)
cols_supprime=cols_supprime_debut+cols_supprime_fin
print ("colonnes à supprimer : ")
print(cols_supprime)
tableau_extrait=numpy.delete(tableau_extrait, cols_supprime, axis=1)
print ("format tableau extrait : ")
print(tableau_extrait.shape)
return tableau_extrait

def creation_spectre_moyen(tableau_extrait):
spectre_moyen=tableau_extrait.sum(axis=1)
spectre_moyen=spectre_moyen/tableau_extrait.shape[1]
print("format spectre moyen : ")
print(spectre_moyen.shape)
return spectre_moyen

def enregistre_fichier(spectre_moyen, nom_echantillon, bornes):
nom_fichier=nom_echantillon+"_spectre_moyen_"+ str(bornes[0])+"_"+str(bornes[1])+".mean"
nom_fichier=str(numpy.char.replace(nom_fichier, " ", "_"))
numpy.savetxt(nom_fichier,spectre_moyen,delimiter="\t", newline="\n")
print (nom_fichier)

###############################################################################
# programme principal
###############################################################################
def main (rep_travail,nom_echantillon, bornes) :
print("===========================================")
os.chdir(rep_travail)
tableau_norm=numpy.loadtxt("tableau_normalisé.txt",delimiter="\t",dtype=float,encoding="Latin-1")
tableau_extrait=extraction_spectres(tableau_norm)
spectre_moyen=creation_spectre_moyen(tableau_extrait)
enregistre_fichier(spectre_moyen, nom_echantillon, bornes)
return spectre_moyen
79 changes: 23 additions & 56 deletions LIBStick_creation_tableau_norm.py
100755 → 100644
Original file line number Diff line number Diff line change
Expand Up @@ -30,10 +30,10 @@
###############################################################################
# 1- fonction qui liste des fichiers *.tsv d'un répertoire
###############################################################################
def repertoire_de_travail_0(rep_script):
rep_travail=rep_script+"/test_python_Zone_1/528_543/"
#rep_travail=rep_travail+"/test_python_Zone_1/592_608/"
return rep_travail
#def repertoire_de_travail_0(rep_script):
# rep_travail=rep_script+"/test_python_Zone_1/528_543/"
# #rep_travail=rep_travail+"/test_python_Zone_1/592_608/"
# return rep_travail

def repertoire_de_travail(rep_script,rep_travail_relatif):
rep_travail=rep_script+"/"+rep_travail_relatif
Expand All @@ -52,21 +52,6 @@ def creation_liste_fichiers(rep_travail):
# 2- fonction qui ouvre chaque fichier de la liste, sépare les données en liste de listes,
# extrait la seconde colonne et l'ajoute à un tableau numpy
###############################################################################
#def creer_tableau_0(liste):
# tableau=numpy.array(object)
# i=0
# for fichier in liste :
# if i==0:
# fentree=open(fichier,"r")
# tableau=numpy.genfromtxt(fentree, delimiter="\t")
# else :
# fentree=open(fichier,"r")
# tableau2=numpy.genfromtxt(fentree, delimiter="\t")
# tableau=numpy.insert(tableau,tableau.shape[1],tableau2[:,1],axis=1)
# i=i+1
# tableau=numpy.delete(tableau,0,axis=1)
# return tableau

def creer_tableau(liste):
i=0
for fichier in liste :
Expand All @@ -80,16 +65,16 @@ def creer_tableau(liste):
i=i+1
return tableau

def creer_tableau_abscisses(liste):
fichier0=numpy.loadtxt(liste[0], delimiter="\t", usecols=[0])
tableau_abscisses=numpy.zeros((fichier0.shape[0],0))
tableau_abscisses=numpy.column_stack((tableau_abscisses,fichier0))
print(tableau_abscisses)
return tableau_abscisses

###############################################################################
# 3- fonction normalise les colonnes du tableau
###############################################################################
#def normalise_tableau_maxi(tableau):
# for colonne in range(tableau.shape[1]):
# minimum=tableau[:,colonne].min()
# maximum=tableau[:,colonne].max()
# tableau[:,colonne] = (tableau[:,colonne] - minimum)/(maximum - minimum)
# return tableau

def normalise_tableau_aire(tableau):
for colonne in range(tableau.shape[1]):
minimum=tableau[:,colonne].min()
Expand All @@ -102,15 +87,6 @@ def normalise_tableau_aire(tableau):
###############################################################################
# 4- fonction qui sauvegarde le résultat dans un fichier tsv dans le sous répertoire
###############################################################################
#def enregistre_fichier_0(repertoire, tableau, nom_fichier):
# os.chdir(repertoire)
# nom_fichier=nom_fichier[0:-4] + "_" + repertoire[-7:] +".tsv"
# fsortie=open(nom_fichier,"w")
# fsortie.write(tableau)
# fsortie.close()
# #ecrit_tsv=csv.writer(fsortie, delimiter = '\t')
# #ecrit_tsv.writerow(document)

def enregistre_fichier(tableau,nom_fichier):
numpy.savetxt(nom_fichier,tableau,delimiter="\t", newline="\n")

Expand All @@ -119,6 +95,9 @@ def enregistre_fichier_virgule(tableau,nom_fichier):
tableau=numpy.char.replace(tableau, ".", ",")
numpy.savetxt(nom_fichier,tableau,delimiter="\t", newline="\n", fmt="%s")

def enregistre_tableau_abscisses(tableau_abscisses):
numpy.savetxt("tableau_abscisses.txt", tableau_abscisses, newline="\n")

###############################################################################
# 5- fonctions qui affiche et sauvegarde des graphes
###############################################################################
Expand Down Expand Up @@ -176,32 +155,20 @@ def graphique_sauvegarde(tableau8bits) :
###############################################################################
# programme principal
###############################################################################
def main_commun(rep_travail,nom_echantillon,bornes) :
def main (rep_travail,nom_echantillon,bornes) :
global tableau_norm
liste_fichiers=creation_liste_fichiers(rep_travail)
tableau_abscisses=creer_tableau_abscisses(liste_fichiers)
enregistre_tableau_abscisses(tableau_abscisses)
tableau=creer_tableau(liste_fichiers)
#tableau_norm=normalise_tableau_maxi(tableau)
tableau_norm=normalise_tableau_aire(tableau)
#enregistre_fichier_0(rep_travail, tableau_norm,"tableau_normalisé.txt")
enregistre_fichier(tableau_norm,"tableau_normalisé.txt")
enregistre_fichier_virgule(tableau_norm,"tableau_normalisé_virgules.txt")
tableau8bits=tableau_transpose_256gris(tableau_norm)
graphique_creation(tableau8bits,nom_echantillon,bornes)
graphique_sauvegarde(tableau8bits)
if LIBStick_echange_vars.flag_3D == 1 :
graphique_3D_creation(tableau8bits,nom_echantillon,bornes)

if LIBStick_echange_vars.L_ext_flag_2D :
graphique_creation(tableau8bits,nom_echantillon,bornes)
if LIBStick_echange_vars.L_ext_flag_3D == 1 :
graphique_3D_creation(tableau8bits,nom_echantillon,bornes)


def main (rep_travail,nom_echantillon,bornes) :
main_commun(rep_travail,nom_echantillon,bornes)

if __name__=='__main__':
#rep_travail=repertoire_de_travail_0(rep_script)
nom_echantillon="Spectres LIBS"
bornes=[0,100]
if (len(sys.argv)) <= 1 :
rep_travail_relatif="/"
else :
rep_travail_relatif=sys.argv[1]
rep_script=os.getcwd()
rep_travail=repertoire_de_travail(rep_script,rep_travail_relatif)
main_commun(rep_travail,nom_echantillon,bornes)
Loading

0 comments on commit 8487e50

Please sign in to comment.