Bonjour, j'utilise R pour effectuer le clustering d'une chimiothèque. La chimiothèque que j'utilise actuellement contient environ 8500 composés.
J'ai tout d'abord généré une matrice de dissimilarité (avec la fonction "fp.sim.matrix")de dimension (8500*8500) puis j'ai utilisé la fonction "agnes" pour générer un dendrogramme.
J'ai ensuite utilisé différentes fonctions permettant d'explorer cette clusterisation. J'utilise nottamment "cutree" qui me renvoie pour chaque composé le numéro du cluster auquel il appartient à un niveau K et la fonction silhouette qui permet de déterminer pour chaque composé l'indice Silhouette. Dès les premières utilisations de ces fonctions j'ai eu des problèmes de mémoire indiquées par le message "impossible d'allouer un vecteur de taille 552169 ko".
D'après ce que j'ai compris(et ça a d'ailleurs déjà été traité dans le forum), R semble stocker ses variables dans la mémoire vive. J'ai donc relancé l'ordinateur afin de libérer toute la mémoire vive. Avant de relancer R j'ai regardé l'état de la mémoire de ma station (Linux RedHat). J'ai donc quand rien ne tourne : 220 Mo de mémoire vive utilisée (et une capacité de 2Go), 0 Mo de mémoire paginée (et une capacité de 2 Go).
Après avoir lancé R (la matrice de dissimilarité et l'objet Agnes sont chargés au départ), l'état de la mémoire est le suivant : 700 Mo de mémoire vive utilisés et 0 Mo de mémoire paginée utilisée.
Je lance donc successivement les fonction cutree et silhouette. J'obtient des résultats. Puis je souhaite relancer ces fonctions avec des paramètres différents et donc j'utilise la fonction rm() pour effacer les variables générées et donc libérer la mémoire. Cependant alors que je croyais être dans la même configuration que lors du lancement de R, l'état de la mémoire a encore changé : 1.2 Go de mémoire vive utilisée et 1.1Go de mémoire paginée utilisée...
Je relance donc les deux fonctions cutree et silhouette, celles-ci donnent encore des résultats. Mais au troisième lancement, le message d'erreur "impossible d'allouer un vecteur..." apparaît.
Est-ce que quelqu'un sait comment gérer ce problème de mémoire? Je pourrais éteindre et relancer R toutes les 2 opérations, mais j'ai besoin d'effectuer des boucles avec ces fonctions et je suis donc bloqué...
Je ne comprend pas pourquoi ma mémoire vive et ma mémoire paginée ne retrouvent pas leur état d'origine après avoir utilisé la fonction rm() pour effacer les variables!!!
J'ai regardé dans le mode d'emploi, il y a bien des fonctions comme "memory.size ou memory.limit" qui permettent d'étendre l'accès de R à la mémoire, mais si j'ai bien compris, les paramètres par défaut sous Linux sont déjà au maximum...
De plus R n'utilise pas toute la mémoire paginée disponible...
Si quelqu'un peut m'aider à résoudre ce problème... Merci beaucoup!!!
Juste deux autres questions plus simples
1. Pour enregistrer ma matrice de dissimilarité, j'utilise la fonction write.table, cependant quand je veux la charger, cela prend beaucoup plus de temps que quand elle est enregistrée dans l'environnement de R... y a-t-il une solution?
2. Je n'arrive pas à enregistrer mon objet Agnes, j'ai essayé la fonction "save" en mode binaire ou ascii, mais lorsque je recharge cet objet avec la fonction "load" la variable est vide... c'est pour cela que je la sauve dans l'environnement de R...
Merci beaucoup