Borrowing heavily from `cydar`

which corrects for multiple-testing
using a weighting scheme based on the volumetric overlap over hyperspheres.
In the instance of graph neighbourhoods this weighting scheme can use graph
connectivity or incorpate different within-neighbourhood distances for the
weighted FDR calculation.

## Arguments

x.nhoods |
A list of vertices and the constituent vertices of their
neighbourhood |

graph |
The kNN graph used to define the neighbourhoods |

pvalues |
A vector of p-values calculated from a GLM or other appropriate
statistical test for differential neighbourhood abundance |

weighting |
A string scalar defining which weighting scheme to use.
Choices are: vertex, edge, k-distance, neighbour-distance. |

reduced.dimensions |
(optional) A `matrix` of cells X reduced dimensions used
to calculate the kNN graph. Only necessary if this function is being used
outside of `testNhoods` where the `Milo`
object is not available |

distances |
(optional) A `matrix` of cell-to-cell distances or a list
of distance matrices, 1 per neighbourhood. Only necessary if this function is being
used outside of `testNhoods` where the `Milo`
object is not available. |

indices |
(optional) A list of neighbourhood index vertices in the same order as the input neighbourhoods.
Only used for the k-distance weighting. |

## Value

A vector of adjusted p-values

## Details

Each neighbourhood is weighted according to the weighting scheme
defined. Vertex and edge use the respective graph connectivity measures
of the neighbourhoods, k-distance uses the distance to the kth nearest neighbour
of the index vertex, while neighbour-distance uses the average within-neighbourhood
Euclidean distance in reduced dimensional space. The frequency-weighted version of the
BH method is then applied to the p-values, as in `cydar`

.

## Examples

NULL

#> NULL