Find the ‘bounds’ (i.e. start, end and length) of consecutive numbers within a larger set of numbers in a given vector.

bounds(nums, dup.inds=FALSE, pre.sort=TRUE)

## Arguments

nums a numeric vector. logical, if TRUE the bounds of consecutive duplicated elements are returned. logical, if TRUE the input vector is ordered prior to bounds determination.

## Details

This is a simple utility function useful for summarizing the contents of a numeric vector. For example: find the start position, end position and lengths of secondary structure elements given a vector of residue numbers obtained from a DSSP secondary structure prediction.

By setting ‘dup.inds’ to TRUE then the indices of the first (start) and last (end) duplicated elements of the vector are returned. For example: find the indices of atoms belonging to a particular residue given a vector of residue numbers (see below).

## Value

Returns a three column matrix listing starts, ends and lengths.

## References

Grant, B.J. et al. (2006) Bioinformatics 22, 2695--2696.

Barry Grant

## Examples

 test <- c(seq(1,5,1),8,seq(10,15,1))
bounds(test)
#>   start end length
#> 1     1   5      5
#> 2     8   8      1
#> 3    10  15      6
test <- rep(c(1,2,4), times=c(2,3,4))
bounds(test, dup.ind=TRUE)
#>        start end length
#> [1,] 1     1   2      2
#> [2,] 2     3   5      3
#> [3,] 3     6   9      4