diff --git a/CHANGES b/CHANGES index 27c7ae31b7..5c927ac77c 100644 --- a/CHANGES +++ b/CHANGES @@ -1,6 +1,7 @@ Next release ============ +* ENH: Add nipype_crash_search command (https://github.com/nipy/nipype/pull/1422) * ENH: Created interface for BrainSuite Cortical Surface Extraction command line tools (https://github.com/nipy/nipype/pull/1305) * FIX: job execution on systems/approaches where locale is undefined (https://github.com/nipy/nipype/pull/1401) * FIX: Clean up byte/unicode issues using subprocess (https://github.com/nipy/nipype/pull/1394) diff --git a/CHANGES.orig b/CHANGES.orig deleted file mode 100644 index b7a849dd7e..0000000000 --- a/CHANGES.orig +++ /dev/null @@ -1,538 +0,0 @@ -Next release -============ - -* FIX: job execution on systems/approaches where locale is undefined (https://github.com/nipy/nipype/pull/1401) -* FIX: Clean up byte/unicode issues using subprocess (https://github.com/nipy/nipype/pull/1394) -* FIX: Prevent crash when tvtk is loaded - ETS_TOOLKIT=null (https://github.com/nipy/nipype/pull/973) -* ENH: New interfaces in dipy: RESTORE, EstimateResponseSH, CSD and StreamlineTractography - (https://github.com/nipy/nipype/pull/1090) -* ENH: Added interfaces of AFNI (https://github.com/nipy/nipype/pull/1360, - https://github.com/nipy/nipype/pull/1361, https://github.com/nipy/nipype/pull/1382) -* ENH: Provides a Nipype wrapper for antsJointFusion (https://github.com/nipy/nipype/pull/1351) -* ENH: Added support for PETPVC (https://github.com/nipy/nipype/pull/1335) -* ENH: Merge S3DataSink into DataSink, added AWS documentation (https://github.com/nipy/nipype/pull/1316) -* TST: Cache APT in CircleCI (https://github.com/nipy/nipype/pull/1333) -* ENH: Add new flags to the BRAINSABC for new features (https://github.com/nipy/nipype/pull/1322) -* ENH: Provides a Nipype wrapper for ANTs DenoiseImage (https://github.com/nipy/nipype/pull/1291) -* FIX: Minor bugfix logging hash differences (https://github.com/nipy/nipype/pull/1298) -* FIX: Use released Prov python library (https://github.com/nipy/nipype/pull/1279) -* ENH: Support for Python 3 (https://github.com/nipy/nipype/pull/1221) -* FIX: VTK version check missing when using tvtk (https://github.com/nipy/nipype/pull/1219) -* ENH: Added an OAR scheduler plugin (https://github.com/nipy/nipype/pull/1259) -* ENH: New ANTs interface: antsBrainExtraction (https://github.com/nipy/nipype/pull/1231) -* API: Default model level for the bedpostx workflow has been set to "2" following FSL 5.0.9 lead -* ENH: New interfaces for interacting with AWS S3: S3DataSink and S3DataGrabber (https://github.com/nipy/nipype/pull/1201) -* ENH: Interfaces for MINC tools (https://github.com/nipy/nipype/pull/1304) -* FIX: Use realpath to determine hard link source (https://github.com/nipy/nipype/pull/1388) -* FIX: Correct linking/copying fallback behavior (https://github.com/nipy/nipype/pull/1391) -* ENH: Nipype workflow and interfaces for FreeSurfer's recon-all (https://github.com/nipy/nipype/pull/1326) -======= - -Release 0.11.0 (September 15, 2015) -============ - -* API: Change how hash values are computed (https://github.com/nipy/nipype/pull/1174) -* ENH: New algorithm: mesh.WarpPoints applies displacements fields to point sets - (https://github.com/nipy/nipype/pull/889). -* ENH: New interfaces for MRTrix3 (https://github.com/nipy/nipype/pull/1126) -* ENH: New option in afni.3dRefit - zdel, ydel, zdel etc. (https://github.com/nipy/nipype/pull/1079) -* FIX: ants.Registration composite transform outputs are no longer returned as lists (https://github.com/nipy/nipype/pull/1183) -* BUG: ANTs Registration interface failed with multi-modal inputs - (https://github.com/nipy/nipype/pull/1176) (https://github.com/nipy/nipype/issues/1175) -* ENH: dipy.TrackDensityMap interface now accepts a reference image (https://github.com/nipy/nipype/pull/1091) -* FIX: Bug in XFibres5 (https://github.com/nipy/nipype/pull/1168) -* ENH: Attempt to use hard links for data sink. - (https://github.com/nipy/nipype/pull/1161) -* FIX: Updates to SGE Plugins - (https://github.com/nipy/nipype/pull/1129) -* ENH: Add ants JointFusion() node with testing - (https://github.com/nipy/nipype/pull/1160) -* ENH: Add --float option for antsRegistration calls - (https://github.com/nipy/nipype/pull/1159) -* ENH: Added interface to simulate DWIs using the multi-tensor model - (https://github.com/nipy/nipype/pull/1085) -* ENH: New interface for FSL fslcpgeom utility (https://github.com/nipy/nipype/pull/1152) -* ENH: Added SLURMGraph plugin for submitting jobs to SLURM with dependencies (https://github.com/nipy/nipype/pull/1136) -* FIX: Enable absolute path definitions in DCMStack (https://github.com/nipy/nipype/pull/1089, - replaced by https://github.com/nipy/nipype/pull/1093) -* ENH: New mesh.MeshWarpMaths to operate on surface-defined warpings - (https://github.com/nipy/nipype/pull/1016) -* FIX: Refactor P2PDistance, change name to ComputeMeshWarp, add regression tests, - fix bug in area weighted distance, and added optimizations - (https://github.com/nipy/nipype/pull/1016) -* ENH: Add an option not to resubmit Nodes that finished running when using SGEGraph (https://github.com/nipy/nipype/pull/1002) -* FIX: FUGUE is now properly listing outputs. (https://github.com/nipy/nipype/pull/978) -* ENH: Improved FieldMap-Based (FMB) workflow for correction of susceptibility distortions in EPI seqs. - (https://github.com/nipy/nipype/pull/1019) -* FIX: In the FSLXcommand _list_outputs function fixed for loop range (https://github.com/nipy/nipype/pull/1071) -* ENH: Dropped support for now 7 years old Python 2.6 (https://github.com/nipy/nipype/pull/1069) -* FIX: terminal_output is not mandatory anymore (https://github.com/nipy/nipype/pull/1070) -* ENH: Added "nipype_cmd" tool for running interfaces from the command line (https://github.com/nipy/nipype/pull/795) -* FIX: Fixed Camino output naming (https://github.com/nipy/nipype/pull/1061) -* ENH: Add the average distance to ErrorMap (https://github.com/nipy/nipype/pull/1039) -* ENH: Inputs with name_source can be now chained in cascade (https://github.com/nipy/nipype/pull/938) -* ENH: Improve JSON interfaces: default settings when reading and consistent output creation - when writing (https://github.com/nipy/nipype/pull/1047) -* FIX: AddCSVRow problems when using infields (https://github.com/nipy/nipype/pull/1028) -* FIX: Removed unused ANTS registration flag (https://github.com/nipy/nipype/pull/999) -* FIX: Amend create_tbss_non_fa() workflow to match FSL's tbss_non_fa command. (https://github.com/nipy/nipype/pull/1033) -* FIX: remove unused mandatory flag from spm normalize (https://github.com/nipy/nipype/pull/1048) -* ENH: Update ANTSCorticalThickness interface (https://github.com/nipy/nipype/pull/1013) -* FIX: Edge case with sparsemodels and PEP8 cleanup (https://github.com/nipy/nipype/pull/1046) -* ENH: New io interfaces for JSON files reading/writing (https://github.com/nipy/nipype/pull/1020) -* ENH: Enhanced openfmri script to support freesurfer linkage (https://github.com/nipy/nipype/pull/1037) -* BUG: matplotlib is supposed to be optional (https://github.com/nipy/nipype/pull/1003) -* FIX: Fix split_filename behaviour when path has no file component (https://github.com/nipy/nipype/pull/1035) -* ENH: Updated FSL dtifit to include option for grad non-linearities (https://github.com/nipy/nipype/pull/1032) -* ENH: Updated Camino tracking interfaces, which can now use FSL bedpostx output. - New options also include choice of tracker, interpolator, stepsize and - curveinterval for angle threshold (https://github.com/nipy/nipype/pull/1029) -* FIX: Interfaces redirecting X crashed if $DISPLAY not defined (https://github.com/nipy/nipype/pull/1027) -* FIX: Bug crashed 'make api' (https://github.com/nipy/nipype/pull/1026) -* ENH: Updated antsIntroduction to handle RA and RI registrations (https://github.com/nipy/nipype/pull/1009) -* ENH: Updated N4BiasCorrection input spec to include weight image and spline order. Made - argument formatting consistent. Cleaned ants.segmentation according to PEP8. - (https://github.com/nipy/nipype/pull/990/files) -* ENH: SPM12 Normalize interface (https://github.com/nipy/nipype/pull/986) -* FIX: Utility interface test dir (https://github.com/nipy/nipype/pull/986) -* FIX: IPython engine directory reset after crash (https://github.com/nipy/nipype/pull/987) -* ENH: Resting state fMRI example with NiPy realignment and no SPM (https://github.com/nipy/nipype/pull/992) -* FIX: Corrected Freesurfer SegStats _list_outputs to avoid error if summary_file is - undefined (issue #994)(https://https://github.com/nipy/nipype/pull/996) -* FIX: OpenfMRI support and FSL 5.0.7 changes (https://github.com/nipy/nipype/pull/1006) -* FIX: Output prefix in SPM Normalize with modulation (https://github.com/nipy/nipype/pull/1023) -* ENH: Usability improvements in cluster environments (https://github.com/nipy/nipype/pull/1025) -* ENH: ANTs JointFusion() (https://github.com/nipy/nipype/pull/1042) -* ENH: Added csvReader() utility (https://github.com/nipy/nipype/pull/1044) -* FIX: typo in nipype.interfaces.freesurfer.utils.py Tkregister2 (https://github.com/nipy/nipype/pull/1083) -* FIX: SSHDataGrabber outputs now return full path to the grabbed/downloaded files. (https://github.com/nipy/nipype/pull/1086) -* FIX: Add QA output for TSNR to resting workflow (https://github.com/nipy/nipype/pull/1088) -* FIX: Change N4BiasFieldCorrection to use short tag for dimensionality (backward compatible) (https://github.com/nipy/nipype/pull/1096) -* ENH: Added -newgrid input to Warp in AFNI (3dWarp wrapper) (https://github.com/nipy/nipype/pull/1128) -* FIX: Fixed AFNI Copy interface to use positional inputs as required (https://github.com/nipy/nipype/pull/1131) -* ENH: Added a check in Dcm2nii to check if nipype created the config.ini file and remove if true (https://github.com/nipy/nipype/pull/1132) -* ENH: Use a while loop to wait for Xvfb (up to a max wait time "xvfb_max_wait" in config file, default 10) - (https://github.com/nipy/nipype/pull/1142) - -Release 0.10.0 (October 10, 2014) -============ - -* ENH: New miscelaneous interfaces: SplitROIs (mapper), MergeROIs (reducer) - to enable parallel processing of very large images. -* ENH: Updated FSL interfaces: BEDPOSTX and XFibres, former interfaces are still - available with the version suffix: BEDPOSTX4 and XFibres4. Added gpu - versions of BEDPOSTX: BEDPOSTXGPU, BEDPOSTX5GPU, and BEDPOSTX4GPU -* ENH: Added experimental support for MIPAV algorithms thorugh JIST plugins -* ENH: New dipy interfaces: Denoise, Resample -* ENH: New Freesurfer interfaces: Tkregister2 (for conversion of fsl style matrices to freesurfer format), MRIPretess -* ENH: New FSL interfaces: WarpPoints, WarpPointsToStd, EpiReg, ProbTrackX2, WarpUtils, ConvertWarp -* ENH: New miscelaneous interfaces: AddCSVRow, NormalizeProbabilityMapSet, AddNoise -* ENH: New AFNI interfaces: Eval, Means, SVMTest, SVMTrain -* ENH: FUGUE interface has been refactored to use the name_template system, 3 examples - added to doctests, some bugs solved. -* API: Interfaces to external packages are no longer available in the top-level - ``nipype`` namespace, and must be imported directly (e.g. - ``from nipype.interfaces import fsl``). -* ENH: Support for elastix via a set of new interfaces: Registration, ApplyWarp, - AnalyzeWarp, PointsWarp, and EditTransform -* ENH: New ANTs interface: ApplyTransformsToPoints, LaplacianThickness -* ENH: New Diffusion Toolkit interface: TrackMerge -* ENH: New MRtrix interface: FilterTracks -* ENH: New metrics group in algorithms. Now Distance, Overlap, and FuzzyOverlap - are found in nipype.algorithms.metrics instead of misc. Overlap interface - extended to allow files containing multiple ROIs and volume physical units. -* ENH: New interface in algorithms.metrics: ErrorMap (a voxel-wise diff map). -* ENH: New FreeSurfer workflow: create_skullstripped_recon_flow() -* ENH: Deep revision of workflows for correction of dMRI artifacts. New dmri_preprocessing - example. -* ENH: New data grabbing interface that works over SSH connections, SSHDataGrabber -* ENH: New color mode for write_graph -* ENH: You can now force MapNodes to be run serially -* ENH: Added ANTS based openfmri workflow -* ENH: MapNode now supports flattening of nested lists -* ENH: Support for headless mode using Xvfb -* ENH: nipype_display_crash has a debugging mode -* FIX: MRTrix tracking algorithms were ignoring mask parameters. -* FIX: FNIRT registration pathway and associated OpenFMRI example script -* FIX: spm12b compatibility for Model estimate -* FIX: Batch scheduler controls the number of maximum jobs properly -* FIX: Update for FSL 5.0.7 which deprecated Contrast Manager - -Release 0.9.2 (January 31, 2014) -============ - -* FIX: DataFinder was broken due to a typo -* FIX: Order of DataFinder outputs was not guaranteed, it's human sorted now -* ENH: New interfaces: Vnifti2Image, VtoMat - -Release 0.9.1 (December 25, 2013) -============ - -* FIX: installation issues - -Release 0.9.0 (December 20, 2013) -============ - -* ENH: SelectFiles: a streamlined version of DataGrabber -* ENH: new tools for defining workflows: JoinNode, synchronize and itersource -* ENH: W3C PROV support with optional RDF export built into Nipype -* ENH: Added support for Simple Linux Utility Resource Management (SLURM) -* ENH: AFNI interfaces refactor, prefix, suffix are replaced by - "flexible_%s_templates" -* ENH: New SPM interfaces: - - spm.ResliceToReference, - - spm.DicomImport -* ENH: New AFNI interfaces: - - afni.AFNItoNIFTI - - afni.TCorr1D -* ENH: Several new interfaces related to Camino were added: - - camino.SFPICOCalibData - - camino.Conmat - - camino.QBallMX - - camino.LinRecon - - camino.SFPeaks - One outdated interface no longer part of Camino was removed: - - camino.Conmap -* ENH: Three new mrtrix interfaces were added: - - mrtrix.GenerateDirections - - mrtrix.FindShPeaks - - mrtrix.Directions2Amplitude -* ENH: New FSL interfaces: - - fsl.PrepareFieldmap - - fsl.TOPUP - - fsl.ApplyTOPUP - - fsl.Eddy -* ENH: New misc interfaces: - - FuzzyOverlap, - - P2PDistance -* ENH: New workflows: nipype.workflows.dmri.fsl.epi.[fieldmap_correction&topup_correction] -* ENH: Added simplified outputname generation for command line interfaces. -* ENH: Allow ants use a single mask image -* ENH: Create configuration option for parameterizing directories with hashes -* ENH: arrange nodes by topological sort with disconnected subgraphs -* ENH: uses the nidm iri namespace for uuids -* ENH: remove old reporting webpage -* ENH: Added support for Vagrant - -* API: 'name' is now a positional argument for Workflow, Node, and MapNode constructors -* API: SPM now defaults to SPM8 or SPM12b job format -* API: DataGrabber and SelectFiles use human (or natural) sort now - -* FIX: Several fixes related to Camino interfaces: - - ProcStreamlines would ignore many arguments silently (target, waypoint, exclusion ROIS, etc.) - - DTLUTGen would silently round the "step", "snr" and "trace" parameters to integers - - PicoPDFs would not accept more than one lookup table - - PicoPDFs default pdf did not correspond to Camino default - - Track input model names were outdated (and would generate an error) - - Track numpds parameter could not be set for deterministic tractography - - FA created output files with erroneous extension -* FIX: Deals properly with 3d files in SPM Realign -* FIX: SPM with MCR fixed -* FIX: Cleaned up input and output spec metadata -* FIX: example openfmri script now makes the contrast spec a hashed input -* FIX: FILMGLS compatibility with FSL 5.0.5 -* FIX: Freesurfer recon-all resume now avoids setting inputs -* FIX: File removal from node respects file associations img/hdr/mat, BRIK/HEAD - -Release 0.8.0 (May 8, 2013) -=========================== - -* ENH: New interfaces: nipy.Trim, fsl.GLM, fsl.SigLoss, spm.VBMSegment, fsl.InvWarp, - dipy.TensorMode -* ENH: Allow control over terminal output for commandline interfaces -* ENH: Added preliminary support for generating Python code from Workflows. -* ENH: New workflows for dMRI and fMRI pre-processing: added motion artifact correction - with rotation of the B-matrix, and susceptibility correction for EPI imaging using - fieldmaps. Updated eddy_correct pipeline to support both dMRI and fMRI, and new parameters. -* ENH: Minor improvements to FSL's FUGUE and FLIRT interfaces -* ENH: Added optional dilation of parcels in cmtk.Parcellate -* ENH: Interpolation mode added to afni.Resample -* ENH: Function interface can accept a list of strings containing import statements - that allow external functions to run without their imports defined in the - function body -* ENH: Allow node configurations to override master configuration - -* FIX: SpecifyModel works with 3D files correctly now. - -Release 0.7.0 (Dec 18, 2012) -============================ - -* ENH: Add basic support for LSF plugin. -* ENH: New interfaces: ICC, Meshfix, ants.Register, C3dAffineTool, ants.JacobianDeterminant, - afni.AutoTcorrelate, DcmStack -* ENH: New workflows: ants template building (both using 'ANTS' and the new 'antsRegistration') -* ENH: New examples: how to use ANTS template building workflows (smri_ants_build_tmeplate), - how to set SGE specific options (smri_ants_build_template_new) -* ENH: added no_flatten option to Merge -* ENH: added versioning option and checking to traits -* ENH: added deprecation metadata to traits -* ENH: Slicer interfaces were updated to version 4.1 - -Release 0.6.0 (Jun 30, 2012) -============================ - -* API: display variable no longer encoded as inputs in commandline interfaces - -* ENH: input hash not modified when environment DISPLAY is changed -* ENH: support for 3d files for TSNR calculation -* ENH: Preliminary support for graph submission with SGE, PBS and Soma Workflow -* ENH: New interfaces: MySQLSink, nipy.Similarity, WatershedBEM, MRIsSmooth, - NetworkBasedStatistic, Atropos, N4BiasFieldCorrection, ApplyTransforms, - fs.MakeAverageSubject, epidewarp.fsl, WarpTimeSeriesImageMultiTransform, - AVScale, mri_ms_LDA -* ENH: simple interfaces for spm - -* FIX: CompCor component calculation was erroneous -* FIX: filename generation for AFNI and PRELUDE -* FIX: improved slicer module autogeneration -* FIX: added missing options for BBRegsiter -* FIX: functionality of remove_unnecessary_ouputs cleaned up -* FIX: local hash check works with appropriate inputs -* FIX: Captures all stdout from commandline programs -* FIX: Afni outputs should inherit from TraitedSpec - -Release 0.5.3 (Mar 23, 2012) -============================ - -* FIX: SPM model generation when output units is in scans - -Release 0.5.2 (Mar 14, 2012) -============================ - -* API: Node now allows specifying node level configuration for SGE/PBS clusters -* API: Logging to file is disabled by default -* API: New location of log file -> .nipype/nipype.cfg - -* ENH: Changing logging options via config works for distributed processing - -* FIX: Unittests on debian (logging and ipython) - -Release 0.5 (Mar 10, 2012) -========================== - -* API: FSL defaults to Nifti when OUTPUTTYPE environment variable not found -* API: By default inputs are removed from Node working directory -* API: InterfaceResult class is now versioned and stores class type not instance -* API: Added FIRST interface -* API: Added max_jobs paramter to plugin_args. limits the number of jobs - executing at any given point in time -* API: crashdump_dir is now a config execution option -* API: new config execution options for controlling hash checking, execution and - logging behavior when running in distributed mode. -* API: Node/MapNode has new attribute that allows it to run on master thread. -* API: IPython plugin now invokes IPython 0.11 or greater -* API: Canned workflows are now all under a different package structure -* API: SpecifyModel event_info renamed to event_files -* API: DataGrabber is always being rerun (unless overwrite is set to False on - Node level) -* API: "stop_on_first_rerun" does not stop for DataGrabber (unless overwrite is - set to True on Node level) -* API: Output prefix can be set for spm nodes (SliceTiming, Realign, Coregister, - Normalize, Smooth) - -* ENH: Added fsl resting state workflow based on behzadi 2007 CompCorr method. -* ENH: TSNR node produces mean and std-dev maps; allows polynomial detrending -* ENH: IdentityNodes are removed prior to execution -* ENH: Added Michael Notter's beginner's guide -* ENH: Added engine support for status callback functions -* ENH: SPM create warped node -* ENH: All underlying interfaces (including python ones) are now optional -* ENH: Added imperative programming option with Nodes and caching -* ENH: Added debug mode to configuration -* ENH: Results can be stored and loaded without traits exceptions -* ENH: Added concurrent log handler for distributed writing to log file -* ENH: Reporting can be turned off using config -* ENH: Added stats files to FreeSurferOutput -* ENH: Support for Condor through qsub emulation -* ENH: IdentityNode with iterable expansion takes place after remaining Identity - Node removal -* ENH: Crashfile display script added -* ENH: Added FmriRealign4d node wrapped from nipy -* ENH: Added TBSS workflows and examples -* ENH: Support for openfmri data processing -* ENH: Package version check - -* FIX: Fixed spm preproc workflow to cater to multiple functional runs -* FIX: Workflow outputs displays nodes with empty outputs -* FIX: SUSAN workflow works without usans -* FIX: SGE fixed for reading custom templates -* FIX: warping in SPM realign, Dartel and interpolation parameters -* FIX: Fixed voxel size parameter in freesurfer mri_convert -* FIX: 4D images in spm coregister -* FIX: Works around matlab tty bug -* FIX: Overwriting connection raises exception -* FIX: Outputs are loaded from results and not stored in memory for during - distributed operation -* FIX: SPM threshold uses SPM.mat name and improved error detection -* FIX: Removing directory contents works even when a node has no outputs -* FIX: DARTEL workflows will run only when SPM 8 is available -* FIX: SPM Normalize estimate field fixed -* FIX: hashmethod argument now used for calculating hash of old file -* FIX: Modelgen now allows FSL style event files - -Release 0.4.1 (Jun 16, 2011) -============================ - -* Minor bugfixes - -Release 0.4 (Jun 11, 2011) -========================== - -* API: Timestamp hashing does not use ctime anymore. Please update your hashes by - running workflows with updatehash=True option - NOTE: THIS IS THE DEFAULT CONFIG NOW, so unless you updatehash, workflows will - rerun -* API: Workflow run function no longer supports (inseries, createdirsonly). - Functions used in connect string must be pickleable -* API: SPM EstimateContrast: ignore_derivs replaced by use_derivs -* API: All interfaces: added new config option ignore_exception -* API: SpecifModel no longer supports (concatenate_runs, output_specs). high_pass_filter - cutoff is mandatory (even if its set to np.inf). Additional interfaces - SpecifySPMModel and SpecifySparseModel support other types of data. -* API: fsl.DTIFit input "save" is now called "save_tensor" -* API: All inputs of IdentityInterfaces are mandatory by default. You can turn - this off by specifying mandatory_inputs=False to the constructor. -* API: fsl FILMGLS input "autocorr_estimate" is now called "autocorr_estimate_only" -* API: fsl ContrastMgr now requires access to specific files (no longer accepts - the result directory) -* API: freesurfer.GLMFit input "surf" is now a boolean with three corresponding - inputs -- subject_id, hemi, and surf_geo - -* ENH: All commandline interfaces display stdout and stderr -* ENH: All interfaces raise exceptions on error with an option to suppress -* ENH: Supports a plugin interface for execution (current support for multiprocessing, - IPython, SGE, PBS) -* ENH: MapNode runs in parallel under IPython, SGE, MultiProc, PBS -* ENH: Optionally allows keeping only required outputs -* ENH: New interface: utility.Rename to change the name of files, optionally - using python string-formatting with inputs or regular expressions matching -* ENH: New interface: freesurfer.ApplyMask (mri_mask) -* ENH: New FSL interface -- SwapDimensions (fslswapdim) -* ENH: Sparse models allow regressor scaling and temporal derivatives -* ENH: Added support for the component parts of FSL's TBSS workflow (TBSSSkeleton - and DistanceMap) -* ENH: dcm2nii interface exposes bvals, bvecs, reoriented and cropped images -* ENH: Added several higher-level interfaces to the fslmaths command: - - ChangeDataType, Threshold, MeanImage, IsotropicSmooth, ApplyMask, TemporalFilter - DilateImage, ErodeImage, SpatialFilter, UnaryMaths, BinaryMaths, MultiImageMaths -* ENH: added support for networx 1.4 and improved iterable expansion -* ENH: Replaced BEDPOSTX and EddyCurrent with nipype pipelines -* ENH: Ability to create a hierarchical dot file -* ENH: Improved debugging information for rerunning nodes -* ENH: Added 'stop_on_first_rerun' option -* ENH: Added support for Camino -* ENH: Added support for Camino2Trackvis -* ENH: Added support for Connectome Viewer - -* BF: dcm2nii interface handles gzipped files correctly -* BF: FNIRT generates proper outputs -* BF: fsl.DTIFit now properly collects tensor volume -* BF: updatehash now removes old result hash file - -Release 0.3.4 (Jan 12, 2011) -============================ - -* API: hash values for float use a string conversion up to the 10th decimal place. -* API: Iterables in output path will always be generated as _var1_val1_var2_val2 pairs - -* ENH: Added support to nipy: GLM fit, contrast estimation and calculating mask from EPI -* ENH: Added support for manipulating surface files in Freesurfer: - - projecting volume images onto the surface - - smoothing along the surface - - transforming a surface image from one subject to another - - using tksurfer to save pictures of the surface -* ENH: Added support for flash processing using FreeSurfer -* ENH: Added support for flirt matrix in BBRegister -* ENH: Added support for FSL convert_xfm -* ENH: hashes can be updated again without rerunning all nodes. -* ENH: Added multiple regression design for FSL -* ENH: Added SPM based Analyze to Nifti converter -* ENH: Added increased support for PyXNAT -* ENH: Added support for MCR-based binary version of SPM -* ENH: Added SPM node for calculating various threshold statistics -* ENH: Added distance and dissimilarity measurements - -* BF: Diffusion toolkit gets installed -* BF: Changed FNIRT interface to accept flexible lists (rather than 4-tuples) - on all options specific to different subsampling levels - -Release 0.3.3 (Sep 16, 2010) -============================ - -* API: subject_id in ModelSpec is now deprecated -* API: spm.Threshold - - does not need mask, beta, RPV anymore - - takes only one image (stat_image - mind the name change) - - works with SPM2 SPM.mat - - returns additional map - pre topological FDR - -* ENH: Added support for Diffusion toolkit -* ENH: Added support for FSL slicer and overlay -* ENH: Added support for dcm2nii - -* BF: DataSink properly handles lists of lists now -* BF: DataGrabber has option for raising Exception on getting empty lists -* BF: Traits logic for 'requires' metadata -* BF: allows workflows to be relocatable -* BF: nested workflows with connections don't raise connection not found error -* BF: multiple workflows with identical nodenames and iterables do not create nestsed workflows - -Release 0.3.2 (Aug 03, 2010) -============================ - -Enhancements ------------- - - - all outputs from nodes are now pickled as part of workflow processing - - added git developer docs - -Bugs fixed ----------- - -* FreeSurfer - - - Fixed bugs in SegStats doctest - -Release 0.3.1 (Jul 29, 2010) -============================ - -Bugs fixed ----------- - -* FreeSurfer - - - Fixed bugs in glmfit and concatenate - - Added group t-test to freesurfer tutorial - -Release 0.3 (Jul 27, 2010) -========================== - -Incompatible changes --------------------- - -* Complete redesign of the Interface class - heavy use of Traits. - -* Changes in the engine API - added Workflow and MapNode. Compulsory name argument. - -Features added --------------- - -* General: - - - Type checking of inputs and outputs using Traits from ETS_. - - Support for nested workflows. - - Preliminary Slicer and AFNI support. - - New flexible DataGrabber node. - - AtlasPick and Threshold nodes. - - Preliminary support for XNAT. - - Doubled number of the tutorials. - -* FSL: - - - Added DTI processing nodes (note that TBSS nodes are still experimental). - - Recreated FEAT workflow. - -* SPM: - - - Added New Segment and many other nodes. - - Redesigned second level analysis. diff --git a/bin/nipype_crash_search b/bin/nipype_crash_search new file mode 100755 index 0000000000..068e5d600a --- /dev/null +++ b/bin/nipype_crash_search @@ -0,0 +1,76 @@ +#!/usr/bin/env python +"""Search for tracebacks inside a folder of nipype crash +log files that match a given regular expression. + +Examples: +nipype_crash_search -d nipype/wd/log -r '.*subject123.*' +""" +import re +import os.path as op +from glob import glob + +from traits.trait_errors import TraitError +from nipype.utils.filemanip import loadcrash + + +def load_pklz_traceback(crash_filepath): + """ Return the traceback message in the given crash file.""" + try: + data = loadcrash(crash_filepath) + except TraitError as te: + return str(te) + except: + raise + else: + return '\n'.join(data['traceback']) + + +def iter_tracebacks(logdir): + """ Return an iterator over each file path and + traceback field inside `logdir`. + Parameters + ---------- + logdir: str + Path to the log folder. + + field: str + Field name to be read from the crash file. + + Yields + ------ + path_file: str + + traceback: str + """ + crash_files = sorted(glob(op.join(logdir, '*.pkl*'))) + + for cf in crash_files: + yield cf, load_pklz_traceback(cf) + + +def display_crash_search(logdir, regex): + rex = re.compile(regex, re.IGNORECASE) + for file, trace in iter_tracebacks(logdir): + if rex.search(trace): + print("-" * len(file)) + print(file) + print("-" * len(file)) + print(trace) + + +if __name__ == "__main__": + from argparse import ArgumentParser, RawTextHelpFormatter + defstr = ' (default %(default)s)' + parser = ArgumentParser(prog='nipype_crash_search', + description=__doc__, + formatter_class=RawTextHelpFormatter) + parser.add_argument('-l','--logdir', type=str, dest='logdir', + action="store", default=None, + help='The working directory log file.' + defstr) + parser.add_argument('-r', '--regex', dest='regex', + default='*', + help='Regular expression to be searched in each traceback.' + defstr) + + args = parser.parse_args() + + display_crash_search(args.logdir, args.regex) diff --git a/doc/users/debug.rst b/doc/users/debug.rst index 91aa3b6f2f..303df9f82a 100644 --- a/doc/users/debug.rst +++ b/doc/users/debug.rst @@ -42,6 +42,9 @@ performance issues. #. All Nipype crashfiles can be inspected with the `nipype_display_crash` utility. +#. The `nipype_crash_search` command allows you to search for regular expressions +in the tracebacks of the Nipype crashfiles within a log folder. + #. Nipype determines the hash of the input state of a node. If any input contains strings that represent files on the system path, the hash evaluation mechanism will determine the timestamp or content hash of each of those