Tags:
create new tag
, view all tags

Stage de Thibaut Buchert - ENSIIE Strasbourg - [6/06/16 au 12/08/16]

Important : cette page est réservée au suivi du stage, merci de ne pas la modifier

Informations générales pour les stagiaires

Pour toute information concernant ce stage : contacter Mireille

Sujet

Documents de travail

  • ...

Stage (juin - août 2016)

Juin

  • Semaine du 6 au 12 juin
    • Commentaires dans le code
    • Lecture de la présentation de la base de données
    • Correction de l'indentation du code et de quelques erreurs
    • Test du programme sur quelques exemples
  • Semaine du 13 au 19 juin

    • Le code a été refactorisé. Il est maintenant organisé en 4 classes :

      • CalifaGalaxy : Permet de récupérer les données des fichiers FITS de la base de données CALIFA. Le but est de pouvoir extraire les données de plusieurs bases de données différentes. Il faudra alors faire une classe par base de données.

      • AbstractSpectralLineExtractor : Cette classe est une classe abstraite qui définit toutes les méthodes permettant de trouver les raies, sauf find_pinit qui trouve l'initialisation de la recherche des raies. Pour pouvoir lancer un calcul, il faut crée une classe qui hérite de AbstractSpectralLineExtractor et implémenter la méthode find_pinit. Ajouter une méthode plutôt que de passer une fonction en argument du constructeur permet d'accéder à tous les attributs de la classe et de stocker un état si nécessaire.

      • SimpleLineExtractor et AdjacentLineExtractor sont deux implémentations de la classe abstraite précédente. La première se contente d'initialiser le calcul avec un vecteur constant, la seconde cherche dans les pixels voisins celui qui a les résidus les moins élevés et utilise la solution de ce pixel comme initialisation.

      • Pour les parcours : le choix d'un parcours se fait en passant un iterable au constructeur des ***LineExtractor. Ceci permet une grande souplesse dans le choix du parcours : on peut passer au constructeur une liste, un tableau, un générateur, une compréhension de liste, et plus généralement toute classe qui dispose d'une méthode iter.

      • Le but de cette refactorisation est de pouvoir optimiser le code sans détruire le reste du programme, de pouvoir extraire du spectre un nombre quelconque de raies, et de rendre le code plus présentable. Actuellement, le code est convenable en ce qui concerne l'optimisation sans courir trop de risques, mais il faudra encore réecrire certaines méthodes pour le rendre plus propre. De plus, le support de l'extraction de raies différentes des trois raies utilisées n'est que partiel.

      • J'ai présenté ces classes succintement pour donner une idée générale du nouveau code. J'écrirai une documentation détaillée qu'il faudra consulter pour plus de précisions.

    • Un profilage a été effectué. Le résultat est stocké dans prof.pstat il peut être ouvert avec ce logiciel. Le résultat de ce profilage montre que le calcul des résidus prend la quasi-totalité du temps de calcul. La méthode residuals est de plus appelée un grand nombre de fois. Il a donc été décidé de réecrire en C l'appel à la fonction leastsq pour accélerer cette étape du calcul tout en minimisant le nombre d'appel à une fonction C depuis python. La GNU Scientific Library sera utilisée pour remplacer les fonctions de scipy.
    • Pour les tests, le script est maintenant appelé avec GNU Parallel. Ce petit programme permet d'exécuter plusieurs scripts en parallèle, en tenant compte du nombre de coeurs disponible. Ce programme est pratique en attendant d'utiliser une bibliothèque permettant le calcul en parallèle.
  • Semaine du 20 au 26 juin

    • Réécriture de la minimisation en C. L'imlémentation en C utilise la GSL.Le module ctypes de Python est utilisé pour appeler les fonctions écrites en C. Lorsque l'option -o2 de gcc est activée, la vitesse d'exécution est multipliée par un peu moins de 3 par rapport à l'implémentation en python.
    • Nouvelle version de find_pinit, écrite de manière plus idiomatique.
    • Nouveau parcours en escargot. Il ne fonctionne que pour des matrices carrées pour l'instant.
    • Écriture de tests unitaires pour les parcours. Ils se contentent de vérifier que le parcours passe une et une seule fois par case de la matrice.

Juillet

  • ...

Août

  • ...

Sauvegardes

Liens

Versions testables

http://cdsgit.u-strasbg.fr/buchert/stage-califa/tags

Testé sur ...

Documentation

  • Rapport de stage:
  • Présentation:

Informations/travaux divers

  • ...

Travail post stage éventuel

Liste des améliorations à envisager

Bugs connus

Topic attachments
I Attachment Action Size Date Who Comment
Unknown file formatpstat prof.pstat manage 602.2 K 2016-06-20 - 08:06 UnknownUser Un profilage de path_multi.py
Topic revision: r7 - 2016-08-01 - ThibaultBuchert
 
This site is powered by the TWiki collaboration platform Powered by PerlCopyright © 2008-2024 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback