Parsing

Fichier contenant des fonctions pour parser les entrées et sorties des DLLs externes.

apply_dataframe_type(data: DataFrame, columns: list[str], numeric_type: str = 'int32')[source]

Force les colonnes en paramètres à adopter un type numérique. Vérfie la présence des colonnes avant la transformation pour éviter les problèmes et préserve les NaN s’ils sont présents.

Paramètres:
  • data (DataFrame) – DataFrame à modifier.

  • columns (list[str]) – Colonnes à modifier.

  • numeric_type (str) – Type à adopter.

rearrange_dataframe_columns(data: DataFrame, columns: list[str], remaining: bool = True) DataFrame[source]

Réorganise les colonnes d’un DataFrame en mettant certaines en premier, avec l’option d’ajouter les colonnes restantes dans leur ordre d’origine.

Paramètres:
  • data (DataFrame) – Le DataFrame à réorganiser.

  • columns (list[str]) – Liste des noms de colonnes à placer en premier.

  • remaining (bool) – Si True, ajoute les colonnes non spécifiées après celles définies dans columns.

Renvoie:

Un nouveau DataFrame avec les colonnes réorganisées.

Lève:

ValueError – Si une colonne spécifiée dans columns n’existe pas dans data.

Type renvoyé:

DataFrame

log10_dataframe(data: DataFrame, columns: list[str]) DataFrame[source]

Applique un log en base 10 sur certaines colonnes du dataframe (remplace par Nan les valeurs inférieures ou égales à 0). :param data: Dataframe à modifier :param columns: Colonnes à modifier :return: Dataframe avec les colonnes ayant été modifiées.

Paramètres:
Type renvoyé:

DataFrame

degrees_to_radians(angle_deg: ndarray | Series | float | list) ndarray[source]

Convertit des angles en degrés vers des radians.

\[\theta_{rad} = \theta_{deg} \times \frac{\pi}{180}\]
Paramètres:

angle_deg (ndarray | Series | float | list) – Angle(s) en degrés (scalaire, array NumPy ou Series pandas).

Renvoie:

Angle(s) en radians.

Type renvoyé:

ndarray

radians_to_degrees(angle_rad: ndarray | Series | float | list) ndarray[source]

Convertit des angles en radians vers des degrés.

\[\theta_{deg} = \theta_{rad} \times \frac{180}{\pi}\]
Paramètres:

angle_rad (ndarray | Series | float | list) – Angle(s) en radians (scalaire, array NumPy ou Series pandas).

Renvoie:

Angle(s) en degrés.

Type renvoyé:

ndarray

wrap_angle(theta: ndarray | Series | float | list, length: float = 3.141592653589793, center: bool = True) ndarray[source]

Contraint des angles dans l’intervalle sélectionné, exemple avec \(length = \pi\) et un interval centré.

\[\theta' \in [-\frac{\pi}{2}, \frac{\pi}{2}[ \quad\quad \text{and} \quad\quad \theta' = (\theta + \frac{\pi}{2}) \bmod (\pi) - \frac{\pi}{2}\]
Paramètres:
  • theta (ndarray | Series | float | list) – Angles en radians.

  • length (float) – Longueur de l’intervalle.

  • center (bool) – Définit l’interval à \([-\frac{limit}{2}, \frac{limit}{2}[\) si true, sinon \([0, length[\).

Renvoie:

Angles normalisés dans \([-\frac{\pi}{2}, \frac{\pi}{2}[\).

Type renvoyé:

ndarray

manage_theta(theta: ndarray | Series | float | list) ndarray[source]

Contraint des angles en radians dans l’intervalle \([-\frac{\pi}{2}, \frac{\pi}{2}[\) (wrap_angle()). Puis passe des radians aux degrées pour faciliter la lisibilitée.

Définit un theta commun possible en degré de deux méthodes différentes (moyenne et médiane circulaire) ainsi qu’une mesure de la dispersion. Une dispersion R > 0.8 indique une bonne fiabilité de l’orientation, R < 0.5 indique une orientation mal définit.

Paramètres:

theta (ndarray | Series | float | list) – Angles en radians.

Renvoie:

Theta dnas l’intervalle \([-\frac{\pi}{2}, \frac{\pi}{2}[\).

Type renvoyé:

ndarray

get_meta(data: list | ndarray) DataFrame[source]

Créer le Dataframe pour les informations meta (dimensions du fichier et calibration). :param data: Liste des informations en entrée :return: DataFrame contenant les métadonnées :raises ValueError: Si le nombre d’éléments ne correspond au nombre attendu pour le fichier meta.

Paramètres:

data (list | ndarray)

Type renvoyé:

DataFrame

parse_irregular_array(data: ndarray) DataFrame[source]

Parsing du résultat de la DLL PALM.

Entrée : un tableau 1D où chaque bloc est encodé comme : [L, x0, x1, …, x{L-1}, L2, y0, y1, …, …] Le parsing s’arrête dès qu’un L ≤ 0 est rencontré.

Règles :
  • Le premier élément d’un bloc (L) donne le nombre d’éléments qui suivent pour ce bloc.

  • Les longueurs négatives ou nulles (L ≤ 0) signalent la fin du flux.

  • Les blocs tronqués (pas assez d’éléments après L) lèvent une ValueError.

  • Les valeurs des blocs (sans L) sont retournées dans le DataFrame.

  • Les lignes n’ayant pas le même nombre de colonnes sont complétées par NaN.

Paramètres:

data (ndarray) – Données 1D récupérées depuis la DLL PALM. Doit être indexable et de dimension 1.

Renvoie:

DataFrame où chaque ligne correspond à un bloc et les colonnes contiennent les valeurs du bloc, complétées par NaN.

Lève:

ValueError – Entrée invalide (nombre de dimensions ou taille finale incorrecte)

Type renvoyé:

DataFrame

parse_result(data: ndarray, file_type: str = 'Localization', is_log: bool = False, fit_mode: int = 0) DataFrame[source]

Parsing du résultat de la DLL PALM.

Pour les localisations et les trajectoires, on a un tableau 1D de grande taille en entrée :
  • On le découpe en tableau 2D à 13 colonnes (N_SEGMENTS). La taille du tableau est vérifiée et tronquée si nécessaire.

  • On le transforme en dataframe avec les colonnes définies par SEGMENTS.

  • On supprime les lignes remplies de 0 et de -1. Un test sur les colonnes X ou Y strictement positif suffit (le SigmaX et SigmaY peuvent être à 0).

Pour les calculs sur trajectoire, on a un tableau 1D représentant un tableau 2D irrégulier (avec un nombre de colonnes non constant (parse_irregular_array()).

Paramètres:
  • data (ndarray) – Données en entrée récupérées depuis la DLL PALM.

  • file_type (str) – Type de fichier à parser (Localization, Tracking, Astigmatism 3D Model, MSD, Instant diffusion, Fit)

  • is_log (bool) – Applique un logarithme sur le résultat (si nécessaire, pour les calculs sur trajectoires).

  • fit_mode (int) – Mode d’ajustement (si nécessaire, pour les calculs sur trajectoires).

Renvoie:

DataFrame parsé

Type renvoyé:

DataFrame

parse_localization_for_tracking(data: DataFrame) ndarray[source]

Parsing du résultat de la localisation pour le suivi au sein de la DLL.

Paramètres:

data (DataFrame) – Donnée en entrée récupérées depuis la localisation.

Renvoie:

ndarray transformé pour le suivi.

Type renvoyé:

ndarray