Anatomist: changelog
Version 5.1.2
Version 5.1.1
Version 5.1.0
Version 5.0.4
Version 5.0.3
Version 5.0.2
Version 5.0.1
Version 5.0.0
Version 4.6.1
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
2024/03/03 - Version 5.1.2
- GLTF 3D scene format support
- GLTF scene export / import menu in 3D views. Allows to save in a single .gltf or .glb file the whole scene and exchange it with someone else in a very simple and convenient way.
- GLTF format supported for loading objects, also
- New colormaps
- All manual graph manipulations mark them as user-modified
- Fixed the interpoler fusion object, which was probably broken for a long time
- Fixed window update issue in "slider triggers linked cursor" mode
- Fixed Anatomist creating directories with corrupted names in HOME
- Fixed icons when dragging windows
- Several other bug fixes
2023/03/21 - Version 5.1.1
- Fixed a colormap scaling in labels tables.
- Fix in RGB interpolation activation criterion.
- Fix in referential of temporary split line in fold split tool.
- Slight improvements and additions in python bindings.
2023/01/09 - Version 5.1.0
Visible changes (users):
- New Jupyter notebook interface, which embeds interactive Anatomist views (3D or 2D) in notebook outputs.
- Info about cursor position (texture values etc) is displayed in 3D windows tooltips.
- When a textured object (texture, volume) contains a "labels" attribute in its header, it is used to translate int labels to strings in info and tooltips. GIFTI labels maps are also supported.
- Transformations graphs files can be read and used in Anatomist: in the referentials window, use "load transformations graph" in the right-click popup menu on the background.
- The old perfusion plugin has been removed. It has been obsolete and unmaintained for many years, and nobody is still using it has methods have certainly evolved since then.
- cleanups in app and modules destruction, avoiding crashes at exit
- Deleting several objects with child/parent relationships is finally handled properly and do not required several user actions to delete all.
- Support more texture types in IO.
- Fixes in the SurfPaint module, especially using textures not starting at value 0.
- SurfPaint: implemented closing curve in "magic brush" mode (was only working in "sulcus" mode).
- fix in voxel size in volume rendering when downsampling is used.
- fix in scaling of profile windows which were growing when clicking multiple times on the linked cursor.
- Several other bug fixes...
Internal changes (programmers):
- Handle volumes with "strides" even on the 1st axis, allowing to map numpy arrays from external world.
- Python3 is the only supported version.
- Signals are emitted to notify slider and orientation changes in 3D views.
- Added a user modification flag in AObject that can be used to know when data saving is needed. Used in graphs labeling.
- Fixes in the selection label picker GUI and toolbars.
- Totally wiped out the use of obsolete structures AimsData
- Porting to Qt6: Anatomist source code is now compatible with Qt6. A future branch will also allow python bindings (Sip6, PyQt6) but as it is not completely debugged and tested for side effects, this will be merged after release 5.1.0.
2021/12/22 - Version 5.0.4
- Pyanatomist: prevent modification of sys.argv
- pyanatomist: fixes in thread safe implementation
- fixes variable potentially used before definintion in anasimpleviewer
2021/10/13 - Version 5.0.3
- Fixed crash in Fusion3D using more than 2 volumes
- Added a detailed doc about palettes and texturing
- Fix in folds split
- Fix in referential of internal CutMesh sub-object
- Fixed objects icons being sometimes not loaded
- Made the palette name optional palette specifications in objects .minf
2021/06/17 - Version 5.0.2
Visible changes (users):
- fixes in auto-fusion (when several sliceable objects are put in the same view), avoiding possible crashes.
- User docs have been imoroved and complemented, for referentials and coordinates systems, and coloring, especially.
2021/03/05 - Version 5.0.1
Visible changes (users):
- Fixed meshes rendering property "front face", the display in the user interface was showing the contrary of what it was (clockwise/counterclockwise)
2021/01/20 - Version 5.0.0
Visible changes (users):
- A new default control allows to perform most actions with a single (left) mouse button. This also allows to control Anatomist in touch devices. Specific touch gestures have also been implemented.
- Allow to save resampled volumes from anatomist
- Limit used memory when loading large fiber tracks files
- Support reduced connectivity matrices in connectivity matrix fusion (brain mesh + matrix + regions texture)
- Other fixes and improvements in Python bindings
2018/09/24 - 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 cartoLinearComb.py)
- Fixes in time sliders for objects with time steps (or voxel size) different from 1. on time and higher axes.
- Display connectivity matrices also as images
- 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 anatomist.direct.api: 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.
Improvements:
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
Improvements:
A new custom application for a simple viewer more suitable for inexperienced users: anasimpleviewer.py, 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
Improvements:
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:
- 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...
- 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.
- 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).