Finding Variable Genes in Seurat, scRNA-seq
2
2
Entering edit mode
6.7 years ago
asyndeton17 ▴ 40

Hi,

I have a data matrix for scRNA-seq data (Drop-seq). How do I choose the parameters appropriately for the FindVariableGenes function in Seurat? Is there a plot I should be looking at beforehand to determine the correct parameters?

I can provide plots if needed.

Thanks

RNA-Seq scRNA-seq Seurat • 13k views
ADD COMMENT
0
Entering edit mode

While you are waiting for someone give you an answer for this have you checked the manuals/vignette for Seurat?

ADD REPLY
0
Entering edit mode

Yes, the help page for the function says to examine "the plot" first, but it doesn't refer to which plot.

ADD REPLY
0
Entering edit mode

Did any of you come up with a good answer to this problem?

ADD REPLY
0
Entering edit mode
6.6 years ago
halo22 ▴ 300

You can just run seurat with the parameters in the vignette. The dispersion vs avg-expression plot can help you decide the cutoff for x.low.cutoff, x.high.cutoff and y.cutoff. Once you figure out the parameters run FindVariableGenes with new parameters again.

ADD COMMENT
1
Entering edit mode

I have some questions about the calculation and cut off of the dispersion, as dispersion.function
Function to compute y-axis value (dispersion). Default is to take the standard deviation of all values,why it would have some negative values,and it seems that the genes are filtered actually by the object@hvg.info$gene.dispersion.scaled,sometimes in the plot ,it will show some white lines ,can u explain it what does that mean?

ADD REPLY
1
Entering edit mode

What do you look for in the plot exactly? I found that changing x.low.cutoff between 0.0125 (in the PBMC 3k tutorial) and 0.1, for example, will have a huge effect on the number of variable genes, but you can barely tell the difference in the plot.

ADD REPLY
0
Entering edit mode

Hi igor. I am now facing the same problem. I don't know how to select correct parameters for x.low.cutoff, x.high.cutoff and y.cutoff. I also found that a little change in one of these parameters will lead to huge change in numbers of variable genes.

I can get the plot as tutorial shows. But I don't know how to use that plot to help me select these parameters.

Do you have any suggestions now?

ADD REPLY
0
Entering edit mode

Hi @igor , @lishen0709 – did you find a solution to your question about selecting the correct parameters for x and y cutoffs in Seurat's FindVariableGenes?

Thanks!

ADD REPLY
0
Entering edit mode

yes, a bad picture ...

ADD REPLY
0
Entering edit mode

can I ask how to get cutoff from function FindVariableGenes

ADD REPLY
0
Entering edit mode
5.3 years ago

I found that changing x.low.cutoff between 0.0125 (in the PBMC 3k tutorial) and 0.1, for example, will have a huge effect on the number of variable genes

@igor, this is bound to happen as the number of genes is higher below 0 ( as can be seen by the dense plotting)

I was facing the same problem and on googling, I found this

Cutoff to find out number of variable genes? https://github.com/satijalab/seurat/issues/634

"All methods for HVG selection have some cutoff parameters, and unfortunately, criteria for 'optimality' are difficult to identify.

If you have UMI data, we suggest identifying HVG on the basis of variance-to-mean ratio, as we demonstrate here: https://satijalab.org/seurat/mca.html

Again, with UMI datasets - we typically do not notice large differences in the analysis depending on the exact number of genes selected- ranging from 2k genes to even the full transcriptome."

and if we go the link mentioned in the discussion, we will get this

Data Preprocessing

We perform standard log-normalization.

mca <- NormalizeData(object = mca, normalization.method = "LogNormalize", scale.factor = 10000)

FindVariableGenes calculates the variance and mean for each gene in the dataset in the dataset (storing this in object@hvg.info), and sorts genes by their variance/mean ratio (VMR). We have observed that for large-cell datasets with unique molecular identifiers, selecting highly variable genes (HVG) simply based on VMR is an efficient and robust strategy. Here, we select the top 1,000 HVG for downstream analysis.

mca <- FindVariableGenes(object = mca, mean.function = ExpMean, dispersion.function = LogVMR, do.plot = FALSE) hv.genes <- head(rownames(mca@hvg.info), 1000)

Also, as I found the plot to be pretty useless, I skipped plotting it by adding " do.plot = FALSE"

pbmc<-FindVariableGenes(object = pbmc, mean.function = ExpMean, dispersion.function = LogVMR, x.low.cutoff = 0.0125, x.high.cutoff = 3, y.cutoff = 0.5, do.plot = FALSE)

this will select variable genes defined by cutoff but will skip plotting

ADD COMMENT

Login before adding your answer.

Traffic: 2526 users visited in the last hour
Help About
FAQ
Access RSS
API
Stats

Use of this site constitutes acceptance of our User Agreement and Privacy Policy.

Powered by the version 2.3.6