# Scvi 1.4.0. model.differential\_expression outputs

**URL:** <https://discourse.scverse.org/t/scvi-1-4-0-model-differential-expression-outputs/3893>\
**Category:** scvi-tools\
**Tags:** scvi\
**Created:** [December 6, 2025, 11:48am UTC](https://discourse.scverse.org/t/scvi-1-4-0-model-differential-expression-outputs/3893 "2025-12-06T11:48:24Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![cagla](https://avatars.discourse-cdn.com/v4/letter/c/919ad9/32.png) [@cagla](https://discourse.scverse.org/u/cagla)\
**Post date:** [December 6, 2025, 11:48am UTC](https://discourse.scverse.org/t/scvi-1-4-0-model-differential-expression-outputs/3893/1 "2025-12-06T11:48:24Z")

</div>

Hello, I am using the scvi version 1.4.0.post1. The model.differential\_expression function gives proba\_m1, proba\_m2, bayes\_factor, scale1, scale2, raw\_mean1, raw\_mean2, non\_zeros\_proportion1, non\_zeros\_proportion2, raw\_normalized\_mean1, raw\_normalized\_mean2 as output without is\_de\_fdr\_0.05 and lfc\_mean columns. How can I filter the results? I have tried the following, which filtered out all of the genes. I appreciate any help, thanks!

scvi\_de[‘lfc’] = np.log2((scvi\_de[‘raw\_mean1’] + 1e-6) / (scvi\_de[‘raw\_mean2’] + 1e-6)) scvi\_de[‘proba\_de’] = 1 - np.exp(-scvi\_de[‘bayes\_factor’])

scvi\_de[‘pseudo\_pval’] = 1 - scvi\_de[‘proba\_de’]

scvi\_de[‘pseudo\_fdr’] = multipletests(scvi\_de[‘pseudo\_pval’], method=‘fdr\_bh’)[1]

---

<div class="post-metadata">

**Author:** ![ori-kron-wis](https://yyz1.discourse-cdn.com/flex035/user_avatar/discourse.scverse.org/ori-kron-wis/32/1099_2.png) [@ori-kron-wis](https://discourse.scverse.org/u/ori-kron-wis)\
**Post date:** [December 7, 2025, 7:21am UTC](https://discourse.scverse.org/t/scvi-1-4-0-model-differential-expression-outputs/3893/2 "2025-12-07T07:21:00Z")

</div>

You can run it with mode=“change” (default is “vanilla”), it will give you proba\_de, lfc, etc and is\_de\_fdr\_0.05, which is how we usually filter by.
