:orphan: .. _ahelp_3dAutobox: ********* 3dAutobox ********* .. contents:: :local: | Usage: 3dAutobox [options] DATASET Computes size of a box that fits around the volume. Also can be used to crop the volume to that box. The default 'info message'-based terminal text is a set of IJK coords. See below for options to display coordinates in other ways, as well as to save them in a text file. Please note in particular the difference between *ijk* and *ijkord* outputs, for scripting. OPTIONS: ======== .. code-block:: none -prefix PREFIX :Crop the input dataset to the size of the box, and write an output dataset with PREFIX for the name. *If -prefix is not used, no new volume is written out, just the (x,y,z) extents of the voxels to be kept. -input DATASET :An alternate way to specify the input dataset. The default method is to pass DATASET as the last parameter on the command line. -noclust :Don't do any clustering to find box. Any non-zero voxel will be preserved in the cropped volume. The default method uses some clustering to find the cropping box, and will clip off small isolated blobs. -extent :Write to standard out the spatial extent of the box -extent_xyz_quiet :The same numbers as '-extent', but only numbers and no string content. Ordering is RLAPIS. -extent_ijk :Write out the 6 auto bbox ijk slice numbers to screen: imin imax jmin jmax kmin kmax Note that resampling would affect the ijk vals (but not necessarily the xyz ones). -extent_ijk_to_file FF :Write out the 6 auto bbox ijk slice numbers to a simple-formatted text file FF (single row file): imin imax jmin jmax kmin kmax (same notes as above apply). -extent_ijk_midslice :Write out the 3 ijk midslices of the autobox to the screen: imid jmid kmid These are obtained via: (imin + imax)/2, etc. -extent_ijkord :Write out the 6 auto bbox ijk slice numbers to screen but in a particular order and format (see 'NOTE on *ijkord* format', below). NB: This ordering is useful if you want to use the output indices in 3dcalc expressions. -extent_ijkord_to_file FFORRD :Write out the 6 auto bbox ijk slice numbers to a file but in a particular order and format (see 'NOTE on *ijkord* format', below). NB: This option is quite useful if you want to use the output indices in 3dcalc expressions. -extent_xyz_to_file GG :Write out the 6 auto bbox xyz coords to a simple-formatted text file GG (single row file): xmin xmax ymin ymax zmin zmax (same values as '-extent'). -extent_xyz_midslice :Write out the 3 xyz midslices of the autobox to the screen: xmid ymid zmid These are obtained via: (xmin + xmax)/2, etc. These follow the same meaning as '-extent'. -npad NNN :Number of extra voxels to pad on each side of box, since some troublesome people (that's you, LRF) want this feature for no apparent reason. ** With this option, it is possible to get a dataset thatis actually bigger than the input. ** You can input a negative value for NNN, which will crop the dataset even more than the automatic method. -npad_safety_on :Constrain npad-ded extents to be within dset. So, each index is bounded to be in range [0, L-1], where L is matrix length along that dimension. NOTE on \*ijkord\* format ========================== .. code-block:: none Using any of the '-*ijkord*' options above will output pairs of ijk indices just like the regular ijk options, **but** they will be ordered in a way that you can associate each of the i, j, and k indices with a standard x, y and z coordinate direction. Without this ordering, resampling a dataset could change what index is associated with which coordinate axis. That situation can be confusing for scripting (and by confusing, we mean 'bad'). The output format for any '-*ijkord*' options is a 3x3 table, where the first column is the index value (i, j or k), and the next two columns are the min and max interval boundaries for the autobox. Importantly, the rows are placed in order so that the top corresponds to the x-axis, the middle to the y-axis and the bottom to the z-axis. So, if you had the following table output for a dset: k 10 170 i 35 254 j 21 199 ... you would look at the third row for the min/max slice values along the z-axis, and you would use the index 'j' to refer to it in, say, a 3dcalc expression. Note that the above example table output came from a dataset with ASL orientation. We can see how that fits, recalling that the first, second and third rows tell us about x, y and z info, respectively; and that i, j and k refer to the first, second and third characters in the orientation string. So, the third (z-like) row contains a j, which points us at the middle character in the orientation, which is S, which is along the z-axis---all consistent! Similarly, the top (x-like) row contains a k, which points us at the last char in the orientation, which is L and that is along the x-axis---phew! The main point of this would be to extra this information and use it in a script. If you knew that you wanted the z-slice range to use in a 3dcalc 'within()' expression, then you could extract the 3rd row to get the correct index and slice ranges, e.g., in tcsh: set vvv = `sed -n 3p FILE_ijkord.txt` ... where now ${vvv} will have 3 values, the first of which is the relevant index letter, then the min and max slice range values. So an example 3dcalc expression to keep values only within that slice range: 3dcalc \ -a DSET \ -expr "a*within(${vvv[1]},${vvv[2]},${vvv[3]})" \ -prefix DSET_SUBSET ++ Compile date = Apr 24 2024 {AFNI_24.1.05:linux_ubuntu_16_64}