Détection des boiteries d'un cheval à l'aide d'un smartphone¶
@author : Armand & Albane COIFFE
@email : armandcoiffe@gmail.com , albanecoiffe@gmail.com
Introduction¶
Le bien-être animal est un enjeu crucial dans le monde de l’équitation, aussi bien pour les cavaliers de loisir que pour les professionnels de la compétition. L'une des principales préoccupations concerne la boiterie des chevaux, qui peut être détectée grâce à des changements dans l'appui et l'accélération lors de leur locomotion. Lorsque le cheval ressent une douleur, il allège son appui sur le membre affecté, entraînant des modifications de ses mouvements qui peuvent être mesurées. Nous nous intéresserons donc aux indices de symétrie (ISG).
Dans ce contexte, le projet est construit dans l’optique de mettre au point un système accessible à tous les cavaliers pour effectuer un suivi quantitatif de la biomécanique du cheval.
Ce suivi est réalisé par la mesure et l'analyse de l’accélération verticale via par exemple l’ application *PhysicsToolboxAccelerometer* disponible sur smartphone.
Problématique retenue :¶
La mesure de l’accélération du cheval lors de sa locomotion à partir d’un smartphone constitue- t-elle une évaluation fiable de sa santé ?
Sommaire :¶
- Import des libraries
- 1 - Données au trot en ligne 1
- 2 - Données au trot en ligne 2
- 3 - Données au trot en cercle à droite
- 4 - Données au trot en cercle à gauche
- Récapitulatif
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
from scipy.signal import butter, filtfilt
from scipy.integrate import cumtrapz
from scipy.signal import find_peaks
import plotly.express as px
Trot_ligne1 = pd.read_csv('data/Trot_ligne2.csv', sep=';')
Trot_ligne1.reset_index(inplace=True)
Trot_ligne1.columns = ['time', 'gFx', 'gFy', 'gFz', 'alpha']
Trot_ligne1['time'] = Trot_ligne1['time'].map(pd.to_datetime)
Trot_ligne1.set_index('time', inplace=True)
Trot_ligne1.head()
gFx | gFy | gFz | alpha | |
---|---|---|---|---|
time | ||||
2024-06-08 14:30:11.291 | 0.022 | -0.836 | -0.573 | 1.014 |
2024-06-08 14:30:11.298 | -0.018 | -0.776 | -0.607 | 0.985 |
2024-06-08 14:30:11.309 | -0.111 | -0.804 | -0.660 | 1.046 |
2024-06-08 14:30:11.322 | -0.105 | -0.824 | -0.608 | 1.029 |
2024-06-08 14:30:11.345 | -0.014 | -0.831 | -0.532 | 0.987 |
Trot_ligne1.tail()
gFx | gFy | gFz | alpha | |
---|---|---|---|---|
time | ||||
2024-06-08 14:33:32.608 | 0.059 | -0.878 | -0.406 | 0.969 |
2024-06-08 14:33:32.608 | 0.059 | -0.878 | -0.406 | 0.969 |
2024-06-08 14:33:32.610 | 0.048 | -0.869 | -0.400 | 0.958 |
2024-06-08 14:33:32.621 | 0.022 | -0.853 | -0.401 | 0.943 |
2024-06-08 14:33:32.631 | -0.010 | -0.832 | -0.419 | 0.932 |
len(Trot_ligne1)
20160
Travail sur les données¶
Visualisation de alpha pour trier¶
plt.figure(figsize=(15, 5))
px.line(Trot_ligne1, x=Trot_ligne1.index, y='alpha', title='Évolution de alpha en fonction du temps')
<Figure size 1500x500 with 0 Axes>
On peut remarquer des passage au pas lors des changement visible sur le graphe comme entre 14:31:25 et 14:31:35. Il nous faut garder que les moments de trot pour le calcul de l'ISG.
Privilégions la partie de droite qui est plus stable
Filtrer les données¶
Trot_ligne1_sort = Trot_ligne1['2024-06-08 14:31:45.000':'2024-06-08 14:32:30.631']
print(Trot_ligne1_sort.head())
print(len(Trot_ligne1_sort))
gFx gFy gFz alpha time 2024-06-08 14:31:45.005 0.015 0.309 0.027 0.311 2024-06-08 14:31:45.036 -0.264 -0.011 0.038 0.267 2024-06-08 14:31:45.036 -0.264 -0.011 0.038 0.267 2024-06-08 14:31:45.036 -0.264 -0.011 0.038 0.267 2024-06-08 14:31:45.042 -0.336 -0.149 -0.099 0.381 4569
Données de la 5ème Colonne (alpha) vs Temps¶
plt.figure(figsize=(15, 5))
px.line(Trot_ligne1_sort, x=Trot_ligne1_sort.index, y='alpha', title='Évolution de alpha en fonction du temps')
<Figure size 1500x500 with 0 Axes>
Données de alpha sur 5 secondes¶
start_time1 = pd.Timestamp('2024-06-08 14:31:46.000')
end_time1 = start_time1 + pd.Timedelta(seconds=5)
Trot_ligne1_sort_5s = Trot_ligne1_sort[start_time1:end_time1]
plt.figure(figsize=(12, 6))
px.line(Trot_ligne1_sort_5s, x=Trot_ligne1_sort_5s.index, y='alpha', title='Évolution de alpha en fonction du temps (5s)')
<Figure size 1200x600 with 0 Axes>
Calcul de d2Z¶
d2Z = (alpha - 1) * 9.81.
Trot_ligne1_new = Trot_ligne1_sort.copy()
Trot_ligne1_new['d2z'] = (Trot_ligne1_new['alpha'] - 1) * 9.81
Trot_ligne1_new.head()
gFx | gFy | gFz | alpha | d2z | |
---|---|---|---|---|---|
time | |||||
2024-06-08 14:31:45.005 | 0.015 | 0.309 | 0.027 | 0.311 | -6.75909 |
2024-06-08 14:31:45.036 | -0.264 | -0.011 | 0.038 | 0.267 | -7.19073 |
2024-06-08 14:31:45.036 | -0.264 | -0.011 | 0.038 | 0.267 | -7.19073 |
2024-06-08 14:31:45.036 | -0.264 | -0.011 | 0.038 | 0.267 | -7.19073 |
2024-06-08 14:31:45.042 | -0.336 | -0.149 | -0.099 | 0.381 | -6.07239 |
Données de d2Z en fonction du temps¶
plt.figure(figsize=(12, 6))
px.line(Trot_ligne1_new, x=Trot_ligne1_new.index, y='d2z', title='Évolution de d2z en fonction du temps')
<Figure size 1200x600 with 0 Axes>
Données de d2z sur 5 secondes¶
start_time1 = pd.Timestamp('2024-06-08 14:31:46.000')
end_time1 = start_time1 + pd.Timedelta(seconds=5)
Trot_ligne1_new_5s = Trot_ligne1_new[start_time1:end_time1]
plt.figure(figsize=(12, 6))
px.line(Trot_ligne1_new_5s, x=Trot_ligne1_new_5s.index, y='d2z', title='Évolution de d2z en fonction du temps (5s)')
<Figure size 1200x600 with 0 Axes>
Calcul du déplacement¶
Calcul de la fréquence d'échantillonnage à partir des données¶
fs = 1 / (Durée médiane entre les échantillons en secondes)
fs1 = 1.0 / (Trot_ligne1_new.index.to_series().diff().median().total_seconds())
print("Fréquence d'échantillonnage : ", fs1)
Fréquence d'échantillonnage : 100.0
Étape 1 : Filtrer passe-haut pour retirer la gravité des données d'accélération¶
def butter_highpass(cutoff, fs, order=5):
nyq = 0.5 * fs
normal_cutoff = cutoff / nyq
b, a = butter(order, normal_cutoff, btype='high', analog=False)
return b, a
cutoff1 = 1
fs1 = fs1
order1 = 5
b, a = butter_highpass(cutoff1, fs1, order=order1)
Trot_ligne1_new['d2z_filtre'] = filtfilt(b, a, Trot_ligne1_new['d2z'])
Étape 2 : Intégrer l'accélération filtrée passe-haut pour obtenir la vitesse¶
velocity = cumtrapz(Trot_ligne1_new['d2z_filtre'], dx=1/fs1, initial=0)
Étape 3 : Filtrer passe-haut la vitesse pour retirer les dérives de basse fréquence¶
b, a = butter_highpass(cutoff1, fs1, order=order1)
Trot_ligne1_new['velocity'] = filtfilt(b, a, velocity)
Étape 4 : Intégrer la vitesse filtrée passe-haut pour obtenir le déplacement¶
Trot_ligne1_new['deplacement'] = cumtrapz(Trot_ligne1_new['velocity'], dx=1/fs1, initial=0)
Trot_ligne1_new.head()
gFx | gFy | gFz | alpha | d2z | d2z_filtre | velocity | deplacement | |
---|---|---|---|---|---|---|---|---|
time | ||||||||
2024-06-08 14:31:45.005 | 0.015 | 0.309 | 0.027 | 0.311 | -6.75909 | -0.206053 | -0.106817 | 0.000000 |
2024-06-08 14:31:45.036 | -0.264 | -0.011 | 0.038 | 0.267 | -7.19073 | -1.075140 | -0.127083 | -0.001170 |
2024-06-08 14:31:45.036 | -0.264 | -0.011 | 0.038 | 0.267 | -7.19073 | -1.510116 | -0.153917 | -0.002574 |
2024-06-08 14:31:45.036 | -0.264 | -0.011 | 0.038 | 0.267 | -7.19073 | -1.941992 | -0.185110 | -0.004270 |
2024-06-08 14:31:45.042 | -0.336 | -0.149 | -0.099 | 0.381 | -6.07239 | -1.251809 | -0.215015 | -0.006270 |
Correction de l'index temporel pour correspondre aux dimensions après intégration¶
time_index1 = Trot_ligne1_new.index
time_index_velocit1 = time_index1[:len(velocity)]
time_index_displacement1 = time_index1[:len(Trot_ligne1_new['deplacement'])]
start_20s_window1 = time_index1[0]
end_20s_window1 = start_20s_window1 + pd.Timedelta(seconds=20)
Visualisation sur une fenetre de 20 secondes¶
window_data1 = Trot_ligne1_new[(Trot_ligne1_new.index >= start_20s_window1) & (Trot_ligne1_new.index <= end_20s_window1)]
fig, axs = plt.subplots(4, 1, figsize=(23, 17), sharex=True)
axs[0].plot(window_data1.index, window_data1['d2z'], label='d2z')
axs[0].set_ylabel('Accélération (d2z)')
axs[0].legend()
axs[0].title.set_text('d2z original')
axs[0].set_xlabel('Temps')
axs[1].plot(window_data1.index, window_data1['d2z_filtre'], label='d2z_filtre', color='orange')
axs[1].set_ylabel('d2z_filtre')
axs[1].legend()
axs[1].title.set_text('d2z filtré (passe-haut)')
axs[1].set_xlabel('Temps')
axs[2].plot(window_data1.index, window_data1['velocity'], label='velocity', color='red')
axs[2].set_ylabel('velocity')
axs[2].legend()
axs[2].title.set_text('Vitesse filtrée (passe-haut)')
axs[2].set_xlabel('Temps')
axs[3].plot(window_data1.index, window_data1['deplacement'], label='deplacement', color='green')
axs[3].set_ylabel('deplacement')
axs[3].legend()
axs[3].title.set_text('Déplacement')
axs[3].set_xlabel('Temps')
plt.xlabel('Temps')
plt.suptitle('Signaux de la fenêtre de 20 secondes')
plt.show()
def trouver_foulees(displacement, prominence=0.01):
peaks, _ = find_peaks(displacement, prominence=prominence)
if len(peaks) >= 2:
return peaks[0], peaks[1]
else:
return None, None
def afficher_foulees(displacement, peak1, peak2, time_index_displacement):
plt.figure(figsize=(10, 4))
plt.plot(time_index_displacement, displacement, label='Déplacement', color='green')
plt.plot(time_index_displacement[peak1], displacement[peak1], 'ro', label='Pic maximum d\'une foulée')
plt.plot(time_index_displacement[peak2], displacement[peak2], 'bo', label='Pic minimum d\'une foulée')
plt.title('Foulées du cheval')
plt.xlabel('Temps')
plt.ylabel('Déplacement')
plt.legend()
plt.grid(True)
plt.xlim(time_index_displacement[peak1] - pd.Timedelta(seconds=2), time_index_displacement[peak2] + pd.Timedelta(seconds=2))
plt.show()
def identifier_foulees(displacement, prominence=0.01):
peaks, _ = find_peaks(displacement, prominence=prominence)
troughs, _ = find_peaks(-displacement, prominence=prominence)
min_length = min(len(peaks), len(troughs))
peaks = peaks[:min_length]
troughs = troughs[:min_length]
return peaks, troughs, min_length
def identifier_foulees(displacement, prominence=0.01):
peaks, _ = find_peaks(displacement, prominence=prominence)
troughs, _ = find_peaks(-displacement, prominence=prominence)
min_length = min(len(peaks), len(troughs))
peaks = peaks[:min_length]
troughs = troughs[:min_length]
return peaks, troughs, min_length
displacement1 = Trot_ligne1_new['deplacement']
time_index_displacement1 = Trot_ligne1_new.index
peak1, peak2 = trouver_foulees(displacement1)
if peak1 is not None and peak2 is not None:
afficher_foulees(displacement1, peak1, peak2, time_index_displacement1)
else:
print("Unable to find a stride within the signal based on the given prominence.")
/var/folders/dy/p7g7n6253j76sj1k7y99nbv80000gn/T/ipykernel_17124/1520386640.py:7: FutureWarning: Series.__getitem__ treating keys as positions is deprecated. In a future version, integer keys will always be treated as labels (consistent with DataFrame behavior). To access a value by position, use `ser.iloc[pos]` /var/folders/dy/p7g7n6253j76sj1k7y99nbv80000gn/T/ipykernel_17124/1520386640.py:8: FutureWarning: Series.__getitem__ treating keys as positions is deprecated. In a future version, integer keys will always be treated as labels (consistent with DataFrame behavior). To access a value by position, use `ser.iloc[pos]`
Calcul des ISG¶
Pour identifier les foulées, on doit trouver les pics de grande amplitude et les pics de petite amplitude sur le signal de déplacement.
ISG = indice de symétrie
Plus il est proche de 100, plus le cheval est symétrique et donc non boiteux.
$ISG = (A2)^2 /((A1)^2 + (A2)^2) * 100$
A1 & A2 les deux premiers coefficients de Fourier du déplacement z
peaks, troughs, min_length = identifier_foulees(displacement1)
Liste des ISG et des harmoniques pour chaque foulée¶
def calculate_ISG(min_length, troughs, displacement):
ISGs = []
A1_values = []
A2_values = []
for i in range(min_length - 2):
# La foulée est entre un trou (troughs[i]) et le trou d'apres (troughs[i+2])
stride = displacement[troughs[i]:troughs[i+2]]
# Tranformée de fourier de la foulée
stride_fft = np.fft.rfft(stride)
# Removing the mean for zero-centering
stride_fft_magnitude = np.abs(stride_fft)
# coefficient de fourier (A1 et A2) : premiere et deuxieme harmonique
A1 = stride_fft_magnitude[1]
A2 = stride_fft_magnitude[2]
# calculer ISG pour chaque foulée
ISG = (A2**2 / (A1**2 + A2**2)) * 100
ISGs.append(ISG)
A1_values.append(A1)
A2_values.append(A2)
#supprimer les trois derniers ISGs, A1_values, A2_values
return ISGs, A1_values, A2_values
def print_values(A1, A2, ISG):
print("A1: {:.6f} | A2: {:.6f} | ISG: {:.6f}".format(A1, A2, ISG))
ISGs1, A1, A2 = calculate_ISG(min_length, troughs, displacement1)
for i in range(len(ISGs1)):
print_values(A1[i], A2[i], ISGs1[i])
A1: 0.281506 | A2: 1.559755 | ISG: 96.845428 A1: 0.094891 | A2: 1.395536 | ISG: 99.539785 A1: 0.292811 | A2: 1.391029 | ISG: 95.757000 A1: 0.557208 | A2: 1.439293 | ISG: 86.965802 A1: 0.899410 | A2: 1.741680 | ISG: 78.947000 A1: 0.785653 | A2: 1.686813 | ISG: 82.173712 A1: 0.688260 | A2: 1.481967 | ISG: 82.257871 A1: 0.718264 | A2: 1.378029 | ISG: 78.636390 A1: 0.624892 | A2: 1.459518 | ISG: 84.508570 A1: 0.570793 | A2: 1.510040 | ISG: 87.498030 A1: 0.592394 | A2: 1.483213 | ISG: 86.242613 A1: 0.716001 | A2: 1.315232 | ISG: 77.138937 A1: 0.745324 | A2: 1.408319 | ISG: 78.119847 A1: 0.730587 | A2: 1.415992 | ISG: 78.975916 A1: 0.667913 | A2: 1.333136 | ISG: 79.935424 A1: 0.693872 | A2: 1.469799 | ISG: 81.775145 A1: 1.087337 | A2: 1.499884 | ISG: 65.550167 A1: 1.313221 | A2: 1.248455 | ISG: 47.473351 A1: 1.208551 | A2: 1.314758 | ISG: 54.201590 A1: 1.062100 | A2: 1.526337 | ISG: 67.376099 A1: 1.080413 | A2: 1.669007 | ISG: 70.469825 A1: 0.980126 | A2: 1.658580 | ISG: 74.117247 A1: 0.831305 | A2: 1.485560 | ISG: 76.153254 A1: 0.708955 | A2: 1.581403 | ISG: 83.265364 A1: 0.773178 | A2: 1.482073 | ISG: 78.606630 A1: 0.871079 | A2: 1.469150 | ISG: 73.989314 A1: 0.869963 | A2: 1.535506 | ISG: 75.700528 A1: 0.844482 | A2: 1.460841 | ISG: 74.952644 A1: 0.682701 | A2: 1.411771 | ISG: 81.047295 A1: 0.643933 | A2: 1.515614 | ISG: 84.709078 A1: 0.600210 | A2: 1.553793 | ISG: 87.015735 A1: 0.544194 | A2: 1.524322 | ISG: 88.695406 A1: 0.487034 | A2: 1.540994 | ISG: 90.918267 A1: 0.476339 | A2: 1.494808 | ISG: 90.781538 A1: 0.397308 | A2: 1.337341 | ISG: 91.889709 A1: 0.530600 | A2: 1.390743 | ISG: 87.293577 A1: 0.770601 | A2: 1.486064 | ISG: 78.808682 A1: 0.869096 | A2: 1.307194 | ISG: 69.346498 A1: 0.938295 | A2: 1.406474 | ISG: 69.201444 A1: 0.922185 | A2: 1.479128 | ISG: 72.009302 A1: 0.878624 | A2: 1.389397 | ISG: 71.433605 A1: 0.911828 | A2: 1.482949 | ISG: 72.565200 A1: 0.925419 | A2: 1.449138 | ISG: 71.032316 A1: 0.850303 | A2: 1.628281 | ISG: 78.572987 A1: 1.060664 | A2: 1.657933 | ISG: 70.958163 A1: 1.206297 | A2: 1.411311 | ISG: 57.784360 A1: 1.013741 | A2: 1.371009 | ISG: 64.652502 A1: 0.975638 | A2: 1.447915 | ISG: 68.774063 A1: 0.966015 | A2: 1.552528 | ISG: 72.089809 A1: 0.896588 | A2: 1.676075 | ISG: 77.751243 A1: 1.090518 | A2: 1.528518 | ISG: 66.268674 A1: 1.203662 | A2: 1.284337 | ISG: 53.239151 A1: 1.088608 | A2: 1.310610 | ISG: 59.174524 A1: 0.959877 | A2: 1.490449 | ISG: 70.683391 A1: 0.914269 | A2: 1.433810 | ISG: 71.093543 A1: 0.990406 | A2: 1.459641 | ISG: 68.474425 A1: 0.935498 | A2: 1.756005 | ISG: 77.892876 A1: 0.815223 | A2: 1.728254 | ISG: 81.799316 A1: 0.724822 | A2: 1.442849 | ISG: 79.849222 A1: 0.774952 | A2: 1.408455 | ISG: 76.761544 A1: 1.016856 | A2: 1.743795 | ISG: 74.624724 A1: 1.178922 | A2: 1.510411 | ISG: 62.141601 A1: 1.140859 | A2: 1.401035 | ISG: 60.129390 A1: 1.103075 | A2: 1.589012 | ISG: 67.480989 A1: 1.192496 | A2: 1.587079 | ISG: 63.915387 A1: 1.183128 | A2: 1.633301 | ISG: 65.585638 A1: 1.092755 | A2: 1.522565 | ISG: 66.002154 A1: 0.990127 | A2: 1.526637 | ISG: 70.390808 A1: 0.919073 | A2: 1.558189 | ISG: 74.189252 A1: 0.906048 | A2: 1.319332 | ISG: 67.952223 A1: 0.602631 | A2: 1.336573 | ISG: 83.105451 A1: 0.412678 | A2: 1.624052 | ISG: 93.934756 A1: 0.542577 | A2: 1.599069 | ISG: 89.675644 A1: 0.625766 | A2: 1.417115 | ISG: 83.682661 A1: 0.734694 | A2: 1.520390 | ISG: 81.069570 A1: 0.763674 | A2: 1.515852 | ISG: 79.757130 A1: 0.714030 | A2: 1.456230 | ISG: 80.617785 A1: 0.687227 | A2: 1.470077 | ISG: 82.065775 A1: 0.634828 | A2: 1.373132 | ISG: 82.389903 A1: 0.732939 | A2: 1.603170 | ISG: 82.712009 A1: 1.121135 | A2: 1.703038 | ISG: 69.765253 A1: 1.259147 | A2: 1.436717 | ISG: 56.558305 A1: 1.147456 | A2: 1.531314 | ISG: 64.041300 A1: 1.009393 | A2: 1.781126 | ISG: 75.690667 A1: 1.126931 | A2: 1.663747 | ISG: 68.549662 A1: 1.347226 | A2: 1.593650 | ISG: 58.320860 A1: 1.396826 | A2: 1.671580 | ISG: 58.883070 A1: 1.355751 | A2: 1.515912 | ISG: 55.560019 A1: 1.106435 | A2: 1.498856 | ISG: 64.728291 A1: 1.068412 | A2: 1.426711 | ISG: 64.069851 A1: 1.192772 | A2: 1.532668 | ISG: 62.280259 A1: 1.217719 | A2: 1.491555 | ISG: 60.005123 A1: 1.041592 | A2: 1.294962 | ISG: 60.717730 A1: 1.078783 | A2: 1.487768 | ISG: 65.540584 A1: 1.291198 | A2: 1.726294 | ISG: 64.125414 A1: 1.049937 | A2: 1.775582 | ISG: 74.092771 A1: 1.019523 | A2: 1.523534 | ISG: 69.070026 A1: 1.256321 | A2: 1.369492 | ISG: 54.301949 A1: 1.301819 | A2: 1.457595 | ISG: 55.627326 A1: 1.274168 | A2: 1.422151 | ISG: 55.471853 A1: 1.215306 | A2: 1.393729 | ISG: 56.806817 A1: 1.230994 | A2: 1.585055 | ISG: 62.377336 A1: 1.095296 | A2: 1.671767 | ISG: 69.966700 A1: 1.035509 | A2: 1.867811 | ISG: 76.490262 A1: 1.052879 | A2: 1.960993 | ISG: 77.623253 A1: 0.967867 | A2: 1.611364 | ISG: 73.487182 A1: 0.698503 | A2: 1.538610 | ISG: 82.911821 A1: 0.579062 | A2: 1.795475 | ISG: 90.578572 A1: 0.912648 | A2: 1.734844 | ISG: 78.323951 A1: 1.208965 | A2: 1.375037 | ISG: 56.400496 A1: 1.224826 | A2: 1.504780 | ISG: 60.149462 A1: 1.107292 | A2: 1.528096 | ISG: 65.570460 A1: 0.945513 | A2: 1.441453 | ISG: 69.917211 A1: 0.800042 | A2: 1.520651 | ISG: 78.320791 A1: 0.485602 | A2: 1.425991 | ISG: 89.608537 A1: 0.156517 | A2: 1.569243 | ISG: 99.014988 A1: 0.313410 | A2: 1.646509 | ISG: 96.503453 A1: 0.870635 | A2: 1.409465 | ISG: 72.381883
values_list1 = []
def append_values_to_list(A1, A2, ISG, values_list):
values_list.append({'A1': A1, 'A2': A2, 'ISG': ISG})
for i in range(len(ISGs1)):
append_values_to_list(A1[i], A2[i], ISGs1[i], values_list1)
Création d'un dataframe¶
df_ISG1 = pd.DataFrame(values_list1)
df_ISG1.head()
A1 | A2 | ISG | |
---|---|---|---|
0 | 0.281506 | 1.559755 | 96.845428 |
1 | 0.094891 | 1.395536 | 99.539785 |
2 | 0.292811 | 1.391029 | 95.757000 |
3 | 0.557208 | 1.439293 | 86.965802 |
4 | 0.899410 | 1.741680 | 78.947000 |
Valeur de l'ISG¶
df_ISG1.describe()
A1 | A2 | ISG | |
---|---|---|---|
count | 118.000000 | 118.000000 | 118.000000 |
mean | 0.890455 | 1.513142 | 73.940655 |
std | 0.273549 | 0.131681 | 11.248176 |
min | 0.094891 | 1.248455 | 47.473351 |
25% | 0.710223 | 1.418374 | 65.574254 |
50% | 0.916671 | 1.496832 | 74.105009 |
75% | 1.092196 | 1.586573 | 81.793273 |
max | 1.396826 | 1.960993 | 99.539785 |
ISG de 73.940655 pour ce jeu de données
plt.figure(figsize=(10, 4))
px.line(df_ISG1, x=df_ISG1.index, y='ISG', title='ISG pour chaque foulée')
<Figure size 1000x400 with 0 Axes>
Boxplot des ISG pour visualiser les valeurs aberantes¶
plt.figure(figsize=(10, 4))
plt.boxplot(df_ISG1)
plt.title('Boxplot de ISG')
plt.ylabel('ISG')
plt.grid(True)
plt.show()
Pas de valeurs abérantes a signaler sur le boxplot
2 - Données au trot en ligne 2¶
Relevé de données effectués le 2024-04-13
Charger les données¶
Trot_ligne = pd.read_csv('data/Trot_ligne.csv')
Trot_ligne.reset_index(inplace=True)
Trot_ligne.columns = ['time', 'gFx', 'gFy', 'gFz', 'alpha']
Trot_ligne['time'] = Trot_ligne['time'].map(pd.to_datetime)
Trot_ligne.set_index('time', inplace=True)
Trot_ligne.head()
gFx | gFy | gFz | alpha | |
---|---|---|---|---|
time | ||||
2024-04-13 18:49:37.079 | 0.103 | -0.856 | -0.512 | 1.003 |
2024-04-13 18:49:37.084 | 0.099 | -0.856 | -0.509 | 1.001 |
2024-04-13 18:49:37.098 | 0.108 | -0.856 | -0.509 | 1.002 |
2024-04-13 18:49:37.104 | 0.105 | -0.851 | -0.515 | 1.000 |
2024-04-13 18:49:37.124 | 0.100 | -0.846 | -0.508 | 0.992 |
Trot_ligne.tail()
gFx | gFy | gFz | alpha | |
---|---|---|---|---|
time | ||||
2024-04-13 18:52:48.771 | 0.053 | -0.777 | -0.618 | 0.994 |
2024-04-13 18:52:48.781 | 0.047 | -0.782 | -0.613 | 0.995 |
2024-04-13 18:52:48.791 | 0.045 | -0.781 | -0.624 | 1.001 |
2024-04-13 18:52:48.801 | 0.035 | -0.770 | -0.635 | 0.999 |
2024-04-13 18:52:48.811 | 0.036 | -0.768 | -0.644 | 1.003 |
len(Trot_ligne)
19280
Travail sur les données¶
Visualisation de alpha pour trier¶
plt.figure(figsize=(15, 5))
px.line(Trot_ligne, x=Trot_ligne.index, y='alpha', title='Évolution de alpha en fonction du temps')
<Figure size 1500x500 with 0 Axes>
On peut remarquer un passage au pas entre 18:51:00 et 18:51:15
Filtrer les données¶
Trot_ligne_sort = Trot_ligne['2024-04-13 18:49:50.079':'2024-04-13 18:50:51.000']
print(Trot_ligne_sort.head())
print(len(Trot_ligne_sort))
gFx gFy gFz alpha time 2024-04-13 18:49:50.082 1.014 -0.701 -1.399 1.865 2024-04-13 18:49:50.092 0.708 -0.716 -1.682 1.960 2024-04-13 18:49:50.102 0.419 -0.624 -1.606 1.773 2024-04-13 18:49:50.113 0.217 -0.642 -1.379 1.537 2024-04-13 18:49:50.128 0.178 -0.814 -1.113 1.390 6126
Données de la 5ème Colonne (alpha) vs Temps¶
plt.figure(figsize=(12, 6))
plt.plot(Trot_ligne_sort['alpha'])
plt.xlabel("Temps")
plt.ylabel("Valeur de la 5ème Colonne (alpha)")
plt.title("Données de la 5ème Colonne (alpha) vs Temps")
plt.legend()
plt.show()
No artists with labels found to put in legend. Note that artists whose label start with an underscore are ignored when legend() is called with no argument.
Données de alpha sur 5 secondes¶
start_time2 = pd.Timestamp('2024-04-13 18:50:09.083')
end_time2 = start_time2 + pd.Timedelta(seconds=5)
Trot_ligne_5s = Trot_ligne_sort[start_time2:end_time2]
plt.figure(figsize=(12, 6))
px.line(Trot_ligne_5s, x=Trot_ligne_5s.index, y='alpha', title='Évolution de alpha en fonction du temps (5s)')
<Figure size 1200x600 with 0 Axes>
Calcul de d2Z¶
d2Z = (alpha - 1) * 9.81.
# Calculate d2Z = (alpha - 1) * 9.81.
Trot_ligne_new = Trot_ligne_sort.copy()
Trot_ligne_new['d2z'] = (Trot_ligne_new['alpha'] - 1) * 9.81
Trot_ligne_new.head()
gFx | gFy | gFz | alpha | d2z | |
---|---|---|---|---|---|
time | |||||
2024-04-13 18:49:50.082 | 1.014 | -0.701 | -1.399 | 1.865 | 8.48565 |
2024-04-13 18:49:50.092 | 0.708 | -0.716 | -1.682 | 1.960 | 9.41760 |
2024-04-13 18:49:50.102 | 0.419 | -0.624 | -1.606 | 1.773 | 7.58313 |
2024-04-13 18:49:50.113 | 0.217 | -0.642 | -1.379 | 1.537 | 5.26797 |
2024-04-13 18:49:50.128 | 0.178 | -0.814 | -1.113 | 1.390 | 3.82590 |
Données de d2Z en fonction du temps¶
plt.figure(figsize=(12, 6))
plt.plot(Trot_ligne_new['d2z'])
plt.xlabel("Temps")
plt.ylabel("Valeur de d2Z")
plt.title("Valeur de d2Z vs Temps")
plt.legend()
plt.show()
No artists with labels found to put in legend. Note that artists whose label start with an underscore are ignored when legend() is called with no argument.
Données de d2z sur 5 secondes¶
start_time2 = pd.Timestamp('2024-04-13 18:49:50.079')
end_time2 = start_time2 + pd.Timedelta(seconds=5)
Trot_ligne_5s = Trot_ligne_new[start_time2:end_time2]
plt.figure(figsize=(12, 6))
px.line(Trot_ligne_5s, x=Trot_ligne_5s.index, y='d2z', title='Évolution de d2z en fonction du temps')
<Figure size 1200x600 with 0 Axes>
Calcul du déplacement¶
Calcul de la fréquence d'échantillonnage à partir des données¶
fs = 1 / (Durée médiane entre les échantillons en secondes)
fs2 = 1.0 / (Trot_ligne_new.index.to_series().diff().median().total_seconds())
print("Fréquence d'échantillonnage : ", fs2)
Fréquence d'échantillonnage : 100.0
Étape 1 : Filtrer passe-haut pour retirer la gravité des données d'accélération¶
cutoff2 = 1
fs2 = fs2
order2 = 5
b, a = butter_highpass(cutoff2, fs2, order=order2)
Trot_ligne_new['d2z_filtre'] = filtfilt(b, a, Trot_ligne_new['d2z'])
Étape 2 : Intégrer l'accélération filtrée passe-haut pour obtenir la vitesse¶
velocity = cumtrapz(Trot_ligne_new['d2z_filtre'], dx=1/fs2, initial=0)
Étape 3 : Filtrer passe-haut la vitesse pour retirer les dérives de basse fréquence¶
b, a = butter_highpass(cutoff2, fs2, order=order2)
Trot_ligne_new['velocity'] = filtfilt(b, a, velocity)
Étape 4 : Intégrer la vitesse filtrée passe-haut pour obtenir le déplacement¶
Trot_ligne_new['deplacement'] = cumtrapz(Trot_ligne_new['velocity'], dx=1/fs2, initial=0)
Trot_ligne_new.head()
gFx | gFy | gFz | alpha | d2z | d2z_filtre | velocity | deplacement | |
---|---|---|---|---|---|---|---|---|
time | ||||||||
2024-04-13 18:49:50.082 | 1.014 | -0.701 | -1.399 | 1.865 | 8.48565 | -1.115190 | 0.095935 | 0.000000 |
2024-04-13 18:49:50.092 | 0.708 | -0.716 | -1.682 | 1.960 | 9.41760 | 0.240224 | 0.136634 | 0.001163 |
2024-04-13 18:49:50.102 | 0.419 | -0.624 | -1.606 | 1.773 | 7.58313 | -1.175838 | 0.176632 | 0.002729 |
2024-04-13 18:49:50.113 | 0.217 | -0.642 | -1.379 | 1.537 | 5.26797 | -3.078283 | 0.199569 | 0.004610 |
2024-04-13 18:49:50.128 | 0.178 | -0.814 | -1.113 | 1.390 | 3.82590 | -4.113953 | 0.207274 | 0.006644 |
Correction de l'index temporel pour correspondre aux dimensions après intégration¶
time_index2 = Trot_ligne_new.index
time_index_velocity2 = time_index2[:len(velocity)]
time_index_displacement2 = time_index2[:len(Trot_ligne_new['deplacement'])]
start_20s_window2 = time_index2[0]
end_20s_window2 = start_20s_window2 + pd.Timedelta(seconds=20)
Visualisation sur une fenetre de 20 secondes¶
window_data2 = Trot_ligne_new[(Trot_ligne_new.index >= start_20s_window2) & (Trot_ligne_new.index <= end_20s_window2)]
fig, axs = plt.subplots(4, 1, figsize=(23, 17), sharex=True)
axs[0].plot(window_data2.index, window_data2['d2z'], label='d2z')
axs[0].set_ylabel('Accélération (d2z)')
axs[0].legend()
axs[0].title.set_text('d2z original')
axs[0].set_xlabel('Temps')
axs[1].plot(window_data2.index, window_data2['d2z_filtre'], label='d2z_filtre', color='orange')
axs[1].set_ylabel('d2z_filtre')
axs[1].legend()
axs[1].title.set_text('d2z filtré (passe-haut)')
axs[1].set_xlabel('Temps')
axs[2].plot(window_data2.index, window_data2['velocity'], label='velocity', color='red')
axs[2].set_ylabel('velocity')
axs[2].legend()
axs[2].title.set_text('Vitesse filtrée (passe-haut)')
axs[2].set_xlabel('Temps')
axs[3].plot(window_data2.index, window_data2['deplacement'], label='deplacement', color='green')
axs[3].set_ylabel('deplacement')
axs[3].legend()
axs[3].title.set_text('Déplacement')
axs[3].set_xlabel('Temps')
plt.xlabel('Temps')
plt.suptitle('Signaux de la fenêtre de 20 secondes')
plt.show()
displacement2 = Trot_ligne_new['deplacement']
time_index_displacement2 = Trot_ligne_new.index
peak1, peak2 = trouver_foulees(displacement2)
if peak1 is not None and peak2 is not None:
afficher_foulees(displacement2, peak1, peak2, time_index_displacement2)
else:
print("Unable to find a stride within the signal based on the given prominence.")
/var/folders/dy/p7g7n6253j76sj1k7y99nbv80000gn/T/ipykernel_17124/1520386640.py:7: FutureWarning: Series.__getitem__ treating keys as positions is deprecated. In a future version, integer keys will always be treated as labels (consistent with DataFrame behavior). To access a value by position, use `ser.iloc[pos]` /var/folders/dy/p7g7n6253j76sj1k7y99nbv80000gn/T/ipykernel_17124/1520386640.py:8: FutureWarning: Series.__getitem__ treating keys as positions is deprecated. In a future version, integer keys will always be treated as labels (consistent with DataFrame behavior). To access a value by position, use `ser.iloc[pos]`
Calcul des ISG¶
Pour identifier les foulées, on doit trouver les pics de grande amplitude et les pics de petite amplitude sur le signal de déplacement.
peaks, troughs, min_length = identifier_foulees(displacement2)
Liste des ISG et des harmoniques pour chaque foulée¶
ISGs2, A1, A2 = calculate_ISG(min_length, troughs, displacement2)
for i in range(len(ISGs2)):
print_values(A1[i], A2[i], ISGs2[i])
A1: 1.509935 | A2: 1.360365 | ISG: 44.803175 A1: 1.323199 | A2: 1.345411 | ISG: 50.832310 A1: 1.040984 | A2: 1.122180 | ISG: 53.748315 A1: 1.035396 | A2: 1.200197 | ISG: 57.331860 A1: 0.974916 | A2: 1.297933 | ISG: 63.930614 A1: 0.906928 | A2: 1.329279 | ISG: 68.236438 A1: 0.743920 | A2: 1.265725 | ISG: 74.325108 A1: 0.704441 | A2: 1.210217 | ISG: 74.692932 A1: 0.634925 | A2: 1.185191 | ISG: 77.700625 A1: 0.533962 | A2: 1.341369 | ISG: 86.321370 A1: 0.463738 | A2: 1.271944 | ISG: 88.267041 A1: 0.564008 | A2: 1.313815 | ISG: 84.438781 A1: 0.784159 | A2: 1.438792 | ISG: 77.098743 A1: 0.827808 | A2: 1.201817 | ISG: 67.822320 A1: 0.799933 | A2: 1.203653 | ISG: 69.363653 A1: 0.828225 | A2: 1.161733 | ISG: 66.301694 A1: 0.844090 | A2: 1.186547 | ISG: 66.398162 A1: 0.810938 | A2: 1.217555 | ISG: 69.270960 A1: 0.657597 | A2: 1.026348 | ISG: 70.896050 A1: 0.660732 | A2: 1.156343 | ISG: 75.386608 A1: 0.768097 | A2: 1.266400 | ISG: 73.106573 A1: 0.812836 | A2: 1.204863 | ISG: 68.722640 A1: 0.904268 | A2: 1.244446 | ISG: 65.444583 A1: 0.937095 | A2: 1.297133 | ISG: 65.706786 A1: 0.997637 | A2: 1.347526 | ISG: 64.594700 A1: 0.950406 | A2: 1.258251 | ISG: 63.672528 A1: 0.730085 | A2: 1.194666 | ISG: 72.808373 A1: 0.580336 | A2: 1.276797 | ISG: 82.877992 A1: 0.415367 | A2: 1.171930 | ISG: 88.839859 A1: 0.360591 | A2: 1.215927 | ISG: 91.916335 A1: 0.320105 | A2: 1.147570 | ISG: 92.780851 A1: 0.332546 | A2: 1.159058 | ISG: 92.394311 A1: 0.464897 | A2: 1.267989 | ISG: 88.150344 A1: 0.423420 | A2: 1.264047 | ISG: 89.911408 A1: 0.271534 | A2: 1.196081 | ISG: 95.098806 A1: 0.252329 | A2: 1.261490 | ISG: 96.152941 A1: 0.249391 | A2: 1.252764 | ISG: 96.188075 A1: 0.325233 | A2: 1.240670 | ISG: 93.569966 A1: 0.369858 | A2: 1.192877 | ISG: 91.229714 A1: 0.390178 | A2: 1.133172 | ISG: 89.400755 A1: 0.548059 | A2: 1.216762 | ISG: 83.133697 A1: 0.618461 | A2: 1.202650 | ISG: 79.085688 A1: 0.672319 | A2: 1.189400 | ISG: 75.785259 A1: 0.755955 | A2: 1.086619 | ISG: 67.385835 A1: 0.777772 | A2: 1.164364 | ISG: 69.146852 A1: 0.687329 | A2: 1.229197 | ISG: 76.180607 A1: 0.628636 | A2: 1.156817 | ISG: 77.201951 A1: 0.495698 | A2: 1.170942 | ISG: 84.802501 A1: 0.322898 | A2: 1.071311 | ISG: 91.672072 A1: 0.280154 | A2: 1.229604 | ISG: 95.065046 A1: 0.296474 | A2: 1.294868 | ISG: 95.018818 A1: 0.466049 | A2: 1.142819 | ISG: 85.740788 A1: 0.560927 | A2: 1.203121 | ISG: 82.144472 A1: 0.614447 | A2: 1.034202 | ISG: 73.910533 A1: 0.518479 | A2: 0.933122 | ISG: 76.409650 A1: 0.524250 | A2: 0.983910 | ISG: 77.887684 A1: 0.535001 | A2: 0.987552 | ISG: 77.310378 A1: 0.447850 | A2: 1.137932 | ISG: 86.588068 A1: 0.588684 | A2: 1.216599 | ISG: 81.028332 A1: 0.674303 | A2: 1.123961 | ISG: 73.533669 A1: 0.676679 | A2: 1.208437 | ISG: 76.129147 A1: 0.580685 | A2: 1.153044 | ISG: 79.768755 A1: 0.386671 | A2: 0.991830 | ISG: 86.806482 A1: 0.333698 | A2: 1.170080 | ISG: 92.478293 A1: 0.394646 | A2: 1.254316 | ISG: 90.992432 A1: 0.428602 | A2: 1.242586 | ISG: 89.367507 A1: 0.424607 | A2: 1.258623 | ISG: 89.781851 A1: 0.507064 | A2: 1.252315 | ISG: 85.914717 A1: 0.664790 | A2: 1.284485 | ISG: 78.872939 A1: 0.698015 | A2: 1.128975 | ISG: 72.345196 A1: 0.641424 | A2: 1.089310 | ISG: 74.254095 A1: 0.617349 | A2: 1.148151 | ISG: 77.572911 A1: 0.522598 | A2: 1.145050 | ISG: 82.760967 A1: 0.380262 | A2: 1.212215 | ISG: 91.041301 A1: 0.386963 | A2: 1.225731 | ISG: 90.936659 A1: 0.487565 | A2: 1.175786 | ISG: 85.327707 A1: 0.451981 | A2: 1.103388 | ISG: 85.631348 A1: 0.415041 | A2: 1.130120 | ISG: 88.115386 A1: 0.459060 | A2: 1.134465 | ISG: 85.929808 A1: 0.485727 | A2: 1.103027 | ISG: 83.758014 A1: 0.530459 | A2: 1.208142 | ISG: 83.837584 A1: 0.551705 | A2: 1.258652 | ISG: 83.883256 A1: 0.683677 | A2: 1.195891 | ISG: 75.367751 A1: 0.774527 | A2: 1.181189 | ISG: 69.931736 A1: 0.740261 | A2: 1.270193 | ISG: 74.646411 A1: 0.655218 | A2: 1.345618 | ISG: 80.834343 A1: 0.537894 | A2: 1.303700 | ISG: 85.453230 A1: 0.510079 | A2: 1.304806 | ISG: 86.743734 A1: 0.648917 | A2: 1.352442 | ISG: 81.286320 A1: 0.709780 | A2: 1.217521 | ISG: 74.634922 A1: 0.722940 | A2: 1.207691 | ISG: 73.619386 A1: 0.728050 | A2: 1.153323 | ISG: 71.505530 A1: 0.608708 | A2: 1.113245 | ISG: 76.983742 A1: 0.447815 | A2: 1.308994 | ISG: 89.522571 A1: 0.365118 | A2: 1.246097 | ISG: 92.093371 A1: 0.414706 | A2: 1.160315 | ISG: 88.672904 A1: 0.396805 | A2: 1.160346 | ISG: 89.529980 A1: 0.424096 | A2: 1.205212 | ISG: 88.981998 A1: 0.566815 | A2: 1.256669 | ISG: 83.095001 A1: 0.675210 | A2: 1.220041 | ISG: 76.552834 A1: 0.750799 | A2: 1.296302 | ISG: 74.880818 A1: 0.728219 | A2: 1.222416 | ISG: 73.807088 A1: 0.595509 | A2: 1.081963 | ISG: 76.749706 A1: 0.514501 | A2: 1.096672 | ISG: 81.960514 A1: 0.433860 | A2: 1.075573 | ISG: 86.005823 A1: 0.386688 | A2: 1.115740 | ISG: 89.276593 A1: 0.359028 | A2: 1.089911 | ISG: 90.211086 A1: 0.300976 | A2: 1.217176 | ISG: 94.237876 A1: 0.325906 | A2: 1.293933 | ISG: 94.034492 A1: 0.311127 | A2: 1.319109 | ISG: 94.730096 A1: 0.302515 | A2: 1.203849 | ISG: 94.060399 A1: 0.426117 | A2: 1.163541 | ISG: 88.174098 A1: 0.456521 | A2: 1.176458 | ISG: 86.912665 A1: 0.528975 | A2: 1.171674 | ISG: 83.068561 A1: 0.620994 | A2: 1.309389 | ISG: 81.637674 A1: 0.601362 | A2: 1.325248 | ISG: 82.924933 A1: 0.578866 | A2: 1.301178 | ISG: 83.478260 A1: 0.552626 | A2: 1.217708 | ISG: 82.921707 A1: 0.556015 | A2: 1.116846 | ISG: 80.137924 A1: 0.546739 | A2: 1.178812 | ISG: 82.296721 A1: 0.565138 | A2: 1.255434 | ISG: 83.150543 A1: 0.560800 | A2: 1.193266 | ISG: 81.908630 A1: 0.571577 | A2: 1.225907 | ISG: 82.143141 A1: 0.632045 | A2: 1.166603 | ISG: 77.307946 A1: 0.641113 | A2: 1.099000 | ISG: 74.609616 A1: 0.605934 | A2: 1.145238 | ISG: 78.128909 A1: 0.450324 | A2: 1.161303 | ISG: 86.928609 A1: 0.351126 | A2: 1.269965 | ISG: 92.898474 A1: 0.213818 | A2: 1.217093 | ISG: 97.006087 A1: 0.289201 | A2: 1.263581 | ISG: 95.022396 A1: 0.467904 | A2: 1.334858 | ISG: 89.057558 A1: 0.569756 | A2: 1.176236 | ISG: 80.995706 A1: 0.754460 | A2: 1.250914 | ISG: 73.326546 A1: 0.788236 | A2: 1.320375 | ISG: 73.725416 A1: 0.747243 | A2: 1.344357 | ISG: 76.396841 A1: 0.707637 | A2: 1.236862 | ISG: 75.339541 A1: 0.649719 | A2: 1.178027 | ISG: 76.676138 A1: 0.592467 | A2: 1.272023 | ISG: 82.173359 A1: 0.436788 | A2: 1.238382 | ISG: 88.936069 A1: 0.361913 | A2: 1.360697 | ISG: 93.393060 A1: 0.435990 | A2: 1.332249 | ISG: 90.326225 A1: 0.454930 | A2: 1.273998 | ISG: 88.690860 A1: 0.462263 | A2: 1.192085 | ISG: 86.928470 A1: 0.522356 | A2: 1.171977 | ISG: 83.426976 A1: 0.577335 | A2: 1.255192 | ISG: 82.538152 A1: 0.587268 | A2: 1.258514 | ISG: 82.118692 A1: 0.543122 | A2: 1.269972 | ISG: 84.538200 A1: 0.468048 | A2: 1.295187 | ISG: 88.449253 A1: 0.561692 | A2: 1.349860 | ISG: 85.240710 A1: 0.732759 | A2: 1.087403 | ISG: 68.771560 A1: 0.788161 | A2: 1.038965 | ISG: 63.472816 A1: 0.886686 | A2: 0.999406 | ISG: 55.955094 A1: 0.947207 | A2: 1.124408 | ISG: 58.491645 A1: 0.914290 | A2: 1.161718 | ISG: 61.751524 A1: 0.798561 | A2: 1.042503 | ISG: 63.021438 A1: 0.744021 | A2: 1.059698 | ISG: 66.981279 A1: 0.705262 | A2: 1.090418 | ISG: 70.505604 A1: 0.664591 | A2: 1.158697 | ISG: 75.245672 A1: 0.682971 | A2: 1.097608 | ISG: 72.088804 A1: 0.678351 | A2: 1.195991 | ISG: 75.660075 A1: 0.651206 | A2: 1.248518 | ISG: 78.613345 A1: 0.638906 | A2: 1.246896 | ISG: 79.204706 A1: 0.600753 | A2: 1.243920 | ISG: 81.087084 A1: 0.672603 | A2: 1.119047 | ISG: 73.461340 A1: 0.929119 | A2: 1.111481 | ISG: 58.865915 A1: 0.950178 | A2: 1.232769 | ISG: 62.731987 A1: 0.792779 | A2: 1.103151 | ISG: 65.943165 A1: 0.520154 | A2: 1.237873 | ISG: 84.992983 A1: 0.921143 | A2: 1.350490 | ISG: 68.248471
values_list2 = []
for i in range(len(ISGs2)):
append_values_to_list(A1[i], A2[i], ISGs2[i], values_list2)
Création d'un dataframe¶
df_ISG2 = pd.DataFrame(values_list2)
df_ISG2.head()
A1 | A2 | ISG | |
---|---|---|---|
0 | 1.509935 | 1.360365 | 44.803175 |
1 | 1.323199 | 1.345411 | 50.832310 |
2 | 1.040984 | 1.122180 | 53.748315 |
3 | 1.035396 | 1.200197 | 57.331860 |
4 | 0.974916 | 1.297933 | 63.930614 |
Valeur de l'ISG¶
df_ISG2.describe()
A1 | A2 | ISG | |
---|---|---|---|
count | 169.000000 | 169.000000 | 169.000000 |
mean | 0.596587 | 1.203086 | 79.832615 |
std | 0.203118 | 0.087750 | 10.165059 |
min | 0.213818 | 0.933122 | 44.803175 |
25% | 0.450324 | 1.153044 | 73.807088 |
50% | 0.578866 | 1.205212 | 81.637674 |
75% | 0.709780 | 1.261490 | 88.150344 |
max | 1.509935 | 1.438792 | 97.006087 |
ISG de 79.832615 pour ce jeu de données
plt.figure(figsize=(10, 4))
px.line(df_ISG2, x=df_ISG2.index, y='ISG', title='ISG pour chaque foulée')
<Figure size 1000x400 with 0 Axes>
Boxplot des ISG pour visualiser les valeurs aberantes¶
plt.figure(figsize=(10, 4))
plt.boxplot(df_ISG2)
plt.title('Boxplot de ISG')
plt.ylabel('ISG')
plt.grid(True)
plt.show()
Tri des valeurs aberantes¶
Les points qui apparaissent en dehors des moustaches représentent des valeurs aberrantes.
def ISG_min_max(ISGs, min_value, max_value):
ISGs_filtered = [ISG for ISG in ISGs if ISG >= min_value and ISG <= max_value]
return ISGs_filtered
# Supprimer les valeurs aberrantes
min_value2 = 55
max_value2 = 100
ISGs_filtered2 = ISG_min_max(ISGs2, min_value2, max_value2)
plt.figure(figsize=(10, 4))
px.line(ISGs_filtered2, title='ISG pour chaque foulée (Filtré)')
<Figure size 1000x400 with 0 Axes>
plt.figure(figsize=(10, 4))
plt.boxplot(ISGs_filtered2)
plt.title('Boxplot de ISG (Filtré)')
Text(0.5, 1.0, 'Boxplot de ISG (Filtré)')
Les données filtrées¶
df_ISG_filtered2 = df_ISG2[(df_ISG2['ISG'] >= min_value2) & (df_ISG2['ISG'] <= max_value2)]
df_ISG_filtered2.describe()
A1 | A2 | ISG | |
---|---|---|---|
count | 166.000000 | 166.000000 | 166.000000 |
mean | 0.584031 | 1.201768 | 80.375471 |
std | 0.179989 | 0.086753 | 9.394320 |
min | 0.213818 | 0.933122 | 55.955094 |
25% | 0.448469 | 1.153114 | 74.271849 |
50% | 0.574456 | 1.205038 | 81.934572 |
75% | 0.705057 | 1.258645 | 88.168159 |
max | 1.035396 | 1.438792 | 97.006087 |
Apres un filtre des données, l'ISG moyen est de 80.375471
3 - Données au trot en cercle à droite¶
Relevé de données effectués le 2024-01-01
En cercle à droite, le téléphone est à l'extérieur du cercle
Charger les données¶
Trot_droit = pd.read_csv('data/Trot_Droit_Cercle.csv')
Trot_droit.reset_index(inplace=True)
Trot_droit.columns = ['time', 'gFx', 'gFy', 'gFz', 'alpha']
Trot_droit['time'] = Trot_droit['time'].map(pd.to_datetime)
Trot_droit.set_index('time', inplace=True)
Trot_droit.head()
gFx | gFy | gFz | alpha | |
---|---|---|---|---|
time | ||||
2024-01-01 15:14:07.885 | 0.070 | -0.741 | -0.666 | 0.999 |
2024-01-01 15:14:07.886 | 0.070 | -0.741 | -0.666 | 0.999 |
2024-01-01 15:14:07.893 | 0.078 | -0.744 | -0.662 | 0.999 |
2024-01-01 15:14:07.903 | 0.088 | -0.742 | -0.658 | 0.996 |
2024-01-01 15:14:07.913 | 0.095 | -0.743 | -0.656 | 0.996 |
Trot_droit.tail()
gFx | gFy | gFz | alpha | |
---|---|---|---|---|
time | ||||
2024-01-01 15:19:18.875 | 0.041 | -0.734 | -0.672 | 0.996 |
2024-01-01 15:19:18.887 | 0.028 | -0.718 | -0.696 | 1.000 |
2024-01-01 15:19:18.895 | 0.030 | -0.707 | -0.711 | 1.003 |
2024-01-01 15:19:18.910 | 0.009 | -0.688 | -0.735 | 1.007 |
2024-01-01 15:19:18.915 | -0.009 | -0.689 | -0.732 | 1.005 |
Travail sur les données¶
Visualisation de alpha pour trier¶
plt.figure(figsize=(15, 5))
px.line(Trot_droit, x=Trot_droit.index, y='alpha', title='Évolution de alpha en fonction du temps')
<Figure size 1500x500 with 0 Axes>
Filtrer les données¶
Trot_droit_sort = Trot_droit['2024-01-01 15:14:30.000':'2024-01-01 15:18:30.000']
Trot_droit_sort.head()
gFx | gFy | gFz | alpha | |
---|---|---|---|---|
time | ||||
2024-01-01 15:14:30.004 | -0.871 | -1.959 | -0.718 | 2.261 |
2024-01-01 15:14:30.034 | 0.575 | -1.166 | -1.257 | 1.808 |
2024-01-01 15:14:30.035 | 0.575 | -1.166 | -1.257 | 1.808 |
2024-01-01 15:14:30.035 | 0.575 | -1.166 | -1.257 | 1.808 |
2024-01-01 15:14:30.043 | 0.893 | -1.037 | -1.156 | 1.791 |
Données de alpha vs Temps¶
plt.figure(figsize=(12, 6))
px.line(Trot_droit_sort, x=Trot_droit_sort.index, y='alpha', title='Évolution de alpha en fonction du temps')
<Figure size 1200x600 with 0 Axes>
Données de alpha sur 5 secondes¶
start_time3 = Trot_droit_sort.index.min()
end_time3 = start_time3 + pd.Timedelta(seconds=5)
Trot_droit_sort_5s = Trot_droit_sort[start_time3:end_time3]
plt.figure(figsize=(12, 6))
px.line(Trot_droit_sort_5s, x=Trot_droit_sort_5s.index, y='alpha', title='Évolution de alpha en fonction du temps (5s)')
<Figure size 1200x600 with 0 Axes>
Calcul de d2Z¶
d2Z = (alpha - 1) * 9.81.
Trot_droit_new = Trot_droit_sort.copy()
Trot_droit_new['d2z'] = (Trot_droit_new['alpha'] - 1) * 9.81
Trot_droit_new.head()
gFx | gFy | gFz | alpha | d2z | |
---|---|---|---|---|---|
time | |||||
2024-01-01 15:14:30.004 | -0.871 | -1.959 | -0.718 | 2.261 | 12.37041 |
2024-01-01 15:14:30.034 | 0.575 | -1.166 | -1.257 | 1.808 | 7.92648 |
2024-01-01 15:14:30.035 | 0.575 | -1.166 | -1.257 | 1.808 | 7.92648 |
2024-01-01 15:14:30.035 | 0.575 | -1.166 | -1.257 | 1.808 | 7.92648 |
2024-01-01 15:14:30.043 | 0.893 | -1.037 | -1.156 | 1.791 | 7.75971 |
Tracer d2Z en fonction du temps¶
plt.figure(figsize=(12, 6))
px.line(Trot_droit_new, x=Trot_droit_new.index, y='d2z', title='Évolution de d2z en fonction du temps')
<Figure size 1200x600 with 0 Axes>
Données de d2Z sur 5 secondes¶
start_time3 = Trot_droit_new.index.min()
end_time3 = start_time3 + pd.Timedelta(seconds=5)
Trot_droit_new_5s = Trot_droit_new[start_time3:end_time3]
plt.figure(figsize=(12, 6))
px.line(Trot_droit_new_5s, x=Trot_droit_new_5s.index, y='d2z', title='Évolution de d2z en fonction du temps (5s)')
<Figure size 1200x600 with 0 Axes>
Calcul du déplacement¶
Calcul de la fréquence d'échantillonnage à partir des données¶
fs3 = 1.0 / (Trot_droit_new.index.to_series().diff().median().total_seconds())
print("Fréquence d'échantillonnage : ", fs3)
Fréquence d'échantillonnage : 100.0
Étape 1 : Filtrer passe-haut pour retirer la gravité des données d'accélération¶
cutoff3 = 1
fs3 = fs3
order3 = 5
b, a = butter_highpass(cutoff3, fs3, order=order3)
Trot_droit_new['d2z_filtre'] = filtfilt(b, a, Trot_droit_new['d2z'])
Étape 2 : Intégrer l'accélération filtrée passe-haut pour obtenir la vitesse¶
velocity = cumtrapz(Trot_droit_new['d2z_filtre'], dx=1/fs3, initial=0)
Étape 3 : Filtrer passe-haut la vitesse pour retirer les dérives de basse fréquence¶
b, a = butter_highpass(cutoff3, fs3, order=order3)
Trot_droit_new['velocity'] = filtfilt(b, a, velocity)
Étape 4 : Intégrer la vitesse filtrée passe-haut pour obtenir le déplacement¶
Trot_droit_new['deplacement'] = cumtrapz(Trot_droit_new['velocity'], dx=1/fs3, initial=0)
Trot_droit_new.head()
gFx | gFy | gFz | alpha | d2z | d2z_filtre | velocity | deplacement | |
---|---|---|---|---|---|---|---|---|
time | ||||||||
2024-01-01 15:14:30.004 | -0.871 | -1.959 | -0.718 | 2.261 | 12.37041 | 0.244910 | 0.133267 | 0.000000 |
2024-01-01 15:14:30.034 | 0.575 | -1.166 | -1.257 | 1.808 | 7.92648 | -3.757422 | 0.126081 | 0.001297 |
2024-01-01 15:14:30.035 | 0.575 | -1.166 | -1.257 | 1.808 | 7.92648 | -3.319735 | 0.101239 | 0.002433 |
2024-01-01 15:14:30.035 | 0.575 | -1.166 | -1.257 | 1.808 | 7.92648 | -2.886554 | 0.080900 | 0.003344 |
2024-01-01 15:14:30.043 | 0.893 | -1.037 | -1.156 | 1.791 | 7.75971 | -2.625231 | 0.064160 | 0.004069 |
Correction de l'index temporel pour correspondre aux dimensions après intégration¶
time_index3 = Trot_droit_new.index
time_index_velocity3 = time_index3[:len(velocity)]
time_index_displacement3 = time_index3[:len(Trot_droit_new['deplacement'])]
start_20s_window3 = time_index3[0]
end_20s_window3 = start_20s_window3 + pd.Timedelta(seconds=20)
Visualisation sur une fenetre de 20 secondes¶
# Tracé des signaux d2z, d2z_filtre, velocity, deplacement de la fenêtre de 20 secondes uniquement
window_data3 = Trot_droit_new[(Trot_droit_new.index >= start_20s_window3) & (Trot_droit_new.index <= end_20s_window3)]
fig, axs = plt.subplots(4, 1, figsize=(23, 17), sharex=True)
axs[0].plot(window_data3.index, window_data3['d2z'], label='d2z')
axs[0].set_ylabel('Accélération (d2z)')
axs[0].legend()
axs[0].title.set_text('d2z original')
axs[0].set_xlabel('Temps')
axs[1].plot(window_data3.index, window_data3['d2z_filtre'], label='d2z_filtre', color='orange')
axs[1].set_ylabel('d2z_filtre')
axs[1].legend()
axs[1].title.set_text('d2z filtré (passe-haut)')
axs[1].set_xlabel('Temps')
axs[2].plot(window_data3.index, window_data3['velocity'], label='velocity', color='red')
axs[2].set_ylabel('velocity')
axs[2].legend()
axs[2].title.set_text('Vitesse filtrée (passe-haut)')
axs[2].set_xlabel('Temps')
axs[3].plot(window_data3.index, window_data3['deplacement'], label='deplacement', color='green')
axs[3].set_ylabel('deplacement')
axs[3].legend()
axs[3].title.set_text('Déplacement')
axs[3].set_xlabel('Temps')
plt.xlabel('Temps')
plt.suptitle('Signaux de la fenêtre de 20 secondes')
plt.show()
displacement3 = Trot_droit_new['deplacement']
time_index_displacement3 = Trot_droit_new.index
peak1, peak2 = trouver_foulees(displacement3)
if peak1 is not None and peak2 is not None:
afficher_foulees(displacement3, peak1, peak2, time_index_displacement3)
else:
print("Unable to find a stride within the signal based on the given prominence.")
/var/folders/dy/p7g7n6253j76sj1k7y99nbv80000gn/T/ipykernel_17124/1520386640.py:7: FutureWarning: Series.__getitem__ treating keys as positions is deprecated. In a future version, integer keys will always be treated as labels (consistent with DataFrame behavior). To access a value by position, use `ser.iloc[pos]` /var/folders/dy/p7g7n6253j76sj1k7y99nbv80000gn/T/ipykernel_17124/1520386640.py:8: FutureWarning: Series.__getitem__ treating keys as positions is deprecated. In a future version, integer keys will always be treated as labels (consistent with DataFrame behavior). To access a value by position, use `ser.iloc[pos]`
Calcul des ISG¶
peaks, troughs, min_length = identifier_foulees(displacement3)
Liste des ISG et des harmoniques pour chaque foulée¶
ISGs3, A1, A2 = calculate_ISG(min_length, troughs, displacement3)
for i in range(len(ISGs3)):
print_values(A1[i], A2[i], ISGs3[i])
A1: 0.698939 | A2: 1.240083 | ISG: 75.891516 A1: 0.748643 | A2: 1.238705 | ISG: 73.245629 A1: 0.703944 | A2: 1.052106 | ISG: 69.076556 A1: 0.816757 | A2: 1.216737 | ISG: 68.936940 A1: 0.740528 | A2: 1.333697 | ISG: 76.435304 A1: 0.598091 | A2: 1.375213 | ISG: 84.094046 A1: 0.442680 | A2: 1.353905 | ISG: 90.341890 A1: 0.326693 | A2: 1.347250 | ISG: 94.446459 A1: 0.297279 | A2: 1.257692 | ISG: 94.708608 A1: 0.287086 | A2: 1.336657 | ISG: 95.590406 A1: 0.293073 | A2: 1.500849 | ISG: 96.326957 A1: 0.249537 | A2: 1.471015 | ISG: 97.202853 A1: 0.295299 | A2: 1.334943 | ISG: 95.335014 A1: 0.411954 | A2: 1.385066 | ISG: 91.872737 A1: 0.474667 | A2: 1.423121 | ISG: 89.988862 A1: 0.528701 | A2: 1.310348 | ISG: 85.999516 A1: 0.549651 | A2: 1.391768 | ISG: 86.507449 A1: 0.576443 | A2: 1.377058 | ISG: 85.089717 A1: 0.576454 | A2: 1.416456 | ISG: 85.790963 A1: 0.521870 | A2: 1.450615 | ISG: 88.540564 A1: 0.424253 | A2: 1.369611 | ISG: 91.244838 A1: 0.381134 | A2: 1.395743 | ISG: 93.060767 A1: 0.442170 | A2: 1.435675 | ISG: 91.336194 A1: 0.375590 | A2: 1.385193 | ISG: 93.151477 A1: 0.303477 | A2: 1.416880 | ISG: 95.613640 A1: 0.329666 | A2: 1.367089 | ISG: 94.504514 A1: 0.266552 | A2: 1.307302 | ISG: 96.008638 A1: 0.285481 | A2: 1.363293 | ISG: 95.799151 A1: 0.353367 | A2: 1.218665 | ISG: 92.244289 A1: 0.552015 | A2: 1.344589 | ISG: 85.576335 A1: 0.701945 | A2: 1.482356 | ISG: 81.683741 A1: 0.563602 | A2: 1.260788 | ISG: 83.345145 A1: 0.487576 | A2: 1.136207 | ISG: 84.448841 A1: 0.577674 | A2: 1.193396 | ISG: 81.016742 A1: 0.552777 | A2: 1.292023 | ISG: 84.527590 A1: 0.435554 | A2: 1.295612 | ISG: 89.846106 A1: 0.347360 | A2: 1.337586 | ISG: 93.682114 A1: 0.319945 | A2: 1.325863 | ISG: 94.497348 A1: 0.356126 | A2: 1.109399 | ISG: 90.658051 A1: 0.463594 | A2: 1.191994 | ISG: 86.861265 A1: 0.438543 | A2: 1.317432 | ISG: 90.024610 A1: 0.367440 | A2: 1.350087 | ISG: 93.103682 A1: 0.356354 | A2: 1.427534 | ISG: 94.134066 A1: 0.326648 | A2: 1.358806 | ISG: 94.536831 A1: 0.339103 | A2: 1.336240 | ISG: 93.949548 A1: 0.459083 | A2: 1.374044 | ISG: 89.958003 A1: 0.567895 | A2: 1.413393 | ISG: 86.100025 A1: 0.503176 | A2: 1.257611 | ISG: 86.200661 A1: 0.328402 | A2: 1.130688 | ISG: 92.220451 A1: 0.423887 | A2: 1.334264 | ISG: 90.832348 A1: 0.458030 | A2: 1.342447 | ISG: 89.572769 A1: 0.419234 | A2: 1.228498 | ISG: 89.569095 A1: 0.360979 | A2: 1.279073 | ISG: 92.622786 A1: 0.406166 | A2: 1.364889 | ISG: 91.864928 A1: 0.477483 | A2: 1.404080 | ISG: 89.634142 A1: 0.563850 | A2: 1.388642 | ISG: 85.846363 A1: 0.586371 | A2: 1.393827 | ISG: 84.963123 A1: 0.522779 | A2: 1.336085 | ISG: 86.722927 A1: 0.468747 | A2: 1.341083 | ISG: 89.113030 A1: 0.353575 | A2: 1.503552 | ISG: 94.759777 A1: 0.514948 | A2: 1.319224 | ISG: 86.777923 A1: 0.643930 | A2: 1.338390 | ISG: 81.203149 A1: 0.665560 | A2: 1.365081 | ISG: 80.793997 A1: 0.583204 | A2: 1.193506 | ISG: 80.724820 A1: 0.469174 | A2: 1.286750 | ISG: 88.265370 A1: 0.308277 | A2: 1.208488 | ISG: 93.890306 A1: 0.176114 | A2: 1.251830 | ISG: 98.059180 A1: 0.203909 | A2: 1.297009 | ISG: 97.587965 A1: 0.240235 | A2: 1.268764 | ISG: 96.538905 A1: 0.296380 | A2: 1.228200 | ISG: 94.497264 A1: 0.332230 | A2: 1.158099 | ISG: 92.396027 A1: 0.404582 | A2: 1.300017 | ISG: 91.169877 A1: 0.535825 | A2: 1.413398 | ISG: 87.433992 A1: 0.504432 | A2: 1.459086 | ISG: 89.323919 A1: 0.528152 | A2: 1.268791 | ISG: 85.231476 A1: 0.693019 | A2: 1.248610 | ISG: 76.449046 A1: 0.636031 | A2: 1.474454 | ISG: 84.311530 A1: 0.387903 | A2: 1.382138 | ISG: 92.698433 A1: 0.294244 | A2: 1.279596 | ISG: 94.977822 A1: 0.282595 | A2: 1.412727 | ISG: 96.152549 A1: 0.276488 | A2: 1.482318 | ISG: 96.637862 A1: 0.281741 | A2: 1.349909 | ISG: 95.825784 A1: 0.209017 | A2: 1.322111 | ISG: 97.561599 A1: 0.269273 | A2: 1.404550 | ISG: 96.454831 A1: 0.385691 | A2: 1.352947 | ISG: 92.484052 A1: 0.483022 | A2: 1.321042 | ISG: 88.207494 A1: 0.566162 | A2: 1.529293 | ISG: 87.946378 A1: 0.429667 | A2: 1.444920 | ISG: 91.875852 A1: 0.366054 | A2: 1.231346 | ISG: 91.880093 A1: 0.459087 | A2: 1.208691 | ISG: 87.392379 A1: 0.530408 | A2: 1.371265 | ISG: 86.985581 A1: 0.575591 | A2: 1.397497 | ISG: 85.496469 A1: 0.602706 | A2: 1.386242 | ISG: 84.102094 A1: 0.637996 | A2: 1.379723 | ISG: 82.384424 A1: 0.664297 | A2: 1.319161 | ISG: 79.771040 A1: 0.529174 | A2: 1.318137 | ISG: 86.120248 A1: 0.345338 | A2: 1.286614 | ISG: 93.279829 A1: 0.424953 | A2: 1.406037 | ISG: 91.629972 A1: 0.478036 | A2: 1.352383 | ISG: 88.893182 A1: 0.515710 | A2: 1.254756 | ISG: 85.548734 A1: 0.652764 | A2: 1.379101 | ISG: 81.696839 A1: 0.675800 | A2: 1.340696 | ISG: 79.739526 A1: 0.593669 | A2: 1.273068 | ISG: 82.138033 A1: 0.500160 | A2: 1.315727 | ISG: 87.373932 A1: 0.341791 | A2: 1.307488 | ISG: 93.603567 A1: 0.322773 | A2: 1.448884 | ISG: 95.271841 A1: 0.312818 | A2: 1.403880 | ISG: 95.269798 A1: 0.253414 | A2: 1.449163 | ISG: 97.032817 A1: 0.225056 | A2: 1.493501 | ISG: 97.779671 A1: 0.184056 | A2: 1.216016 | ISG: 97.760339 A1: 0.091963 | A2: 1.126662 | ISG: 99.338151 A1: 0.147783 | A2: 1.270143 | ISG: 98.664320 A1: 0.304057 | A2: 1.425514 | ISG: 95.648440 A1: 0.385781 | A2: 1.402392 | ISG: 92.965025 A1: 0.456321 | A2: 1.438677 | ISG: 90.859221 A1: 0.473378 | A2: 1.390235 | ISG: 89.610427 A1: 0.520370 | A2: 1.364403 | ISG: 87.301291 A1: 0.559114 | A2: 1.376656 | ISG: 85.840668 A1: 0.598497 | A2: 1.372796 | ISG: 84.028697 A1: 0.513919 | A2: 1.345208 | ISG: 87.263672 A1: 0.345528 | A2: 1.263275 | ISG: 93.039528 A1: 0.289098 | A2: 1.318251 | ISG: 95.411266 A1: 0.342230 | A2: 1.275624 | ISG: 93.285628 A1: 0.379549 | A2: 1.337147 | ISG: 92.543674 A1: 0.396756 | A2: 1.382858 | ISG: 92.394345 A1: 0.461348 | A2: 1.443928 | ISG: 90.737030 A1: 0.559460 | A2: 1.500526 | ISG: 87.795414 A1: 0.533633 | A2: 1.327025 | ISG: 86.080267 A1: 0.549496 | A2: 1.376035 | ISG: 86.246530 A1: 0.573181 | A2: 1.404820 | ISG: 85.728576 A1: 0.542161 | A2: 1.400170 | ISG: 86.961646 A1: 0.550552 | A2: 1.323550 | ISG: 85.249476 A1: 0.448366 | A2: 1.206278 | ISG: 87.861381 A1: 0.465188 | A2: 1.301651 | ISG: 88.674296 A1: 0.501790 | A2: 1.259492 | ISG: 86.301542 A1: 0.515959 | A2: 1.216655 | ISG: 84.756961 A1: 0.578654 | A2: 1.332493 | ISG: 84.133615 A1: 0.469674 | A2: 1.345946 | ISG: 89.144896 A1: 0.252502 | A2: 1.284317 | ISG: 96.278539 A1: 0.210006 | A2: 1.392273 | ISG: 97.775446 A1: 0.270037 | A2: 1.371093 | ISG: 96.265898 A1: 0.347836 | A2: 1.362685 | ISG: 93.882924 A1: 0.482616 | A2: 1.615439 | ISG: 91.806033 A1: 0.421155 | A2: 1.564103 | ISG: 93.239882 A1: 0.327437 | A2: 1.343644 | ISG: 94.394265 A1: 0.432256 | A2: 1.333381 | ISG: 90.490115 A1: 0.424528 | A2: 1.365145 | ISG: 91.182115 A1: 0.357221 | A2: 1.415602 | ISG: 94.013376 A1: 0.340796 | A2: 1.363370 | ISG: 94.119154 A1: 0.351569 | A2: 1.376686 | ISG: 93.877724 A1: 0.403406 | A2: 1.493961 | ISG: 93.204172 A1: 0.468953 | A2: 1.442875 | ISG: 90.445895 A1: 0.528494 | A2: 1.441613 | ISG: 88.152726 A1: 0.648066 | A2: 1.226429 | ISG: 78.172336 A1: 0.662908 | A2: 1.095717 | ISG: 73.205144 A1: 0.703597 | A2: 1.171162 | ISG: 73.479530 A1: 0.660687 | A2: 1.189438 | ISG: 76.421200 A1: 0.734931 | A2: 1.358418 | ISG: 77.357292 A1: 0.738469 | A2: 1.434394 | ISG: 79.048281 A1: 0.640490 | A2: 1.396550 | ISG: 82.621751 A1: 0.462784 | A2: 1.312870 | ISG: 88.947813 A1: 0.533587 | A2: 1.529383 | ISG: 89.148435 A1: 0.671995 | A2: 1.490848 | ISG: 83.113613 A1: 0.724189 | A2: 1.239821 | ISG: 74.561109 A1: 0.738574 | A2: 1.368512 | ISG: 77.443324 A1: 0.584896 | A2: 1.287648 | ISG: 82.896015 A1: 0.431359 | A2: 1.146001 | ISG: 87.590219 A1: 0.576299 | A2: 1.346225 | ISG: 84.512507 A1: 0.774316 | A2: 1.470507 | ISG: 78.292004 A1: 0.722280 | A2: 1.355417 | ISG: 77.883733 A1: 0.666448 | A2: 1.063761 | ISG: 71.813089 A1: 0.688498 | A2: 1.021783 | ISG: 68.774178 A1: 0.691706 | A2: 1.204497 | ISG: 75.200085 A1: 0.605069 | A2: 1.226867 | ISG: 80.435732 A1: 0.447132 | A2: 1.257958 | ISG: 88.783157 A1: 0.476730 | A2: 1.259723 | ISG: 87.472429 A1: 0.411899 | A2: 1.234106 | ISG: 89.976760 A1: 0.385865 | A2: 1.348606 | ISG: 92.432951 A1: 0.403811 | A2: 1.342858 | ISG: 91.707231 A1: 0.430487 | A2: 1.333841 | ISG: 90.566368 A1: 0.536341 | A2: 1.474425 | ISG: 88.314010 A1: 0.559671 | A2: 1.381477 | ISG: 85.901310 A1: 0.528141 | A2: 1.432569 | ISG: 88.034714 A1: 0.548783 | A2: 1.433479 | ISG: 87.217328 A1: 0.587062 | A2: 1.366492 | ISG: 84.419016 A1: 0.547795 | A2: 1.384129 | ISG: 86.457836 A1: 0.568480 | A2: 1.332289 | ISG: 84.597490 A1: 0.663107 | A2: 1.169597 | ISG: 75.675251 A1: 0.636722 | A2: 1.232118 | ISG: 78.923368 A1: 0.576848 | A2: 1.400914 | ISG: 85.502925 A1: 0.541592 | A2: 1.394380 | ISG: 86.891333 A1: 0.545615 | A2: 1.481308 | ISG: 88.053797 A1: 0.601273 | A2: 1.329517 | ISG: 83.019956 A1: 0.619981 | A2: 1.302996 | ISG: 81.539664 A1: 0.586195 | A2: 1.373256 | ISG: 84.587075 A1: 0.580538 | A2: 1.393076 | ISG: 85.203220 A1: 0.641826 | A2: 1.444560 | ISG: 83.513747 A1: 0.642326 | A2: 1.414456 | ISG: 82.903585 A1: 0.609663 | A2: 1.449946 | ISG: 84.976370 A1: 0.586352 | A2: 1.371890 | ISG: 84.554090 A1: 0.463273 | A2: 1.457626 | ISG: 90.825353 A1: 0.247257 | A2: 1.576728 | ISG: 97.599871 A1: 0.296526 | A2: 1.435537 | ISG: 95.907857 A1: 0.402079 | A2: 1.453228 | ISG: 92.889182 A1: 0.478678 | A2: 1.532834 | ISG: 91.114468 A1: 0.553121 | A2: 1.407465 | ISG: 86.621945 A1: 0.602404 | A2: 1.446511 | ISG: 85.220022 A1: 0.586996 | A2: 1.370306 | ISG: 84.495168 A1: 0.417329 | A2: 1.183376 | ISG: 88.938776 A1: 0.537165 | A2: 1.345969 | ISG: 86.260886 A1: 0.627218 | A2: 1.438453 | ISG: 84.024585 A1: 0.628703 | A2: 1.392591 | ISG: 83.068999 A1: 0.652552 | A2: 1.412623 | ISG: 82.413594 A1: 0.622493 | A2: 1.378537 | ISG: 83.062875 A1: 0.573053 | A2: 1.458320 | ISG: 86.624116 A1: 0.427136 | A2: 1.485732 | ISG: 92.365823 A1: 0.365539 | A2: 1.367082 | ISG: 93.327506 A1: 0.417045 | A2: 1.455488 | ISG: 92.412805 A1: 0.381326 | A2: 1.452552 | ISG: 93.552589 A1: 0.416289 | A2: 1.375434 | ISG: 91.608383 A1: 0.502259 | A2: 1.582271 | ISG: 90.846226 A1: 0.482237 | A2: 1.458000 | ISG: 90.139041 A1: 0.298594 | A2: 1.215173 | ISG: 94.305892 A1: 0.241151 | A2: 1.284705 | ISG: 96.596455 A1: 0.316115 | A2: 1.354588 | ISG: 94.835283 A1: 0.397268 | A2: 1.378392 | ISG: 92.330494 A1: 0.370427 | A2: 1.176217 | ISG: 90.976807 A1: 0.475919 | A2: 1.285750 | ISG: 87.949967 A1: 0.528859 | A2: 1.443053 | ISG: 88.159158 A1: 0.469549 | A2: 1.394944 | ISG: 89.822654 A1: 0.419831 | A2: 1.427508 | ISG: 92.039055 A1: 0.346673 | A2: 1.441256 | ISG: 94.530723 A1: 0.360037 | A2: 1.494629 | ISG: 94.515575 A1: 0.314138 | A2: 1.468101 | ISG: 95.621895 A1: 0.278129 | A2: 1.504443 | ISG: 96.695190 A1: 0.260833 | A2: 1.545339 | ISG: 97.230019 A1: 0.321951 | A2: 1.410806 | ISG: 95.050086 A1: 0.473307 | A2: 1.404725 | ISG: 89.804643 A1: 0.626938 | A2: 1.438731 | ISG: 84.041762 A1: 0.668795 | A2: 1.296085 | ISG: 78.972203 A1: 0.579814 | A2: 1.338937 | ISG: 84.208839 A1: 0.533725 | A2: 1.368959 | ISG: 86.805300 A1: 0.493207 | A2: 1.481230 | ISG: 90.019533 A1: 0.333835 | A2: 1.582861 | ISG: 95.741291 A1: 0.323898 | A2: 1.508168 | ISG: 95.591056 A1: 0.524998 | A2: 1.575815 | ISG: 90.009380 A1: 0.599266 | A2: 1.661736 | ISG: 88.491550 A1: 0.582619 | A2: 1.453458 | ISG: 86.156310 A1: 0.439433 | A2: 1.308061 | ISG: 89.858798 A1: 0.438991 | A2: 1.244483 | ISG: 88.933744 A1: 0.320594 | A2: 1.168434 | ISG: 92.998681 A1: 0.321103 | A2: 1.392942 | ISG: 94.954132 A1: 0.439596 | A2: 1.422299 | ISG: 91.280286 A1: 0.555539 | A2: 1.324610 | ISG: 85.041620 A1: 0.555506 | A2: 1.418166 | ISG: 86.697601 A1: 0.341066 | A2: 1.391838 | ISG: 94.335354 A1: 0.268646 | A2: 1.285213 | ISG: 95.813634 A1: 0.267424 | A2: 1.326817 | ISG: 96.096216 A1: 0.338079 | A2: 1.322643 | ISG: 93.867119 A1: 0.420696 | A2: 1.262563 | ISG: 90.006777 A1: 0.468275 | A2: 1.339929 | ISG: 89.115862 A1: 0.461493 | A2: 1.324925 | ISG: 89.180260 A1: 0.452423 | A2: 1.328985 | ISG: 89.614499 A1: 0.505157 | A2: 1.425329 | ISG: 88.840748 A1: 0.503954 | A2: 1.611264 | ISG: 91.089216 A1: 0.366034 | A2: 1.609785 | ISG: 95.083964 A1: 0.344974 | A2: 1.460304 | ISG: 94.714315 A1: 0.405091 | A2: 1.539769 | ISG: 93.526649 A1: 0.491373 | A2: 1.402291 | ISG: 89.064242 A1: 0.509387 | A2: 1.330420 | ISG: 87.214786 A1: 0.538829 | A2: 1.454130 | ISG: 87.926950 A1: 0.592883 | A2: 1.470603 | ISG: 86.018918 A1: 0.568285 | A2: 1.440170 | ISG: 86.527236 A1: 0.535107 | A2: 1.254521 | ISG: 84.606750 A1: 0.427833 | A2: 1.241878 | ISG: 89.390765 A1: 0.449546 | A2: 1.401257 | ISG: 90.668138 A1: 0.494605 | A2: 1.430775 | ISG: 89.325461 A1: 0.517962 | A2: 1.385128 | ISG: 87.731999 A1: 0.478666 | A2: 1.444431 | ISG: 90.104895 A1: 0.379189 | A2: 1.435276 | ISG: 93.475626 A1: 0.348842 | A2: 1.433169 | ISG: 94.406729 A1: 0.413964 | A2: 1.472312 | ISG: 92.673749 A1: 0.409043 | A2: 1.462329 | ISG: 92.743422 A1: 0.402573 | A2: 1.427290 | ISG: 92.630797 A1: 0.428772 | A2: 1.433092 | ISG: 91.783790 A1: 0.345019 | A2: 1.405157 | ISG: 94.313936 A1: 0.309513 | A2: 1.314345 | ISG: 94.745898 A1: 0.390458 | A2: 1.439417 | ISG: 93.146063 A1: 0.465038 | A2: 1.341470 | ISG: 89.271747 A1: 0.476806 | A2: 1.238749 | ISG: 87.096216 A1: 0.427391 | A2: 1.281852 | ISG: 89.995511 A1: 0.433888 | A2: 1.213049 | ISG: 88.657392 A1: 0.426730 | A2: 1.400359 | ISG: 91.503058 A1: 0.426826 | A2: 1.621058 | ISG: 93.516742 A1: 0.417302 | A2: 1.586904 | ISG: 93.532147 A1: 0.369316 | A2: 1.436532 | ISG: 93.800310 A1: 0.423969 | A2: 1.469301 | ISG: 92.313766 A1: 0.260386 | A2: 1.470337 | ISG: 96.959174 A1: 0.181039 | A2: 1.380698 | ISG: 98.309781 A1: 0.282339 | A2: 1.490730 | ISG: 96.537125 A1: 0.375266 | A2: 1.349491 | ISG: 92.822203 A1: 0.383460 | A2: 1.252205 | ISG: 91.426427 A1: 0.473297 | A2: 1.355905 | ISG: 89.138849 A1: 0.476756 | A2: 1.224834 | ISG: 86.842597 A1: 0.366735 | A2: 1.217247 | ISG: 91.678271 A1: 0.419160 | A2: 1.243622 | ISG: 89.798738 A1: 0.347603 | A2: 1.261631 | ISG: 92.944514 A1: 0.320164 | A2: 1.268048 | ISG: 94.007143 A1: 0.318085 | A2: 1.394155 | ISG: 95.052046 A1: 0.268029 | A2: 1.546659 | ISG: 97.084424 A1: 0.306038 | A2: 1.437660 | ISG: 95.664975 A1: 0.345663 | A2: 1.336155 | ISG: 93.727249 A1: 0.444387 | A2: 1.346583 | ISG: 90.178879 A1: 0.408977 | A2: 1.360764 | ISG: 91.715356 A1: 0.364997 | A2: 1.333643 | ISG: 93.031658 A1: 0.398534 | A2: 1.369048 | ISG: 92.187898 A1: 0.400614 | A2: 1.413980 | ISG: 92.569241 A1: 0.441959 | A2: 1.455167 | ISG: 91.554638 A1: 0.557485 | A2: 1.463780 | ISG: 87.332496 A1: 0.594210 | A2: 1.209885 | ISG: 80.566662 A1: 0.434123 | A2: 1.157110 | ISG: 87.660942 A1: 0.358072 | A2: 1.167614 | ISG: 91.403801 A1: 0.305658 | A2: 1.097327 | ISG: 92.799754 A1: 0.372903 | A2: 1.284217 | ISG: 92.223956 A1: 0.518434 | A2: 1.502730 | ISG: 89.363794 A1: 0.422776 | A2: 1.532574 | ISG: 92.928256 A1: 0.377522 | A2: 1.519565 | ISG: 94.186530 A1: 0.455791 | A2: 1.484883 | ISG: 91.389214 A1: 0.435872 | A2: 1.323086 | ISG: 90.209738 A1: 0.421942 | A2: 1.384513 | ISG: 91.501562 A1: 0.550717 | A2: 1.476876 | ISG: 87.792525 A1: 0.561944 | A2: 1.397532 | ISG: 86.082056 A1: 0.487051 | A2: 1.349547 | ISG: 88.476107 A1: 0.547584 | A2: 1.314598 | ISG: 85.214701 A1: 0.504292 | A2: 1.378243 | ISG: 88.192847 A1: 0.458861 | A2: 1.444063 | ISG: 90.829053 A1: 0.525056 | A2: 1.334320 | ISG: 86.591863 A1: 0.511920 | A2: 1.312849 | ISG: 86.802109 A1: 0.398099 | A2: 1.493897 | ISG: 93.369505 A1: 0.267271 | A2: 1.579079 | ISG: 97.214975 A1: 0.324988 | A2: 1.323114 | ISG: 94.310187 A1: 0.414382 | A2: 1.332347 | ISG: 91.180019 A1: 0.391764 | A2: 1.500427 | ISG: 93.617696 A1: 0.400839 | A2: 1.395985 | ISG: 92.383214 A1: 0.408424 | A2: 1.348539 | ISG: 91.598014 A1: 0.411116 | A2: 1.337729 | ISG: 91.370256 A1: 0.376979 | A2: 1.237357 | ISG: 91.506316 A1: 0.398236 | A2: 1.249516 | ISG: 90.778928 A1: 0.363792 | A2: 1.409254 | ISG: 93.752448 A1: 0.302507 | A2: 1.467853 | ISG: 95.925808 A1: 0.372152 | A2: 1.358787 | ISG: 93.022112 A1: 0.375893 | A2: 1.260545 | ISG: 91.833902 A1: 0.353851 | A2: 1.276272 | ISG: 92.861767 A1: 0.336024 | A2: 1.417150 | ISG: 94.677037 A1: 0.389348 | A2: 1.445519 | ISG: 93.235880 A1: 0.502281 | A2: 1.365678 | ISG: 88.084878 A1: 0.547376 | A2: 1.333228 | ISG: 85.575190 A1: 0.514156 | A2: 1.363917 | ISG: 87.557512 A1: 0.452903 | A2: 1.482558 | ISG: 91.464306 A1: 0.291331 | A2: 1.529565 | ISG: 96.499247 A1: 0.311635 | A2: 1.397574 | ISG: 95.263378 A1: 0.464824 | A2: 1.356976 | ISG: 89.498572 A1: 0.551527 | A2: 1.517050 | ISG: 88.325944 A1: 0.557525 | A2: 1.329298 | ISG: 85.040697 A1: 0.530347 | A2: 1.279143 | ISG: 85.331343 A1: 0.484000 | A2: 1.489864 | ISG: 90.453943 A1: 0.443088 | A2: 1.486633 | ISG: 91.841462 A1: 0.503692 | A2: 1.547386 | ISG: 90.419387 A1: 0.523829 | A2: 1.501925 | ISG: 89.155037 A1: 0.479313 | A2: 1.405238 | ISG: 89.578259 A1: 0.351657 | A2: 1.324731 | ISG: 93.417213 A1: 0.336151 | A2: 1.427766 | ISG: 94.747985 A1: 0.343328 | A2: 1.505068 | ISG: 95.053760 A1: 0.380414 | A2: 1.445115 | ISG: 93.519479 A1: 0.491384 | A2: 1.394534 | ISG: 88.955262 A1: 0.476745 | A2: 1.346774 | ISG: 88.864465 A1: 0.532450 | A2: 1.443515 | ISG: 88.023883 A1: 0.585941 | A2: 1.443570 | ISG: 85.855162 A1: 0.510830 | A2: 1.401695 | ISG: 88.275701 A1: 0.409852 | A2: 1.304735 | ISG: 91.018691 A1: 0.391057 | A2: 1.313365 | ISG: 91.856365 A1: 0.405101 | A2: 1.262799 | ISG: 90.669218 A1: 0.349876 | A2: 1.288174 | ISG: 93.129840 A1: 0.239624 | A2: 1.491676 | ISG: 97.484365 A1: 0.282298 | A2: 1.472572 | ISG: 96.455223 A1: 0.314428 | A2: 1.425108 | ISG: 95.357998 A1: 0.350378 | A2: 1.439553 | ISG: 94.407262 A1: 0.466659 | A2: 1.454107 | ISG: 90.662431 A1: 0.479230 | A2: 1.516462 | ISG: 90.920039 A1: 0.372750 | A2: 1.447182 | ISG: 93.778543 A1: 0.232246 | A2: 1.340704 | ISG: 97.086660 A1: 0.188159 | A2: 1.307839 | ISG: 97.972114 A1: 0.259231 | A2: 1.201381 | ISG: 95.551133 A1: 0.440344 | A2: 1.179828 | ISG: 87.773295 A1: 0.562090 | A2: 1.338301 | ISG: 85.004925 A1: 0.645951 | A2: 1.286185 | ISG: 79.857683 A1: 0.603347 | A2: 1.372641 | ISG: 83.807837 A1: 0.416655 | A2: 1.449798 | ISG: 92.370912 A1: 0.331109 | A2: 1.424726 | ISG: 94.875696 A1: 0.253932 | A2: 1.473263 | ISG: 97.114905 A1: 0.309472 | A2: 1.460161 | ISG: 95.701103 A1: 0.477765 | A2: 1.336090 | ISG: 88.662952 A1: 0.511949 | A2: 1.313501 | ISG: 86.812178 A1: 0.592670 | A2: 1.297184 | ISG: 82.730194 A1: 0.639418 | A2: 1.316969 | ISG: 80.923682 A1: 0.554087 | A2: 1.417953 | ISG: 86.753008 A1: 0.499735 | A2: 1.424142 | ISG: 89.036705 A1: 0.535465 | A2: 1.567783 | ISG: 89.553464 A1: 0.532938 | A2: 1.648485 | ISG: 90.537377 A1: 0.403531 | A2: 1.586312 | ISG: 93.922227 A1: 0.359126 | A2: 1.553634 | ISG: 94.927884 A1: 0.266039 | A2: 1.566949 | ISG: 97.198184 A1: 0.232541 | A2: 1.491656 | ISG: 97.627351 A1: 0.341046 | A2: 1.435825 | ISG: 94.659446 A1: 0.307727 | A2: 1.519902 | ISG: 96.062207 A1: 0.258879 | A2: 1.591867 | ISG: 97.423428 A1: 0.340672 | A2: 1.477668 | ISG: 94.953067 A1: 0.445190 | A2: 1.494669 | ISG: 91.851340 A1: 0.514659 | A2: 1.621852 | ISG: 90.851514 A1: 0.456450 | A2: 1.553144 | ISG: 92.049666 A1: 0.290971 | A2: 1.311236 | ISG: 95.306878 A1: 0.375296 | A2: 1.272178 | ISG: 91.994053 A1: 0.405450 | A2: 1.343530 | ISG: 91.653068 A1: 0.361965 | A2: 1.381401 | ISG: 93.575266 A1: 0.486013 | A2: 1.361582 | ISG: 88.698768 A1: 0.561380 | A2: 1.344057 | ISG: 85.146014 A1: 0.502993 | A2: 1.460006 | ISG: 89.390245 A1: 0.412945 | A2: 1.445115 | ISG: 92.450966 A1: 0.370780 | A2: 1.309825 | ISG: 92.581296 A1: 0.450991 | A2: 1.367185 | ISG: 90.186532 A1: 0.418125 | A2: 1.583589 | ISG: 93.482838 A1: 0.407635 | A2: 1.430495 | ISG: 92.489584 A1: 0.277807 | A2: 1.288134 | ISG: 95.555537 A1: 0.273368 | A2: 1.222151 | ISG: 95.235210 A1: 0.211000 | A2: 1.162011 | ISG: 96.808049 A1: 0.179372 | A2: 1.419887 | ISG: 98.429179 A1: 0.444311 | A2: 1.541657 | ISG: 92.330887 A1: 0.514431 | A2: 1.472638 | ISG: 89.124272 A1: 0.557823 | A2: 1.569865 | ISG: 88.789384 A1: 0.620058 | A2: 1.549268 | ISG: 86.193431 A1: 0.737611 | A2: 1.699354 | ISG: 84.146568 A1: 0.506116 | A2: 1.840437 | ISG: 92.969323 A1: 0.310581 | A2: 1.665513 | ISG: 96.639472 A1: 0.330723 | A2: 1.636757 | ISG: 96.077332 A1: 0.320484 | A2: 1.526300 | ISG: 95.777249 A1: 0.315709 | A2: 1.460072 | ISG: 95.533376 A1: 0.235764 | A2: 1.467600 | ISG: 97.484223 A1: 0.244951 | A2: 1.406289 | ISG: 97.055383 A1: 0.249856 | A2: 1.440000 | ISG: 97.077381 A1: 0.233812 | A2: 1.502374 | ISG: 97.635256 A1: 0.234176 | A2: 1.466445 | ISG: 97.513328 A1: 0.285575 | A2: 1.362555 | ISG: 95.792134 A1: 0.264999 | A2: 1.264044 | ISG: 95.789987 A1: 0.229493 | A2: 1.277861 | ISG: 96.875473 A1: 0.182809 | A2: 1.364908 | ISG: 98.237760 A1: 0.142803 | A2: 1.477625 | ISG: 99.074639 A1: 0.347163 | A2: 1.480002 | ISG: 94.784676 A1: 0.398649 | A2: 1.441071 | ISG: 92.891364 A1: 0.409907 | A2: 1.492687 | ISG: 92.987732 A1: 0.444155 | A2: 1.423506 | ISG: 91.128361 A1: 0.374171 | A2: 1.402444 | ISG: 93.354821 A1: 0.447385 | A2: 1.275049 | ISG: 89.038122 A1: 0.435712 | A2: 1.205580 | ISG: 88.447115 A1: 0.432927 | A2: 1.211998 | ISG: 88.684519 A1: 0.469503 | A2: 1.304615 | ISG: 88.533782 A1: 0.277932 | A2: 1.552640 | ISG: 96.895167 A1: 0.332164 | A2: 1.496800 | ISG: 95.306461 A1: 0.572512 | A2: 1.248092 | ISG: 82.616342 A1: 0.553551 | A2: 1.372755 | ISG: 86.013869 A1: 0.501233 | A2: 1.394733 | ISG: 88.562125 A1: 0.409194 | A2: 1.288129 | ISG: 90.833816 A1: 0.333338 | A2: 1.464112 | ISG: 95.071977 A1: 0.433742 | A2: 1.565346 | ISG: 92.869557 A1: 0.376566 | A2: 1.515444 | ISG: 94.184578 A1: 0.322716 | A2: 1.358639 | ISG: 94.659335 A1: 0.493213 | A2: 1.273413 | ISG: 86.955496 A1: 0.540341 | A2: 1.369517 | ISG: 86.530016 A1: 0.485293 | A2: 1.469856 | ISG: 90.170681 A1: 0.494515 | A2: 1.401731 | ISG: 88.931565 A1: 0.534091 | A2: 1.398508 | ISG: 87.271588 A1: 0.575611 | A2: 1.346181 | ISG: 84.542866 A1: 0.544763 | A2: 1.241658 | ISG: 83.858032 A1: 0.390336 | A2: 1.187961 | ISG: 90.255760 A1: 0.340627 | A2: 1.211456 | ISG: 92.673483 A1: 0.379478 | A2: 1.288166 | ISG: 92.014776 A1: 0.320848 | A2: 1.239465 | ISG: 93.719966 A1: 0.170010 | A2: 1.158231 | ISG: 97.890893 A1: 0.213467 | A2: 1.328036 | ISG: 97.481380 A1: 0.321043 | A2: 1.421797 | ISG: 95.148730 A1: 0.422047 | A2: 1.387176 | ISG: 91.527516 A1: 0.536851 | A2: 1.377084 | ISG: 86.807054 A1: 0.514288 | A2: 1.301614 | ISG: 86.496503 A1: 0.378520 | A2: 1.297340 | ISG: 92.155064 A1: 0.308215 | A2: 1.369173 | ISG: 95.176945 A1: 0.341609 | A2: 1.215472 | ISG: 92.679295 A1: 0.461933 | A2: 1.339570 | ISG: 89.372506 A1: 0.562473 | A2: 1.469281 | ISG: 87.217990 A1: 0.586533 | A2: 1.315908 | ISG: 83.425739 A1: 0.655812 | A2: 1.369682 | ISG: 81.350084 A1: 0.650235 | A2: 1.354585 | ISG: 81.272756 A1: 0.552024 | A2: 1.292770 | ISG: 84.578287 A1: 0.472121 | A2: 1.212409 | ISG: 86.832838 A1: 0.381167 | A2: 1.180593 | ISG: 90.560114 A1: 0.496521 | A2: 1.361612 | ISG: 88.263234 A1: 0.576427 | A2: 1.502588 | ISG: 87.171307 A1: 0.612002 | A2: 1.237019 | ISG: 80.336309 A1: 0.666035 | A2: 1.274919 | ISG: 78.559770 A1: 0.619964 | A2: 1.447063 | ISG: 84.491466 A1: 0.612649 | A2: 1.511444 | ISG: 85.888453 A1: 0.528483 | A2: 1.529111 | ISG: 89.329625 A1: 0.497130 | A2: 1.508050 | ISG: 90.198207 A1: 0.441535 | A2: 1.617846 | ISG: 93.068025 A1: 0.510248 | A2: 1.454728 | ISG: 89.045069 A1: 0.720863 | A2: 1.110425 | ISG: 70.351626 A1: 0.665674 | A2: 1.015281 | ISG: 69.935785 A1: 0.625423 | A2: 1.162620 | ISG: 77.556489 A1: 0.526489 | A2: 1.130992 | ISG: 82.189536 A1: 0.581699 | A2: 1.202950 | ISG: 81.048384 A1: 0.610291 | A2: 1.475269 | ISG: 85.387478 A1: 0.600131 | A2: 1.375380 | ISG: 84.006018 A1: 0.522415 | A2: 1.349984 | ISG: 86.975249 A1: 0.457819 | A2: 1.380142 | ISG: 90.087048 A1: 0.418677 | A2: 1.353602 | ISG: 91.268352 A1: 0.238022 | A2: 1.388335 | ISG: 97.144621 A1: 0.208690 | A2: 1.403016 | ISG: 97.835420 A1: 0.204646 | A2: 1.521252 | ISG: 98.222484 A1: 0.132886 | A2: 1.476156 | ISG: 99.196124 A1: 0.276464 | A2: 1.420841 | ISG: 96.352078 A1: 0.335917 | A2: 1.409962 | ISG: 94.628798 A1: 0.269340 | A2: 1.385263 | ISG: 96.357317 A1: 0.257108 | A2: 1.346141 | ISG: 96.480420 A1: 0.311608 | A2: 1.334868 | ISG: 94.832306 A1: 0.347141 | A2: 1.399995 | ISG: 94.207790 A1: 0.331554 | A2: 1.377092 | ISG: 94.520872 A1: 0.348467 | A2: 1.436444 | ISG: 94.442102 A1: 0.397288 | A2: 1.457428 | ISG: 93.083153 A1: 0.470679 | A2: 1.404780 | ISG: 89.906887 A1: 0.594558 | A2: 1.298821 | ISG: 82.675311 A1: 0.578375 | A2: 1.206102 | ISG: 81.303491 A1: 0.575613 | A2: 1.231147 | ISG: 82.061658 A1: 0.639836 | A2: 1.374070 | ISG: 82.180718 A1: 0.537625 | A2: 1.332675 | ISG: 86.003304 A1: 0.454688 | A2: 1.483514 | ISG: 91.412806 A1: 0.260135 | A2: 1.639212 | ISG: 97.543449 A1: 0.056615 | A2: 1.317163 | ISG: 99.815591 A1: 0.210041 | A2: 1.481844 | ISG: 98.030458 A1: 0.315857 | A2: 1.483904 | ISG: 95.665633 A1: 0.306795 | A2: 1.370790 | ISG: 95.229878 A1: 0.367078 | A2: 1.347333 | ISG: 93.090125 A1: 0.483084 | A2: 1.242478 | ISG: 86.868093 A1: 0.462157 | A2: 1.160586 | ISG: 86.313195 A1: 0.500740 | A2: 1.215608 | ISG: 85.493284 A1: 0.517690 | A2: 1.335819 | ISG: 86.942081 A1: 0.582820 | A2: 1.482823 | ISG: 86.618622 A1: 0.575955 | A2: 1.623378 | ISG: 88.819838 A1: 0.406396 | A2: 1.525595 | ISG: 93.374063 A1: 0.419973 | A2: 1.414556 | ISG: 91.899439 A1: 0.446782 | A2: 1.470656 | ISG: 91.550511 A1: 0.446630 | A2: 1.587689 | ISG: 92.666861 A1: 0.440712 | A2: 1.452553 | ISG: 91.570499 A1: 0.279233 | A2: 1.445128 | ISG: 96.400839 A1: 0.088769 | A2: 1.470000 | ISG: 99.636667 A1: 0.127311 | A2: 1.321321 | ISG: 99.080183 A1: 0.200931 | A2: 1.428287 | ISG: 98.059337 A1: 0.136847 | A2: 1.561531 | ISG: 99.237838 A1: 0.102395 | A2: 1.488429 | ISG: 99.528967 A1: 0.103884 | A2: 1.490846 | ISG: 99.516796 A1: 0.125190 | A2: 1.487610 | ISG: 99.296766 A1: 0.090071 | A2: 1.455270 | ISG: 99.618391 A1: 0.080424 | A2: 1.525556 | ISG: 99.722851 A1: 0.251713 | A2: 1.432376 | ISG: 97.004366 A1: 0.470516 | A2: 1.261864 | ISG: 87.793637 A1: 0.509714 | A2: 1.331714 | ISG: 87.222135 A1: 0.442654 | A2: 1.342975 | ISG: 90.200527 A1: 0.391606 | A2: 1.454788 | ISG: 93.243555 A1: 0.296147 | A2: 1.489490 | ISG: 96.197207 A1: 0.340303 | A2: 1.211971 | ISG: 92.692133 A1: 0.473972 | A2: 1.032076 | ISG: 82.583018 A1: 0.567317 | A2: 1.240137 | ISG: 82.694371 A1: 0.493281 | A2: 1.377547 | ISG: 88.634732 A1: 0.460206 | A2: 1.342822 | ISG: 89.489141 A1: 0.570048 | A2: 1.432941 | ISG: 86.336540 A1: 0.599277 | A2: 1.449617 | ISG: 85.404183 A1: 0.537612 | A2: 1.364658 | ISG: 86.565154 A1: 0.560624 | A2: 1.404069 | ISG: 86.249369 A1: 0.494836 | A2: 1.530558 | ISG: 90.536602 A1: 0.447960 | A2: 1.373406 | ISG: 90.384461 A1: 0.519338 | A2: 1.379755 | ISG: 87.590531 A1: 0.496552 | A2: 1.425862 | ISG: 89.184094 A1: 0.470030 | A2: 1.436286 | ISG: 90.326474 A1: 0.493679 | A2: 1.586900 | ISG: 91.175901 A1: 0.522466 | A2: 1.531067 | ISG: 89.569861 A1: 0.455378 | A2: 1.512348 | ISG: 91.687181 A1: 0.466577 | A2: 1.547594 | ISG: 91.667976 A1: 0.516025 | A2: 1.487451 | ISG: 89.257603 A1: 0.591885 | A2: 1.464255 | ISG: 85.955246 A1: 0.655190 | A2: 1.428775 | ISG: 82.625211 A1: 0.644581 | A2: 1.366046 | ISG: 81.789511 A1: 0.656444 | A2: 1.408749 | ISG: 82.160206 A1: 0.499600 | A2: 1.368769 | ISG: 88.243747 A1: 0.317968 | A2: 1.275082 | ISG: 94.145496 A1: 0.383132 | A2: 1.450654 | ISG: 93.479431 A1: 0.396183 | A2: 1.424272 | ISG: 92.818127 A1: 0.444300 | A2: 1.420412 | ISG: 91.087814 A1: 0.482642 | A2: 1.510532 | ISG: 90.736566 A1: 0.418616 | A2: 1.332796 | ISG: 91.020650 A1: 0.429333 | A2: 1.366840 | ISG: 91.019732 A1: 0.431473 | A2: 1.432230 | ISG: 91.679406 A1: 0.415070 | A2: 1.336851 | ISG: 91.207586 A1: 0.556283 | A2: 1.328262 | ISG: 85.077571 A1: 0.615470 | A2: 1.371641 | ISG: 83.240310 A1: 0.508297 | A2: 1.329367 | ISG: 87.244871 A1: 0.398922 | A2: 1.338526 | ISG: 91.842351 A1: 0.393416 | A2: 1.449548 | ISG: 93.139245 A1: 0.415589 | A2: 1.403236 | ISG: 91.935975 A1: 0.505835 | A2: 1.330164 | ISG: 87.365763 A1: 0.587161 | A2: 1.397530 | ISG: 84.996478 A1: 0.525718 | A2: 1.360610 | ISG: 87.010030 A1: 0.475058 | A2: 1.449629 | ISG: 90.302108 A1: 0.268017 | A2: 1.530064 | ISG: 97.022983 A1: 0.299254 | A2: 1.555931 | ISG: 96.432837 A1: 0.834359 | A2: 1.094550 | ISG: 63.247965
Création d'un dataframe¶
values_list3 = []
for i in range(len(ISGs3)):
append_values_to_list(A1[i], A2[i], ISGs3[i], values_list3)
df_ISG3 = pd.DataFrame(values_list3)
df_ISG3.head()
A1 | A2 | ISG | |
---|---|---|---|
0 | 0.698939 | 1.240083 | 75.891516 |
1 | 0.748643 | 1.238705 | 73.245629 |
2 | 0.703944 | 1.052106 | 69.076556 |
3 | 0.816757 | 1.216737 | 68.936940 |
4 | 0.740528 | 1.333697 | 76.435304 |
Valeur de l'ISG¶
df_ISG3.describe()
A1 | A2 | ISG | |
---|---|---|---|
count | 622.000000 | 622.000000 | 622.000000 |
mean | 0.441486 | 1.377915 | 89.973741 |
std | 0.133383 | 0.112100 | 5.575059 |
min | 0.056615 | 1.015281 | 63.247965 |
25% | 0.345562 | 1.314880 | 86.759237 |
50% | 0.442667 | 1.377320 | 90.736798 |
75% | 0.535735 | 1.449909 | 93.942718 |
max | 0.834359 | 1.840437 | 99.815591 |
ISG de 89.973741 pour ce jeu de données
plt.figure(figsize=(10, 4))
px.line(df_ISG3, x=df_ISG3.index, y='ISG', title='ISG pour chaque foulée')
<Figure size 1000x400 with 0 Axes>
Boxplot des ISG pour visualiser les valeurs aberantes¶
plt.figure(figsize=(10, 4))
plt.boxplot(ISGs3)
plt.title('Boxplot de ISG')
plt.ylabel('ISG')
plt.grid(True)
plt.show()
Tri des valeurs aberantes¶
Les points qui apparaissent en dehors des moustaches représentent des valeurs aberrantes.
min_value3 = 76
max_value3 = 100
ISGs_filtered3 = ISG_min_max(ISGs3, min_value3, max_value3)
plt.figure(figsize=(10, 4))
plt.plot(np.arange(len(ISGs_filtered3)), ISGs_filtered3, label='ISG', color='green')
plt.title('ISG pour chaque foulée (Filtré)')
plt.xlabel('Foulée')
plt.ylabel('ISG')
plt.legend()
plt.grid(True)
plt.figure(figsize=(10, 4))
plt.boxplot(ISGs_filtered3)
plt.title('Boxplot de ISG (Filtré)')
Text(0.5, 1.0, 'Boxplot de ISG (Filtré)')
Les données filtrées¶
df_ISG_filtered3 = df_ISG3[(df_ISG3['ISG'] >= min_value3) & (df_ISG3['ISG'] <= max_value3)]
df_ISG_filtered3.describe()
A1 | A2 | ISG | |
---|---|---|---|
count | 608.000000 | 608.000000 | 608.000000 |
mean | 0.435221 | 1.383436 | 90.395185 |
std | 0.128034 | 0.106547 | 4.860927 |
min | 0.056615 | 1.032076 | 76.421200 |
25% | 0.344562 | 1.321251 | 86.929394 |
50% | 0.439514 | 1.379948 | 90.848870 |
75% | 0.529467 | 1.452552 | 94.122882 |
max | 0.774316 | 1.840437 | 99.815591 |
Apres un filtre des données, l'ISG moyen est de 90.725321
4 - Données au trot en cercle à gauche¶
Relevé de données effectués le 2024-01-01
En cercle à gauche, le téléphone est à l'interieux du cercle
Charger les données¶
Trot_gauche = pd.read_csv('data/Trot_Gauche_Cercle.csv')
Trot_gauche.reset_index(inplace=True)
Trot_gauche.columns = ['time', 'gFx', 'gFy', 'gFz', 'alpha']
Trot_gauche['time'] = Trot_gauche['time'].map(pd.to_datetime)
Trot_gauche.set_index('time', inplace=True)
Trot_gauche.head()
gFx | gFy | gFz | alpha | |
---|---|---|---|---|
time | ||||
2024-01-01 15:03:45.018 | 0.117 | -0.787 | -0.608 | 1.001 |
2024-01-01 15:03:45.018 | 0.117 | -0.787 | -0.608 | 1.001 |
2024-01-01 15:03:45.018 | 0.117 | -0.787 | -0.608 | 1.001 |
2024-01-01 15:03:45.024 | 0.104 | -0.785 | -0.616 | 1.003 |
2024-01-01 15:03:45.034 | 0.096 | -0.784 | -0.609 | 0.997 |
Trot_gauche.tail()
gFx | gFy | gFz | alpha | |
---|---|---|---|---|
time | ||||
2024-01-01 15:08:25.834 | 0.046 | -0.738 | -0.679 | 1.004 |
2024-01-01 15:08:25.844 | 0.045 | -0.742 | -0.674 | 1.003 |
2024-01-01 15:08:25.875 | 0.046 | -0.733 | -0.692 | 1.009 |
2024-01-01 15:08:25.875 | 0.046 | -0.733 | -0.692 | 1.009 |
2024-01-01 15:08:25.876 | 0.046 | -0.733 | -0.692 | 1.009 |
Travail sur les données¶
Visualisation de alpha pour trier¶
plt.figure(figsize=(15, 5))
plt.plot(Trot_gauche.index, Trot_gauche['alpha'], label='alpha')
plt.xlabel('Time')
plt.ylabel('alpha')
plt.legend()
plt.grid(True)
Filtrer les données¶
Trot_gauche_sort = Trot_gauche['2024-01-01 15:04:00.018':'2024-01-01 15:08:00.876']
Trot_gauche_sort.head()
gFx | gFy | gFz | alpha | |
---|---|---|---|---|
time | ||||
2024-01-01 15:04:00.030 | 0.001 | -0.341 | -0.702 | 0.780 |
2024-01-01 15:04:00.031 | 0.001 | -0.341 | -0.702 | 0.780 |
2024-01-01 15:04:00.038 | -0.118 | -0.320 | -0.619 | 0.707 |
2024-01-01 15:04:00.051 | -0.229 | -0.243 | -0.489 | 0.592 |
2024-01-01 15:04:00.058 | -0.255 | -0.186 | -0.254 | 0.405 |
Données de alpha vs Temps¶
plt.figure(figsize=(12, 6))
plt.plot(Trot_gauche_sort['alpha'])
plt.xlabel("Temps")
plt.ylabel("Valeur de la 5ème Colonne (alpha)")
plt.title("Données de la 5ème Colonne (alpha) vs Temps (Entre 40s et 1 Après le Début)")
plt.legend()
plt.show()
No artists with labels found to put in legend. Note that artists whose label start with an underscore are ignored when legend() is called with no argument.
Données de alpha sur 5 secondes¶
start_time4 = Trot_gauche_sort.index.min()
end_time4 = start_time4 + pd.Timedelta(seconds=5)
Trot_gauche_sort_5s = Trot_gauche_sort[start_time4:end_time4]
plt.figure(figsize=(12, 6))
plt.plot(Trot_gauche_sort_5s['alpha'])
plt.xlabel("Temps")
plt.ylabel("Valeur de la 5ème Colonne (alpha)")
plt.title("Données de la 5ème Colonne (alpha) vs Temps (5s)")
plt.legend()
plt.show()
No artists with labels found to put in legend. Note that artists whose label start with an underscore are ignored when legend() is called with no argument.
Calcul de d2Z¶
d2Z = (alpha - 1) * 9.81.
# Calculate d2Z = (alpha - 1) * 9.81.
Trot_gauche_new = Trot_gauche_sort.copy()
Trot_gauche_new['d2z'] = (Trot_gauche_new['alpha'] - 1) * 9.81
Trot_gauche_new.head()
gFx | gFy | gFz | alpha | d2z | |
---|---|---|---|---|---|
time | |||||
2024-01-01 15:04:00.030 | 0.001 | -0.341 | -0.702 | 0.780 | -2.15820 |
2024-01-01 15:04:00.031 | 0.001 | -0.341 | -0.702 | 0.780 | -2.15820 |
2024-01-01 15:04:00.038 | -0.118 | -0.320 | -0.619 | 0.707 | -2.87433 |
2024-01-01 15:04:00.051 | -0.229 | -0.243 | -0.489 | 0.592 | -4.00248 |
2024-01-01 15:04:00.058 | -0.255 | -0.186 | -0.254 | 0.405 | -5.83695 |
Tracer d2Z en fonction du temps¶
plt.figure(figsize=(12, 6))
plt.plot(Trot_gauche_new['d2z'])
plt.xlabel("Temps")
plt.ylabel("Valeur de d2Z")
plt.title("Valeur de d2Z vs Temps (Entre 40s et 1 Après le Début)")
plt.legend()
plt.show()
No artists with labels found to put in legend. Note that artists whose label start with an underscore are ignored when legend() is called with no argument.
Données de d2Z sur 5 secondes¶
start_time4 = Trot_gauche_new.index.min()
end_time4 = start_time4 + pd.Timedelta(seconds=5)
Trot_gauche_new_5s = Trot_gauche_new[start_time4:end_time4]
plt.figure(figsize=(12, 6))
plt.plot(Trot_gauche_new_5s['d2z'])
plt.xlabel("Temps")
plt.ylabel("Valeur de d2Z")
plt.title("Valeur de d2Z vs Temps (5s)")
plt.legend()
plt.show()
No artists with labels found to put in legend. Note that artists whose label start with an underscore are ignored when legend() is called with no argument.
Calcul du déplacement¶
Calcul de la fréquence d'échantillonnage à partir des données¶
fs4 = 1.0 / (Trot_gauche_new.index.to_series().diff().median().total_seconds())
print("Fréquence d'échantillonnage : ", fs4)
Fréquence d'échantillonnage : 100.0
Étape 1 : Filtrer passe-haut pour retirer la gravité des données d'accélération¶
cutoff4 = 1
fs4 = fs4
order4 = 5
b, a = butter_highpass(cutoff4, fs4, order=order4)
Trot_gauche_new['d2z_filtre'] = filtfilt(b, a, Trot_gauche_new['d2z'])
Étape 2 : Intégrer l'accélération filtrée passe-haut pour obtenir la vitesse¶
velocity = cumtrapz(Trot_gauche_new['d2z_filtre'], dx=1/fs4, initial=0)
Étape 3 : Filtrer passe-haut la vitesse pour retirer les dérives de basse fréquence¶
b, a = butter_highpass(cutoff4, fs4, order=order4)
Trot_gauche_new['velocity'] = filtfilt(b, a, velocity)
Étape 4 : Intégrer la vitesse filtrée passe-haut pour obtenir le déplacement¶
Trot_gauche_new['deplacement'] = cumtrapz(Trot_gauche_new['velocity'], dx=1/fs4, initial=0)
Trot_gauche_new.head()
gFx | gFy | gFz | alpha | d2z | d2z_filtre | velocity | deplacement | |
---|---|---|---|---|---|---|---|---|
time | ||||||||
2024-01-01 15:04:00.030 | 0.001 | -0.341 | -0.702 | 0.780 | -2.15820 | -0.179675 | -0.126557 | 0.000000 |
2024-01-01 15:04:00.031 | 0.001 | -0.341 | -0.702 | 0.780 | -2.15820 | -0.409435 | -0.118838 | -0.001227 |
2024-01-01 15:04:00.038 | -0.118 | -0.320 | -0.619 | 0.707 | -2.87433 | -1.350684 | -0.117144 | -0.002407 |
2024-01-01 15:04:00.051 | -0.229 | -0.243 | -0.489 | 0.592 | -4.00248 | -2.699022 | -0.127077 | -0.003628 |
2024-01-01 15:04:00.058 | -0.255 | -0.186 | -0.254 | 0.405 | -5.83695 | -4.748473 | -0.154188 | -0.005034 |
Correction de l'index temporel pour correspondre aux dimensions après intégration¶
time_index4 = Trot_gauche_new.index
time_index_velocity4 = time_index4[:len(velocity)]
time_index_displacement4 = time_index4[:len(Trot_gauche_new['deplacement'])]
start_20s_window4 = time_index4[0]
end_20s_window4 = start_20s_window4 + pd.Timedelta(seconds=20)
Visualisation sur une fenetre de 20 secondes¶
# Tracé des signaux d2z, d2z_filtre, velocity, deplacement de la fenêtre de 20 secondes uniquement
window_data4 = Trot_gauche_new[(Trot_gauche_new.index >= start_20s_window4) & (Trot_gauche_new.index <= end_20s_window4)]
fig, axs = plt.subplots(4, 1, figsize=(23, 17), sharex=True)
axs[0].plot(window_data4.index, window_data4['d2z'], label='d2z')
axs[0].set_ylabel('Accélération (d2z)')
axs[0].legend()
axs[0].title.set_text('d2z original')
axs[0].set_xlabel('Temps')
axs[1].plot(window_data4.index, window_data4['d2z_filtre'], label='d2z_filtre', color='orange')
axs[1].set_ylabel('d2z_filtre')
axs[1].legend()
axs[1].title.set_text('d2z filtré (passe-haut)')
axs[1].set_xlabel('Temps')
axs[2].plot(window_data4.index, window_data4['velocity'], label='velocity', color='red')
axs[2].set_ylabel('velocity')
axs[2].legend()
axs[2].title.set_text('Vitesse filtrée (passe-haut)')
axs[2].set_xlabel('Temps')
axs[3].plot(window_data4.index, window_data4['deplacement'], label='deplacement', color='green')
axs[3].set_ylabel('deplacement')
axs[3].legend()
axs[3].title.set_text('Déplacement')
axs[3].set_xlabel('Temps')
plt.xlabel('Temps')
plt.suptitle('Signaux de la fenêtre de 20 secondes')
plt.show()
Calcul des foulées¶
Trouver les pics dans le signal de déplacement, donc les foulées du cheval.
displacement4 = Trot_gauche_new['deplacement']
time_index_displacement4 = Trot_gauche_new.index
peak1, peak2 = trouver_foulees(displacement4)
if peak1 is not None and peak2 is not None:
afficher_foulees(displacement4, peak1, peak2, time_index_displacement4)
else:
print("Unable to find a stride within the signal based on the given prominence.")
/var/folders/dy/p7g7n6253j76sj1k7y99nbv80000gn/T/ipykernel_17124/1520386640.py:7: FutureWarning: Series.__getitem__ treating keys as positions is deprecated. In a future version, integer keys will always be treated as labels (consistent with DataFrame behavior). To access a value by position, use `ser.iloc[pos]` /var/folders/dy/p7g7n6253j76sj1k7y99nbv80000gn/T/ipykernel_17124/1520386640.py:8: FutureWarning: Series.__getitem__ treating keys as positions is deprecated. In a future version, integer keys will always be treated as labels (consistent with DataFrame behavior). To access a value by position, use `ser.iloc[pos]`
Calcul des ISG¶
peaks, troughs, min_length = identifier_foulees(displacement4)
Liste des ISG et des harmoniques pour chaque foulée¶
ISGs4, A1, A2 = calculate_ISG(min_length, troughs, displacement4)
for i in range(len(ISGs4)):
print_values(A1[i], A2[i], ISGs4[i])
A1: 0.969723 | A2: 1.478746 | ISG: 69.928130 A1: 0.761792 | A2: 1.431815 | ISG: 77.937868 A1: 0.703605 | A2: 1.403140 | ISG: 79.907148 A1: 0.627063 | A2: 1.339420 | ISG: 82.022778 A1: 0.619129 | A2: 1.369755 | ISG: 83.035501 A1: 0.662991 | A2: 1.406840 | ISG: 81.827152 A1: 0.639881 | A2: 1.480145 | ISG: 84.253673 A1: 0.588927 | A2: 1.462729 | ISG: 86.050777 A1: 0.620294 | A2: 1.345051 | ISG: 82.462295 A1: 0.541775 | A2: 1.272708 | ISG: 84.659020 A1: 0.423092 | A2: 1.468203 | ISG: 92.332538 A1: 0.419196 | A2: 1.432132 | ISG: 92.108366 A1: 0.622866 | A2: 1.195944 | ISG: 78.662803 A1: 0.716530 | A2: 1.320739 | ISG: 77.260029 A1: 0.649610 | A2: 1.369086 | ISG: 81.623656 A1: 0.620752 | A2: 1.330057 | ISG: 82.114015 A1: 0.676317 | A2: 1.319051 | ISG: 79.183337 A1: 0.768937 | A2: 1.397966 | ISG: 76.772830 A1: 0.818638 | A2: 1.293051 | ISG: 71.386635 A1: 0.664933 | A2: 1.083250 | ISG: 72.632731 A1: 0.612849 | A2: 1.098313 | ISG: 76.257085 A1: 0.791952 | A2: 1.268891 | ISG: 71.966409 A1: 0.841045 | A2: 1.264279 | ISG: 69.322156 A1: 0.760264 | A2: 1.201424 | ISG: 71.406158 A1: 0.668038 | A2: 1.295893 | ISG: 79.004903 A1: 0.736929 | A2: 1.342771 | ISG: 76.852447 A1: 0.717448 | A2: 1.396632 | ISG: 79.121055 A1: 0.592563 | A2: 1.323029 | ISG: 83.291721 A1: 0.523559 | A2: 1.384075 | ISG: 87.482111 A1: 0.521121 | A2: 1.452798 | ISG: 88.600089 A1: 0.510991 | A2: 1.378793 | ISG: 87.923683 A1: 0.459213 | A2: 1.306575 | ISG: 89.005461 A1: 0.486327 | A2: 1.328694 | ISG: 88.185773 A1: 0.524031 | A2: 1.327872 | ISG: 86.524623 A1: 0.558728 | A2: 1.299779 | ISG: 84.403660 A1: 0.600912 | A2: 1.325816 | ISG: 82.958237 A1: 0.627151 | A2: 1.324566 | ISG: 81.687335 A1: 0.661583 | A2: 1.366329 | ISG: 81.007461 A1: 0.560533 | A2: 1.486581 | ISG: 87.552227 A1: 0.521106 | A2: 1.458976 | ISG: 88.686139 A1: 0.621945 | A2: 1.388867 | ISG: 83.296410 A1: 0.714806 | A2: 1.549612 | ISG: 82.455218 A1: 0.711830 | A2: 1.529859 | ISG: 82.203332 A1: 0.635991 | A2: 1.373628 | ISG: 82.347244 A1: 0.793310 | A2: 1.146349 | ISG: 67.617432 A1: 0.925646 | A2: 1.297189 | ISG: 66.260535 A1: 0.839050 | A2: 1.448338 | ISG: 74.872131 A1: 0.646018 | A2: 1.230431 | ISG: 78.390755 A1: 0.540826 | A2: 1.271707 | ISG: 84.684066 A1: 0.449889 | A2: 1.192084 | ISG: 87.532834 A1: 0.501495 | A2: 1.229231 | ISG: 85.730716 A1: 0.519961 | A2: 1.394569 | ISG: 87.795177 A1: 0.279044 | A2: 1.624186 | ISG: 97.132908 A1: 0.265989 | A2: 1.501935 | ISG: 96.959027 A1: 0.168295 | A2: 1.306549 | ISG: 98.367919 A1: 0.155027 | A2: 1.177320 | ISG: 98.295649 A1: 0.098916 | A2: 1.290538 | ISG: 99.415949 A1: 0.246462 | A2: 1.447467 | ISG: 97.182448 A1: 0.447928 | A2: 1.331414 | ISG: 89.832295 A1: 0.636437 | A2: 1.462908 | ISG: 84.085340 A1: 0.756151 | A2: 1.352774 | ISG: 76.193986 A1: 0.768604 | A2: 1.353467 | ISG: 75.615226 A1: 0.682147 | A2: 1.486621 | ISG: 82.607067 A1: 0.511135 | A2: 1.335587 | ISG: 87.224840 A1: 0.465694 | A2: 1.400288 | ISG: 90.041182 A1: 0.607458 | A2: 1.518036 | ISG: 86.197342 A1: 0.577769 | A2: 1.507377 | ISG: 87.190451 A1: 0.605592 | A2: 1.458349 | ISG: 85.292235 A1: 0.645926 | A2: 1.399984 | ISG: 82.448882 A1: 0.754414 | A2: 1.469048 | ISG: 79.131273 A1: 0.839470 | A2: 1.254431 | ISG: 69.068703 A1: 0.907869 | A2: 1.302990 | ISG: 67.318653 A1: 0.894562 | A2: 1.453207 | ISG: 72.519664 A1: 0.855229 | A2: 1.435767 | ISG: 73.811022 A1: 0.908759 | A2: 1.306437 | ISG: 67.391733 A1: 0.848723 | A2: 1.290849 | ISG: 69.817957 A1: 0.778191 | A2: 1.306659 | ISG: 73.817668 A1: 0.737300 | A2: 1.252102 | ISG: 74.253127 A1: 0.761849 | A2: 1.212898 | ISG: 71.708334 A1: 0.740019 | A2: 1.199455 | ISG: 72.429999 A1: 0.667314 | A2: 1.282178 | ISG: 78.686132 A1: 0.661474 | A2: 1.268775 | ISG: 78.628434 A1: 0.675159 | A2: 1.323032 | ISG: 79.338739 A1: 0.702130 | A2: 1.352070 | ISG: 78.760471 A1: 0.715504 | A2: 1.332695 | ISG: 77.624962 A1: 0.793765 | A2: 1.443860 | ISG: 76.791492 A1: 0.741820 | A2: 1.563307 | ISG: 81.621404 A1: 0.648133 | A2: 1.435435 | ISG: 83.065216 A1: 0.650355 | A2: 1.368418 | ISG: 81.574553 A1: 0.686005 | A2: 1.401450 | ISG: 80.670755 A1: 0.744954 | A2: 1.281435 | ISG: 74.740643 A1: 0.684411 | A2: 1.199717 | ISG: 75.446419 A1: 0.642644 | A2: 1.351464 | ISG: 81.558342 A1: 0.753252 | A2: 1.467608 | ISG: 79.149823 A1: 0.850246 | A2: 1.288603 | ISG: 69.668794 A1: 0.977994 | A2: 1.454056 | ISG: 68.852191 A1: 0.946299 | A2: 1.529827 | ISG: 72.326246 A1: 0.729752 | A2: 1.246873 | ISG: 74.485907 A1: 0.655834 | A2: 1.221525 | ISG: 77.624119 A1: 0.699467 | A2: 1.313871 | ISG: 77.916885 A1: 0.796422 | A2: 1.237520 | ISG: 70.712714 A1: 0.822540 | A2: 1.237248 | ISG: 69.349204 A1: 0.814361 | A2: 1.364240 | ISG: 73.728361 A1: 0.857897 | A2: 1.337393 | ISG: 70.847450 A1: 0.877307 | A2: 1.208461 | ISG: 65.486471 A1: 0.900291 | A2: 1.266643 | ISG: 66.436652 A1: 0.781356 | A2: 1.467159 | ISG: 77.904389 A1: 0.665173 | A2: 1.447182 | ISG: 82.558487 A1: 0.591900 | A2: 1.452185 | ISG: 85.753573 A1: 0.588210 | A2: 1.460348 | ISG: 86.040909 A1: 0.635834 | A2: 1.413329 | ISG: 83.167290 A1: 0.569938 | A2: 1.267652 | ISG: 83.184872 A1: 0.647011 | A2: 1.179122 | ISG: 76.858232 A1: 0.804833 | A2: 1.378819 | ISG: 74.586820 A1: 0.831731 | A2: 1.256308 | ISG: 69.526434 A1: 0.700567 | A2: 1.109550 | ISG: 71.496897 A1: 0.526722 | A2: 1.376946 | ISG: 87.235036 A1: 0.502312 | A2: 1.341247 | ISG: 87.699386 A1: 0.616063 | A2: 1.259591 | ISG: 80.696114 A1: 0.763583 | A2: 1.417837 | ISG: 77.516886 A1: 0.799195 | A2: 1.380583 | ISG: 74.900519 A1: 0.731071 | A2: 1.342015 | ISG: 77.115321 A1: 0.591463 | A2: 1.470638 | ISG: 86.077041 A1: 0.694837 | A2: 1.565749 | ISG: 83.546779 A1: 0.890733 | A2: 1.307571 | ISG: 68.303718 A1: 0.901877 | A2: 1.234639 | ISG: 65.206138 A1: 0.962594 | A2: 1.154953 | ISG: 59.009701 A1: 0.996974 | A2: 1.203524 | ISG: 59.304546 A1: 0.905907 | A2: 1.433933 | ISG: 71.473202 A1: 0.887456 | A2: 1.406391 | ISG: 71.521449 A1: 0.968473 | A2: 1.309599 | ISG: 64.645942 A1: 0.890003 | A2: 1.294959 | ISG: 67.918275 A1: 0.767864 | A2: 1.372173 | ISG: 76.152810 A1: 0.752816 | A2: 1.346785 | ISG: 76.193319 A1: 0.788507 | A2: 1.274797 | ISG: 72.328238 A1: 0.760163 | A2: 1.257437 | ISG: 73.235325 A1: 0.695884 | A2: 1.310157 | ISG: 77.996075 A1: 0.720943 | A2: 1.314235 | ISG: 76.868465 A1: 0.759045 | A2: 1.296243 | ISG: 74.465938 A1: 0.836356 | A2: 1.390281 | ISG: 73.427330 A1: 0.876456 | A2: 1.370048 | ISG: 70.959742 A1: 0.875437 | A2: 1.330969 | ISG: 69.801826 A1: 0.918425 | A2: 1.368295 | ISG: 68.940091 A1: 0.827851 | A2: 1.362178 | ISG: 73.027435 A1: 0.590640 | A2: 1.550771 | ISG: 87.331611 A1: 0.522846 | A2: 1.542718 | ISG: 89.697246 A1: 0.632248 | A2: 1.378630 | ISG: 82.622831 A1: 0.617935 | A2: 1.350187 | ISG: 82.681628 A1: 0.672545 | A2: 1.323134 | ISG: 79.468117 A1: 0.819452 | A2: 1.398151 | ISG: 74.431910 A1: 0.884167 | A2: 1.410921 | ISG: 71.802851 A1: 0.786074 | A2: 1.326129 | ISG: 73.999404 A1: 0.697137 | A2: 1.282694 | ISG: 77.197040 A1: 0.764604 | A2: 1.411211 | ISG: 77.306371 A1: 0.735216 | A2: 1.425834 | ISG: 78.996183 A1: 0.606463 | A2: 1.311440 | ISG: 82.382434 A1: 0.474770 | A2: 1.555350 | ISG: 91.476453 A1: 0.532706 | A2: 1.555402 | ISG: 89.501659 A1: 0.651547 | A2: 1.376033 | ISG: 81.686079 A1: 0.678792 | A2: 1.472224 | ISG: 82.468676 A1: 0.658924 | A2: 1.444474 | ISG: 82.775307 A1: 0.580841 | A2: 1.280873 | ISG: 82.943682 A1: 0.622594 | A2: 1.316946 | ISG: 81.732866 A1: 0.719268 | A2: 1.415138 | ISG: 79.470075 A1: 0.796869 | A2: 1.292082 | ISG: 72.444887 A1: 0.920017 | A2: 1.448503 | ISG: 71.254729 A1: 0.869726 | A2: 1.518216 | ISG: 75.291615 A1: 0.610312 | A2: 1.234468 | ISG: 80.358464 A1: 0.462492 | A2: 1.353478 | ISG: 89.544500 A1: 0.524573 | A2: 1.367939 | ISG: 87.179816 A1: 0.618563 | A2: 1.286076 | ISG: 81.212884 A1: 0.768952 | A2: 1.417956 | ISG: 77.274674 A1: 0.825237 | A2: 1.266629 | ISG: 70.200991 A1: 0.751270 | A2: 1.236469 | ISG: 73.036965 A1: 0.671303 | A2: 1.376459 | ISG: 80.784955 A1: 0.595007 | A2: 1.290927 | ISG: 82.478176 A1: 0.623424 | A2: 1.245482 | ISG: 79.964890 A1: 0.684417 | A2: 1.247444 | ISG: 76.862610 A1: 0.700610 | A2: 1.197143 | ISG: 74.487871 A1: 0.757519 | A2: 1.294661 | ISG: 74.496017 A1: 0.743345 | A2: 1.347549 | ISG: 76.669931 A1: 0.734877 | A2: 1.298101 | ISG: 75.729546 A1: 0.766238 | A2: 1.264858 | ISG: 73.153875 A1: 0.864157 | A2: 1.419350 | ISG: 72.956184 A1: 0.843565 | A2: 1.411865 | ISG: 73.692757 A1: 0.708347 | A2: 1.297260 | ISG: 77.032570 A1: 0.602195 | A2: 1.398902 | ISG: 84.366107 A1: 0.492665 | A2: 1.279326 | ISG: 87.085276 A1: 0.452070 | A2: 1.365425 | ISG: 90.121224 A1: 0.598454 | A2: 1.486220 | ISG: 86.048011 A1: 0.764212 | A2: 1.343494 | ISG: 75.553751 A1: 0.858326 | A2: 1.399991 | ISG: 72.680522 A1: 0.819548 | A2: 1.484669 | ISG: 76.645253 A1: 0.777866 | A2: 1.479981 | ISG: 78.354777 A1: 0.736773 | A2: 1.484680 | ISG: 80.239804 A1: 0.703594 | A2: 1.396219 | ISG: 79.748396 A1: 0.680999 | A2: 1.391986 | ISG: 80.687811 A1: 0.682873 | A2: 1.382512 | ISG: 80.387597 A1: 0.749737 | A2: 1.362078 | ISG: 76.747139 A1: 0.764861 | A2: 1.462033 | ISG: 78.512339 A1: 0.704218 | A2: 1.521175 | ISG: 82.350828 A1: 0.624125 | A2: 1.518692 | ISG: 85.551234 A1: 0.614897 | A2: 1.459365 | ISG: 84.923357 A1: 0.582785 | A2: 1.378577 | ISG: 84.838351 A1: 0.604223 | A2: 1.385569 | ISG: 84.021729 A1: 0.779016 | A2: 1.486444 | ISG: 78.452268 A1: 0.911768 | A2: 1.377666 | ISG: 69.540685 A1: 0.873406 | A2: 1.276990 | ISG: 68.129309 A1: 0.888733 | A2: 1.259444 | ISG: 66.757931 A1: 0.963397 | A2: 1.407372 | ISG: 68.092561 A1: 0.850390 | A2: 1.490405 | ISG: 75.439970 A1: 0.739526 | A2: 1.317757 | ISG: 76.048755 A1: 0.815829 | A2: 1.310902 | ISG: 72.081988 A1: 0.872671 | A2: 1.445975 | ISG: 73.301225 A1: 0.792028 | A2: 1.412058 | ISG: 76.068061 A1: 0.574033 | A2: 1.272389 | ISG: 83.088756 A1: 0.500106 | A2: 1.376438 | ISG: 88.338359 A1: 0.596326 | A2: 1.411017 | ISG: 84.845792 A1: 0.687026 | A2: 1.304089 | ISG: 78.275194 A1: 0.827522 | A2: 1.427993 | ISG: 74.860383 A1: 0.903965 | A2: 1.409839 | ISG: 70.865900 A1: 0.859028 | A2: 1.360720 | ISG: 71.502891 A1: 0.708875 | A2: 1.538394 | ISG: 82.486053 A1: 0.619949 | A2: 1.470318 | ISG: 84.905318 A1: 0.594987 | A2: 1.452410 | ISG: 85.629832 A1: 0.625760 | A2: 1.496865 | ISG: 85.123540 A1: 0.720662 | A2: 1.316443 | ISG: 76.941959 A1: 0.716956 | A2: 1.296194 | ISG: 76.572828 A1: 0.733551 | A2: 1.335238 | ISG: 76.815735 A1: 0.750718 | A2: 1.338164 | ISG: 76.061393 A1: 0.700105 | A2: 1.439334 | ISG: 80.867319 A1: 0.812749 | A2: 1.545773 | ISG: 78.342076 A1: 0.967031 | A2: 1.304910 | ISG: 64.550025 A1: 0.819930 | A2: 1.117268 | ISG: 64.995603 A1: 0.706514 | A2: 1.234361 | ISG: 75.323309 A1: 0.724094 | A2: 1.274787 | ISG: 75.606532 A1: 0.701384 | A2: 1.345754 | ISG: 78.639098 A1: 0.765290 | A2: 1.459659 | ISG: 78.438522 A1: 0.831157 | A2: 1.360035 | ISG: 72.807809 A1: 0.904221 | A2: 1.364684 | ISG: 69.491675 A1: 0.983380 | A2: 1.272423 | ISG: 62.606333 A1: 0.916399 | A2: 1.184371 | ISG: 62.551654 A1: 0.826478 | A2: 1.282149 | ISG: 70.645726 A1: 0.837493 | A2: 1.236237 | ISG: 68.542745 A1: 0.894398 | A2: 1.142567 | ISG: 62.005070 A1: 1.065399 | A2: 1.344348 | ISG: 61.422785 A1: 0.953914 | A2: 1.553273 | ISG: 72.613331 A1: 0.818172 | A2: 1.458672 | ISG: 76.068136 A1: 0.827191 | A2: 1.416244 | ISG: 74.563286 A1: 0.690177 | A2: 1.299313 | ISG: 77.993493 A1: 0.602340 | A2: 1.361738 | ISG: 83.635974 A1: 0.693771 | A2: 1.452898 | ISG: 81.432248 A1: 0.881740 | A2: 1.277130 | ISG: 67.720265 A1: 0.943888 | A2: 1.260660 | ISG: 64.078346 A1: 0.927775 | A2: 1.275261 | ISG: 65.390168 A1: 0.869109 | A2: 1.270607 | ISG: 68.125851 A1: 0.697141 | A2: 1.520221 | ISG: 82.624511 A1: 0.588753 | A2: 1.470783 | ISG: 86.189128 A1: 0.630182 | A2: 1.364116 | ISG: 82.411892 A1: 0.678425 | A2: 1.401500 | ISG: 81.015975 A1: 0.705905 | A2: 1.406068 | ISG: 79.869265 A1: 0.672787 | A2: 1.370558 | ISG: 80.582219 A1: 0.554959 | A2: 1.520253 | ISG: 88.241240 A1: 0.610880 | A2: 1.596254 | ISG: 87.225330 A1: 0.754492 | A2: 1.363917 | ISG: 76.569218 A1: 0.782334 | A2: 1.395557 | ISG: 76.088442 A1: 0.781257 | A2: 1.417646 | ISG: 76.704483 A1: 0.726870 | A2: 1.346723 | ISG: 77.440694 A1: 0.754868 | A2: 1.325150 | ISG: 75.500308 A1: 0.716024 | A2: 1.249498 | ISG: 75.279380 A1: 0.760830 | A2: 1.182806 | ISG: 70.733368 A1: 0.770866 | A2: 1.212608 | ISG: 71.218653 A1: 0.683839 | A2: 1.314097 | ISG: 78.690409 A1: 0.696256 | A2: 1.279285 | ISG: 77.147826 A1: 0.755818 | A2: 1.194107 | ISG: 71.396242 A1: 0.756010 | A2: 1.227695 | ISG: 72.505505 A1: 0.719754 | A2: 1.252614 | ISG: 75.178533 A1: 0.814902 | A2: 1.350271 | ISG: 73.301730 A1: 0.916216 | A2: 1.295060 | ISG: 66.643811 A1: 0.900504 | A2: 1.271631 | ISG: 66.601200 A1: 0.813108 | A2: 1.521202 | ISG: 77.778150 A1: 0.972035 | A2: 1.644942 | ISG: 74.118529 A1: 0.942732 | A2: 1.545901 | ISG: 72.892196 A1: 0.843690 | A2: 1.458095 | ISG: 74.917237 A1: 0.857932 | A2: 1.346323 | ISG: 71.119925 A1: 0.670798 | A2: 1.228380 | ISG: 77.029297 A1: 0.636601 | A2: 1.269690 | ISG: 79.911487 A1: 0.710250 | A2: 1.296644 | ISG: 76.920612 A1: 0.788850 | A2: 1.202541 | ISG: 69.914556 A1: 0.757701 | A2: 1.168001 | ISG: 70.381282 A1: 0.647651 | A2: 1.388238 | ISG: 82.125582 A1: 0.664160 | A2: 1.477453 | ISG: 83.189316 A1: 0.680244 | A2: 1.415565 | ISG: 81.239758 A1: 0.637838 | A2: 1.378052 | ISG: 82.356403 A1: 0.531121 | A2: 1.514625 | ISG: 89.050060 A1: 0.594585 | A2: 1.616755 | ISG: 88.086286 A1: 0.640125 | A2: 1.547474 | ISG: 85.388873 A1: 0.618461 | A2: 1.476209 | ISG: 85.068666 A1: 0.677576 | A2: 1.413357 | ISG: 81.311854 A1: 0.729238 | A2: 1.458344 | ISG: 79.997099 A1: 0.682963 | A2: 1.590888 | ISG: 84.438360 A1: 0.666134 | A2: 1.538238 | ISG: 84.208240 A1: 0.739056 | A2: 1.417888 | ISG: 78.635598 A1: 0.776022 | A2: 1.471429 | ISG: 78.238450 A1: 0.696967 | A2: 1.422536 | ISG: 80.642050 A1: 0.395731 | A2: 1.094288 | ISG: 88.434647 A1: 0.375781 | A2: 1.153293 | ISG: 90.402228 A1: 0.700254 | A2: 1.403550 | ISG: 80.069352 A1: 0.739695 | A2: 1.352691 | ISG: 76.980800 A1: 0.641929 | A2: 1.294741 | ISG: 80.268732 A1: 0.541144 | A2: 1.464510 | ISG: 87.986806 A1: 0.658785 | A2: 1.595938 | ISG: 85.441299 A1: 0.729281 | A2: 1.468149 | ISG: 80.208807 A1: 0.808812 | A2: 1.519755 | ISG: 77.928005 A1: 0.909317 | A2: 1.408189 | ISG: 70.572913 A1: 0.924288 | A2: 1.321520 | ISG: 67.151140 A1: 0.994232 | A2: 1.248422 | ISG: 61.190579 A1: 1.060858 | A2: 1.339190 | ISG: 61.443045 A1: 0.972697 | A2: 1.460515 | ISG: 69.273653 A1: 0.960596 | A2: 1.427942 | ISG: 68.844762 A1: 0.984763 | A2: 1.353358 | ISG: 65.382281 A1: 0.838722 | A2: 1.217127 | ISG: 67.803123 A1: 0.740414 | A2: 1.375544 | ISG: 77.535325 A1: 0.693136 | A2: 1.378067 | ISG: 79.809365 A1: 0.789917 | A2: 1.352115 | ISG: 74.554557 A1: 0.927583 | A2: 1.468238 | ISG: 71.473081 A1: 0.852924 | A2: 1.514469 | ISG: 75.920047 A1: 0.871084 | A2: 1.545121 | ISG: 75.882316 A1: 0.854235 | A2: 1.581908 | ISG: 77.423130 A1: 0.871553 | A2: 1.644749 | ISG: 78.076557 A1: 0.882997 | A2: 1.617897 | ISG: 77.049726 A1: 0.682271 | A2: 1.321522 | ISG: 78.955154 A1: 0.663241 | A2: 1.332621 | ISG: 80.147333 A1: 0.744765 | A2: 1.447756 | ISG: 79.074184 A1: 0.780872 | A2: 1.313229 | ISG: 73.878545 A1: 0.744492 | A2: 1.276926 | ISG: 74.630812 A1: 0.708255 | A2: 1.276484 | ISG: 76.460969 A1: 0.714027 | A2: 1.285101 | ISG: 76.410931 A1: 0.654053 | A2: 1.422356 | ISG: 82.545677 A1: 0.590781 | A2: 1.385946 | ISG: 84.623667 A1: 0.583238 | A2: 1.376187 | ISG: 84.773618 A1: 0.405232 | A2: 1.180877 | ISG: 89.464645 A1: 0.393216 | A2: 1.233221 | ISG: 90.771506 A1: 0.552665 | A2: 1.455347 | ISG: 87.396657 A1: 0.497804 | A2: 1.449560 | ISG: 89.450603 A1: 0.385910 | A2: 1.310272 | ISG: 92.017813 A1: 0.451497 | A2: 1.230761 | ISG: 88.138798 A1: 0.525044 | A2: 1.294315 | ISG: 85.869706 A1: 0.558608 | A2: 1.310920 | ISG: 84.632602 A1: 0.729726 | A2: 1.410975 | ISG: 78.897113 A1: 0.851333 | A2: 1.261540 | ISG: 68.709435 A1: 0.930821 | A2: 1.350966 | ISG: 67.809202 A1: 0.840787 | A2: 1.465872 | ISG: 75.245244 A1: 0.704994 | A2: 1.322367 | ISG: 77.867802 A1: 0.687404 | A2: 1.418276 | ISG: 80.977524 A1: 0.693141 | A2: 1.469081 | ISG: 81.791981 A1: 0.765507 | A2: 1.314835 | ISG: 74.684547 A1: 0.718928 | A2: 1.318244 | ISG: 77.075655 A1: 0.430457 | A2: 1.678798 | ISG: 93.831085 A1: 0.432530 | A2: 1.686666 | ISG: 93.829591 A1: 0.642415 | A2: 1.448901 | ISG: 83.571040 A1: 0.699085 | A2: 1.531918 | ISG: 82.764185 A1: 0.635628 | A2: 1.588197 | ISG: 86.193809 A1: 0.540700 | A2: 1.424148 | ISG: 87.401439 A1: 0.570260 | A2: 1.431712 | ISG: 86.307510 A1: 0.697396 | A2: 1.603370 | ISG: 84.091064 A1: 0.732214 | A2: 1.549822 | ISG: 81.752155 A1: 0.607023 | A2: 1.408409 | ISG: 84.334101 A1: 0.606748 | A2: 1.416980 | ISG: 84.505610 A1: 0.700369 | A2: 1.498424 | ISG: 82.070406 A1: 0.743136 | A2: 1.413720 | ISG: 78.350355 A1: 0.799472 | A2: 1.430701 | ISG: 76.204743 A1: 0.901166 | A2: 1.336152 | ISG: 68.734136 A1: 0.831127 | A2: 1.298018 | ISG: 70.922460 A1: 0.740357 | A2: 1.400269 | ISG: 78.152459 A1: 0.647206 | A2: 1.319305 | ISG: 80.602586 A1: 0.612151 | A2: 1.381240 | ISG: 83.582921 A1: 0.650719 | A2: 1.406716 | ISG: 82.373676 A1: 0.688517 | A2: 1.343105 | ISG: 79.189699 A1: 0.787459 | A2: 1.488756 | ISG: 78.138742 A1: 0.792877 | A2: 1.542193 | ISG: 79.093770 A1: 0.811702 | A2: 1.506908 | ISG: 77.510491 A1: 0.811341 | A2: 1.456817 | ISG: 76.326078 A1: 0.855220 | A2: 1.457755 | ISG: 74.394746 A1: 0.933281 | A2: 1.342942 | ISG: 67.432761 A1: 0.876365 | A2: 1.300694 | ISG: 68.777579 A1: 0.831778 | A2: 1.360276 | ISG: 72.785254 A1: 0.854069 | A2: 1.379441 | ISG: 72.289027 A1: 0.835495 | A2: 1.441226 | ISG: 74.846652 A1: 0.829889 | A2: 1.427528 | ISG: 74.740420 A1: 0.830244 | A2: 1.388979 | ISG: 73.676252 A1: 0.869779 | A2: 1.504323 | ISG: 74.945687 A1: 0.871266 | A2: 1.515450 | ISG: 75.157696 A1: 0.779101 | A2: 1.334456 | ISG: 74.578896 A1: 0.856611 | A2: 1.190509 | ISG: 65.887935 A1: 0.989733 | A2: 1.312553 | ISG: 63.751343 A1: 0.939408 | A2: 1.435854 | ISG: 70.025868 A1: 0.904979 | A2: 1.409455 | ISG: 70.808345 A1: 0.898766 | A2: 1.492669 | ISG: 73.391858 A1: 0.992665 | A2: 1.608471 | ISG: 72.418006 A1: 0.959020 | A2: 1.572540 | ISG: 72.890448 A1: 0.894525 | A2: 1.506149 | ISG: 73.924294 A1: 0.936280 | A2: 1.419777 | ISG: 69.692160 A1: 0.857322 | A2: 1.258526 | ISG: 68.303719 A1: 0.887254 | A2: 1.192877 | ISG: 64.382042 A1: 0.890270 | A2: 1.251387 | ISG: 66.395422 A1: 0.799696 | A2: 1.422042 | ISG: 75.973637 A1: 0.696930 | A2: 1.425215 | ISG: 80.702367 A1: 0.646505 | A2: 1.402686 | ISG: 82.478756 A1: 0.676151 | A2: 1.348568 | ISG: 79.911382 A1: 0.814286 | A2: 1.283361 | ISG: 71.296977 A1: 0.861739 | A2: 1.327531 | ISG: 70.354705 A1: 0.860346 | A2: 1.313099 | ISG: 69.964774 A1: 0.933910 | A2: 1.333083 | ISG: 67.078537 A1: 1.006974 | A2: 1.215904 | ISG: 59.316754 A1: 1.011064 | A2: 1.271479 | ISG: 61.262381 A1: 0.830543 | A2: 1.603291 | ISG: 78.842650 A1: 0.766615 | A2: 1.557889 | ISG: 80.505688 A1: 0.898393 | A2: 1.393548 | ISG: 70.640805 A1: 1.019818 | A2: 1.546563 | ISG: 69.695111 A1: 1.064341 | A2: 1.508588 | ISG: 66.766350 A1: 1.086376 | A2: 1.468955 | ISG: 64.643542 A1: 1.131901 | A2: 1.379544 | ISG: 59.765651 A1: 1.059828 | A2: 1.288715 | ISG: 59.654233 A1: 1.004298 | A2: 1.290571 | ISG: 62.283332 A1: 0.890890 | A2: 1.261758 | ISG: 66.731794 A1: 0.759891 | A2: 1.338934 | ISG: 75.637525 A1: 0.654987 | A2: 1.229429 | ISG: 77.891947 A1: 0.621769 | A2: 1.293122 | ISG: 81.221888 A1: 0.645925 | A2: 1.346959 | ISG: 81.303327 A1: 0.708912 | A2: 1.393920 | ISG: 79.450332 A1: 0.737343 | A2: 1.472894 | ISG: 79.961055 A1: 0.568867 | A2: 1.674188 | ISG: 89.649518 A1: 0.661684 | A2: 1.759206 | ISG: 87.606258 A1: 0.870486 | A2: 1.364292 | ISG: 71.067781 A1: 0.751149 | A2: 1.179134 | ISG: 71.133240 A1: 0.669102 | A2: 1.319166 | ISG: 79.537521 A1: 0.757924 | A2: 1.432221 | ISG: 78.122104 A1: 0.854567 | A2: 1.309166 | ISG: 70.121745 A1: 0.830540 | A2: 1.266076 | ISG: 69.913934 A1: 0.771102 | A2: 1.367992 | ISG: 75.888132 A1: 0.663486 | A2: 1.245063 | ISG: 77.883121 A1: 0.706056 | A2: 1.162210 | ISG: 73.042295 A1: 0.715725 | A2: 1.199726 | ISG: 73.751761 A1: 0.625989 | A2: 1.292835 | ISG: 81.007839 A1: 0.666420 | A2: 1.264794 | ISG: 78.270339 A1: 0.805883 | A2: 1.200056 | ISG: 68.919718 A1: 1.039684 | A2: 1.499591 | ISG: 67.536508 A1: 0.954892 | A2: 1.546104 | ISG: 72.387984 A1: 0.817520 | A2: 1.371679 | ISG: 73.788995 A1: 0.840684 | A2: 1.371715 | ISG: 72.694973 A1: 0.851068 | A2: 1.413315 | ISG: 73.388119 A1: 0.870225 | A2: 1.400905 | ISG: 72.156613 A1: 0.916796 | A2: 1.423734 | ISG: 70.688600 A1: 0.985326 | A2: 1.371275 | ISG: 65.949547 A1: 1.056498 | A2: 1.452720 | ISG: 65.406524 A1: 1.082461 | A2: 1.443596 | ISG: 64.010049 A1: 0.949308 | A2: 1.320313 | ISG: 65.921124 A1: 0.743499 | A2: 1.518158 | ISG: 80.655372 A1: 0.736848 | A2: 1.523423 | ISG: 81.040858 A1: 0.870139 | A2: 1.362822 | ISG: 71.039870 A1: 1.045305 | A2: 1.472343 | ISG: 66.487456 A1: 1.109388 | A2: 1.388078 | ISG: 61.021662 A1: 0.930233 | A2: 1.264379 | ISG: 64.880761 A1: 0.810743 | A2: 1.378096 | ISG: 74.288409 A1: 0.841301 | A2: 1.404066 | ISG: 73.581996 A1: 0.849967 | A2: 1.317032 | ISG: 70.596734 A1: 0.852048 | A2: 1.282446 | ISG: 69.376124 A1: 0.890131 | A2: 1.358333 | ISG: 69.957820 A1: 0.910702 | A2: 1.466153 | ISG: 72.159022 A1: 0.865785 | A2: 1.422135 | ISG: 72.959248 A1: 0.680846 | A2: 1.221381 | ISG: 76.292885 A1: 0.628394 | A2: 1.246954 | ISG: 79.747449 A1: 0.564502 | A2: 1.235570 | ISG: 82.731102 A1: 0.506164 | A2: 1.349114 | ISG: 87.660704 A1: 0.613935 | A2: 1.464338 | ISG: 85.050147 A1: 0.738544 | A2: 1.407338 | ISG: 78.407100 A1: 0.888920 | A2: 1.466147 | ISG: 73.121036 A1: 1.060330 | A2: 1.171404 | ISG: 54.964724 A1: 1.091386 | A2: 1.176709 | ISG: 53.756549 A1: 0.956198 | A2: 1.428621 | ISG: 69.061576 A1: 0.797121 | A2: 1.361273 | ISG: 74.466151 A1: 0.723917 | A2: 1.461471 | ISG: 80.298302 A1: 0.744414 | A2: 1.496874 | ISG: 80.171911 A1: 0.714485 | A2: 1.508468 | ISG: 81.676407 A1: 0.639030 | A2: 1.437681 | ISG: 83.502537 A1: 0.714904 | A2: 1.311529 | ISG: 77.093526 A1: 0.744829 | A2: 1.353605 | ISG: 76.758847 A1: 0.701738 | A2: 1.382669 | ISG: 79.517740 A1: 0.684751 | A2: 1.335557 | ISG: 79.184726 A1: 0.688012 | A2: 1.338708 | ISG: 79.105718 A1: 0.678583 | A2: 1.335377 | ISG: 79.477052 A1: 0.673319 | A2: 1.346840 | ISG: 80.004812 A1: 0.818972 | A2: 1.441489 | ISG: 75.597981 A1: 0.868543 | A2: 1.408869 | ISG: 72.461111 A1: 1.023206 | A2: 1.485268 | ISG: 67.815543 A1: 1.095487 | A2: 1.469202 | ISG: 64.268564 A1: 1.136816 | A2: 1.577022 | ISG: 65.804928 A1: 1.216871 | A2: 1.351082 | ISG: 55.212107 A1: 1.123854 | A2: 1.208951 | ISG: 53.643009 A1: 1.043480 | A2: 1.401227 | ISG: 64.326733 A1: 1.008308 | A2: 1.468374 | ISG: 67.956287 A1: 0.942178 | A2: 1.487817 | ISG: 71.376513 A1: 0.907303 | A2: 1.449280 | ISG: 71.843078 A1: 0.885428 | A2: 1.427544 | ISG: 72.217535 A1: 0.760940 | A2: 1.279043 | ISG: 73.858484 A1: 0.811609 | A2: 1.233654 | ISG: 69.792442 A1: 0.879343 | A2: 1.309100 | ISG: 68.908428 A1: 0.884344 | A2: 1.268134 | ISG: 67.280731 A1: 0.728503 | A2: 1.095295 | ISG: 69.329588 A1: 0.678470 | A2: 1.293455 | ISG: 78.422585 A1: 0.908766 | A2: 1.606911 | ISG: 75.767295 A1: 0.909206 | A2: 1.513893 | ISG: 73.492116 A1: 0.689218 | A2: 1.237674 | ISG: 76.330093 A1: 0.678010 | A2: 1.283240 | ISG: 78.176170 A1: 0.836440 | A2: 1.449221 | ISG: 75.012031 A1: 0.897273 | A2: 1.374895 | ISG: 70.130993 A1: 0.850887 | A2: 1.324578 | ISG: 70.788625 A1: 0.758437 | A2: 1.463332 | ISG: 78.825217 A1: 0.692628 | A2: 1.472808 | ISG: 81.889307 A1: 0.646907 | A2: 1.469090 | ISG: 83.758836 A1: 0.417859 | A2: 1.204798 | ISG: 89.262568 A1: 0.271197 | A2: 1.315335 | ISG: 95.922292 A1: 0.531524 | A2: 1.468506 | ISG: 88.416792 A1: 0.592242 | A2: 1.445203 | ISG: 85.621224 A1: 0.841890 | A2: 1.724888 | ISG: 80.760706 A1: 0.784273 | A2: 1.808398 | ISG: 84.169320 A1: 0.650141 | A2: 1.716125 | ISG: 87.449168 A1: 0.686168 | A2: 1.667673 | ISG: 85.521747 A1: 0.681593 | A2: 1.503805 | ISG: 82.957857 A1: 0.840252 | A2: 1.217319 | ISG: 67.730410 A1: 0.870929 | A2: 1.276958 | ISG: 68.251467 A1: 0.792700 | A2: 1.424612 | ISG: 76.358226 A1: 0.758073 | A2: 1.437270 | ISG: 78.235478 A1: 0.730019 | A2: 1.435881 | ISG: 79.460754 A1: 0.554905 | A2: 1.265340 | ISG: 83.870123 A1: 0.523099 | A2: 1.263346 | ISG: 85.364709 A1: 0.720764 | A2: 1.554704 | ISG: 82.309475 A1: 0.701946 | A2: 1.621350 | ISG: 84.215048 A1: 0.606698 | A2: 1.412205 | ISG: 84.419151 A1: 0.780497 | A2: 1.195791 | ISG: 70.125144 A1: 0.932795 | A2: 1.262963 | ISG: 64.704156 A1: 0.940816 | A2: 1.260838 | ISG: 64.234760 A1: 0.945920 | A2: 1.292367 | ISG: 65.116089 A1: 0.901136 | A2: 1.378510 | ISG: 70.061023 A1: 0.913566 | A2: 1.430118 | ISG: 71.019130 A1: 0.852775 | A2: 1.540194 | ISG: 76.536733 A1: 0.758250 | A2: 1.475441 | ISG: 79.107171 A1: 0.760319 | A2: 1.501043 | ISG: 79.581727 A1: 0.679725 | A2: 1.430809 | ISG: 81.587028 A1: 0.717046 | A2: 1.333584 | ISG: 77.573274 A1: 0.684000 | A2: 1.271989 | ISG: 77.569604 A1: 0.612595 | A2: 1.332610 | ISG: 82.554540 A1: 0.715594 | A2: 1.532574 | ISG: 82.100648 A1: 0.656508 | A2: 1.614055 | ISG: 85.804421 A1: 0.520216 | A2: 1.409486 | ISG: 88.011014 A1: 0.664581 | A2: 1.275840 | ISG: 78.657581 A1: 0.845266 | A2: 1.454145 | ISG: 74.744736 A1: 0.833186 | A2: 1.413061 | ISG: 74.202364 A1: 0.820272 | A2: 1.380961 | ISG: 73.919685 A1: 0.785187 | A2: 1.533666 | ISG: 79.232355 A1: 0.763313 | A2: 1.482933 | ISG: 79.054581 A1: 0.839428 | A2: 1.398307 | ISG: 73.508830 A1: 0.862137 | A2: 1.363817 | ISG: 71.448304 A1: 0.937033 | A2: 1.357843 | ISG: 67.740417 A1: 0.977077 | A2: 1.485602 | ISG: 69.804804 A1: 0.941838 | A2: 1.448157 | ISG: 70.275010 A1: 0.941585 | A2: 1.414399 | ISG: 69.291680 A1: 0.984632 | A2: 1.348384 | ISG: 65.221452 A1: 0.807530 | A2: 1.223157 | ISG: 69.644369 A1: 0.683763 | A2: 1.309275 | ISG: 78.570641 A1: 0.627128 | A2: 1.256654 | ISG: 80.061036 A1: 0.616907 | A2: 1.230930 | ISG: 79.924992 A1: 0.722444 | A2: 1.369438 | ISG: 78.228466 A1: 0.734270 | A2: 1.413088 | ISG: 78.739815 A1: 0.789294 | A2: 1.443728 | ISG: 76.989000 A1: 0.898173 | A2: 1.302490 | ISG: 67.772607 A1: 0.837060 | A2: 1.197799 | ISG: 67.187790 A1: 0.748440 | A2: 1.388625 | ISG: 77.489424 A1: 0.844158 | A2: 1.461422 | ISG: 74.981986 A1: 0.837773 | A2: 1.459234 | ISG: 75.209901 A1: 0.816697 | A2: 1.442625 | ISG: 75.729462 A1: 0.903622 | A2: 1.245380 | ISG: 65.510826 A1: 1.003355 | A2: 1.375621 | ISG: 65.274145 A1: 0.907013 | A2: 1.476580 | ISG: 72.604594 A1: 0.844974 | A2: 1.406335 | ISG: 73.475303 A1: 0.829026 | A2: 1.442121 | ISG: 75.161388 A1: 0.746909 | A2: 1.347638 | ISG: 76.500712 A1: 0.778146 | A2: 1.293510 | ISG: 73.427071 A1: 0.802542 | A2: 1.348454 | ISG: 73.843700 A1: 0.756665 | A2: 1.412394 | ISG: 77.699518 A1: 0.873060 | A2: 1.525774 | ISG: 75.333988 A1: 0.935330 | A2: 1.552401 | ISG: 73.366887 A1: 0.965921 | A2: 1.584342 | ISG: 72.902576 A1: 0.937149 | A2: 1.596169 | ISG: 74.365240 A1: 0.869130 | A2: 1.553305 | ISG: 76.156793 A1: 0.844694 | A2: 1.588969 | ISG: 77.966800 A1: 0.725967 | A2: 1.437316 | ISG: 79.674226 A1: 0.752396 | A2: 1.303207 | ISG: 75.000555 A1: 0.784313 | A2: 1.408187 | ISG: 76.323554 A1: 0.664807 | A2: 1.564900 | ISG: 84.711654 A1: 0.676377 | A2: 1.505479 | ISG: 83.205068 A1: 0.805497 | A2: 1.457609 | ISG: 76.605827 A1: 0.960260 | A2: 1.629339 | ISG: 74.220316 A1: 1.057129 | A2: 1.387793 | ISG: 63.281573 A1: 0.993812 | A2: 1.342119 | ISG: 64.586561 A1: 0.883669 | A2: 1.436394 | ISG: 72.544195 A1: 0.706592 | A2: 1.295090 | ISG: 77.061108 A1: 0.627314 | A2: 1.343329 | ISG: 82.096776 A1: 0.555582 | A2: 1.265170 | ISG: 83.833496 A1: 0.531838 | A2: 1.318838 | ISG: 86.012582 A1: 0.612233 | A2: 1.411747 | ISG: 84.170122 A1: 0.674887 | A2: 1.436265 | ISG: 81.913717 A1: 0.768188 | A2: 1.475851 | ISG: 78.682802 A1: 0.850210 | A2: 1.292959 | ISG: 69.813028 A1: 0.807906 | A2: 1.278013 | ISG: 71.447780 A1: 0.777355 | A2: 1.335114 | ISG: 74.682458 A1: 0.836958 | A2: 1.319106 | ISG: 71.297397 A1: 0.995260 | A2: 1.091784 | ISG: 54.615000 A1: 1.078233 | A2: 1.183553 | ISG: 54.646403 A1: 0.922407 | A2: 1.559837 | ISG: 74.090934 A1: 0.774943 | A2: 1.514058 | ISG: 79.241075 A1: 0.694252 | A2: 1.399385 | ISG: 80.248619 A1: 0.522928 | A2: 1.292470 | ISG: 85.932976 A1: 0.772034 | A2: 1.194934 | ISG: 70.550155 A1: 1.599926 | A2: 1.672738 | ISG: 52.223746 A1: 2.367276 | A2: 1.004378 | ISG: 15.254954
Création d'un dataframe¶
values_list4 = []
for i in range(len(ISGs4)):
append_values_to_list(A1[i], A2[i], ISGs4[i], values_list4)
df_ISG4 = pd.DataFrame(values_list4)
df_ISG4.head()
A1 | A2 | ISG | |
---|---|---|---|
0 | 0.969723 | 1.478746 | 69.928130 |
1 | 0.761792 | 1.431815 | 77.937868 |
2 | 0.703605 | 1.403140 | 79.907148 |
3 | 0.627063 | 1.339420 | 82.022778 |
4 | 0.619129 | 1.369755 | 83.035501 |
Valeur de l'ISG¶
df_ISG4.describe()
A1 | A2 | ISG | |
---|---|---|---|
count | 627.000000 | 627.000000 | 627.000000 |
mean | 0.754886 | 1.378062 | 76.645766 |
std | 0.170517 | 0.115255 | 7.922234 |
min | 0.098916 | 1.004378 | 15.254954 |
25% | 0.658854 | 1.295075 | 71.485050 |
50% | 0.752396 | 1.375621 | 76.920612 |
75% | 0.855920 | 1.454746 | 81.968247 |
max | 2.367276 | 1.808398 | 99.415949 |
ISG de 76.645766 pour ce jeu de données
plt.figure(figsize=(10, 4))
plt.plot(np.arange(len(ISGs4)), ISGs4, label='ISG', color='green')
plt.title('ISG pour chaque foulée')
plt.xlabel('Foulée')
plt.ylabel('ISG')
plt.legend()
plt.grid(True)
plt.show()
Boxplot des ISG pour visualiser les valeurs aberantes¶
plt.figure(figsize=(10, 4))
plt.boxplot(ISGs4)
plt.title('Boxplot de ISG')
plt.ylabel('ISG')
plt.grid(True)
plt.show()
Tri des valeurs aberantes¶
Les points qui apparaissent en dehors des moustaches représentent des valeurs aberrantes.
min_value4 = 59
max_value4 = 97
ISGs_filtered4 = ISG_min_max(ISGs4, min_value4, max_value4)
plt.figure(figsize=(10, 4))
plt.plot(np.arange(len(ISGs_filtered4)), ISGs_filtered4, label='ISG', color='green')
plt.title('ISG pour chaque foulée (Filtré)')
plt.xlabel('Foulée')
plt.ylabel('ISG')
plt.legend()
plt.grid(True)
plt.figure(figsize=(10, 4))
plt.boxplot(ISGs_filtered4)
plt.title('Boxplot de ISG (Filtré)')
Text(0.5, 1.0, 'Boxplot de ISG (Filtré)')
df_ISG_filtered4 = df_ISG4[(df_ISG4['ISG'] >= min_value4) & (df_ISG4['ISG'] <= max_value4)]
df_ISG_filtered4.describe()
A1 | A2 | ISG | |
---|---|---|---|
count | 614.000000 | 614.000000 | 614.000000 |
mean | 0.752171 | 1.380029 | 76.827661 |
std | 0.143060 | 0.112337 | 6.954869 |
min | 0.265989 | 1.083250 | 59.009701 |
25% | 0.661502 | 1.296780 | 71.812908 |
50% | 0.751210 | 1.376449 | 76.961379 |
75% | 0.853783 | 1.456450 | 81.873768 |
max | 1.136816 | 1.808398 | 96.959027 |
Apres un filtre des données, l'ISG moyen est de 76.827661
Récapitulatif¶
df_ISG1.describe()
A1 | A2 | ISG | |
---|---|---|---|
count | 118.000000 | 118.000000 | 118.000000 |
mean | 0.890455 | 1.513142 | 73.940655 |
std | 0.273549 | 0.131681 | 11.248176 |
min | 0.094891 | 1.248455 | 47.473351 |
25% | 0.710223 | 1.418374 | 65.574254 |
50% | 0.916671 | 1.496832 | 74.105009 |
75% | 1.092196 | 1.586573 | 81.793273 |
max | 1.396826 | 1.960993 | 99.539785 |
df_ISG_filtered2.describe()
A1 | A2 | ISG | |
---|---|---|---|
count | 166.000000 | 166.000000 | 166.000000 |
mean | 0.584031 | 1.201768 | 80.375471 |
std | 0.179989 | 0.086753 | 9.394320 |
min | 0.213818 | 0.933122 | 55.955094 |
25% | 0.448469 | 1.153114 | 74.271849 |
50% | 0.574456 | 1.205038 | 81.934572 |
75% | 0.705057 | 1.258645 | 88.168159 |
max | 1.035396 | 1.438792 | 97.006087 |
df_ISG_filtered3.describe()
A1 | A2 | ISG | |
---|---|---|---|
count | 608.000000 | 608.000000 | 608.000000 |
mean | 0.435221 | 1.383436 | 90.395185 |
std | 0.128034 | 0.106547 | 4.860927 |
min | 0.056615 | 1.032076 | 76.421200 |
25% | 0.344562 | 1.321251 | 86.929394 |
50% | 0.439514 | 1.379948 | 90.848870 |
75% | 0.529467 | 1.452552 | 94.122882 |
max | 0.774316 | 1.840437 | 99.815591 |
df_ISG4.describe()
A1 | A2 | ISG | |
---|---|---|---|
count | 627.000000 | 627.000000 | 627.000000 |
mean | 0.754886 | 1.378062 | 76.645766 |
std | 0.170517 | 0.115255 | 7.922234 |
min | 0.098916 | 1.004378 | 15.254954 |
25% | 0.658854 | 1.295075 | 71.485050 |
50% | 0.752396 | 1.375621 | 76.920612 |
75% | 0.855920 | 1.454746 | 81.968247 |
max | 2.367276 | 1.808398 | 99.415949 |