Skip to main content

  | मौसम…

411 समाचार
Public archive edition · Attributed source reporting with original dates · AI drafts are excluded

411 REFERENCE · Wikibooks

SPM/Programming intro

Reference material by Wikibooks contributors. This retains its source identity and is not 411 news reporting.

Aim This page is intended to provide a quick-start guide to writing your own MATLAB scripts and functions using SPM as a library. SPM programming can mean simply writing batch scripts to automate common pipelines, writing short helper scripts or functions to accomplish useful tasks, writing your own SPM extensions, or even modifying your local installation of SPM. MATLAB MATLAB is a programming language developed by MathWorks. MATLAB and MathWorks on Wikipedia MATLAB on WikiBooks Many MATLAB tutorials are available online: MATLAB Tutorial There are also useful books: MATLAB for Neuroscientists MATLAB for Psychologists MATLAB courses: MATLAB for Psychology and Neuroscience short course in Nottingham MATLAB for Psychologists short course in London SPM functions Introduction SPM has extensive developer documentation in the headers of the source files. To view the documentation of a function either open the corresponding source file or call help function from the MATLAB command line. Make sure that the SPM folder is in MATLABs search path. Reading image headers and data spm_vol – header information spm_read_vols – for reading entire volumes (see also: spm_vol) spm_slice_vol – for arbitrary planes spm_sample_vol – any voxels spm_get_data (spm_sample_vol) – any voxels from multiple volumes spm_bsplins (spm_bsplinc) – NB spm_slice_vol and spm_sample_vol offer polynomial or sinc interpolation; these functions provide b-spline interp as used in spm_reslice Writing data spm_write_vol (spm_vol) spm_create_vol spm_write_plane Reading and writing data with the alternative NIfTI class library nifti (@nifti/Contents, @nifti/create) file_array (@file_array/Contents) Geometry, voxel-world mappings spm_get_space – get the voxel-world mapping matrix (a rigid or affine transform, in homogeneous coordinates) spm_imatrix – convert above matrix to parametrised form spm_matrix – convert parameter vector to affine matrix spm_check_orientations Linear (rigid/affine) registration and reslicing spm_realign spm_coreg (spm_reslice) spm_affreg spm_reslice – needs reference image; see following for reslicing to specified geometry reorient (resize_img) – available from John's Gems 2 and 3 Preprocessing, including segmentation and non-linear normalisation spm_preproc (spm_config_preproc, spm_prep2sn, spm_preproc_write) – SPM5's unified segmentation and normalisation spm_normalise – the old pre-SPM5 non-unified spatial normalisation spm_segment – the old pre-SPM5 non-unified tissue segmentation spm_smooth Processing spm_imcalc – perform arbitrary calculations on volumes (low level function) spm_imcalc_ui – high level convenience wrapper for spm_imcalc Statistics spm_ancova (spm_reml_ancova) – unused by SPM itself, but often useful for scripting or educational purposes Viewing data spm_check_registration (spm_image, spm_orthviews) – the ubiquitous three orthogonal views slover – slices through images, overlays of thresholded or raw statistics; see also slice_overlay spm_mip_ui (spm_mip) – maximum intensity projections or glass brain images Configuration spm_defaults spm_get_defaults Batch System spm_select spm_jobman Illustrative examples Reading and writing a volume (to replace NaNs with zeros) A simpler (but more memory-hungry) version of an old Gem. See the SPM8 version of gem for an example of plane-wise reading and writing. fnm = spm_select(1, 'image'); [pth, bnm, ext] = spm_fileparts(fnm); VI = spm_vol(fnm); VO = VI; % copy input info for output image VO.fname = fullfile(pth, [bnm '_zn' ext]); img = spm_read_vols(VI); img(isnan(img)) = 0; % use ~isfinite instead of isnan to replace +/-inf with zero spm_write_vol(VO,img); External links See also: John Ashburner's SPM Gems (SPM2, SPM5) Ged Ridgway's SPM8 scripts Chris Rorden's SPM8 scripts SPM Batch scripting SPM Extensions