Study: Sp140L Is a Herpesvirus Restriction Factor [scRNA-seq]
Herpesviruses, including the oncogenic Epstein-Barr Virus (EBV), must bypass host DNA sensing mechanisms to drive infection and pathogenesis. The first viral latency protein expressed, EBNA-LP, is essential for the transformation of naïve B cells, yet its role in evading host defenses remains unclear. Using single-cell RNA sequencing of EBNA-LP-Knockout (LPKO)-infected B cells, we reveal an antiviral response landscape implicating the ‘speckled proteins’ as key restriction factors countered by EBNA-LP. Specifically, loss of SP100 or the primate-specific SP140L reverses the restriction of LPKO, suppresses a subset of canonically interferon-stimulated genes, and restores viral gene transcription and cellular proliferation. Notably, we also identify Sp140L as a restriction target of the herpesvirus saimiri ORF3 protein, implying a role in immunity to other DNA viruses. This study reveals Sp140L as a restriction factor that we propose links sensing and transcriptional suppression of viral DNA to an IFN-independent innate immune response, likely relevant to all nuclear DNA viruses.
Single cell RNAseq data from B cells in a timecourse of LPKO or WT EBV infection. Samples including uninfected (Day 0), and 2, 5, and 8 days post-infection.
M Cable J, Wongwiwat W, C Grabowski J, E White R, A Luftig M Duke University
## Loading required package: SeuratObject
## Loading required package: sp
##
## Attaching package: 'SeuratObject'
## The following objects are masked from 'package:base':
##
## intersect, t
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr 1.1.4 ✔ readr 2.1.5
## ✔ forcats 1.0.0 ✔ stringr 1.5.1
## ✔ ggplot2 3.5.1 ✔ tibble 3.2.1
## ✔ lubridate 1.9.4 ✔ tidyr 1.3.1
## ✔ purrr 1.0.2
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag() masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
## Loading required package: SummarizedExperiment
##
## Loading required package: MatrixGenerics
##
## Loading required package: matrixStats
##
##
## Attaching package: 'matrixStats'
##
##
## The following object is masked from 'package:dplyr':
##
## count
##
##
##
## Attaching package: 'MatrixGenerics'
##
##
## The following objects are masked from 'package:matrixStats':
##
## colAlls, colAnyNAs, colAnys, colAvgsPerRowSet, colCollapse,
## colCounts, colCummaxs, colCummins, colCumprods, colCumsums,
## colDiffs, colIQRDiffs, colIQRs, colLogSumExps, colMadDiffs,
## colMads, colMaxs, colMeans2, colMedians, colMins, colOrderStats,
## colProds, colQuantiles, colRanges, colRanks, colSdDiffs, colSds,
## colSums2, colTabulates, colVarDiffs, colVars, colWeightedMads,
## colWeightedMeans, colWeightedMedians, colWeightedSds,
## colWeightedVars, rowAlls, rowAnyNAs, rowAnys, rowAvgsPerColSet,
## rowCollapse, rowCounts, rowCummaxs, rowCummins, rowCumprods,
## rowCumsums, rowDiffs, rowIQRDiffs, rowIQRs, rowLogSumExps,
## rowMadDiffs, rowMads, rowMaxs, rowMeans2, rowMedians, rowMins,
## rowOrderStats, rowProds, rowQuantiles, rowRanges, rowRanks,
## rowSdDiffs, rowSds, rowSums2, rowTabulates, rowVarDiffs, rowVars,
## rowWeightedMads, rowWeightedMeans, rowWeightedMedians,
## rowWeightedSds, rowWeightedVars
##
##
## Loading required package: GenomicRanges
##
## Loading required package: stats4
##
## Loading required package: BiocGenerics
##
##
## Attaching package: 'BiocGenerics'
##
##
## The following objects are masked from 'package:lubridate':
##
## intersect, setdiff, union
##
##
## The following objects are masked from 'package:dplyr':
##
## combine, intersect, setdiff, union
##
##
## The following object is masked from 'package:SeuratObject':
##
## intersect
##
##
## The following objects are masked from 'package:stats':
##
## IQR, mad, sd, var, xtabs
##
##
## The following objects are masked from 'package:base':
##
## anyDuplicated, aperm, append, as.data.frame, basename, cbind,
## colnames, dirname, do.call, duplicated, eval, evalq, Filter, Find,
## get, grep, grepl, intersect, is.unsorted, lapply, Map, mapply,
## match, mget, order, paste, pmax, pmax.int, pmin, pmin.int,
## Position, rank, rbind, Reduce, rownames, sapply, setdiff, table,
## tapply, union, unique, unsplit, which.max, which.min
##
##
## Loading required package: S4Vectors
##
##
## Attaching package: 'S4Vectors'
##
##
## The following objects are masked from 'package:lubridate':
##
## second, second<-
##
##
## The following objects are masked from 'package:dplyr':
##
## first, rename
##
##
## The following object is masked from 'package:tidyr':
##
## expand
##
##
## The following object is masked from 'package:utils':
##
## findMatches
##
##
## The following objects are masked from 'package:base':
##
## expand.grid, I, unname
##
##
## Loading required package: IRanges
##
##
## Attaching package: 'IRanges'
##
##
## The following object is masked from 'package:lubridate':
##
## %within%
##
##
## The following objects are masked from 'package:dplyr':
##
## collapse, desc, slice
##
##
## The following object is masked from 'package:purrr':
##
## reduce
##
##
## The following object is masked from 'package:sp':
##
## %over%
##
##
## Loading required package: GenomeInfoDb
##
## Loading required package: Biobase
##
## Welcome to Bioconductor
##
## Vignettes contain introductory material; view with
## 'browseVignettes()'. To cite Bioconductor, see
## 'citation("Biobase")', and for packages 'citation("pkgname")'.
##
##
##
## Attaching package: 'Biobase'
##
##
## The following object is masked from 'package:MatrixGenerics':
##
## rowMedians
##
##
## The following objects are masked from 'package:matrixStats':
##
## anyMissing, rowMedians
##
##
##
## Attaching package: 'SummarizedExperiment'
##
##
## The following object is masked from 'package:Seurat':
##
## Assays
##
##
## The following object is masked from 'package:SeuratObject':
##
## Assays
##
##
## Loading required package: AnnotationDbi
##
##
## Attaching package: 'AnnotationDbi'
##
##
## The following object is masked from 'package:dplyr':
##
## select
##
##
##
##
##
## Attaching package: 'SingleR'
##
##
## The following objects are masked from 'package:celldex':
##
## BlueprintEncodeData, DatabaseImmuneCellExpressionData,
## HumanPrimaryCellAtlasData, ImmGenData, MonacoImmuneData,
## MouseRNAseqData, NovershternHematopoieticData
##
##
##
## Attaching package: 'plotly'
##
##
## The following object is masked from 'package:AnnotationDbi':
##
## select
##
##
## The following object is masked from 'package:IRanges':
##
## slice
##
##
## The following object is masked from 'package:S4Vectors':
##
## rename
##
##
## The following object is masked from 'package:biomaRt':
##
## select
##
##
## The following object is masked from 'package:ggplot2':
##
## last_plot
##
##
## The following object is masked from 'package:stats':
##
## filter
##
##
## The following object is masked from 'package:graphics':
##
## layout
##
##
##
## Attaching package: 'htmlwidgets'
##
##
## The following object is masked from 'package:Seurat':
##
## JS
##
##
## The following object is masked from 'package:SeuratObject':
##
## JS
## scRNAseq data of total 22428 cells
## [1] 14382 22428
## Warning: The following requested variables were not found (10 out of 62 shown):
## LMP-2B-ebv, BCRF1-ebv, BWRF1-ebv, BWRF1-2-ebv, BWRF1-3-ebv, BWRF1-4-ebv,
## BWRF1-5-ebv, BWRF1-6-ebv, BWRF1-7-ebv, BWRF1-8-ebv
## Epstein Barr Virus Type I protein coding gene sequences found in fastq files
## [1] "LMP-2A-ebv" "BNRF1-ebv" "EBNA-LP-ebv"
## [4] "EBNA-2-ebv" "BHRF1-ebv" "BFRF1A-ebv"
## [7] "BFRF3-ebv" "BORF2-ebv" "BMRF2-ebv"
## [10] "BSRF1-ebv" "BLRF2-ebv" "BLLF1-ebv"
## [13] "EBNA-3A-ebv" "EBNA-3B/EBNA-3C-ebv" "BRRF1-ebv"
## [16] "BRRF2-ebv" "EBNA-1-ebv" "BKRF4-ebv"
## [19] "BBRF1-ebv" "BBRF2-ebv" "BBRF3-ebv"
## [22] "BGRF1-BDRF1-ebv" "BDLF3-ebv" "BcRF1-ebv"
## [25] "BTRF1-ebv" "BILF2-ebv" "BALF3-ebv"
## [28] "BARF0-ebv" "LMP-1-ebv" "LMP-1-1-ebv"
## [31] "LMP-1-2-ebv"
## Timecourse conditions and count numbers
##
## ebv_day0 ebv_day2 ebv_day5 ebv_day8
## 6961 3576 6311 5580
## Differentially expressed EBV genes comparing day8 to day2(ctrl)
## p_val avg_log2FC pct.1 pct.2 p_val_adj
## LMP-1-ebv 1.809003e-122 4.01135419 0.188 0.024 2.601708e-118
## LMP-1-2-ebv 1.671821e-40 7.22242292 0.048 0.000 2.404413e-36
## BARF0-ebv 5.728767e-32 2.27197964 0.084 0.025 8.239112e-28
## BFRF3-ebv 7.667895e-12 -1.24444921 0.006 0.022 1.102797e-07
## EBNA-2-ebv 1.074699e-08 -0.02560028 0.471 0.607 1.545632e-04
## BMRF2-ebv 4.503673e-06 -0.82990380 0.004 0.013 6.477183e-02
## BNRF1-ebv 1.889490e-05 1.81203945 0.028 0.014 2.717465e-01
## BORF2-ebv 2.020845e-03 -0.26812293 0.010 0.017 1.000000e+00
## BLRF2-ebv 3.988521e-03 0.22271334 0.037 0.050 1.000000e+00
## BTRF1-ebv 5.399823e-03 1.16676754 0.013 0.007 1.000000e+00
## EBNA-LP-ebv 5.395900e-02 0.26335657 0.330 0.396 1.000000e+00
## BBRF3-ebv 6.115424e-02 -0.11320968 0.006 0.010 1.000000e+00
## EBNA-3A-ebv 8.496671e-02 0.40604844 0.065 0.076 1.000000e+00
## EBNA-1-ebv 9.207399e-02 0.78769510 0.113 0.108 1.000000e+00
## BKRF4-ebv 1.705425e-01 0.25134984 0.013 0.016 1.000000e+00
## EBNA-3B/EBNA-3C-ebv 1.837851e-01 0.55411899 0.103 0.117 1.000000e+00
## BHRF1-ebv 2.716028e-01 0.57337384 0.070 0.067 1.000000e+00
## After 8 days of infection, CD19 expression reduces as PDL1 and PDL2 expressions increase
## Heatmaps of infected B-cells only expressing 1 or more viral genes
## Heatmap comparison of differentially expressed B-cell markers between day8 and day5(ctrl)