`rootpoints`

returns the root point(s) (one per tree, often
the soma).

`branchpoints`

returns the branch points.

`endpoints`

returns the end points (aka leaf nodes); the
root point will be returned if it also a leaf node.

```
rootpoints(x, ...)
# S3 method for default
rootpoints(x, ...)
# S3 method for neuron
rootpoints(x, subtrees = 1, ...)
# S3 method for igraph
rootpoints(x, ...)
branchpoints(x, ...)
# S3 method for default
branchpoints(x, ...)
# S3 method for neuron
branchpoints(x, subtrees = 1, ...)
# S3 method for igraph
branchpoints(x, ...)
endpoints(x, ...)
# S3 method for neuron
endpoints(x, subtrees = 1, ...)
# S3 method for igraph
endpoints(x, ...)
# S3 method for default
endpoints(x, ...)
```

- x
Neuron or other object (e.g.

`igraph`

) which might have roots- ...
Further arguments passed to methods (for

`ngraph`

or`igraph`

objects eventually`graph.nodes`

)).- subtrees
Integer index of the fully connected subtree in

`x$SubTrees`

. Only applicable when a`neuron`

consists of multiple unconnected subtrees.

FIXME Raw indices (in range 1:N) of vertices when `x`

is a
neuron, integer point identifier (aka PointNo) otherwise.

A neuron may have multiple subtrees and therefore multiple roots. At
present there is discrepancy between the `*.neuron`

and
`*.igraph`

methods. For `neuron`

s we return the node indices, for
`igraph`

/`ngraph`

objects the node identifiers (aka
names/PointNo)

`branchpoints.neuron`

returns a list if more than one subtree
is specified

Other neuron:
`neuron()`

,
`ngraph()`

,
`plot.dotprops()`

,
`potential_synapses()`

,
`prune()`

,
`resample()`

,
`spine()`

,
`subset.neuron()`

```
rootpoints(Cell07PNs[[1]])
#> [1] 1
endpoints(Cell07PNs[[1]])
#> [1] 1 42 59 62 80 85 96 100 102 112 117 121 134 148 154 165 172 180
```