Anatomist: nouveautés


Version 3.1.2
Version 3.1.1
Version 3.1.0
Version 3.0.3
Version 3.0.2
Version 3.0.1
Version 3.0.0
Version 1.30
Version 1.29
Version 1.28
Version 1.27
Version 1.26
Version 1.25
Version 1.24
Version 1.23
Version 1.22
Version 1.21
Version 1.20
Version 1.19
Version 1.18
Version 1.17
Version 1.16
 

Versions 3.1 et suivantes

Les listes de changements ne sont plus écrites qu'en anglais, ici.

20/06/2006 - Version 3.0.3

Corrections de bugs:
  • Changements dans les routines internes de lecture des flux de commandes, qui étaient assez instables en particulier sous windows. Bon, je ne sais pas si c'est mieux maintenant.
  • Améliorations mineures:
  • ajout de paramètres (optionnels) request_id dans les commandes qui demandent une réponse à Anatomist: GetInfo, NewId et ObjectInfo
  • 27/04/2006 - Version 3.0.2

    Corrections de bugs:
  • Il restait des problèmes dans la gestion des référentiels, en particulier quand on joue avec les contrôles de transformation manuelle. Un nouveau système de mise à jour des référentiels a été mis en place.
  • Correction: à la création des Fusions 2D, l'ordre des objets spécifié par l'utilisateur n'était pas pris en compte
  • Correction: le paramètre linkedcursor_on_slider_change de la commande WindowConfig ne fonctionnait pas
  • Corrections dans des accès concurrents multithreadés qui causaient des plantages uniquement sur les systèmes multi-CPU sous windows (curieusement), mais qui pouvaient être dangeraux sous tout autre système également. D'ailleurs il doit rester des bugs parce qu'il arrive encore à Anatomist de planter, mais rarement maintenant...
  • Les extrêma de texture des Fusions 3D étaient incorrects et, en particulier, faux quand ces textures étaient exportées
  • Correction: la dégradation de la résolution des textures (coupes, volumes...) pouvait entrer dans une boucle infinie quand les textures ne peuvent pas être affichées du tout (sur des OpenGL/cartes 3D buggés)
  • Correction de l'interpolation des volumes qui était fausse et discontinue sur certaines coupes
  • Correction d'un certain nombre d'autre bugs mineurs
  • Améliorations mineures:
  • La sortie des événements SliceEvent a été un peu enrichie
  • Nouvelle commande: NewId pour générer un ID d'objet disponible. Cette commande est utilisée en particulier par BrainVisa pour éviter de réattribuer des IDs déjà assignés du côté anatomist.
  • Un manuel en français commence à voir le jour, tout beau tout neuf, écrit par Isabelle Denghien.
  • 11/10/2005 - Version 3.0.1

    Corrections de bugs:
  • Sauvegarde des graphes: les noeuds n'étaient pas toujours estampillés comme modifiés quand des changements avaient lieu dans le module ROI. Il pouvait arriver que les listes de voxels ne soient pas sauvées.
  • Corrections dans les "levelsets" (qui n'en sont pas) du module ROI, le mode 2D fonctionne de nouveau.
  • Corrections / modifications dans le comportement des graphes quand on change la couleur (matériau) de certains noeuds
  • Correction d'un plantage quand on ouvrait les propriétés de génération de texture lorsque l'objet n'était pas en mode "texture générée"
  • Les palettes sont lues avant la config utilisateur parce qu'elles peuvent servir dès cette étape
  • Anatomist peut maintenant être entièrement compilé en utilisant la librairie Qt 4. Ceci dit, le portage est loin d'être fini et il y a de nombreux problèmes d'affichage avec Qt 4. C'est une première étape...
  • Améliorations dans les configurations et directives de compilation
  • Correction dans l'inversion des transformations, qui ne donnait pas des résultats faux mais faisait des choses pas propres, peut-être à l'origine de certains plantages lors de la manipulation des référentiels et transformations
  • Correction d'un problème de précision/échelle de palette de textures avec une très faible dynamique dans l'intervalle [0-1]
  • Correction des captures d'écran: les objets "fantômes" (qui ne sont pas dessinés dans le Z-buffer) n'apparaissaient pas dans les snapshots. De plus c'était parfois le buffer OpenGL arrière qui était sauvé à la place du buffer avant.
  • ROI: correction de plantage dans le nommage de labels
  • Correction d'un bug important dans un système interne et central (observeurs) qui pouvait conduire à des plantages aléatoires, en particulier lors de la manipulation de référentiels (mais pas uniquement). En contrepartie il est possible que le chargement et la construction d'objets complexes (graphes) soit encore un peu plus lourde qu'avant...
  • Optimisations dans la destruction de multiples objets (graphes), l'interface graphique n'est remise à jour qu'à la fin, ça semblait être un goulot d'étranglement sur certains systèmes (mon vieux Mac...)
  • Correction d'un problème qui, sous Windows, saturait le gestionnaire de fenêtres et faisait tout planter avec des affichages bizarres sur tout l'écran quand on chargeait 2 graphes de sillons. Le problème venait d'une duplication des icônes de référentiels (donc leur création est normalement plus rapide maintenant, en plus)
  • Optimisations dans la gestion (création/destruction) des listes d'affichage: en particulier le rendu de nombreux petits objets qui changent (graphes de sillons en mode 2D) était vraiment très très lent. C'est toujours lent par rapport à ce que c'était dans anatomist 1.30, mais on regagne un ordre de grandeur par rapport à 3.0.0. Peux mieux faire...
  • Améliorations mineures:
  • Les propriétés de palette, matériau et texture sont maintenant sauvées dans le .minf des objets écrits par Anatomist (maillages, volumes, textures)
  • Les propriétés de textures indiquées dans les .minf sont lues et utilisées sur les objets chargés par Anatomist
  • Des événements "Slice" peuvent être émis quand le plan de coupe change dans une vue
  • une nouvelle commande SliceParams permet de régler le plan des objets contenant un plan de coupe
  • Le mode de fusion "maillage coupé" (CutMesh) est désormais accessible en mode normal (il était réservé au mode "instable"), mais sans le plan découpé car c'est cette partie qui est instable (et toujours pas débuggée). En mode instable, on a accès à tout, comme avant.
  • Petites améliorations dans les réglages par défaut des maillages de segments (par d'éclairage, pas de faces cachées)
  • 21/06/2005 - Version 3.0.0

    Pourquoi version 3 alors qu'il n'y a jamais eu de version 2 ? Et bien tout simplement pour harminiser les numéros de version de tous nos logiciels. AIMS était déjà en version 2.x, le "gros numéro" suivant était 3.
    "Changements "visibles" (utilisateurs):
  • Objets coupe: on peut maintenant extraire une coupe d'un volume (ou de n'importe quel objet 2D comme une fusion 2D) en le fusionnant seul, et afficher plusieurs coupes avec des orientations différentes dans la même fenêtre. L'orientation des coupes peut être changée à l'aide d'un contrôle spécifique.
  • Textures et transparence: leur rendu a un peu changé. Les textures transparentes sont maintenant prises en compte et peuvent rendre l'objet lui-même transparent. Ce système fonctionne aussi pour les volumes (images RGBA, ou images avec des palettes transparentes).
  • Nouveaux modes et options de plaquage de texture, nouvelle commande pour les régler: TexturingParams
  • Le "multi-texturing" est maintenant possible (en fusionnant plusieurs textures)
  • blocs de vues: on peut maintenant lier plusieurs vues Anatomist dans une même fenêtre. Les vues sont aussi indépendentes qu'avant. La commande externe CreateWindow a un nouveau paramètre pour permettre l'utilisation ce cette fonctionnalité.
  • Améliorations de l'interface utilisateur
  • Le curseur 3D est maintenant un objet anatomist quelconque et peut donc prendre n'importe quelle forme: on peut le sélectionner dans une list extensible.
  • Le dessin de ROI peut maintenant s'appuyer sur des clicks sur des maillages ou d'autres objets 3D.
  • Diverses fenêtres de paramètre des objets (matériau, palette, paramètres des fusions 2D et 3D) ne sont plus définitivement liées aux objets sur lesquels on les a ouvertes, mais permettent maintenant de changer à la volée les objets auxquels ces paramètres s'appliquent. Concrètement cela permet d'éviter d'ouvrir 25 fenêtres de palettes en même temps si on a beaucoup d'objets.
  • Les fusions 2D impliquant plus de 2 volumes sont réparées et améliorées: tous les paramètres peuvent maintenant être réglés.
  • Anatomist sait maintenant lire et afficher des maillages de segments (filaires) et de quadrilatères.
  • Nouveau mode de rendu de textures, avec une interpolation des couleurs dans l'espace RGB (plutôt que dans celui de la palette). Il est peut-être plus adapté pour afficher des textures "de labels".
  • Nouvelle option de configuration: windowSizeFactor
  • Les propriétés de matériau et de palette des objets peuvent maintenant être sauvées dans les fichiers en-têtes .minf (méta-info) des objets et sont appliquées automatiquement au chargement des objets. C'est donc maintenant facile de donner toujours la même couleur à un objet. Les propriétés de palette peuvent être stockées sous forme de dictionnaire dans l'attribut palette (mêmes paramètres que la commande du processeur SetObjectPalette) et les propriétés de matériaux dans l'attribut material (mêmes options que la commande SetMaterial).
  • Nouvelle option de commande-ligne: -u <userprofile> pour utiliser des configurations différentes en cas d'utilisation sur un compte partagé
  • Possibilité de donner un référentiel par défaut aux objets et/ou fenêtres créés (chargés) depuis l'interface utilisateur (réglable dans les préférences)
  • Un manuel utilisateur a commencé à être écrit par Isabelle Denghien (en français...)
  • Le contrôle "transformation" a maintenant deux modes d'interaction supplémentaires: changement d'échelle et rotation dans le plan de coupe, utile pour recaler manuellement des volumes fusionnés.
  • L'ouverture de session ROI peut maintenant lire un volume (d'entiers 16 bits) et le convertir en graphe de ROI à la lecture.
  • Le contrôle de défilement de coupes a plus de modes (défilement continu, en aller-retour etc), et on peut aussi régler la vitesse de défilement
  • Le trackball a un mode "apesanteur": les objets continuent à tourner quand l'utilisateur relâche la souris.
  • Mode où le curseur lié suit les actions des sliders (coupe/temps) des fenêtres 2D/3D (la position se propage dans les autres vues)
  • Divers raccourcis clavier dans les fenêtres et leurs contrôles
  • Mode plein écran sur les fenêtres anatomist
  • On peut maintenant donner manuellement une position pour le curseur lié depuis une fenêtre 3D (par ex. pour reporter des coordonnées depuis un logiciel externe comme SPM)
  • Les propriétés de rendu peuvent maintenant être réglées objet par objet (parmi les propriétés de matériau).
  • Changements internes (programmeurs):
  • Le moteur d'affichage (la couche utilisant OpenGL) a été entièrement réécrit. Il est en principe plus souple, plus facile à utiliser et plus puissant, bref: mieux foutu.
  • L'API des objets a changé aussi: toutes les fonctions d'affichage OpenGL sont déportées dans des classes d'API spécifiques.
  • Nouvelle commande: TexturingParams
  • Nouvelle commande: ExtractTexture
  • Nouvelle commande: GenerateTexture
  • Nouvelle options dans la commande LoadObject: as_cursor, options
  • Des fenêtres 3D sans décorations (menus/boutons) peuvent maintenant être créées (via le système de commandes) pour être incrustées dans des applications spécialisées
  • Nouvelles options dans la commande CreateWindow: block, options
  • Nouvelles options dans la commande WindowConfig: snapshot, linkedcursor_on_slider_change
  • Nouvelle commande: ObjectSlice
  • Nouvelles options dans la commande GeteInfo: name_referentials, name_transformations
  • La commande ObjectInfo donne plus d'infos sur certains objets (référentiels)
  • Nouvelles options dans la commande SetMaterial: lighting, smooth_shading, polygon_filtering, depth_buffer, face_culling, polygon_mode
  • En fait il y a eu beaucoup de changements (internes et visibles) dans cette version...

    30/11/2004 - Version 1.30.3 (corrections de bugs)

    Changements "visibles" (utilisateurs):
  • Correction d'un bug d'affichage dans les coupes coronales des fusions 2D (volumes) lorsqu'une transformation était impliquée
  • Correction de la couleur de fond dans les coupes de volumes ne contenant aucune donnée (coupes hors du volume)
  • L'affichage (dans le terminal) des coordonnées SPM (pour les volumes SPM) ne se dit plus "coordonnées Talairach" quand le volume n'est pas normalisé. Autrement les valeurs étaient correctes.
    Changements internes (programmeurs):
  • Aucun (corrections seulement!)
  • 26/08/2004 - Version 1.30.2 (corrections de bugs)
    Changements "visibles" (utilisateurs):
  • Correction de l'ordre des octets (donc des couleurs fausses) dans les snapshots des fenêtres 3D sous Windows
  • Correction du chemin des palettes sous Windows
  • Correction de l'affichage de très grosses images (en 2D) qui ne tiennent pas dans la mémoire de texture des cartes 3D et qui nécessitent un sous-échantillonnage
  • Correction d'un plantage possible dans les fenêtres Profil sur certaines images
  • Changements internes (programmeurs):
  • Aucun (corrections seulement!)
  • 07/07/2004 - Version 1.30b (corrections de bugs et améliorations mineures)
    Changements "visibles" (utilisateurs):
  • Correction: la commande GraphParameters ne fonctionnait pas correctement tant que la fenêtre de paramètre des graphes n'était pas ouverte.
  • Commande SelectByHierarchy: l'attribut modifiers peut prendre une nouvelle valeur: remove, pour cacher les noeuds sélectionnés
  • Meilleur affichage des valeurs des volumes fusionnés (click en curseur lié)
  • Corrections de bugs dans la sauvegarde des graphes de ROI sous Windows
  • Activation de l'éclairage double-face sur les maillages lorsque les polygônes vus de dos sont dessinés. En d'autres termes, les maillages ouverts peuvent être visibles depuis les 2 faces.
  • Corrections d'un décalage de l'affichage des fusions 2D en mode non-interpolé, affichage des préférences pour l'interpolation
  • Correction d'un bug sur l'approximation du positionnement des coupes, qui pouvait être gênant pour la manipulation de coupes très fines (<0.1mm) comme par ex. des coupes histologiques de cerveau de souris (exemple au hasard)
  • Correction d'un bug dans le calcul du plan de coupe pour l'affichage 2D des buckets avec transformatoin de coordonnées
  • ... (je ne sais plus)
  • Changements internes (programmeurs):
  • Aucun (corrections seulement!)
  • 18/02/2004 - Version 1.30, initiale
    Changements "visibles" (utilisateurs):
  • Portage à Windows !
  • Améliorations mineures de l'interface graphique, comme l'accès aux options des objets par un click droit sur la fenêtre de contrôle
  • Le module ROI a été séparé en deux: un module de base et un contenant des algorithmes
  • Améliorations de l'interface du panneau de ROI: éradication de ce curieux bouton "refresh" dont je pense que tout le monde se demandait ce qu'il faisait là. La mise à jour du panneau est maintenant automatique, comme cela aurait du être le cas depuis le début.
  • L'option pour la convention d'affichage a enfin été activée (après des années et des années). Vous pouvez choisir la convention d'affichage radiologique ou neurologique dans les préférences.
  • Réglages pour les choses instables dans les préférences
  • Fusions 3D: nouveaux modes de calcul (point-à-point avec décalage de profondeur)
  • Volumes SPM: par défaut, les volumes SPM n'ont plus de repère associé automatiquement. Ce comportement perturbait trop de gens et était gênant dans beaucoup de cas. On peut maintenant recréer ce repère par une option "objet-spécifique" des volumes, ou bien on peut aussi activer l'ancien comportement (création du repère automatiquement au chargement du volume) par une option des préférences.
    Note: la création de ce repère est aussi un peu plus intelligent qu'avant: s'il en existait déjà un identique, il est réutilisé au lieu d'être dupiqué. Cela permet d'avoir le même repère sur tous les volumes d'origine identique.
  • Le marqueur de couleur de référentiel est maintenant dans les colonnes de gauche sur la fenêtre de contrôle (objets / fenêtres) de manière à être toujours visible au premier coup d'oeil.
  • La boîte à outils des contrôles (ROI...) peut être ouverte depuis un menu des fenêtres (plus seulement la touche F1 non-documentée), et s'ouvre automatiquement lorsqu'on enclenche le mode de dessin
  • Correction du bug (précédemment appelé "fonctionnalité") qui empêchait de sauvegarder les buckets des relations dans les graphes de sillons lorsque ceux-ci étaient sauvegardés sous un nouveau nom. C'était du au fait que ces buckets de relations n'étaient pas chargés du tout par Anatomist puisqu'ils ne sont pas affichés. Les graphes sont maintenant complets, et prennent quelques Moctets de plus en mémoire (et un peu plus longtemps à se charger)
  • Fenêtres 3D: on peut maintenant changer de coupe / temps avec des touches du clavier (PgUp/PgDown)
  • Changements internes (programmeurs):
  • La lecture de commandes (scripts / pipes de commandes / réseau) peut maintenant être compilée en utilisant des threads. Cela évite de bloquer le thread de l'interface graphique pendant la lecture des commandes, et ça devrait être moins sensible à des différences de comportement entre OS (Windows...).
  • 01/04/03 - Version 1.29

    Changements "visibles" (utilisateurs):
  • L'origine des images SPM est correctement gérée maintenant (il y avait un bug dans la version 1.28)
  • Premier essai pour faire des maillages coupés par un plan: fusion maillage + volume, C'est encore très sensible aux maillages contenant des triangles qui se croisent (qui font souvent planter), et il se trouve que la plupart de nos maillages contiennent des triangles croisés. C'est donc une "fonctionnalité instable", qui est activée seulement en mode --enable-unstable. Sinon on pourrait enfin afficher correctement une coupe de volume limitée à l'intersection avec le maillage (par ex. maillage du cerveau ou de la tête). Mais il y a toujours ce bug, qui est un peu difficile à corriger...
  • Anatomist sait maintenant lire et afficher des images et volumes RGB (et RGBA), comme par ex. des images Jpeg couleur
  • Menu pour sauvegarder les préférences
  • Un double-click sur la représentation d'une fenêtre (dans la fenêtre de contrôle) fait passer la fenêtre en question au premier plan
  • Nouvelle option de la commande en ligne: --enable-unstable, elle sert à activer des fonctionnalités dangereuses et buggées qui ne sont pas complètement finies (parfois même, pas opérationnelles) et qui sont normalement désactivées. Je n'ai pas fait de menu pour l'activer/désactiver en cours d'utilisation. J'aurais peut-être du.
  • Changements internes (programmeurs):
  • Communications: Anatomist peut maintenant être lancé en mode "serveur" et communiquer dans les 2 sens à travers un réseau TCP. Le pilotage par BrainVisa en est facilité (toute l'interface de communication a été refaite aussi du côté BrainVisa: stage de Julien Barbot). De plus Anatomist peut maintenant prévenir en envoyant des "événements" quand son état change ou que l'utilisateur effectue certaines actions (par ex. un chargement d'objet ou un click de la souris).
  • Plusieurs nouvelles commandes et nouveaux paramètres de commandes existantes pour le pilotage par BrainVisa (je n'ai pas noté la liste complète)
  • Commande d'exportation de texture (ExportTexture): sauve sur disque la texture d'un objet OpenGL texturé quelconque (par ex. une fusion 3D)
  • Encore des changements dans Aims et les couches de librairies en dessous d'Anatomist
  • Commande WindowConfig: nouveaux paramètres raise et iconify
  • 31/10/02 - Version 1.28

    Changements "visibles" (utilisateurs):
  • ROI: corrections de bugs, et nouvelle interface pour segmenter par LevelSets (Renaud)
  • Les transformations gauches (qui changent le sens du repère) sont correctement prises en compte: elles inversent le sens (intérieur/extérieur) des maillages et la visualisation en tient compte
  • L'origine des images SPM (ou qui ont été en format SPM) est ENFIN prise en compte: une transformation est automatiquement créée entre l'image et le repère central. ATTENTION, effet de bord: les objets segmentés à partir de ces images n'auront pas automatiquement le même repère, il faut le mettre à lma main, ça peut surprendre...
  • Encore un bon nombe d'améliorations des commandes pour le pilotage par BrainVISA
  • Diverses corrections de bugs que je n'ai pas notées à mesure
  • Changements internes (programmeurs):
  • Encore des changements dans Aims
  • Le système de chargement de modules utilise maintenant celui d'Aims (qui est une réécriture plus propre de ce qu'il y avait avant dans la commande en ligne anatomist). En conséquence le format des listes de modules a changé: la liste est dans un fichier (format python-like) au lieu de fichiers
  • 09/07/02 - Version 1.27

    Changements "visibles" (utilisateurs):
  • ROI: interface plus complète (Renaud)
  • Contrôle de transformation: permet de bouger un objet par rapport aux autres
  • ... (je n'ai pas tenu la liste à jour)
  • Changements internes (programmeurs):
  • La plupart des changements internes sur cette version concernent les librairies de plus bas niveau qu'anatomist: aims en particulier, dont tout le système d'entrées-sorties a été refait pour être complètement générique (formats complètement transparents et modulaires, mécanisme pour choisir le type de données).
  • Tous les codes de toutes les librairies ont aussi remises aux normes pour pouvoir éventuellement compiler avec d'autres compilateurs: gcc-2.95, gcc-3.0, gcc-3.1. Pour l'instant l'essai d'autres compilateurs (SGI, sous windows etc) ont toujours été des échecs: tous sont buggés et aucun n'arrive à compiler libshfj et aimsdata.
  • Nouvelles commandes pour l'interaction avec BrainVisa: Camera (réglage du point de vue), SaveTransformation (écrit une transformation, éventuellement après modif par le contrôle correspondant), WindowConfig (fixe les params de géométrie des fenêtres anatomist)
  • Commandes complétées: ObjectInfo donne des indications plus complètes
  • ... (je n'ai pas tenu la liste à jour)
  • 24/10/01 - Version 1.26

    Changements "visibles" (utilisateurs):
  • Drag & drop entre objets et boutons des fenêtres: on peut tirer un objet sur l'icône de la fenêtre de contrôle du type de fenêtre voulu, cela permet d'ouvrir une fenêtre et d'y mettre l'objet d'un seul coup.
  • Affichage des buckets refait, il devrait en principe être beaucoup plus rapide, donc rendre le dessin de ROI plus utilisable
  • ROI: affichages optimisés à différents niveaux, c'est plus rapide. Il reste encore des choses à faire de ce côté-la.
  • Comportement des affichages des fenêtres 3D modifié: l'affichage n'est plus différé quand de multiples affichages sont demandés
  • Mode "film": pour faire défiler les curseurs des coupes des fenêtres 2D/3D automatiquement
  • On peut maintenant fusionner deux textures 1D pour en faire une texture 2D
  • Référentiels & transformations: les transformations se propagent de repère en repère et se mettent à jour. Un repère "central" est utilisé par défaut sur toutes les fenêtres et tous les objets
  • Anatomist lit maintenant les textures d'entiers (16 bits signés et 32 bits non-signés)
  • Corrections de petits et gros bugs: affichage des volumes selon les axes avec changement de repère en particulier
  • Changements internes (programmeurs):
  • Nouvelle commande "ClosePipe" pour fermer la télécommande - par ex. pour que BrainVisa puisse se fermer sans tuer Anatomist
  • Nouvelle commande "SaveObject"
  • Nouvelle commande "CreateGraph" (module roi)
  • Nouvelle commande "AddNode" (module roi)
  • Modifs des sources d'Anatomist et toutes les librairies dont il dépend (Aims, graph, ...) pour pouvoir compiler avec d'autres compilateurs que gcc, ça devrait rendre nettement plus simple un éventuel portage à windows
  • Entrées / sorties des graphes entièrement refaites (au niveau Aims principalement), de façon plus générique - c'est encore un tout petit peu instable mais ça devrit être bien mieux à terme: en particulier les graphes contenant n'importe quel objet Aims pourront être chargés dans Aims, anatomist, SiGraph, Voi, etc. de la même manière.
  • Nouvelle commande "PopupPalette"
  • Nouvelle commande "GetInfo" - donne des informations sur ce qui est dans l'application (objets, fenêtres, référentiels, ...)
  • Nouvelle commande "ObjectInfo" - donne des informations plus précises sur certains éléments donnés par leur ID
  • Nouvelle commande "SetControl"
  • 19/06/01 - Version 1.25

    Changements "visibles" (utilisateurs):
  • Commandes du "simulateur de vol" corrigées
  • Le rechargement des objets devrait être mieux fait, ert pas seulement sur les volumes: on devrait pouvoir recharger aussi des maillages, des "buckets", des textures, etc.
  • Correction du bug très gênant qui montrait parfois la mauvaise coupe d'un volume (problème d'arrondi sur le no de coupe)
  • Le module de régions d'intérêt commence à fonctionner (Renaud Maroy): on peut dessiner dans un bucket. C'est primaire pour l'instant, mais ça existe.
  • Nouveau mode pour les fusions 2D: "linear on defined"
  • Changements internes (programmeurs):
  • Pas mal de modifs dans la couche AIMS (entrées - sorties entièrement refaites, librairie coupée en deux, ...)
  • Entrées - sorties: système de chargement / rechargement refait pour utiliser les nouveaux Finder/Reader d'Aims
  • Nouvelle commande DeleteElement, plus générique que DeleteObject ou CloseWindow.
  • Nouvelle commande SelectByHierarchy pour faire des sélections dans les graphes
  • Le tracking des faisceaux de fibres a été sorti de la librairie de base et "modularisé"
  • 09/05/01 - Version 1.24

    Une version qui a mis un peu de temps à sortir (6 mois!), mais avec vraiment beaucoup de choses refaites et des foules de nouvelles possibilités...
    Changements "visibles" (utilisateurs):
  • Corrections de bugs (et ajout de nouveaux...), entre autre j'espère avoir tordu le cou à celui qui faisait parfois planter quand on détruit un objet et qui faisait durer 1/2 heure la destruction d'un gros objet composé (graphe par ex.) - à vérifier... bon en fait c'est pas encore complètement propre...
  • Les scénarios effectuant une fusion nécessitant un choix (plusieurs fusions possibles) ne posent plus la question lorsqu'on les rejoue (attribut "method" de la commande de fusion)
  • L'historique précédent est gardé (backup) dans ~/.anatomist/history.ana~, ce qui permet de rejouer le scénario de l'exécution précédente d'Anatomist sans avoir à le copier préalablement
  • Nouveau look pour les fenêtres 2D et 3D, qui sont maintenant les mêmes, la plupart des fonctions d'avant remarchent, mais avec un comportement éventuellement un peu différent, en 2D il reste encore un peu de boulot (tracking des fibres non refait)... On peut basculer une vue d'un mode 2D à l'autre (axial, coronal, sagittal) et au mode 3D comme on veut, et mélanger des objets 2D et 3D.
  • Sauvegardes d'images des vues 2D et 3D en plein de formats possibles
  • Enregistrements de films sur les fenêtres 2D et 3D mieux gérés (sauvegardes lorsque l'image a réellement changé, pas lorsqu'elle est masquée et réaffichée)
  • Landmarks: toutes les actions qui impliquaient un click sur une image pour créer un point de repère (surface matching, landmarks de surfaces ou de graphe) ont changé de comportement: on ne clique plus sur "choisir un point" puis sur l'image, mais au contraire, on fait d'abord jouer le curseur lié, puis on clique sur "choisir un point": le landmark est crée à ce moment-là à la position du curseur lié du groupe de fenêtres non-groupées. C'est un peu imparfait mais ça sera amélioré plus tard
  • Correction du bug qui inversait l'orientation des normales des maillages en format .mesh binaire sur des machines nécessitant un byte-swapping du fichier (conversion intel-sparc par ex.)
  • Des palettes "utilisateur" peuvent être ajoutées, il suffit de les placer (images au format JPEG) dans le répertoire ~/.anatomist/rgb (répertoire à créer préalablement s'il n'existe pas): elles seront chargées au prochain lancement d'Anatomist
  • Option "recharger les palettes" dans le menu "réglages" de la fenêtre de contrôle
  • Drag & Drop: on peut maintenant "tirer" des objets depuis la fenêtre de contrôle, directement vers les fenêtres, ou vers le panneau droit de la fenêtre de contrôle.
  • Pour ceux qui bricolent les graphes (et les hiérarchies de noms), on peut aussi stocker des fichiers de syntaxe perso dans ~/.anatomist/syntax et ~/.anatomist/syntax/internal pour les attributs internes (non exportés dans les entrées-sorties mais utilisés en interne dans Anatomist ou les modules spécifiques) (non testé...)
  • La boîte de sélection de fichiers (pour charger des objets par ex.) peut avoir un certain nombre de répertoires pré-enregistrés pour retrouver du premier coup vos données préférées. Pour le moment l'ajout de directories n'est pas très convivial: il faut éditer le fichier ~/.anatomist/config/settings.cfg et ajouter l'attribut path_list avec comme valeur une liste de repertoires séparés par des ':' (comme les PATH Unix)
  • Option de lancement (sur la ligne de commande) pour ne pas ouvrir la fenêtre de contrôle: option -b ("batch"). Cette option sera utile pour une "visualisation simple", par exemple depuis la plateforme de traitements BrainVisa de Yann Cointepas.
  • Liste des modules chargés visible depuis la fenêtre de contrôle (menu aide/modules)
  • Rechargement de transformations sans avoir besoin de les effacer préalablement
  • Coupes obliques: on peut changer l'orientation du plan de coupe des volumes en utilisant le nouveau contrôle "vues obliques", 2 modes pour cela: soit en bougeant le plan de coupe avec le trackball, soit en bougeant les objets avec le trackball tout en laissant le plan de coupe fixe.
  • Début de module de régions d'intérêt par Renaud - c'est le tout début.
  • Les fichiers "scripts" .ana (ou "scénario") peuvent maintenant être chargés comme les objets, depuis le même menu "ouvrir" et la même boîte de sélection de fichiers, et au démarrage d'anatomist comme arguments sur la ligne de commande, le flag -f n'est plus obligatoire pour les .ana
  • On peut mettre des belles images en fond des listes (fenêtre de contrôle, browsers), si on l'indique dans sa config: éditer le fichier ~/.anatomist/config/settings.cfg et ajouter le champ listview_background en lui donnant le fichier image à utiliser (à un des formats supportés par Qt) - OK c'est juste un gadget, mais moi j'aime bien les gadgets.
  • Doc: j'ai un peu retouché son look (mais pas son contenu........)
  • Possibilité de mettre des plans de clipping dans les nouvelles fenêtres 2D/3D: ça peut être utile par ex. quand on mélange un volume anatomique et des objets 3D segmentés qu'on veut voir coupés
  • Les images SPM qui contiennent des valeurs infinies (NaN) sont filtrées et ne font plus planter Anatomist.
  • Pas mal d'options d'affichage des rendus OpenGL peuvent être choisies dans les fenêtres 2D/3D (panneau "outils" des fenêtres)
  • Changements internes (programmeurs):
  • Nouvelle commande Exit pour fermer un Anatomist télécommandé
  • Nouvelle commande LinkWindows pour grouper des fenêtres
  • Nouvelle commande Select pour la sélection (les sauvegardes / rechargements ne marchent pour l'instant pas pour les sous-objets d'un graphe)
  • Nouvelle commande Fusion2DParams, pour régler les paramètres des fusions 2D.
  • PASSAGE A Qt: plus de Motif ! Les fenêtres (3D, 2D) ont été entièrement refaites, l'appli changée etc etc etc. Anatomist n'est plus linké avec: Motif, Colc++, MPP, GLPP, GLw, QXt
  • les classes liées à Motif ont été enlevées
  • Système de contrôles de Renaud intégré et utilisé dans les nouvelles fenêtres
  • Classes de base intermédiaires pour les fenêtres Qt avec contrôleurs: QAWindow, ControlledWindow (gère la barre de boutons des contrôleurs)
  • Contrôles et actions de base pour fenêtres 3D: curseur lié, sélection, zoom, translation
  • Ajout du namespace anatomist pour diverses classes, presque toutes en fait
  • le package wincontrol a été enlevé (classes AViewControl, APointCollector, APointsCollectorTrigger)
  • Le système d'affichage a été revu, en particlier les fenêtres 2D affichent maintenant comme en 3D en utilisant OpenGL. Il y a encore pas mal de problèmes à régler et de bugs, mais bon... - attention, ça va être plus lent sur une machine sans carte 3D accélérée...
  • etc etc etc... en fait il y a eu beaucoup beaucoup de changements sur cette version...
  • 03/11/00 - Version 1.23

    Changements "visibles" (utilisateurs):
  • Outil pour tracer des plans passant par 3 points: dans le module anasurfmatch. On fait une fusion de 3 landmarks.
  • Surfaces texturées: on ne règle plus la palette depuis l'objet fusion (surface texturée ou interpolée) mais depuis la texture elle-même. Du coup on obtient des valeurs non-normalisées sur les réglages de palette, ce qui permet d'utiliser une échelle quantitative.
  • Fenêtre de news qui apparaît la première fois qu'on lance une nouvelle version d'Anatomist
  • Possibilité d'enlever le gros logo rouge "Anatomist" de la fenêtre de contrôle depuis les réglages de préférences (sauvable dans la config)
  • Cylindres: faits comme les plans, à partir de 2 surfaces landmark
  • Correction du bug qui faisait planter Anatomist à la lecture de fichiers compressés - on peut maintenant lire des .tri.gz ou des .tex.Z, etc.
  • Début de graphes de landmarks: création d'un graphe à partir d'un volume (sur la même géométrie), ajout de noeuds et de buckets en cliquant sur des points.
  • Chargement des graphes de ROI au format VOI, enfin dès que VOI aura un tout petit peu changé son format.....
  • Sauvegarde des graphes avec sous-objets (buckets, maillages) -> sauvegarde de graphes de ROI
  • Début de fenêtre de processing pour la perfusion (pas encore opérationnel), par Fabrice. On y accède depuis les opérations spécifiques sur un volume.
  • Lecture DICOM
  • Changements de repères étendus aux multi-objets: en particulier on peut mettre un repère sur un graphe et lui affecter une transformation
  • La sélection tient aussi compte des changements de repère
  • Changements internes (programmeurs):
  • Petites modifs de l'interface des AObjects (flags hasChanged ajoutés pour la texture et la géométrie), dans ATexSurface et AInterpoler.
  • Boîte de dialogue FusionChooser pour les cas où plusieurs fusions peuvent être faites à partir des mêmes objets
  • No de version d'Anatomist sauvé dans la config
  • Buckets refaits pour la partie 3D, en utilisant l'interface commune AGLObject
  • Modifs et améliorations dans plusieurs objets, les graphes en particulier
  • Nouvelle interface vues / contrôles de Renaud Maroy, à utiliser pour refaire les fenêtres 2D et 3D dans les prochaines versions
  • 03/10/00 - Version 1.22

    Changements "visibles" (utilisateurs):
  • Sauvegarde et rechargement des paramètres et préférences dans $HOME/.anatomist/config/settings.cfg. Pour l'instant cette sauvegarde est partielle, il y a encore beaucoup de choses qui pourrait être sauvé et qui ne n'est pas.
  • Le fichier de commandes "historique" sauvé automatiquement par Anatomist a été déplacé de $HOME/.anatomist-history à $HOME/.anatomist/history.ana, comme ça tous les fichiers de configuration locale, lus ou écrits par Anatomist, se trouvent dans $HOME/.anatomist/
  • Diverses modifs et corrections de bugs apparus avec Qt 2.2.0, comme par ex. des pbs de la boîte de sélection de fichiers, des plantages à la modification des noms de noeuds de graphes, ...
  • Fenêtre de référentiels & transformations refaite (Qt)
  • Fenêtre de fusion 2D refaite (Qt)
  • Nouvelle fenêtre "Profil" qui trace des courbes 1D selon l'axe voulu (par Fabrice): module perfusion
  • Changements internes (programmeurs):
  • Classe de configuration globale (AGlobalConfig) relisant sous forme d'arbre la configuration, et classes de config "locales" qui s'occupent d'aller chercher chacune pour un morceau de programme (un module par ex.) la partie de la config qui les concerne et de l'appliquer.
  • Commande "LinkedCursor"
  • Un peu de ménage: les fonctions, obsolètes depuis des années et des années, Anatomist::ReceiveEvent() et AObject::Action() ont enfin été éradiquées, ainsi que la structure AEvent qui allait avec, et une foule de fonctions inutiles et inutilisées dans les différentes fenêtres 2D.
  • Boîtes de sélection de fichiers re-standardisées en Qt, support Motif enlevé (Dimitri)
  • Headers SPM utilisant les nouvelles structures AttributedHeader d'Aims (objets attribués, ouverts)
  • Nouveau module de perfusion et fenêtre "Profile" par Fabrice Poupon... Bien joué ! (ce module nécessite la librairie de tracé de courbes Qwt)
  • Amélioration de l'usine à fenêtres AWindowFactory et extension en QAWindowFactory: ça permet de garder des infos sur les types de fenêtres, comme les icônes et des descriptifs et simplifie l'enregistrement de nouveaux types de fenêtres (voir doc de programmation, mise à jour elle aussi)
  • Mise en commun des modules dans la même arborescence de sources qu'Anatomist, mais en librairies séparées. Pour l'instant il y a 2 modules "officiels", anasurfmatch et perfusion: anatomist/src/anasurfmatch et anatomist/src/perfusion.
  • 24/08/00 - Version 1.21

    Changements "visibles" (utilisateurs):
  • Début "d'internationalisation": fichiers de traduction, avec un début en français pour les textes de l'interface graphique de diverses fenêtres (toutes celles refaites récemment, en fait, y compris dans les modules)
  • Fenêtre de préférences globales refaite
  • Fenêtre "Tools 3D" refaite
  • Fenêtres des divers paramètres d'éclairage en 3D refaites et regroupées en une seule
  • Amélioration des paramètres des graphes: prise en compte au démarrage des couleurs de hiérarchie et des "tooltips", changement de la couleur de sélection par défaut qui était assez moche...
  • Raccourci clavier "s" pour synchroniser les vues 3D. En maintenant la touche appuyée, on obtinent un genre de synchro temps réel (bon, c'est assez primitif mais pour le moment ça ira bien)
  • Améliorations de la fenêtre de palettes: boutons pour revenir aux réglages par défaut
  • Changements internes (programmeurs):
  • Fichiers de traduction .po et .qm (Qt) dans l'arborescence: dependencies/po
  • Système de Makefile pour ces traductions (dans dependencies/po aussi) pour regénérer les fichiers et les mélanger avec ceux des modules
  • Petites modifs de l'interface des fenêtres 3D (pour l'éclairage)
  • 07/08/00 - Version 1.20

    Changements "visibles" (utilisateurs):
  • Tout nouveau look pour la fenêtre de contrôle -- vous êtes priés de le trouver plus joli...
  • Disparition de la petite fenêtre AnaQt, ses boutons sont maintenant inclus dans les menus "normaux" de la fênetre de contrôle
  • Module de "landmarks" qui permet de repérer des points sur une surface ou de point d'une surface le plus proche d'un point sélectionné, accessible par les options des objets 3D
  • Correction du bug qui faisait planter sur l'affichage d'une image vide
  • Nouvelles pages web sur les moulinettes et pour l'utilisation d'Anatomist pour la TMS, par Jean-François Mangin
  • Corrections des changements de repère pour les changements affines (pas rotation pure) -> utile pour certaines images SPM et la normalisation de Talairach
  • Quelques petites fenêtres de paramètres refaites (plus modernes, en Qt): params des fusions 3D, affectation des référentiels
  • Nouveau look pour la fenêtre de réglage des matériaux des objets 3D: plus joli, en principe plus facile à utiliser, mieux fait, et ça prend moins de place à l'écran
  • Changements internes (programmeurs):
  • Nouveaux Makefile qui marchent presque
  • Passage du projet à PRCS
  • Vérifications de types dans les IDs des commandes (-> évite des plantages suite à des bugs grossiers de scripts)
  • Harminisation des numéros de versions des modules avec celui d'Anatomist: 1.20 pour tout le monde
  • Refonte complète de l'interface graphique de la fenêtre de controle: passage de Motif/Mpp à 100% Qt - un grand pas en avant vers l'élimination de Motif dans Anatomist...
  • Un certain nombre de petits changements d'interface des classes "centrales": application, fenêtre de contrôle en particulier
  • Changements dans le module anasurfmatch: séparation d'une petite fabrique de surfaces simples (landmarks), et nouvelle option de choix de landmarks dans tous les types connus d'ojbets 3D (surfaces triangulées, fusions 3D, surfaces texturées, interpoleur). On pourrait mettre ça dans la base d'Anatomist, à terme
  • Transformations: meileure centralisation des transformations et transformations inverses
  • 13/07/00 - Version 1.19

    Changements "visibles" (utilisateurs):
  • Début de doc de programmation, accessible depuis l'aide HTML.
  • Page de doc sur les commandes (programmation script...)
  • Corrections de bugs dans la lecture des commandes
  • Modifications de la fenêtre de réglage des palettes: changement des bornes possibles, liaison entre objets par valeurs (et plus par proportion entre min et max)
  • Support du format SPM flottant
  • Changements internes (programmeurs):
    Gros chantier: réorganisation de l'arborescence des sources et des Makefile:
  • Fusion des librairies Anatomist, AnaQt, AnaQtMod. AnaSurfMatch reste en module.
  • Elimination de la librairie FWF qui posait pas mal de problèmes (-> librairie MPP 0.8)
  • Qt est donc maintenant obligatoire
  • Remplacement des anciens Makefile (Cyril Poupon) par un nouveau système utilisant Tmake (Dimitri Papadopoulos). Bon: il faut bien dire que pour l'instant ça ne marche pas encore bien...
  • Petits changements dans les librairies et l'ordre des sources dans les Makefile pour régler les conflits entre les librairies Anatomist et AnaQt fusionnées. Ça reste encore un peu fragile et sensible à l'ordre de linkage des .o... Pas vraiment moyen de faire autrement tant qu'on n'aura pas séparé les librairies en plusieurs couches.
  • Nouveau lecteur de transformations, un peu plus "objet", beaucoup plus simple et un peu moins buggé
  • Nouvelles commandes (sur les couleurs, les fusions, les référentiels...)
  • fin 06/00 - Version 1.18

    Elle n'existe pas vraiment - c'est juste un remplacement de la version 1.17 (jamais mise en service) pour préparer les changements de la 1.19. Elle comprend déjà la fusion des librairies anatomist, anaqt, anaqtmod, mais je détaille tout dans 1.19. C'est encore les anciens Makefile.

    20/06/00 - Version 1.17

    Changements "visibles" (utilisateurs):
  • Nouvelles pages web (dont celle-ci et celles sur la programmation)
  • Correction de bugs dans l'interpolation de surfaces et le matching
  • Ajout d'objets temporaires pour matérialiser les points de repère du matching de surfaces
  • Curseur 3D
  • Support basique pour les changements de repère dans les fenetres 3D: rotation, translation entre 2 surfaces.
  • Changements de repères pris en compte dans les fusions 3D
  • Chargement de scénarios et télécommande possible à travers un "pipe". Reste à étoffer la liste des commandes comprises par le processeur.
  • Sauveragrde / chargement de la config. des fenêtres (basique), chargement en tant que scenarios classiques.
  • On peut maintenant plusionner plus de 2 volumes dans les fusions 2D, mais c'est encore très mal géré pour le mélange des couleurs
  • On peut aussi faire une fusion 3D avec un nombre quelconque de surfaces et de volumes, mais pour le moment seule la 1ère surface et le 1er volume sont utilisés: à compléter... en attendant, NE PAS S'EN SERVIR pour le moment......
  • Enregistrement en continu des images à chaque fois qu'elles changent dans les fenêtres 2D et 3D pour faire des films (option "record" dans le menu "window" des fenêtres)
  • La commande "anaqt" a disparu, suite aux changements de place des librairies (c'est pas ma faute!). "ana" et "anadyn" ont aussi été remplacées. Il faut maintenant lancer "anatomist". Le Dimitri en a décidé ainsi, ça ne se discute pas. point.
  • Changements internes (programmeurs):
  • Processeur de commandes: lecture / écriture presque entièrement refaits: ils utilisent maintenant le format "Tree" (la lecture n'avait d'ailleurs jamais été faite, avant)
  • Petits changements dans les entrées / sorties des arbres dans libgraph -> nouvelle version libgraph-1.9
  • 90% des commandes inutiles ont disparu (et ne sont plus sauvées). Par contre celles qui restent savent maintenant se recharger.
  • Changements internes dans les fenetres, un peu de ménage (mais il y a encore du boulot)
  • Travaux préliminaires au nettoyage nécessaire dans les changements de repère, au moins pour les faire marcher dans les fenetres 3D (le plus gros reste à faire...) et pour ajouter les offsets du format SPM.
  • Changements de repères changés dans le curseur lié en particulier (ATTENTION: nouveaux bugs potentiels...)
  • début 05/00 - Version 1.16

  • Modifs internes, améliorations, bugfixes dans tous les objets 3D et un peu ailleurs (et éventuellement ajout de bugs nouveaux ?...)
  • Possibilité de sauver des maillages en .mesh
  • [Interne] Moteur de gestion de modes de curseur de souris (pattern "contrôle"), ouvert, par ex. pour pouvoir cliquer dans l'image pour choisir des points au cours d'actions particulières (choix de points de contrôle pour du matching de surfaces, plantage d'electrodes, dessin de ROI, ...). Bon ça pourra être amelioré, c'est un peu simpliste pour l'instant.
  • Nouveau module "surface matching" anasurfmatch-0.1 qui offre:
    1. Nouvelle fusion surface - surface et fenêtre de contrôle associée pour effectuer le matching. Le process crée une 3e surface déformable sur laquelle il travaille. Le calcul s'effectue en "temps réel" (threads) et on peut modifier les paramètres en cours de route, ajouter / enlever des "points de contrôle", ..., c'est donc un nouveau jeu très amusant. On peut aussi enregistrer toute la déformation dans une surface "temporelle" et la sauver: mieux qu'un mpeg (et plus gros en mémoire), c'est en 3D...
    2. Nouvelle fusion surface - TexSurface (surface texturée): interpoleur. Ça permet d'interpoler la texture associée à un maillage sur un autre maillage (qui doit avoir préalablement été recalé par le matching précédent). But: voir les potentiels d'EEG sur la surface de la tête. Pour l'instant: interpolation linéaire.
    3. Lecture de mes formats de texture EEG/matlab et fenêtre de contrôle qui offre des sliders sur les dimensions supplémentaires qui n'existent pas de base dans anatomist (essai / sujet).
  • Toutes les commandes ana, anaqt, anadyn pointent maintenant sur le même script (anadyn) de manière a ce que tout le monde ait accès au(x) nouveau(x) module(s).