You say your have large numbers of data points per cell. In that
case the cell medians should be normally distributed. (See simulation below.)
So you could
run a two-sample t test on cell medians to see if Control and Treatment groups differ.
I haven't seen your data, but it would probably be OK to use cell
means because you have so many data points per cell.
In principle, there is nothing to stop you from running a nonparametric Mann-Whitney-Wilcoxon
test as @Parnian suggests, but with only five cells each in Treatment and Control groups, that may well be a futile exercise.
You are near the absolute lower limit of sample sizes for which the MWW test
is useful.
For example, for the rank-based MWW test, if you had only four cells in each group,
then all of the Treatment cells would need to have greater 'averages'
than any of the Control cells (or vice versa) to get a significant
result. There are only ${8 \choose 4} = 70$ possible arrangements of ranks
the most extreme two of which correspond to complete separation of
the values in the two groups; $2/70 = 0.029$ so it is possible to
to get a significant P-value. But as soon as there is any overlap at
all, the smallest possible P-value becomes greater than $0.05.$
Also, here is an example of MWW test with five Treatment values and five Control
values that is not significant at the 5% level. By contrast, a t test
does find a significant difference at that level.
wilcox.test(c(10, 20, 30, 40), c(38, 48, 58, 68))$p.val
[1] 0.05714286
t.test(c(10, 20, 30, 40), c(38, 48, 58, 68))$p.val
[1] 0.02201958
Simulation: CLT for mean and median. Finally, suppose you have samples of size 500 from the skewed distribution
$\mathsf{Gamma}(2, 1).$ By the Central Limit Theorem, means of such samples
will be nearly normal. But there is also a CLT for medians. Here is a simulation
using means a
and medians h
of $100\,000$ samples of size $n=500$ from this
distribution. The medians are a little more variable, but normal nevertheless.
set.seed(604); m = 10^5; n = 500
x = rgamma(m*n, 2, 1)
DTA = matrix(x, nrow=m) # each row of matrix is sample
a = rowMeans(DTA); h = apply(DTA,1,median)
par(mfrow=c(1,3))
curve(dgamma(x,2,1), 0,10, col="blue", lwd=2, ylab="PDF",
main="Density of GAMMA(2,1)")
abline(v=0,col="green2"); abline(h=0,col="green2")
hist(a, prob=T, br=30, col="skyblue2",
main="n=500: Sample Means")
hist(h, prob=T, br=30, col="skyblue2",
main="n=500: Sample Medians")
par(mfrow=c(1,1))
