
Envoyé par
gbdivers
Mon objectif était d'implémenter la fonction peakDetectionCWT du paquet MassSpecWavelet, en particulier pour garder les mêmes paramètres (pour comparer le résultat de différentes implémentation du traitement par ondelettes) de façon à profiter des performances du C++. J'ai décortiqué le code de la fonction (simplement en tapant le nom de la fonction dans R, sans ? ou parenthèses) et des fonctions appelées par cette fonction (cwt, getRidge, identifyMajorPeak, getLocalMaximumCWT, etc.). J'ai étudié le principe de l'algorithme pour comprendre le code (wikipédia + recherche internet + Numerical Recipes). Ca m'a pris plusieurs mois (mais ce n'était pas mon activité principale, quelqu'un pourrait le faire en quelques semaines, à condition de connaitre le C++ et R)
J'ai également utilisé RInside pour appeler directement la fonction R pour comparer mon implémentation avec la version d'origine à chaque étape du calcul (donc pour chaque variable intermédiaire générée)
En fait, j'avais un besoin particulier (performance) qui m'ont obligé à convertir le code. Mais en général, c'est un travail trop compliquer et trop lourd si tu n'as pas un besoin particulier.
Il est largement préférable d'utiliser une implémentation en C++ existante ou rester sur du code R (dans R ou avec RInside)
Pourquoi ce besoin de convertir l'algorithme en C++ ?
Partager