Why does my t-test fail?

I am trying to perform a t-test in python to estimate if the expression of a gene is statistically different between two clusters of cells in an scRNA-seq experiment.

When I do the following:

from scipy import stats as st
st.ttest_ind(counts[gene_1], counts[gene_2])

I get a p-value for some of my comparisons. In others, however, I get the following:

Ttest_indResult(statistic=nan, pvalue=nan)

A nan instead of a p-value.

Please correct me if I am wrong, but I think a t-test requires the data to be normally distributed. I have log-transformed my gene counts, which should help with that, but I still get a very zero-inflated distribution. Find below histograms of the expression of a gene in two clusters of cells for which a t-test returns a nan value:
p-value = nan

And here is a histogram of the expression of another gene in two clusters of cells for which a t-test returns a valid p-value:

valid p-value
It looks like that the reason is the low expression level of the cells that express some of the gene. But I don’t understand why this leads to a nan p-value.

I have a number of questions:
Am I doing right using a t-test in this case? Is there another test I should be using instead? What should I do with these nan p-values, or how should I avoid them? Any help understanding what is going on would be so useful.

Thanks so much and my apologies in advance for my poor knowledge in statistics.

Read more here: Source link