Note: render Rmd from within R, with the environment built from reqs.yaml activated, with:

rmarkdown::render(‘tutorial-de.Rmd’, output_file = ‘index.html’)

or from the command line:

Rscript -e “rmarkdown::render(‘tutorial-de.Rmd’, output_file = ‘index.html’)”

Differential expression with Seurat

This report is based on the Seurat tutorial for differential expression:

https://satijalab.org/seurat/articles/de_vignette

using the publicly available dataset ifnb (installed via InstallData("ifnb").

I wanted to compare the differentially expressed genes (DEG) calculated several ways:

  • Seurat genes markers from single cell counts, calculated with FindMarkers
  • Seurat DEG genes from pseudobulk counts, calculated with FindMarkers after aggregating the counts with AggregateExpression
  • manual aggregation of single cell counts to pseudobulk counts, followed by DESeq2 normalization and differential expression analysis.

This was also a personal exercice of using Conda environments and rendering Rmds of single cell data analysis on my tablet (one of those with built-in Linux development environment capabilities). My “other computer” being an HPC system, here I had to be very mindful of ressources.

Metadata table

The ifnb data does not come with the biological replicate metadata info. It can be downloaded from Github, but for the purpose of this tutorial I decided to randomly assign cells to a replicate, for simplicity. At least 3 replicates are required for testing in pseudobulk mode.

After pseudobulking, each ‘cell’ is a condition-rep-celltype pseudobulk profile. Idents is automatically set to orig.ident, which is the pseudobulking group.by combination of columns.

For DE testing, we want the groups without the rep info.

Original

de_group Freq
B Activated_CTRL 185
B Activated_STIM 203
B_CTRL 407
B_STIM 571
CD14 Mono_CTRL 2215
CD14 Mono_STIM 2147
CD16 Mono_CTRL 507
CD16 Mono_STIM 537
CD4 Memory T_CTRL 859
CD4 Memory T_STIM 903
CD4 Naive T_CTRL 978
CD4 Naive T_STIM 1526
CD8 T_CTRL 352
CD8 T_STIM 462
DC_CTRL 258
DC_STIM 214
Eryth_CTRL 23
Eryth_STIM 32
Mk_CTRL 115
Mk_STIM 121
NK_CTRL 298
NK_STIM 321
pDC_CTRL 51
pDC_STIM 81
T activated_CTRL 300
T activated_STIM 333

After adding randomly-attributed replicate metadata

rep1 rep2 rep3
B Activated_CTRL 59 68 58
B Activated_STIM 68 79 56
B_CTRL 137 131 139
B_STIM 182 194 195
CD14 Mono_CTRL 720 752 743
CD14 Mono_STIM 710 701 736
CD16 Mono_CTRL 175 159 173
CD16 Mono_STIM 186 178 173
CD4 Memory T_CTRL 290 295 274
CD4 Memory T_STIM 307 295 301
CD4 Naive T_CTRL 318 330 330
CD4 Naive T_STIM 518 508 500
CD8 T_CTRL 113 119 120
CD8 T_STIM 159 140 163
DC_CTRL 81 99 78
DC_STIM 68 79 67
Eryth_CTRL 11 8 4
Eryth_STIM 8 15 9
Mk_CTRL 38 42 35
Mk_STIM 46 42 33
NK_CTRL 85 102 111
NK_STIM 110 98 113
pDC_CTRL 19 10 22
pDC_STIM 42 15 24
T activated_CTRL 102 101 97
T activated_STIM 115 106 112

Perform DE analysis on single cell counts

By default, FindMarkers testing is based on the non-parametric Wilcoxon rank sum test. Each cell is considered a different sample. We test each cell type for STIM vs. CTRL. Default slot is data.

Active assay is RNA.

CD14 Mono

p_val avg_log2FC pct.1 pct.2 p_val_adj
IFIT1 0 7.319139 0.985 0.033 0
CXCL10 0 8.036563 0.984 0.035 0
RSAD2 0 6.741673 0.988 0.045 0
TNFSF10 0 6.991279 0.989 0.047 0
IFIT3 0 6.883785 0.992 0.056 0
IFIT2 0 7.179929 0.961 0.039 0
CXCL11 0 8.624208 0.932 0.012 0
CCL8 0 9.134191 0.918 0.017 0
IDO1 0 5.455898 0.965 0.089 0
MX1 0 5.059052 0.960 0.093 0
IL1RN 0 6.100382 0.899 0.039 0
TNFSF13B 0 4.845720 0.945 0.089 0
LY6E 0 4.805693 0.998 0.149 0
OAS1 0 4.073584 0.950 0.141 0
IFITM2 0 4.281267 0.898 0.121 0

pDC

p_val avg_log2FC pct.1 pct.2 p_val_adj
ISG15 0 5.829713 1.000 0.216 0
MX1 0 4.473988 1.000 0.176 0
LY6E 0 5.272373 0.963 0.078 0
ISG20 0 4.028967 1.000 0.314 0
IFI6 0 5.115461 0.975 0.078 0
IFIT3 0 6.310964 0.951 0.059 0
TNFSF10 0 6.361210 0.926 0.059 0
OAS1 0 5.573479 0.926 0.059 0
IFI35 0 3.872349 0.926 0.157 0
UBE2L6 0 3.324502 0.951 0.235 0
IFIT1 0 6.145160 0.840 0.039 0
IFI44L 0 3.732810 0.914 0.118 0
LAP3 0 2.912423 0.938 0.392 0
PSMB9 0 2.552610 0.963 0.490 0
BST2 0 1.965863 0.988 0.784 0

CD4 Memory T

p_val avg_log2FC pct.1 pct.2 p_val_adj
ISG15 0 4.8434281 0.990 0.207 0
IFI6 0 5.8020773 0.950 0.064 0
ISG20 0 3.0613299 0.982 0.485 0
IFIT1 0 7.3400262 0.821 0.010 0
IFIT3 0 6.2277021 0.819 0.016 0
LY6E 0 4.2479642 0.858 0.102 0
MX1 0 4.4438645 0.838 0.092 0
MT2A 0 4.5130615 0.721 0.066 0
B2M 0 0.6090571 1.000 1.000 0
IFIT2 0 5.5483776 0.623 0.013 0
SAT1 0 2.7320510 0.828 0.288 0
OAS1 0 4.3024350 0.610 0.045 0
IFI44L 0 4.1829031 0.607 0.047 0
RSAD2 0 5.0416701 0.523 0.012 0
PLSCR1 0 4.5378060 0.517 0.033 0

T activated

p_val avg_log2FC pct.1 pct.2 p_val_adj
ISG15 0 4.107049 0.976 0.323 0
IFIT3 0 5.584642 0.877 0.033 0
IFIT1 0 6.029865 0.781 0.023 0
RSAD2 0 4.724328 0.760 0.017 0
IFI6 0 5.433104 0.766 0.037 0
IFIT2 0 4.996499 0.754 0.030 0
LY6E 0 4.568766 0.769 0.080 0
MX1 0 4.010256 0.751 0.093 0
OAS1 0 4.819688 0.670 0.040 0
ISG20 0 2.762390 0.850 0.333 0
PLSCR1 0 4.948594 0.631 0.037 0
IFI44L 0 5.061007 0.622 0.033 0
IRF7 0 3.158831 0.745 0.150 0
GBP1 0 4.278940 0.637 0.060 0
EIF2AK2 0 3.922325 0.625 0.060 0

CD4 Naive T

p_val avg_log2FC pct.1 pct.2 p_val_adj
IFIT3 0 7.2124244 0.893 0.006 0
IFI6 0 5.4637641 0.938 0.065 0
ISG15 0 4.8046176 0.993 0.167 0
ISG20 0 2.8760899 0.976 0.459 0
IFIT1 0 6.6790010 0.844 0.015 0
LY6E 0 3.7562475 0.893 0.148 0
MX1 0 4.7097979 0.812 0.069 0
B2M 0 0.5671462 1.000 1.000 0
IFIT2 0 6.0286696 0.622 0.011 0
OAS1 0 5.8122678 0.609 0.018 0
IFI44L 0 5.1263445 0.603 0.025 0
RSAD2 0 7.2039563 0.550 0.006 0
TNFSF10 0 5.0409892 0.583 0.036 0
MT2A 0 3.9699064 0.610 0.063 0
IRF7 0 3.5151829 0.604 0.071 0

CD8 T

p_val avg_log2FC pct.1 pct.2 p_val_adj
IFI6 0 5.0940255 0.955 0.099 0
ISG15 0 4.1828463 0.989 0.301 0
ISG20 0 3.0978933 0.991 0.480 0
IFIT1 0 5.1363058 0.877 0.040 0
LY6E 0 3.5846546 0.883 0.159 0
MX1 0 4.9149365 0.816 0.065 0
IFIT3 0 4.9213308 0.781 0.034 0
MT2A 0 4.4437999 0.697 0.071 0
OAS1 0 5.1113771 0.649 0.034 0
PLSCR1 0 4.5491292 0.623 0.051 0
B2M 0 0.5411335 1.000 1.000 0
IFIT2 0 5.0082722 0.543 0.026 0
LAG3 0 3.9957573 0.595 0.071 0
RSAD2 0 4.9106864 0.506 0.009 0
IRF7 0 2.7259800 0.645 0.145 0

Mk

p_val avg_log2FC pct.1 pct.2 p_val_adj
ISG15 0 4.843583 0.975 0.261 0
ISG20 0 3.286477 0.983 0.391 0
IFIT1 0 6.369095 0.843 0.026 0
IFIT3 0 6.029154 0.851 0.061 0
IFI6 0 4.342005 0.876 0.200 0
LY6E 0 3.907988 0.884 0.139 0
MX1 0 4.636167 0.835 0.078 0
IFIT2 0 7.610672 0.661 0.009 0
EPSTI1 0 4.484555 0.587 0.070 0
IRF7 0 3.120535 0.645 0.130 0
RSAD2 0 6.583860 0.521 0.026 0
IFI44L 0 3.807066 0.587 0.061 0
OASL 0 4.177920 0.562 0.052 0
OAS1 0 3.053311 0.661 0.165 0
MT2A 0 3.662764 0.595 0.104 0

B Activated

p_val avg_log2FC pct.1 pct.2 p_val_adj
ISG15 0 5.6257511 1.000 0.189 0
ISG20 0 3.7982033 1.000 0.486 0
IFIT3 0 11.9208358 0.857 0.000 0
IFI6 0 6.3160103 0.842 0.032 0
MX1 0 6.1187189 0.803 0.038 0
PLSCR1 0 4.9707004 0.759 0.054 0
IRF7 0 4.5106588 0.778 0.086 0
LY6E 0 3.9624094 0.768 0.141 0
IFIT1 0 10.8434400 0.626 0.000 0
CXCL10 0 9.8881109 0.606 0.005 0
EPSTI1 0 4.7245802 0.650 0.043 0
B2M 0 0.5741454 1.000 1.000 0
GBP1 0 4.7693760 0.645 0.054 0
UBE2L6 0 2.4010441 0.828 0.254 0
IFI44L 0 5.0810414 0.571 0.027 0

B

p_val avg_log2FC pct.1 pct.2 p_val_adj
ISG15 0 5.0588481 0.998 0.233 0
IFIT3 0 6.1124940 0.965 0.052 0
IFI6 0 5.4933132 0.965 0.076 0
ISG20 0 3.0549593 1.000 0.668 0
IFIT1 0 6.2320388 0.907 0.029 0
MX1 0 3.9798482 0.905 0.115 0
LY6E 0 3.7907800 0.898 0.150 0
TNFSF10 0 6.5802175 0.786 0.020 0
IFIT2 0 5.5525558 0.786 0.037 0
B2M 0 0.6104044 1.000 1.000 0
PLSCR1 0 3.8010721 0.793 0.113 0
IRF7 0 3.1992949 0.835 0.187 0
CXCL10 0 8.0906108 0.651 0.010 0
UBE2L6 0 2.5167981 0.851 0.297 0
PSMB9 0 1.7715351 0.937 0.568 0

DC

p_val avg_log2FC pct.1 pct.2 p_val_adj
IFIT3 0 8.833866 0.991 0.023 0
IFIT1 0 9.549194 0.981 0.012 0
IFIT2 0 9.093149 0.981 0.012 0
TNFSF10 0 9.172346 0.981 0.019 0
CXCL10 0 9.382425 0.977 0.012 0
RSAD2 0 7.599587 0.986 0.027 0
MX1 0 5.869923 1.000 0.093 0
CXCL11 0 8.931608 0.963 0.008 0
LY6E 0 5.243449 0.995 0.136 0
IFITM3 0 5.754103 1.000 0.174 0
APOBEC3A 0 7.377986 0.958 0.039 0
OAS1 0 5.460449 0.977 0.097 0
IFI6 0 4.776552 1.000 0.194 0
ISG15 0 6.662182 1.000 0.353 0
OASL 0 6.543619 0.921 0.023 0

CD16 Mono

p_val avg_log2FC pct.1 pct.2 p_val_adj
IFIT1 0 5.848003 1.000 0.097 0
ISG15 0 5.353134 1.000 0.495 0
IFIT3 0 4.432872 0.993 0.316 0
ISG20 0 4.097362 1.000 0.456 0
IFITM3 0 3.184614 1.000 0.645 0
RSAD2 0 5.151597 0.955 0.079 0
IFIT2 0 4.634380 0.974 0.170 0
IFI6 0 3.414658 0.998 0.377 0
LY6E 0 3.298778 1.000 0.418 0
TNFSF10 0 3.366590 1.000 0.491 0
MX1 0 4.031346 0.976 0.168 0
APOBEC3A 0 3.750112 0.996 0.398 0
CXCL10 0 4.575718 0.985 0.276 0
OASL 0 4.017008 0.957 0.185 0
IRF7 0 2.984086 0.980 0.464 0

NK

p_val avg_log2FC pct.1 pct.2 p_val_adj
IFI6 0 5.237586 0.972 0.094 0
ISG15 0 4.575879 0.988 0.315 0
ISG20 0 3.375592 0.991 0.456 0
IFIT1 0 6.018677 0.866 0.037 0
IFIT3 0 6.240995 0.847 0.040 0
MX1 0 3.942139 0.891 0.121 0
LY6E 0 2.446112 0.950 0.362 0
PLSCR1 0 3.470852 0.788 0.141 0
IFITM3 0 4.022746 0.745 0.114 0
TNFSF10 0 3.421115 0.766 0.161 0
OAS1 0 3.675542 0.685 0.074 0
IFI44L 0 3.550353 0.688 0.077 0
IRF7 0 2.646435 0.791 0.218 0
IFIT2 0 4.646627 0.614 0.040 0
BST2 0 2.024020 0.857 0.346 0

Eryth

p_val avg_log2FC pct.1 pct.2 p_val_adj
IFIT1 0.00e+00 5.5792636 1.000 0.043 0.0000026
ISG15 0.00e+00 7.0705796 1.000 0.174 0.0000047
ISG20 0.00e+00 3.5551657 1.000 0.435 0.0000414
IFI6 0.00e+00 5.8056174 0.906 0.087 0.0000642
MX1 0.00e+00 6.2621626 0.875 0.043 0.0001153
IFIT3 1.00e-07 5.0343432 0.844 0.130 0.0012331
LY6E 1.00e-07 4.5684565 0.844 0.130 0.0018280
IFIT2 2.00e-07 7.7176455 0.750 0.000 0.0029891
TNFSF10 1.80e-06 4.1212692 0.812 0.174 0.0250230
HERC5 2.00e-06 4.5331101 0.719 0.043 0.0279194
OASL 3.20e-06 4.0268729 0.719 0.043 0.0443040
IRF7 5.00e-06 3.1601783 0.812 0.261 0.0706950
TMSB10 1.01e-05 1.9479044 0.969 0.739 0.1417716
GBP1 1.36e-05 3.4400612 0.719 0.130 0.1917637
B2M 2.88e-05 0.8799891 1.000 1.000 0.4049104

Perform DE analysis after pseudobulking

To pseudobulk, we use AggregateExpression() to sum together gene counts of all the cells from the same sample for each cell type. This results in one gene expression profile per sample and cell type. We can then perform DE analysis using DESeq2 on the sample level. This treats the samples, rather than the individual cells, as independent observations.

We can perform DE testing on the pseudobulk level with FindMarkers, with the parameters test.use="DESeq2", group.by="de_group" where de_group defines the pseudobulk samples. Since test.use is set to DESeq2, slot is automatically set to counts.

Active assay is RNA.

CD14 Mono

p_val avg_log2FC pct.1 pct.2 p_val_adj
ISG15 0 6.524350 1 1 0
IFI6 0 3.627686 1 1 0
GBP1 0 2.582693 1 1 0
MNDA 0 2.707099 1 1 0
TMSB10 0 1.704938 1 1 0
VAMP5 0 3.070410 1 1 0
SSB 0 2.631551 1 1 0
PLSCR1 0 2.449718 1 1 0
LAP3 0 2.081515 1 1 0
CXCL11 0 6.446433 1 1 0
HSPA1A 0 2.719810 1 1 0
PSMB9 0 1.770025 1 1 0
FAM26F 0 4.044696 1 1 0
DYNLT1 0 2.208957 1 1 0
HSPB1 0 2.390378 1 1 0

CD4 Naive T

p_val avg_log2FC pct.1 pct.2 p_val_adj
B2M 0 0.5759136 1 1 0
IFI6 0 4.8328469 1 1 0
LY6E 0 3.4166479 1 1 0
MX1 0 4.1221295 1 1 0
HLA-B 0 0.6101486 1 1 0
PSME2 0 1.8197431 1 1 0
TMSB10 0 0.9899916 1 1 0
ISG15 0 4.6615910 1 1 0
ISG20 0 2.8152841 1 1 0
MT2A 0 3.3402902 1 1 0
TNFSF10 0 3.9363520 1 1 0
UBE2L6 0 2.3113574 1 1 0
IFIT1 0 5.1346985 1 1 0
IRF7 0 2.9697877 1 1 0
SAT1 0 2.0467662 1 1 0

CD4 Memory T

p_val avg_log2FC pct.1 pct.2 p_val_adj
ISG20 0 2.9848144 1 1 0
B2M 0 0.6143407 1 1 0
IFI6 0 5.1055440 1 1 0
SAT1 0 2.6401980 1 1 0
LY6E 0 3.8320128 1 1 0
MX1 0 3.9459894 1 1 0
MT2A 0 3.8241441 1 1 0
TMSB10 0 1.4218761 1 1 0
TNFSF10 0 3.4347907 1 1 0
MYL12A 0 1.4089880 1 1 0
HLA-B 0 0.5370884 1 1 0
IFI44L 0 3.4440966 1 1 0
OAS1 0 3.4457488 1 1 0
IFIT1 0 5.1339770 1 1 0
UBE2L6 0 2.2689361 1 1 0

CD16 Mono

p_val avg_log2FC pct.1 pct.2 p_val_adj
ISG15 0 5.405094 1 1 0
TNFSF10 0 3.349774 1 1 0
LY6E 0 3.215820 1 1 0
IFIT3 0 4.270443 1 1 0
IFIT1 0 5.512975 1 1 0
IFITM3 0 3.148605 1 1 0
ISG20 0 4.032926 1 1 0
IFI6 0 3.300614 1 1 0
IFIT2 0 4.298292 1 1 0
MX1 0 3.768779 1 1 0
IRF7 0 2.862734 1 1 0
MT2A 0 2.702728 1 1 0
TMSB10 0 1.439850 1 1 0
RSAD2 0 4.527391 1 1 0
OASL 0 3.646063 1 1 0

B

p_val avg_log2FC pct.1 pct.2 p_val_adj
ISG15 0 4.9194353 1 1 0
B2M 0 0.5883803 1 1 0
ISG20 0 3.0284044 1 1 0
IFI6 0 4.9658801 1 1 0
MX1 0 3.7372670 1 1 0
LY6E 0 3.5054247 1 1 0
IFIT3 0 5.2825249 1 1 0
IRF7 0 2.9632413 1 1 0
IFIT1 0 5.1102165 1 1 0
UBE2L6 0 2.3811484 1 1 0
PLSCR1 0 3.3946976 1 1 0
PSMB9 0 1.6589015 1 1 0
SAT1 0 1.9285009 1 1 0
CXCL10 0 6.4074200 1 1 0
IFITM2 0 2.7793557 1 1 0

CD8 T

p_val avg_log2FC pct.1 pct.2 p_val_adj
ISG15 0 4.242469 1 1 0
IFI6 0 4.729437 1 1 0
LY6E 0 3.381996 1 1 0
IFIT3 0 4.478730 1 1 0
MX1 0 4.350148 1 1 0
IFIT1 0 4.543016 1 1 0
ISG20 0 3.026794 1 1 0
MT2A 0 3.783692 1 1 0
LAG3 0 3.255785 1 1 0
OAS1 0 4.058428 1 1 0
PLSCR1 0 3.647765 1 1 0
TMSB10 0 1.099068 1 1 0
OASL 0 1.711739 1 1 0
IRF7 0 2.465489 1 1 0
UBE2L6 0 2.124143 1 1 0

T activated

p_val avg_log2FC pct.1 pct.2 p_val_adj
ISG15 0 3.9914526 1 1 0
SAT1 0 2.3353160 1 1 0
ISG20 0 2.6977783 1 1 0
MX1 0 3.6373826 1 1 0
LY6E 0 3.9635196 1 1 0
IFIT1 0 4.8467127 1 1 0
IFI6 0 4.6107505 1 1 0
IRF7 0 2.9306905 1 1 0
B2M 0 0.4460696 1 1 0
OASL 0 3.0265213 1 1 0
UBE2L6 0 2.5046723 1 1 0
IFI16 0 2.5705288 1 1 0
GBP1 0 3.6453435 1 1 0
PLSCR1 0 4.0545856 1 1 0
EPSTI1 0 3.0088461 1 1 0

NK

p_val avg_log2FC pct.1 pct.2 p_val_adj
ISG20 0 3.3701773 1 1 0
IFI6 0 4.8678789 1 1 0
LY6E 0 2.4205232 1 1 0
IFITM3 0 3.7105438 1 1 0
MX1 0 3.7176732 1 1 0
IFIT3 0 5.2462826 1 1 0
PRF1 0 2.2215166 1 1 0
PLSCR1 0 3.1964090 1 1 0
TNFSF10 0 3.1129544 1 1 0
IFIT1 0 4.9885588 1 1 0
IRF7 0 2.5039363 1 1 0
B2M 0 0.4268149 1 1 0
OAS1 0 3.3055314 1 1 0
IFI44L 0 3.1129419 1 1 0
BST2 0 1.9609531 1 1 0

DC

p_val avg_log2FC pct.1 pct.2 p_val_adj
ISG20 0 3.864821 1 1 0
IFITM3 0 5.235863 1 1 0
LY6E 0 4.678636 1 1 0
IFI6 0 4.377627 1 1 0
HSPA1A 0 3.768050 1 1 0
MX1 0 4.976081 1 1 0
APOBEC3A 0 5.981163 1 1 0
IRF7 0 3.436853 1 1 0
PLSCR1 0 2.925921 1 1 0
BST2 0 2.624977 1 1 0
GBP1 0 3.801736 1 1 0
OAS1 0 4.518331 1 1 0
RSAD2 0 5.994259 1 1 0
LAP3 0 2.983329 1 1 0
HSPB1 0 2.712754 1 1 0

B Activated

p_val avg_log2FC pct.1 pct.2 p_val_adj
ISG20 0 3.6223874 1 1.000 0
ISG15 0 5.2369062 1 1.000 0
LY6E 0 3.4169657 1 1.000 0
B2M 0 0.5571916 1 1.000 0
IRF7 0 3.7562498 1 1.000 0
MX1 0 4.8367770 1 1.000 0
IFI6 0 4.9375013 1 1.000 0
SAT1 0 1.7894332 1 1.000 0
PLSCR1 0 4.0903053 1 1.000 0
PSMB9 0 1.6927915 1 1.000 0
GBP1 0 3.6329721 1 0.667 0
GBP2 0 1.8600320 1 1.000 0
BST2 0 2.1188996 1 1.000 0
EPSTI1 0 3.7878248 1 1.000 0
CXCL10 0 7.1741922 1 0.333 0

Mk

p_val avg_log2FC pct.1 pct.2 p_val_adj
ISG20 0 3.495296 1 1.000 0
IFI6 0 3.816022 1 1.000 0
LY6E 0 3.580342 1 1.000 0
ISG15 0 5.039666 1 1.000 0
IFIT3 0 5.110226 1 1.000 0
APOBEC3A 0 3.317737 1 1.000 0
MX1 0 3.883662 1 1.000 0
TNFSF10 0 4.367715 1 1.000 0
FTH1 0 -1.399189 1 1.000 0
SAT1 0 1.584759 1 1.000 0
CCL8 0 6.653979 1 0.000 0
FTL 0 -1.234206 1 1.000 0
IFIT1 0 5.521378 1 0.667 0
TIMP1 0 -1.497004 1 1.000 0
IFITM3 0 2.739825 1 1.000 0

pDC

p_val avg_log2FC pct.1 pct.2 p_val_adj
ISG15 0 5.5579099 1 1.000 0
IRF7 0 2.9650990 1 1.000 0
IFI6 0 4.7113809 1 0.667 0
LY6E 0 4.5764555 1 0.667 0
BST2 0 1.9673073 1 1.000 0
IFIT3 0 5.1640677 1 0.667 0
UBE2L6 0 3.0946036 1 1.000 0
B2M 0 0.8070993 1 1.000 0
CXCL10 0 5.9372787 1 0.333 0
PSMB9 0 2.3867041 1 1.000 0
LAP3 0 2.6704787 1 1.000 0
IFI44L 0 3.1844365 1 1.000 0
OAS1 0 4.4865678 1 0.667 0
TNFSF10 0 4.9950107 1 0.667 0
IFI35 0 3.2540717 1 1.000 0

Eryth

p_val avg_log2FC pct.1 pct.2 p_val_adj
CXCL10 0.0e+00 7.193009 1 0.000 0.0000000
ISG15 0.0e+00 6.490707 1 0.667 0.0000000
ISG20 0.0e+00 3.640179 1 0.667 0.0000000
IFIT3 0.0e+00 4.102893 1 0.667 0.0000213
CCL8 0.0e+00 6.127280 1 0.000 0.0000498
TNFSF10 0.0e+00 3.488526 1 1.000 0.0000760
IFIT1 0.0e+00 4.313929 1 0.333 0.0004539
IFIT2 0.0e+00 4.689523 1 0.000 0.0005282
LY6E 1.0e-07 3.917862 1 0.667 0.0015448
IFI6 1.0e-07 4.503207 1 0.667 0.0017649
RSAD2 1.0e-07 4.442508 1 0.000 0.0018944
APOBEC3A 2.0e-07 4.817952 1 0.333 0.0024807
MX1 1.9e-06 4.258549 1 0.333 0.0266099
IDO1 2.3e-06 3.931627 1 0.000 0.0328132
TMSB10 3.0e-06 1.945602 1 1.000 0.0417674

Manual pseudobulking and DESeq2 analysis

For comparison purpose, here we do a “quick and dirty” aggregation of counts by replicate to generate pseudobulk counts.

CD14 Mono

baseMean log2FoldChange lfcSE stat pvalue padj
IFIT2 172.84072 7.861982 0.1840059 42.52932 0 0
IFIT1 263.65419 7.838845 0.1394853 55.94016 0 0
TNFSF10 257.25458 7.620842 0.1813963 41.90050 0 0
IFIT3 309.40251 7.399593 0.1080920 68.24024 0 0
IDO1 128.86567 5.941060 0.1337630 44.39388 0 0
ISG20 636.74251 5.841943 0.1085359 53.80949 0 0
MX1 198.10688 5.643502 0.0873087 64.51768 0 0
MT2A 96.76234 5.575020 0.1416471 39.26097 0 0
TNFSF13B 76.40169 5.431631 0.1119429 48.45697 0 0
LY6E 261.48749 5.273206 0.0689292 76.45703 0 0
MX2 46.75834 4.755403 0.1204715 39.35825 0 0
IFITM2 116.60417 4.701933 0.1211843 38.76215 0 0
OAS1 127.30352 4.617684 0.0799027 57.75294 0 0
OASL 95.91076 4.360401 0.0828292 52.59756 0 0
IFI6 286.93014 4.323800 0.0547630 78.93337 0 0

pDC

baseMean log2FoldChange lfcSE stat pvalue padj
APOBEC3B 135.10719 2.678315 1.2899384 16.411249 0 0
ISG20 636.74251 3.934095 0.2436925 15.988169 0 0
IRF7 169.60347 3.193751 0.1993265 15.941507 0 0
ISG15 2007.80909 5.750771 0.3785665 14.957542 0 0
B2M 6936.89506 0.943128 0.0638609 14.768705 0 0
MX1 198.10688 4.421756 0.3427711 12.555048 0 0
BST2 156.00165 2.072990 0.1656865 12.471337 0 0
IFI6 286.93014 5.048545 0.4280139 11.185763 0 0
PSME2 229.00090 1.666401 0.1560894 10.656669 0 0
PSMB9 199.17203 2.634516 0.2577357 10.139591 0 0
UBE2L6 135.75722 3.411390 0.3315059 10.080281 0 0
TSPAN13 24.93118 1.406524 0.1440956 9.692158 0 0
LAP3 83.85327 3.025950 0.3110652 9.583306 0 0
SUB1 114.96228 1.606763 0.1756420 9.120539 0 0
CLIC1 194.16290 1.692570 0.1852991 9.108597 0 0

CD4 Memory T

baseMean log2FoldChange lfcSE stat pvalue padj
IFI6 286.93014 5.830242 0.1797590 32.13157 0 0
LY6E 261.48749 4.343421 0.1504559 28.73221 0 0
MX1 198.10688 4.522493 0.1569094 28.65919 0 0
ISG20 636.74251 3.119907 0.1148983 27.14663 0 0
IFIT3 309.40251 5.956175 0.2417059 24.19210 0 0
MT2A 96.76234 4.491170 0.1949177 22.90607 0 0
UBE2L6 135.75722 2.588143 0.1260038 20.50763 0 0
OASL 95.91076 3.083158 0.1502341 20.46140 0 0
MYL12A 268.51229 1.518500 0.0748932 20.27321 0 0
TMSB10 516.95040 1.514290 0.0748511 20.23003 0 0
OAS1 127.30352 4.309724 0.2126932 20.06503 0 0
IFI44L 75.60428 4.295145 0.2162529 19.68878 0 0
PSME2 229.00090 1.975694 0.1062659 18.58507 0 0
SAMD9 63.14496 3.023133 0.1646109 18.31113 0 0
IFIT1 263.65419 7.010962 0.3653767 18.22945 0 0

T activated

baseMean log2FoldChange lfcSE stat pvalue padj
IFIT3 309.40251 5.547168 0.2745119 19.79683 0 0
ISG20 636.74251 2.855750 0.1509540 18.89536 0 0
APOBEC3B 135.10719 2.083979 1.2911780 17.84608 0 0
MX1 198.10688 4.144752 0.2424381 16.87737 0 0
IFIT2 172.84072 4.901287 0.2912405 16.58689 0 0
LY6E 261.48749 4.559290 0.2768949 16.14455 0 0
UBE2L6 135.75722 2.754497 0.1773796 15.46875 0 0
IRF7 169.60347 3.249894 0.2092749 15.43950 0 0
IFI16 69.36538 2.865160 0.1850911 15.40749 0 0
IFIT1 263.65419 5.846797 0.3715618 15.10182 0 0
OASL 95.91076 3.445572 0.2294242 14.89152 0 0
IFI6 286.93014 5.548752 0.3655096 14.51279 0 0
ISG15 2007.80909 4.104105 0.2860970 14.33367 0 0
EPSTI1 83.97551 3.468627 0.2432844 14.11196 0 0
HLA-E 306.05955 1.144567 0.0822687 13.90993 0 0

CD4 Naive T

baseMean log2FoldChange lfcSE stat pvalue padj
IFI6 286.93014 5.464439 0.1701089 31.86316 0 0
LY6E 261.48749 3.683645 0.1158771 31.71929 0 0
MX1 198.10688 4.752599 0.1700065 27.74621 0 0
ISG20 636.74251 2.872076 0.1143660 25.10723 0 0
PSME2 229.00090 1.866079 0.0818592 22.79111 0 0
UBE2L6 135.75722 2.540697 0.1157882 21.90974 0 0
RGCC 75.79673 -1.561276 0.0722728 -21.60078 0 0
MT2A 96.76234 3.976456 0.1955526 20.21785 0 0
IFIT1 263.65419 6.809867 0.3283580 19.94336 0 0
IRF7 169.60347 3.499355 0.1776524 19.60645 0 0
IFIT3 309.40251 7.382121 0.3594970 19.41153 0 0
GBP1 118.39025 3.329469 0.1762739 18.79389 0 0
TNFSF10 257.25458 4.899273 0.2629796 18.42093 0 0
IFI44L 75.60428 5.049321 0.2748711 18.01332 0 0
BST2 156.00165 2.314810 0.1333878 17.32507 0 0

CD8 T

baseMean log2FoldChange lfcSE stat pvalue padj
ISG20 636.74251 3.158831 0.1302192 24.24023 0 0
IFI6 286.93014 5.209177 0.2160822 23.81676 0 0
LY6E 261.48749 3.686355 0.1724435 21.26362 0 0
APOBEC3B 135.10719 2.772689 1.2608645 19.25013 0 0
MX1 198.10688 5.027382 0.2732465 18.02289 0 0
IFIT3 309.40251 5.176006 0.2843486 17.80326 0 0
IFIT1 263.65419 5.330984 0.3122425 16.64154 0 0
ISG15 2007.80909 4.393424 0.2897978 15.14363 0 0
MT2A 96.76234 4.463575 0.2930863 14.96681 0 0
OASL 95.91076 1.863873 0.1247291 14.91858 0 0
UBE2L6 135.75722 2.372223 0.1665708 14.20018 0 0
BST2 156.00165 2.419942 0.1747497 13.80316 0 0
TMSB10 516.95040 1.187187 0.0863482 13.74795 0 0
IRF7 169.60347 2.833461 0.2115466 13.32444 0 0
PLSCR1 137.61697 4.461319 0.3260162 13.31670 0 0

Mk

baseMean log2FoldChange lfcSE stat pvalue padj
ISG20 636.7425 3.610370 0.1968840 18.256966 0 0
ISG15 2007.8091 5.119880 0.3181416 16.027078 0 0
IFI6 286.9301 4.088482 0.2596851 15.536256 0 0
LY6E 261.4875 3.838435 0.2697312 14.036325 0 0
MX1 198.1069 4.340427 0.3543104 11.900769 0 0
IFIT3 309.4025 5.882138 0.4676566 11.718960 0 0
TNFSF10 257.2546 5.042830 0.4513318 10.653026 0 0
APOBEC3A 251.3289 3.528245 0.3669188 9.549144 0 0
TMSB10 516.9504 1.033793 0.1096088 9.430082 0 0
OAS1 127.3035 2.805807 0.2956475 9.387975 0 0
IRF7 169.6035 3.006910 0.3189207 9.301682 0 0
IFITM3 274.5832 2.906362 0.3229535 8.960744 0 0
PLSCR1 137.6170 2.365890 0.2651782 8.862676 0 0
IFIT1 263.6542 6.840555 0.6533942 8.702263 0 0
UBE2L6 135.7572 2.103286 0.2422214 8.643953 0 0

B Activated

baseMean log2FoldChange lfcSE stat pvalue padj
ISG20 636.74251 3.7643238 0.1485330 25.30180 0 0
ISG15 2007.80909 5.5194950 0.3297108 16.63162 0 0
LY6E 261.48749 3.8897542 0.2639493 14.52462 0 0
UBE2L6 135.75722 2.4611292 0.1780212 13.78157 0 0
GBP2 65.10929 2.0664703 0.1664190 12.38756 0 0
IRF7 169.60347 4.4960735 0.3562054 12.22260 0 0
PSMB9 199.17203 1.8347540 0.1526866 12.00524 0 0
BST2 156.00165 2.3742004 0.2000446 11.82502 0 0
MX1 198.10688 6.0953444 0.4813565 11.54822 0 0
TMSB10 516.95040 1.3926187 0.1232621 11.29783 0 0
PLSCR1 137.61697 5.0971794 0.4266900 11.28722 0 0
IFI6 286.93014 6.2676582 0.5053260 11.09618 0 0
HLA-E 306.05955 0.9178528 0.0848747 10.81300 0 0
B2M 6936.89506 0.6220692 0.0582159 10.68560 0 0
GBP1 118.39025 4.5908306 0.4153488 10.55713 0 0

B

baseMean log2FoldChange lfcSE stat pvalue padj
ISG20 636.74251 3.095214 0.1161413 26.64109 0 0
MX1 198.10688 4.056405 0.1687345 23.90085 0 0
IFI6 286.93014 5.539043 0.2329974 23.40606 0 0
LY6E 261.48749 3.792481 0.1614526 23.37770 0 0
IFIT3 309.40251 6.014411 0.2683498 21.93755 0 0
UBE2L6 135.75722 2.553093 0.1288153 19.78126 0 0
IRF7 169.60347 3.228724 0.1720986 18.69271 0 0
PLSCR1 137.61697 3.832066 0.2106018 18.04537 0 0
IFIT1 263.65419 6.102103 0.3319197 17.78529 0 0
ISG15 2007.80909 5.060182 0.2912069 17.35137 0 0
PSMB9 199.17203 1.735747 0.1031041 16.82719 0 0
EPSTI1 83.97551 3.427662 0.2028949 16.77034 0 0
BST2 156.00165 2.154331 0.1293520 16.62879 0 0
IFITM2 116.60417 3.059478 0.1873869 16.26678 0 0
IFIT2 172.84072 5.252366 0.3175424 16.19725 0 0

DC

baseMean log2FoldChange lfcSE stat pvalue padj
ISG20 636.74251 4.287734 0.1228361 34.88375 0 0
LY6E 261.48749 5.431819 0.1565658 34.49675 0 0
IFI6 286.93014 5.071663 0.1469963 34.34066 0 0
BST2 156.00165 3.089787 0.0998974 30.89760 0 0
MX1 198.10688 6.044883 0.2141879 27.84824 0 0
PLSCR1 137.61697 3.451123 0.1248579 27.59372 0 0
DYNLT1 131.85515 2.766028 0.1025604 26.94034 0 0
LAP3 83.85327 3.579200 0.1360215 26.25637 0 0
IRF7 169.60347 4.072192 0.1549818 26.19601 0 0
TNFSF13B 76.40169 3.131966 0.1201014 26.05017 0 0
GBP1 118.39025 4.621086 0.1825709 25.15633 0 0
ISG15 2007.80909 6.848028 0.2804784 24.39440 0 0
UBE2L6 135.75722 3.828021 0.1607409 23.70972 0 0
OAS1 127.30352 5.660837 0.2368186 23.56200 0 0
HLA-B 1531.43672 1.070696 0.0455191 23.52177 0 0

CD16 Mono

baseMean log2FoldChange lfcSE stat pvalue padj
IFIT1 263.65419 6.327893 0.1479063 42.61468 0 0
IFIT3 309.40251 4.824914 0.0932896 51.65109 0 0
ISG20 636.74251 4.480976 0.1162520 38.52811 0 0
IFI6 286.93014 3.801933 0.0873562 43.47864 0 0
LY6E 261.48749 3.667498 0.0776507 47.20268 0 0
MX1 198.10688 4.456142 0.1192997 37.24790 0 0
DYNLT1 131.85515 2.524547 0.0692774 36.42462 0 0
OASL 95.91076 4.411846 0.1375006 31.98489 0 0
OAS1 127.30352 2.587068 0.0820593 31.51244 0 0
IRF7 169.60347 3.343542 0.1066650 31.32603 0 0
GBP1 118.39025 2.215644 0.0710072 31.19566 0 0
VAMP5 42.14043 2.972171 0.0964914 30.76886 0 0
PLSCR1 137.61697 2.520217 0.0845699 29.78816 0 0
IFIT2 172.84072 5.027072 0.1717597 29.20612 0 0
UBE2L6 135.75722 2.048819 0.0720634 28.42217 0 0

NK

baseMean log2FoldChange lfcSE stat pvalue padj
ISG20 636.74251 3.550586 0.1398965 25.35026 0 0
IFI6 286.93014 5.349777 0.2345674 22.49124 0 0
LY6E 261.48749 2.609751 0.1181689 22.05297 0 0
MX1 198.10688 4.117275 0.2141733 19.04834 0 0
APOBEC3B 135.10719 2.593888 1.2868896 17.93162 0 0
IFIT3 309.40251 6.102019 0.3568874 16.43122 0 0
PLSCR1 137.61697 3.589011 0.2177433 16.35775 0 0
ISG15 2007.80909 4.661134 0.2908123 16.00696 0 0
BST2 156.00165 2.162609 0.1380481 15.63922 0 0
IRF7 169.60347 2.786618 0.1812579 15.32378 0 0
IFIT1 263.65419 5.971977 0.3976677 14.32389 0 0
OAS1 127.30352 3.790555 0.2665773 14.03695 0 0
TNFSF10 257.25458 3.470800 0.2501006 13.79801 0 0
IFI44L 75.60428 3.600944 0.2614385 13.62884 0 0
OASL 95.91076 2.091951 0.1546692 13.49300 0 0

Eryth

baseMean log2FoldChange lfcSE stat pvalue padj
ISG15 2007.8091 6.664123 0.5122093 12.286251 0 0e+00
ISG20 636.7425 3.526329 0.3262437 10.628574 0 0e+00
B2M 6936.8951 0.760745 0.0776290 9.799553 0 0e+00
TMSB10 516.9504 1.974495 0.2299548 8.550522 0 0e+00
TNFSF10 257.2546 3.944141 0.4904742 7.727183 0 0e+00
CXCL10 1038.6100 8.381161 1.0418342 7.170862 0 0e+00
SAT1 466.0248 2.360536 0.3328082 7.045915 0 0e+00
IFITM3 274.5832 3.352631 0.4723902 6.930409 0 0e+00
IFIT3 309.4025 4.869357 0.6349196 6.894641 0 0e+00
CCL8 323.7063 8.056081 0.9883202 6.814458 0 0e+00
LY6E 261.4875 4.353270 0.6274017 6.246165 0 1e-07
IFIT1 263.6542 4.951757 0.7068859 6.113753 0 1e-07
HBG1 130.9253 -9.036780 1.4378977 -6.024940 0 2e-07
ACTB 868.4415 -1.250732 0.2082429 -6.003272 0 2e-07
IFIT2 172.8407 6.262225 0.9386475 5.950158 0 3e-07

Summary tables

CD14 Mono

overexpressed underexpressed
sc 924 1671
bulk 1063 535
manual 1814 1856

pDC

overexpressed underexpressed
sc 83 17
bulk 59 8
manual 272 190

CD4 Memory T

overexpressed underexpressed
sc 238 92
bulk 210 19
manual 455 384

T activated

overexpressed underexpressed
sc 128 16
bulk 110 7
manual 302 246

CD4 Naive T

overexpressed underexpressed
sc 275 182
bulk 240 64
manual 503 798

CD8 T

overexpressed underexpressed
sc 142 46
bulk 108 8
manual 297 165

Mk

overexpressed underexpressed
sc 65 4
bulk 49 9
manual 246 133

B Activated

overexpressed underexpressed
sc 105 24
bulk 83 5
manual 271 117

B

overexpressed underexpressed
sc 213 122
bulk 173 48
manual 502 509

DC

overexpressed underexpressed
sc 404 264
bulk 344 79
manual 1020 808

CD16 Mono

overexpressed underexpressed
sc 460 404
bulk 444 104
manual 1180 760

NK

overexpressed underexpressed
sc 145 51
bulk 109 9
manual 315 175

Eryth

overexpressed underexpressed
sc 12 0
bulk 15 0
manual 115 38

Scatterplots LFCs

CD14 Mono

pDC

CD4 Memory T

T activated

CD4 Naive T

CD8 T

Mk

B Activated

B

DC

CD16 Mono

NK

Eryth

For simplicity, the same threshold of adjusted p-values of 0.1 was used to label the genes as significant for each of the approaches, but they are using different statistical tests (Seurat vs. manual DESeq2), based on different genes background (Seurat vs. manual DESeq2) and different number of samples (single cell vs. pseudobulk). Thus it is not surprising that the adjusted p-values differ. The LFCs, while not identical, at least are following the same trend.