# -*- coding: utf-8 -*-
# Created on Wed Sep 25 14:35:00 2024
# @author: mhebding

# Bibliotheques
import numpy as np
from scipy.stats import linregress
import matplotlib.pyplot as plt




def exp(VA,VB,pH, couleur, annee):
	X = VB/VA
	x = np.log10(VB/VA)
	y = pH
	r = np.corrcoef(x, y)
	[a, b] = np.polyfit(x, y, 1)
#	(a,b,r,_,_) = linregress(x,y)
#	a,b,R = round(a,3), round(b,3), round(r**2,3) # arrondis
	print("y = ax + b")
	print(" a = {}\n b = {}\n R = {}".format(a,b,r[0][1]))
	modele = a*x+b
	plt.scatter(x,y, color=couleur, label=annee)
	plt.plot(x,modele)

# Donnees 2023
VA0_23 = np.array([50,50,50,50,50,50,50,50,50,50])
VB0_23 = np.array([10,20,30,40,50,60,70,80,90,100])
pH0_23 = np.array([4.1,4.4,4.55,4.65,4.77,4.85,4.92,4.97,5.03,5.07])

VA1_23 = np.array([25,30,35,40,45,50,55,60,65,70])
VA2_23 = np.array([25,25,25,25,25,25,25,25,25,25,25])
VA3_23 = np.array([5,10,15,20,20,20])
VA4_23 = np.array([25,25,25,25,25,10,20,30,40,50])
VA5_23 = np.array([5,5,5,5,5,5])
VA6_23 = np.array([25,25,25,25,25,35,45,55,65,70])
VA7_23 = np.array([10,12.5,15,20,30,40,60,80,80])
VA8_23 = np.array([10,10,10,10,10,10,10,10,10,10,10])

VB1_23 = np.array([25,25,25,25,25,25,25,25,25,25])
VB2_23 = np.array([25,30,35,40,45,50,55,60,65,70,75])
VB3_23 = np.array([5,5,5,5,10,20])
VB4_23 = np.array([10,20,30,40,50,25,25,25,25,25])
VB5_23 = np.array([2,5,10,15,20,30])
VB6_23 = np.array([5,15,25,35,45,50,50,50,50,50])
VB7_23 = np.array([10,10,10,10,10,10,10,10,15])
VB8_23 = np.array([10,15,20,25,30,35,40,45,50,55,60])

pH1_23 = np.array([4.5,4.42,4.37,4.33,4.28,4.24,4.20,4.17,4.14,4.10])
pH2_23 = np.array([4.63,4.71,4.79,4.84,4.90,4.95,5,5.04,5.07,5.10,5.13])
pH3_23 = np.array([4.51,4.20,4.0,3.80,4.14,4.48])
pH4_23 = np.array([4.13,4.41,4.60,4.73,4.83,4.93,4.63,4.47,4.34,4.23])
pH5_23 = np.array([4.30,4.65,4.95,5.1,5.25,5.45])
pH6_23 = np.array([3.87,4.62,4.53,4.67,4.78,4.70,4.59,4.51,4.43,4.40])
pH7_23 = np.array([4.55,4.45,4.40,4.27,4.10,3.95,3.76,3.62,3.79])
pH8_23 = np.array([4.8,5.0,5.14,5.24,5.33,5.4,5.46,5.52,5.57,5.60,5.64])

VA23 = np.concatenate((VA0_23, VA1_23, VA2_23, VA3_23, VA4_23, VA5_23, VA6_23, VA7_23, VA8_23), axis=None)
VB23 = np.concatenate((VB0_23, VB1_23, VB2_23, VB3_23, VB4_23, VB5_23, VB6_23, VB7_23, VB8_23), axis=None)
pH23 = np.concatenate((pH0_23, pH1_23, pH2_23, pH3_23, pH4_23, pH5_23, pH6_23, pH7_23, pH8_23), axis=None)

exp(VA23,VB23,pH23,'blue','2023')

# Donnees 2024
VA1_24 = np.array([5,10,15,20,25,30,35,40,45])
VA2_24 = np.array([5,10,15,20,25,30,35,40,45])
VA3_24 = np.array([25,20,10,30,40,35,5,45])
VA4_24 = np.array([10,20,25,30,40,5,15])
VA5_24 = np.array([15,22,34,38,43,10,30,40,45])
VA6_24 = np.array([5,10,15,20,25])
VA7_24 = np.array([45,40,35,30,25,20,15,10,5])
VA8_24 = np.array([5,15,25,30,35,45])

