AIMSdata ChangeLog
Version 4.2.1
Version 4.2.0
Version 4.1.1
Version 4.1.0
Version 4.0.2
Version 4.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
Version 3.0.2
Version 3.0.1
Version 3.0
Version 2.13
Version 2.12
Version 2.11
Version 2.10
February 16th, 2012, Version 4.2.1
- Improved buckets bindings
- Improved bindings to numpy arrays
Feb 3rd, 2012, Version 4.2.0
This version brings a number of bug fixes, and improvements:
- Implemented native support for volume * T and volume / T with T numeric types, typically long int, calculating in native types rather than casting to double as it used to. This avoids rounding errors when back-casting to int types. Python bindings were adapted too.
- Geodesicpath library update
- Fix in AimsMassCenter averaging.
- DICOM reader fixes for a few header fields, and support for SPECT data.
- FiniteElementSmoothing: removed spurious debug texture writing during smoothing, which caused a hard-coded file /tmp/curv_ss.tex to be written, and participated to a memory leak which could lead (in pathologic cases) to memory overrun.
- Fixed rescaling in volume converters (AimsFileConvert + libs)
- Fixed a bug in SplineResampler: the spline coefficients could be wrong at the boundaries of the volume.
- PyAims
- Fixed a SIP ownership problem which caused some memory leaks (especially when automatically converting a Volume to a AimsData)
- Fixed a reference-counting problem in volume headers (the header could be deleted with the volume even if a header object in python was still existing).
Sept 14th, 2011, Version 4.1.1
- Fixed an IMPORTANT BUG in Quaternion: the rotationMatrix() had a matrix elements index bug that caused the translation part not to be initialized. By chance it was most of the time 0 on most systems, but not all/always...
- Mesher debug output cleaning
- NIFTI IO: update to nifticlib 2.0.0
- PyAims
- try to setup BRAINVISA_SHARE envar if it is not set, from the path of the python module.
May 17th, 2011, 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:
- Add support for RGB/RGBA background in AimsResample
- PyAims
- Bug fix in aims.write when the specified path doesn't exist.
- Helper functions to create the main Aims data types
- Allow additional constructors arguments for volumes and textures (build from another volume, or a numpy array...)
- Big fix in TimeSurface erase function
November 19th, 2010, Version 4.0.2
Fix reading GIFTI files extracted from SPM 8
Fix reading GIFTI mesh+texture files
Fix reading and writing transformations in MINC format
New option in AimsFileConvert: --orient, to specify output disk orientation or flip it
support for MNI .obj mesh format
AimsFoldGraphThickness can now use a pre-built sulci voronoi map (to speed things up)
Forbids to write NIFTI format when volume dimensions do not fit in short ints: NIFTI stores dimensions as short.
AimsLabelSelector can now work in batch mode (-b) without graphical interface.
May 28, 2010, Version 4.0
User-level changes:
Improvements and fixes in various IO modules: Dicom, Nifti, Gifti, FDF
Beginning of a SQL database format for graphs (QSlite files for now). This will allow partial reading and queries in large graphs databases. But the module is still experimental and the SQL database schema will probably change, so it should not be used yet to store important graphs. Conversion from and to the .arg format are still possible.
Programmer-level changes:
Noticeable API change: the Motion class (for affine spatial transformations) has been renamed AffineTransformation3d in aims namespace, inherits the new Tansformation and Transformation3d classes, and undergoes some methods changes. Motion is still provided as a typedef to avoid breaking existing code, but some changes may be required anyway. See the AffineTransformation3d class documentation for details.
python API: more automatic conversions between reference-counted objects (rc_ptr and Object classes) and their contents when calling wrapped C++ functions
python API: the get() method of rc_ptr and Object classes is replaced by _get() so as not to shadow potential get() methods in the objects under the reference counter. In 4.0 the get() method is still present for backward compatibility and behaves as it did before, but this will be changed in a next release, so programmers are advised to use _get() instead (which is now rarely needed).
January 8, 2010, Version 3.2.1
New global option to Aims commandlines: --debugLevel. It is used instead of the --verbose option to print debug messages, when loading plugins for instance.
Nifti IO: When loading large 4D volumes which need a reorientation in memory, don't duplicate the whole 4D volume when reorienting. This saves temporary memory allocation.
Nifti IO: when no qform/sform/transformations are already in a volume written in nifti, set the origin at the center of the volume, otherwise SPM is lost (normalizaton fails)
September 4, 2009, Version 3.2
Re-organization of sources of aims: aims now regroups aimsdata, aimsalgo, graph, cartobase, cartodata, IO libs (ecat, ecat+, vidaIO), and aims-gpl which is the gui part.
added default_writers option in aimsrc: see the doc for details
the default output volumes format when no extension is specified is now NIFTI1.
GIFTI IO support for meshes and textures
The $SHFJ_SHARED_PATH environment variable is deprecated. It is replaced with the $BRAINVISA_SHARE variable. For now it contains a single directory, but will evolve in a PATH-like behaviour in future versions. $SHFJ_SHARED_PATH still exists as a fallback for backwards compatibility.
If no environment variable is set at all, the share directory is guessed from the $PATH variable.
May 10, 2009, Version 3.1.6
IO: Fix in NIFTI-1 writer when the storage_to_memory matrix is not what it should be
IO: Fix in reading pure 3D NIFTI-1 images (no 4th dimension)
Transformation information is set and maintained in sub-volumes and resampled volumes
A fix in the Quaternion class (apply() function)
IO: support TIFF format on U32 data type
Fix in meshExtract when no index array is needed
AimsFileInfo: correctly display min/max values for U8 and S8 types
November 14, 2009, Version 3.1.5
Correctly save alpha channel of RGBA volumes in Qt formats IO
Correctly use the "output_4d_volumes" option in NIFTI-1 writer
A few more minor fixes
October 24, 2008, Version 3.1.4
New global commandlines option: "output_4d_volumes" (used for NIFTI and SPM), replacing the recent "spm_output_4d_volumes".
Fixes in graph sub-objects IO system.
Fix: file descriptor leak in Tiff reader.
various other minor things
September 24, 2008, Version 3.1.3
various minor things
August 18, 2008, Version 3.1.2
various minor things
August 8, 2008, Version 3.1.1
Bug fixes:
A serious bug fix in NIFTI writer: Nifti transformations were sometimes wong in the .nii file, event when they were OK in the .minf file.
fixed a recent bug in the volume type converters when using rescaling which could show side effects in various commands
Fixes and improvements in graphs reading when containing data stored as labels volumes. Changed the way anatomist handles them to a much cleaner behaviour.
many other less important fixes
Minor improvements:
some minor (not user-visible) improvements and additions to the libraries
January 4, 2008, Version 3.1
SPM images IO: ***CAUTION***,
behaviour change: Read this document
for details. The default settings for AIMS is now to behave like SPM2, not like SPM99 anymore.
NIFTI-1 volume format support, by Guillaume Flandin, using niftilib
PLY mesh format support, using the Rply library
Improvements in the Qt4 compatibility
complete reimplementation of the mesh cutting algorithm (used in anatomist). It doesn't crash anymore, but leaves holes or incorrect things on meshes with overlapping triangles
complements and improvements in the IO system and its suppport for various object types
headers were added to data objects which did not have one (Motion, buckets, Hierarchy, Object, ...)
The Quaternion class has been moved from anatomist to aimsdata. Bridges between Quaternions and Motions.
python bindings for a large part of aimsdata API (all data types and IO): see the pyaims project
... far too many changes to possibly list them...
and many many bugfixes
April 27, 2006, Version 3.0.2
Bug fixes:
Image formats handled via the Qt plugin (png, bmp...) had several bugs that
caused image corruption when saving/reading them. It has been fixed, and support
for int types wider than 8bit has been unregistered (it can't work actually).
Some 3D MINC images got an incorrect value (NaN or infinity) for 4th dimension in Aims
A huge memory leak has been fixed in AimsSubVolume in multiple output files
mode, and some optimizations were done in this case.
The sourcecode now compiles with gcc 4.1
Many other minor bugs were fixed
September 22, 2005 - Version 3.0.1
Bug fixes:
important bugfix in interpolation code which may affect, especially, all
diffusion tracking algorithms
a few compilation warnings and configuration fixes / cleanups
AimsSubVolume supports a wider range of data types
The gui part is now compatible with Qt 4 - more compatibility headers
Fixed IO type Texture of Point2df which did not appear amongst supported IO types
Fixes in management of Aims objects contained in graphs
Fixed SPM writin of float/double images which were sometimes written
in (short + scale factor) mode when they should not
May 18, 2005 - Version 3.0
User-level changes:
Volumes IO: better support for large files. Memory mapping has been automatically
enabled on GIS and SPM volumes when image sizes become large compared to the free
memory size (linux only right now) or to absolute amounts. This is especially useful
when loading large data in Anatomist or for data conversions. Note that not all
volume formats can benefit the same optimization: depending on the disk and memory
format of low-level data, the whole file must be copied to a temporary file in
some situations (always needed for SPM volumes). Prefer GIS format when possible...
SPM volumes of FLOAT data can now be saved as short int + scale factor when it
appears to be possible without precision loss. The drawback right now is that
detecting the possibility of doing it takes some time and it's slower.
Minc format IO support: thanks to Olivier Coliot who wrote the reader/writer classes, there is
now a Minc plugin in Aims. At the moment only 3D files are supported (not 4D) and the datatype
detection may be improved in the future, but the base is here now. The plugin needs the Minc
library.
The Ecat format IO has been ported to Windows
Graphs incompletely loaded (without buckets or meshes, like in the recognition program) and
saved back to disk now load their sub-objects before they are saved, so nothing is lost anymore.
The drawback is that saving them is much longer and consumes far more RAM.
Porting to 64 bit systems: done by Dimitri
Version numbering: all our projects will have the same version number: 3.0 for
this release
Programmer-level changes:
Allocators have changed a bit, and their choice has been facilitated by a
helper / factory class.
Porting to 64 bit systems. This port implies some modifications on some programming rules: we
sould avoid using the long type anymore, but always fixed size types:
int32_t, int8_t etc, so AimsData<long> should be replaced
with AimsData<int32_t> in all Aims code.
In cartobase, the generic object API has been rewritten in a cleaner way GenObject
becomes GenericObject. A compatibility interface is provided so code will not break,
but we plan to remove it once we have cleaned all code (maybe in the next version).
Preparations for deep changes in Aims API: some main classes will be re-written in a new
library: cartodata. The first is the 4D volume class (aims::AimsData) which will
become carto::Volume, a newer, cleaner and more powerful implementation.
In this release, AimsData is only a wrapper for Volume.
Compatibility will be preserved. Moreover the wrapping can be disabled by a #define (the
older implementation is still present in the source code).
A Python interface project for Aims has been started: pyaims, at the moment it allows
manipulating volumes (including IO), either under AimsData or Volume shape.
Meshes will be added soon.
Porting to gcc 4.0 compiler
17/11/2004 - Bugfix update 2.13(c)
fixes in SPM IO
little doc on coordinates systems of AIMS and SPM:
here
fixes on the Windows port, especially the graph writer which could write the .data directory
in the wrong location (in the current directory). This bug affected saving ROI sessions from
Anatomist, for instance.
various other minor fixes
06/07/2004 - Bugfix update 2.13(b)
bucket writer wrote wrong voxel sizes
fix in list repesentations of attributed objects browser, this showed up in Anatomist
vida reader crashed on large files (with more than ~250 slices)
18/02/2004 - Version 2.13
User-level changes:
Porting to Windows: the sources can now be compiled on Windows platforms
using either cygwin or MinGW gcc compilers and environments. I guess there will
still be some little glitches but lots of commands now work well on Windows.
Note: Vida and Ecat IO modules don't compile under MinGW because they
use a missing rpc/hdr library.
SPM images IO: ***CAUTION***,
behaviour change: Read this document
for details. There have been a number of fixes, improvements and changes.
Fixes in Dicom reader allowing to still read images with partially incoherent
headers
Beginning of a TIFF format reader (by Vincent Frouin), but it is not finished
yet and apparently only partially working.
Rework of environment variables handling: to access data, several environment
variables were needed: SHFJ_SHARED_PATH, AIMS_PATH,
ANATOMIST_PATH, SIGRAPH_PATH etc.
Now a more standard shared data structure can be adopted and only one environment
variable is needed (SHFJ_SHARED_PATH). The older way (with several variables)
is still supported. Shared data can be organized in $SHFJ_SHARED_PATH/shfj,
$SHFJ_SHARED_PATH/aims, $SHFJ_SHARED_PATH/anatomist,
$SHFJ_SHARED_PATH/sigraph etc. If SHFJ_SHARED_PATH is set to
/usr/local/share or /usr/share, you just get a completely
standard organization.
Settings files for AIMS, currently used to specify SPM IO conventions. There is
one site-wide settings files (in the shared directory of Aims) and one personal
$HOME/.aimsrc file. See this page for further
explanations.
Many other things... I can't remember
Programmer-level changes:
Utility classes & functions for portably handling files, directories and
filenames (made for windows porting...) [in cartobase library]
Threads: the threading package has moved from aimsalgo library (closed-source)
to cartobase library (GPL). It implements a portable C++ interface to threads, and
will be used in Anatomist now.
Many other things... I can't remember
27/03/2003 - Version 2.12
User-level changes:
More explanatory IO error messages
AimsFileConvert can handle RGB/RGBA images
Many many other things I don't remember...
Programmer-level changes:
libshfj has been renamed libcartobase (beginning of
Cartograph project)
Some classes have moved from aims and graph libraries to cartobase,
especially low-level general utility classes. More of them should move in
the future. For now: stream classes, exceptions, GenObject
and associated classes (formerly named DataExchanger),
AttributedObject and IO (including syntax), Python-like IO for
Object, string conversion templates, DataTypeCode
template, basic typedefs...
Some classes still in aims have moved to the new namespace
carto, like OptionParser and related classes
Classes renamings (in cartobase):
- DataExchanger renamed GenObject
- RcExchanger renamed Object
- DataExchangerValue renamed TypedObject
- SyntaxedExchanger renamed SyntaxedObject
- ...
Externalization (as plugins) of IO formats that use external libraries
(I mean external to aims, even for libraries made in SHFJ): Vida, Ecat,
Jpeg, Dicom
Many many other things I don't remember...
31/10/2002 - Version 2.11
User-level changes:
Nothing has been recorded...
Programmer-level changes:
nothing has been recorded...
09/07/2002 - Version 2.10
User-level changes:
beginning of ChangeLog: nothing yet
Programmer-level changes:
nothing yet