Dans le développement de bibliothèques analytiques complexes, comme celles dédiées au clustering spectral ou au calcul de noyaux, le test unitaire est le garant de la précision numérique. Ce script illustre parfaitement l'utilisation de PROC IML pour valider la fonction spccGaussNeigh, un composant critique pour le calcul des matrices de similarité basées sur un voisinage gaussien.Pourquoi cette approche de test est-elle rigoureuse ?Validation par Encadrement : En informatique numérique, comparer deux matrices par une égalité stricte est risqué à cause des erreurs d'arrondi. L'expert utilise ici un encadrement (min et max) pour vérifier que le résultat se situe dans une fenêtre de tolérance acceptable (autour de $1.125 \times 10^{-7}$).Modularité via les Packages : L'instruction package load spectralclust démontre une structuration moderne du code IML. Cela permet de séparer le moteur de calcul (le package) de la couche de validation (le script de test), facilitant ainsi la maintenance évolutive.Intégration au Flux de Travail : L'utilisation de call symput pour mettre à jour la macro-variable return_code permet d'intégrer ce test dans une chaîne d'intégration continue. Si return_code vaut 1, le pipeline peut être stoppé automatiquement, garantissant qu'aucune régression algorithmique ne soit déployée.
Type : CREATION_INTERNE
Les matrices de données et de validation sont définies directement dans le code IML.
| 1 | %macro spccGaussNeigh1; |
| 2 | PROC IML; |
| 3 | package load spectralclust; |
| 4 | m = {1 2, 3 4}; |
| 5 | max = {0 1.1254e-7, 1.1254e-7 0}; |
| 6 | min = {0 1.1253e-7, 1.1253e-7 0}; |
| 7 | out = spccGaussNeigh(m, 0.5); |
| 8 | RESULT = all(out <= max) & all(out >= min); |
| 9 | IF RESULT THEN call symput('return_code', '0'); |
| 10 | ELSE call symput('return_code', '1'); |
| 11 | QUIT; |
| 12 | %mend; |
| 13 | |
| 14 | %test(spccGaussNeigh1); |