VB1_24 = np.array([45,40,35,30,25,20,15,10,5])
VB2_24 = np.array([45,40,35,30,25,20,15,10,5])
VB3_24 = np.array([25,30,40,20,10,15,45,5])
VB4_24 = np.array([40,30,25,20,10,45,35])
VB5_24 = np.array([35,28,16,12,7,40,20,10,5])
VB6_24 = np.array([45,40,35,30,25])
VB7_24 = np.array([5,10,15,20,25,30,35,40,45])
VB8_24 = np.array([45,35,25,20,15,5])

pH1_24 = np.array([5.60,5.20,4.94,4.74,4.62,4.44,4.19,3.98,3.6])
pH2_24 = np.array([3.65,3.28,3,2.82,2.68,2.47,2.36,2.14,1.78])
pH3_24 = np.array([4.6,4.78,5.18,4.6,4,4.1,5.6,3.7])
pH4_24 = np.array([5.13,4.64,4.51,4.43,3.89,5.54,4.95])
pH5_24 = np.array([4.93,4.66,4.20,4.09,4.14,5.19,4.29,3.96,3.61])
pH6_24 = np.array([5.62,5.25,4.93,4.6,4.5])
pH7_24 = np.array([3.72,3.86,4.27,4.19,4.04,4.57,5.04,5.05,5.66])
pH8_24 = np.array([5.45,4.8,4.43,4.35,4,3.53])

VA24 = np.concatenate((VA1_24, VA3_24, VA4_24, VA5_24, VA6_24, VA7_24, VA8_24), axis=None)
VB24 = np.concatenate((VB1_24, VB3_24, VB4_24, VB5_24, VB6_24, VB7_24, VB8_24), axis=None)
pH24 = np.concatenate((pH1_24, pH3_24, pH4_24, pH5_24, pH6_24, pH7_24, pH8_24), axis=None)

exp(VA24,VB24,pH24,'orange','2024')

# Donnees 2025
VA1_25 = np.array([25,30,35,40,45,50,55,60,65,70,75])
VA2_25 = np.array([25,25,25,25,25,25,30,35,40,45,50])
VA3_25 = np.array([25,25,35,40,45,45,40,40])
VA4_25 = np.array([25,30,30,35,40,40,40,45,45,50,50])
VA5_25 = np.array([30,35,40,45,50,20,30,20,15,10])
VA6_25 = np.array([5,10,15,20,25,30,35,40,45,50])
VA7_25 = np.array([25,25,25,25,25,25,35,40,45,50,60,70,80,90,100])
VA8_25 = np.array([45,55,65,75,90,100,5,5,5,5,5,5])
VA9_25 = np.array([5,15,25,45,50,50,50,50])

VB1_25 = np.array([25,25,25,25,25,25,25,25,25,25,25])
VB2_25 = np.array([30,35,40,45,50,25,25,25,25,25,25])
VB3_25 = np.array([25,30,30,30,30,60,45,50])
VB4_25 = np.array([25,25,30,30,30,35,40,40,45,45,50])
VB5_25 = np.array([20,20,20,30,50,80,55,45,40,40])
VB6_25 = np.array([50,50,50,50,50,50,50,50,50,50])
VB7_25 = np.array([90,80,70,50,35,25,25,25,25,25,25,25,25,25,25])
VB8_25 = np.array([5,5,5,5,5,5,45,55,65,75,85,100])
VB9_25 = np.array([50,50,50,50,10,20,30,40])

pH1_25 = np.array([4.7,4.6,4.52,4.46,4.41,4.37,4.33,4.30,4.28,4.25,4.22])
pH2_25 = np.array([5.4,5.42,5.46,5.5,5.53,4.37,4.24,4.14,4.09,4.12,4.03])
pH3_25 = np.array([4.37,4.43,4.29,4.22,4.17,4.50,4.42,4.47])
pH4_25 = np.array([4.77,4.79,4.80,4.83,4.89,4.83,4.77,4.76,4.75,4.74,4.72])
pH5_25 = np.array([4.02,3.93,3.86,3.96,4.14,4.8,4.46,4.55,4.67,4.7])
pH6_25 = np.array([5.51,5.13,4.93,4.80,4.69,4.60,4.53,4.47,4.41,4.36])
pH7_25 = np.array([4.98,4.9,4.89,4.71,4.54,4.61,4.45,4.39,4.34,4.29,4.21,4.14,4.08,4.03,3.99])
pH8_25 = np.array([3.84,3.15,3.08,3.02,2.95,2.93,5.18,5.26,5.33,5.40,5.45,5.51])
pH9_25 = np.array([5.57,5.07,4.83,4.53,3.85,4.25,4.40,4.6])

