Aller au contenu principal

Pack

Un pack est un programme qui va executer une analyse sur une source de données. Les packs sont éxécutés par les agents en fonction de routines. Son but est de traiter la source et de récupérer des informations utiles à son sujet pour les renvoyer à la plateforme.

Comment faire un 'Pack' ?

Créer un pack

pack-steps

qalita pack init --name my_pack

Cela créer un dossier my_pack_pack avec les fichiers suivants :

my_pack_pack
├── main.py
├── pack_conf.json
├── properties.yaml
├── README.md
├── requirements.txt
└── run.sh
astuce

Les fichiers les plus importants sont run.sh et properties.yaml qui sont indispensables, avant chaque publication de pack une vérification de l'existence de ces fichiers est systématiquement effectuée.

FichierDescriptionExemples
main.pyContient le code du packmain.py
pack_conf.jsonContient la configuration du packpack_conf.json
properties.yamlContient les propriétés du packproperties.yaml
README.mdContient la description du packREADME.md
requirements.txtContient les dépendances du packrequirements.txt
run.shEst le point d'entrée du packrun.sh
info

Pour voir des modèles et exemples de packs, vous pouvez vous inspirer de ceux publiques répository github

Tester un pack

Vous pouvez tester votre pack en local avant de le publier sur la plateforme.

Pour cela vous devez utiliser la CLI Qalita :

qalita pack validate -n my_pack
qalita pack run -n my_pack
info

Si vous voulez utiliser le pack en local sur des données, veuillez créer un fichier temporaire source_conf.json

Exemple avec un dataset local :

{
"config": {
"path": "/home/aleopold/data/heart"
},
"description": "11 clinical features for predicting heart disease events.",
"id": 6,
"name": "Heart Failure Prediction Dataset",
"owner": "aleopold",
"owner_id": 2,
"reference": false,
"sensitive": false,
"type": "file",
"validate": "valid",
"visibility": "internal"
}
attention

Attention à bien supprimer les fichiers de résultats, logs, fichier de configuration source et les fichiers de cache avant de publier votre pack.

Au moment de l'exécution

Le point d'entrée du pack est le fichier run.sh qui est situé dans le chemin racine du dossier local temporaire créé par l'agent.

run.sh Exemple :

#/bin/bash
python -m pip install --quiet -r requirements.txt
python main.py

Le pack est alimenté par un fichier source_conf.json et en plus target_conf.json si le pack est de type compare.

Ces fichiers contiennent les données config: de la source.

Ces fichier sont situés à côté du point d'entrée run.sh.

source_conf.json Exemple :

{
"config" : {
"path" : "/home/lucas/desktop"
},
"description" : "Fichiers de bureau",
"id" : 1,
"name" : "local_data",
"owner" : "lucas",
"type" : "fichier",
"reference" : false,
"sensitive" : false,
"visibilité" : "private",
"validate" : "valid"
}
info

Le pack est responsable de gérer lui-même sa compatibilité de type de source en vérifiant le type de source dans le fichier source_conf.json.

Après l'exécution

A la fin de l'exécution du pack, l'agent recherche :

  • logs.txt : Fichier téléchargé pour donner les logs de feedback à la plateforme dans le frontend.

logs.txt Exemple :

2023-07-21 11:51:12,688 - qalita.commands.pack - INFO - ------------- Pack Run -------------
2023-07-21 11:51:15,087 - qalita.commands.pack - INFO - Fichiers CSV trouvés :
2023-07-21 11:51:15,222 - qalita.commands.pack - ERROR - Summarize dataset : 0%| | 0/5 [00:00` ?, ?it/s]
...

Visible sur la plateforme :

logs

  • recommendations.json

Le fichier Recommendations contient les recommandations données par le pack à propos de la source.

recommendations.json Exemple :

{
[
{
"content": "Cholesterol has 172 (18.7%) zeros",
"type": "Zeros",
"scope": {
"perimeter": "column",
"value": "Cholesterol"
},
"level": "info"
},
{
...
}
...
]
}

Les recommendations sont ensuite matérialisées dans la vue du pack dans la page de la source.

reco-pack-source

info

Il existe plusieurs niveaux de recommandations level :

  • info : Information
  • warning : Avertissement
  • high : High
  • metrics.json

Le fichier de métriques contient les métriques données par le pack à propos de la source.

metrics.json Exemple :

{
[
{
"key": "types_numeric",
"value": "7",
"scope": {
"perimeter": "dataset",
"value": "Heart Failure Prediction Dataset"
}
},
{
"key": "is_unique",
"value": "0",
"scope": {
"perimeter": "column",
"value": "Age"
}
},
{
...
}
...
]
}

Les métriques sont ensuite matérialisées dans la vue du pack dans la page de la source.

metrics-pack-source

Les mesures et les recommandations sont transmises à la plateforme et sont ensuite disponibles pour la vue d'exécution du pack de la source.

  • schemas.json

Le fichier de métriques contient les métriques données par le pack à propos de la source.

metrics.json Exemple :

[
{
"key": "dataset",
"value": "Heart Failure Prediction Dataset",
"scope": {
"perimeter": "dataset",
"value": "Heart Failure Prediction Dataset"
}
},
{
"key": "column",
"value": "Age",
"scope": {
"perimeter": "column",
"value": "Age"
}
},
{
"key": "column",
"value": "Sex",
"scope": {
"perimeter": "column",
"value": "Sex"
}
},
....
]

Les schémas sont ensuite matérialisées dans la vue du pack dans la page de la source.

schema-pack-source

Publier un pack

Les packs ont des auteurs, vous ne pouvez publier un pack que dont êtes l'auteur. Vous pouvez voir l'auteur d'un pack sur la page du pack :

Visualisation de l'auteur d'un pack

info

Lors de l'ajout de partenaires, les packs publiques de celui ci vous seront accéssibles dans un autre onglet dans la page des packs de l'application. Il seront également listés en utilisant qalita pack list vous pourrez les utiliser comme n'importe quel autre pack. Cependant vous ne pourrez pas les modifier.

L'auteur de ces pack sera l'utilisateur "partenaire" créé lors de l'ajout du partenaire.

Pour publier un pack vous devez utiliser la CLI Qalita :

  1. Installer la CLI Qalita
pip install qalita
  1. Récupérer son jeton d'API dans sa page de profil

profile-get-token

  1. Se connecter à la plateforme
agentName=admin
fileName="$HOME/.qalita/.env-$agentName"
mkdir -p $(dirname $fileName)
echo "QALITA_AGENT_NAME=$agentName" > $fileName
echo "QALITA_AGENT_MODE=worker" >> $fileName
echo "QALITA_AGENT_ENDPOINT=http://localhost:3080/api/v1" >> $fileName
echo "QALITA_AGENT_TOKEN=" >> $fileName
  1. Seplacer à la racine du dossier parent du pack

Exemple pour un pack nommé my-pack :

/-- parent-folder <----- ici
|-- my-pack_pack
| |-- __init__.py
| |-- my-pack.py
  1. Publier le pack
qalita pack push -n my_pack

Vous pouvez alors retrouver votre pack sur la plateforme :

pack-list

Qalita Pack Assistant

Vous pouvez utiliser notre robot conversationnel Qalita Pack Assistant pour vous assistez dans la création de pack.

Notre robot bénéficie d'une base de connaissance spécifique au cas d'usage de création de pack Qalita. Il saura vous guider et optimiser votre productivité.

qalita-pack-assistant

Pack publiques QALITA

Vous pouvez retrouver les packs publiques Qalita sur notre répository github. Ces packs sont maintenus par QALITA SAS et la communauté. Toutes les contributions sont appréciées.