DoseViewer, interface graphique pour Neurad

Quelques petites informations sur le projet Neurad.

Bien que le site de Neurad soit maintenant fermé depuis quelques mois, son développement est toujours en cours. Ces derniers temps, le travail a surtout porté sur l’interfaçage du logiciel.

Le choix du Toolkit graphique reste QT et je vous propose un premier aperçu d’écan :

C’est du basique et il reste encore du travail, mais maintenant que les premières briques sont placées, le reste devrait avancer plus rapidement. Tout est une question de priorité.

Si vous avez des remarques ou des demandes particulières, n’hésitez pas.

[ad#Google Adsense]

Toujours lire les warnings … ils peuvent être plus génants que des erreurs …

3 sessions de travail, 3 sessions à me battre avec Eclipse, Hibernate et Tomcat pour comprendre pourquoi aucune de mes configurations ne marchait.

3 Sessions à tricher, à rechercher où coller mes fichiers de configuration pour qu’ils soient pris en compte …

3 sessions à avancer pas à pas, sans comprendre pourquoi tout ne marchait pas comme prévu, à ne pas comprendre le pourquoi des problèmes …

Jusqu’à ce moment où j’ai pensé à lire les warnings, tous les warnings …
———————————————-
Description Resource Path Location TypeClasspath entry WebContent/WEB-INF/classes will not be exported or published. Runtime ClassNotFoundExceptions may result.
———————————————-

Et voilà, j’avais oublié de cocher une case pour la construction de mon ClassPath, et le répertoire local de mon application n’était pas pris en compte … et donc Hibernate ne retrouvait pas ses fichiers … La case cochée, tout est rentré dans l’ordre …

Un warning qu’il faudrait peut être passer en erreur …

Astuces systèmes

1 Manipulation de fichier.

Travaillant actuellement sous plusieurs système, je me suis retrouvé à avoir des fichiers mal encodés … résultat, dans un même projet, j’avais des fichiers en ISO-XxX et d’autre en UTF-8. Donc pour homogénéiser le tout, le plus simple est d’utiliser la commande Linux suivante :

file nom_du_fichier > Permet de connaître l’encodage utilisé

iconv -f type_initial -t type_voulu nomFichier > nouveauFichier

Et le problème est résolu.

[ad#Google Adsense]

Astuce de prog

Cet article/section n’est pas un. Il va simplement me permettre de lister une petite série d’astuces ou de techniques qui peuvent être utiles … et que l’on met souvent un temps fou à retrouver.

Astuce 1 : Spécifier le nombre de digits d’un nombre (Très utile quand le lecteur associé aux programmes demande un format strict)

Utilisation de la STL

std::ostringstream oss;
oss <<std::setw(3)<<std::setfill('0')<<rg;

la fonction fill va permettre de présenter le nombre rg avec obligatoirement 3 digits (120 -> 120 mais 1 -> 001)

[ad#Google Adsense]

Astuce 2 : Faire un tri rapide sur une liste.

Si vous avez besoin de QT dans votre développement, et que à certains moment, vous devez faire appel à des techniques de tri … Le plus simple est de laisser à l’environnement QT faire le tri à votre place.

Pour ce faire, il suffit d’utiliser des QList et, son tri se limitera à l’appel à la fonction suivante :

qSort(listeMat.begin(), listeMat.end(), qGreater<int>());

Dans ce context, listeMat correspond à une liste d’entier, mais si vous travaillez sur des listes d’objets, il suffit de ré-implementer les méthodes qGreater pour votre objet.

Qt-Creator, un IDE performant

Travaillant sous Linux, et maintenant également sous Windows … Je me retrouve à rechercher un IDE pouvant être efficace sous les deux systèmes. Mon précédent choix était Eclipse accompagné de CDT qui me permettait d’avoir un IDE relativement opérationnel et facile d’utilisation.

[ad#Google Adsense]

Parce que je suis adepte du changement et parce que j’ai du refaire du développement à l’aide QT, je me suis décidé à utiliser l’IDE dédié qu’est QT-Creator …

Après 15 jours d’utilisation quotidienne, et hormis un petit problème de charset « problématique » entre les deux systèmes, je pense le garder encore un petit moment.

Ses plus :

– La génération automatique de Makefile via le .pro … C’est propre à QT, et pas QT Creator, mais cela facilite la construction du projet.

– La présentation du code (indentation, coloration syntaxique, …) très efficace.

– Le debugger intégré, avec visualisation des états mémoires, des valeurs des variables, bien pratique.

Enfin, tout cela pour dire que QT-Creator est un bon IDE, qui n’est pas limité à la production de code QT, qui est gratuit et multi-plateforme … et qui semble moins lourd qu’Eclispe et visuellement plus agréable (mais cela reste subjectif).

++

Ps : Qt sur le site de Nokia  :  ICI

[ad#Google Adsense]

De retour de Grèce

La conférence ICANN 2010 est maintenant terminée depuis quelques jours. J’ai pu y présenter mes résultats mais surtout, j’ai eu la chance d’assister à un panel très important de présentations de qualités qui m’ont permis de me mettre à jour sur le domaine l’intelligence artificiel.

De icann 2010

Parmis ce que j’ai trouvé le plus marquant, je peux citer :

  • l’utilisation conjointe des réseaux de neurones et des algorithmes génétiques,
  • des méthodes très interressantes de « décomposition de domaine »  qui font partie de la thématique de « Feature Selection & Dimensionality Reduction »
  • et surtout des avancées interessantes dans l’utilisation des « kernels machines »..

Je regrette toute fois des sessions « poster » trop « rigides » en durée et qui surtout sont détachés en fin de session ce qui gachent un peu l’intérêt des posters.

Très bonne conférence pour moi, et en ce qui concerne Thessalonik, c’est une très jolie ville, qui mérite le détour.

[ad#Google Adsense]

Mon article :

Efficient Domain Decomposition for a Neural Network Learning Algorithm, Used for the Dose Evaluation in External Radiotherapy. Marc Sauget, Rémy Laurent, Julien Henriet, Michel Salomon, Régine Gschwind, Sylvain Contassot-Vivier, Libor Makovicka, and Charles Soussen
LNCS 6352, p. 261-266, ICANN 2010.

Abstract : The purpose of this work is to further study the relevance of accelerating the Monte Carlo calculations for the gamma rays external radiotherapy through feed-forward neural networks. We have previously presented a parallel incremental algorithm that builds neural networks of reduced size, while providing high quality approximations of the dose deposit. Our parallel algorithm consists in a regular decomposition of the initial learning dataset (also called learning domain) in as much subsets as available processors. However, the initial learning set presents heterogeneous signal complexities and consequently, the learning times of regular subsets are very different. This paper presents an efficient learning domain decomposition which balances the signal complexities across the processors. As will be shown, the resulting irregular decomposition allows for important gains in learning time of the global network.

Offre d’emploi HPC

Parce que hormis la localisation, j’y aurais bien répondu :

Ingénieur Développement GPU/HPC

Le Consortium Scilab recrute un Ingénieur Développement GPU/HPC à compter du 1er novembre 2010.

Type de contrat : CDD de 18 mois (possibilité de CDI à terme) à compter du 1er novembre 2010
Rémunération : entre 35k€ et 40k€ brut/an selon diplômes et expérience
Lieu : INRIA – Centre de recherche de Rocquencourt (navettes à disposition)
Environnement

Scilab (www.scilab.org) est un logiciel de calcul numérique issu des recherches menées à l’INRIA et développé aujourd’hui au sein de la fondation DIGITEO par le Consortium Scilab regroupant académiques et industriels dont l’objectif est de faire du logiciel l’outil de référence international aussi bien dans l’industrie, dans la recherche que dans l’enseignement.

Scilab est un logiciel libre fortement diffusé dans le monde entier. Le travail proposé se déroule dans le cadre du développement professionnel d’un logiciel libre en liaison forte avec de nombreux partenaires et soutenu par une communauté dynamique.
Missions et activités

Dans le cadre du projet OpenGPU (http://www.opengpu.net/) et afin de renforcer notre équipe de recherche et développement, nous recrutons un développeur.

Le projet OpenGPU vise à valoriser l’utilisation des GPU (Graphics Processing Units) par la création d’un ensemble logiciel en fédérant les efforts des différents partenaires du projet.
L’implication de Scilab dans OpenGPU a pour but d’intégrer les possibilités offertes par le GPU dans la plateforme Scilab tout en simplifiant l’accès à cette technologie.

Sous la hiérarchie du responsable des développements et en collaboration avec l’équipe de R&D, vous aurez pour missions de :
– Développer et étendre les composants GP-GPU de Scilab,
– En fonction de vos compétences, participer aux développements de différentes tâches HPC (OpenMP, MPI, parallélisation de l’interprète, etc.).
Compétences et profil

* Connaissances professionnelles nécessaires :

– Programmation GPU (CUDA, OpenCL).
– Expert C/C++.
– Programmation multithread.

* Connaissances professionnelles appréciées :

– Utilisation d’outils de versioning (SVN, GIT).
– Processus et outils d’assurance qualité logiciel.
– Expérience en programmation d’interprète (AST, JIT, etc.)
– Expérience d’utilisation de Scilab.
– Maîtrise de l’anglais.

* Qualités humaines :

– Autonomie et sens de l’organisation.
– Rigueur, réactivité et sérieux.
– Esprit d’équipe.

Vous êtes à la recherche d’un travail motivant dans une équipe jeune et dynamique ? Venez nous rejoindre !

Lettre de motivation + CV à adresser à : job@scilab.org