VA25 = np.concatenate((VA1_25, VA2_25, VA3_25, VA4_25, VA5_25, VA6_25, VA7_25, VA8_25, VA9_25), axis=None)
VB25 = np.concatenate((VB1_25, VB2_25, VB3_25, VB4_25, VB5_25, VB6_25, VB7_25, VB8_25, VB9_25), axis=None)
pH25 = np.concatenate((pH1_25, pH2_25, pH3_25, pH4_25, pH5_25, pH6_25, pH7_25, pH8_25, pH9_25), axis=None)

exp(VA25,VB25,pH25,'green','2025')

# # Donnees 2026
VA1_26 = np.array([25,35,45,55,55,75,85,95])
VA2_26 = np.array([10,20,30,40,50,50,50,50,50,50])
VA3_26 = np.array([50,50,50,50,50])
VA4_26 = np.array([40,40,40,40,40,40])
VA5_26 = np.array([35.3,35.3,35.3,35.3,14.7])
VA6_26 = np.array([25,30,35,40,45,50,55,60,65])
VA7_26 = np.array([25,25,25,25,25,25,25,25,25,25,25])
VA8_26 = np.array([25,30,35,40,45,50,55,60,65,70,75])
VA9_26 = np.array([25,25,25,25,25,25,25,25,25,25,25])

#
VB1_26 = np.array([25,25,25,25,25,25,25,25])
VB2_26 = np.array([50,50,50,50,50,10,20,30,40,50])
VB3_26 = np.array([10,20,30,40,50])
VB4_26 = np.array([10,20,30,40,50,60])
VB5_26 = np.array([14.7,17,35,40.5,49.5])
VB6_26 = np.array([25,25,25,25,25,25,25,25,25])
VB7_26 = np.array([25,30,35,40,45,50,55,60,65,70,75])
VB8_26 = np.array([25,25,25,25,25,25,25,25,25,25,25])
VB9_26 = np.array([25,30,35,40,45,50,55,60,65,70,75])

#
#
pH1_26 = np.array([4.36,4.23,4.10,4.01,3.94,3.89,3.81,3.75])
pH2_26 = np.array([5.03,4.76,4.60,4.46,4.35,3.63,3.96,4.16,4.25,4.37])
pH3_26 = np.array([3.37,3.92,4.10,4.18,4.28])
pH4_26 = np.array([3.9,4.2,4.38,4.52,4.62,4.71])
pH5_26 = np.array([3.86,3.91,4.17,4.23,4.68])
pH6_26 = np.array([4.2,4.1,4.05,4,3.95,3.9,3.87,3.83,3.80])
pH7_26 = np.array([4.22,4.28,4.36,4.42,4.48,4.53,4.58,4.63,4.67,4.71,4.74])
pH8_26 = np.array([4.40,4.31,4.23,4.18,4.12,4.08,4.04,4.00,3.97,3.92,3.89])
pH9_26 = np.array([4.49,4.56,4.62,4.68,4.73,4.78,4.82,4.86,4.89,4.92,4.95])

#
#
VA26 = np.concatenate((VA1_26, VA2_26, VA3_26, VA4_26, VA5_26, VA6_26, VA7_26, VA8_26, VA9_26), axis=None)
VB26 = np.concatenate((VB1_26, VB2_26, VB3_26, VB4_26, VB5_26, VB6_26, VB7_26, VB8_26, VB9_26), axis=None)
pH26 = np.concatenate((pH1_26, pH2_26, pH3_26, pH4_26, pH5_26, pH6_26, pH7_26, pH8_26, pH9_26), axis=None)
#
exp(VA26,VB26,pH26,'red','2026')

# Tout ensemble
VA = np.concatenate((VA23, VA24, VA25), axis=None)
VB = np.concatenate((VB23, VB24, VB25), axis=None)
pH = np.concatenate((pH23, pH24, pH25), axis=None)

#exp(VA,VB,pH,'black','232425')

# Affichage Donnees
plt.title('Determination constante equilibre')
plt.xlabel('log(B/A)')
plt.ylabel('pH')
plt.legend()
plt.show()