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