Anatomist Changelog

Anatomist: changelog

Version 4.6.0
Version 4.5.1
Version 4.5.0
Version 4.4.0
Version 4.3.1
Version 4.3.0
Version 4.2.1
Version 4.2.0
Version 4.1.1
Version 4.1.0
Version 4.0.2
Version 4.0.1
Version 4.0.0
Version 3.2.1
Version 3.2
Version 3.1.6
Version 3.1.5
Version 3.1.4
Version 3.1.3
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

2018/05/22 - Version 4.6.1

Visible changes (users):
  • When several volumes (or "sliceable" objects) are put in the same window, a Fusion2D is automatically created to display all slices properly merged together.
  • New little image "math" module: allows to build a new volume from others using a python expression formula (similar to
  • Fixes in time sliders for objects with time steps (or voxel size) different from 1. on time and higher axes.
  • Many other fixes

2017/11/30 - Version 4.6.0

Visible changes (users):
  • Handle objects of any dimensionality. Up to v 4.5 Anatomist was only handling 4D (3D + time) objects. This version can now use and visualize volumes with more dimensions, and use them in various types of fusions. A few objects might be "forgotten" and still be limited to 4D, but normally most of them can use extra dimensions in their texturing.
  • CIFTI connectivity matrices display. The connectivity matrix object may use a CIFTI file using on-the-fly reading, and use its information to map to one or several meshes. Additional ROI textures may be used as patches.
  • The referentials / transformations window has been entirely rewritten. It is now using a 3D display.
  • New fusion type: VectorField. Fusion 1 to 3 volumes to form a vector field, displayed as lines in a slice.
  • Palette mode "value 0 at center of palette" is now part of palette properties, is used in palette controls, and can be set by programming.
  • Windows snapshots and movie recording can now be done at given arbitrary resolution, and need no longer to fit the window / screen size. Off-screen rendering is working too, using hidden windows. They still need a X connection on Linux: Qt needs it and OpenGL contexts need it also.
  • Save / reload fusion objects and multiple objects. The new .aobj format can describe Anatomist objects, fusions, and properties. One or several objects may be saved in this format, and laded later.
  • Fixes in Fusion3D objects: the texture bounds were not correctly updated when recalculated, and the line modes now use one sample per voxel along the line, thus doe not miss any.
  • The transformation control has been improved and allows to select manually the transformation we want to operate on (by selecting source/destination referentials)
  • New fusion type: NormalsFusionMethod: fusion one (or several) mesh(es) to display its (their) normals.
  • Possibility to set perspective view parameters. The WidowConfig command has new parameters for this. The GUI has not been changed yet.
Internal changes (programmers):
  • Objects and windows APIs have been changed to handle N-dimensional objects and coordinates: typically AObject methods boundingBox, boundingBox2D, voxelSize (replacing the older VoxelSize), LinkedCursor actions, ViewState objects and GLComponent viewStateID method, etc.

2017/05/17 - Version 4.5.1 - never released...

Visible changes (users):
  • Fixes in texture duplication function, which avoids losing scaling and palette in some texture displays
  • allow drag objects to windows group(s)
  • allow drag windows from / to groups
  • In selection or ROI modes in a window, "V" key displays information about the selected region in the status bar
Internal changes (programmers):
  • Porting to Python3. PyAnatomist and the underlying libraries (PyAims, Soma-Base) have finally been ported to Python 3. They are thus source compatible with with Python 2 series (2.6 and later) and Python 3 (3.4 and later).
  • Porting to Qt5. Anatomist and PyAnatomist (and the underlying aimsgui) have been made source-compatible with both Qt4 and Qt5. The build system of BrainVisa will select the appropriate configuration according to the DESIRED_QT_VERSION variable in cmake, and building should work transparently.
  • New options in AddObject command: temporary and position
  • Pyanatomist: HeadlessAnatomist class to run Anatomist in batch, using Xvfb and possibly VirtualGL (X11 implementation only).
  • PyAnatomist: AItem in threaded implementation now ensure to be deleted in the main thread

2016/02/17 - Version 4.5.0

Visible changes (users):
  • Material rendering properties have been completed in the GUI (color/rendering) to include line width, unlit color, and new selection conditions properties.
  • Material rendering properties have been improved for selection conditions: now a mesh can choose to be selectable when it is transparent, semi-transparent, always...
  • Fixed broken GUI panel for selection action.
  • Palette views in windows support a larger set of objects.
  • Fixed wrong scaling of palette views.
  • Connectivity matrix view has now a colormap correctly scaled.
  • Various fixes in connectivity matrix view.
  • Fixed windows display being blank when involving an empty mesh with a transformation (mesh bounding box problem).
  • Modifications in shader renderers, addition of a few material properties to control shader activation and options.
  • Fibers/bundles reading does not depend on old connectomist (private) plugin and is now builtin and open-source (in aimsdata).
  • Trackvis (.trk) format support for fibers for reading.
  • Fibers are now built with color rendering, using shaders in anatomist.
  • The SurfPaint module has been significantly improved, especially there are now undo / redo functionalities.
  • New config option: windowBackground.
  • The file dialog when loading objects allows to see objects header information, and to select loading options, as well as choosing between several possible data types.
  • Possibility to save a number of objects types as textured meshes (textured surfaces, fusions 3D, planar fusions 3D...)
  • Partial support for Wavefront .obj mesh format, allowing to export (or partially import) complete objects / scenes to blender or other software
  • Docs have been converted to sphinx format, and integrated in a cleaner, simpler, and more structured shape: the old "help pages", the user manual, and the tutorial are now part of one user documentation set. The developer docs show C++ and python docs. As a consequence, all these docs are now available from the "Help" menu.
  • Fixed snapshot recording in 3D windows, which were more or less broken (did not shoot at the right time) since introduction of graphics views.
  • Fixed Anatomist crash when a volume contains Not-a-Number or infinite values.
  • Several fixes in SurfPaint module, which could cause crashes, incorrect displays, or unpractical manipulation.
  • The number of displayed polygons per object can be limited in the configuration (maxPolygonsPerObject option) to avoid problems with very large meshes (typically, fiber tracts) with some 3D hardware. GUI available in preferences/OpenGL.
  • Meshes transparency rendering improvements: it is now possible to sort meshes polygons by depth in a window. This notably improves the rendering of transparent objects with many overlaps (like cortical meshes). It is triggered by the "D" key in many controls.
    • WindowConfig command has a new option: polygons_depth_sorting to set it.
Internal changes (programmers):
  • Slight API changes in methods names of AWindow (start with lowercase).
  • Fixes in texture header properties when extracting a texture from an Anatomist object.
  • Complements in python bindings.
  • Source code has been adapted to avoid using Qt3Support compatibility library. (this will ease future porting to Qt5)

2013/04/07 - Version 4.4.0

Visible changes (users):
  • Possibility to display orientation markers ("L", "R" etc) in 2D views, still a bit experimental...
  • Fusion2D: geometric blend mode has been modified, and a new mode has been added for the former behavior
  • New Fusion2D blend mode: geometric lightening, "geometric_lighten"
  • New object type: Fusion2DMesh. It displays the intersection between a mesh and a slice plane, a bit like in CutMesh, but the slice follows the window slice orientation, thus can be displayed with a volume in a 2D view. To activate it, use the fusion button with one or several meshes selected.
  • Fixed handling of very large images ( > 32767 voxels in a dimension)
  • Visual feedback for interactive palette bounds settings in windows (ctrl+right mouse button + mouse move). As this feedback relies on an important change in 3D windows widgets, and which seems not to work correctly on Mac, this feature is disabled by default on Mac: see in the internal changes.
  • Clearer visual feedback when using the oblique slice control: 3D bounds and plane intersection is displayed during the interactions, and slice plane information is also displayed on the window (using the graphics view system).
  • Clearer visual feedback when using the transformation control: when manually playing with transformations, 3D information is displayed (bounding boxes of objects moving, instant rotation axis and angle, relative scaling... Information about the transformation matrix, axis, center, angle, and scaling are also displayed when the graphics view is enabled, and can be edited. The way all this looks may change in the future because I'm not sure is is really comprehensive...
  • A few user interface changes, mainly due to the replacement of the Qt3 compatibility lib by pure Qt4 code. Objects/windows lists behave a bit differently, and browser windows too.
  • In the palettes settings window, the palettes list has changed to a table, showing an image for each palette, and some properties associated to palettes, allowing to sort the table accordingly.
  • New Fusion3D fusion mode: median.
  • Minor reworking of a few icons
  • Some optimizations in volmume loading time and memory management
  • fixed bug in offset calculation in 4D images (time) in sagittal display
  • Many other fixes...
Internal changes (programmers):
  • Volumes in Anatomist are now stored as carto::Volume rather than in AimsData classes
  • New object types: sparse matrix, and connectivity matrix mapping on a cortex mesh. Well for now only a in-house toolbox which is still under construction may make use of it, so it is still completely hidden for most users.
  • The palette settings window now allows some extensions, and allows to open the gradient editor as an example
  • A few improvements in Python/C++ bindings
  • Fixed some memory leaks
  • Most of the uses of the Qt3 compatibility lib have been removed, except for one or two classes of the main Anatomist lib. (it will also prepare things for Qt5 compatibility in the future)
  • Use of Qt QGraphicsView in 3D windows: this change allow to display all kinds of overlays (text/graphics information, widgets...) on top of the 3D rendering. In this mode, the Qt OpenGL widget is the background of the graphics view, which implies some behaviour changes in the 3D interactions. We tried to minimize changes for users, but there might still be a few gitches. This graphics view system can be disabled in the settings. Moreover it seems not to work properly on Mac, so it is disabled by default on Mac. This new feature allows to display various information as feedback for controls, like in palette bounds settings, or slice orientation, or manual transformation control.

2013/04/07 - Version 4.3.1

Bugfix release:

  • Minor display improvement for meshes and textures: display polygon/vertex/texture info in status bar
  • Improvements and optimization bug fix in matplotlib-based histogram
  • Bug fixed in Fusion3D objects with time volumes, the update was somewhat broken
  • More robustness to broken mesh / texture specified association in meshes headers
  • Fixed material properties "line_width" and "unlit_color" which were not correctly honored
  • Optimization improvements in IO: loading volumes is notably faster

2012/09/06 - Version 4.3.0

This version also brings a number of bug fixes, and improvements

  • New 2D fusion modes
  • Fix visibility of icons in menus
  • Fix closing mode in ROI toolbox
  • Fix to enable displaying huge images
  • The Clear everything menu can really close all windows now
  • The matplotlib-histogram window has been improved, and now replaces the old one as the default histogram window (in windows buttons). Similarly, a new plugin brings a matlotlib-based profine window, which correctly handles coordinates transformations.
  • The manual sulci splitting plugin has been significantly improved, both on the algorithmic part (possibility to manually mark several points where the cut should go through) and the user interface (the cut line is visible before actually splitting, possibility to abort, etc).
  • Graph labels display as text in 3D, included in the selection control, and activated by hitting <A>, implemented in a fast way (compiled C++).
  • Anatomist windows highlighting: shows which window corresponds to the one under the mouse cursor in the list of the main window, or when using drag and drop
  • Optimizations in huge nomenclature / graphs coloring, which were terribly slow.
  • Use the Qt4 file dialog (which is more modern, but in some styles may lack some features, unfortunately...)

2012/02/16 - Version 4.2.1

Bug fix update and minor improvements:

  • Fix translations.
  • Fix a bug in iPython shell deletion
  • Disable saving texture for generated textures.

2012/02/03 - Version 4.2.0

Visible changes (users):
  • Add possibility to open browser window items when registering objects:
    • In practical use, when adding one object in a browser, the item is open; if several objects are added, it is not.
    • When adding several objects in windows, parent objects (graphs...) are added before their children. It avoids randomly having nodes together with their parent graph in browsers open via the "view/select objects" option of 3D windows.
  • Fusion 2D parameters window: fixed a crash in Qt when "dragging" an item in the list.
  • Added a box selection highligting feature to the improved selection control
  • Slightly modified outline selection using a more conventional "cel-shading" technique. It is maybe a bit less ugly, and has fewer side effects.
  • Disabled tooltips when to ROI drawing tool is active
  • Made a few referentials / transformations menus clearer (about header info)
  • Use the IPython Qt console in Anatomist if ipython >= 0.11 is present.
  • Surfpaint module update.
  • Behaviour change in Anatomist:
    • Add graph nodes with graphs in windows by default.
    • Remove graph nodes with the graph from views also. Children removal is governed by a new shouldRemoveChildrenWithMe() method in MObject.
    • Menu option to add a graph without its children, to allow the older behaviour when needed.
  • Windows blocks improvements:
    • Possibility to arrange block windows in rows or columns, or rearrange as a rectangle.
    • Flexibility on dynamic rows / columns layout arrangement of blocks: number of rows/cols can be specified.
    • Fix in adding a window into a block: empty spaces (for closed windows) will be used properly now.
    • Windows blocks now default to fixed number of rows (since screens are generally wider than high)
  • Re-focus view after referential change
  • New config option: commonScannerBasedReferential. When enabled, all such referentials found in image headers are assumed to be the same.
  • New menu option in referentials window: split referential to dissociate transformations.
  • Colorbar saving option in "view palette" feature (thanks Thomas)
  • New palettes: "Graph-Label", "pastel-256", "French"
  • Planar mesh in CutMesh objects: Inverted planar mesh normals to avoid in/out notion inversion.
  • Docs updates, especially about the surface paint tool.
  • avoid crash in ROI menu "session/clean" when the current graph cannot be retreived. (I Don't know what this is supposed to do anyway...)
  • Fixed referential inheritance on slice object
  • Fixes in lighting settings update in Anatomist windows
  • Take referentials / transformations into account when syncing views
  • Roi module: fixed GUI update of BrushUnit
  • Ensure windows are destroyed when closed even if they are not top-level windows (in blocks for instance).
  • Fix in PyAnatomist (socket implementation) asynchronous processing mess-up after destruction of objects.
  • Fixed multi-texturing bug on Windows OS. Actually it was the way to use OpenGL extension functions which did not work (or not always). Limiting the number of textures units should not be needed any longer.
Internal changes (programmers):
  • New command: PaintParam
  • Modified parameters of AddObject and RemoveObject commands, and cooresponding docs.
  • New command: WindowBlock
  • A few more Python bindings on the C++ library API, improvements and fixes
  • Changed applyBuiltinReferential functions to loadReferentialFromHeader() in python API.
  • Implement Anatomist.sync() in it just did nothing before. Now it calls qApp.processEvents().
  • added a Anatomist.paintParams() method in python API
  • Fixed memory leaks in AObjectConverter::anatomist() functions.

2011/09/14 - Version 4.1.1

Bug fix update and minor improvements:

  • New rotation mode where we don't need to keep the middle mouse button down: it is now possible to rotate an object by performing a double click with the middle button and moving the mouse. Another click ends this special rotating mode.
  • New Text objects to display text information in Anatomist windows.
  • More python bindings in the Python API.

2011/05/17 - Version 4.1.0

In this version, an important change for the developers should be noted : the build tool used to compile from the source code has changed. We gave up our home-made tool build-config and replace it with the standard tool CMake, a cross-platform, open-source build system.

This version also brings a number of bug fixes, and improvements:

  • New surfacic ROI drawing toolbox: it is now possible to paint on a mesh (into a texture), and use curve drawing tools which include curvature constraints. This toolbox is developed in Marseille by O. Coulon's team, mainly by A. Le Troter.
  • Update and additions to pyanatomist documentation.
  • Bug fix in FusionRGBAVolumeMethod fusion method
  • Bug fix in palette update in a MultiTexture fusion

2010/11/05 - Version 4.0.2

Bug fix update and minor improvements:

  • new option in Anatomist config and preferences panel: clipBrowserValues. This option allows to limit the size of strings displayed in browsers attributes, and avoid crashes due (probably) to too large pixmaps in X servers in some specific cases.
  • Gradient palette available for RGB images.
  • Improvement of tooltips on graphs in "display property" mode
  • Fix rendering problems using ATI cards and drivers on S16 volumes.
  • Fix ROI cursor display
  • 2010/07/29 - Version 4.0.1

    Bug fix update and minor improvements:

  • Graph labels picking/copy/paste from one window to another is now possible.
  • 2010/05/28 - Version 4.0.0

    This version of Anatomist is now built and distributed using Qt4 by default. It may bring some minor graphical interface differences, but everything should work as before in any case.

    The sources are still compatible with Qt3 also, both versions will be maintained for about 6 months until every developper switches to Qt4.

  • OpenGL-based selection infrastructure. Selection functions for meshes and polygons have been included in Anatomist. In "debugger" mode (userLevel >= 3) this mode replaces the older graph/bucket selection mechanism. When correctly tested, it will fully replace it.
    A little texture drawing code example is now part of the examples.
    The new infrastructure is not optimized at all yet, so, drawing is slow, but we will improve it in time to avoid unnecessary OpenGL renderings.
  • Python bindings and the python API have been slightly improved.
  • New command: ApplyBuiltinReferential
  • The file browser for loading objects now shows all file extensions used by supported objects files. Extensions list is built dynamically from the loaded readers.
  • Clearer tooltips in the referentials window.
  • Bug fixes:
  • Many problems have been fixed when Anatomist is built using Qt4. Some modules had not been ported or tested, and Mac and Windows ports had not been tried. Now things are mostly tested.
  • 2010/01/18 - Version 3.2.1

  • A new custom application for a simple viewer more suitable for inexperienced users:, written in python (so, based on the python bindings API). It offers a classical, simple one-window, four-views viewer. It may be used as a code example, and can be useful for end users too.
  • A new histogram plugin using Matplotlib (written in python) is available and may replace the existing one (using Qwt): it is much more flexible (interactive zoom, possibility to save the plot...) and prettier.
  • Graphs now have the classical "apply builtin referential" option, and uses Talairach transformation info contained in the graph.
  • Volume rendering is now using by default a palette derived from the underlying object palette, with transparency added.
  • New plugin: menu option to set a distinct palette on a set of volumes, allowing to quickly display 2D fusions without opening the palette window on each volume and selecting one manually.
  • New command: FusionInfo
  • New option in WindowConfig command: light.
  • New option in RemoveObject command: remove_children.
  • Bug fixes:
    Many minor fixes...
  • The ROI cursor was buggy on Mac and was disabled in 3.2.0. It is now fixed and enabled again. Actually the bug came from int/float conversion at the anatomist Bucket object level.
  • Some objects opacity was not correctly taken into account (textured surfaces, 3D fusions...); this has been fixed.
  • Fixed menu options for various multi-objects (graph objects). This also fixes the fact that right-clicking on a graph node in a browser window didn't provide the "object-specific" menu.
  • Fixed the ROI cursor being drawn at the wrong position when using referentials and transformations
  • Added new windows types in control window menu
  • PaletteViewer doesn't show any palette on objects which don't have one. This prevents a crash, and avoids unneeded work
  • added colormap variants, more suitable to linear fusions (which is the default today)
  • Fixed some (the last?) side effects when the VTK plugin is loaded
  • Fixed referentials problems on clipped objects
  • 2009/09/02 - Version 3.2

  • VTK plugin by Pierre Fillard, which allows to render VTK objects, and especially enables a mix between Anatomist and MedInria objects.
  • GIFTI format IO support for meshes and textures
  • Bug fixes:
    Volume rendering has been fixed, it did not work on some OpenGL implementations (like on our Mac and our Windows machines).

    2009/03/26 - Version 3.1.6

    Bug fixes:
  • Fixed coronal and sagittal views orientation in direct referentials
  • Fixes in some objects update functions (when depending on other objects changes)
  • reimplemented the "clear unused referentials" feature in a way that does what it should, this time.
  • When saving a graph, correctly set its .data filename
  • Fixed default referential on Fusion3D objects
  • when reloading an object, keep its former referential if the reloaded object has the default one
  • fixed crash when changing the fusion object in Fusion2D parameters window
  • Minor improvements:
  • New ClippedObject, allowing to cut any object by a clipping plane with its own orientation
  • avoid creating spurious unneeded referentials in AssignReferential
  • anatomist python plugin: allow to load a .py script via the open button or LoadObject command (this is a security problem, of course, and should be disabled in some cases, but it's convenient)
  • Internals:
  • Fixes for the Qt4 variant
  • little fixes and additions to python bindings
  • 2009/01/30 - Version 3.1.5

    Bug fixes:
  • Fixes in volume rendering: allow to correctly use it on volumes of float and double values.
  • Fixed a texture values rounding problem.
  • Fixed crashes in histogram window.
  • Fixed an update problem in multi-textures.
  • Minor improvements:
  • New semi-transparent palette for positive/negative activation maps suitable for volume rendering, with gradient information.
  • In palette window, new mode to keep value 0 in the center of the colormap (useful for signed values activation maps).
  • In 3D fusion parameters window, users can now type values for depth and step, with the required precision.
  • ROI module: filter objects that can be used to draw ROIs on: remove graph elements to keep a small and readable list
  • ROI drawing: The 3D brush shape is now displayed in real-time and follows the mouse, so that the user sees which voxels will actually be drawn.
  • ROI drawing: Better feedback when drawinf and erasing: the current pencil strike is correctly displayed over multiple regions (in replace mode), including when erasing (a white transparent region is displayed and shows voxels which will be suppressed). Erase mode is much faster when erasing large regions, because the region itself does not need to updated in real-time any longer.
  • New parameter value in SetMaterial command: polygon_mode = ext_outlined.
  • New selection visualization mode: it is possible to see selected objects with a colored thick outlined border rather than displayed with a different color. This option can be changed in the graph parameters window, and saved in the settings in the 'selectionRenderingMode' property.
  • New options in AddObject command: add_children, add_graph_nodes and add_graph_relations.
  • 2008/11/14 - Version 3.1.4

    Bug fixes:
  • Fixed in the objects the Cut control was acting on.
  • Crash fix when using shift+S, shift+C in Cut control.
  • Cut meshes take theit initial mesh material.
  • Fixed ObjectInfo output when several objects share the same filename.
  • Experimental Folds Split control. Not useful for standard users, put in high userLevel...
  • Fixes in handling of graph relations in borwsers.
  • Fixes in graph recolor and color edition functions.
  • Fixes in Material (color) application on segments meshes.
  • Fixed texture reload bug.
  • Fixed texture values scaling bugs.
  • Keep track of initial data type of textures (internally converted to float), use it when saving a texture back to disk.
  • Fixed palette values error when closing the palette window when several objects are selected.
  • Fixed visually selected palette in palettes edition window
  • Fixed referentials problems in the ROI toolbox
  • Minor improvements:
  • An opacity channel has been added to the background light properties. It has no effect in OpenGL renderings but is used when saving RGBA snapshots.
  • When saving a snapshot, the image file format is taken from the filename rather than from the filter combobox of the file dialog. A general filter for all images formats has been added.
  • New "absoluteMode" parameter in SetObjectPalette command to set absolute object texture values.
  • New "line_width" and "unlit_color" properties in Materials (SetMaterial command). "unlit_color" is only used in outline rendering mode, and only when set to outline mode individually (from its material, not from the window global option), for technical reasons.
    No GUI allows to set them by now, but the SetMaterial command can.
  • New "filename" parameter in CreateGraph command.
  • Improved a little bit activation of windows controls for specific object types when no object is selected.
  • The ROI button has been placed on the top 3D windows toolbar (internally, it's not a fake control any longer): it does not deactivate the current control anymore when clicked.
  • SetMaterial command: allow polygon_mode='outline' as in the doc (in addition to 'outlined' as in the code...)
  • CutControl: allow zoom with the mouse wheel.
  • New option in rerefentials window menu: clear unused referentials.
  • 2008/09/24 - Version 3.1.3

    Bug fixes:
  • Some instabilities in the new gradient palette editor were fixed.
  • Crash fix when saving a custom nomenclature from the ROI module
  • several other tiny things...
  • 2008/09/03 - Version 3.1.2

    Bug fixes:
  • Fix in the dimension of RGBA volume extraction (fusion) which most of the times resulted in incorrect/corrupted data or crashes.
  • Fixes in transformation handling in RGBA volume extraction and volume rendering of 2D fusions
  • Crash fixes in the graph labels edition tools
  • Minor improvements:
  • New anatomist module for palette edition as user-defined gradients. This modules uses a nice widget taken from the Fraqtive project.
  • 2008/08/08 - Version 3.1.1

    Bug fixes:
  • The new volume rendering module had been forgotten in the binary distribution, it is back now. However it has been tested only on Linux.
  • Some cleanups and memory leaks fixes
  • Minor imporvements:
  • changed the way objects in graphs are loaded and stored, which both fixes incorrect loading of some labels volumes in graphs, and allows a cleaner programming manipulation in AIMS and Anatomist
  • more python bindings
  • 2008/01/05 - Version 3.1.0

    "Visible" changes (users):
  • Volume rendering module: volumes can be viewed using volume rendering techniques. To access it, just fusion a volume alone and select a volume rendering object. Rendering is done via OpenGL, so can be mixed with standard surface rendering. It may put a heavy load on 3D graphics cards, so expect it to be slow on older or cheap 3D cards - it is possible to lower the precision in volume rendering objects settings. It also needs support for 3D textures in OpenGL, and not all 3D cards can do it, so it may just not display anything at all. The module is an integration of an engine written by Fabrice Poupon. Lots of improvements should be done later, especially on palettes settings which determine material transparency and are very very important.
  • Major changes in the referentials and transformations system:
    • referentials can have an associated file (.referential, MINF format), bringing some information, especially an unique identifier (UUID) and possibly a name.
    • transformations may have a .minf file specifying UUIDs for source and destination referentials. If referentials are known to Anatomist, they are used automatically, so they can be loaded without specifying source/destination from a user interaction.
    • For this reason user interactions in the referentials window have changed a bit, and tooltips display full information on referentials and transformations. It is possible to draw an Identity transformation between two referentials using <Ctrl>+mouse drag from source to dest refs.
    • The old direct/indirect referential problem has been mainly solved. Anatomist defaults referentials are indirect, but transformations going to a direct referential (like the MNI referential used in SPM) are now OK. Displays and 3D renderings now take this into account. When a direct referential is used on a window for viewing, a distinctive icon is drawn on the referential bar of windows.
    • Anatomist now knows two standard referentials: our AC/PC-Talairach (red) referentlal, and the MNI template referential, allowing to use the MNI/SPM coordinates system on SPM normalized images.
    • As a consequence, SPM images referentials (origin translation, normalized images) may behave a bit differently as before.
  • The former useSpmOrigin user configuration option in $HOME/.anatomist/config/settings.cfg is replaced by the more general setAutomaticReferential. The old option is still supported for compatibility reasons but is obsolete.
  • mesh files .minf header can now contain texture information: texture_filenames is a list of textures to load and apply. Then fusions are automatically created
  • Mesh cutting: the algorithm has been entirely re-written. It is way faster and should never crash anymore, so it doesn't need to enable unstable features to be used. However it suffers the same limitations as before: meshes with overlapping triangles will cause incorrect re-meshing and visual problems, but not more (there is hope to completely fix it in the future but I could not get time to work on it, and this part of the algorithm is especially boring). Moreover it is now posisble to perform several cuts on a mesh: re-cutting a cut mesh will work as expected.
  • Graphs can now be colored according to a numeric property (attribute) of their nodes, a palette is applied to the values.
  • Fusion2D defaults to Linear mode, not Geometric as before
  • Tooltips in 3D views on structured objects (graph elements) are clearer and display much more information
  • Some new little things to improve user interactions: better support for drag and drop (for instance between a file browser and anatomist), easy display options for some objects, and possibility to draw object palette in windows (python modules by Matthieu Perrot), etc.
  • A histogram display window (module by Fabrice Poupon)
  • 3D windows can show position and object values in a status bar. It is hidden by default (because it takes a bit of screen surface) but can be enabled in the window menu.
  • Better handling of graph children objects, especially relations. Children objects can be loaded or not via an option or in user settings. Relations can be displayed in 3D views. Browsers display and behaviour has been imporved when handling relations (in the hidden right panel)
  • Improvements in browser windows for graphs: nodes labels are displayed using nomenclature colors (as for 3D views), editing multiple properties and/or properties on multiple objects is now allowed provided all edited properties have the same time. In short: you can now change the label of several nodes at once.
  • An important optimization bug has been fixed when putting lots of objects (multiple graphs...) in a 3D window: it's not slow anymore
  • ... and many many bug fixes...
  • Internal changes (programmers):
  • Porting to Qt 4. Anatomist 3.1 can compile and run with either Qt 3 or Qt 4 (provided both Qt are not mixed). The Qt4 version has not been really used yet but should be OK.
  • Python bindings have been greatly improved and cleaned. A unified python API now allows to control anatomist either via bindings (direct access to the anatomist library) or via a socket connection. Moreover it is possible to write Anatomist modules in python. See the pyanatomist project.
  • New commands : GraphDisplayProperties, LoadGraphSubObjects, ExternalReference
  • Some new parameters have been added to some existing commands
  • Most Anatomist objects allow much more flexible links to their underlying Aims objects (via reference counters) so it is possible to replace lower-level objects on the fly. It is especially useful in python bindings.
  • Objects and windows are now reference-counted in Anatomist. Deletion may be forced in some cases but not all according to the types of external references to them. This change was needed for proper python bindings and reference counting from python.
  • Change in objects rendering API: old methods AObject::update2D() and AObject::update3D() have been replaced by a single generic render() method.
  • 2006/06/20 - Version 3.0.3

    Bug fixes:
  • Changes in internal routines dealing with commands streams: they were quite unstable, especially on Windows. Well, I think some instability remain on windows, but for other reasons (I suspect the C++ standard libraries of MinGW and Cygwin are not thread-safe at all on Windows).
  • Minor imporvements:
  • added (optional) parameters request_id in commands that ask Anatomist an answer: GetInfo, NewId et ObjectInfo
  • 2006/04/27 - Version 3.0.2

    Bug fixes:
  • There were still some problems in referentials handling, especially when playing with manual transformations controls. A new referential update system has been written.
  • Fix: the Fusion2D objects ordering specified by the user upon creation was not taken into account
  • Fix: linkedcursor_on_slider_change parameter of WindowConfig was not working
  • Fixes in some multithreading race conditions that -curiously- caused crashes only on multi-CPU windows platforms, but might be harmful as well on other systems. Well, there must be some other bugs somewhere because it still happen to crash, but rarely now...
  • Fusion3D texture extrema were incorrect and wrong when textures were exported
  • Fix: slices (Volumes...) texture resolution degradation could go into an infinite loop when no texture could be drawn at all (on failing OpenGL/3D cards)
  • Fix in volume interpolation which was incorrect and discontinuous on some slices
  • A number of other minor fixes
  • Minor imporvements:
  • SliceEvent output have been a little bit enriched
  • New command: NewId to generate free IDs for objects. This command is used especially by BrainVisa to avoid reassigning IDs which could be allocated on Anatomist side.
  • A first version of a french manual has been released. When it's stable enough it will be translated to english.
  • 2005/10/11 - Version 3.0.1

    Bug fixes:
  • Graphs saving: nodes were not always stamped as modified when changes took place in the ROI module. This could cause voxels lists not to be saved
  • Graphs: objects contained in graph relations are no longer loaded (since they were never used), this saves memory and time, but they are loaded when a graph needs to be saved, so that everything is saved
  • Fixes in the "levelsets" (which are not levelsets actualy) of the ROI module, the 2D mode works again now.
  • Fixes / changes in the behaviour of graphs when nodes colors (material) were changed
  • Crash fix when texture generation properties dialogs were opened while objects were not in generated texture mode
  • Palettes are read before user config because they can be used at that step
  • All Anatomist now compiles using Qt 4. However porting is far from over and many widgets don't display propertly yet with Qt 4. It's a first step...
  • Improvements in config and compilation directives
  • Fix in transformation inversion, which didn't produce incorrect results but was not clean, and was possibly the cause of random crashes of Anatomist when changing referentials/transformations
  • Solved a palette scaling/precision problem on textures with a very short range within the [0-1] interval
  • Fixed snapshots: ghost objects (not written in Z buffer) were not visible on saved images, and in some cases the back OpenGL buffer was saved instead of the fron buffer
  • ROI: label naming crash fixed
  • Important bugfix in an internal and central system (observers), it could lead to random crashed, especially when manipulating referentials (but not only). As a counterpart, loading and creating complex objects (graphs) might be even a bit slower...
  • Optimization in the destruction of multiple objects (graphs), the GUI is only refreshed at the end. This seemed to be a bottleneck, at least on some systems (my old Mac...)
  • Fixed a problem which, on Windows, caused the window manager to saturate and made Anatomist crash with strange displays everywhere on the screen when 2 sulcal graphs were loaded. The problem came from a duplication of referential icons (their creation should be faster now in addition)
  • Optimizations in display lists handling (creation/destruction): especially, rendering many small objects that change (sulcal graphs in 2D mode) was really very very slow. Well, it's still slow compared to what it was in anatomist 1.30, but we already improve by a factor 5-10 compared to 3.0.0. Still more to do...
  • Minor imporvements:
  • Palette, material and texturing properties are now saved in .minf headers of objects written by Anatomist (meshes, volumes, textures)
  • Texturing properties specified in .minf are read and used on objects read by Anatomist
  • "Slice" events can be output when the slace plane changes in a view
  • a new SliceParams command allows to set the slice plane on self-sliceable objects
  • The "cut mesh" fusion mode is now available in normal mode (it was only accessible in instable mode), but without the plane part because the instable part is there. In instable mode, everything is accessible, like before.
  • Slight improvements in default settings of segments meshes (no lighting, no face culling)
  • 2005/06/21 - Version 3.0.0

    Why a version 3 whereas there has never been a version 2 ? Well, simply to align the version number of all our software. AIMS was already in version 2.x, so the next "big number" was 3.
    "Visible" changes (users):
  • Slice objects: you can now extract a slice from a volume (or any 2D object like a Fusion 2D) by fusioning it alone, and display several slices with different orientations in the same window. Slices orientations can be changed using a specific control.
  • Textures and transparency rendering has changed a little bit. Now transparent textures are taken into account and can make the object on which they are mapped transparent. This also works for volumes (RGBA images with transparency, or images with transparent palettes).
  • New texture mapping modes and options
  • Multi-texturing is now possible (by fusionning several textures)
  • Views blocks: it is now possible to tie several Anatomist views in the same window. All views are still as independent as they were before. The CreateWindow external command has a new parameter to make this functionality available.
  • Improvements in the user interface
  • The 3D cursor is now a regular Anatomist object and can thus have any shape (selectable and extensible)
  • ROI drawing can now be done using meshes or other 3D objects as a click support
  • Several object parameters windows (material, palette, 2D and 3D fusion parameters) are not hardly bound anymore to the set of objects they were opened on, but now allow to dynamically change objects they apply to. This means users won't be forced anymore to have 25 palette windows simultaneously open when they manipulate multiple objects.
  • 2D Fusions involving more than 2 volumes have been fixed and improved: all needed parameters can now be set.
  • Anatomist can now read and display meshes of segments (filar meshes) and of quads
  • New texture rendering mode, with color interpolation in RGB space (rather than in palette space). It may be more suitable for "label textures" rendering.
  • New configuration option: widowSizeFactor
  • Color material and palette properties can now be saved in objects .minf header file and automatically applied at load time. This is easy and convenient. Palette properties can be stored in the palette attribute of the header as a dictionary (same parameters as the SetObjectPalette processor command) and material properties can be stored in the material attribute (same options as the SetMaterial command).
  • New commandline option: -u <userprofile> allowing to use different configurations in the situation when several users share the same account
  • It is now possible to specify a default referential to objects and/or windows created (or loaded) from the user interface (see in the preferences)
  • A user manual has been started by Isabelle Denghien (in french.......)
  • The "transformation control" has now two additional interactioin modes: rescaling and rotating inside the current slice, which is useful when manually registering fusionned volumes
  • Opening a ROI session can now be performed on a volume (16 bit integer): it will be converted into a ROI graph at load time.
  • The slice movie control has more modes (continuous movie etc), and the speed can be controled.
  • The trackball has a "weightlessness" mode: objects go on rotating when the user releases the mouse.
  • New 2D/3D sliders (slice/time) mode: the linked cursor can follow sliders actions and propagate to other views
  • Various keyboard shortcuts in windows and contols
  • Fullscreen mode in anatomist windows
  • It is now possible to manually enter a position for the linked cursor from a 3D window (to report coordinated from external software, like SPM, for instance)
  • Rendering properties can now been set on an object-by-object basis (in the material properties).
  • Internal changes (programmers):
  • The rendering engine (OpenGL layer) has been entirely rewritten and should be more flexible, easier to use and more powerful, in short: better.
  • Objects API has changed too: all OpenGL rendering functions are now in separate API classes.
  • New command: TexturingParams
  • New command: ExtractTexture
  • New command: GenerateTexture
  • New option in command LoadObject: as_cursor, options
  • 3D Windows with no decorations (menus/buttons) can now be created (via the commands system) to fit into specialized applications
  • New options in command CreateWindow: block, options
  • New options in command WindowConfig: snapshot, linkedcursor_on_slider_change
  • New command: ObjectSlice
  • New options in command GetInfo: name_referentials, name_transformations
  • The ObjectInfo command provides more information on some objects (referentials)
  • New options in command SetMaterial: lighting, smooth_shading, polygon_filtering, depth_buffer, face_culling, polygon_mode
  • In fact there has been lots of changes (internal and visible) in this version...

    2004/11/30 - Version 1.30.3 (bug corrections)

    "Visible" changes (users):
  • Fixed a rendering bug in coronal slices of volumes fusions (fusions 2D) when a transformation was involved
  • Fixed border color in volume slices containng no data at all (outside of the volume)
  • The display of SPM coordinates (in the terminal, for SPM volumes) doesn't claim anymore to be "Talairach coordinates" if the volume is not normalized. Otherwise, the values were correct.
    Internal changes (programmers):
  • None (bugfixes only!)
  • 2004/11/18 - Version 1.30.2 (bug corrections)
    "Visible" changes (users):
  • Fixed wrong byteorder (so wrong colors) in 3D windows snapshots on Windows
  • Fix in palettes path on Windows
  • Fix in rendering of very large images that don't fit into the texture memory of 3D cards and need undersampling
  • Fixed a possible crash in profile window on some images
  • Internal changes (programmers):
  • None (bugfixes only!)
  • 2004/07/07 - Version 1.30b (bug corrections and minor improvements)
    "Visible" changes (users):
  • Fix: GraphParameters command did not work correctly until the graphs parameters window was open.
  • SelectByHierarchy command: modifiers attribute can take a new value: remove, to hide selected nodes
  • Better display of volume values in fusions (linked cursor click)
  • Bug corrections in ROI graphs saving on Windows
  • Enabled two-side lighting on meshes when backface culling is disabled. In other words, open meshes can be visible from both sides.
  • fixed a shift in 2D fusion display in non-interpolated mode, and display of interpolation flag in preferences
  • Bugfix on the approximation of slice positioning, which could be annoying for the manipulation of very thin slices (<0.1mm) like histological slices of mouse brain (this is a random example)
  • Bugfix in the calculation of the cut plane for buckets 2D rendering when coordinates transformations took place
  • ... (I don't remember)
  • Internal changes (programmers):
  • None (bugfixes only!)
  • 2004/02/18 - Version 1.30, initial releasae
    "Visible" changes (users):
  • Porting to Windows !
  • Mionr GUI improvements, like accessing the objects options by a right-click on the control window
  • The ROI module has been split in two: a "basic" one and an algorithm part
  • Improvements in the ROI panel GUI, like the eradication of the silly "refresh" button which I guess everybody wondered why it was here. Updating the interface is automatic now, as it should have been from the beginning.
  • Finally the axial display convention option now has been enabled (after years and years). You can choose radiological or neurological display convention in the preferences
  • Settings for unstable things in the preferences
  • Fusions 3D: new mapping modes (point-to-point with depth offset)
  • SPM volumes: by default, SPM volumes don't have a specific referential anymore. This behaviour disturbed too many people and was annoying in many cases. One can now recreate this referential via an "object-specific" option of volumes. The former behaviour (automatic creation of the referential at load time) can be activated by an option in the preferences.
    Note: the creation of this referential is also a bit more intelligent than it used to be: if an identical referential already exists, it is re-used, not duplicated. This results to having the same referential on all volumes with the same origin.
  • The referential color marker is now somewhere on the left columns in the control window (objects / windows) so it is always visible at the first sight.
  • The controls toolbox (ROI...) can be accessed via a menu in windows (not only the undocumented F1 key) and is automatically displayed when entering the drawing mode
  • Fixed bug (formerly called "feature") that caused cortical folds graphs not to save relation buckets when written by anatomist under a new name. This was due to the fact that relation buckets were not read at all in Anatomist since they are not displayed. Now graphs are complete, but a few MBytes bigger (and a bit slower to read, too)
  • Windows 3D: slice / time change with keys (PgUp/PgDown)
  • Internal changes (programmers):
  • Commands reader (scripts / command pipes / network) can now be compiled to use threads. It avoids blocking the GUI thread while reading commands, and should be less sensitive to OS-dependent behaviour variations (Windows...).
  • 2003/04/01 - Version 1.29

    "Visible" changes (users):
  • The origin of SPM images is now correctly handled (there was still a bug in version 1.28)
  • A first attempt to making "cut meshes": meshes cut by a plane, it's a new fusion mesh + volume. It is still very sensitive to meshes with crossing triangles (often causing crashes) and it appears that most of our meshes contain such crossing triangles. So it has been made an "unstable feature" only enabled if anatomist has been launched in --enabled-unstable mode. Otherwise it would now be possible to display a volume slice limited to its intersection with a mesh (for instance head or brain mesh). But there is still this annoying bug to remove, and it's a bit difficult to fix...
  • Anatomist can now read and display RGB images and volumes, like color Jpeg images
  • Menu to save settings
  • Double-clicking on a window representation (in the control window) makes the window raise to the front
  • New command-line option: --enable-unstable, it is used to enable dangerous and buggy features that are not really finished (sometimes even not operational) that are normally disabled. I didn't make an menu option to enable/disable it at runtime. Maybe I should.
  • Internal changes (programmers):
  • Communications: Anatomist can now run in "server" mode and have a bilateral connection through a TCP network. Remote-control from BrainVisa then has become easier (the whole communication interface has been remade on BrainVisa side by Julien Barbot). Moreover Anatomist can now signel things by sending "events" when its state changes or when the user performs certain actions (like loading an object or clicking on a view).
  • Several new commands and new parameters to existing commands have been added for Brainvisa remote-control (I didn't keep the whole list)
  • Command to export textures (ExportTexture): saves to disk an OpenGL object texture (like a fusion 3D)
  • Still other changes in Aims and library layers below Anatomist
  • WindowConfig command: new parameters: raise and iconify
  • 31/10/02 - Version 1.28

    Sorry, the remainder of the news is in french...
    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 communeAGLObject
  • 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 AWindowFactoryet 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).