Source: TBA
macrophage scRNAseq project michelle Wong 2023-07-05
Edits by Mark Ziemann Sept 2023
Purpose of the edits is to output all detected genes from the Seurat differential expression objects for downstream enrichment analysis using the mitch package.
suppressPackageStartupMessages({
library("Seurat")
library("SeuratWrappers")
library("ggplot2")
library("dplyr")
library("tidyr")
library("harmony")
library("mitch")
library("kableExtra")
})
toload<-list.files("counts")
toloadMDM<-grep("^O238|^PV238|^P239", toload, value = TRUE)
processeddata<-list()
for (i in toloadMDM){
sample<-gsub("_filtered_feature_bc_matrix", "", i)
data<-Read10X(paste("counts", i, sep = "/"))
processeddata[[i]]<-CreateSeuratObject(counts = data$`Gene Expression`, project = sample)
processeddata[[i]][["ADT"]]<-CreateAssayObject(counts = data$`Antibody Capture`)
hash<-processeddata[[i]]@assays$ADT@data
hash<-hash[rowMeans(hash)>1,]
print(rownames(hash))
processeddata[[i]][["HTO"]]<-CreateAssayObject(hash)
processeddata[[i]][["HTO"]] <- NormalizeData(processeddata[[i]][["HTO"]], assay = "HTO", normalization.method = "CLR")
processeddata[[i]]<-HTODemux(processeddata[[i]], positive.quantile = 0.95)
processeddata[[i]]$percent.mt<-PercentageFeatureSet(processeddata[[i]], pattern = "^MT-")
processeddata[[i]]<-NormalizeData(processeddata[[i]])
processeddata[[i]]<-FindVariableFeatures(processeddata[[i]], selection.method = "vst", nfeatures = 2000)
processeddata[[i]]<-ScaleData(processeddata[[i]])
processeddata[[i]]<-RunPCA(processeddata[[i]])
processeddata[[i]]<-RunUMAP(processeddata[[i]], dims = 1:15)
processeddata[[i]]<-RenameCells(processeddata[[i]], add.cell.id = sample)
processeddata[[i]]<-subset(processeddata[[i]], subset = percent.mt<10 & nCount_RNA <150000 & nFeature_RNA>2000 & HTO_classification.global=="Singlet")
}
## 10X data contains more than one type and is being returned as a list containing matrices of each type.
## Warning: Feature names cannot have underscores ('_'), replacing with dashes
## ('-')
## [1] "Mock-MDM" "GFP-pos-MDM" "GFP-neg-MDM"
## Warning: The following arguments are not used: assay
## Normalizing across features
## Cutoff for Mock-MDM : 120 reads
## Cutoff for GFP-pos-MDM : 200 reads
## Cutoff for GFP-neg-MDM : 5215 reads
## Centering and scaling data matrix
## PC_ 1
## Positive: GAL, CAPG, CSTB, SPP1, MT1G, MT2A, MYL9, MMP12, FABP3, MT1H
## S100A6, FABP4, CRABP2, UCHL1, IGFL2, TUBB3, PPP1R1A, UTS2, FABP6, ACAT2
## WFDC2, MT1X, GREM1, AANAT, MAEL, NRAP, NQO1, CEACAM3, HCG14, ANXA2
## Negative: EXOC4, NEAT1, ARL15, DPYD, FHIT, LRMDA, ATG7, FTX, VPS13B, ZEB2
## MALAT1, RAD51B, SPIDR, RASAL2, MBD5, GMDS-DT, DOCK3, DOCK4, ELMO1, MAML2
## ST18, RERE, ZSWIM6, PAN3, TBC1D5, ETV6, VTI1A, FRMD4B, MEF2A, ARHGAP15
## PC_ 2
## Positive: TM4SF19, CSTB, FDX1, DBI, S100A6, BCL2A1, C15orf48, CSF1, CCL22, ANXA2
## CAPG, RGCC, PSMA7, GPC4, SPP1, S100A10, NCAPH, FABP3, LGALS3, ACAT2
## CHI3L1, ELOC, MGST1, TXN, TXNRD1, FBP1, FNIP2, CRABP2, MREG, RETREG1
## Negative: TGFBI, EPB41L3, RNASE1, CEBPD, SIPA1L1, CD14, HLA-DRA, VMO1, RGS2, HLA-DPB1
## TCF4, SSBP2, ARL4C, LILRB2, TIMP1, FOS, HLA-DRB5, GPR155, FPR3, HLA-DQA1
## PDE4B, C1QC, MAFB, ST8SIA4, HIF1A, BTG1, MPEG1, HLA-DRB1, LUCAT1, ARMC2
## PC_ 3
## Positive: SRGN, GAPDH, CD74, PFN1, HSP90AA1, HLA-DPA1, HSP90B1, LGMN, CTSC, MS4A7
## HLA-DRA, BLVRB, CTSL, HLA-DRB1, PLA2G7, LDHB, ANXA1, MMP9, TXN, GLIPR1
## FUCA1, MARCKS, TUBB, TUBA1C, MIF, ACTB, LDHA, HLA-DRB5, S100A10, PSME2
## Negative: CT69, AC116534.1, AL035665.2, KCNA2, OSBP2, AC073359.2, AC067751.1, ANKUB1, AL136317.2, LY86-AS1
## LINC02320, NOS1AP, TMEM117, CDCP1, AC008771.1, LINC00342, AC078845.1, AC068413.1, AL157886.1, SLC25A48
## AC023194.3, LINC01374, AC079142.1, STX18-AS1, CLVS1, AC093334.1, ZC3H12C, KCP, ANKRD36C, GDA
## PC_ 4
## Positive: env, gag, pol, tat, nef, vif, envelope, vpu, eGFP, CCL3
## ACTG1, TPM4, vpr, UGCG, ACTB, MARCKS, SPOCD1, ANK2, MACC1, G0S2
## PPARG, TCTEX1D2, PCSK6, TNFRSF9, SNCA, CYTOR, TTC39B, SPRED1, TNFSF15, PSAT1
## Negative: PTGDS, LINC02244, CLU, APOC1, BX664727.3, ACP5, SYNGR1, CFD, NCAPH, FOLR2
## FXYD2, AL136317.2, CPE, RARRES1, PEBP4, AKR7A2, EPHB1, LY86-AS1, S100A8, RAB6B
## RCBTB2, COX5B, TMEM114, MT1X, CAMP, MT2A, SPON2, MT1G, MT1E, CSRP2
## PC_ 5
## Positive: SLAMF9, AK8, CP, UTS2, AC078850.1, CTSL, MMP19, PLEKHA5, CLMP, SEL1L2
## INSM1, KALRN, BCAT1, SCD, HNRNPLL, CCDC26, GAL, PHLDA1, GPR183, DPP4
## SLC16A10, TGM2, OLFML2B, TBC1D8, PPP1R1A, GUCY1A2, MTSS1, VMO1, LINC00862, NMB
## Negative: CENPM, TYMS, MYBL2, PCLAF, TK1, MNDA, NUSAP1, NCAPG, SPC25, CENPF
## DIAPH3, BIRC5, MKI67, CEP55, ASPM, ANLN, CKS2, HMMR, CDK1, AURKB
## RRM2, HDAC9, CENPK, CENPE, TUBA1B, GTSE1, TPX2, DLGAP5, TTK, MT2A
## 14:07:41 UMAP embedding parameters a = 0.9922 b = 1.112
## 14:07:41 Read 2718 rows and found 15 numeric columns
## 14:07:41 Using Annoy for neighbor search, n_neighbors = 30
## 14:07:41 Building Annoy index with metric = cosine, n_trees = 50
## 0% 10 20 30 40 50 60 70 80 90 100%
## [----|----|----|----|----|----|----|----|----|----|
## **************************************************|
## 14:07:42 Writing NN index file to temp file /tmp/RtmpMjxT9O/file355b872c059b5
## 14:07:42 Searching Annoy index using 1 thread, search_k = 3000
## 14:07:42 Annoy recall = 100%
## 14:07:43 Commencing smooth kNN distance calibration using 1 thread with target n_neighbors = 30
## 14:07:43 Initializing from normalized Laplacian + noise (using irlba)
## 14:07:43 Commencing optimization for 500 epochs, with 113234 positive edges
## 14:07:45 Optimization finished
## 10X data contains more than one type and is being returned as a list containing matrices of each type.
## Warning: Feature names cannot have underscores ('_'), replacing with dashes
## ('-')
## [1] "Mock-MDM" "GFP-pos-MDM" "GFP-neg-MDM" "Mock-ALV" "GFP-pos-ALV"
## [6] "GFP-neg-ALV"
## Warning: The following arguments are not used: assay
## Normalizing across features
## Cutoff for Mock-MDM : 22 reads
## Cutoff for GFP-pos-MDM : 40 reads
## Cutoff for GFP-neg-MDM : 21 reads
## Cutoff for Mock-ALV : 53 reads
## Cutoff for GFP-pos-ALV : 42 reads
## Cutoff for GFP-neg-ALV : 1660 reads
## Centering and scaling data matrix
## PC_ 1
## Positive: MALAT1, DOCK3, RASAL2, ARL15, NEAT1, PLXDC2, ASAP1, DPYD, MITF, ATG7
## TMEM117, LRMDA, EXOC4, JMJD1C, ZEB2, FTX, CHD9, LRCH1, MEF2A, LPP
## ZNF438, DENND4C, MAML2, JARID2, RAPGEF1, FRMD4B, TPRG1, FMNL2, TNS3, ATXN1
## Negative: FABP4, NUPR1, STMN1, nef, HAMP, HLA-DQB1, S100A9, SLAMF9, CAMP, GAPDH
## HLA-DQA1, TMEM37, LILRA1, TIMP1, BLVRB, GYPC, C1QC, UTS2, RBP1, FXYD2
## AC078850.1, DNAJC5B, AC026369.3, IL18BP, VSIG4, S100A8, AL035446.1, MS4A6E, FAH, IL4I1
## PC_ 2
## Positive: MARCH1, VAMP5, RCBTB2, ARHGAP15, FGL2, TRPS1, SAMSN1, SLC9A9, HLA-DPB1, SPRED1
## XYLT1, ABCA1, HLA-DPA1, RTN1, HLA-DRA, ME1, TGFBI, KCNMA1, ZNF609, TCF7L2
## TSPAN33, CAMK1D, LYZ, TET2, MRC1, FCHSD2, SIPA1L1, ST8SIA4, ATP8B4, SLC8A1
## Negative: FDX1, CYSTM1, TM4SF19, CSTB, CSF1, ATP6V1D, CD164, GM2A, PRDX6, GAL
## TGM2, ACAT2, SCD, UPP1, CYTOR, BCAT1, ATP6V1G1, FAH, ELOC, LGALS1
## TPM4, C15orf48, TXN, GOLGA7B, RHOF, TNFRSF12A, ADCY3, GAPLINC, CCL22, TFRC
## PC_ 3
## Positive: NCAPH, CLU, LINC02244, PTGDS, CRABP2, SYNGR1, LINC01010, TRIM54, DUSP2, AC015660.2
## LINC01800, CRIP1, RGS20, CCL22, GPC4, C2orf92, SERPINI1, AC067751.1, STAC, FAIM2
## SERTAD2, SPON2, C11orf45, GAL, MT1E, TNFRSF21, MEIKIN, USP2-AS1, CT69, MT2A
## Negative: MARCKS, LGMN, AIF1, FUCA1, CTSZ, IFI30, IL18BP, FPR3, HLA-DQA1, HLA-DQB1
## BLVRB, CTSL, MS4A7, CD163, PLIN2, C1QC, CD36, FCGR3A, FABP4, IL4I1
## CADM1, SLC8A1, GYPC, TMEM37, MS4A6A, TPM4, CTSC, STMN1, C1QA, SMS
## PC_ 4
## Positive: pol, LINC01091, tat, TCTEX1D2, env, nef, gag, FMN1, PRKCE, vif
## STOX2, C4orf45, AP000812.1, SLC25A48, ANK2, envelope, ME3, LINC00278, STX18-AS1, AC098829.1
## SLC51A, TBC1D8, KCP, vpr, PDE2A, vpu, ANKUB1, FRMD3, BCL2, AC119674.1
## Negative: HLA-DRB1, CD74, MMP9, IFI6, LYZ, HLA-DPA1, PTGDS, HLA-DRA, SPP1, ALOX5AP
## CFD, CA2, MX1, CTSB, ISG15, TUBA1A, S100A4, MGST1, CYP1B1, IFIT3
## HLA-DPB1, VAMP5, CTSZ, S100A6, ATP6V1G1, CHI3L1, RGCC, APLP2, LINC02244, FGL2
## PC_ 5
## Positive: TYMS, PCLAF, TK1, MYBL2, MKI67, RRM2, CLSPN, CENPM, FAM111B, DIAPH3
## CDK1, CENPK, ESCO2, NCAPG, CEP55, BIRC5, ATAD2, HELLS, PRC1, CENPF
## NUSAP1, DTL, HMMR, CCNA2, KIF11, MCM7, ANLN, MCM10, CIT, TOP2A
## Negative: CTSB, SAT1, IFI30, RGCC, IGF2R, C15orf48, ATP6V1G1, PLEK, MMP19, GLRX
## CTSZ, env, gag, DCSTAMP, RNF13, NR1H3, CSTB, CD74, tat, nef
## PHLDA1, pol, HLA-DRA, LGMN, CD36, RHOF, PLIN2, ATP1B1, HLA-DQA1, HLA-DRB1
## 14:08:07 UMAP embedding parameters a = 0.9922 b = 1.112
## 14:08:07 Read 9002 rows and found 15 numeric columns
## 14:08:07 Using Annoy for neighbor search, n_neighbors = 30
## 14:08:07 Building Annoy index with metric = cosine, n_trees = 50
## 0% 10 20 30 40 50 60 70 80 90 100%
## [----|----|----|----|----|----|----|----|----|----|
## **************************************************|
## 14:08:08 Writing NN index file to temp file /tmp/RtmpMjxT9O/file355b86bb6809c
## 14:08:08 Searching Annoy index using 1 thread, search_k = 3000
## 14:08:10 Annoy recall = 100%
## 14:08:10 Commencing smooth kNN distance calibration using 1 thread with target n_neighbors = 30
## 14:08:11 Initializing from normalized Laplacian + noise (using irlba)
## 14:08:11 Commencing optimization for 500 epochs, with 380162 positive edges
## 14:08:17 Optimization finished
## 10X data contains more than one type and is being returned as a list containing matrices of each type.
## Warning: Feature names cannot have underscores ('_'), replacing with dashes
## ('-')
## [1] "Mock-MDM" "GFP-pos-MDM" "GFP-neg-MDM"
## Warning: The following arguments are not used: assay
## Normalizing across features
## Cutoff for Mock-MDM : 171 reads
## Cutoff for GFP-pos-MDM : 140 reads
## Cutoff for GFP-neg-MDM : 1631 reads
## Centering and scaling data matrix
## PC_ 1
## Positive: MT1G, pol, FABP4, nef, MT1H, GAL, UTS2, AC105402.3, MT2A, gag
## MMP12, GREM1, MT1X, RAB33A, AC098479.1, AL449043.1, AC091973.1, LINC00460, RUNX1T1, FAM138B
## AC090398.2, RAMP3, PRSS35, AL162171.1, AC236972.3, PTN, AC011195.2, LIFR-AS1, AL353764.1, C8A
## Negative: ARL15, NEAT1, EXOC4, FTX, FHIT, PDE4D, DPYD, DOCK3, PLXDC2, ARHGAP15
## RAD51B, TRIO, MAML2, ZEB2, DENND4C, RASAL2, LRMDA, ZFAND3, FNDC3B, JMJD1C
## ATG7, VPS13B, COP1, FRMD4B, TMEM117, JARID2, UBE2E2, MITF, TPRG1, ATXN1
## PC_ 2
## Positive: TGFBI, CD163, HLA-DPB1, ST8SIA4, C1QA, MPEG1, HLA-DQB1, HLA-DRA, HLA-DQA1, MS4A6A
## HLA-DQA2, RNASE1, HLA-DPA1, HLA-DRB5, PDE4B, C1QC, TCF4, FPR3, ARL4C, LILRB2
## CEBPD, SIPA1L1, SEMA4A, CSF1R, EPB41L3, CD14, CD74, HLA-DOA, SSBP2, MS4A7
## Negative: TM4SF19, SPP1, BCL2A1, ANXA2, DBI, GPC4, C15orf48, MGST1, RGCC, ANO5
## SNX10, TXN, TXNRD1, ACAT2, CHI3L1, CRABP2, GDF15, PRDX6, EMP1, FNIP2
## FBP1, RETREG1, SCD, HES2, S100A9, COX5B, TREM2, NMB, CCL22, MREG
## PC_ 3
## Positive: SRGN, HLA-DRB1, LY96, CD74, HSP90AA1, RPS20, ACTB, HSP90B1, HLA-DPA1, CFD
## MARCKS, ANXA1, CTSL, LYZ, BLVRB, AIF1, HLA-DRA, GLIPR1, TXN, TREM2
## COX5B, LGMN, DBI, BCL2A1, HLA-DRB5, HLA-DPB1, IGSF6, CTSB, SELENOP, ADAMDEC1
## Negative: MIR34AHG, SH3RF3, STOX2, TTC28, PKD1L1, pol, KCNMB2-AS1, TPRG1, AC024084.1, XIST
## SLC4A8, LINC02320, KCP, APBB2, RAD51B, STX18-AS1, ST18, PRKCE, TMEM117, FTX
## AC079142.1, AC098829.1, LY86-AS1, PDE4D, AL357153.2, AL365295.1, OSBP2, ANK2, SLC16A1-AS1, CDKAL1
## PC_ 4
## Positive: RPS4Y1, PTGDS, TMEM176B, NCAPH, LINC00278, TMEM176A, CLU, RARRES1, TRMT1, CRABP2
## UTY, EIF1AY, C11orf45, CCL22, USP9Y, BX664727.3, TTTY14, CHI3L1, S100A4, LINC02244
## CRIP1, MNDA, COX5B, AC015660.2, GCLC, CLEC12A, CCND2, RASGRF1, ACAT2, AL136317.2
## Negative: SLAMF9, gag, env, XIST, tat, pol, nef, G0S2, LGMN, MARCKS
## vif, CLEC4A, CTSB, C5orf17, HES4, SUPV3L1, CCL3, RAB38, MDN1, envelope
## STX18-AS1, SDS, PLA2G12A, AMZ1, SNCA, UTS2, BEX2, CTSL, eGFP, NIBAN1
## PC_ 5
## Positive: KCNMA1, XIST, APOC1, RAB6B, PTGDS, MEIKIN, CLU, PCDH19, MMP9, C5orf17
## FOLR2, RCBTB2, MT1X, MS4A7, FCGR2B, NMB, FLRT2, BX664727.3, TREM2, LILRA1
## PLEKHA5, MT1G, SRGN, STX18-AS1, PEBP4, MT1E, MT1F, KLRD1, MT2A, SYNGR1
## Negative: pol, env, gag, tat, nef, RPS4Y1, vif, EIF1AY, TTC39B, LINC00278
## envelope, TTTY14, HS3ST2, UTY, USP9Y, ACTB, TNFSF14, UGCG, TMEM176A, AC008050.1
## HLA-DQA1, SNCA, ACTG1, vpu, HLA-DQB1, eGFP, TNFSF15, CHI3L1, vpr, TMEM176B
## 14:08:46 UMAP embedding parameters a = 0.9922 b = 1.112
## 14:08:46 Read 11953 rows and found 15 numeric columns
## 14:08:46 Using Annoy for neighbor search, n_neighbors = 30
## 14:08:46 Building Annoy index with metric = cosine, n_trees = 50
## 0% 10 20 30 40 50 60 70 80 90 100%
## [----|----|----|----|----|----|----|----|----|----|
## **************************************************|
## 14:08:47 Writing NN index file to temp file /tmp/RtmpMjxT9O/file355b81510150d
## 14:08:47 Searching Annoy index using 1 thread, search_k = 3000
## 14:08:50 Annoy recall = 100%
## 14:08:50 Commencing smooth kNN distance calibration using 1 thread with target n_neighbors = 30
## 14:08:51 Initializing from normalized Laplacian + noise (using irlba)
## 14:08:51 Commencing optimization for 200 epochs, with 515920 positive edges
## 14:08:54 Optimization finished
processeddata
## $O238_filtered_feature_bc_matrix
## An object of class Seurat
## 36619 features across 1244 samples within 3 assays
## Active assay: RNA (36613 features, 2000 variable features)
## 2 other assays present: ADT, HTO
## 2 dimensional reductions calculated: pca, umap
##
## $P239_filtered_feature_bc_matrix
## An object of class Seurat
## 36625 features across 5536 samples within 3 assays
## Active assay: RNA (36613 features, 2000 variable features)
## 2 other assays present: ADT, HTO
## 2 dimensional reductions calculated: pca, umap
##
## $PV238_filtered_feature_bc_matrix
## An object of class Seurat
## 36619 features across 4914 samples within 3 assays
## Active assay: RNA (36613 features, 2000 variable features)
## 2 other assays present: ADT, HTO
## 2 dimensional reductions calculated: pca, umap
#demultiplex P and V (donors 1/2)
meta<-processeddata[[3]]@meta.data
split<- read.csv("scSplit_result.csv") #note, this was not run on as many cells? may need to redo
library(stringr)
split[c('cell.bc', 'SNP')]<- str_split_fixed(split$Barcode.Cluster,"-1",2)
split$cell.bc <- paste("PV238", split$cell.bc, sep="_")
split$cell.bc <- paste(split$cell.bc, "-1", sep="")
split<-split[,2:3]
meta$cell.bc<-rownames(meta)
meta2<-merge(meta,split, by = "cell.bc", all.x = TRUE)
processeddata[[3]]@meta.data$SNP<-meta2$SNP
rm(data)
rm(hash)
rm(meta)
rm(meta2)
rm(split)
table(processeddata[[3]]$orig.ident)
##
## PV238
## 4914
combined <- merge(processeddata[[1]], processeddata[[2]])
for(i in 3:length(processeddata)){combined<-merge(combined, processeddata[[i]])}
combined
## An object of class Seurat
## 36625 features across 11694 samples within 3 assays
## Active assay: RNA (36613 features, 0 variable features)
## 2 other assays present: ADT, HTO
#demultiplex MDM and ALV for P239
combined$macro_type<-case_when(grepl("ALV$", combined$HTO_classification)~"ALV",
grepl("MDM$", combined$HTO_classification)~"MDM")
table(combined$macro_type)
##
## ALV MDM
## 3300 8394
combined<-subset(combined, macro_type == "MDM")
combined
## An object of class Seurat
## 36625 features across 8394 samples within 3 assays
## Active assay: RNA (36613 features, 0 variable features)
## 2 other assays present: ADT, HTO
####integration
DefaultAssay(combined) <- "RNA"
combined <- FindVariableFeatures(combined, selection.method = "vst", nfeatures = 2000)
features_var<-VariableFeatures(combined)
str(features_var)
## chr [1:2000] "MT1G" "MT1H" "MT1X" "CAMP" "pol" "MT1M" "MT2A" "UTS2" "env" ...
features_var <- grep('pol|^gag|^env|^tat|^vif|^nef|^envelope|^vpu|^eGFP', features_var, value = TRUE, invert = TRUE)
VariableFeatures <- features_var
combined <- ScaleData(combined, features = features_var)
## Centering and scaling data matrix
combined <- RunPCA(combined, npcs = 15, features = features_var)
## PC_ 1
## Positive: S100A10, TXN, PRDX6, COX5B, ACP5, C15orf48, FABP3, BCL2A1, PSME2, TUBA1B
## CALM3, MGST1, ACTB, SPP1, CHI3L1, ACAT2, TUBA1A, ACTG1, MMP9, CTSL
## CRABP2, ANXA1, GSTM4, IFI30, TUBA1C, FAM89B, UCHL1, HAMP, LILRA1, FBP1
## Negative: ARL15, FTX, EXOC4, NEAT1, DPYD, PLXDC2, VPS13B, FHIT, MALAT1, RAD51B
## ZEB2, JMJD1C, ZFAND3, LRMDA, MBD5, TRIO, SPIDR, RASAL2, TCF12, DOCK3
## COP1, DOCK4, SBF2, ZNF438, ZSWIM6, ARHGAP15, ATG7, MAML2, ELMO1, TMEM117
## PC_ 2
## Positive: TM4SF19, ANO5, GPC4, GM2A, TXNRD1, FNIP2, BCL2A1, PSD3, RETREG1, TXN
## SLC28A3, RGS20, SPP1, CALM3, TGM2, TCTEX1D2, LINC01010, BCAT1, EPB41L1, CCL22
## FABP3, CCDC26, SPSB1, NIBAN1, RGCC, LINC01135, AC092353.2, MGST1, FKBP15, SCD
## Negative: CD74, HLA-DRA, HLA-DPB1, HLA-DPA1, AIF1, TGFBI, HLA-DRB1, C1QA, HLA-DQB1, HLA-DQA1
## FPR3, MS4A6A, C1QC, MS4A7, LYZ, CD14, CD163, CEBPD, MPEG1, TIMP1
## FOS, MAFB, CSF1R, GLUL, ST8SIA4, EPB41L3, IFI30, TCF4, FCN1, HLA-DOA
## PC_ 3
## Positive: ACTB, CALR, FBP1, ACTG1, SLC35F1, TUBA1B, TIMP3, MGLL, PLEK, HSP90B1
## LINC01091, GSN, IL1RN, LPL, IGSF6, GCLC, RGCC, LHFPL2, TMEM176B, INSIG1
## MADD, PDIA4, CSF1, LINC00278, HLA-DRB1, HSPA5, TNS3, CHI3L1, RPS4Y1, MREG
## Negative: CCPG1, HES2, NUPR1, CARD16, BTG1, NMB, PSAT1, CLGN, S100P, PLBD1
## STMN1, G0S2, PLEKHA5, SUPV3L1, CLEC4E, CXCR4, NIBAN1, IFI6, DUSP1, SEL1L3
## XIST, BEX2, RAB6B, ME1, CLEC4A, SLAMF9, TBL1X, VWA5A, PDE4D, QPCT
## PC_ 4
## Positive: PTGDS, NCAPH, HLA-C, RNASE6, CLU, BX664727.3, JUNB, CCL22, SYNGR1, COX5B
## ADRA2B, AKR7A2, CSF3R, CAMP, CRABP2, CCND2, RCBTB2, AL136317.2, TSPAN33, LINC02244
## ZFP36L1, SSBP3, FXYD2, TMEM176B, PEBP4, CPE, BASP1, RASSF4, LY86-AS1, NIPAL2
## Negative: MARCKS, UGCG, TPM4, CLEC4A, SNCA, SUPV3L1, CD36, B4GALT5, CCL3, RAB38
## BCAT1, GDF15, NIBAN1, PLAU, PSAT1, ATP13A3, PPARG, PCSK6, CLGN, MDN1
## CARD16, BEX2, SLAMF9, CTSL, TM4SF19, ANXA1, G0S2, PAG1, ANK2, LGMN
## PC_ 5
## Positive: RPS4Y1, CLEC12A, LYZ, MNDA, MT-CO3, MT-ATP6, LINC00278, UTY, MT-ND1, MT-CYB
## CHI3L1, USP9Y, TTTY14, MT-ND2, COX5B, ALOX5AP, TNFSF13B, PRSS41, MT-ATP8, S100P
## IGSF6, BCL2A1, P2RY13, CLGN, CAMK1D, PSAT1, NUPR1, LINC01500, LINC01515, FBP1
## Negative: MMP19, AC078850.1, TFRC, CTSL, LGMN, SLC7A8, GAL, AK8, SEL1L2, UTS2
## PHLDA1, IVNS1ABP, SDS, SCD, INSIG1, GPR183, FABP4, SLAMF9, MMP9, IL18BP
## CSF1, BCAT1, HNRNPLL, TBC1D8, TGM2, MTSS1, SRGN, CP, FCGR3A, CD300LB
combined <- RunHarmony(combined, group.by.vars="orig.ident", assay.use = "RNA", reduction = "pca", dims.use = 1:15, plot_convergence = TRUE)
## Harmony 1/10
## Harmony 2/10
## Harmony 3/10
## Harmony 4/10
## Harmony 5/10
## Harmony converged after 5 iterations
## Warning: Invalid name supplied, making object name syntactically valid. New
## object name is Seurat..ProjectDim.RNA.harmony; see ?make.names for more details
## on syntax validity
combined <- RunUMAP(combined, reduction = "harmony", reduction.name = "umap.rna", reduction.key = "rnaUMAP_", dims = 1:15, assay = "RNA")
## 14:09:07 UMAP embedding parameters a = 0.9922 b = 1.112
## 14:09:07 Read 8394 rows and found 15 numeric columns
## 14:09:07 Using Annoy for neighbor search, n_neighbors = 30
## 14:09:07 Building Annoy index with metric = cosine, n_trees = 50
## 0% 10 20 30 40 50 60 70 80 90 100%
## [----|----|----|----|----|----|----|----|----|----|
## **************************************************|
## 14:09:08 Writing NN index file to temp file /tmp/RtmpMjxT9O/file355b8491e26a1
## 14:09:08 Searching Annoy index using 1 thread, search_k = 3000
## 14:09:10 Annoy recall = 100%
## 14:09:10 Commencing smooth kNN distance calibration using 1 thread with target n_neighbors = 30
## 14:09:11 Initializing from normalized Laplacian + noise (using irlba)
## 14:09:11 Commencing optimization for 500 epochs, with 357442 positive edges
## 14:09:17 Optimization finished
combined <- FindNeighbors(combined, reduction = "harmony", dims = 1:15)
## Computing nearest neighbor graph
## Computing SNN
combined <- FindClusters(combined, resolution = 0.4)
## Modularity Optimizer version 1.3.0 by Ludo Waltman and Nees Jan van Eck
##
## Number of nodes: 8394
## Number of edges: 264586
##
## Running Louvain algorithm...
## Maximum modularity in 10 random starts: 0.8207
## Number of communities: 6
## Elapsed time: 0 seconds
DimPlot(combined, group.by = "HTO_classification")
combined$donor<-case_when(grepl("\tSNG-1",combined$SNP)~"P238",
grepl("\tSNG-2", combined$SNP)~"V238",
grepl("O238", combined$orig.ident)~"O238",
grepl("P239", combined$orig.ident)~"P239")
table(combined$donor)
##
## O238 P238 P239 V238
## 1244 1815 2236 2901
combined$HIV_protein<-combined$HTO_classification
HIV_genes<-c("pol", "gag", "env", "tat", "vif","nef","envelope", "vpu","eGFP")
VlnPlot(combined, HIV_genes, group.by = "HIV_protein")
#adding a HIV_genes collection
RNA_counts<-combined@assays$RNA@counts
str(RNA_counts)
## Formal class 'dgCMatrix' [package "Matrix"] with 6 slots
## ..@ i : int [1:42731828] 44 48 59 60 62 69 73 77 83 86 ...
## ..@ p : int [1:8395] 0 4365 11361 16864 21790 27005 33785 39966 46888 53465 ...
## ..@ Dim : int [1:2] 36613 8394
## ..@ Dimnames:List of 2
## .. ..$ : chr [1:36613] "MIR1302-2HG" "FAM138A" "OR4F5" "AL627309.1" ...
## .. ..$ : chr [1:8394] "O238_AAACCCAAGTGCAACG-1" "O238_AAACGCTCACTGGACC-1" "O238_AAACGCTCATGTTACG-1" "O238_AAACGCTGTCGCTGCA-1" ...
## ..@ x : num [1:42731828] 9 2 6 2 7 1 4 2 2 5 ...
## ..@ factors : list()
RNA_counts_HIV<-RNA_counts[rownames(RNA_counts) %in% HIV_genes, ]
rownames(RNA_counts_HIV)
## [1] "env" "gag" "pol" "vif" "tat" "vpu" "envelope"
## [8] "nef" "eGFP"
RNA_counts_HIV<-as.data.frame(RNA_counts_HIV)
RNA_counts_HIV<-t(RNA_counts_HIV)
RNA_counts_HIV<-as.data.frame(RNA_counts_HIV)
RNA_counts_HIV$HIV<-rowSums(RNA_counts_HIV)
combined$HIV_counts<-RNA_counts_HIV$HIV
meta<-combined@meta.data
#meta
VlnPlot(combined, "HIV_counts", group.by = "HIV_protein", y.max = 20)
## Warning: Removed 1938 rows containing non-finite values (`stat_ydensity()`).
## Warning: Removed 1938 rows containing missing values (`geom_point()`).
combined$HIV_RNA<-case_when(combined$HIV_counts>5~"positive",
combined$HIV_counts<=5~"negative")
combined$HIV<-case_when(grepl("GFP-pos-MDM",combined$HIV_protein)~"productive",
grepl("GFP-neg-MDM", combined$HIV_protein)&grepl("positive", combined$HIV_RNA)~"latent",
grepl("GFP-neg-MDM", combined$HIV_protein)~"bystander",
grepl("Mock-MDM", combined$HIV_protein)~"mock-infected"
)
table(combined$HIV, combined$donor)
##
## O238 P238 P239 V238
## bystander 467 771 1413 1281
## latent 207 161 30 125
## mock-infected 185 422 447 762
## productive 385 461 346 733
DimPlot(combined)
combined.markers <- FindAllMarkers(combined,features=features_var, only.pos = TRUE,
min.pct = 0.25, logfc.threshold = 0.25)
## Calculating cluster 0
## Calculating cluster 1
## Calculating cluster 2
## Calculating cluster 3
## Calculating cluster 4
## Calculating cluster 5
combined.markers2<-combined.markers %>%
group_by(cluster) %>%
slice_max(n = 10, order_by = avg_log2FC)
write.csv(combined.markers, "cluster_markers.csv")
saveRDS(combined, "MDM_object.RDS")
Idents(combined)<-combined$HIV_protein
levels(combined)
## [1] "GFP-neg-MDM" "GFP-pos-MDM" "Mock-MDM"
levels(combined)<-c("Mock-MDM", "GFP-neg-MDM", "GFP-pos-MDM")
pdf("HIV_sort_group.pdf", width = 9, height = 27)
VlnPlot(combined, "HIV_counts")
VlnPlot(combined, HIV_genes)
dev.off()
## png
## 2
VlnPlot(combined, "HIV_counts", log = TRUE)
VlnPlot(combined, "HIV_counts")
VlnPlot(combined, HIV_genes)
Idents(combined)<-combined$HIV
levels(combined)
## [1] "bystander" "productive" "mock-infected" "latent"
levels(combined) <- c("mock-infected", "bystander", "latent", "productive")
VlnPlot(combined, "HIV_counts")
VlnPlot(combined, "HIV_counts", log = TRUE)
VlnPlot(combined, HIV_genes)
VlnPlot(combined, HIV_genes, log = TRUE)
FeaturePlot(combined, "HIV_counts", min.cutoff = 5, max.cutoff = 2500)
DimPlot(combined, cells.highlight=grep("latent",combined$HIV), sizes.highlight = 0.5)+NoLegend()
DimPlot(combined, cells.highlight=grep("productive",combined$HIV), sizes.highlight = 0.5)+NoLegend()
DimPlot(combined, group.by = "seurat_clusters")
In the following, “ident1” is considered the case, and “ident2” is considered the control.
Here are the comparisons:
Latent vs bystander
Latent vs productive
Productive vs all
Productive vs mock
Latent vs mock
Idents(combined)<-combined$HIV
levels(combined) <- c("mock-infected", "bystander", "latent", "productive")
saveRDS(combined, "MDM_object.RDS")
latent_v_bystander <- FindMarkers(combined, ident.1 = "latent", ident.2 = "bystander",
logfc.threshold=0, only.pos=FALSE, group.by=NULL, subset.ident=NULL,
assay=NULL, reduction=NULL, features=NULL,test.use="wilcox",
min.pct=0.1, min.diff.pct=-Inf,verbose=TRUE,max.cells.per.ident=Inf,
random.seed=1,latent.vars.=NULL,min.cells.feature=3, pseudocount.use=1)
dim(latent_v_bystander)
## [1] 10939 5
head(latent_v_bystander,30) %>%
kbl(caption="Latent vs bystander markers DEG table") %>%
kable_paper("hover", full_width = FALSE)
p_val | avg_log2FC | pct.1 | pct.2 | p_val_adj | |
---|---|---|---|---|---|
pol | 0 | 0.7774630 | 0.987 | 0.327 | 0 |
env | 0 | 0.3710173 | 0.599 | 0.121 | 0 |
tat | 0 | 0.2716689 | 0.434 | 0.060 | 0 |
gag | 0 | 0.3160732 | 0.484 | 0.090 | 0 |
nef | 0 | 0.3526073 | 0.582 | 0.155 | 0 |
vif | 0 | 0.1121733 | 0.198 | 0.018 | 0 |
TMSB10 | 0 | -0.1369325 | 1.000 | 1.000 | 0 |
RNASEK | 0 | -0.1501834 | 0.998 | 1.000 | 0 |
envelope | 0 | 0.0733792 | 0.133 | 0.008 | 0 |
ACTB | 0 | -0.3452073 | 1.000 | 0.999 | 0 |
COX8A | 0 | -0.2021623 | 0.991 | 0.997 | 0 |
RPS28 | 0 | -0.1072852 | 1.000 | 1.000 | 0 |
CD68 | 0 | -0.1384003 | 0.998 | 0.999 | 0 |
RPL36 | 0 | -0.1339130 | 0.998 | 1.000 | 0 |
ATP5MPL | 0 | -0.1892903 | 0.983 | 0.998 | 0 |
ATP5MF | 0 | -0.2094586 | 0.982 | 0.994 | 0 |
ATP5F1E | 0 | -0.1040254 | 1.000 | 1.000 | 0 |
ATP6V0C | 0 | -0.1511387 | 0.996 | 0.999 | 0 |
CTSD | 0 | -0.1081730 | 1.000 | 1.000 | 0 |
FCER1G | 0 | -0.1522394 | 1.000 | 1.000 | 0 |
PFN1 | 0 | -0.1902416 | 0.996 | 0.999 | 0 |
CLIC1 | 0 | -0.2141131 | 0.972 | 0.994 | 0 |
COX6C | 0 | -0.1775594 | 0.987 | 0.998 | 0 |
GAPDH | 0 | -0.1800718 | 0.996 | 0.998 | 0 |
ACTG1 | 0 | -0.2913335 | 0.982 | 0.989 | 0 |
CYBA | 0 | -0.1141666 | 1.000 | 1.000 | 0 |
RPL35 | 0 | -0.1303072 | 1.000 | 1.000 | 0 |
NDUFS5 | 0 | -0.1578098 | 0.993 | 0.997 | 0 |
ATOX1 | 0 | -0.1637638 | 0.993 | 0.999 | 0 |
RPS29 | 0 | -0.1649383 | 1.000 | 1.000 | 0 |
write.csv(latent_v_bystander, "latent_vs_bystander_markers.csv")
latent_v_productive <- FindMarkers(combined, ident.1 = "latent", ident.2 = "productive",
logfc.threshold=0, only.pos=FALSE, group.by=NULL, subset.ident=NULL,
assay=NULL, reduction=NULL, features=NULL,test.use="wilcox",
min.pct=0.1, min.diff.pct=-Inf,verbose=TRUE,max.cells.per.ident=Inf,
random.seed=1,latent.vars.=NULL,min.cells.feature=3, pseudocount.use=1)
dim(latent_v_productive)
## [1] 11129 5
head(latent_v_productive,30) %>%
kbl(caption="Latent vs productive markers DEG table") %>%
kable_paper("hover", full_width = FALSE)
p_val | avg_log2FC | pct.1 | pct.2 | p_val_adj | |
---|---|---|---|---|---|
gag | 0 | -1.3677864 | 0.484 | 0.956 | 0 |
nef | 0 | -1.0716866 | 0.582 | 0.953 | 0 |
env | 0 | -1.2486529 | 0.599 | 0.946 | 0 |
pol | 0 | -1.0877397 | 0.987 | 0.971 | 0 |
tat | 0 | -1.0329311 | 0.434 | 0.922 | 0 |
vif | 0 | -0.6945865 | 0.198 | 0.800 | 0 |
envelope | 0 | -0.4987595 | 0.133 | 0.741 | 0 |
vpu | 0 | -0.3640407 | 0.061 | 0.647 | 0 |
ARPC1B | 0 | -0.1922572 | 1.000 | 1.000 | 0 |
FTL | 0 | -0.0798613 | 1.000 | 1.000 | 0 |
eGFP | 0 | -0.3023021 | 0.065 | 0.603 | 0 |
RPLP1 | 0 | -0.1182027 | 1.000 | 1.000 | 0 |
CTSS | 0 | 0.1944087 | 1.000 | 1.000 | 0 |
BLVRB | 0 | -0.3279020 | 0.980 | 0.997 | 0 |
MIF | 0 | -0.3357282 | 0.950 | 0.991 | 0 |
GPNMB | 0 | 0.1367290 | 1.000 | 1.000 | 0 |
CD44 | 0 | 0.3068821 | 0.993 | 0.942 | 0 |
ZFP36L1 | 0 | 0.3656252 | 0.989 | 0.932 | 0 |
RPS9 | 0 | 0.1429649 | 1.000 | 1.000 | 0 |
PDXK | 0 | -0.2313934 | 0.965 | 0.993 | 0 |
PTGDS | 0 | 0.6787985 | 0.945 | 0.882 | 0 |
JUNB | 0 | 0.3565184 | 0.943 | 0.879 | 0 |
MS4A6A | 0 | 0.3248831 | 0.543 | 0.176 | 0 |
TTC3 | 0 | 0.2519835 | 0.985 | 0.970 | 0 |
vpr | 0 | -0.2167249 | 0.055 | 0.498 | 0 |
CFD | 0 | 0.4215147 | 0.939 | 0.771 | 0 |
CSTB | 0 | -0.1404606 | 1.000 | 1.000 | 0 |
YBX1 | 0 | -0.1381850 | 1.000 | 1.000 | 0 |
EEF1A1 | 0 | 0.1190320 | 1.000 | 1.000 | 0 |
RPS27L | 0 | -0.1526173 | 0.996 | 0.999 | 0 |
write.csv(latent_v_productive, "latent_vs_productive_markers.csv")
productive_v_all <- FindMarkers(combined, ident.1 = "productive",
logfc.threshold=0, only.pos=FALSE, group.by=NULL, subset.ident=NULL,
assay=NULL, reduction=NULL, features=NULL,test.use="wilcox",
min.pct=0.1, min.diff.pct=-Inf,verbose=TRUE,max.cells.per.ident=Inf,
random.seed=1,latent.vars.=NULL,min.cells.feature=3, pseudocount.use=1)
dim(productive_v_all)
## [1] 10703 5
head(productive_v_all,20) %>%
kbl(caption="productive vs all others markers DEG table") %>%
kable_paper("hover", full_width = FALSE)
p_val | avg_log2FC | pct.1 | pct.2 | p_val_adj | |
---|---|---|---|---|---|
FTL | 0 | 0.0807056 | 1.000 | 1.000 | 0 |
RPS9 | 0 | -0.1934307 | 1.000 | 1.000 | 0 |
CST3 | 0 | -0.2091869 | 1.000 | 1.000 | 0 |
env | 0 | 1.5865057 | 0.946 | 0.156 | 0 |
gag | 0 | 1.6544926 | 0.956 | 0.124 | 0 |
pol | 0 | 1.7865421 | 0.971 | 0.366 | 0 |
vif | 0 | 0.7968048 | 0.800 | 0.033 | 0 |
vpr | 0 | 0.2432598 | 0.498 | 0.009 | 0 |
tat | 0 | 1.2824556 | 0.922 | 0.086 | 0 |
vpu | 0 | 0.3925134 | 0.647 | 0.016 | 0 |
envelope | 0 | 0.5656868 | 0.741 | 0.019 | 0 |
nef | 0 | 1.4018344 | 0.953 | 0.170 | 0 |
eGFP | 0 | 0.3379257 | 0.603 | 0.010 | 0 |
GPNMB | 0 | -0.1293370 | 1.000 | 1.000 | 0 |
RPL10A | 0 | -0.2556359 | 0.993 | 0.995 | 0 |
PTMA | 0 | -0.1928794 | 0.999 | 0.999 | 0 |
RPL10 | 0 | -0.1210226 | 0.999 | 1.000 | 0 |
VIM | 0 | -0.1547093 | 1.000 | 1.000 | 0 |
ARPC1B | 0 | 0.1271721 | 1.000 | 0.999 | 0 |
RPL34 | 0 | -0.1305494 | 0.999 | 1.000 | 0 |
write.csv(productive_v_all, "productive_vs_all_markers.csv")
productive_v_mock <-FindMarkers(combined, ident.1 = "productive", ident.2= "mock-infected",
logfc.threshold=0, only.pos=FALSE, group.by=NULL, subset.ident=NULL,
assay=NULL, reduction=NULL, features=NULL,test.use="wilcox",
min.pct=0.1, min.diff.pct=-Inf,verbose=TRUE,max.cells.per.ident=Inf,
random.seed=1,latent.vars.=NULL,min.cells.feature=3, pseudocount.use=1)
dim(productive_v_mock)
## [1] 10713 5
head(productive_v_mock,20) %>%
kbl(caption="productive vs mock markers DEG table") %>%
kable_paper("hover", full_width = FALSE)
p_val | avg_log2FC | pct.1 | pct.2 | p_val_adj | |
---|---|---|---|---|---|
env | 0 | 1.6268460 | 0.946 | 0.101 | 0 |
gag | 0 | 1.6841584 | 0.956 | 0.092 | 0 |
pol | 0 | 1.8857008 | 0.971 | 0.269 | 0 |
vif | 0 | 0.8061832 | 0.800 | 0.019 | 0 |
tat | 0 | 1.3144762 | 0.922 | 0.039 | 0 |
vpu | 0 | 0.3938672 | 0.647 | 0.015 | 0 |
envelope | 0 | 0.5716983 | 0.741 | 0.009 | 0 |
nef | 0 | 1.4627098 | 0.953 | 0.082 | 0 |
eGFP | 0 | 0.3418937 | 0.603 | 0.004 | 0 |
RPS9 | 0 | -0.1816366 | 1.000 | 0.999 | 0 |
vpr | 0 | 0.2467055 | 0.498 | 0.003 | 0 |
FTL | 0 | 0.0830717 | 1.000 | 1.000 | 0 |
PTMA | 0 | -0.2128902 | 0.999 | 0.998 | 0 |
CST3 | 0 | -0.1912393 | 1.000 | 0.999 | 0 |
GPNMB | 0 | -0.1304474 | 1.000 | 1.000 | 0 |
VIM | 0 | -0.1636923 | 1.000 | 0.999 | 0 |
TMSB4X | 0 | -0.1142752 | 1.000 | 0.999 | 0 |
RPL10A | 0 | -0.2426967 | 0.993 | 0.992 | 0 |
RPS19 | 0 | 0.0925151 | 1.000 | 0.999 | 0 |
ARPC1B | 0 | 0.1322292 | 1.000 | 0.998 | 0 |
write.csv(productive_v_mock, "productive_vs_mock_markers.csv")
latent_v_mock <- FindMarkers(combined, ident.1 = "latent", ident.2= "mock-infected",
logfc.threshold=0, only.pos=FALSE, group.by=NULL, subset.ident=NULL,
assay=NULL, reduction=NULL, features=NULL,test.use="wilcox",
min.pct=0.1, min.diff.pct=-Inf,verbose=TRUE,max.cells.per.ident=Inf,
random.seed=1,latent.vars.=NULL,min.cells.feature=3, pseudocount.use=1)
dim(latent_v_mock)
## [1] 10951 5
head(latent_v_mock,20) %>%
kbl(caption="latent vs mock markers DEG table") %>%
kable_paper("hover", full_width = FALSE)
p_val | avg_log2FC | pct.1 | pct.2 | p_val_adj | |
---|---|---|---|---|---|
pol | 0 | 0.7979611 | 0.987 | 0.269 | 0 |
nef | 0 | 0.3910233 | 0.582 | 0.082 | 0 |
env | 0 | 0.3781931 | 0.599 | 0.101 | 0 |
tat | 0 | 0.2815451 | 0.434 | 0.039 | 0 |
gag | 0 | 0.3163720 | 0.484 | 0.092 | 0 |
ACTB | 0 | -0.3457681 | 1.000 | 0.998 | 0 |
IFI6 | 0 | 0.2834410 | 0.993 | 0.982 | 0 |
FCER1G | 0 | -0.1686309 | 1.000 | 1.000 | 0 |
vif | 0 | 0.1115967 | 0.198 | 0.019 | 0 |
TMSB10 | 0 | -0.1103753 | 1.000 | 1.000 | 0 |
ACTG1 | 0 | -0.3171860 | 0.982 | 0.986 | 0 |
NPC2 | 0 | -0.1153591 | 1.000 | 0.999 | 0 |
COX8A | 0 | -0.1749063 | 0.991 | 0.994 | 0 |
PFN1 | 0 | -0.1820098 | 0.996 | 0.998 | 0 |
RNASEK | 0 | -0.1139961 | 0.998 | 0.999 | 0 |
CD52 | 0 | -0.1679406 | 0.969 | 0.996 | 0 |
envelope | 0 | 0.0729387 | 0.133 | 0.009 | 0 |
CTSD | 0 | -0.0999097 | 1.000 | 1.000 | 0 |
ATP5MPL | 0 | -0.1658110 | 0.983 | 0.996 | 0 |
PTMA | 0 | -0.1199486 | 1.000 | 0.998 | 0 |
write.csv(latent_v_mock, "latent_v_mock_markers.csv")
meta<-combined@meta.data
productive <-meta %>% filter(HIV == "productive") %>% group_by(seurat_clusters) %>% summarise(n())
latent<-meta %>% filter(HIV == "latent") %>% group_by(seurat_clusters) %>% summarise(n())
HIV_by_cluster <-meta %>% group_by(HIV, seurat_clusters) %>% summarise(n())
## `summarise()` has grouped output by 'HIV'. You can override using the
## `.groups` argument.
write.csv(HIV_by_cluster, "cluster_composition.csv")
table(combined$HIV, combined$seurat_clusters)
##
## 0 1 2 3 4 5
## bystander 1033 1319 751 617 242 58
## latent 224 114 77 46 78 2
## mock-infected 541 502 333 295 161 32
## productive 697 461 482 294 33 2
For reproducibility
save.image("processing.Rdata")
sessionInfo()
## R version 4.3.1 (2023-06-16)
## Platform: x86_64-pc-linux-gnu (64-bit)
## Running under: Ubuntu 22.04.3 LTS
##
## Matrix products: default
## BLAS: /usr/lib/x86_64-linux-gnu/blas/libblas.so.3.10.0
## LAPACK: /usr/lib/x86_64-linux-gnu/lapack/liblapack.so.3.10.0
##
## locale:
## [1] LC_CTYPE=en_US.UTF-8 LC_NUMERIC=C
## [3] LC_TIME=en_US.UTF-8 LC_COLLATE=en_US.UTF-8
## [5] LC_MONETARY=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8
## [7] LC_PAPER=en_US.UTF-8 LC_NAME=C
## [9] LC_ADDRESS=C LC_TELEPHONE=C
## [11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C
##
## time zone: Australia/Melbourne
## tzcode source: system (glibc)
##
## attached base packages:
## [1] stats graphics grDevices utils datasets methods base
##
## other attached packages:
## [1] stringr_1.5.0 harmony_0.1.1 Rcpp_1.0.11
## [4] tidyr_1.3.0 SeuratWrappers_0.3.1 SeuratObject_4.1.3
## [7] Seurat_4.3.0.1 pkgload_1.3.2.1 GGally_2.1.2
## [10] ggplot2_3.4.3 reshape2_1.4.4 beeswarm_0.4.0
## [13] gtools_3.9.4 tibble_3.2.1 dplyr_1.1.3
## [16] echarts4r_0.4.5 kableExtra_1.3.4 gplots_3.1.3
## [19] mitch_1.12.0
##
## loaded via a namespace (and not attached):
## [1] RColorBrewer_1.1-3 rstudioapi_0.15.0 jsonlite_1.8.7
## [4] magrittr_2.0.3 spatstat.utils_3.0-3 farver_2.1.1
## [7] rmarkdown_2.25 vctrs_0.6.3 ROCR_1.0-11
## [10] spatstat.explore_3.2-3 webshot_0.5.5 htmltools_0.5.6
## [13] sass_0.4.7 sctransform_0.3.5 parallelly_1.36.0
## [16] KernSmooth_2.23-22 bslib_0.5.1 htmlwidgets_1.6.2
## [19] ica_1.0-3 plyr_1.8.8 plotly_4.10.2
## [22] zoo_1.8-12 cachem_1.0.8 igraph_1.5.1
## [25] mime_0.12 lifecycle_1.0.3 pkgconfig_2.0.3
## [28] rsvd_1.0.5 Matrix_1.6-1.1 R6_2.5.1
## [31] fastmap_1.1.1 fitdistrplus_1.1-11 future_1.33.0
## [34] shiny_1.7.5 digest_0.6.33 colorspace_2.1-0
## [37] reshape_0.8.9 patchwork_1.1.3 tensor_1.5
## [40] irlba_2.3.5.1 labeling_0.4.3 progressr_0.14.0
## [43] fansi_1.0.4 spatstat.sparse_3.0-2 httr_1.4.7
## [46] polyclip_1.10-4 abind_1.4-5 compiler_4.3.1
## [49] remotes_2.4.2.1 withr_2.5.0 highr_0.10
## [52] R.utils_2.12.2 MASS_7.3-60 caTools_1.18.2
## [55] tools_4.3.1 lmtest_0.9-40 httpuv_1.6.11
## [58] future.apply_1.11.0 goftest_1.2-3 R.oo_1.25.0
## [61] glue_1.6.2 nlme_3.1-163 promises_1.2.1
## [64] grid_4.3.1 Rtsne_0.16 cluster_2.1.4
## [67] generics_0.1.3 gtable_0.3.4 spatstat.data_3.0-1
## [70] R.methodsS3_1.8.2 data.table_1.14.8 sp_2.0-0
## [73] xml2_1.3.5 utf8_1.2.3 spatstat.geom_3.2-5
## [76] RcppAnnoy_0.0.21 ggrepel_0.9.3 RANN_2.6.1
## [79] pillar_1.9.0 later_1.3.1 splines_4.3.1
## [82] lattice_0.21-8 survival_3.5-7 deldir_1.0-9
## [85] tidyselect_1.2.0 miniUI_0.1.1.1 pbapply_1.7-2
## [88] knitr_1.44 gridExtra_2.3 svglite_2.1.1
## [91] scattermore_1.2 xfun_0.40 matrixStats_1.0.0
## [94] stringi_1.7.12 lazyeval_0.2.2 yaml_2.3.7
## [97] evaluate_0.21 codetools_0.2-19 BiocManager_1.30.22
## [100] cli_3.6.1 uwot_0.1.16 xtable_1.8-4
## [103] reticulate_1.32.0 systemfonts_1.0.4 munsell_0.5.0
## [106] jquerylib_0.1.4 globals_0.16.2 spatstat.random_3.1-6
## [109] png_0.1-8 parallel_4.3.1 ellipsis_0.3.2
## [112] bitops_1.0-7 listenv_0.9.0 viridisLite_0.4.2
## [115] scales_1.2.1 ggridges_0.5.4 leiden_0.4.3
## [118] purrr_1.0.2 rlang_1.1.1 cowplot_1.1.1
## [121] rvest_1.0.3