Netcdf et calcul sur variables climatiques

Postez ici vos questions, réponses, commentaires ou suggestions - Les sujets seront ultérieurement répartis dans les archives par les modérateurs

Modérateur : Groupe des modérateurs

Bertrand DUFRESNOY
Messages : 2
Enregistré le : 06 Déc 2019, 12:30

Netcdf et calcul sur variables climatiques

Messagepar Bertrand DUFRESNOY » 25 Oct 2021, 07:00

Bonjour,
Ma question est d'ordre général.
Je suis débutant sur R et fort peu aguerri au traitement de données .
J'utilise des projections climatiques pour des calculs d'indicateur (agro)climatiques et je viens de mettre le nez dans un format de fichier que je ne connaissais pas : Netcdf. Je les charge avec stars. L 'organisation multi dimensionnelle (dans mon cas espace et temps) des données semble particulièrement efficace. Jusqu'à présent je traitais des dataframes avec une variable date. Les calculs sur les variables climatique de type moyenne , max (/an, /mois......) semblent faciles mais je suis moins sur de calculs un brin plus complexes qui feraient intervenir des cumuls.
Ma question (un peu floue et d'ordre général, je m'en excuse): de votre expérience ces tableaux multidimensionnels sont-ils adaptés aux calculs d'indicateurs climatiques (sommes de temperatures, date de franchissement de somme de température , sdt ou cumul de pluie entre deux dates, etc.....?) ou est-il plus facile de rester sur des data frames avec variable temporelle ?
merci

Logez Maxime
Messages : 3046
Enregistré le : 26 Sep 2006, 11:35

Re: Netcdf et calcul sur variables climatiques

Messagepar Logez Maxime » 25 Oct 2021, 11:32

Bonjour,

Il n'y a pas vraiment de réponses à ta question. Le plus facile c'est de travailler sur des types d'objets avec lesquels tu es le plus familier.
D'un point de vue technique, les arrays et matrices sont des formats qui me semblent les plus proches de celui du netcdf, parce que dans ces objets tu ne stockes que des informations du même type (des nombres décimaux par exemple).
Après quelque soit le type d'objet tu arriveras toujours à calculer des statistiques comme les moyennes, des écart-types etc.
Pour le reste je ne vois pas trop pourquoi tu ne pourrais pas calculer les autres valeurs qui t'intéressent avec l'un ou l'autre des objets.
A mon avis ton choix doit s'orienter par le format d'objet et/ou les fonctions que souhaites utiliser ou que tu maitrises le mieux.
Vu que R est un langage, du moment que tu sais programmer tu arriveras toujours au résultat attendu.

Cordialement,
Maxime

Franck Theeten
Messages : 17
Enregistré le : 07 Fév 2020, 17:09

Re: Netcdf et calcul sur variables climatiques

Messagepar Franck Theeten » 25 Oct 2021, 13:36

Une petite remarque cependant, liée indirectement au sujet: construire des dataframes dans des boucles, dont les colonnes contiennent des résultats d'accumulation, est coûteux en temps et mémoire, principalement à cause du fait que la fonction rbind effectue une copie intermédiaire (je ne sais pas si c'est également le cas quand on ajoute par l'indice). Il est beaucoup plus rapide de manipuler des vecteurs en parallèle au sein d'une boucle, un par colonne, et de les assembler après la boucle pour construire le dataframe. Il vaut mieux aussi itérer avec apply et ses dérivés qu'avec l'instruction for...

Logez Maxime
Messages : 3046
Enregistré le : 26 Sep 2006, 11:35

Re: Netcdf et calcul sur variables climatiques

Messagepar Logez Maxime » 25 Oct 2021, 19:49

Franck Theeten a écrit :Une petite remarque cependant, liée indirectement au sujet: construire des dataframes dans des boucles, dont les colonnes contiennent des résultats d'accumulation, est coûteux en temps et mémoire, principalement à cause du fait que la fonction rbind effectue une copie intermédiaire (je ne sais pas si c'est également le cas quand on ajoute par l'indice). Il est beaucoup plus rapide de manipuler des vecteurs en parallèle au sein d'une boucle, un par colonne, et de les assembler après la boucle pour construire le dataframe. Il vaut mieux aussi itérer avec apply et ses dérivés qu'avec l'instruction for...

Il y a une part de vrai et et une part de légende urbaine la dedans.
Je suis complètement d'accord avec l'utilisation des fonctions de types rbind, c, etc. qui serviraient à créer des objets dont la taille augementerait au fur et à mesure. Ce n'est pas efficace. Si l'on peut, il faut créer un objet qui servira à stocker les résultats et qui soient aux bonnes dimensions, caractéristiques, etc. et que l'on viendra remplir au fur et à mesure.

Pour les boucles for, je ne sais pas pourquoi elles continuent d'avoir tant mauvaise presse.
Si elles sont bien programmées elles sont aussi voir plus rapides que les fonctions de la famille des apply et peuvent tout à fait être parallélisées.
Pour un exemple concret sur leur efficacité voir le poste suivant : http://forums.cirad.fr/logiciel-R/viewtopic.php?f=3&t=10467.
Tout dépend de ce qu'on fait. Après comme pour tout, il faut savoir les utiliser efficacement et éviter certaines erreurs pour que leur efficacité soit maximale.
Concernant la parallélisation tout dépend de la manière dont on parallélise et du temps de calcul de chaque processus. Dans le cas de calculs très rapides, la parallélisation sera plus lente qu'un calcul classique (par exemple avec boucle for :))

Cordialement,
Maxime

Bertrand DUFRESNOY
Messages : 2
Enregistré le : 06 Déc 2019, 12:30

Re: Netcdf et calcul sur variables climatiques

Messagepar Bertrand DUFRESNOY » 26 Oct 2021, 12:13

Merci de vos retours,

en fait je devrais sans doute distinguer la nature du fichier (netcdf) qui est importante pour rapidité en lecture et écriture et les objets manipulés dans R : multidimensionnal array (stars avec deux dim d'espaces et une dim de temps) vs dataframe. Pour les comparaisons de rapidité dont vous parlez je verrai sur exemple concret.(on va essayer de "faire" avant de "faire vite").


Retourner vers « Questions en cours »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 1 invité