Characterization of atypical Ebola virus disease in ferrets.
The 3 matches
- [1] § Materials and methods › Transcriptomics ↔ Scripts/Transcriptomic_Analysis.R, lines 90–133 · score 0.71 · log transformation, highest variance, DESeq2, pheatmap, transcriptomic, heatmaps
- [2] § Materials and methods › Proteomics ↔ Scripts/Transcriptomic_Analysis.R, lines 1–47 · score 0.61 · Mustela putorius, GO Term, database, transcriptomic, ID
- [3] § Results › Animals dying of atypical EVD had high levels of virus in the brain ↔ Scripts/SNP_Heatmaps.R, lines 1–63 · score 0.61 · E180V, t9267c, VP24, VP30, GP, mutations
Paper
Loaded from Europe PMC by your browser, not stored by OSCR: doi.org · Europe PMC
The paper is loaded when this pane is shown.
The authors' code
R · 283 lines · 9.3 KB · Apache-2.0 · 2 matches
- # Transcriptomic Analysis for Ferret Brain samples
- # Jordan Wight, PhD
- # [email hidden] / [email hidden]
- # Public Health Agency of Canada, National Microbiology Lab, Special Pathogens
- ###############################################################################
- # Load required packages
- library("BRGenomics")
- library("DESeq2")
- library("rtracklayer")
- library("dplyr")
- library("AnnotationHub")
- library("ggplot2")
- library("pheatmap")
- library("RColorBrewer")
- library("tibble")
- library("GO.db")
- # Import the ferret gff database that was used to align
- genelist <- import.gff2("../Data/Transcriptomics/genes.gtf")
- id2name <- genelist@elementMetadata %>%
- as_tibble() %>%
- dplyr::select(gene_id, gene_name) %>%
- distinct() %>%
- filter(!is.na(gene_name))
- # Import ferret annotations and GO terms
- ah <- AnnotationHub()
- # R asks if you want to create the directory, type yes if no snapshot exists
- orgs <- query(ah, "OrgDb")
- mput.db <- query(ah,'org.Mustela_putorius_furo.eg.sqlite')
- ferretGOdb <- mput.db[["AH120337"]]
- # If AnnotationHub updates, may have to change this accession number,
- #if so, run the below to see current accession number
- query(ah,'org.Mustela_putorius_furo.eg.sqlite')
- # Read in aligned data (checking first if merged file already exists)
- if(file.exists("../Data/Transcriptomics/br_data.Rdata")){
- br_data <- readRDS("../Data/Transcriptomics/br_data.Rdata")
- } else {
- br_data <- list(Acute_rep1 = import_bam("../Data/Transcriptomics/141M-BR.bam",
- revcomp = T, mapq = 20, paired_end = F),
- Acute_rep2 = import_bam("../Data/Transcriptomics/451F-BR.bam",
- revcomp = T, mapq = 20, paired_end = F),
- Atypical_rep1 = import_bam("../Data/Transcriptomics/698F-BR.bam",
- revcomp = T, mapq = 20, paired_end = F),
- Survivor_rep1 = import_bam("../Data/Transcriptomics/701F-BR.bam",
- revcomp = T, mapq = 20, paired_end = F),
- Acute_rep3 = import_bam("../Data/Transcriptomics/736M-BR.bam",
- revcomp = T, mapq = 20, paired_end = F),
- Atypical_rep2 = import_bam("../Data/Transcriptomics/744M-BR.bam",
- revcomp = T, mapq = 20, paired_end = F),
- Atypical_rep3 = import_bam("../Data/Transcriptomics/965M-BR.bam",
- revcomp = T, mapq = 20, paired_end = F),
- Survivor_rep2 = import_bam("../Data/Transcriptomics/993M-BR.bam",
- revcomp = T, mapq = 20, paired_end = F))
- }
- # Calculate normalization factors
- brain_NF <- getSpikeInNFs(br_data, si_pattern = "spikein", ctrl_pattern = "Survivor",
- ncores = 1, batch_norm = F)
- # Prepare the dataset for analysis
- Brain_dsd <- getDESeqDataSet(br_data, genelist, gene_names = genelist$gene_id,
- ncores = 1, sizeFactors = 1/brain_NF)
- # Estimate size factors
- dds <- estimateSizeFactors(Brain_dsd)
- ################### Remove ERCC and EBOV genes
- dds1<-dds
- # Make list of EBOV genes (8 b/c GP and sGP)
- genesToRemove<-c("gene-VP30","nbis-gene-2","nbis-gene-1","gene-VP40","gene-VP35",
- "gene-NP","gene-VP24","gene-L")
- # Remove them from DESeqDataSet
- dds1.1<-dds1[setdiff(rownames(dds1), genesToRemove),]
- # R log transformation of this data with the EBOV genes removed
- rld1.1 <- rlog(dds1.1, blind = FALSE)
- ######### Make heatmap of the top 50 genes (highest variance)
- # Pull top 50 genes with the highest variance across samples
- topVarGenes3.1 <- head(order(rowVars(assay(rld1.1)), decreasing = TRUE), 50)
- # Build matrices
- mat <- assay(rld1.1)[ topVarGenes3.1, ]
- mat <- mat - rowMeans(mat)
- anno <- as.data.frame(colData(rld1.1)[, c("condition","replicate")])
- pheatmap(mat, annotation_col = anno) # base plot
- # Real plot with good and nice color scale
- color.divisions<-100
- pheatmap(mat,
- breaks = seq(-8,8, length.out=(color.divisions + 1)),
- color = rev(hcl.colors(101,"RdBu")))
- ################# Associate gene names with these
- # Turn the matrix of top 50 most variable genes to data frame
- mat2<-as.data.frame(mat)
- # Make row name (gene ID) the first column
- mat2 <- tibble::rownames_to_column(mat2, "gene_id")
- # Join and match the gene names to the matrix
- top50genes <- mat2 %>%
- left_join(id2name,by="gene_id")
- top50genes.2<-top50genes %>%
- remove_rownames %>%
- column_to_rownames(var="gene_id")
- # Plot top50 genes, including those with no names
- pheatmap(mat,
- breaks = seq(-8,8, length.out=(color.divisions + 1)),
- color = rev(hcl.colors(101,"RdBu")),
- labels_row = top50genes.2$gene_name)
- # Reorder animal IDs, sorting based on fold change per outcome
- top50all_reorder<- mat[,c("Survivor_rep1",
- "Survivor_rep2",
- "Atypical_rep2",
- "Atypical_rep3",
- "Atypical_rep1",
- "Acute_rep2",
- "Acute_rep1",
- "Acute_rep3")]
- top50all_reorder<-as.data.frame(top50all_reorder)
- # Rename column names to animal IDs
- top50all_reorder<-rename(top50all_reorder,
- "701F" = Survivor_rep2,
- "993M" = Survivor_rep1,
- "744M" = Atypical_rep3,
- "965M" = Atypical_rep1,
- "698F" = Atypical_rep2,
- "451F" = Acute_rep1,
- "141M" = Acute_rep3,
- "736M" = Acute_rep2)
- names(top50all_reorder)<-c("701F","993M",
- "744M","965M","698F",
- "451F","141M","736M")
- # With ENSEMBL IDs
- p5<-pheatmap(top50all_reorder,
- breaks = seq(-8,8, length.out=(color.divisions + 1)),
- color = rev(hcl.colors(101,"RdBu")),
- cluster_cols = FALSE,
- fontsize = 22,
- angle_col = "90")
- # Renamed with gene names/NAs if no name
- p5.1<-pheatmap(top50all_reorder,
- breaks = seq(-8,8, length.out=(color.divisions + 1)),
- color = rev(hcl.colors(101,"RdBu")),
- cluster_cols = FALSE,
- labels_row = top50genes.2$gene_name,
- fontsize = 22,
- angle_col = "90")
- ggsave("Ferret_Transcriptomics_top50named_DE_genes_2026-03-26.tiff",
- plot=p5.1,
- width=15,
- height=19,
- units=c("in"),
- dpi=600)
- # These are used to make the figure for the supplement.
- ########### Now get the top 50 named genes, since their roles/functions can be discussed
- # First pull top 1000 most variable
- topVarGenes3.2 <- head(order(rowVars(assay(rld1.1)), decreasing = TRUE), 1000)
- # Build matrices
- mat.1 <- assay(rld1.1)[ topVarGenes3.2, ]
- mat.1 <- mat.1 - rowMeans(mat.1)
- mat.1a<-as.data.frame(mat.1)
- mat.1b <- tibble::rownames_to_column(mat.1a, "gene_id")
- # Join and match the gene names to the matrix
- top1000genes <- mat.1b %>%
- left_join(id2name,by="gene_id")
- # Remove rows that have NA for the gene_name
- top803genes<-dplyr::filter(top1000genes,!is.na(gene_name))
- # Make new ID file for ENSEMBL ID and gene names, top 803
- ENS_plus_names<-data.frame(top803genes$gene_id,top803genes$gene_name)
- names(ENS_plus_names)[1]<-"gene_id"
- names(ENS_plus_names)[2]<-"gene_name"
- # Put ENSEMBL ID back to row names
- top803<-top803genes %>%
- remove_rownames %>%
- column_to_rownames(var="gene_id")
- # Remove gene names
- top803$gene_name<-NULL
- # Already ranked as the most variable, now just pull the top 50
- top803variable50 <- head(top803,50)
- top803variable50.1<-tibble::rownames_to_column(top803variable50, "gene_id")
- top50namedgenes <- top803variable50.1 %>%
- left_join(ENS_plus_names,by="gene_id")
- # Check with a heatmap
- pheatmap(top803variable50,
- breaks = seq(-8,8, length.out=(color.divisions + 1)),
- color = rev(hcl.colors(101,"RdBu")))
- # Renaming worked correctly, confirmed
- pheatmap(top803variable50,
- breaks = seq(-8,8, length.out=(color.divisions + 1)),
- color = rev(hcl.colors(101,"RdBu")),
- labels_row = ENS_plus_names$gene_name)
- # Reorder animal IDs, sorting based on fold change per outcome
- top803variable50_reorder<- top803variable50[,c("Survivor_rep1",
- "Survivor_rep2",
- "Atypical_rep2",
- "Atypical_rep3",
- "Atypical_rep1",
- "Acute_rep2",
- "Acute_rep1",
- "Acute_rep3")]
- names(top803variable50_reorder)<-c("701F","993M",
- "744M","965M","698F",
- "451F","141M","736M")
- ##### Here's the top50 named genes, ordered by outcome and intensity
- p6<-pheatmap(top803variable50_reorder,
- breaks = seq(-8,8, length.out=(color.divisions + 1)),
- color = rev(hcl.colors(101,"RdBu")),
- labels_row = ENS_plus_names$gene_name,
- cluster_cols = FALSE,
- fontsize = 22,
- angle_col = "90")
- ggsave("Ferret_Transcriptomics_top50_with_names_DE_genes.tiff",
- plot=p6,
- width=15,
- height=19,
- units=c("in"),
- dpi=600)
- # This is Figure 4A in the manuscript.
Transcriptomic_Analysis.R at commit ef8dac5, under Apache-2.0 · at the source
Overview
- Special Pathogens Program, National Microbiology Laboratory, Public Health Agency of Canada, Winnipeg, Manitoba, Canada
- Mycobacteriology, Vector-Borne and Prion Diseases Division, National Microbiology Laboratory, Public Health Agency of Canada, Winnipeg, Manitoba, Canada
- Mass Spectrometry and Proteomics Core, National Microbiology Laboratory, Public Health Agency of Canada, Winnipeg, Manitoba, Canada
- United States Army Medical Research Institute of Infectious Diseases, Fort Detrick, Frederick, Maryland, United States of America
- Center for Vaccine Innovation, La Jolla Institute for Immunology, La Jolla, California, United States of America
- Deptartment of Medicine, University of California San Diego, La Jolla, California, United States of America
- Department of Medical Microbiology and Infectious Diseases, University of Manitoba, Winnipeg, Manitoba, Canada
Abstract
Ebola virus (EBOV) infection typically results in severe—and often lethal—acute disease. However, increasing evidence suggests that EBOV can persist in certain immune-privileged tissues, which may then serve as reservoirs for the later reemergence of EBOV and disease recrudescence. Here, we report atypical EVD recrudescence in a ferret model inoculated with an otherwise lethal dose of EBOV and treated with low doses of a highly potent monoclonal antibody cocktail. Among 32 antibody-treated ferrets, 14 animals survived, while 8 succumbed to acute EVD within about 5–8 days. The remaining 10 animals succumbed to atypical EVD between 12 and 18 days post-infection (DPI) despite having shown no, or very minor, signs of illness during the acute phase of disease. While viremia disappeared by 14 DPI in most animals that succumbed to atypical EVD, it rebounded modestly just prior to death. Unlike animals that died of acute EVD, those that died of atypical EVD showed only a moderate systemic inflammatory response and few signs of organ dysfunction, in line with low levels of virus in the liver and spleen. Interestingly, however, ferrets that died of atypical EVD showed high levels of virus in the brain, consistent with increased markers of inflammation in the central nervous system and significant pathological changes, including a breakdown in the blood-brain barrier and severe meningoencephalitis. Not only does this study shed important light on the atypical and underappreciated manifestations of EVD, but it also establishes the ferret as a valuable model of EBOV recrudescence.
Reproduced under the paper's license (CC0), from the paper cited above.
Repository
Its files are read in the Code ↔ Paper reader above, with 3 matches between paragraphs and lines of code.
jaudetnml/Atypical_EBOV_ferrets
ef8dac5ec1eecf35ec2ac648d6b5d22da6d8c0d3, 17 April 2026Availability: 1 check, the latest on 28 September 2026: the link answers
- 28 September 2026: the link answers
5 files
- Scripts/
Proteomic_Analysis.R , R, 162 lines - Scripts/
SNP_Heatmaps.R , R, 228 lines, 1 match - Scripts/
Transcriptomic_Analysis. , R, 283 lines, 2 matchesR - LICENSE, License, 51 lines
- README.md, Text, 27 lines
The paper's code and data availability statement is in the Data section.
Tracing map
Proposed by the machine: these links were found in the paper and verified at the source, without human review. The map will receive a Zenodo DOI once one of the paper's authors has validated it with their ORCID.
What the map holds:
- 1 repository of the authors' code, each at its verified commit, with its license and how the link was found in the paper;
- 3 scripts, each with its path and the digest of its content;
- 3 matches between paragraphs of the paper and lines of the code (method lexical-v1);
- neither the text of the paper nor the code itself.
Its JSON (tracing-map.json) is deposited on Zenodo with its DOI once the map is validated.
Data
Data links
- ncbi.nlm.nih.gov/
sra , NCBI; found in “Data Availability”
Data Availability
The raw sequencing data are available on the Sequence Read Archive (https://
Reproduced under the paper's license (CC0), from the paper cited above.
Versions
The history of this record: each version stored by the harvester or made by a correction of its authors or of the maintainers of its code, and what changed in its facts. The texts of the paper (its abstract, its availability statements) are not part of it; versions that changed only those are not listed.
Version 1, 28 September 2026: the first record
Recorded: type, language, journal, volume, issue, pages, dates, 20 authors, 9 MeSH terms, 3 funders, 51 references.
Cite
This paper
Cao, W., He, S., Schulz, H., Wight, J., Chan, M., Emeterio, K., Liu, G., Audet, J., Tierney, K., Azaransky, K., Frost, K., Gee, L., McQueen, P., Chong, P., Sulkosky, S. B., Booth, S., Westmacott, G., Saphire, E. O., Zeng, X., & Banadyga, L. (2026). Characterization of atypical Ebola virus disease in ferrets. PLoS pathogens, 22(5), e1013916. https://
BibTeX
@article{cao2026characte
author = {Cao, Wenguang and He, Shihua and Schulz, Helene and Wight, Jordan and Chan, Michael and Emeterio, Karla and Liu, Guodong and Audet, Jonathan and Tierney, Kevin and Azaransky, Kimberly and Frost, Kathy and Gee, Lilianne and McQueen, Peter and Chong, Patrick and Sulkosky, Sarah B and Booth, Stephanie and Westmacott, Garrett and Saphire, Erica Ollmann and Zeng, Xiankun and Banadyga, Logan},
title = {{Characterization of atypical Ebola virus disease in ferrets}},
journal = {PLoS pathogens},
year = {2026},
month = may,
volume = {22},
number = {5},
pages = {e1013916},
publisher = {PLOS},
issn = {1553-7366},
doi = {10.1371/
url = {https://
pmid = {42081574},
pmcid = {PMC13155671}
}
RIS
TY - JOUR
AU - Cao, Wenguang
AU - He, Shihua
AU - Schulz, Helene
AU - Wight, Jordan
AU - Chan, Michael
AU - Emeterio, Karla
AU - Liu, Guodong
AU - Audet, Jonathan
AU - Tierney, Kevin
AU - Azaransky, Kimberly
AU - Frost, Kathy
AU - Gee, Lilianne
AU - McQueen, Peter
AU - Chong, Patrick
AU - Sulkosky, Sarah B
AU - Booth, Stephanie
AU - Westmacott, Garrett
AU - Saphire, Erica Ollmann
AU - Zeng, Xiankun
AU - Banadyga, Logan
TI - Characterization of atypical Ebola virus disease in ferrets
T2 - PLoS pathogens
J2 - PLoS Pathog
PY - 2026
DA - 2026/
VL - 22
IS - 5
SP - e1013916
SN - 1553-7366
PB - PLOS
DO - 10.1371/
UR - https://
LA - en
ER -
CSL-JSON
{
"id": "10.1371/
"type": "article-journal",
"title": "Characterization of atypical Ebola virus disease in ferrets",
"container-title": "PLoS pathogens",
"author": [
{
"family": "Cao",
"given": "Wenguang"
},
{
"family": "He",
"given": "Shihua"
},
{
"family": "Schulz",
"given": "Helene"
},
{
"family": "Wight",
"given": "Jordan"
},
{
"family": "Chan",
"given": "Michael"
},
{
"family": "Emeterio",
"given": "Karla"
},
{
"family": "Liu",
"given": "Guodong"
},
{
"family": "Audet",
"given": "Jonathan"
},
{
"family": "Tierney",
"given": "Kevin"
},
{
"family": "Azaransky",
"given": "Kimberly"
},
{
"family": "Frost",
"given": "Kathy"
},
{
"family": "Gee",
"given": "Lilianne"
},
{
"family": "McQueen",
"given": "Peter"
},
{
"family": "Chong",
"given": "Patrick"
},
{
"family": "Sulkosky",
"given": "Sarah B"
},
{
"family": "Booth",
"given": "Stephanie"
},
{
"family": "Westmacott",
"given": "Garrett"
},
{
"family": "Saphire",
"given": "Erica Ollmann"
},
{
"family": "Zeng",
"given": "Xiankun"
},
{
"family": "Banadyga",
"given": "Logan"
}
],
"container-title-short":
"volume": "22",
"issue": "5",
"page": "e1013916",
"DOI": "10.1371/
"PMID": "42081574",
"PMCID": "PMC13155671",
"ISSN": "1553-7366",
"publisher": "PLOS",
"URL": "https://
"language": "en",
"issued": {
"date-parts": [
[
2026,
5,
4
]
]
}
}
The tracing map gets a citation of its own once an author has validated it and it has a DOI.
Similar papers
The papers with a page that share the most with this one: the tools found in their code, their categories, datasets, cited references and authors, the rarest counting most.
- [1] doi:10.1038/s41467-026-73305-8 [code]
- Comparative analysis of the cellular landscape in mammalian striatum.Journal: Nature communicationsIn common: DESeq2, pheatmap, cowplot, 5 other tools, other
- [2] doi:10.1038/s41467-026-76675-1 [code]
- Long-read proteogenomic atlas of human neuronal differentiation reveals isoform diversity informing neurodevelopmental risk mechanisms.Journal: Nature communicationsIn common: DESeq2, pheatmap, cowplot, 5 other tools, 1 reference
- [3] doi:10.1093/bioinformatics/btag592 [code]
- Network-based stratification of allele-specific expression reveals patient subgroups in Huntington's disease.Journal: Bioinformatics (Oxford, England)In common: DESeq2, pheatmap, cowplot, 5 other tools, 1 reference
- [4] doi:10.21203/rs.3.rs-9927928/v1 [code]
- Genome-wide and allele-resolved maps of the radial architecture of the mouse genomeJournal: Research Square (preprint)In common: DESeq2, pheatmap, cowplot, 5 other tools, 1 reference
- [5] doi:10.1038/s41514-026-00397-3 [code]
- Nasal administration of Protollin enhances monocyte phagocytosis and decreases CD8&
lt;sup& gt;+& lt;/ sup& gt; T cell cytotoxicity in subjects with early Alzheimer's disease: a Phase 1 clinical trial. Journal: npj agingIn common: DESeq2, pheatmap, cowplot, 5 other tools, 1 reference - [6] doi:10.1016/j.xcrm.2026.102766 [code]
- A longitudinal single-cell and spatial multiomic atlas of pediatric high-grade glioma.Journal: Cell reports. MedicineIn common: DESeq2, pheatmap, cowplot, 5 other tools, 1 reference
- [7] doi:10.1016/j.celrep.2026.117073 [code]
- Single-cell epigenomics uncovers heterochromatin instability and transcription factor dysfunction during mouse brain aging.Journal: Cell reportsIn common: DESeq2, pheatmap, cowplot, 5 other tools, 1 reference
- [8] doi:10.1038/s41586-026-10629-x [code]
- Whole-genome duplication shaped cell-type evolution in the vertebrate brain.Journal: NatureIn common: DESeq2, pheatmap, cowplot, 4 other tools, other, 1 reference
- [9] doi:10.1016/j.isci.2026.115196 [code]
- Transcriptional and cellular maturation of the chick spinal cord in the context of distinct neuromuscular circuits.Journal: iScienceIn common: DESeq2, pheatmap, cowplot, 4 other tools, other, 1 reference
- [10] doi:10.1002/imt2.70163 [code]
- Spatial multi-omics unveils sphingolipid metabolic reprogramming within the retinal pathological niche.Journal: iMetaIn common: DESeq2, pheatmap, cowplot, 5 other tools
Contribute
The authors of this paper can claim it, correct its record and validate its tracing map, and the maintainers of its code (its owner, or a public member of its organization) correct what it says of their repository; anyone signed in can ask for its removal. Every request goes to OSCR's own machine, which answers it; your account page follows them.
Sign in with ORCID to claim this paper as one of its authors, correct its record or validate its tracing map: when the paper's metadata lists your ORCID iD, you are recognized at once. Maintainers of its code: sign in with GitHub, then claim the repository on your account page.
Claim this paper
Correct its record
Say what each link of this record is, remove the ones that are not the paper's, add the ones that are missing. The correction becomes a new version of the record, in its Versions section.
Validate its tracing map
You validate the map as this page shows it: 1 repository of the authors' code, each at its verified commit and with its license, 3 scripts, and 3 matches between paragraphs and code (see the Code and Map sections). It then receives a DOI on Zenodo, with you (your ORCID iD) and OSCR as its creators; the code itself is not deposited.
The map's fingerprint: sha256:c97f9ce06f5ac5af…
Add the badge to its README
The badge links the code to this page. Copy one of these into the README of the paper's code: only you decide where it goes, and nothing is changed for you.
Markdown
[, paste the snippet at the top, then “Commit changes…” and, to review it first, “Create a new branch and start a pull request”. You open the pull request; OSCR asks for no permission.
Request its removal
To ask OSCR to remove this record, the copies of its authors' scripts or its tracing map, use the removal request page: signed in, you say who you are, what to remove and why, then review and confirm the request. Published rules decide every request (how).
Discussion, reproductions, activity
Discussion: questions and error reports about this paper and its code, from signed-in readers and its authors. It opens with sign-in.
Reproductions: reports from readers who ran the authors' code: what they reproduced, with which environment, commit and data. It opens with sign-in.
Activity: what happens around this paper: new versions of its record, its map's validation, discussions and reproductions. It opens with sign-in.
