====== NeuroElf changelog ====== This page gives a quick overview what has changed in NeuroElf since its first publication on this website (May 17 2010) in reverse order in the following format: * date of change (first availability in a shapshot) * type of change (addition, correction, removal, etc.) and, optionally, type of object * changed object (specific filename) * brief description (what exactly has changed) * comments (where applicable) ===== Motivation ===== In case you have downloaded the very first release (or any later release for that matter), you might be interested to see if a particular feature has been added, or a problem has been worked on and solved. Coming back to this page will keep you informed about the development of NeuroElf. ===== Requirements ===== Your willingness to look up this information! There is currently no email list (and I don't intend to start one; I prefer not to bother people with "updates" but for those interested, the information is of course available). From past experiences, I suggest you check this page every other month or so for updates. ===== Changelog ===== ==== Release v0.9d (03/13/2014 through ...) ==== ^ Date of change ^ Type of change ^ Changed Object ^ Description ^ Comments ^ | 06/17/2014 | simplification | all MEX files | instead of having MEX files compiled, all supported platforms now have their MEX files pre-compiled and part of the installation | | | 06/17/2014 | update | libSVM | libSVM updated to version 3.18 | | | 06/17/2014 | simplification | isemptycell.c | all calls to ''isemptycell(CELL_INPUT)'' have been replaced with ''cellfun('isempty', CELL_INPUT)'' | the cellfun implementation is faster | | 06/17/2014 | new GUI feature | neuroelf_gui.m | several buttons and menu entries added to the surface-portion of the GUI, including intensity finding morph, inflation, and to-sphere morph, and also some keyboard shortcuts while in surface/scenery mode (f/w for face/wireframe display and t for transparency | | | 06/16/2014 | enhancement (MEX) | mesh_morph.c | additional features have been added to allow weighted forces per edge | | | 06/16/2014 | bug fix (xff code) | ROOT::ClearObjects | instead of simply removing allocated memory from the global arrays, the function now correctly calls ''xffclear(HANDLES)'' | this allows all the clean-up routines to be called, such as removing objects from NeuroElf's GUI | | 06/15/2014 | enhancement | SRF::Morph | a progress bar object can now be used instead of the default (creating its own progress bar) | | | 06/15/2014 | enhancement | SRF::BackToVMR | the method now correctly places the resulting data into a VMR object, and also initializes the UndoBuffer if necessary | | | 06/14/2014 | new xff method | SMP::ComputeFormula | added a corresponding method to compute formulas for SMPs | | | 06/13/2014 | new xff method | SRF::Area | compute triangle area (incl. area per vertex) | | | 06/13/2014 | new MEX function | mesh_normals.c | fast computation of normals per vertex | | | 06/12/2014 | enhancement | AFT::ClusterTable | names of local maxima in the output VOI object are now clearly distinguishable from those of main clusters | | | 06/11/2014 | new function | mesh_morphm.m | a M-file implementation that, in the simple force case, is faster than the MEX implementation due to multi-core support | | | 06/10/2014 | new GUI feature | neuroelf_gui.m | a surface can be created from a cluster table representing the volume of the clusters | | | 06/10/2014 | enhancement | ne_extcluster.m | cluster beta extract tables are now better formatted | | | 06/09/2014 | enhancement | SRF::CurvatureMap, SRF::DensityMap | the resulting SMP Maps now have a unique type so as to improve the thresholding | | | 06/08/2014 | new GUI feature | neuroelf_gui | the main GUI now supports resizing (larger), and the size at closing time is stored, such that the GUI opens in the same configuration as before | | | 06/08/2014 | enhancement (GUI) | ne_swapfullsize.m | the swapping of full and reduced sizes is much faster now | | | 06/08/2014 | new GUI feature | ne_draw_histmarked.m | a histogram of marked voxels can be displayed to estimate the peaks for gray and white matter | | | 06/07/2014 | enhancement | ne_undock.m | when undocking a slicing or rendering satellite, the global field ''ne_gcfg.tio.satSag'' or ''ne_gcfg.tio.satRnd'' will be set | | | 06/07/2014 | bug fix (xff code) | AFT::RenderToTransimg | the negative tail could have its maximum cut off (invisible) | | | 06/07/2014 | enhancement | all UIs/figures | now the HandleVisibility is set to '''callback''' on all figures to prevent accidental drawings inside them | | | 06/06/2014 | bug fix (GUI) | ne_btdown.m, ne_btmove.m | drawing is now prevented when clicking somewhere within the GUI that is not directly on top of the slice displays | | | 06/06/2014 | enhancement | @xff/subsasgn.m | removed necessity to create a copy of large fields in the contents of xff objects by using a more direct sub-field assignment operation | this only increases performance if the field is on the first level of fields, such as ''vmr.VMRData'' | | 06/06/2014 | new GUI feature | neuroelf_gui.tfg | some default choices have been added to set the color lookup table for grayscale objects | | | 06/06/2014 | enhancement | AFT::SliceData3D | major speed improvement when using regular (full-space, integer-coordinate) sampling for HDR (NII) objects | | | 06/06/2014 | enhancement (MEX) | indexarraynb.c | now the coordinate range-syntax also supports four-dimensional arrays | | | 06/06/2014 | enhancement | AFT::RenderToTransimg, ne_setslicepos.m | now also the VMRData16 component of VMR objects can be rendered and displayed in the GUI directly | | | 06/05/2014 | enhancement (GUI) | ne_setslicepos.m, ne_draw.m | code has been moved into a new file and substantially expanded and cleaned, which now allows to fix-color as well as multiply-color areas | | | 06/04/2014 | enhancement | AFT::GetVolume, AFT::SampleBVBox, AFT::SampleTalBox | added support to retrieve alpha volume from objects that support them (e.g. Average-timecourse VTCs) | | | 06/02/2014 | bug fix (MEX) | cov_nd.c | for lag 0, the function was supposed to run the covariance/correlation along the first dimension | | | 05/29/2014 | enhancement | ne_glmplotbetasup.m | when updating the beta plotter, a faster access for non-normalized data (based on template space coordinates) has been implemented | | | 05/28/2014 | enhancement | AFT::MapNames | additional information about maps (type, D.F.) can be requested with an extended flag | | | 05/22/2014 | new GUI feature | neuroelf_gui | a tool to average structural/anatomical datasets has been added, supporting spatial normalization and brain extraction | | | 05/21/2014 | enhancement | MDM::ComputeGLM, SDM::CalcBetas | instead of storing beta maps, single-regressor t-maps can now be computed to facilitate later RSA (representational similarity analysis) application | | | 05/05/2014 | enhancement (GUI) | ne_cm_compute.m, GLM::RFX_tMap | contrast maps (weighted sums of beta maps) can now be smoothed "late" (immediately prior to computing random-effects statistics) | | | 05/04/2014 | enhancement (GUI) | spm5_preprojobs | an option has been added to import VTCs after realignment (using non-normalized, unsmoothed data for GLMs) | | | 05/03/2014 | enhancement | AFT::GetVolume, GLM::VOIBetas, MDM::ComputeGLM | RFX-GLM files can now contain non-normalized data alongside the normalization information (read, for instance, from the STRUCT_seg_sn.mat file) | | | 05/01/2014 | enhancement | importvtcfromanalyze | subject-space data can be imported and the SPM-based normalization parameters stored in the RunTimeVars property | | | 04/17/2014 | enhancement | SDM::CalcBetas | an option to pool all but the single-trial in question to simple regressors has been added to improve the stability of single trial betas | | | 04/10/2014 | enhancement | neuroelf_updatebuilds.m | the function now keeps correctly track of build number and date | | | 04/09/2014 | enhancement | PRT::CreateSDM | names for parametric regressors can now be provided, such that they occur properly in the regressor names and in the GLM output | changes also made in MDM::SDMs | | 04/06/2014 | enhancement | readeprimetextlog.m | now allows to return the result as a flat struct (instead of several sub-levels) | | | 04/04/2014 | enhancement | AFT::RenderToTransimg | added slice-ranges to calling syntax, so volumes can be "sliced" along the cardinal axes | | | 03/27/2014 | bug fix (MEX) | renderv3dxia.c | RGB-volumes would not be correctly sliced (interpolation code error) in one of the three slicing directions | | | 03/27/2014 | enhancement (GUI) | ne_smoothstats.m | this function is now also directly available via the VMP menu | prior to this change, the rendering dialog was necessary | | 03/20/2014 | enhancement (GUI) | neureolf_gui | the rendering view can now be undocked, which allows arbitrary image size (incl. non-square) | | | 03/13/2014 | new GUI feature | ne_vmr_exportrgb.m | allows to export a VMR into an RGB-volume Nifti file, which then allows colored drawing | | | 03/13/2014 | pre-release | NeuroElf | pre-release of v0.9d | | ==== Release v0.9c (04/29/2011 through 03/13/2014) ==== ^ Date of change ^ Type of change ^ Changed Object ^ Description ^ Comments ^ | 03/12/2014 | enhancement | AFT::GetVolume | if a cluster-size threshold was enforced, the volume can be masked with the resulting binary volume | | | 03/11/2014 | enhancement | renderv3d.m, AFT::RenderToTransimg | added statistical overlay (inlay) to the 3D rendering engine, as well as RGB-volume rendering | | | 03/10/2014 | enhancement (GUI) | neuroelf_gui | now support for 2D/3D RGB drawing in the drawing mode | | | 03/07/2014 | enhancement | AFT::ClusterTable | small-volume-correction (SVC) has been added to the cluster table method (only for VMPs that store the smoothness information) | the SVC-corrected map is stored in a new Map in the VMP on which it is called | | 03/06/2014 | enhancement | xffmethods.m | methods are now stored as function handles, which speeds up calls to OBJ::Method code a bit further | | | 03/05/2014 | enhancement | renderv3d.m, AFT::RenderToTransimg | added the alpha blending option to the rendering enging | | | 03/04/2014 | enhancement | @xff/private/*.m | replaced the (relatively costly) call to isxff(...) with a private function | this change applies to all OBJ::Method calls | | 03/01/2014 | bug fix (xff code) | SDM::Concatenate | a problem could occur if the confounds didn't contain a constant | | | 02/28/2014 | new GUI feature | neuroelf_gui | next to the slow slice-wise rendering, a new rendering feature (using Dirk-Jan Kroon's BSD-licensed code) is available to perform rendering in the main UI | | | 02/26/2014 | new functions | renderv3d.m | implementation of Dirk-Jan Kroon's rendering code in NeuroElf | in addition, some other functions have been created containing some auxiliary code | | 02/17/2014 | enhancement | PRT::CreateSDM | a warning is printed for every onset that is out of bounds (has no effect on regressors) | this is useful to detect problems with PRT-generation scripts or wrong VTC assignment | | 01/31/2014 | enhancement | dcm2nii.m | added Chris Rorden's DICOM-2-Nifti conversion tool as an option | this highly improves speed of the conversion process for one-file-per-slice DICOM sets | | 01/28/2014 | enhancement | asciiread.m | Unicode files are now autodetected (only works for reading files) | | | 01/22/2014 | new GUI feature | neuroelf_gui | if exactly two statistical maps are overlayed, a special joining modus can be selected that shows overlap in the maximally distant-hue color | | | 01/22/2014 | new function | maxdistcol.m | compute the maximally distant-hue color for a set of color pairs | | | 01/14/2014 | enhancement | VOI::ImportClusters | method now also supports compressed Nifti files as inputs | | | 12/21/2013 | enhancement | conjval.m, conjvalp.m | allows a new calling syntax, such that the conjunction is computed over a dimension in the input data, whereas the second argument **must** then signify the dimension | | | 12/04/2013 | new xff method | SRF::NeighborsNDegree | return the list of neighbors up to a certain degree | | | 11/27/2013 | new GUI feature | ne_render.m | added capability to generate slice-update movies from rendering | | | 11/14/2013 | enhancement | smoothdata3.m | also allows to use FFT and iFFT based smoothing (faster for large number of volumes) | | | 11/14/2013 | enhancement | @transio/transio.m | if a file cannot be opened for reading due to locking (FILE IN USE), transio will re-try up to 5 times with increasing pauses with a total of 1.6 seconds waiting time max | this was added to allow brief times of file-locking for other processes, as once a transio access is completed, the corresponding file pointer is closed again | | 11/14/2013 | enhancement | alphasim.m | instead of using re-scaled random data, now also allows to create (more accurate) t-maps from smoothed random maps | this increases the accuracy, particularly for very low D.F. maps | | 11/07/2013 | enhancement | MDM::ComputeGLM | added option to write out residual after regression of known effects | | | 11/06/2013 | enhancement | importvtcfromanalyze | attempts to automatically load the realignment parameters found in the directory of the data into the RunTimeVars structure of the VTC | | | 11/04/2013 | enhancement | VMP::ImportSPMMaps | if SPM-t maps are imported, the method also attempts to import the estimate of the smoothness of the residual (RPV.hdr/img) | | | 10/24/2013 | bug fix (xff code) | AFT::SliceToTransimg | erroneously marked some VMR voxels as being colored | due to minimal rounding errors in flexinterpn.c MEX, values that are 225 can come out as the next higher double precision value | | 09/16/2013 | enhancement (GUI) | ne_cm_compute.m | the contrast manager now supports running multiple selected contrasts (instead of just either one or all) | | | 09/05/2013 | enhancement | MDM::ComputeGLM | added automatic global signal extraction from colin-brain based GM/WM/CSF regions (conservative estimates) | this feature is available for standard-bounding-box data with either 2 or 3mm resolution | | 08/14/2013 | enhancement | SDM::CalcBetas | now supports MTC+SSM combination as inputs | | | 07/19/2013 | enhancement (GUI) | neuroelf_gui | new option that allows to turn subject IDs off when VOI betas are extracted from clusters | | | 07/07/2013 | enhancement | MDM::VOITimeCourses | extended to allow POIs for MTC-based MDMs | | | 07/06/2013 | enhancement | GLM::VOIBetas | now allows a list of coordinates to be passed in to extract values from a single VOI (or voxel) | | | 07/06/2013 | bug fix (xff code) | MDM::ComputeGLM | for MTC-based GLMs, an error occurred for RFX computations | | | 05/20/2013 | new function | vifactor.m | compute the variance-inflation factor (VIF) for regressors of a design matrix | | | 05/08/2013 | enhancement (GUI) | neuroelf_gui | added compressed Nifti files (*.nii.gz) to the file selector for statistical maps | | | 05/03/2013 | enhancement | GLM::RFX_rMap, GLM::RFX_tMap | in addition to the estimated overall smoothness of the map now also stores the actual smoothness images | this is as a preparatory step for small-volume-correction based on the actual number of resels in a particular volume | | 05/01/2013 | new GUI feature | spm5_preprojobs | added the option to brain-extract anatomical scans to improve coregistration with the functional data | | | 04/30/2013 | new function | spm5_extract_brain | command line tool loading a pre-defined job and using SPM's segmentation to extract the brain from an anatomical dataset | | | 04/25/2013 | enhancement | AFT::Browse | for VMP objects (and other objects with maps), the map number can now be given in the call, e.g. ''vmp.Browse(3);'' | | | 04/19/2013 | bug fix (xff code) | MDM::ConditionOnsets | this now takes the ''.tshift'' parameter correctly into account to allow (command-line based) shifting of onsets for methods such as MDM::VOICondAverage | | | 04/18/2013 | enhancement | @xff/subsref.m | methods (but not fieldnames) can now be abbreviated if there is only one unique continuation | example: ''obj.Bro;'' will call AFT::Browse | | 04/15/2013 | enhancement | VTC::CreateMTC | added sinc interpolation as option when creating MTCs | | | 04/15/2013 | added feature | MDM::VTCCondAverage | creates whole-brain onset-locked averages in arbitrary (virtual) TRs to visualize trial-/condition-based time courses for each location in the brain | additional functionality is provided with VTC::AverageMovieVMP, VTC::AveragePeak, VTC::CombineAvgVTCs, and VTC::JoinAvgTCs | | 04/12/2013 | enhancement | @xprogress | figures and axes and now created with HandleVisibility set to '''off''' to prevent random axis plotting into them | | | 04/03/2013 | enhancements | PLP::MKDA | several smaller enhancements to MKDA code (allowing to fix coordinates to integer values and also specify an inputmask | | | 03/07/2013 | new function | generatetdx.m | generate a design matrix X based on tabular data with lookups | | | 03/03/2013 | enhancement (MEX) | histcount.c | now the input data can also be weighted to generate a weighted histogram | | | 02/28/2013 | new functions | modelcomp.m, modelcompse.m | computes an F-statistic (also for N-d data), comparing two models (full and reduced) | | | 02/22/2013 | enhancement | fitrobustbisquare_img.m | added support for passing in preliminary/prior weights | | | 02/20/2013 | added feature | MDM::ComputeGLM | now supports using Vince Calhoun's HRFboost code (implemented separately) | also affected are MDM::SDMs and PRT::CreateSDM, also returning the basis function set | | 02/18/2013 | enhancement (format) | GLM.bff | the AR1Pre and AR1Post fields have been renamed to ARPre and ARPost | this is to reflect the fact that BVQX GLMs now support AR(2) models | | 02/18/2013 | new file format | DTA.bff | added support for STATA (file version 113 through 115) files | | | 02/06/2013 | enhancement | createfmr.m | improved MOSAIC detection | | | 02/02/2013 | enhancement | glmtstat.m | allows robust weights to be added to compute general t-statistics | | | 02/02/2013 | enhancement (MEX) | cov_nd.c | added support for auto-correlation (lag) and cov/corr computation along first dimensions | | | 02/02/2013 | new xff method | PLP::TDDLabelGM | inquire Talairach Daemon Database labels for points | | | 01/31/2013 | enhancement (format) | VMP.bff | added support for FileVersion 1 (first-ever) VMPs | | | 01/29/2013 | enhancement | ac2vmp.m | additional support for cluster files from Tor Wager's tools | | | 01/28/2013 | new function | dispp.m | convenience/shortcut function calling first ''disp(...)'' and then ''pause(0.001);'' to force-refresh the output | | | 01/26/2013 | enhancement | PLP::Select | a mask can now be specified as a second argument next to the selection condition, and points outside the mask are then removed | | | 01/26/2013 | enhancement | PLP::PlotOnSlice | this method now returns the handles of points and texts so they can be manipulated later (e.g. re-sized or deleted) | | | 01/08/2013 | enhancement | VOI::CreateMSK | instead of supplying a MSK object, also a HDR/NII object can be specified to create SPM-compatible masks | | | 12/18/2012 | enhancement | psctrans.m, ztrans.m | speed increase over previous implementation | | | 12/14/2012 | enhancement | AFT::GetVolume | added support for accessing global maps from FFX-GLMs (with map number after all betas + XY maps) | the order of additional maps is ''MultipleRegressionR'', ''MCorrSS'', ''TimeCourseMean'', and then all ''ARLag'' maps | | 12/13/2012 | enhancement | GLM::FFX_tMap | emulate BrainVoyager's AR(1) modeling when computing FFX-based t-Maps | this is very preliminary and requires additional testing! | | 12/12/2012 | enhancement | AFT::ExportNifti | an additional argument, ''talorder'', can be given to force the major axes being in Talairach/MNI order and orientation | | | 12/12/2012 | new function | image_matchprops.m | match several images on several properies (contrast, luminance, size, etc.) | | | 12/06/2012 | enhancement | GLM::RFX_conmaps | added support for FFX-GLMs when calling the RFX_conmaps method | | | 12/04/2012 | enhancement/fix | splitclustercoords.m | now the distance to the central point is taken into account, improving the general splitting of clusters into more realistic sub-units | | | 12/04/2012 | enhancement | @xff/isfield.m | xff objects now support the isfield function (as a struct) to check whether a field exists | | | 11/27/2012 | enhancement/fix | GLM::RemoveSubject | prior to the fix, this method would remove all subjects starting with the same string (e.g. removing ''SUB10'' would also remove ''SUB105'') | | | 11/07/2012 | enhancement | @xfigure/xfigure | to improve performance, properties and methods that are used more frequently are tested for first in the switch/case construction | | | 10/17/2012 | enhancement | GLM::RFX_tMaps | automatically filters out subjects for which a contrast map (weighted sum of beta maps) contains NaN values due to missing conditions | the degrees of freedom will be adjusted correctly! | | 10/12/2012 | new GUI feature | neuroelf_gui | added NeuroSynth maps to the GUI's File menu | | | 10/04/2012 | new xff method | MTC::SmoothnessSMP | compute statistical map showing the estimated smoothness of an (residual) MTC | | | 09/27/2012 | enhancement | HDR::InhomogeneityCorrect | now supports passing in an additional binary mask to prevent known voxels outside the brain to be taken into the estimate | | | 09/19/2012 | new function | importrfxglmfromafni.m | added function to generate a NeuroElf/BVQX compatible GLM file out of a series of AFNI HEAD/BRIK regression outputs | | | 09/19/2012 | enhancement | VMP::ImportSPMMaps | now also supports importing from HEAD/BRIK files | | | 09/14/2012 | enhancement | VMP::PerformFDR | this method now takes the estimated smoothness into account to compute the number of maximum resels for the required Bonferroni level | | | 09/07/2012 | new GUI feature | ne_glmbetaplot.m | added checkbox to display general info (location, number of voxels, number of subjects) as title | | | 08/15/2012 | enhancement | alphasim.m | reflecting the multiple linear regression capabilities of GLM::RFX_rMap, alphasim now supports combining several regressors into one model when computing false positive rates | | | 07/30/2012 | enhancement (GUI) | fmriqasheet.m | now allows to display noise estimate from individual slices when clicking into the time course | | | 07/25/2012 | enhancement (GUI) | ne_vmp_createsmp.m | if no surfaces are loaded, a set of default surfaces (LH+RH for the 40k vertices colin brains) are suggested to be loaded | | | 07/15/2012 | enhancement (GUI) | neuroelf_gui | the option to check fMRI quality now also allows to load existing output files of the fmriquality.m function | | | 06/25/2012 | enhancement | calcbetas.m | added features: AR(1) and (pre-computed!) weights can be specified as arguments | | | 05/08/2012 | new GUI feature | ne_cm_compute.m | now instead of comparing groups, maps for groups separately can be computed for visual inspection | | | 05/01/2012 | enhancement | acsvread.m | numeric conversion now restricts the number of output values to prevent invalid numbers | | | 05/01/2012 | added feature | xff / bffio.m | added support for gzip-compressed files | for files with transio access (HDR/NII), the content will be temporarily unpacked into the system ''TEMP'' folder | | 04/26/2012 | added function | hrfboost.m | implementation of Vince Calhoun's HRFboost algorithm | | | 04/17/2012 | bug fix (xff code) | VMP::ComputeFormula | if the ''.MapParameter'' field is set, it is also expanded if necessary to avoid invalid objects after saving | | | 03/15/2012 | enhancement | colorpicker.m | the function now also returns a second output informing the calling function whether the dialog was canceled or not | this helps to determine whether a UI update is needed | | 03/15/2012 | enhancement (GUI) | mkda.tfg | added several options to the MKDA UI menu, incl. plot on slice and plot on surface | | | 02/28/2012 | enhancement | @xff/private/xffrequestfile.m | the generic file requestor upon using ''obj = xff('*.EXT');'' can now be used to select files with different extensions by placing them in parentheses, split by the pipe character | example: ''stats = xff('*.(glm|vmp)');'' | | 02/28/2012 | new xff method | HDR::SliceTiming | added slice-timing to NeuroElf directly | this method does not use SPM code | | 02/24/2012 | new xff method | AFT::TimeCourseCorr | compute slice-based cross-correlation matrix | this can be used to guess for interleaving distance for slice-timing (as a confirmation) | | 02/03/2012 | new GUI feature | ne_remote.m | added remote-control support via HTTP/HTML connection | this can also be used to serve VMP content to a web browser | | 01/24/2012 | enhancement (GUI) | ne_satresize.m | slice-based satellites now can be resized with the underlying transio object being recreated in a higher resolution | | | 01/24/2012 | enhancement (format) | TAL.tff | FileVersion 2 with added fields is now supported | | | 01/24/2012 | bug fix (xff code) | VOI::ApplyTrf | if the VOI object contained more than one VOI field, the code would not correctly allocate the memory, resulting in slower performance | | | 01/23/2012 | enhancement | renamedicom.m | added capability to first pack all DICOM files into a cell array to increase speed | this requires fewer file-system calls when re-reading the directory after every rename operation | | 01/22/2012 | enhancement | @transimg/*.m | the transimg class now allows to add partial and transformed layers | | | 01/13/2012 | enhancement (GUI) | ne_maskstatswithvmr.m | will use the transio-loading feature to ensure that GLMs with data on disk only will not be altered | | | 01/13/2012 | new xff method | AFT::LoadTransIOData | allows to read all transio objects into memory in any xff object | this is particularly useful for GLM files, as the exact fieldnames need not be specified | | 01/05/2012 | enhancement | MDM::ComputeGLM | now also allows to use 4D NIftI (or series of 3D HDR/IMG) files as sources (instead of VTCs) | this then uses adhoc-sampling of the NIftI data into VTC format | | 12/28/2011 | enhancement | crawford_abnorm.m | support data types other than double directly | | | 12/09/2011 | enhancement | GLM::SubjectPredictors | now also works for FFX-GLMs with SeparatePredictors set to "subject" (2) | | | 12/08/2011 | enhancement | GLM::JoinFFX | now also allows to join FFX with various SeparatePredictors settings and has advanced support for transio files (using the multiple filenames access) | | | 12/08/2011 | bug fix (xff code) | GLM::ConvertToVMP | now also stores the TrfPlus content from the RunTimeVars | | | 12/08/2011 | enhancement/fix | AFT::SetScalingSlope | fixed some issues with HDR objects (RGB/RGBA data) as well as for VMRs (forcing a maximum of 225) | | | 12/01/2011 | new xff method | HDR::DynToVTC | convert HDR dynamics (volumes) to VTC format | | | 11/25/2011 | new function | mapestsmooth.m | estimates smoothness of statistical map | this function uses a high-resolution periodogram of 1-dimensional voxel trains to determine the underlying smoothness of a 3D image (and while the results must be used with caution and **as a lower boundary!**, they give a rough estimate of the underlying smoothness) | | 11/23/2011 | enhancement | @xff/display.m | will show a unique xffID for empty-filename (adhoc) objects if display is called on ROOT object | in addition, this also works as a lookup for ROOT::Document | | 11/23/2011 | enhancement | custom_pwelch.m | added support for multi-dimensional inputs | | | 11/21/2011 | new MEX function | indexarraynb.c/.m | same as indexarray but returns 0 for index-out-of-bounds values | | | 11/20/2011 | new function | resestsmooth.m | estimates smoothness of residuals (used for alphasim), also added to GLM::RFX_rMap and GLM::RFX_tMap | this function is based on some notes about a more robust smoothness estimation, found at [[http://www.fmrib.ox.ac.uk/analysis/techrep/tr00df1/tr00df1/node6.html|the FMRIB website]] | | 11/18/2011 | enhancement | MDM::ComputeGLM | this method now supports fixed-effects computations (with the RFX_GLM property set to 0) | results have been compared to BrainVoyager QX's output and differences are based on the fact that Matlab's matrix inversion function (inv) produces slightly different values that BrainVoyager | | 11/15/2011 | enhancement | tempfilter.m | added polynomial filters to the basis sets | also added to MDM::ComputeGLM | | 11/14/2011 | enhancement | fitrobustbisquare_img.m | calls to the function can now also contain the inverse of the original covariance matrix of the design | this change potentially speeds up repeated calls significantly and was added accordingly to SDM::CalcBetas | | 11/10/2011 | new GUI feature | ne_mkda_*.m, mkda.tfg | added MKDA to NeuroElf GUI with own dialog | | | 11/09/2011 | enhancement | AFT::CopyObject | method now allows to retain the filename with an additional argument | otherwise the filename in the copy would be set to empty | | 11/07/2011 | enhancement | AFT::Layout | method now also works for HDR objects | | | 10/21/2011 | enhancement | neuroelf_makefiles.m | the function now also is able to produce SRF surfaces from the newly added subcortical segmentation file | | | 10/21/2011 | new binary file | colin/subcortical.nii | a new file has been added that represents a 0.5mm-resolution segmentation of subcortical areas (which can be transformed into SRF surfaces using the adapted neuroelf_makefiles function) | | | 10/13/2011 | enhancements (GUI) | GLM beta plotter | added keyboard shortcuts for many function switches (regression line, etc.) | | | 10/02/2011 | new xff method | AFT::Coregister | interface to call SPM's coregistration for different types of objects | | | 09/24/2011 | enhancement | image_resize.m | supports relative resizing with values between 0 and 1 for height | | | 09/18/2011 | enhancement | GLM.bff | allow sparse design matrices (and iXX elements) | | | 09/09/2011 | enhancement | @transio/subsref.m | added struct-notation to retrieve underlying fields without needing to struct() the object first | | | 09/07/2011 | enhancement | convones.m | added support for multi-dimensional data (convolved in first dimension) | | | 08/25/2011 | enhancement | AFT::SaveRunTimeVars | any struct field (incl. non-singleton structs) may now contain a RunTimeVars sub-field associated with it (e.g. glm.Study.RunTimeVars), which will be saved into the ''.rtv'' file | | | 08/25/2011 | new function | catstruct.m | concatenate struct contents even if fieldnames or order doesn't match | | | 08/22/2011 | new GUI feature | ne_openstatsfile.m | allows to open HDR/NII files as stats map instead of anatomical/structural data | | | 08/20/2011 | enhancement (GUI) | ne_importvmp.m | allows to import maps into an existing VMP | | | 08/11/2011 | enhancement | AFT::Save, AFT::SaveAs | if ''OBJ.RunTimeVars.AutoSave'' is a 1x1 true logical value, then the AFT::SaveRunTimeVars method will be called as well automatically | | | 07/28/2011 | renamed xff method | GLM::SingleStudy_tMap -> GLM::FFX_tMap | | together with the rename, it now correctly implies that this method can be used on any FFX-GLM, and it was added to the contrast manager | | 07/26/2011 | new xff method | AFT::MaskWithMSK | applies a MSK object to various other objects | | | 07/14/2011 | enhancement | VMR::ApplyTRF | allows to apply TRF to VMRData16 field (V16 data) as well | | | 07/10/2011 | bug fix | findfirst.m | if the MEX code is not available, seeking from an index other than 1 resulted in the wrong target index | | | 06/30/2011 | bug fix (xff code) | GLM::VOIBetas | fixed the code for allowing index repetition for transio-based beta maps | | | 06/21/2011 | enhancement | VTC::CreateGLM | added robust regression to single-VTC regression | | | 06/19/2011 | new function | readeprimetextlog.m | reads an EPrime text-based log file as a struct | | | 06/13/2011 | new function | recordkeys.m | this function can be used to record key strokes with time stamps | can be used alongside any other window (e.g. movie player) to record ratings | | 06/09/2011 | enhancement (GUI) | ne_glmplotbetas.m | the beta plotter now also allows to rank-transform the data for scatter plotting | this was added to be compatible and consistent with maps that were created using rank-transformed contrast/covariate data | | 06/08/2011 | enhancement (GUI) | fmriqasheet | the window of the fMRI QA sheet now allows to manually alter the selection of to-be-discarded volumes | if a valid [[xff]] object was used to create the QA sheet, the selection can also be updated in the ''.RunTimeVars'' variable for later use | | 06/07/2011 | new feature | VTC::MinFrame | minimizes the spatial frame of a VTC to existing data | | | 06/07/2011 | enhancement/fix | fdr_thresholds.m | the default behavior fdr_thresholds is now to select the last crossing of the sorted p-values with the linearly increasing p-values | before the default behavior would mimic older versions of BrainVoyager QX selecting the first (and wrong!) crossing | | 06/06/2011 | enhancement (GUI) | spm5_preprojobs | added the ability to create a 1mm-resolution normalized anatomical image after preprocessing | this feature is not available when the data is normalized using the EPI template | | 06/04/2011 | new feature (GUI) | ne_mdmqcglobtc.m | a new function has been added to the GUI (under Tools -> Quality assessment -> Create global MDM-based timecourse...) | this function requests an MDM filename and then creates a time course across all runs to visualize temporal outliers (in the global time courses of runs) | | 06/04/2011 | new feature (GUI) | ne_mdmqcvtc.m | a new function has been added to the GUI (under Tools -> Quality assessment -> Create averaged-volumes VTC...) | this function requests an MDM filename and then creates a VTC with one (or three) volumes that represent each of the time courses so as to quickly check the spatial normalization across subjects has worked | | 06/03/2011 | enhancement | findfiles.m | calls with a combined path/pattern argument can now contain options, in which case the path/pattern will be correctly split | | | 06/03/2011 | enhancement (format) | PRT.tff | protocols now allow to store multiple parameters per conditions | this is done by setting the ''.ParametricWeights'' header field to the maximum number of parameters; conditions with less than this number of parameters must have the appropriate number of all-0 columns after the on/offsets | | 06/03/2011 | bug fix (format) | HDR.bff | saving HDR objects would not work properly for NII (one-file) objects | **this bug was introduced in a snapshot, so you only need to update if you are using a SNAPSHOT version!** | | 06/02/2011 | enhancement | spm5_preprojobs.m | the VTC filename pattern in now configurable | | | 06/02/2011 | enhancement | colorpicker.m | the colorpicker now indicates in each of the selection boxes what position is selected | | | 06/01/2011 | bug fix (GUI) | ne_closefile.m | certain file types would not be correctly removed from the dropdown (e.g. anatomical/functional HEAD files) | | | 05/31/2011 | enhancement | PRT::CreateSDM | a new parameter, diffreg, has been added, which allows to compute the difference of two regressors | this can be potentially useful in cases where there are two more tonic conditions (e.g. mindsets or instructional modes) in an event-related design, which otherwise are highly colinear with the mean regressor | | 05/31/2011 | new xff method | GLM::Anova | creation of BrainVoyager compatible AVA objects | this function has been moved from the _inprogress subfolder to the actual @xff/private folder, for now only the 1-within, 1-between model is implemented | | 05/31/2011 | new function | mrmanova.m | this function eventually will support a set of mixed-effects, repeated-measures ANOVA models | for now, only the one-within/one-between factors model is implemented and tested | | 05/30/2011 | enhancement (GUI) | ne_setoption.m | for GLM beta extraction via the GUI, the list of conditions/predictors to extract values from can now to selected via the GLM menu | this allows to drop conditions of no interest (for a set of extracted values) without having to use a text editor | | 05/30/2011 | new function | harmmean.m | compute the harmonic mean of a numeric variable across a selected dimension | | | 05/30/2011 | enhancement | neuroelf_gui, AFT::SetColors, etc. | the GUI now supports visualizing maps stored in AVA (Anova result) files | | | 05/29/2011 | enhancement | @xff/xff.m | as an enhancement to the xff class, syntax such as ''h = xff('path/pat*.img');'' will load the images (or NIftI files) matching the pattern | for this syntax to work, a folder name **must** be given! | | 05/28/2011 | new xff method | PLP::ClusterColorSize | sets a new size and color for each point | color and size depend on how many and how close points from other studies are, so that a natural clustering becomes visible (which is an informal way of looking at convergence of coordinates across studies) | | 05/27/2011 | bug fix | AFT::SetScalingWindow | the histogram now correctly reflects the scaled data | | | 05/27/2011 | enhancement | @xff/xff.m | loading multiple headers (a cell array with *.hdr / *.img / *.nii) files is now supported and creates a HDR/NII object with all data files concatenated in the 4th dimension using the new transio feature | some additional methods have been updated to allow this (e.g. MDM::CheckFiles) | | 05/26/2011 | new feature | transio/*.m | transio objects can now be created from multiple files (which must be concatenated in the last dimension) | this allows to access several files (e.g. *.img files of a time series) through one variable | | 05/24/2011 | bug fix | sdist.m | in case the input was invalid, the '''norminv''' sub-function could produce an error | this was fixed, and invalid input values now properly return a NaN output | | 05/24/2011 | enhancement | newnatresvmp.m | the default spatial layout is now consistent with the default MNI/VTC box | this change was introduced so that new VMPs are more likely to match the spatial layout of the outcome of preprocessing and regression results, e.g. for MKDA analyses | | 05/24/2011 | renaming | PLP::MetaVMP -> PLP::MKDA | the MetaVMP method has been renamed to MKDA | this was done to better represent the purpose of the method | | 05/24/2011 | new function (GUI) | ne_vmp_threshmaps.m | a new function (and menu entry under VMP -> Threshold multiple maps) is available to set the threshold of multiple maps (to the same stats or p value) | this function is also available in the GLM menu to threshold multiple beta maps | | 05/23/2011 | enhancement | HDR::CoordinateFrame | now the QFormCode != 0 algorithm for computing a transformation matrix is fully supported | before, the rotation elements were ignored | | 05/22/2011 | new xff method | SRF::ApplySPMsn | apply SPM-based normalization to SRF file | | | 05/20/2011 | new feature (GUI) | neuroelf.tfg | there are new menu entries under File -> Options -> Spatial normalization | these entries allow to set an object-specific SPM compatible normalization file, allowing for on-the-fly normalization for visualization (without having to normalize the data on disk); also supported in Montage and Rendering functions | | 05/20/2011 | enhancement | AFT::Sample*Box, AFT::SliceData3D | these methods now support the use of an optional SPM normalization parameters struct to perform full-volume and on-the-fly normalization | | | 05/19/2011 | enhancement | xff/subsref | the DefaultProperty of the file formats now can be either a single field name or a 2-item list | this allows to create more complex DefaultProperty constructs, as used in the updated PLP object (where plp.Name references the data column in plp.Points with name '''Name''' | | 05/19/2011 | new xff method | PLP::AddColumn | adds a column of values to an existing PLP object | if the column name already exists, the data is replaced | | 05/19/2011 | new function | histnd.m | compute histogram over N-dim data in one dimension | | | 05/17/2011 | enhancement/fix | ne_mdmvoicondavg.m, MDM::VOICondAverage | this functionality would have problems with both a single value baseline window (e.g. only the onset time) as well as if only one onset per condition was given (single-trial analysis) | | | 05/15/2011 | new feature (GUI) | ne_loadcluster.m | now also supports loading the files supported by VOI::ImportCluster | | | 05/15/2011 | new xff method | VOI::ImportCluster | imports clusters from HDR/IMG/NII, MSK, and TXT files into an existing VOI object | this allows to import images from various toolboxes as single or multiple clusters, and also creation of multiple spheres from text files | | 05/14/2011 | new xff method | PLP::MetaVMP | creates a VMP container with a set of maps (one for each study/contrast/smoothing kernel combination and a group map | this is still work in progress and needs to be refined and requires a **good** algorithm to threshold the map | | 05/13/2011 | new feature (GUI) | ne_setcluster.m | when a single cluster is selected and the current slicing object has multiple volumes (4D), the average cluster timecourse is displayed in the timecourse window | | | 05/13/2011 | new feature | AFT::SliceData3D | the method now also allows to return a (2D/within-slice) gradient image on-the-fly | this can be useful for instance to check the registration quality; the feature is available from the main UI via the '''g''' key (or the ''**SHIFT** + 'g''' combination for the underlay object) | | 05/13/2011 | enhancement (GUI) | ne_cm_updateuis.m | now the contrast manager updates other UIs (beta plotter for now) when the configuration changes | before the beta plotter needed to be re-opened to reflect the changes | | 05/12/2011 | new feature (GUI) | ne_markclusters.m | clusters can now be marked as an Underlay object (of type RGB HDR) | this allows to show RGB-based ROIs (comparable to BrainVoyager's functionality) on top of the actual gray-scale data; to invoke this feature, the resolution value has to be entered as a negative number, e.g. ''-3'' for a 3mm resolution but using the new RGB overlay | | 05/11/2011 | new MEX function | psetdists.c/.m | compute distances between a set of points | | | 05/11/2011 | new feature (GUI) | ne_setglobaltrf.m | the global transformation parameters (display translation, rotation, and scaling), as well as the sliced object's transformation parameters can now be set via using modifier keys and hold-dragging the mouse | this works in parallel with the surface rendering transformation adaptation (SHIFT -> translation, ALT -> zoom, SHIFT + ALT -> rotation; add CTRL for sliced object's transformation); the sliced object's transformation can be reset to the identity matrix by pressing CTRL and '''r''' | | 05/11/2011 | new xff method | AFT::VOITimeCourse | the code of VTC::VOITimeCourse has been overhauled and adapted so that it now also works with (3D and) 4D [[xff - HDR format|Analyze/NIftI]] and multi-volume [[xff - HEAD format|AFNI BRIK/HEAD]] files | the advantage is that this allows to apply VOI coordinates directly to NII (and HEAD) objects; for compatibility reasons, the original method has been renamed to [[vtc.VOITimeCourseOrig|VTC::VOITimeCourseOrig]] | | 05/11/2011 | enhancement | transio/buffer.m | a new functionality (buffering) has been introduced, which allows to temporarily buffer one indexing expression (e.g. one volume out of a multi-volume transio object), so that subsequent calls to, e.g. [[obj.SliceToTransimg|AFT::SliceToTransimg]] do not require to re-access the file | a new ini directive/setting has been added, which for the time being is set to false but can be enabled in ''_core/config/xff.ini'' in the ''Behavior.BufferGLMData'' setting | | 05/11/2011 | new method | transio/reshape.m | the overloading of reshape has been added | | | 05/11/2011 | enhancement | ne_clonefile.m | this now also works for statistical objects | together with the new menu entry (File -> Clone stats object) this allows to use several beta plots on the same GLM data (Matlab recognizes that only one copy of the underlying data is kept in memory!) | | 05/10/2011 | enhancement | neuroelf_setup.m | the pre-compiled libraries (MEX files) are now available for Mac OSX 10.5 (Leopard) and 10.6 (Snow Leopard) separately | the default behavior of MEX compiling is to use the most up-to-date OS SDK, which are not compatible; if the MEX files cannot be compiled, the OS version will be auto-detected and the correct libraries copied (that means that if you wish to use a shared installation for OS 10.5 and 10.6 machines, you should install on a 10.5 machine!) | | 05/09/2011 | bug fix | ne_setcsrfstatmap.m | the behavior of when the Scenery and SMP list are enabled and auto-filled with objects has been improved | before some UI elements could become locked (disabled) if no map was available for a surface | | 05/09/2011 | bug fixes | ne_glmplotbetasup.m | the handles for text output could be plotted to the wrong axes, this has been fixed | as far as I could find out, this is a Matlab bug, but a workaround has been put in place | | 05/09/2011 | enhancement (GUI) | neuroelf_gui | the height of the main UI has been reduced by about 20 pixels to better fit a regular WXVGA (WIDTH-by-768) display | this also allows to use NeuroElf under 1024x768 resolution | | 05/07/2011 | enhancement | fmriquality.m | the quality data is automatically written into a MAT file if the input is a single object (VTC or NII file) | the target filename is the source filename with extension ".fq" | | 05/07/2011 | bug fix | writemat.m | certain combinations of inputs would lead to incorrect files being written | | | 05/06/2011 | enhancement (GUI) | neuroelf_gui | the way cluster tables are sorted is now configurable via the **File -> Options -> Clustertable** sub-menu | | | 05/06/2011 | enhancement | clustervol.m, AFT::ClusterTable | cluster table creation now supports optionally printing sub-cluster sizes (not the default) | this change was introduced to make cluster tables more adhering to the community standard in publishing | | 05/02/2011 | enhancement | @xfigure/xfigure.m | autodetect font sizes on first instantiation | | | 04/30/2011++ | compatibility | *.m, *.bff, *.tff | initial compatibility with Octave (v3.4.0) was reached | major changes in files: * the ''try, TRYBLOCK; catch eo, CATCHBLOCK; end'' syntax was altered (in all files using try/catch) allowing use of this construction in Octave * some residual problems were removed (e.g. characters following the continuation operator, ...; stray short-circuit comparison operators were converted; where necessary, checks for whether the underlying system is Matlab or Octave were put in place; work-arounds for some minor bugs in Octave were added) | ==== Release v0.9b (06/15/2010 through 04/28/2011) ==== ^ Date of change ^ Type of change ^ Changed Object ^ Description ^ Comments ^ | 04/28/2011 | enhancement (GUI) | ne_render_ex.m | if the window used for rendering is closed, the procedure is canceled | this is also useful to keep a certain state as the final one | | 04/28/2011 | new function | montagemix.m | mixes two RGB images (of same size) according to a mixing strategy | replaces code prior used in ne_render_ex, ne_setsatslicepos, ne_setslicepos, and ne_vismontage_create_ex | | 04/28/2011 | enhancement (GUI) | ne_mdmvoicondavgup.m | now also supports plotting the (RFX) difference of two selected conditions (or collapsings) | this can be useful to assess inferentially whether or not two conditions elicit a differential response across subjects | | 04/27/2011 | enhancement | neuroelf_makefiles.m | now also a "segback_hull" object is written that represents just the back-projected border of the high-resolution SRF objects | this object can be used to "enclose" other content, such as the [[https://www.loni.ucla.edu/Atlases/Atlas_Detail.jsp?atlas_id=15|ICBM DTI atlas as RGB image]], when set as an underlay | | 04/27/2011 | enhancement (GUI) | ne_setslicepos.m | now supports an "underlay" object for the SliceVar object | this allows to set a separate object that is rendered "below" the currently selected slice object, which can be used for enhanced drawing of ROIs or visualizing two datasets in blended mode; also supported in ne_setsatslicepos, ne_vismontage_create_ex, and ne_render_ex | | 04/26/2011 | enhancement (format) | HDR.bff | support for RGB and RGBA data | the support is read-only at the moment! but the most important methods (AFT::SampleData3D, AFT::SliceData3D, AFT::SliceToTransimg) are supported with this datatype | | 04/26/2011 | new xff method | HDR::InhomogeneityCorrect | inhomogeneity correction for Analyze/Nifti objects | mimics VMR::InhomogeneityCorrect | | 04/24/2011 | new xff method | AFT::ExportNifti | exports a BrainVoyager format (CMP/GLM/VMP/VMR/VTC/VDW) into a Nifti object | this method keeps some crucial information (e.g. Maps) available for subsequent use, also integrated into the GUI | | 04/24/2011 | enhancement (GUI) | ne_vmp_createsmp.m | uses the new AFT::CreateSMP | a new button is available next to the list of stats maps which then only converts the current selection into SMP format | | 04/24/2011 | new xff method | AFT::CreateSMP | converted the VMP::CreateSMP method into a method valid for other objects (CMP/HDR/HEAD/GLM/VMP) | gives more flexibility to what objects can be used to directly visualize on a surface mesh | | 04/23/2011 | bug fix | @transio/size | 2-output format not supported | now also supports calls like [M, N] = size(transio_object); | | 04/20/2011 | bug fix (GUI) | ne_cm_delgroup.m | deleting one of the last two groups now permanently removes the group definition | the user is asked whether or not he/she is certain to perform this action | | 04/19/2011 | enhancement (GUI) | neuroelf_gui | added the files from the _files/colin sub-folder to the main File menu for fast access | | | 04/18/2011 | enhancement (GUI) | ne_glmbeta*.m | supports several new features | among the new features are: quadratic fit to covariate, labeling of subjects in plots, trend lines, confidence ellipses, separate plot of groups (scatter), setting of scatter symbol, etc. | | 04/17/2011 | enhancement (GUI) | ne_clustertable.m | the table is now printed on the console in minimized state to simplify reading cluster coordinates | | | 04/17/2011 | bug fix | heartbeats.m | under certain conditions, the list of beats would have a number of values that led to an error message | | | 04/16/2011 | new function | neuroelf_splash.m | this function uses a timer object to cycle through the splash images, which allows "parallel" setup and image updates | | | 04/15/2011 | bug fix (xff code) | HDR::CoordinateFrame | bug fix for the Slice1 and SliceNCenter values | | | 04/15/2011 | bug fix | colorpicker.m | for certain values, the "reset colors" function would lead to an error | the problem was introduced when the hsv2rgb function was replaced with the hsvconv MEX function | | 04/15/2011 | enhancement (GUI) | ne_statsmenu.m, ne_voimenu.m | in minimized state, the GUI now allows access to the stats maps and VOI clusters via a main menu item | | | 04/14/2011 | enhancement | VMR::CleanVMR | the function now uses compiled routines and is a little more robust | | | 04/14/2011 | enhancement | pmbfilter.m | bias cutoff value and contiguity restriction added to options | | | 04/14/2011 | enhancement | dcm2nii.m | format option added to the opts argument | | | 04/14/2011 | enhancement | singletrialprts.m | added optional argument to force that each protocol has all (also empty) conditions | this is required when the resulting SDM files are to be used with BrainVoyager QX! | | 04/13/2011 | enhancement (GUI) | ne_mdmvoicondavgup.m | added support for weighted RFX (where the weight is computed by the available datapoints per subject at any given time) | | | 04/13/2011 | enhancement (GUI) | importrfxglmfromspms.m | many options added to the function (incl. automatic import of VTCs, support for color settings, etc.) | | | 04/12/2011 | new function | onesamplet.m | one-sample t-test for data where 0-values can be discarded | | | 04/12/2011 | new function | moveinlist.m | compute new indices of items moved within a list as well as a function for re-ordering | | | 04/12/2011 | bug fix | dicom2nii.m | spatial vectors were incorrectly set in the NII output, leading to shearing | | | 04/10/2011 | enhancement (GUI) | ne_setcstatmapprops.m | now also the DF1/DF2 as well as map type parameters are correctly handled | same code added to ne_setcstatmapformula | | 04/09/2011 | enhancement | all M-files | error handling (try/catch) now uses a caught MException object (removing a lot of LINT messages in the code) | | | 04/07/2011 | enhancement | SRF::Reduce | now also allows to reduce irregular meshes using the preduce function of Matlab | | | 04/06/2011 | bug fix | newhdr.m | now the correct QFormCode and SFormCode values are set in the header structure | | | 04/04/2011 | enhancement | renderlayers.m | the M file now also contains a replacement for the MEX code, so that this function can be used prior to compiling the MEX files | | | 04/02/2011 | enhancement (GUI) | ne_keypress.m | on surface-based satellite windows, the background color can now be altered using the '''b''' key | | | 04/01/2011 | new function | cellipse.m | compute coordinates for confidence-interval ellipses for bi-variate data | | | 03/30/2011 | enhancement (GUI) | ne_keypress.m | keypress options have been added for satellite windows (slice and surface display in separate UIs): SHIFT+m advances the index of a displayed VMP map by one (if and only if exactly one map is selected), and SHIFT+s allows to save a screenshot (using EPS format gives high quality surface rendering options! | | 03/30/2011 | new function (GUI) | ne_screenshot.m | this function will save a screenshot of a figure or axes object of the GUI with different formats | saving an axes as EPS gives high quality rendering options, e.g. in PhotoShop, etc. | | 03/30/2011 | enhancement | SRF::Smooth, SRF::Morph | the methods now allow to suppress visual output (rendering) as a speed gain (for scripted processing) | | | 03/30/2011 | enhancement | neuroelf_makefiles.m | added back-projection VMR from hires SRF files as well as hires brain-peeled versions of colin_brain.vmr | | | 03/30/2011 | bug fix | clustervol.m | the center-of-gravity now correctly uses the absolute value of the stats | before it would use the signed value, which in case the cluster contained both negative and positive stats would be incorrectly weighting coordinates (and could even lead to NaN outcome!) | | 03/29/2011 | bug fix (xff code) | VTC::MeanStd | the method now correctly sets thresholds as type double | this now complies with the type of argument required for the thresholding functions | | 03/29/2011 | enhancement | AFT::SetScalingWindow | this method now also works for MSK objects | the scaling window is set to 0 through 4/3 so that masked voxels are shown in light gray | | 03/29/2011 | bug fix | spm5_preprojobs.m | removing volumes from 4D NIftI files with repeated processing should work reliably now | if data was already in the folder, the function would use the found data but then remove the volumes again | | 03/29/2011 | new function (GUI) | ne_mdmvoicondavg.m | this uses the MDM::VOICondAverage method and displays averaged time courses in its own UI | extracted timecourses can be saved into a datafile for later re-load | | 03/28/2011 | new xff method | MDM::VOICondAverage | this method extracts time courses of VTCs referenced in an MDM and then computes trial-based average responses using the information found in the MDM's PRTs | only works with PRT-based MDM and re-uses MDM::ConditionOnsets, MDM::SDMs, and MDM::VOITimeCourses | | 03/25/2011 | bug fix | tcplot.m | error bands are now always plotted into the requested axes object | if the axes into which the plotting occurred wasn't the current axes (or its parent not the parent figure), error bands were plotted into a new axes | | 03/24/2011 | enhancement | AFT::SliceToTransimg | the method now allows to flexibly add bar graphs indicating the statistical color range to the last layer when statistical maps are rendered | | | 03/23/2011 | enhancement | MDM::ComputeGLM | this method now re-uses MDM::SDMs | this will allow future changes and added features to be used across several functions | | 03/23/2011 | new xff method | VOI::CreateMSK | this method will create a MSK object with the selected VOIs | | | 03/22/2011 | enhancement | sdist.m | the list of statistical distributions now also comprises '''normcdf''' and '''normpdf''' | | | 03/22/2011 | new function | replacerobmean.m | replace outliers (in one dimension) with robust mean estimate | | | 03/20/2011 | new xff method | DMR::Write4DNifti | writes out a 4D NIftI file with DMR data | | | 03/18/2011 | enhancement | AFT::ClusterTable | in addition to reporting the peak coordinate in the table, this now also supports reporting the center and center-of-gravity of clusters | | | 03/18/2011 | enhancement | clustervol.m | in addition to reporting the peak coordinate in the table, this now also supports reporting the center and center-of-gravity of clusters | | | 03/18/2011 | bug fix | alphasim.m | if a surface (SRF) was used and the along-the-normal sampling had more than one point, the sampling would always occur at vertex + 1 * normal | | | 03/17/2011 | bug fix | VTC::VOITimeCourse | if the object is using transio, this method now correctly indexes each functional voxel only once | for anatomical ROIs this method was likely to produce an error with VTCs using transio VTCData members | | 03/17/2011 | enhancement | AFT::CopyObject | this method now sets a handle (''SourceObject'') in copied objects, so that it is possible to follow back to the original | | | 03/16/2011 | new xff method | MDM::SDMs | this method collects and ameliorates all SDMs from an MDM file and returns them in a cell array (either as objects or structs) | | | 03/16/2011 | new xff method | MDM::ConditionOnsets | this method collects all onsets from a PRT-based MDM file and returns a cell array with the Run-by-Condition on/offset matrices | | | 03/16/2011 | enhancement | PRT::ConditionNames | the method now also produces an option second output, the Cx3 colors of the conditions | | | 03/16/2011 | enhancement | fmriquality.m | the detection of foreground and background voxels is now more robust (only relevant in few cases) | | | 03/16/2011 | new function | ac2vmp.m | convert "activation_cluster" MAT files (Tor Wager tools) to BrainVoyager QX's VMP format | | | 03/15/2011 | enhancement | MDM::VOITimeCourses | this method nows calls ''drawnow'' after extracting data from each respective VTC so as to keep the UI alive | | | 03/14/2011 | bug fix | ztrans.m | if all values were the same, the function would return NaNs, now it returns 0's instead | | | 03/09/2011 | new function | singletrialprts.m | conversion of a list of regular PRTs to single-trial PRTs (using PRT::ConvertToSingleTrial) | | | 03/09/2011 | enhancement | PRT::ConvertToSingleTrial | the method now tries to create the list of condition names "in order" (across runs and subjects) | | | 03/03/2011 | bug fix (GUI) | ne_vismontage_create_ex.m | images of different types can now be saved | before, only JPG images could be saved due to the fix '''Quality''' argument | | 03/02/2011 | upgrade (library) | libSVM files | after libSVM was updated to V3, NeuroElf now has files to run SVM with V2 and V3 code | | | 03/01/2011 | bug fix | dcmio.m | if the value representation was invalid, the file pointer would wrongfully advance two bytes | | | 03/01/2011 | bug fix | dicom_vr.m | for the actual DICOM data, the "unknown" VR was incorrectly translated to 8-bit values | | | 03/01/2011 | bug fix | createfmr.m | mosaic DICOM files were not correctly supported | | | 02/28/2011 | new xff method | FMR::Write4DNifti | writes out a 4D NIftI file with FMR data | | | 02/25/2011 | bug fix (GUI) | ne_undock.m | color and alpha values are now correctly copied from reference objects | before, colored SRF objects produced an error when undocked | | 02/10/2011 | enhancement | fmriqasheet.m | an outlier detection threshold can now be optionally set | | | 02/08/2011 | bug fix (xff code) | DMR::CoordinateFrame | the coordinate frame is now correctly computed | before, the origin was not correctly computed | | 01/27/2011 | enhancement | readpar.m | now also supports partial PAR files (i.e. in case the acquisition was stopped before the end of the run was reached) | | | 01/26/2011 | enhancement | reccheck.m | significant improvement in speed when checking PAR/REC files | | | 12/09/2010 | enhancement | vtc_concat.m | this function required updating to reflect the newly supported (float) datatype in VTCs | | | 12/06/2010 | new function | newhdr.m | create a new HDR/NII object with reasonable defaults | | | 11/23/2010 | bug fix | AFT::SetScalingWindow | NaN values would lead to an error in histcount, fixed | | | 11/23/2010 | new xff methods | MTC::ApplySSM, MTC::ApplyTSM | added methods to resample single-subject MTCs into group-analysis space with fixed number of vertices | | | 11/23/2010 | new functions | BVQXfile.m, isBVQXfile.m | added compatibility functions to re-use BVQXtools scripts | | | 11/22/2010 | enhancement | robscatter.m | added confidence bands to regression line plot | | | 11/21/2010 | enhancement (GUI) | neuroelf_gui | the new icbm2tal is now the standard for looking up cluster peak coordinate locations | both icbm2tal and tdclient checkboxes are now enabled by default | | 11/20/2010 | new functions | icbm2tal.m, tal2icbm.m | conversion from and to TAL from and to ICBM space | these functions use pre-computed normalization/warping parameter files derived from the Talairach.nii file using SPM8's segmentation routine, preliminary tests show a highly improved localization of structures with the TD database | | 11/19/2010 | bug fix (xff code) | GLM::SingleStudy_tMap | while this function could be used for FFX models of any kind, it would compute the D.F. parameter incorrectly, and thus scale the statistical values improperly | the bug fixed version now produces the same results as BrainVoyager QX (tested) | | 11/18/2010 | new function | auroc.m | area-under-ROC computation | function supports vectorized input | | 11/05/2010 | new function | reccheck.m | perform some basic checks on a REC file (of a PAR/REC file pair) | computes a mean image as well as a histogram and the peak of the bulk brain data distribution | | 11/02/2010 | bug fix | tffio.m | wrongly formatted SDM files are now (again) read correctly | this bug had been fixed in the past, but was re-introduced after switching the main text-based IO to u8str2double.MEX functionality; this has been fixed by adding an additional flag to the TFF format specification, which, for SDM files, checks for this particular problem | | 10/27/2010 | bug fix | psctrans.m, ztrans.m | improper values are set to default values | for instance where a voxel time course is all zero, psctrans returns all-100 values, and ztrans all-0 values | | 10/27/2010 | new function | stoufferz.m | implements the Stouffer-Z combination of independent z-statistics into one compound test statistic | | | 10/25/2010 | bug fix (xff code) | SMP::Smooth | the smoothing algorithm has been entirely rewritten and now results are highly comparable to BrainVoyager QX's results | prior to the rewrite, the number of vertices had an undue influence, which would make smoothing of SMPs on native (non-resampled) meshes invalid | | 10/25/2010 | enhancement (GUI) | GLM beta plotter | the beta plotter now supports group naming as well as scatter plots added to bar graphs | this enriches the feature set, so that outliers can be more easily spotted when bar graphs of different groups are plotted | | 10/19/2010 | new function | combine3danalyze.m | combines several 3D Analyze images into one 4D NII volume | | | 10/13/2010 | enhancement | depcorrt.m | support for robust estimation for dependent correlations was added | | | 10/08/2010 | enhancement (GUI) | spm5_preprojobs | support was added for different normalization methods | now, also the EPI.nii template can be used, as well as session-by-session normalization (only with the EPI.template) | | 09/22/2010 | enhancement | alphasim.m | support was added for differentiation between one- and two-tailed statistics | | | 09/19/2010 | new UI | RFX mediation UI | dialog to configure single-level RFX mediation based on a GLM object with configured contrasts and covariates | | | 09/19/2010 | bug fix (xff code) | GLM::JoinRFX | a check was added to assure that the same subject ID does not occur twice in the resulting GLM | | | 09/19/2010 | enhancement | SDM::CalcBetas | the method now heeds the mtc/vtc.RunTimeVars.Discard field and automatically drops indicated time points from the model and data | | | 09/19/2010 | enhancement (GUI) | neuroelf_gui | full support for orientation | this now also includes correctly updating the crosshairs, as well as allowing the orientation to be flipped for satellite windows | | 09/18/2010 | enhancement | AFT::SliceToTransimg | method now supports setting the orientation (n/r) for coronal and transversal slicing | | | 09/18/2010 | enhancement (GUI) | neuroelf_gui | closing a GLM file now closes/updates the contrast manager correctly | | | 09/18/2010 | bug fix (GUI) | neuroelf_gui | clicking the move up/down buttons for maps on a GLM map would ask to delete the selected subject | | | 09/18/2010 | bug fix (xff code) | GLM::RemoveSubject | all fields are updated correctly now | | | 09/18/2010 | bug fix (xff code) | MDM::ComputeGLM | the filtering would only work in combination with the new PPI feature | | | 09/17/2010 | enhancement | neuroelf_makefiles.m | now also white-matter masked (WMmasked) VMR files of the colin_brain and colin_brain_ICBMnorm files can be created | | | 09/17/2010 | enhancement (GUI) | neuroelf_gui | the main UI now also has a brightness/contrast control bar | this bar allows to set the minimal (black) and maximal (white) values for display separately for each loaded slicing object | | 09/17/2010 | enhancement | minarray.m | minarray now also works on logical arrays | | | 09/17/2010 | bug fix (xff code) | GLM::RFX_tMap | for robust regression between-groups, only the last comparison was returned; fixed | | | 09/16/2010 | enhancement (MEX) | threshlutc.c | the function now allows more than 120 colors per tail | | | 09/16/2010 | new xff method | SRF::UpdateNeighbors | neighbors that are hidden (color set to deleted) are removed so that smoothing works properly | | | 09/15/2010 | enhancement (GUI) | contrast manager | the contrast manager now allows to extract contrast covariates from currently selected contrast/VOIs | | | 09/13/2010 | enhancement | VMP::WriteAnalyzeVol | this now fully supports the new NIftI format for SPM5/8 with the extended header | | | 09/09/2010 | enhancement | flexinterpn_method | for up to 3D nearest-neighbor interpolation (without transformation) indexarray is used | speed-gain factor between 8 and 12 | | 09/08/2010 | new MEX function | indexarray.c/.m | alternative ways to access an array | includes nearest-neighbor interpolation and ranges | | 09/04/2010 | new function | mediationpset.m | compute paths, standard errors (SE) and t stats on single-level mediation model | | | 09/04/2010 | new function | fitrobustbisquare_multi.m | perform robust regression on multiple models | | | 09/03/2010 | new xff method | VOI::ToISO | apply coordinate transformation from scanner-space to ISO-voxel-space | | | 09/02/2010 | enhancement | PRT::CreateSDM | the PPI-feature now creates un-contrasted interactions | before only contrasts could be used | | 09/01/2010 | new xff method | AFT::SmoothData3D | 3D smoothing of (partial) data | allows to set spatial and value ranges | | 09/01/2010 | bug fix (MEX) | conv3d.c | now correctly discards NaN values when convolving | | | 08/31/2010 | new function | bstrapbca.m | compute BCa boot-strap probability | | | 08/31/2010 | new function | jksample.m | jack-knife sampling indices | also creates leave-2-out samples | | 08/29/2010 | enhancement (MEX) | isinfnan.h | removal of one unnecessary variable | | | 08/29/2010 | bug fix (MEX) | normcdfc.c | the inner loop would process one value too many | this could lead to a memory access violation | | 08/29/2010 | enhancement | sdist.m | added norminv to the distributions | | | 08/28/2010 | new function | bssample.m | boot-strap sampling generator | | | 08/28/2010 | new function | mmregress.m | multiple-model regression | wrapper for pinvc and transmul functions | | 08/26/2010 | enhancement (MEX) | transmul.c | now allows to work over a 3rd dimension | useful to compute regression weights and residuals of several models at once | | 08/25/2010 | new MEX function | histcount.c/.m | 1- and 2-dimensional histogram count with fixed bin width | | | 08/23/2010 | new MEX function | pinvc.c/.m | multi-matrix inversion | useful when several models of the same size need to be regressed | | 08/21/2010 | new binary file | flatmap.mat | flat maps of hires-segmentation are now provided as a convenience to display MNI-based results on a flat map | maps are available in native resolution, 160k and 40k vertices resampling | | 08/14/2010 | enhancement (GUI) | neuroelf_gui | added VMR smoothing support to GUI | smoothing allows to specify bounding box, non-integer kernel size and value range of to-be-affected voxels | | 08/13/2010 | new function | mtimesnd.m | N-dimensional mtimes (along higher dims) | replaces the need to apply the mtimes (*) function along those dims | | 08/13/2010 | new function | image_rotate.m | high-quality interpolation on 2D image rotation | supports gray and RGB images as well as additional options for masking | | 08/12/2010 | new MEX function | hsvconv.c/.m | convert from and to HSV (from/to RGB) | faster than Matlab's rgb2hsv and hsv2rgb, less memory requirement | | 08/11/2010 | bug fixes | diverse | several smaller bugs have been fixed that could cause strange side effects with the alterations introduced earlier | | | 08/11/2010 | enhancement (GUI) | ne_openfile.m | while opening a HDR file, the GUI will detect the object is the result of an SPM statistical test (e.g. t map) and will display the object as a statistical object, not an anatomical object | this allows to directly load spmT_xxxx.hdr files in NeuroElf and browse maps interactively as well as creating cluster table and VOIs for later use | | 08/11/2010 | enhancement | AFT::ClusterTable | the ClusterTable method is now also available for CMP, HDR (Analyze/NIftI) and HEAD (AFNI HEAD/BRIK) objects | before, these objects needed to be converted to VMPs to allow clustering | | 08/11/2010 | enhancement | colorpicker.m | instead of using the lazy Axes->Image overload for the ''CData'' field, the function now correctly sets the property in the image handle | this reduces the number of caught errors for easier debugging and slight performance gains | | 08/11/2010 | enhancement (formats) | GLM.bff, HDR.bff, HEAD.bff | a new default RunTimeVars field has been added (''Map'') | this field now stores, for each volume, the same information available in VMP objects, allowing the NeuroElf GUI to treat objects very similarly | | 08/11/2010 | enhancement (formats) | FMR.tff, MTC.bff, VTC.bff | a new default RunTimeVars field has been added (''Discard'') | this will be used to keep track of volumes to be discarded during regression without the need to actually remove the data (also allowing to re-include the data at a later point in time, and also functions to enter this into the field when they detect problems) | | 08/11/2010 | enhancement | xff/subsref+subsasgn | if an object has a RunTimeVars sub-field, it can now be accessed transparently | e.g. instead of writing '''obj.RunTimeVars.TrfPlus''' the syntax '''obj.TrfPlus''' will have the same effect | | 08/11/2010 | enhancement | AFT::* | AFT methods are now only callable for those types they are meant to work on | before, methods would not be listed under Help or using the ''TAB'' key, but could still be called (sometimes with strange side effects) | | 08/10/2010 | enhancement | @xff/xff_requestfile.m | the file requestor now retains information about the last selected file type, also a new entry (default) has been created that allows to select the more important formats directly without having to change the filter index | | | 08/10/2010 | bug fix (MEX) | joinlayers.c/.m | for certain combinations of pixel/alpha fields in layers, the code would overwrite the underlying data entirely | | | 08/10/2010 | enhancement | tffparse.m | for expressions, the code is now only stored once | | | 08/09/2010 | new xff method | AFT::SmoothData3D | allows to smooth parts of a dataset | | | 08/08/2010 | new GUI | ne_render.m | configuration of rendering engine | | | 08/07/2010 | new GUI function | ne_render_ex.m | creation of 3D rendered brain+stats views | this function works in parallel to ne_vismontage_create_ex but instead stacks the sampled images into one 3D rendered image | | 08/07/2010 | enhancement | @transimg/*.m + MEX | the transimg class now also allows to store the pixel information as floating point | this makes repeated calls to joinlayers (MEX function) show (almost) no rounding errors when joining several layers and returning the values several times | | 08/06/2010 | enhancement | VTC::CreateGLM | the VTCData is now handled in smaller packets | this allows large VTCs with many beta maps to be regressed (otherwise often ''out of memory'' errors...) | | 08/06/2010 | bug fixes | ne_* GUI functions | several smaller bugs fixed | those bugs were introduced by splitting the single GUI function into several functions and did not occur before! | | 08/05/2010 | new xff method | AFT::SetScalingWindow | this allows to set the black-to-white scaling bounds for anatomical projects (HDR, VMR, etc.) | the advantage is that, without having to re-write the data, the display can be easily adapted; still needs implementation into the GUI with new set of controls | | 08/05/2010 | function split | neuroelf_gui.m | GUI function split into sub-functions (in private folder) | the function file (neuroelf_gui.m) had grown to over 400kB in size, which made editing slower | | 08/04/2010 | new function | bboverlay.m | get overlay of bounding boxes from VMR objects | | | 08/03/2010 | new function | neuroelf_makefiles.m | this function creates derivatives of colin.img and colin.vmr files | the colin.vmr file is now the only additional file created during neuroelf_setup | | 08/03/2010 | new binary file | colin/seg_05mm.mat | this file contains a high-resolution segmentation of the colin.vmr dataset (at 0.5mm) | together with the new function, neuroelf_makefiles, this allows to create very high quality surfaces in colin-MNI and ICBM-MNI space | | 08/02/2010 | enhancement (MEX) | mesh_trimapmesh.c | an improved triangle selection is more robust (less likely to mark a vertex as non-matchable) | | | 07/31/2010 | new xff method | SRF::SetCoordsTriangles | this method allows to set vertices and triangles from various sources | | | 07/31/2010 | bug fix (xff code) | SRF::BackToVMR | now the method correctly handles different resolutions and offsets | | | 07/31/2010 | enhancement | AFT::Browse | method now also works for SMP objects | | | 07/31/2010 | update (xff code) | VMR::DBReco | integrating the new MEX version of the code into the xff method | | | 07/30/2010 | new MEX function | mesh_neighborsarray.c/.m | create 2D array with neighbors (for faster computation of certain properties) | | | 07/30/2010 | new MEX function | mesh_reconstruct.c/.m | create surface (vertices, triangles, list of neighbors) from voxel data | replaces the code that was formerly part of VMR::DBReco | | 07/30/2010 | enhancement | importvmrfromanalyze.m | this function now supports creating VMRs in 0.5mm resolution from Analyze/NIftI files directly | | | 07/25/2010 | enhancement (GUI) | neuroelf_gui.m | several functionalities have been fixed | now working: painting in altered orientation/transformed version, setting the voxel coordinate, remembering the map selection for VMP/SMPs when switching between objects, setting the threshold from the p-dropdown for surface maps | | 07/24/2010 | enhancement | neuroelf_setup.m | the function only creates binary files that don't already exist and also creates ICBM-PPM-atlas normalized versions of the colin dataset | | | 07/24/2010 | new MEX function | applyspmsnc.c/.m | apply SPM's _sn.mat normalization to coordinates (both ways) | used in the new setup that creates ICBM-normalized colin_*.* files | | 07/24/2010 | enhancement (MEX) | quattrans.h | now has a second set of variables/functions | this is useful in cases where a function has two separate quaternions for multiplication | | 07/23/2010 | enhancement | SRF::BackToVMR | the back-projection now samples throughout the triangles | this leads to a much denser representation of the surface (with configuration "depth") | | 07/21/2010 | enhancement | neuroelf_setup.m | the function only creates binary files that don't already exist and also imports a VMR from the now bundled Analyze version of the colin dataset | this dataset can be [[http://imaging.mrc-cbu.cam.ac.uk/imaging/MniTalairach|downloaded from the CBU Imaging wiki]] | | 07/21/2010 | added file | colin/colin.hdr/.img | I decided to bundle the hdr/img instead of the VMR | the VMR file will be created and masked during neuroelf_setup; while this file is slightly larger after compression, it still has the full intensity range, which might improve segmentations, etc. | | 07/20/2010 | altered file | colin/sph.mat | coordinates for LH and RH are now in new notation (for own function) | this allowed to drop the sph80.mat file in the srf folder (coming from BrainVoyager), also coordinates are now saved as uint16 (BV-voxel position * 256), which saves some more space | | 07/20/2010 | re-implementation | spheresrf.m | create a icosahedron sphere mesh | **results will differ from BrainVoyager w.r.t. vertex numbering and triangle order!!** | | 07/20/2010 | new function | dividetrimesh.m | divide triangles in a mesh | splits each side of the triangle, thus quadrupling the number of triangles (and almost vertices) | | 07/12/2010 | new function | flexplot.m | flexible plotting | **ALPHA** stage | | 07/09/2010 | enhancement | MDM::ComputeGLM | the function now reads a pre-existing GLM and updates/add subjects as requested | this allows to re-run an RFX-MDM with new subjects without the need to re-run all subjects, especially useful for robust regression! | | 07/08/2010 | new function | vtcregressout.m | convenience function that reads multiple RTC/SDM files and saves the resulting VTC | | | 07/08/2010 | new xff method | VTC::RegressOut | regressing out of nuisance regressors from a VTC | | | 07/08/2010 | new xff method | VTC::MeanSRFTimeCourse | extract the mean time course of a surface from a VTC | this is usefule e.g. for regressing out a global gray-matter time course | | 07/07/2010 | bug fix | spm5_preprojobs.m | skipping with 4D NII files now does the right thing! | before, volumes were removed but then, the same number of volumes was additionally skipped... | | 07/07/2010 | enhancement | showspmrparams.m | the default colors are now as in SPM's display | | | 07/06/2010 | new xff method | AFT::Info | getting additional information on objects (for now only PRT, but will be extended) | this is useful for regularly occurring tasks, such as getting an idea of the distribution of onsets in a PRT across conditions, etc. | | 07/06/2010 | enhancement | SDM::AddFilters | now supports to add filters only to "part of" an SDM (in time) | useful when the underlying PRT represents several sessions (e.g. after concatenation; potentially better for robust regression on the first level to have an improved initial regression outcome which then determines the outliers!) | | 07/06/2010 | enhancement | MDM::ComputeGLM | the method now supports orthogonalization of the nuisance regressors (also with the filter) | same option added also to MDM::ComputeVOIGLM | | 07/06/2010 | bug fix (xff code) | PRT::Concatenate | the TR was not correctly taken into account | the bug was relevant when the resolution of time was set to ''msec'' | | 07/05/2010 | new GUI functions | ne_mdm_*.m | a first working version of the MDM -> GLM computation has been added | currently this is only without options -> next snapshot! | | 07/05/2010 | enhancement | MDM::ComputeGLM | now also the derivatives of the motion parameters can be added to the model (as confounds) | | | 07/05/2010 | enhancement | findfiles.m | the use of '?' as single-character wildcard is now supported | MATLAB's internal ''dir'' function does not support the '?' wildcard on all (any?) systems, this is now supported | | 07/05/2010 | bug fix | rbalign.m | if the second argument wasn't double, an error occurred | fixed | | 07/05/2010 | new xff method | MDM::ComputeVOIGLM | perform GLM regression (OLS or robust) on time courses extracted from VOIs | internally calls mdm.VOITimeCourses | | 07/05/2010 | new xff method | GLM::GenerateMDM | for a given RFX GLM file/object, an MDM can now be (re-) generated | useful to re-run a model without having the MDM file at hand | | 07/05/2010 | bug fix (format) | GLM.bff | when only the header was to be loaded, a syntax error would occur | fixed | | 07/05/2010 | bug fix (format) | HDR.bff | better support for Analyze DataTypes | datatypes for uint16 and uint32 were only supported for the old enumerator, now the new values (512, 768) are supported | | 07/05/2010 | new xff method | VTC::Write4DNifti | saves the content of a VTC as a four-dimensional NIftI file | | | 07/05/2010 | new xff method | MDM::VOITimeCourses | extract time courses of VOIs from all linked VTCs of an MDM | | | 07/04/2010 | new xff method | MDM::Subjects | returns the subject IDs of functional files in an MDM | the list is either unique (in the order of first subject appearance) or represents the ID of the functional file (via argument to the method) | | 06/29/2010 | enhancement | GLM::RFX_rMap | better automatic naming of maps; allows to add several covariates into one model | | | 06/28/2010 | new xff methods | MAT::* | added NTT object methods to MAT object (for compatibility) | | | 06/28/2010 | new figure (TFG) | neuroelf_physio.tfg | GUI-based configuration of physio data processing | **very early stage** | | 06/28/2010 | enhancement | heartbeats.m | error handling has been improved and additional pre-calculations have been added | | | 06/28/2010 | enhancement | fmriqasheet.m | added a second parameter to set the outlier detection threshold from the different criteria | | | 06/25/2010 | enhancement | MDM::ComputeGLM | mdm.ComputeGLM now passes all options transparently to PRT::CreateSDM (e.g. HRF shape, etc.) | | | 06/24/2010 | filename change | ''obj.mat'' -> ''obj.rtv'' | the file storing the RunTimeVars content has been renamed to ''XFF_OBJECT.rtv'' | this was done to cope with the fact that MAT files can now be loaded and saved as [[xff]] objects | | 06/24/2010 | new xff format | MAT.bff | load MAT files into an xff object | some minor changes in bffio.m and xff.m have been made to cope with this new format | | 06/24/2010 | new function | writemat.m | write a MAT file with specific variable names/content | | | 06/24/2010 | new function | fieldsize.m | returns the size (in bytes) of one or several fields of a struct | | | 06/24/2010 | name correction | MAP.bff | renamed ''NameOfSSMFile'' to ''NameOfSDMFile'' | the field name for the design matrix file was wrongly named | | 06/24/2010 | bug fix (format) | PRT.tff | when ''FileVersion'' was set to ''3'' and ''ParametricWeights'' to ''0'', conditions were **not** read at all | while this is compliant with BrainVoyager's way to write PRT files, it doesn't make sense to prohibit this combination of values | | 06/23/2010 | enhancement | MAP::CreateVMP | now, also lanczos3 is supported as interpolation (for really high-quality/no-smoothing interpolation) | | | 06/23/2010 | bug fix | spmshowrparams.m | when trying to read from 3D volumes in multiple runs the function would produce an error | fixed some internal counting variable (being set to 0 incorrectly between runs | | 06/22/2010 | bug fix (xff code) | VMR::ApplyTRF | the difference in coordinate system origin was not taken into account | see vmrspmcoreg, the fixed version was tested against BrainVoyager QX v2.1.2 yielding identical results using lanczos3 interpolation method when compared to BV's sinc interpolation | | 06/22/2010 | bug fix | vmrspmcoreg.m | the difference in coordinate system origin was not taken into account | BrainVoyager applies rotations (in VMR space) around TAL coordinate [0.5, 0.5, 0.5] (to account for the fact that datasets usually have even-numbered dimensions, e.g. 256-by-256-by-256 for VMRs) | | 06/21/2010 | bug fix | custom_pwelch.m | corrected a bug that could lead to missing a window when sliding | | | 06/20/2010 | added option | ACQ/NTT::SampleData | another input argument, ''ui'', was added to specify a method of up-sampling interpolation | instead of the default (cubic spline), the user can now also use linear and nearest neighbor interpolation for display | | 06/20/2010 | enhancement (MEX) | flexinterpn.c | added support for variable kernel windows per dimension | this allows both a 4D data block to be smoothed in only three of four dimension and also to correctly apply a temporal filtering kernel in only one of several data dimensions | | 06/20/2010 | feature request | plotcurves.m | added support for "find peak-in-window keyboard shortcut" | | | 06/20/2010 | enhancement | resampleaa.m | altered the cubic+smoothing window to be of proper width, adaptive gaussian window size | larger gaussian windows are now no longer resampled to 4096 samples per kernel bin, which allows to downsample a large set of data (e.g. 20 minutes of recording) for display in very little time | | 06/19/2010 | enhancement | prefilter.m | added post-filtering step and improved argument syntax | all lengths, etc. are now given in the time domain (not in samples) | | 06/19/2010 | overhaul rework | plotcurves.m/.tfg | added features: zooming, spot moving, variable access, filtering, etc. | major work on this function; please update to SNAPSHOT if you need it! | | 06/18/2010 | bug fix (MEX) | flexinterpn.c | the kernelsize was restricted to 127 (datatype signed char) | while this is enough for any standard interpolation, when the function is used to smooth/resample with large kernel sizes > 127 elements, it would return zeros; the datatype used now is signed short allowing kernel sizes of up to 32767 (should be enough for any resampling scale!) | | 06/18/2010 | new xff method | NTT:Resample | mimicking ACQ::Resample | | | 06/18/2010 | new xff method | NTT:Filter | mimicking ACQ::Filter | | | 06/18/2010 | new xff method | NTT:ChannelData | mimicking ACQ::ChannelData | | | 06/18/2010 | bug fix (xff code) | AFT:ReloadFromDisk | for objects that need their file format known (generic extension), the file format (primary extension) is now passed to xff on reload | this fixes the problem with reloading generic NTT (and some other) data files | | 06/17/2010 | GUI improvements | plotcurves.tfg | resizing dialog, adding variable labels/edit fields and overview axes object | | | 06/17/2010 | new xff method | ACQ::Filter | passing ACQ channel data over to prefilter | | | 06/17/2010 | new xff method | ACQ::Resample | passing ACQ data over to resampleaa | | | 06/17/2010 | new xff method | ACQ::ChannelData | returns channel data from either Channel(C).Data or RawData(C, :) | correctly takes Scaling into account; stores Result in Channel(C).Data if necessary | | 06/17/2010 | new function | prefilter.m | pre-filters a physiological measurement channel/data | using the first and second discreet derivative to find spiky areas and remove those | | 06/17/2010 | new function | resampleaa.m | resampling with anti-aliasing filter | uses flexinterpn_method, flexinterpn and smoothkern | | 06/17/2010 | bug fix | fmriquality.m | if no progress bar object was created, the motion detection would produce an error | the error is caused by a missing variable from an if/else/end statement earlier | | 06/17/2010 | enhancement | fmriqasheet.m | the output of the non-motion-parameters call/struct has been improved to use the entire figure space | | | 06/17/2010 | bug fix | acsvread.m | now over-long rows don't produce an error for struct output | | | 06/16/2010 | renaming | windsorize.m -> winsorize.m | corrected the name of the function to conform with the actual procedure name | the person whom this is named after is [[http://en.wikipedia.org/wiki/Winsorizing|Charles P. Winsor]] | | 06/16/2010 | correction (xff code) | PRT::CreateSDM | the PRT::CreateSDM method showed optional parameters ''.regi'' and ''.regni'' in the help, but those were never actually processed | while adding regressors of (no) interest to an existing SDM is simple, it might yet be good to have this option working for scripting purposes; bug/missing feature found by Fraser Smith | | 06/15/2010 | bug fix (xff code) | GLM::RemoveSubject | group subject indices are now correctly patched | prior to the bug, the subject indices in the configured groups in ''.RunTimeVars'' were not updated correctly | ==== Release v0.9a (05/17/2010 through 06/15/2010) ==== ^ Date of change ^ Type of change ^ Changed Object ^ Description ^ Comments ^ | 06/15/2010 | enhancement (code)| neuroelf_gui.m | improvement to accept column names for covariates in a ''.mat'' files | a covariate ''.mat'' file can now contain two variables, a table and a list of column names (cell array) | | 06/15/2010 | bug fix (xff code) | GLM::RFX_rMap | the function now correctly accepts a subject selection from the contrast manager UI | | | 06/14/2010 | enhancement (code) | heartbeats.m | added two more options, plotfreq and skewdt | allowing to set the samples/second for the final plot and also the factor to compute the detection threshold from the skew value | | 06/11/2010 | new MEX function | normcdfc.c/.m | normal cumulative distribution function | | | 06/11/2010 | bug fix (code) | spmmat2sdm.m | multiple sessions are now correctly supported | in case of multiple sessions (very often the case), the row and column indices from which the SDMMatrix was extracted from the xX.X field in the SPM.mat structure were wrong; this has been fixed. Additionally, the names of multiple sessions now correctly uses an underscore instead of a hyphen character to separate subject ID from session number (this has also been changed in spmmat2prt for having equal output names) | | 06/10/2010 | renaming | bfastica.m -> ne_fastica.m | the function bfastica was renamed to ne_fastica | this change was done to reflect the toolbox name | | 06/10/2010 | bug fix (xff code) | GLM::RFX_tMap | the subsel field (which was used by the neuroelf_gui) was not supported by this method; this is now fixed | | | 06/10/2010 | bug fix (xff code) | PRT::CreateSDM | added full support for real event-related designs (stimulus length = 0) | prior to this, such events were discarded instead of modeled; for those events, a default length (default value 100ms) can be given as a new option | | 05/31/2010 | new GUI feature | neuroelf_gui.m | added the requested "echo mode" (important calls to functions and methods are printed in the Matlab prompt as templates for creating scripts | per request of Nick Ketz | | 05/31/2010 | new GUI menu item | neuroelf_gui.m/.tfg | added a menu item that requests user options and then calls ''vmp.CreateMSK'' if the currently selected stats object is a VMP with at least one selected map | per request of Ethan Kross | | 05/31/2010 | new xff method | VMP::CreateMSK | ability to create a BrainVoyager QX compatible MSK object from a (sub-) selection of maps in a VMP | per request of Ethan Kross | | 05/30/2010 | extension (code) | @*/any2ascii | any2ascii support added for transimg, xff, and xfigure | this allows to use the general any2ascii routine with variables (structs) that have one of those object types embedded | | 05/30/2010 | enhancement (code) | tffio.m | implementation of u8str2double into tffio | reading of large text tables (SDM, FBR) should be much faster, given that tffio now uses u8str2double instead of eval | | 05/30/2010 | extension (MEX) | u8str2double.m | the function now accepts two additional parameters (both must be given or none), number of rows and number of columns, which also skips the first pass to detect the number of both; in this case, the function also returns how many characters remain at the end of input stream; also the function now supports input of char arrays | changes made for compatibility with tff input and eval, slight decrease in speed (more checks, etc.) but still faster than eval for larger tables | | 05/28/2010 | new file format | NTT.bff | this format is used to read in large text-based files | uses the new u8str2double MEX function, supports variable header lines (up to 16384 bytes) at the beginning of file, information stored in ''.Header'' struct; necessary addition to xff.m: format can be forced for files with generic extension as second argument: ''obj = xff(filename, format);'' | | 05/28/2010 | new MEX function | u8str2double.c/.m | this function parses a large text-based table (stored in a uint8 variable!) | about 8 times faster than Matlab's internal function (used by textread), support for "short rows" (values set to NaN), useful if last row is incomplete | | 05/28/2010 | GUI figure + code | heartbeats_cleanup.tfg | the UI for the cleanup of heartbeats now has several additional features: buttons for previous window, remove all feature (for noisy data), small overview time-course plot with noise estimate and quick-jump function | | | 05/28/2010 | bug fix (method) | VTC::ICA | prior to the fix, the number of MapParameters was incorrectly set to the number of components | | | 05/27/2010 | bug fix (function) | tcplot.m | corrected the use of one of Matlab's internal graphics handle settings | | | 05/27/2010 | new function | heartbeats.m | detect the heartbeats (and heart-rate) from an ECG channel data stream | includes own UI to manually correct flaws | | 05/25/2010 | new feature | VTC::CrossCorrelate | now supports the ''.lag'' flag in options, useful when the auto-correlation of a VTC is to be computed | simply use a call such as ''vmp = vtc.CrossCorrelate(vtc, struct('lag', 1));'' | | 05/24/2010 | new file format | NLF.bff | NeuroElf's own file format to store a variety of objects (voxel data, surfaces, stats, experimental design, etc.) | this is still **very** preliminary and not yet functional! already applied changes to AFT::BoundingBox, aft::ConvertToNLF, AFT::GetVolume, AFT::GetVolumeSize, AFT::IntensityMask, AFT::SampleBVBox, AFT::SampleData3D, AFT::SampleTalBox, AFT::SetOrientation, AFT::SliceData3D, AFT::SliceToTransimg; also added NLF::CoordinateFrame | | 05/24/2010 | new function | showspmrparams.m | visualizes the realignment parameters as detected by SPM's preprocessing | reads either the quaternion transformations from the volumes that were motion-estimated (usually aVOLUMENAME.hdr/nii), but also supports using the information from the rp_VOLUME.txt files (which does not contain the motion between but only across runs, however!) | | 05/24/2010 | internal rename | neuroelf_gui.m | internally renamed all functions from bt_NAME to ne_NAME | simply for consistency | | 05/22/2010 | new function | vmrspmcoreg.m | create a BrainVoyager-compatible TRF file to apply the coregistration transformation between two VMRs | per request of Jan Willem Koten and Hannes Schwenke, new file: _files/spm/spm5_coreg.mat | | 05/21/2010 | new feature | SRF::AddMarkers | the method now also supports unit-cubes as shapes | new file: _files/srf/unitcube.srf | | 05/21/2010 | extension | smoothkern.m | limitation for kernel sizes increased | necessary to generate larger 1-D kernels | | 05/21/2010 | new file format | ACQ.bff | added support for ACQ (Acqknowledge) files up to version 3.9.7 | documentation used available from [[http://www.biopac.com/Manuals/app_pdf/app156.pdf|BioPac.com]] | | 05/21/2010 | bug fix (method) | PLP::PlotOnSurface | better support for user-specified SRF objects | before, the provided colin_LH and colin_RH objects were still displayed | | 05/21/2010 | bug fix (method) | PLP::PlotOnSlice | corrected the lookup of axes object and children | was necessary after switching the default in xfigure to hide children from findobj | | 05/20/2010 | new feature | @transio/any2ascii.m | any2ascii is overloaded for transio, so that objects can be stored in ASCII representation | | | 05/20/2010 | new xff method | XFF::ClearObjects | the xff (root) object can now clear objects specified by a filename pattern | | | 05/20/2010 | GUI feature (code)| neuroelf_gui.m | button and code added that allows to jump to the nearest peak (first) voxel | the list of voxels to consider is taken from the list of VOIs, not the current statistical map! | | 05/20/2010 | GUI layout (icon) | trash.tif | added a red X to the trashcan icon | suggestion by Hedy Kober to make the icon more distinguishable | | 05/20/2010 | GUI layout (figure)| neuroelfbasic.tfg | added the //split local maxima// option as checkbox to the GUI | change required layout rearrangement | | 05/20/2010 | feature addition | findfirst.m | added the non-MEX code, so that findfirst works (even if slower) also when the compiled file does not exist | | | 05/20/2010 | bug fix | renamefile.m | changed the internally used mechanism to rename files (for Windows) | on Windows 7 machines, the usage of the shell based rename command is problematic (only works if the folder is not overloaded in a user's virtual storage | | 05/18/2010 | bug fix | tempfilter.m | nuisance regressors are now better checked for validity | (before it could happen that badly prepared nuisance regressors would invalidate the filtering) | | 05/18/2010 | new xff method | SDM::ShowDesign | SDM::ShowDesign visualizes the design matrix of a single session in one of three ways: a) gray scale image (with time running from top to bottom and regressors from left to right; brighter spots being higher values; this is the SPM-typical way to show a design matrix), b) orthogonality information (demonstrating the high-dimensional angle between regressor (white: completely orthogonal, black: completely collinear), c) as time-course plots (time running from left to right; regressors ordered top to bottom; incl. a legend) | added option to MDM::ComputeGLM to show each design matrix while the GLM is computed | | 05/17/2010 | feature addition | flexinterpn_method.m | added the capability to apply a rotation to a two-dimensional matrix (before only possible with 3D data), the rotation parameters must still be working on the 2nd and 3rd dimension; internally, the input will simply be dim-shifted | | | 05/17/2010 | feature addition | initialalignment.m | added the capability to work on two VMRs (instead of VMR and FMR), allowing to run the function to estimate the initial alignment (IA) file between two VMRs | |