Last updated: 2026-01-27

Checks: 6 1

Knit directory: paed-airway-allTissues/

This reproducible R Markdown analysis was created with workflowr (version 1.7.1). The Checks tab describes the reproducibility checks that were applied when the results were created. The Past versions tab lists the development history.


The R Markdown is untracked by Git. To know which version of the R Markdown file created these results, you’ll want to first commit it to the Git repo. If you’re still working on the analysis, you can ignore this warning. When you’re finished, you can run wflow_publish to commit the R Markdown file and build the HTML.

Great job! The global environment was empty. Objects defined in the global environment can affect the analysis in your R Markdown file in unknown ways. For reproduciblity it’s best to always run the code in an empty environment.

The command set.seed(20230811) was run prior to running the code in the R Markdown file. Setting a seed ensures that any results that rely on randomness, e.g. subsampling or permutations, are reproducible.

Great job! Recording the operating system, R version, and package versions is critical for reproducibility.

Nice! There were no cached chunks for this analysis, so you can be confident that you successfully produced the results during this run.

Great job! Using relative paths to the files within your workflowr project makes it easier to run your code on other machines.

Great! You are using Git for version control. Tracking code development and connecting the code version to the results is critical for reproducibility.

The results in this page were generated with repository version 378760b. See the Past versions tab to see a history of the changes made to the R Markdown and HTML files.

Note that you need to be careful to ensure that all relevant files for the analysis have been committed to Git prior to generating the results (you can use wflow_publish or wflow_git_commit). workflowr only checks the R Markdown file, but you know if there are other scripts or data files that it depends on. Below is the status of the Git repository when the results were generated:


Ignored files:
    Ignored:    .DS_Store
    Ignored:    .RData
    Ignored:    .Rhistory
    Ignored:    .Rproj.user/
    Ignored:    analysis/.DS_Store
    Ignored:    analysis/naiveB_top10_markers_whitebg.png
    Ignored:    data/.DS_Store
    Ignored:    data/RDS/
    Ignored:    figure/.DS_Store
    Ignored:    output/.DS_Store
    Ignored:    output/CAM_results/
    Ignored:    output/CSV/.DS_Store
    Ignored:    output/CSV_v2/.DS_Store
    Ignored:    output/CSV_v2/Adenoids/.DS_Store
    Ignored:    output/CSV_v2/BAL/.DS_Store
    Ignored:    output/CSV_v2/Bronchial_brushings/.DS_Store
    Ignored:    output/CSV_v2/Nasal_brushings/.DS_Store
    Ignored:    output/CSV_v2/Tonsils/.DS_Store
    Ignored:    output/DGE/.DS_Store
    Ignored:    output/DGE/RUVseq_TonsilAtlas/.DS_Store
    Ignored:    output/DGE/RUVseq_TonsilAtlas_k1/
    Ignored:    output/DGE/RUVseq_earlyAIR_Tonsils/.DS_Store
    Ignored:    output/DGE/Tonsils/RUV_Tonsils_Double negative T/
    Ignored:    output/RDS/
    Ignored:    output/plots/

Untracked files:
    Untracked:  All_metadata_combinedplots.Rhistory
    Untracked:  analysis/03_Batch_Integration.Rmd
    Untracked:  analysis/Age_proportions.Rmd
    Untracked:  analysis/Age_proportions_AllBatches.Rmd
    Untracked:  analysis/All_Batches_QCExploratory_v2.Rmd
    Untracked:  analysis/All_Umaps_and_marker_plots.Rmd
    Untracked:  analysis/All_metadata.Rmd
    Untracked:  analysis/Annotation_BAL.Rmd
    Untracked:  analysis/Annotation_Bronchial_brushings.Rmd
    Untracked:  analysis/Annotation_Nasal_brushings.Rmd
    Untracked:  analysis/BatchCorrection_Adenoids.Rmd
    Untracked:  analysis/BatchCorrection_Nasal_brushings.Rmd
    Untracked:  analysis/BatchCorrection_Tonsils.Rmd
    Untracked:  analysis/Batch_Integration_&_Downstream_analysis.Rmd
    Untracked:  analysis/Batch_correction_&_Downstream.Rmd
    Untracked:  analysis/Cell_cycle_regression.Rmd
    Untracked:  analysis/Clustering_Tonsils_v2.Rmd
    Untracked:  analysis/Cross-tissue_analysis.Rmd
    Untracked:  analysis/DGE_RUVSeq_Adenoids.Rmd
    Untracked:  analysis/DGE_RUVSeq_Bronchial_brushings.Rmd
    Untracked:  analysis/DGE_RUVSeq_Nasal_brushings.Rmd
    Untracked:  analysis/DGE_earlyAIR_tAtlas_Naïve_Bcells_Adenoids.Rmd
    Untracked:  analysis/DGE_earlyAIR_tAtlas_Naïve_Bcells_activated.Rmd
    Untracked:  analysis/DGE_earlyAIR_tAtlas_Plasma_Bcells.Rmd
    Untracked:  analysis/DGE_earlyAIR_vs_TonsilAtlas.Rmd
    Untracked:  analysis/Explore_census.Rmd
    Untracked:  analysis/Lineage_subclustering_Bcells.Rmd
    Untracked:  analysis/Lineage_subclustering_Myeloid_cells.Rmd
    Untracked:  analysis/Lineage_subclustering_Tcells.Rmd
    Untracked:  analysis/Lineages_subclustering.Rmd
    Untracked:  analysis/Master_metadata.Rmd
    Untracked:  analysis/Pediatric_Vs_Adult_Atlases.Rmd
    Untracked:  analysis/Preprocessing_Batch1_Nasal_brushings.Rmd
    Untracked:  analysis/Preprocessing_Batch2_Tonsils.Rmd
    Untracked:  analysis/Preprocessing_Batch3_Adenoids.Rmd
    Untracked:  analysis/Preprocessing_Batch4_Bronchial_brushings.Rmd
    Untracked:  analysis/Preprocessing_Batch5_Nasal_brushings.Rmd
    Untracked:  analysis/Preprocessing_Batch6_BAL.Rmd
    Untracked:  analysis/Preprocessing_Batch7_Bronchial_brushings.Rmd
    Untracked:  analysis/Preprocessing_Batch8_Adenoids.Rmd
    Untracked:  analysis/Preprocessing_Batch9_Tonsils.Rmd
    Untracked:  analysis/TonsilsVsAdenoids.Rmd
    Untracked:  analysis/cell_cycle_regression.R
    Untracked:  analysis/testing_age_all.Rmd
    Untracked:  code/DGE_utils.R
    Untracked:  code/pseudobulk_analysis.R
    Untracked:  data/Cell_labels_Gunjan_v2/
    Untracked:  data/Cell_labels_Mel/
    Untracked:  data/Cell_labels_Mel_v2/
    Untracked:  data/Cell_labels_Mel_v3/
    Untracked:  data/Cell_labels_modified_Gunjan/
    Untracked:  data/Gene_sets/
    Untracked:  data/Hs.c2.cp.reactome.v7.1.entrez.rds
    Untracked:  data/Raw_feature_bc_matrix/
    Untracked:  data/cell_labels_Mel_v4_Dec2024/
    Untracked:  data/celltypes_Mel_GD_v3.xlsx
    Untracked:  data/celltypes_Mel_GD_v4_no_dups.xlsx
    Untracked:  data/celltypes_Mel_modified.xlsx
    Untracked:  data/celltypes_Mel_v2.csv
    Untracked:  data/celltypes_Mel_v2.xlsx
    Untracked:  data/celltypes_Mel_v2_MN.xlsx
    Untracked:  data/celltypes_for_mel_MN.xlsx
    Untracked:  data/col_palette.xlsx
    Untracked:  data/earlyAIR_sample_sheets_combined.xlsx
    Untracked:  figure/DGE_Tonsils_CD8.Rmd/
    Untracked:  metadata_export.rds
    Untracked:  metadata_export1.rds
    Untracked:  naiveB_top10_markers.png
    Untracked:  naiveB_top10_markers_whitebg.png
    Untracked:  output/CSV/All_tissues.propeller.xlsx
    Untracked:  output/CSV/Bronchial_brushings/
    Untracked:  output/CSV/Bronchial_brushings_Marker_gene_clusters.limmaTrendRNA_snn_res.0.4/
    Untracked:  output/CSV/G000231_Neeland_Adenoids.propeller.xlsx
    Untracked:  output/CSV/G000231_Neeland_Bronchial_brushings.propeller.xlsx
    Untracked:  output/CSV/G000231_Neeland_Nasal_brushings.propeller.xlsx
    Untracked:  output/CSV/G000231_Neeland_Tonsils.propeller.xlsx
    Untracked:  output/CSV/Nasal_brushings/
    Untracked:  output/CSV_v3/B_cell_lineage/
    Untracked:  output/DGE/Adenoids/
    Untracked:  output/DGE/Adenoids_B_memory/
    Untracked:  output/DGE/Adenoids_CD4/
    Untracked:  output/DGE/Adenoids_CD8/
    Untracked:  output/DGE/Adenoids_Cycling_GCB/
    Untracked:  output/DGE/Adenoids_IFN/
    Untracked:  output/DGE/Bronchial_brushings/
    Untracked:  output/DGE/DGE_Age_summary_BAL.xlsx
    Untracked:  output/DGE/Nasal_brushings/
    Untracked:  output/DGE/RUV/
    Untracked:  output/DGE/RUVseq_earlyAIR_Adenoids/
    Untracked:  output/DGE/RUVseq_earlyAIR_Bronchial_brushings/
    Untracked:  output/DGE/RUVseq_earlyAIR_Nasal_brushings/
    Untracked:  output/DGE/TonsilAtlas/
    Untracked:  output/DGE/Tonsils/DGE_Age_summary_Tonsils.xlsx
    Untracked:  output/DGE/Tonsils/RUVTonsils_Memory B cells/
    Untracked:  output/DGE/Tonsils/RUV_Tonsils_Memory B cells/
    Untracked:  output/DGE/Tonsils/Tonsils_Naïve B cells/
    Untracked:  output/DGE/Tonsils_CD4/
    Untracked:  output/DGE/Tonsils_CD8/
    Untracked:  output/DGE/Tonsils_IFN/
    Untracked:  paed_sub_L1_cells.rds

Unstaged changes:
    Deleted:    02_QC_exploratoryPlots.Rmd
    Deleted:    02_QC_exploratoryPlots.html
    Modified:   analysis/00_AllBatches_overview.Rmd
    Modified:   analysis/01_QC_emptyDrops.Rmd
    Modified:   analysis/02_QC_exploratoryPlots.Rmd
    Modified:   analysis/Adenoids.Rmd
    Modified:   analysis/Adenoids_v2.Rmd
    Modified:   analysis/Age_modeling.Rmd
    Modified:   analysis/Age_modelling_Adenoids.Rmd
    Modified:   analysis/Age_modelling_Tonsils.Rmd
    Modified:   analysis/AllBatches_QCExploratory.Rmd
    Modified:   analysis/BAL.Rmd
    Modified:   analysis/BAL_v2.Rmd
    Modified:   analysis/Bronchial_brushings.Rmd
    Modified:   analysis/Bronchial_brushings_v2.Rmd
    Modified:   analysis/DGE_TonsilAtlas.Rmd
    Modified:   analysis/DGE_Tonsils_CD8.Rmd
    Modified:   analysis/DGE_analysis_George.Rmd
    Modified:   analysis/DGE_earlyAIR_tAtlas_CD4_TCM.Rmd
    Modified:   analysis/DGE_earlyAIR_tAtlas_CD4_TFH.Rmd
    Modified:   analysis/DGE_earlyAIR_tAtlas_CD4_TN.Rmd
    Modified:   analysis/DGE_earlyAIR_tAtlas_CD8_TF.Rmd
    Modified:   analysis/DGE_earlyAIR_tAtlas_CD8_TN.Rmd
    Modified:   analysis/DGE_earlyAIR_tAtlas_DZtoLZ_GCB.Rmd
    Modified:   analysis/DGE_earlyAIR_tAtlas_Memory_Bcells.Rmd
    Modified:   analysis/DGE_earlyAIR_tAtlas_Naïve_Bcells.Rmd
    Modified:   analysis/Nasal_brushings.Rmd
    Modified:   analysis/Nasal_brushings_v2.Rmd
    Modified:   analysis/Subclustering_Adenoids.Rmd
    Modified:   analysis/Subclustering_BAL.Rmd
    Modified:   analysis/Subclustering_Bronchial_brushings.Rmd
    Modified:   analysis/Subclustering_Nasal_brushings.Rmd
    Modified:   analysis/Subclustering_Tonsils.Rmd
    Modified:   analysis/Tonsils.Rmd
    Modified:   analysis/Tonsils_v2.Rmd
    Modified:   analysis/index.Rmd
    Modified:   output/CSV/BAL_Marker_gene_clusters.limmaTrendRNA_snn_res.0.4/REACTOME-cluster-limma-c0.csv
    Modified:   output/CSV/BAL_Marker_gene_clusters.limmaTrendRNA_snn_res.0.4/REACTOME-cluster-limma-c1.csv
    Modified:   output/CSV/BAL_Marker_gene_clusters.limmaTrendRNA_snn_res.0.4/REACTOME-cluster-limma-c10.csv
    Modified:   output/CSV/BAL_Marker_gene_clusters.limmaTrendRNA_snn_res.0.4/REACTOME-cluster-limma-c11.csv
    Modified:   output/CSV/BAL_Marker_gene_clusters.limmaTrendRNA_snn_res.0.4/REACTOME-cluster-limma-c12.csv
    Modified:   output/CSV/BAL_Marker_gene_clusters.limmaTrendRNA_snn_res.0.4/REACTOME-cluster-limma-c13.csv
    Modified:   output/CSV/BAL_Marker_gene_clusters.limmaTrendRNA_snn_res.0.4/REACTOME-cluster-limma-c14.csv
    Modified:   output/CSV/BAL_Marker_gene_clusters.limmaTrendRNA_snn_res.0.4/REACTOME-cluster-limma-c15.csv
    Modified:   output/CSV/BAL_Marker_gene_clusters.limmaTrendRNA_snn_res.0.4/REACTOME-cluster-limma-c16.csv
    Modified:   output/CSV/BAL_Marker_gene_clusters.limmaTrendRNA_snn_res.0.4/REACTOME-cluster-limma-c17.csv
    Modified:   output/CSV/BAL_Marker_gene_clusters.limmaTrendRNA_snn_res.0.4/REACTOME-cluster-limma-c2.csv
    Modified:   output/CSV/BAL_Marker_gene_clusters.limmaTrendRNA_snn_res.0.4/REACTOME-cluster-limma-c3.csv
    Modified:   output/CSV/BAL_Marker_gene_clusters.limmaTrendRNA_snn_res.0.4/REACTOME-cluster-limma-c4.csv
    Modified:   output/CSV/BAL_Marker_gene_clusters.limmaTrendRNA_snn_res.0.4/REACTOME-cluster-limma-c5.csv
    Modified:   output/CSV/BAL_Marker_gene_clusters.limmaTrendRNA_snn_res.0.4/REACTOME-cluster-limma-c6.csv
    Modified:   output/CSV/BAL_Marker_gene_clusters.limmaTrendRNA_snn_res.0.4/REACTOME-cluster-limma-c7.csv
    Modified:   output/CSV/BAL_Marker_gene_clusters.limmaTrendRNA_snn_res.0.4/REACTOME-cluster-limma-c8.csv
    Modified:   output/CSV/BAL_Marker_gene_clusters.limmaTrendRNA_snn_res.0.4/REACTOME-cluster-limma-c9.csv
    Modified:   output/CSV/BAL_Marker_gene_clusters.limmaTrendRNA_snn_res.0.4/up-cluster-limma-c0.csv
    Modified:   output/CSV/BAL_Marker_gene_clusters.limmaTrendRNA_snn_res.0.4/up-cluster-limma-c1.csv
    Modified:   output/CSV/BAL_Marker_gene_clusters.limmaTrendRNA_snn_res.0.4/up-cluster-limma-c10.csv
    Modified:   output/CSV/BAL_Marker_gene_clusters.limmaTrendRNA_snn_res.0.4/up-cluster-limma-c11.csv
    Modified:   output/CSV/BAL_Marker_gene_clusters.limmaTrendRNA_snn_res.0.4/up-cluster-limma-c12.csv
    Modified:   output/CSV/BAL_Marker_gene_clusters.limmaTrendRNA_snn_res.0.4/up-cluster-limma-c13.csv
    Modified:   output/CSV/BAL_Marker_gene_clusters.limmaTrendRNA_snn_res.0.4/up-cluster-limma-c14.csv
    Modified:   output/CSV/BAL_Marker_gene_clusters.limmaTrendRNA_snn_res.0.4/up-cluster-limma-c15.csv
    Modified:   output/CSV/BAL_Marker_gene_clusters.limmaTrendRNA_snn_res.0.4/up-cluster-limma-c16.csv
    Modified:   output/CSV/BAL_Marker_gene_clusters.limmaTrendRNA_snn_res.0.4/up-cluster-limma-c17.csv
    Modified:   output/CSV/BAL_Marker_gene_clusters.limmaTrendRNA_snn_res.0.4/up-cluster-limma-c2.csv
    Modified:   output/CSV/BAL_Marker_gene_clusters.limmaTrendRNA_snn_res.0.4/up-cluster-limma-c3.csv
    Modified:   output/CSV/BAL_Marker_gene_clusters.limmaTrendRNA_snn_res.0.4/up-cluster-limma-c4.csv
    Modified:   output/CSV/BAL_Marker_gene_clusters.limmaTrendRNA_snn_res.0.4/up-cluster-limma-c5.csv
    Modified:   output/CSV/BAL_Marker_gene_clusters.limmaTrendRNA_snn_res.0.4/up-cluster-limma-c6.csv
    Modified:   output/CSV/BAL_Marker_gene_clusters.limmaTrendRNA_snn_res.0.4/up-cluster-limma-c7.csv
    Modified:   output/CSV/BAL_Marker_gene_clusters.limmaTrendRNA_snn_res.0.4/up-cluster-limma-c8.csv
    Modified:   output/CSV/BAL_Marker_gene_clusters.limmaTrendRNA_snn_res.0.4/up-cluster-limma-c9.csv
    Modified:   output/CSV_v2/G000231_Neeland_Nasal_brushings.propeller.xlsx
    Modified:   output/DGE/RUVseq_TonsilAtlas/DGE_RUVSeq_Age_TonsilAtlas.xlsx
    Modified:   output/DGE/RUVseq_earlyAIR_Tonsils/CD4 TCM/all_res.csv
    Modified:   output/DGE/RUVseq_earlyAIR_Tonsils/CD4 TCM/down_res.csv
    Modified:   output/DGE/RUVseq_earlyAIR_Tonsils/CD4 TCM/up_res.csv
    Modified:   output/DGE/RUVseq_earlyAIR_Tonsils/CD4 TFH/all_res.csv
    Modified:   output/DGE/RUVseq_earlyAIR_Tonsils/CD4 TFH/down_res.csv
    Modified:   output/DGE/RUVseq_earlyAIR_Tonsils/CD4 TFH/up_res.csv
    Modified:   output/DGE/RUVseq_earlyAIR_Tonsils/CD4 TN/all_res.csv
    Modified:   output/DGE/RUVseq_earlyAIR_Tonsils/CD4 TN/down_res.csv
    Modified:   output/DGE/RUVseq_earlyAIR_Tonsils/CD4 TN/up_res.csv
    Modified:   output/DGE/RUVseq_earlyAIR_Tonsils/CD4 Treg-eff/all_res.csv
    Modified:   output/DGE/RUVseq_earlyAIR_Tonsils/CD4 Treg-eff/down_res.csv
    Modified:   output/DGE/RUVseq_earlyAIR_Tonsils/CD4 Treg-eff/up_res.csv
    Modified:   output/DGE/RUVseq_earlyAIR_Tonsils/CD4 Treg/all_res.csv
    Modified:   output/DGE/RUVseq_earlyAIR_Tonsils/CD4 Treg/down_res.csv
    Modified:   output/DGE/RUVseq_earlyAIR_Tonsils/CD4 Treg/up_res.csv
    Modified:   output/DGE/RUVseq_earlyAIR_Tonsils/CD4 effector/all_res.csv
    Modified:   output/DGE/RUVseq_earlyAIR_Tonsils/CD4 effector/down_res.csv
    Modified:   output/DGE/RUVseq_earlyAIR_Tonsils/CD4 effector/up_res.csv
    Modified:   output/DGE/RUVseq_earlyAIR_Tonsils/CD8 TF/all_res.csv
    Modified:   output/DGE/RUVseq_earlyAIR_Tonsils/CD8 TF/down_res.csv
    Modified:   output/DGE/RUVseq_earlyAIR_Tonsils/CD8 TF/up_res.csv
    Modified:   output/DGE/RUVseq_earlyAIR_Tonsils/CD8 TN/all_res.csv
    Modified:   output/DGE/RUVseq_earlyAIR_Tonsils/CD8 TN/down_res.csv
    Modified:   output/DGE/RUVseq_earlyAIR_Tonsils/CD8 TN/up_res.csv
    Modified:   output/DGE/RUVseq_earlyAIR_Tonsils/Cycling GCB/all_res.csv
    Modified:   output/DGE/RUVseq_earlyAIR_Tonsils/Cycling GCB/down_res.csv
    Modified:   output/DGE/RUVseq_earlyAIR_Tonsils/Cycling GCB/up_res.csv
    Modified:   output/DGE/RUVseq_earlyAIR_Tonsils/DGE_RUVSeq_Age_Tonsils.xlsx
    Modified:   output/DGE/RUVseq_earlyAIR_Tonsils/DGE_RUVSeq_Tonsils_all_results.rds
    Modified:   output/DGE/RUVseq_earlyAIR_Tonsils/DZ G2Mphase/all_res.csv
    Modified:   output/DGE/RUVseq_earlyAIR_Tonsils/DZ G2Mphase/down_res.csv
    Modified:   output/DGE/RUVseq_earlyAIR_Tonsils/DZ G2Mphase/up_res.csv
    Modified:   output/DGE/RUVseq_earlyAIR_Tonsils/DZ GCB/all_res.csv
    Modified:   output/DGE/RUVseq_earlyAIR_Tonsils/DZ GCB/down_res.csv
    Modified:   output/DGE/RUVseq_earlyAIR_Tonsils/DZ GCB/up_res.csv
    Modified:   output/DGE/RUVseq_earlyAIR_Tonsils/DZ early  Sphase/all_res.csv
    Modified:   output/DGE/RUVseq_earlyAIR_Tonsils/DZ early  Sphase/down_res.csv
    Modified:   output/DGE/RUVseq_earlyAIR_Tonsils/DZ early  Sphase/up_res.csv
    Modified:   output/DGE/RUVseq_earlyAIR_Tonsils/DZ late Sphase/all_res.csv
    Modified:   output/DGE/RUVseq_earlyAIR_Tonsils/DZ late Sphase/down_res.csv
    Modified:   output/DGE/RUVseq_earlyAIR_Tonsils/DZ late Sphase/up_res.csv
    Modified:   output/DGE/RUVseq_earlyAIR_Tonsils/DZtoLZ GCB transition/all_res.csv
    Modified:   output/DGE/RUVseq_earlyAIR_Tonsils/DZtoLZ GCB transition/down_res.csv
    Modified:   output/DGE/RUVseq_earlyAIR_Tonsils/DZtoLZ GCB transition/up_res.csv
    Modified:   output/DGE/RUVseq_earlyAIR_Tonsils/Double negative T/all_res.csv
    Modified:   output/DGE/RUVseq_earlyAIR_Tonsils/Double negative T/down_res.csv
    Modified:   output/DGE/RUVseq_earlyAIR_Tonsils/Double negative T/up_res.csv
    Modified:   output/DGE/RUVseq_earlyAIR_Tonsils/Early GC-committed NBC/all_res.csv
    Modified:   output/DGE/RUVseq_earlyAIR_Tonsils/Early GC-committed NBC/down_res.csv
    Modified:   output/DGE/RUVseq_earlyAIR_Tonsils/Early GC-committed NBC/up_res.csv
    Modified:   output/DGE/RUVseq_earlyAIR_Tonsils/Early MBC/all_res.csv
    Modified:   output/DGE/RUVseq_earlyAIR_Tonsils/Early MBC/down_res.csv
    Modified:   output/DGE/RUVseq_earlyAIR_Tonsils/Early MBC/up_res.csv
    Modified:   output/DGE/RUVseq_earlyAIR_Tonsils/Early PC precursor/all_res.csv
    Modified:   output/DGE/RUVseq_earlyAIR_Tonsils/Early PC precursor/down_res.csv
    Modified:   output/DGE/RUVseq_earlyAIR_Tonsils/Early PC precursor/up_res.csv
    Modified:   output/DGE/RUVseq_earlyAIR_Tonsils/Follicular dendritic cells/all_res.csv
    Modified:   output/DGE/RUVseq_earlyAIR_Tonsils/Follicular dendritic cells/down_res.csv
    Modified:   output/DGE/RUVseq_earlyAIR_Tonsils/Follicular dendritic cells/up_res.csv
    Modified:   output/DGE/RUVseq_earlyAIR_Tonsils/GC-commited metabolic activation/all_res.csv
    Modified:   output/DGE/RUVseq_earlyAIR_Tonsils/GC-commited metabolic activation/down_res.csv
    Modified:   output/DGE/RUVseq_earlyAIR_Tonsils/GC-commited metabolic activation/up_res.csv
    Modified:   output/DGE/RUVseq_earlyAIR_Tonsils/Gamma delta T/all_res.csv
    Modified:   output/DGE/RUVseq_earlyAIR_Tonsils/Gamma delta T/down_res.csv
    Modified:   output/DGE/RUVseq_earlyAIR_Tonsils/Gamma delta T/up_res.csv
    Modified:   output/DGE/RUVseq_earlyAIR_Tonsils/Memory B cells/all_res.csv
    Modified:   output/DGE/RUVseq_earlyAIR_Tonsils/Memory B cells/down_res.csv
    Modified:   output/DGE/RUVseq_earlyAIR_Tonsils/Memory B cells/up_res.csv
    Modified:   output/DGE/RUVseq_earlyAIR_Tonsils/Monocytes_macrophages/all_res.csv
    Modified:   output/DGE/RUVseq_earlyAIR_Tonsils/Monocytes_macrophages/down_res.csv
    Modified:   output/DGE/RUVseq_earlyAIR_Tonsils/Monocytes_macrophages/up_res.csv
    Modified:   output/DGE/RUVseq_earlyAIR_Tonsils/Naïve B cell-IFN/all_res.csv
    Modified:   output/DGE/RUVseq_earlyAIR_Tonsils/Naïve B cell-IFN/down_res.csv
    Modified:   output/DGE/RUVseq_earlyAIR_Tonsils/Naïve B cell-IFN/up_res.csv
    Modified:   output/DGE/RUVseq_earlyAIR_Tonsils/Naïve B cells activated/all_res.csv
    Modified:   output/DGE/RUVseq_earlyAIR_Tonsils/Naïve B cells activated/down_res.csv
    Modified:   output/DGE/RUVseq_earlyAIR_Tonsils/Naïve B cells activated/up_res.csv
    Modified:   output/DGE/RUVseq_earlyAIR_Tonsils/Naïve B cells/all_res.csv
    Modified:   output/DGE/RUVseq_earlyAIR_Tonsils/Naïve B cells/down_res.csv
    Modified:   output/DGE/RUVseq_earlyAIR_Tonsils/Naïve B cells/up_res.csv
    Modified:   output/DGE/RUVseq_earlyAIR_Tonsils/Plasma B cells/all_res.csv
    Modified:   output/DGE/RUVseq_earlyAIR_Tonsils/Plasma B cells/down_res.csv
    Modified:   output/DGE/RUVseq_earlyAIR_Tonsils/Plasma B cells/up_res.csv
    Modified:   output/DGE/RUVseq_earlyAIR_Tonsils/Pre-BCRi II/all_res.csv
    Modified:   output/DGE/RUVseq_earlyAIR_Tonsils/Pre-BCRi II/down_res.csv
    Modified:   output/DGE/RUVseq_earlyAIR_Tonsils/Pre-BCRi II/up_res.csv
    Modified:   output/DGE/RUVseq_earlyAIR_Tonsils/T-IFN/all_res.csv
    Modified:   output/DGE/RUVseq_earlyAIR_Tonsils/T-IFN/down_res.csv
    Modified:   output/DGE/RUVseq_earlyAIR_Tonsils/T-IFN/up_res.csv
    Modified:   output/DGE/RUVseq_earlyAIR_Tonsils/TFH-LZ-GC/all_res.csv
    Modified:   output/DGE/RUVseq_earlyAIR_Tonsils/TFH-LZ-GC/down_res.csv
    Modified:   output/DGE/RUVseq_earlyAIR_Tonsils/TFH-LZ-GC/up_res.csv
    Deleted:    test

Note that any generated files, e.g. HTML, png, CSS, etc., are not included in this status report because it is ok for generated content to have uncommitted changes.


There are no past versions. Publish this analysis with wflow_publish() to start tracking its development.


Load libraries

suppressPackageStartupMessages({
  library(BiocStyle)
  library(tidyverse)
  library(here)
  library(dplyr)
  library(Seurat)
  library(clustree)
  library(paletteer)
  library(viridis)
  library(ggforce)
  library(ggridges)
  library(kableExtra)
  library(RColorBrewer)
  library(data.table)
  library(dplyr)
  library(cowplot)
  library(ggplot2)
  library(paletteer)
  library(patchwork)
  library(harmony)
  library(BiocParallel)
  library(circlize)
  library(presto)
})

set.seed(2026)

B cells

These are all the B cells across 5 tissues-

paed_sub <- readRDS(here("output/RDS/Lineages_RDS_combined/SEU_B_Cells.rds"))

if (!"umap.bcells" %in% names(paed_sub@reductions)) {
  paed_sub <- paed_sub |>
    FindVariableFeatures() |>
    ScaleData() |>
    RunPCA()
  
  gc()
  paed_sub <- RunUMAP(paed_sub, dims = 1:30, reduction = "pca",
                      reduction.name = "umap.bcells")
  
  paed_sub <- paed_sub |>
    FindNeighbors(dims = 1:30, reduction = "pca") |>
    FindClusters(resolution = 0.2)
  gc()
  
 } else {
  message("skipping processing")
}
skipping processing
table(paed_sub$seurat_clusters)

     0      1      2      3      4      5      6      7 
101604  64033  58159  37003  13824  11181    566    131 
DimPlot(paed_sub, reduction = "umap.bcells", raster =F, repel=T, label = T)

paed_sub <- FindSubCluster(paed_sub, cluster = "5", graph.name = "RNA_snn", resolution = 0.1, subcluster.name = "cluster")
Modularity Optimizer version 1.3.0 by Ludo Waltman and Nees Jan van Eck

Number of nodes: 11181
Number of edges: 336893

Running Louvain algorithm...
Maximum modularity in 10 random starts: 0.9393
Number of communities: 4
Elapsed time: 0 seconds
DimPlot(paed_sub, raster = F, reduction = "umap.bcells", label = T, group.by = "cluster", repel = T)

Idents(paed_sub) <- factor(paed_sub$cluster,
                           levels = c("0","1","2","3","4","5_0","5_1","5_2","5_3","6","7"))
paed_sub$cluster <- Idents(paed_sub)
FeaturePlot(
  paed_sub,
  features = c("TNFRSF13B", "MEF2B", "BCL6", "AICDA", "MKI67", "TOP2A", "CD83"),
  reduction = "umap.bcells",
  raster = FALSE,
  label = TRUE,
  split.by = "tissue"
)
Warning: The `slot` argument of `FetchData()` is deprecated as of SeuratObject 5.0.0.
ℹ Please use the `layer` argument instead.
ℹ The deprecated feature was likely used in the Seurat package.
  Please report the issue at <https://github.com/satijalab/seurat/issues>.
This warning is displayed once every 8 hours.
Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
generated.

sort(table(paed_sub$harmonised_atlas_label) ,decreasing = T)

            B cells Doublet query/Other     Cycling T cells       Pre B/T cells 
             285264                 930                 132                  89 
    Dendritic cells         CD4 T cells  Epithelial lineage         CD8 T cells 
                 48                  30                   4                   2 
        Macrophages 
                  2 
sort(table(paed_sub$predicted.celltype.l1) ,decreasing = T)

              B naive DZtoLZ GCB transition        Cycling DZ GCB 
                98675                 40311                 36944 
    FCRL4/5+ B memory              B memory                    PC 
                24527                 22269                 13913 
               DZ GCB           B activated                LZ GCB 
                10162                  9911                  6871 
LZtoDZ GCB transition        preMBC/doublet                preGCB 
                 2942                   860                   832 
                prePB                preB/T             Cycling T 
                  110                    89                    82 
           PC/doublet                    PB             CD4 naive 
                   70                    61                    15 
              CD4 TCM           Cycling FDC               CD4 TFH 
                    3                     3                     2 
                  aDC 
                    1 
table(paed_sub$predicted.celltype.l1, paed_sub$cluster)
                       
                            0     1     2     3     4   5_0   5_1   5_2   5_3
  aDC                       0     0     0     0     0     0     1     0     0
  B activated            9133   624    13     7     0     9   113    11     0
  B memory               1172 18280    71   633    24  1136   114   807    32
  B naive               85528 12425    49     0    72     4    73   487     0
  CD4 naive                 9     2     1     0     0     1     1     1     0
  CD4 TCM                   0     1     0     0     2     0     0     0     0
  CD4 TFH                   1     1     0     0     0     0     0     0     0
  Cycling DZ GCB            0     0  1526 31421     0  3990     5     2     0
  Cycling FDC               0     0     0     0     0     3     0     0     0
  Cycling T                 0     0     0     4     0    78     0     0     0
  DZ GCB                    0     0  9574   537     0    16    14    21     0
  DZtoLZ GCB transition     0     4 38607  1288     0    66   300    39     0
  FCRL4/5+ B memory       898 23023    10     4    10    18   517    38     9
  LZ GCB                    2     2  6015   503     0    69   276     3     0
  LZtoDZ GCB transition     0     0     4  1572     0  1362     4     0     0
  PB                        0     0     0    54     0     3     0     0     0
  PC                        0     1    18    30 13393     0     0     0     0
  PC/doublet               16     6     0     3     2     1     0    41     0
  preB/T                    0     0     6     0     0     0     0     1     0
  preGCB                   12    11     8     0     3    93   689    14     0
  preMBC/doublet            9    29   617    44     0    21    21   111     0
  prePB                     0     0    41     1     1     0     1     0     0
                       
                            6     7
  aDC                       0     0
  B activated               0     1
  B memory                  0     0
  B naive                   0    37
  CD4 naive                 0     0
  CD4 TCM                   0     0
  CD4 TFH                   0     0
  Cycling DZ GCB            0     0
  Cycling FDC               0     0
  Cycling T                 0     0
  DZ GCB                    0     0
  DZtoLZ GCB transition     7     0
  FCRL4/5+ B memory         0     0
  LZ GCB                    1     0
  LZtoDZ GCB transition     0     0
  PB                        4     0
  PC                      471     0
  PC/doublet                1     0
  preB/T                    0    82
  preGCB                    1     1
  preMBC/doublet            0     8
  prePB                    66     0
cell_order <- factor(c(
  # Naive B cells
  "NBC", "NBC early activation", "NBC IFN-activated", "NBC CD229+",
  "Early GC-commited NBC", "GC-commited NBC", "preGC",
  
  # GC Dark Zone
  "DZ early Sphase", "DZ late Sphase", "DZ early G2Mphase", 
  "DZ late G2Mphase", "DZ non proliferative", "DZ migratory PC precursor",
  
  # Transitions
  "DZ_LZ transition", "LZ_DZ transition", "DZ cell cycle exit",
  
  # GC Light Zone  
  "LZ", "LZ proliferative", "LZ_DZ reentry commitment",
  "PC committed Light Zone GCBC",
  
  # Memory B cells
  "ncsMBC", "ncsMBC FCRL4/5+", "csMBC", "csMBC FCRL4/5+",
  "Early MBC", "MBC FCRL5+", "Precursor MBCs", "Reactivated proliferative MBCs",
  
  # Plasma cell precursors & PCs
  "IgG+ PC precursor", "IgM+ PC precursor", "IgD PC precursor", 
  "IgM+ early PC precursor", "preMature IgG+ PC", "preMature IgM+ PC",
  "Mature IgG+ PC", "Mature IgA+ PC", "Mature IgM+ PC",
  "Short lived IgM+ PC", "PB", "PB committed early PC precursor",
  "MBC derived early PC precursor", "MBC derived IgA+ PC", 
  "MBC derived IgG+ PC", "MBC derived PC precursor",
  
  # Other (T cells, FDC, etc.)
  "cycling T"
 ), ordered = TRUE)

ct1 <- table(paed_sub$predicted.celltype.l2, paed_sub$seurat_clusters)
df_atlas_cluster <- as.data.frame(ct1)
colnames(df_atlas_cluster) <- c("predicted.celltype.l2", "cluster", "n")


df_filtered <- df_atlas_cluster |>
  group_by(predicted.celltype.l2) |>
  mutate(total = sum(n)) |>
  ungroup() |>
  filter(total >= 50) |>
  mutate(predicted.celltype.l2 = factor(
    predicted.celltype.l2, 
    levels = cell_order 
  )) |>
  filter(!is.na(predicted.celltype.l2)) 

ggplot(df_filtered, aes(x = cluster, y = predicted.celltype.l2, fill = n)) +
  geom_tile() +
  scale_fill_viridis_c(option = "plasma")  +
  theme_minimal() +
  theme(axis.text.x = element_text(angle = 90, hjust = 1)) +
  labs(x = "Seurat cluster", y = "predicted.celltype.l2 (Tonsil Atlas)",
       fill = "Cell count")


ggplot(df_filtered, aes(x = cluster, y = predicted.celltype.l2, fill = n)) +
  geom_tile() +
  scale_fill_viridis_c(option = "plasma", trans = "log10") +
  theme_minimal() +
  theme(axis.text.x = element_text(angle = 90, hjust = 1)) +
  labs(x = "Seurat cluster", y = "predicted.celltype.l2", fill = "Cell count (log10)")

Level 1 labels

new.cluster.ids <- c("Naive B", #0
                     "Memory B", #1
                     "Non-Cycling GCB", #2
                     "Cycling GCB", #3
                     "Plasma B", #4
                     "Cycling GCB", #5_0
                     "Non-Cycling GCB", #5_1 
                     "Memory B", #5_2
                     "Non-Cycling GCB", #5_3 
                     "Plasma B" ,#6
                     "Pre B" #7
                     )
names(new.cluster.ids) <- levels(paed_sub)
paed_sub <- RenameIdents(paed_sub, new.cluster.ids)
bcell_order <- c("Pre B", "Naive B", "Memory B", "Non-Cycling GCB", "Cycling GCB", "Plasma B")
Idents(paed_sub) <- factor(Idents(paed_sub), levels = bcell_order)
paed_sub$cell_labels_l1 <- Idents(paed_sub)
DimPlot(paed_sub, raster = F, reduction = "umap.bcells", label = T, repel = T)

Per tissue composition

df <- paed_sub@meta.data |>
  count(cell_labels_l1, tissue, name = "n")

df |>
  group_by(cell_labels_l1) |>
  mutate(prop = n / sum(n)) |>
  ungroup() |>
  ggplot(aes(cell_labels_l1, prop, fill = tissue)) +
  geom_col(position = "fill") +
  scale_y_continuous(labels = scales::percent_format()) +
  theme_minimal() +
  theme(axis.text.x = element_text(angle = 90, hjust = 1)) +
  labs(x = "B cells L1", y = "Composition by tissue", fill = "Tissue") +
  ggtitle("Proportions at tissue level")

df_totals <- df |>
  group_by(cell_labels_l1) |>
  summarise(total = sum(n), .groups = "drop")

ggplot(df, aes(cell_labels_l1, n, fill = tissue)) +
  geom_col() +
  geom_text(data = df_totals,
            aes(cell_labels_l1, total, label = total),
            vjust = -0.3, size = 3, inherit.aes = FALSE) +
  theme_minimal() +
  theme(axis.text.x = element_text(angle = 90, hjust = 1)) +
  labs(x = "B cells L1", y = "Number of cells", fill = "Tissue") +
  ggtitle("Proportions at tissue level and total cell counts")

Naive B cells

naive_b <-  subset(paed_sub, idents = "Naive B")
keep_cells <- Idents(paed_sub) %in% "Naive B"
naive_b@assays$RNA@cells@.Data <- paed_sub@assays$RNA@cells@.Data[keep_cells, ]
naive_b
An object of class Seurat 
18076 features across 101604 samples within 1 assay 
Active assay: RNA (18076 features, 2000 variable features)
 3 layers present: data, counts, scale.data
 4 dimensional reductions calculated: pca, umap.unintegrated, umap.l1, umap.bcells
out <- here("output/RDS/Lineages_RDS_combined/SEU_NaiveB_Cells.rds")

if (!file.exists(out)) {
  naive_b <- naive_b %>%
  FindVariableFeatures() %>%
  ScaleData() %>%
  RunPCA() 
  
  gc() 
  naive_b <- RunUMAP(naive_b, dims = 1:30, reduction = "pca", reduction.name = "umap.naiveB")

  meta_data_columns <- colnames(naive_b@meta.data)
  columns_to_remove <- grep("^RNA_snn_res", meta_data_columns, value = TRUE)
  naive_b@meta.data <- naive_b@meta.data[, !(colnames(naive_b@meta.data) %in% columns_to_remove)]
  resolutions <- seq(0.1, 0.5, by = 0.1)
  naive_b <- FindNeighbors(naive_b, dims = 1:30, reduction = "pca")
  naive_b <- FindClusters(naive_b, resolution = resolutions )
  
  saveRDS(naive_b, out)

} else {
  naive_b <- readRDS(out)
}
clustree(naive_b, prefix = "RNA_snn_res.")

DimPlot(naive_b, group.by = "RNA_snn_res.0.1", reduction = "umap.naiveB", label = TRUE, label.size = 2.5, repel = TRUE, raster = FALSE )

DimPlot(naive_b, group.by = "RNA_snn_res.0.4", reduction = "umap.naiveB", label = TRUE, label.size = 2.5, repel = TRUE, raster = FALSE )

DimPlot(naive_b, group.by = "RNA_snn_res.0.5", reduction = "umap.naiveB", label = TRUE, label.size = 2.5, repel = TRUE, raster = FALSE )

Choosing resolution 0.1 initially and using FindSubCluster function to split the subclusters.

opt_res <- "RNA_snn_res.0.1"  
n <- nlevels(naive_b$RNA_snn_res.0.1)
naive_b$RNA_snn_res.0.1 <- factor(naive_b$RNA_snn_res.0.1, levels = seq(0,n-1))
naive_b$seurat_clusters <- NULL
naive_b$cluster <- naive_b$RNA_snn_res.0.1
Idents(naive_b) <- naive_b$cluster

Inspecting expression of some markers listed in the Tonsil Atlas Glossary (https://figshare.com/articles/book/GLOSSARY_TONSIL_ATLAS_pdf/24885063)

 features = list(
    NBC_core         = c("FCER2", "IGHM", "IGHD"),
    NBC_early_act    = c("CD69", "IL4R"),
    NBC_IFN_act      = c("ISG15", "IFIT1", "IFI44", "MX1"),
    NBC_CD229        = c("LY9", "LILRA4"),
    NBC_GC_committed = c("NFKB1", "CCL3", "CCND2", "MYC")
  )
for (g in features) {
  print(
    FeaturePlot(
      naive_b,
      features  = g,
      reduction = "umap.naiveB",
      raster    = FALSE,
      label     = TRUE,
      split.by  = "tissue"
    ) #+ ggtitle(paste("Naive marker:", g))
  )
}

Correcting previous labels and defining level 1 and level 2

naive_b$cell_labels <- NULL
Warning: Cannot find cell-level meta data named cell_labels
Idents(naive_b) <- "RNA_snn_res.0.1"
new.cluster.ids <- c("Naïve B", 
                     "Naïve B-IFN", 
                     "Naïve B activated")
names(new.cluster.ids) <- levels(naive_b)
naive_b <- RenameIdents(naive_b, new.cluster.ids)
naive_b$cell_labels_l2 <- Idents(naive_b)

Subclustering Naïve B cells (cluster 0)

naive_b <- FindSubCluster(naive_b, cluster = "Naïve B", graph.name = "RNA_snn", resolution = 0.2, subcluster.name = "NBC")
Modularity Optimizer version 1.3.0 by Ludo Waltman and Nees Jan van Eck

Number of nodes: 74456
Number of edges: 1062973

Running Louvain algorithm...
Maximum modularity in 10 random starts: 0.8406
Number of communities: 14
Elapsed time: 7 seconds
10 singletons identified. 4 final clusters.
DimPlot(naive_b, raster = F, reduction = "umap.naiveB", label = T, group.by = "NBC", repel = T)

Idents(naive_b) <- naive_b$NBC

Subclustering Naïve B cells activated (cluster 1)

naive_b <- FindSubCluster(naive_b, cluster = "Naïve B activated", graph.name = "RNA_snn", resolution = 0.1, subcluster.name = "NBC")
Modularity Optimizer version 1.3.0 by Ludo Waltman and Nees Jan van Eck

Number of nodes: 12876
Number of edges: 259900

Running Louvain algorithm...
Maximum modularity in 10 random starts: 0.9179
Number of communities: 2
Elapsed time: 0 seconds
Idents(naive_b) <- naive_b$NBC
DimPlot(naive_b, reduction = "umap.naiveB", label = TRUE, group.by = "NBC", label.size = 3.5, repel = TRUE, raster = FALSE )

Subclustering Naïve B cells-IFN (cluster 2)

naive_b <- FindSubCluster(naive_b, cluster = "Naïve B-IFN", graph.name = "RNA_snn", resolution = 0.1, subcluster.name = "NBC")
Modularity Optimizer version 1.3.0 by Ludo Waltman and Nees Jan van Eck

Number of nodes: 14272
Number of edges: 289523

Running Louvain algorithm...
Maximum modularity in 10 random starts: 0.9046
Number of communities: 2
Elapsed time: 1 seconds
Idents(naive_b) <- naive_b$NBC
DimPlot(naive_b, reduction = "umap.naiveB", label = TRUE, group.by = "NBC", label.size = 3.5, repel = TRUE, raster = FALSE )

Renaming idents

new_levels <- c(
  "Naïve B_0",
  "Naïve B_1",
  "Naïve B_2",
  "Naïve B_3",
  "Naïve B-IFN_0",
  "Naïve B-IFN_1",
  "Naïve B activated_0",
  "Naïve B activated_1"
)

Seurat::Idents(naive_b) <- factor(
  Seurat::Idents(naive_b),
  levels = new_levels
)

naive_b$cell_labels_l3 <- Idents(naive_b)

DE features of Naive B cells

The marker genes for this Naive B cell subclustering can be found here-

NaiveB_population_subclusters

features.no.mt <- rownames(paed_sub)[!grepl("^MT-", rownames(paed_sub))]
naiveB.markers <- FindAllMarkers(naive_b, only.pos = TRUE, min.pct = 0.25, logfc.threshold = 0.25, features = features.no.mt)
Calculating cluster Naïve B_0
Warning: The `slot` argument of `GetAssayData()` is deprecated as of SeuratObject 5.0.0.
ℹ Please use the `layer` argument instead.
ℹ The deprecated feature was likely used in the Seurat package.
  Please report the issue at <https://github.com/satijalab/seurat/issues>.
This warning is displayed once every 8 hours.
Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
generated.
Warning: `PackageCheck()` was deprecated in SeuratObject 5.0.0.
ℹ Please use `rlang::check_installed()` instead.
ℹ The deprecated feature was likely used in the Seurat package.
  Please report the issue at <https://github.com/satijalab/seurat/issues>.
This warning is displayed once every 8 hours.
Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
generated.
Calculating cluster Naïve B_1
Calculating cluster Naïve B_2
Calculating cluster Naïve B_3
Calculating cluster Naïve B-IFN_0
Calculating cluster Naïve B-IFN_1
Calculating cluster Naïve B activated_0
Calculating cluster Naïve B activated_1
naiveB.markers %>%
    group_by(cluster) %>%
    dplyr::filter(avg_log2FC > 1)
# A tibble: 397 × 7
# Groups:   cluster [7]
   p_val avg_log2FC pct.1 pct.2 p_val_adj cluster   gene   
   <dbl>      <dbl> <dbl> <dbl>     <dbl> <fct>     <chr>  
 1     0       1.12 0.344 0.155         0 Naïve B_0 CD1C   
 2     0       1.26 0.61  0.395         0 Naïve B_1 PLPP5  
 3     0       1.02 0.764 0.579         0 Naïve B_1 KLF2   
 4     0       1.06 0.365 0.235         0 Naïve B_1 MTSS1  
 5     0       1.08 0.3   0.182         0 Naïve B_1 CD200  
 6     0       2.20 0.763 0.248         0 Naïve B_3 RHOBTB2
 7     0       1.98 0.562 0.192         0 Naïve B_3 CRIP3  
 8     0       1.42 0.754 0.428         0 Naïve B_3 LY9    
 9     0       1.13 0.758 0.438         0 Naïve B_3 GM2A   
10     0       1.50 0.562 0.26          0 Naïve B_3 OAS1   
# ℹ 387 more rows
top10 <- naiveB.markers |>
     group_by(cluster) |>
     distinct(gene, .keep_all = TRUE) |>
     top_n(n = 10, wt = avg_log2FC)

naive_b <- ScaleData(
  naive_b,
  features = unique(top10$gene),
  assay = "RNA",
  verbose = FALSE
)
Warning: Different features in new layer data than already exists for
scale.data
DoHeatmap(naive_b, features = unique(top10$gene), angle = 90) + NoLegend()

cluster_colors <- paletteer::paletteer_d("pals::glasbey")[factor(top10$cluster)]

DotPlot(naive_b,    
        features = unique(top10$gene),
        cols = c("azure1", "blueviolet"),
        dot.scale = 3, assay = "RNA") +
    RotatedAxis() +
    FontSize(y.text = 8, x.text = 12) +
    labs(y = element_blank(), x = element_blank()) +
    coord_flip() +
    theme(axis.text.y = element_text(color = cluster_colors)) +
    ggtitle("Top 10 marker genes per cluster (Seurat)")
Warning: Vectorized input to `element_text()` is not officially supported.
ℹ Results may be unexpected or may change in future versions of ggplot2.

best.wilcox.gene.per.cluster <- naiveB.markers |>
  group_by(cluster) |>
  slice_max(avg_log2FC, n = 1) |>
  select(cluster, gene)

best.wilcox.gene.per.cluster
# A tibble: 8 × 2
# Groups:   cluster [8]
  cluster             gene   
  <fct>               <chr>  
1 Naïve B_0           CD1C   
2 Naïve B_1           PLPP5  
3 Naïve B_2           SNRNP70
4 Naïve B_3           ABCC5  
5 Naïve B-IFN_0       EBI3   
6 Naïve B-IFN_1       EGR2   
7 Naïve B activated_0 IFIT1  
8 Naïve B activated_1 GBP1   
FeaturePlot(
  naive_b,
  features = best.wilcox.gene.per.cluster$gene,
  reduction = "umap.naiveB",
  raster = FALSE,
  ncol = 1,
  label = TRUE,
  split.by = "tissue"
)

out_markers <- here("output",
            "CSV_v3","B_cell_lineage",
            paste("Marker_genes_Reclustered_NaiveB.",opt_res, sep = ""))

dir.create(out_markers, recursive = TRUE, showWarnings = FALSE)

for (cl in unique(naiveB.markers$cluster)) {
  cluster_data <- naiveB.markers %>% dplyr::filter(cluster == cl)
  file_name <- here(out_markers, paste0("G000231_Neeland_", cl, ".csv"))
  if (!file.exists(file_name)) {
  write.csv(cluster_data, file = file_name)
  }
}

Markers with avg_log2FC > 1 & p_val_adj < 0.05

marker_counts <- naiveB.markers %>%
     filter(avg_log2FC > 1 & p_val_adj < 0.05) %>%  
     count(cluster, name = "n_markers") %>%
     arrange(desc(n_markers))
 
print(marker_counts)
              cluster n_markers
1       Naïve B-IFN_0       185
2 Naïve B activated_0        71
3       Naïve B-IFN_1        48
4 Naïve B activated_1        45
5           Naïve B_3        43
6           Naïve B_1         4
7           Naïve B_0         1
ggplot(marker_counts, aes(x = reorder(cluster, n_markers), y = n_markers)) +
     geom_col(fill = "steelblue", alpha = 0.8) +
     coord_flip() +
     labs(title = "High-confidence markers per subcluster (logFC > 1)",
          x = "Subcluster", y = "Number of markers") +
     theme_minimal()

DE markers/gene between Naive B sub-clusters

run_de_and_vln <- function(
  obj, ids, title_prefix,
  top_n = 10, min.pct = 0.25, logfc.threshold = 0.5,
  run_one_vs_all = TRUE, run_pairwise = TRUE,
  print_table = TRUE
) {

  res_list <- list()

  # Helper function to run DE, plot, and optionally show table
  de_plot <- function(id1, id2, comp_name) {
    res <- FindMarkers(
      obj,
      ident.1 = id1,
      ident.2 = id2,
      only.pos = TRUE,
      min.pct = min.pct,
      logfc.threshold = logfc.threshold,
      features = features.no.mt
    )

    top_genes <- res |>
      arrange(p_val_adj, desc(avg_log2FC)) |>
      head(top_n) |>
      rownames()

    res_list[[comp_name]] <<- res

    cat("\n\n####", title_prefix, ":", comp_name, "\n\n")
    print(
      VlnPlot(obj, features = top_genes, idents = unique(c(id1, id2)), pt.size = 0) +
        patchwork::plot_annotation(title = comp_name)
    )

    if (print_table) {
      print(
        kable(
          head(res, 50),
          caption = paste("Top 50 markers:", comp_name)
        )
      )
    }
  }

  # ---- One-vs-rest ----
  if (run_one_vs_all) {
    for (id in ids) {
      de_plot(id, setdiff(ids, id), paste(id, "vs_rest"))
    }
  }

  # ---- Pairwise ----
  if (run_pairwise && length(ids) > 1) {
    for (pair in combn(ids, 2, simplify = FALSE)) {
      de_plot(pair[1], pair[2], paste(pair[1], "vs", pair[2]))
    }
  }

  invisible(res_list)
}

Naive_B

naive_ids <- c("Naïve B_0","Naïve B_1","Naïve B_2","Naïve B_3")

res_all <- run_de_and_vln(
  naive_b,
  naive_ids,
  title_prefix = "Naive B",
  run_one_vs_all = TRUE,
  run_pairwise = TRUE,
  print_table = TRUE
)

Naive B : Naïve B_0 vs_rest

Top 50 markers: Naïve B_0 vs_rest
p_val avg_log2FC pct.1 pct.2 p_val_adj
CR2 0 1.0943013 0.739 0.372 0
CR1 0 1.0583368 0.790 0.443 0
VASP 0 0.5959041 0.691 0.413 0
ARPC1B 0 0.7420148 0.554 0.283 0
SEMA7A 0 1.3006229 0.415 0.148 0
VPREB3 0 0.8893962 0.493 0.237 0
IFNGR1 0 0.6768016 0.567 0.316 0
COTL1 0 0.6101117 0.532 0.283 0
CD24 0 0.6758419 0.617 0.371 0
SPIB 0 0.6303678 0.515 0.271 0
NEIL1 0 0.9365502 0.418 0.180 0
CD1C 0 1.3014866 0.344 0.123 0
LYL1 0 0.5032970 0.490 0.273 0
ACP5 0 0.7901693 0.398 0.189 0
PDLIM1 0 0.5307380 0.466 0.264 0
ELL3 0 0.5272859 0.429 0.232 0
CD82 0 0.5038303 0.416 0.229 0
ITM2C 0 1.0671451 0.329 0.148 0
SBNO2 0 0.5658423 0.398 0.221 0
ABI3 0 0.9038323 0.281 0.107 0
GCA 0 0.5154130 0.409 0.236 0
CALR 0 0.6105829 0.367 0.194 0
PTEN 0 0.5212366 0.380 0.208 0
CD1D 0 0.8121041 0.298 0.127 0
BCL3 0 1.0732632 0.281 0.113 0
PFKFB3 0 0.7008965 0.327 0.159 0
ADGRG5 0 0.5889561 0.319 0.153 0
HIF1A 0 0.5134259 0.363 0.200 0
CCND2 0 0.6768121 0.302 0.145 0
SIGLEC14 0 0.6009125 0.327 0.170 0
MYBL2 0 0.9268160 0.250 0.093 0
ZMIZ1 0 0.6560552 0.285 0.132 0
PKM 0 0.6040379 0.290 0.137 0
PARP9 0 0.5055112 0.320 0.173 0
ARL4C 0 0.7101558 0.294 0.147 0
PDIA3 0 0.5888331 0.295 0.151 0
PLD4 0 0.5341550 0.298 0.156 0
TMEM64 0 0.5935027 0.278 0.138 0
CAB39 0 0.5728383 0.286 0.148 0
CAP1 0 0.6583138 0.257 0.123 0
PMEPA1 0 0.5264641 0.280 0.147 0
CBFA2T3 0 0.5987746 0.259 0.127 0
NEDD9 0 0.5129055 0.268 0.139 0
TBC1D9 0 0.5311728 0.274 0.147 0
IGKC 0 0.5912730 0.700 0.658 0
FOSB 0 0.5143897 0.341 0.210 0

Naive B : Naïve B_1 vs_rest

Top 50 markers: Naïve B_1 vs_rest
p_val avg_log2FC pct.1 pct.2 p_val_adj
PLPP5 0 1.2486829 0.610 0.399 0
ADK 0 0.8967619 0.509 0.391 0
KLF2 0 0.7355450 0.764 0.657 0
CD200 0 0.9690545 0.300 0.197 0
MTSS1 0 0.8905610 0.365 0.266 0
PALM2-AKAP2 0 0.6028253 0.655 0.568 0
ITPR1 0 0.7027965 0.554 0.470 0
SELL 0 0.6571542 0.869 0.787 0
TSC22D3 0 0.6080569 0.733 0.654 0
TXNIP 0 0.8331760 0.960 0.888 0
FCRL1 0 0.6686159 0.841 0.775 0
RIPOR2 0 0.5701995 0.697 0.638 0
CXCR4 0 0.6159928 0.980 0.926 0
FCRL2 0 0.5416509 0.645 0.594 0
CEMIP2 0 0.8890314 0.347 0.251 0
BACH2 0 0.7894512 0.389 0.298 0
NLRP1 0 0.5570718 0.536 0.462 0
FCRL3 0 0.8715940 0.370 0.277 0
CCR7 0 0.7733287 0.356 0.259 0
COL19A1 0 0.5318673 0.497 0.449 0
RIN3 0 0.6393596 0.360 0.291 0
JUN 0 0.5387165 0.566 0.517 0
INPP5F 0 0.6078117 0.361 0.301 0
SLC9A7 0 0.6769005 0.293 0.242 0
SERTAD2 0 0.5586703 0.375 0.331 0
H1FX 0 0.7407872 0.288 0.229 0
OSBPL10 0 0.7168181 0.260 0.204 0
TAPT1 0 0.7185724 0.280 0.235 0
HMCES 0 0.7275604 0.260 0.219 0
HECTD4 0 0.5368649 0.334 0.298 0
MMP17 0 0.5077700 0.323 0.288 0
MARCH3 0 0.5538011 0.265 0.227 0
LAIR1 0 0.5385077 0.288 0.256 0
TCF3 0 0.5040986 0.301 0.278 0

Naive B : Naïve B_2 vs_rest

Top 50 markers: Naïve B_2 vs_rest
p_val avg_log2FC pct.1 pct.2 p_val_adj
TTC7A 0.0000000 0.5165675 0.155 0.268 0.0000000
TRABD 0.0000000 0.5728093 0.145 0.251 0.0000000
DPP7 0.0000000 0.5023260 0.175 0.299 0.0000000
TMEM259 0.0000000 0.5439493 0.224 0.378 0.0000000
DOK3 0.0000000 0.6031688 0.150 0.256 0.0000000
TCIRG1 0.0000000 0.5880969 0.186 0.313 0.0000000
MAP4K2 0.0000000 0.5577238 0.160 0.270 0.0000000
PCSK7 0.0000000 0.5666078 0.213 0.355 0.0000000
LYL1 0.0000000 0.5370731 0.235 0.384 0.0000000
LRCH4 0.0000000 0.5198258 0.268 0.437 0.0000000
SPPL2B 0.0000000 0.5085209 0.288 0.464 0.0000000
BCL2 0.0000000 0.6379024 0.196 0.308 0.0000000
SPIB 0.0000000 0.5603278 0.258 0.394 0.0000000
SNRNP70 0.0000000 0.8237379 0.239 0.355 0.0000129
TNK2 0.0000003 0.7207853 0.284 0.418 0.0061112
TMC8 0.0000013 0.5388008 0.549 0.751 0.0231592
STAT6 0.0055913 0.5082840 0.429 0.646 1.0000000
ARHGAP45 0.0216919 0.5320401 0.421 0.628 1.0000000

Naive B : Naïve B_3 vs_rest

Top 50 markers: Naïve B_3 vs_rest
p_val avg_log2FC pct.1 pct.2 p_val_adj
RHOBTB2 0 2.3109006 0.763 0.237 0
CRIP3 0 1.9283371 0.562 0.194 0
OAS1 0 2.1910554 0.562 0.205 0
GM2A 0 1.2693532 0.758 0.416 0
LY9 0 1.4801828 0.754 0.427 0
SGPP1 0 2.0826507 0.456 0.141 0
DNMT3A 0 1.4092259 0.563 0.255 0
UAP1L1 0 2.4645679 0.379 0.080 0
SLC23A2 0 1.6120254 0.487 0.190 0
NPC2 0 1.3303654 0.559 0.268 0
FAM102A 0 1.5552622 0.524 0.237 0
OAS3 0 2.6790336 0.364 0.081 0
HEXA 0 1.3140281 0.635 0.353 0
KCNAB2 0 1.3725448 0.547 0.267 0
BHLHE40 0 1.7426915 0.423 0.145 0
LRMP 0 1.4484893 0.758 0.483 0
GCNT1 0 1.5382785 0.451 0.177 0
DOK3 0 1.3641399 0.509 0.236 0
ABCC5 0 2.5868630 0.332 0.066 0
MFHAS1 0 2.2742988 0.340 0.077 0
BRI3 0 1.4996667 0.422 0.161 0
CTSA 0 1.5648923 0.416 0.164 0
AMDHD2 0 1.8446157 0.341 0.109 0
PARP15 0 1.0104668 0.924 0.698 0
RENBP 0 2.1782014 0.285 0.068 0
FLCN 0 1.7401721 0.309 0.096 0
FCMR 0 0.7032365 0.983 0.909 0
CD22 0 0.9194995 0.999 0.955 0
MS4A1 0 0.5966725 0.999 0.985 0
HSD17B4 0 1.6206934 0.427 0.182 0
VEGFB 0 1.1430810 0.624 0.342 0
FCRL5 0 1.2379382 0.712 0.452 0
TPP1 0 1.0529034 0.684 0.406 0
SETDB2 0 1.3875072 0.464 0.224 0
DTX1 0 1.0211738 0.699 0.443 0
GPX4 0 1.1703884 0.513 0.262 0
BCL2 0 1.1117057 0.546 0.289 0
IRF4 0 1.2792891 0.467 0.227 0
SCIMP 0 1.3176978 0.404 0.177 0
FCRL3 0 1.2822809 0.549 0.306 0
ASAH1 0 1.7898017 0.251 0.086 0
SLC35B2 0 1.5068829 0.313 0.123 0
FCER2 0 0.7351614 0.876 0.701 0
MTHFR 0 1.1330061 0.478 0.247 0
RGS1 0 1.6333301 0.310 0.127 0
DNPH1 0 1.4166163 0.279 0.110 0
FNIP1 0 1.2094622 0.352 0.158 0
NEK6 0 1.1815398 0.374 0.179 0
DUSP10 0 1.2605966 0.294 0.124 0
TMC8 0 0.5592879 0.884 0.730 0

Naive B : Naïve B_0 vs Naïve B_1

Top 50 markers: Naïve B_0 vs Naïve B_1
p_val avg_log2FC pct.1 pct.2 p_val_adj
CR2 0 1.1582211 0.739 0.378 0
CR1 0 1.0642484 0.790 0.462 0
ARPC1B 0 0.9409977 0.554 0.276 0
SEMA7A 0 1.5043452 0.415 0.143 0
VASP 0 0.6514463 0.691 0.424 0
IFI30 0 0.6768547 0.667 0.413 0
COTL1 0 0.7785790 0.532 0.281 0
VPREB3 0 0.9542619 0.493 0.244 0
SPIB 0 0.7877113 0.515 0.272 0
NEIL1 0 1.0901721 0.418 0.179 0
RASSF2 0 0.5121450 0.648 0.415 0
ACP5 0 1.1765006 0.398 0.167 0
IFNGR1 0 0.6457537 0.567 0.336 0
CD1C 0 1.5341167 0.344 0.117 0
CD24 0 0.6404124 0.617 0.397 0
LYL1 0 0.6701760 0.490 0.271 0
HSPA8 0 0.5059171 0.607 0.392 0
DTX1 0 0.5685935 0.557 0.347 0
GM2A 0 0.5294989 0.524 0.320 0
BOD1L1 0 0.5214217 0.475 0.280 0
ELL3 0 0.6094612 0.429 0.238 0
MIDN 0 0.5436064 0.451 0.262 0
PDLIM1 0 0.5158785 0.466 0.278 0
DTX3L 0 0.5000250 0.468 0.283 0
ITM2C 0 1.2661539 0.329 0.146 0
DOK3 0 0.8334576 0.330 0.148 0
EIF4A1 0 0.5873231 0.404 0.223 0
CD82 0 0.5801494 0.416 0.236 0
ABI3 0 1.1049660 0.281 0.102 0
SBNO2 0 0.6937245 0.398 0.220 0
CCDC50 0 0.5264787 0.418 0.241 0
ACTG1 0 0.5391583 0.922 0.748 0
CALR 0 0.7026195 0.367 0.193 0
ENO1 0 0.5838005 0.383 0.211 0
ECE1 0 0.5207211 0.398 0.226 0
STAT1 0 0.5770873 0.433 0.263 0
CD1D 0 0.9211381 0.298 0.130 0
BCL3 0 1.1939368 0.281 0.115 0
CCND2 0 0.9177097 0.302 0.138 0
SIGLEC14 0 0.7810126 0.327 0.164 0
PFKFB3 0 0.7266081 0.327 0.168 0
MYBL2 0 1.0421172 0.250 0.091 0
ADGRG5 0 0.5997705 0.319 0.163 0
PKM 0 0.7408592 0.290 0.134 0
ARL4C 0 0.9795096 0.294 0.139 0
PARP9 0 0.6437346 0.320 0.167 0
ZMIZ1 0 0.7430860 0.285 0.132 0
NLRC5 0 0.6719252 0.316 0.168 0
SMG1 0 0.6206627 0.283 0.143 0
CBFA2T3 0 0.7367026 0.259 0.128 0

Naive B : Naïve B_0 vs Naïve B_2

Top 50 markers: Naïve B_0 vs Naïve B_2
p_val avg_log2FC pct.1 pct.2 p_val_adj
CR2 0 0.9115519 0.739 0.246 0
CD69 0 1.1709846 0.705 0.212 0
CR1 0 0.9249536 0.790 0.307 0
EIF1 0 0.7674472 0.657 0.195 0
FOS 0 1.6104864 0.641 0.184 0
DUSP1 0 1.5773814 0.616 0.160 0
PLAC8 0 0.7038282 0.800 0.346 0
TLR10 0 0.6051889 0.715 0.263 0
CD48 0 0.5262909 0.756 0.309 0
SMIM14 0 0.6683164 0.670 0.231 0
STK17B 0 0.5420877 0.943 0.509 0
JUNB 0 0.8083218 0.689 0.270 0
CHI3L2 0 1.0279018 0.610 0.200 0
IFNGR1 0 0.8259811 0.567 0.164 0
JUN 0 1.2182146 0.572 0.178 0
SET 0 0.5260141 0.524 0.159 0
MIOS 0 0.6864888 0.464 0.126 0
FOSB 0 2.6355781 0.341 0.035 0
PNRC1 0 0.5324984 0.934 0.508 0
ACTR2 0 0.5474434 0.509 0.153 0
UBB 0 0.6121830 0.471 0.133 0
TMEM123 0 0.8002998 0.403 0.098 0
PTEN 0 0.9028667 0.380 0.086 0
ETS1 0 0.5269705 0.855 0.392 0
KLF6 0 0.8750126 0.402 0.104 0
DUSP6 0 1.0730344 0.361 0.083 0
PDLIM1 0 0.6525944 0.466 0.140 0
EIF4G2 0 1.0098780 0.331 0.068 0
UBE2D3 0 0.5399558 0.430 0.122 0
VPREB3 0 0.5163383 0.493 0.162 0
MOB1A 0 0.5880795 0.407 0.111 0
SLC2A3 0 0.5711888 0.450 0.136 0
YPEL5 0 0.6849547 0.401 0.112 0
RNASE6 0 0.5177289 0.446 0.137 0
FAM49B 0 0.5353488 0.418 0.123 0
SLC38A2 0 0.6573852 0.401 0.116 0
HIST1H1E 0 0.6355643 0.388 0.108 0
CD24 0 0.5106997 0.617 0.257 0
C1orf162 0 0.6234566 0.383 0.107 0
CBX3 0 0.7166038 0.329 0.078 0
JUND 0 0.5035147 0.897 0.497 0
EIF2S3 0 0.5550027 0.379 0.106 0
DDX3X 0 0.5696992 0.371 0.103 0
HIF1A 0 0.6323877 0.363 0.100 0
PPIA 0 0.6850323 0.338 0.086 0
SEMA7A 0 0.5282684 0.415 0.133 0
OCIAD1 0 0.5940909 0.362 0.100 0
CAND1 0 0.5229148 0.355 0.098 0
OTUD1 0 0.5102905 0.390 0.119 0
SH3GLB1 0 0.6337793 0.338 0.090 0

Naive B : Naïve B_0 vs Naïve B_3

Top 50 markers: Naïve B_0 vs Naïve B_3
p_val avg_log2FC pct.1 pct.2 p_val_adj
LTB 0 1.5953676 0.911 0.582 0
CR1 0 1.2332642 0.790 0.470 0
P2RX5 0 1.1443669 0.791 0.503 0
ALOX5 0 1.3033383 0.664 0.342 0
TCL1A 0 0.8905755 0.888 0.752 0
CD24 0 1.4758905 0.617 0.303 0
PLAC8 0 0.9926042 0.800 0.568 0
ATP2A3 0 0.6752292 0.908 0.754 0
CR2 0 0.8364307 0.739 0.514 0
STK17B 0 0.5058952 0.943 0.840 0
VASP 0 0.8582783 0.691 0.463 0
DENND3 0 0.8968926 0.655 0.411 0
ANXA6 0 0.6081402 0.858 0.686 0
PPP1R18 0 0.6736898 0.782 0.591 0
SPIB 0 1.0873282 0.515 0.282 0
PFKFB3 0 1.5059805 0.327 0.138 0
VPREB3 0 0.9646585 0.493 0.287 0
ETS1 0 0.5198162 0.855 0.709 0
BCL3 0 1.7234795 0.281 0.102 0
SEMA7A 0 1.1310157 0.415 0.218 0
RCSD1 0 0.5362745 0.810 0.654 0
ADGRG5 0 1.2487217 0.319 0.137 0
PXK 0 0.6071736 0.689 0.506 0
CLCF1 0 1.1641898 0.332 0.150 0
CD1D 0 1.3654574 0.298 0.125 0
IFNGR1 0 0.7505052 0.567 0.375 0
EBF1 0 1.1058777 0.328 0.161 0
IER2 0 0.6169448 0.678 0.510 0
CD82 0 0.8637836 0.416 0.241 0
PTPN1 0 0.7667460 0.564 0.396 0
CXXC5 0 0.8026839 0.437 0.263 0
CD38 0 1.2675128 0.260 0.114 0
CLEC17A 0 0.5206579 0.697 0.538 0
NEIL1 0 0.7853540 0.418 0.249 0
ELL3 0 0.7618904 0.429 0.258 0
DUSP6 0 0.8919754 0.361 0.199 0
ECE1 0 0.8095040 0.398 0.230 0
TSPAN3 0 0.5031073 0.662 0.502 0
MKNK2 0 0.5880295 0.571 0.407 0
TBC1D9 0 1.0924371 0.274 0.133 0
CD1C 0 0.9139222 0.344 0.194 0
IER5 0 0.8017481 0.393 0.238 0
ZNF101 0 0.7452499 0.408 0.253 0
GCA 0 0.7571714 0.409 0.251 0
ITGB2 0 0.5860140 0.552 0.394 0
EMP3 0 0.6930291 0.425 0.270 0
PRKD2 0 0.5186749 0.613 0.465 0
RGS19 0 0.5934777 0.517 0.366 0
PMEPA1 0 0.9734707 0.280 0.147 0
TRABD 0 0.8935245 0.315 0.179 0

Naive B : Naïve B_1 vs Naïve B_2

Top 50 markers: Naïve B_1 vs Naïve B_2
p_val avg_log2FC pct.1 pct.2 p_val_adj
TSC22D3 0 1.0148861 0.733 0.311 0
DUSP1 0 1.8215569 0.560 0.160 0
EIF1 0 0.9835989 0.586 0.195 0
SELL 0 0.7850341 0.869 0.481 0
JUN 0 1.6284117 0.566 0.178 0
PLPP5 0 0.9210075 0.610 0.242 0
TXNIP 0 1.0896800 0.960 0.625 0
FOS 0 1.3880894 0.512 0.184 0
CXCR4 0 0.6204619 0.980 0.768 0
CD69 0 0.9226586 0.558 0.212 0
BTG1 0 0.5297167 0.953 0.699 0
ITPR1 0 0.7438921 0.554 0.214 0
PNRC1 0 0.5624450 0.872 0.508 0
EVI2B 0 0.7207148 0.585 0.241 0
JUNB 0 0.8791057 0.592 0.270 0
ADK 0 0.7633672 0.509 0.191 0
REL 0 0.6018724 0.654 0.290 0
PLEKHF2 0 0.5456735 0.738 0.361 0
CTSS 0 0.5697195 0.574 0.246 0
SLAMF6 0 0.5710293 0.545 0.227 0
KLF2 0 0.5061848 0.764 0.435 0
FAM3C 0 0.7829737 0.406 0.145 0
MEF2C 0 0.5190375 0.661 0.323 0
RHOQ 0 0.8253160 0.361 0.119 0
PLAC8 0 0.5040379 0.687 0.346 0
RNASE6 0 0.7320620 0.389 0.137 0
ZNF318 0 0.5077038 0.526 0.220 0
SMIM14 0 0.5297983 0.532 0.231 0
JMJD1C 0 0.5222708 0.511 0.212 0
CEMIP2 0 0.7848807 0.347 0.114 0
KLF6 0 0.9598259 0.323 0.104 0
YPEL5 0 0.8158754 0.338 0.112 0
MAP3K8 0 0.7431690 0.374 0.136 0
SERPINB9 0 0.5189576 0.480 0.200 0
CD200 0 0.8279360 0.300 0.092 0
GLIPR1 0 0.5483092 0.426 0.173 0
MTSS1 0 0.6003816 0.365 0.135 0
NUP88 0 0.5159242 0.412 0.162 0
IFNAR1 0 0.6279978 0.355 0.128 0
PHF3 0 0.5223699 0.385 0.148 0
CHI3L2 0 0.5354775 0.447 0.200 0
NSD3 0 0.5591283 0.342 0.126 0
GNG7 0 0.5703604 0.349 0.131 0
PDE4B 0 0.6038920 0.327 0.120 0
OTUD1 0 0.5959323 0.323 0.119 0
CLIC4 0 0.5714387 0.324 0.121 0
DUSP6 0 0.9328568 0.257 0.083 0
TP53INP1 0 0.6667915 0.313 0.117 0
CENPM 0 0.6016182 0.346 0.140 0
LRBA 0 0.5116398 0.327 0.123 0

Naive B : Naïve B_1 vs Naïve B_3

Top 50 markers: Naïve B_1 vs Naïve B_3
p_val avg_log2FC pct.1 pct.2 p_val_adj
SELL 0 1.0606605 0.869 0.704 0
LTB 0 1.1083240 0.781 0.582 0
TXNIP 0 0.7038492 0.960 0.929 0
TCL1A 0 0.7623090 0.841 0.752 0
LBH 0 0.8588684 0.717 0.571 0
KLF2 0 0.9041929 0.764 0.656 0
RIPOR2 0 0.8342798 0.697 0.595 0
P2RX5 0 0.9410847 0.633 0.503 0
ALOX5 0 1.0829130 0.512 0.342 0
PLAC8 0 0.7928139 0.687 0.568 0
RASGRP2 0 0.5998950 0.786 0.709 0
UCP2 0 0.5725899 0.831 0.766 0
PRKCB 0 0.6673321 0.712 0.639 0
OSBPL10 0 1.7654369 0.260 0.107 0
ADAM19 0 0.7053315 0.655 0.562 0
RCSD1 0 0.6171377 0.723 0.654 0
NIBAN3 0 0.5193074 0.751 0.675 0
SMAP2 0 0.5766260 0.719 0.673 0
MTSS1 0 1.0890539 0.365 0.228 0
ELOVL5 0 0.5471132 0.689 0.637 0
ITPR1 0 0.7164222 0.554 0.464 0
EMP3 0 0.9697333 0.387 0.270 0
RNF141 0 0.9516545 0.372 0.267 0
CDC42SE1 0 0.5256003 0.647 0.606 0
TSPAN13 0 0.6470061 0.514 0.439 0
DENND3 0 0.6844167 0.493 0.411 0
JUN 0 0.7408514 0.566 0.482 0
ITGA4 0 0.5194585 0.603 0.546 0
GLIPR1 0 0.7573355 0.426 0.336 0
TSPAN3 0 0.5546792 0.565 0.502 0
DGKD 0 0.5692243 0.557 0.493 0
CD24 0 0.8354781 0.397 0.303 0
MYO1G 0 0.7439317 0.389 0.316 0
PXK 0 0.5247918 0.544 0.506 0
SLC2A1 0 0.8425771 0.315 0.235 0
SNX22 0 0.8248075 0.315 0.232 0
FAM43A 0 0.8264574 0.271 0.186 0
BACH2 0 0.7250198 0.389 0.322 0
HIP1R 0 0.8149343 0.310 0.230 0
TAPT1 0 0.9330171 0.280 0.205 0
IQSEC1 0 0.5262831 0.554 0.520 0
CD200 0 0.7559460 0.300 0.217 0
BIRC3 0 0.5725970 0.410 0.335 0
GUCD1 0 0.6936251 0.387 0.328 0
KIAA0040 0 0.6962343 0.383 0.323 0
LYST 0 0.6185155 0.379 0.314 0
TLE5 0 0.5880644 0.430 0.389 0
VIM 0 0.6409758 0.373 0.301 0
H1FX 0 0.8763971 0.288 0.217 0
APLP2 0 0.6747122 0.361 0.300 0

Naive B : Naïve B_2 vs Naïve B_3

Top 50 markers: Naïve B_2 vs Naïve B_3
p_val avg_log2FC pct.1 pct.2 p_val_adj
LTB 0 1.5404139 0.660 0.582 0e+00
IGHG3 0 1.4115692 0.127 0.332 0e+00
CD79A 0 0.5192859 0.901 0.986 0e+00
ATP2A3 0 0.9241520 0.638 0.754 0e+00
ARHGEF1 0 0.6943000 0.630 0.799 0e+00
ALOX5 0 1.4375879 0.362 0.342 0e+00
SPSB3 0 0.5056510 0.134 0.251 0e+00
RASGRP2 0 0.7895625 0.566 0.709 0e+00
CRTC2 0 0.5093117 0.149 0.269 0e+00
CARS2 0 0.5728696 0.145 0.261 0e+00
FUS 0 0.5059866 0.202 0.356 0e+00
NCF4 0 0.5165838 0.142 0.255 0e+00
AKNA 0 0.7041323 0.586 0.758 0e+00
MYO15B 0 0.5133032 0.193 0.334 0e+00
RGL2 0 0.5245360 0.178 0.311 0e+00
CYBA 0 0.5381552 0.654 0.846 0e+00
DHX38 0 0.5290994 0.147 0.258 0e+00
NIBAN3 0 0.8077615 0.550 0.675 0e+00
LPCAT1 0 0.5160810 0.166 0.287 0e+00
AC119396.1 0 0.5546765 0.154 0.268 0e+00
TMEM259 0 0.5631994 0.224 0.385 0e+00
CSNK1G2 0 0.5433208 0.164 0.283 0e+00
ITPR3 0 0.5382995 0.172 0.293 0e+00
GRK6 0 0.5588730 0.171 0.293 0e+00
ARHGAP27 0 0.5782511 0.154 0.266 0e+00
C16orf54 0 0.5534955 0.161 0.275 0e+00
ATG16L2 0 0.6010646 0.160 0.274 0e+00
PATZ1 0 0.5409211 0.150 0.257 0e+00
MAPKAPK2 0 0.5623337 0.165 0.282 0e+00
SBNO2 0 0.5516534 0.176 0.297 0e+00
TCL1A 0 0.6860900 0.596 0.752 0e+00
KDM5C 0 0.5206639 0.246 0.414 0e+00
TMEM63A 0 0.5806734 0.174 0.293 0e+00
GMIP 0 0.5381928 0.247 0.418 0e+00
PAX5 0 0.5895240 0.611 0.800 0e+00
CARMIL2 0 0.5089084 0.266 0.448 0e+00
CAPG 0 0.5509861 0.165 0.273 0e+00
MPRIP 0 0.5264776 0.228 0.376 0e+00
ANKRD13D 0 0.5529100 0.202 0.331 0e+00
NOTCH1 0 0.5133954 0.250 0.412 0e+00
MKNK2 0 0.5734427 0.246 0.407 0e+00
CYTH4 0 0.6149256 0.212 0.349 0e+00
MAP4K1 0 0.6107680 0.227 0.374 0e+00
C11orf24 0 0.5935320 0.161 0.261 0e+00
MYO1G 0 0.5666920 0.196 0.316 0e+00
WDFY4 0 0.7582939 0.523 0.688 0e+00
COTL1 0 0.6094687 0.232 0.377 0e+00
NLRC5 0 0.6106786 0.162 0.260 0e+00
ETV6 0 0.6071557 0.164 0.263 1e-07
R3HDM4 0 0.5933226 0.190 0.304 1e-07

Naive_B-IFN

naive_ids <- c("Naïve B-IFN_0","Naïve B-IFN_1")

res_all <- run_de_and_vln(
  naive_b,
  naive_ids,
  title_prefix = "Naive B-IFN",
  run_one_vs_all = TRUE,
  run_pairwise = TRUE,
  print_table = TRUE
)

Naive B-IFN : Naïve B-IFN_0 vs_rest

Top 50 markers: Naïve B-IFN_0 vs_rest
p_val avg_log2FC pct.1 pct.2 p_val_adj
SYNGR2 0 0.8400687 0.976 0.882 0
CCND2 0 1.9018919 0.676 0.332 0
HSP90AB1 0 0.9426214 0.857 0.651 0
SRM 0 1.7970862 0.491 0.178 0
NME1 0 2.2343379 0.387 0.093 0
IFI30 0 1.0931192 0.793 0.581 0
ZMIZ2 0 1.0901037 0.668 0.383 0
LPCAT1 0 1.1946794 0.658 0.390 0
BHLHE40 0 2.0394444 0.407 0.134 0
MAT2A 0 0.9501801 0.787 0.569 0
NFKB1 0 1.0715340 0.674 0.400 0
HIVEP3 0 1.5213448 0.462 0.182 0
NOP56 0 1.1917986 0.567 0.296 0
MTHFD1L 0 1.8920547 0.364 0.113 0
LCP1 0 0.5261316 0.969 0.912 0
ENO1 0 1.0613182 0.600 0.349 0
MYBBP1A 0 1.3594652 0.451 0.195 0
PRDX1 0 1.0635023 0.564 0.307 0
SLC7A1 0 1.7705608 0.339 0.103 0
EIF3B 0 0.9107372 0.674 0.443 0
GPX4 0 1.0308672 0.590 0.330 0
PUS7 0 2.6233616 0.252 0.043 0
DDX21 0 0.9606498 0.643 0.402 0
NHP2 0 1.1193863 0.539 0.291 0
EHD1 0 1.1348376 0.542 0.293 0
DNMT3A 0 1.1489276 0.543 0.298 0
RFTN1 0 1.0301542 0.655 0.431 0
DKC1 0 1.2250995 0.486 0.238 0
BZW2 0 1.3847546 0.408 0.168 0
CD82 0 1.2377342 0.545 0.316 0
FASN 0 1.8394145 0.309 0.089 0
ATIC 0 1.1121562 0.492 0.243 0
WDR43 0 1.1462778 0.499 0.256 0
NOP16 0 0.9571807 0.578 0.332 0
EBI3 0 2.5599455 0.268 0.070 0
GNL3 0 0.8342726 0.624 0.377 0
IFRD2 0 1.4413451 0.362 0.135 0
TRMT1 0 1.0444716 0.529 0.292 0
NME2 0 1.0674809 0.524 0.294 0
NCL 0 0.9214041 0.617 0.393 0
AP1S3 0 1.5455003 0.343 0.129 0
PPAN 0 1.0530350 0.517 0.283 0
POLR1A 0 1.3008786 0.384 0.160 0
PKM 0 1.0345286 0.481 0.247 0
WDR3 0 1.2499241 0.383 0.162 0
PRMT1 0 0.9560981 0.498 0.261 0
YBX1 0 0.9002621 0.572 0.346 0
PPP1R9B 0 0.6590034 0.776 0.618 0
CBFA2T3 0 1.5084947 0.376 0.170 0
LARP1 0 1.1637022 0.415 0.195 0

Naive B-IFN : Naïve B-IFN_1 vs_rest

Top 50 markers: Naïve B-IFN_1 vs_rest
p_val avg_log2FC pct.1 pct.2 p_val_adj
EGR1 0 3.8379346 0.737 0.123 0
EGR2 0 3.3592990 0.732 0.159 0
EGR3 0 2.6011202 0.955 0.482 0
NR4A1 0 2.9942441 0.636 0.227 0
CD69 0 2.0257112 0.908 0.664 0
ZFP36L1 0 1.0142841 0.991 0.956 0
CD83 0 0.9631682 0.983 0.949 0
CCL3 0 3.2596167 0.321 0.070 0
BTG2 0 1.1712066 0.903 0.789 0
RASGEF1B 0 1.7338409 0.603 0.301 0
NFKBIA 0 1.1032485 0.851 0.705 0
TAGAP 0 1.3596902 0.817 0.645 0
MYC 0 1.3774759 0.698 0.431 0
ZFP36 0 1.1187792 0.797 0.610 0
IER2 0 1.0272715 0.851 0.713 0
JUNB 0 0.8733896 0.887 0.743 0
PNRC1 0 0.7109954 0.913 0.799 0
OTUD1 0 1.5478535 0.483 0.250 0
IRF8 0 0.5788616 0.957 0.914 0
RIPOR2 0 1.2245106 0.578 0.364 0
NFKBID 0 0.8493512 0.630 0.417 0
TNF 0 1.6832032 0.414 0.218 0
CEMIP2 0 1.5173404 0.337 0.147 0
PLAC8 0 0.9365129 0.626 0.416 0
TRIM38 0 0.8391131 0.692 0.519 0
PPP1R15A 0 1.3988433 0.433 0.253 0
DUSP2 0 1.2250238 0.571 0.409 0
TSPAN13 0 1.1487270 0.450 0.259 0
GLIPR1 0 1.2677542 0.363 0.192 0
SDCBP 0 1.1735713 0.400 0.228 0
LBH 0 0.9360381 0.557 0.386 0
FAM214A 0 1.0669376 0.472 0.299 0
CSRNP1 0 1.2000974 0.375 0.213 0
FCRL1 0 0.7147574 0.753 0.627 0
EVI2A 0 1.2096751 0.393 0.239 0
RASGRP2 0 0.6469065 0.740 0.626 0
WIPF1 0 0.5590138 0.804 0.719 0
ZC3H12A 0 1.0218990 0.496 0.343 0
MGAT5 0 0.6842794 0.668 0.524 0
BTN2A2 0 1.0318534 0.426 0.272 0
ZBTB10 0 1.1311422 0.377 0.226 0
SELL 0 0.6129518 0.792 0.658 0
CD55 0 0.7768873 0.628 0.503 0
GGA2 0 0.5839820 0.769 0.693 0
ACAP1 0 0.6762395 0.675 0.532 0
SLAMF1 0 0.6104978 0.713 0.581 0
POU2AF1 0 0.7618670 0.555 0.417 0
TRIM22 0 0.6390853 0.712 0.590 0
ADAM19 0 0.6931041 0.613 0.468 0
MARCH1 0 1.0231559 0.362 0.217 0

Naive B-IFN : Naïve B-IFN_0 vs Naïve B-IFN_1

Top 50 markers: Naïve B-IFN_0 vs Naïve B-IFN_1
p_val avg_log2FC pct.1 pct.2 p_val_adj
SYNGR2 0 0.8400687 0.976 0.882 0
CCND2 0 1.9018919 0.676 0.332 0
HSP90AB1 0 0.9426214 0.857 0.651 0
SRM 0 1.7970862 0.491 0.178 0
NME1 0 2.2343379 0.387 0.093 0
IFI30 0 1.0931192 0.793 0.581 0
ZMIZ2 0 1.0901037 0.668 0.383 0
LPCAT1 0 1.1946794 0.658 0.390 0
BHLHE40 0 2.0394444 0.407 0.134 0
MAT2A 0 0.9501801 0.787 0.569 0
NFKB1 0 1.0715340 0.674 0.400 0
HIVEP3 0 1.5213448 0.462 0.182 0
NOP56 0 1.1917986 0.567 0.296 0
MTHFD1L 0 1.8920547 0.364 0.113 0
LCP1 0 0.5261316 0.969 0.912 0
ENO1 0 1.0613182 0.600 0.349 0
MYBBP1A 0 1.3594652 0.451 0.195 0
PRDX1 0 1.0635023 0.564 0.307 0
SLC7A1 0 1.7705608 0.339 0.103 0
EIF3B 0 0.9107372 0.674 0.443 0
GPX4 0 1.0308672 0.590 0.330 0
PUS7 0 2.6233616 0.252 0.043 0
DDX21 0 0.9606498 0.643 0.402 0
NHP2 0 1.1193863 0.539 0.291 0
EHD1 0 1.1348376 0.542 0.293 0
DNMT3A 0 1.1489276 0.543 0.298 0
RFTN1 0 1.0301542 0.655 0.431 0
DKC1 0 1.2250995 0.486 0.238 0
BZW2 0 1.3847546 0.408 0.168 0
CD82 0 1.2377342 0.545 0.316 0
FASN 0 1.8394145 0.309 0.089 0
ATIC 0 1.1121562 0.492 0.243 0
WDR43 0 1.1462778 0.499 0.256 0
NOP16 0 0.9571807 0.578 0.332 0
EBI3 0 2.5599455 0.268 0.070 0
GNL3 0 0.8342726 0.624 0.377 0
IFRD2 0 1.4413451 0.362 0.135 0
TRMT1 0 1.0444716 0.529 0.292 0
NME2 0 1.0674809 0.524 0.294 0
NCL 0 0.9214041 0.617 0.393 0
AP1S3 0 1.5455003 0.343 0.129 0
PPAN 0 1.0530350 0.517 0.283 0
POLR1A 0 1.3008786 0.384 0.160 0
PKM 0 1.0345286 0.481 0.247 0
WDR3 0 1.2499241 0.383 0.162 0
PRMT1 0 0.9560981 0.498 0.261 0
YBX1 0 0.9002621 0.572 0.346 0
PPP1R9B 0 0.6590034 0.776 0.618 0
CBFA2T3 0 1.5084947 0.376 0.170 0
LARP1 0 1.1637022 0.415 0.195 0

Naive_B-Activated

naive_ids <- c("Naïve B activated_0","Naïve B activated_1")

res_all <- run_de_and_vln(
  naive_b,
  naive_ids,
  title_prefix = "Naive B-Activated",
  run_one_vs_all = TRUE,
  run_pairwise = TRUE,
  print_table = TRUE
)

Naive B-Activated : Naïve B activated_0 vs_rest

Top 50 markers: Naïve B activated_0 vs_rest
p_val avg_log2FC pct.1 pct.2 p_val_adj
IFIT1 0 3.3929194 0.540 0.139 0
ISG15 0 2.7047540 0.681 0.338 0
OAS3 0 2.7240499 0.548 0.214 0
IFI6 0 2.6444802 0.582 0.262 0
CMPK2 0 2.0629185 0.607 0.294 0
OAS1 0 1.8915707 0.711 0.401 0
MX1 0 2.1252371 0.849 0.556 0
IFI44 0 1.4631267 0.793 0.560 0
LY6E 0 1.5316758 0.837 0.619 0
MX2 0 1.7261878 0.681 0.478 0
XAF1 0 1.1676414 0.787 0.653 0
IFI44L 0 1.1830349 0.896 0.781 0
OAS2 0 1.1848319 0.851 0.752 0
IRF7 0 1.2180677 0.809 0.689 0
IFIT3 0 2.0331504 0.552 0.296 0
EIF2AK2 0 1.3963279 0.660 0.456 0
HERC5 0 2.7368925 0.360 0.110 0
RSAD2 0 2.5807422 0.374 0.131 0
HERC6 0 2.4026739 0.350 0.113 0
ZBP1 0 1.9918427 0.427 0.201 0
USP18 0 2.6217680 0.308 0.091 0
IFIT2 0 1.8883156 0.471 0.285 0
SAMD9L 0 1.0521115 0.735 0.674 0
RNF213 0 0.8848710 0.770 0.711 0
ISG20 0 0.8196066 0.837 0.826 0
SLFN5 0 1.3858021 0.509 0.333 0
HELZ2 0 1.4243135 0.450 0.288 0
DRAP1 0 0.8585704 0.710 0.656 0
TRIM22 0 0.5051741 0.906 0.927 0
DDX60 0 1.1603079 0.506 0.369 0
DDX60L 0 1.4322911 0.416 0.271 0
HSH2D 0 0.9882974 0.533 0.431 0
ADAR 0 0.5324485 0.782 0.790 0
PLSCR1 0 1.1903583 0.418 0.301 0
JUP 0 1.5366890 0.307 0.185 0
SAMD9 0 1.1986114 0.374 0.255 0
TRIM25 0 0.9648850 0.486 0.392 0
DUSP1 0 0.8235706 0.592 0.509 0
LBH 0 0.6316010 0.671 0.638 0
EPSTI1 0 0.5539246 0.729 0.747 0
FCER2 0 0.6389317 0.581 0.531 0
RTCB 0 1.0034405 0.371 0.297 0
IFIH1 0 0.9081863 0.437 0.378 0
TSC22D3 0 0.6100916 0.670 0.655 0
KLF2 0 0.6093405 0.567 0.536 0
PARP12 0 0.6931087 0.457 0.421 0
PI4K2B 0 0.9644134 0.324 0.273 0
PPM1K 0 0.6121995 0.494 0.480 0
IFIT5 0 0.7979580 0.303 0.246 0
SHISA5 0 0.5116936 0.556 0.549 0

Naive B-Activated : Naïve B activated_1 vs_rest

Top 50 markers: Naïve B activated_1 vs_rest
p_val avg_log2FC pct.1 pct.2 p_val_adj
GBP2 0 2.0157316 0.713 0.237 0
GBP4 0 1.5182638 0.861 0.418 0
GBP1 0 1.2646124 0.727 0.314 0
GBP5 0 2.0360954 0.575 0.165 0
WARS 0 1.6890986 0.543 0.176 0
IRF1 0 1.3828729 0.841 0.474 0
HAPLN3 0 1.3193073 0.455 0.158 0
CR1 0 0.8748697 0.829 0.534 0
CR2 0 0.8304897 0.822 0.540 0
SBNO2 0 1.0877036 0.596 0.301 0
BCL3 0 1.3091765 0.453 0.192 0
NLRC5 0 0.7525394 0.656 0.368 0
SLAMF1 0 0.8536797 0.573 0.315 0
PIM2 0 1.0355775 0.514 0.277 0
PIM1 0 1.4877296 0.280 0.096 0
SOCS1 0 0.8080687 0.602 0.355 0
PTPN1 0 0.7951209 0.721 0.482 0
CD19 0 0.5659923 0.875 0.679 0
EEF1G 0 0.5113355 0.901 0.727 0
BCL6 0 0.8816863 0.406 0.186 0
GNG10 0 1.1150000 0.381 0.175 0
MYBL2 0 0.7725067 0.361 0.158 0
CDC42SE2 0 0.6529883 0.655 0.425 0
ERAP2 0 0.6918962 0.545 0.328 0
APOL2 0 0.8158037 0.382 0.191 0
EIF3L 0 0.6075011 0.585 0.363 0
SOD2 0 0.9207330 0.315 0.151 0
MTHFD2 0 1.0334797 0.251 0.107 0
TNFRSF13B 0 1.0323083 0.289 0.137 0
HIF1A 0 0.6671905 0.468 0.271 0
IFNGR1 0 0.6331717 0.537 0.334 0
GCA 0 0.7015724 0.488 0.292 0
TP53INP1 0 0.6623838 0.415 0.231 0
CHI3L2 0 0.5933413 0.744 0.566 0
VMP1 0 0.7255735 0.392 0.216 0
HIST1H1E 0 0.6639839 0.401 0.222 0
CASP4 0 0.5176469 0.632 0.428 0
EEF1B2 0 0.5168573 0.615 0.408 0
RAPGEF6 0 0.5824168 0.553 0.361 0
ELL3 0 0.6007360 0.465 0.278 0
ARPC1B 0 0.5304369 0.539 0.350 0
ZNF267 0 0.8209497 0.254 0.120 0
PDE4B 0 0.5256154 0.472 0.288 0
ZNF101 0 0.5942186 0.469 0.290 0
SLC25A6 0 0.5120975 0.486 0.301 0
HIST1H1D 0 0.5562388 0.490 0.309 0
HINT1 0 0.6070630 0.395 0.229 0
LMNB1 0 0.5199061 0.423 0.249 0
TBC1D9 0 0.7789622 0.303 0.164 0
AMIGO2 0 0.7223995 0.262 0.134 0

Naive B-Activated : Naïve B activated_0 vs Naïve B activated_1

Top 50 markers: Naïve B activated_0 vs Naïve B activated_1
p_val avg_log2FC pct.1 pct.2 p_val_adj
IFIT1 0 3.3929194 0.540 0.139 0
ISG15 0 2.7047540 0.681 0.338 0
OAS3 0 2.7240499 0.548 0.214 0
IFI6 0 2.6444802 0.582 0.262 0
CMPK2 0 2.0629185 0.607 0.294 0
OAS1 0 1.8915707 0.711 0.401 0
MX1 0 2.1252371 0.849 0.556 0
IFI44 0 1.4631267 0.793 0.560 0
LY6E 0 1.5316758 0.837 0.619 0
MX2 0 1.7261878 0.681 0.478 0
XAF1 0 1.1676414 0.787 0.653 0
IFI44L 0 1.1830349 0.896 0.781 0
OAS2 0 1.1848319 0.851 0.752 0
IRF7 0 1.2180677 0.809 0.689 0
IFIT3 0 2.0331504 0.552 0.296 0
EIF2AK2 0 1.3963279 0.660 0.456 0
HERC5 0 2.7368925 0.360 0.110 0
RSAD2 0 2.5807422 0.374 0.131 0
HERC6 0 2.4026739 0.350 0.113 0
ZBP1 0 1.9918427 0.427 0.201 0
USP18 0 2.6217680 0.308 0.091 0
IFIT2 0 1.8883156 0.471 0.285 0
SAMD9L 0 1.0521115 0.735 0.674 0
RNF213 0 0.8848710 0.770 0.711 0
ISG20 0 0.8196066 0.837 0.826 0
SLFN5 0 1.3858021 0.509 0.333 0
HELZ2 0 1.4243135 0.450 0.288 0
DRAP1 0 0.8585704 0.710 0.656 0
TRIM22 0 0.5051741 0.906 0.927 0
DDX60 0 1.1603079 0.506 0.369 0
DDX60L 0 1.4322911 0.416 0.271 0
HSH2D 0 0.9882974 0.533 0.431 0
ADAR 0 0.5324485 0.782 0.790 0
PLSCR1 0 1.1903583 0.418 0.301 0
JUP 0 1.5366890 0.307 0.185 0
SAMD9 0 1.1986114 0.374 0.255 0
TRIM25 0 0.9648850 0.486 0.392 0
DUSP1 0 0.8235706 0.592 0.509 0
LBH 0 0.6316010 0.671 0.638 0
EPSTI1 0 0.5539246 0.729 0.747 0
FCER2 0 0.6389317 0.581 0.531 0
RTCB 0 1.0034405 0.371 0.297 0
IFIH1 0 0.9081863 0.437 0.378 0
TSC22D3 0 0.6100916 0.670 0.655 0
KLF2 0 0.6093405 0.567 0.536 0
PARP12 0 0.6931087 0.457 0.421 0
PI4K2B 0 0.9644134 0.324 0.273 0
PPM1K 0 0.6121995 0.494 0.480 0
IFIT5 0 0.7979580 0.303 0.246 0
SHISA5 0 0.5116936 0.556 0.549 0

Memory B cells

memory_b <-  subset(paed_sub, idents = "Memory B")
keep_cells <- Idents(paed_sub) %in% "Memory B"
memory_b@assays$RNA@cells@.Data <- paed_sub@assays$RNA@cells@.Data[keep_cells, ]
memory_b
An object of class Seurat 
18076 features across 65617 samples within 1 assay 
Active assay: RNA (18076 features, 2000 variable features)
 3 layers present: data, counts, scale.data
 4 dimensional reductions calculated: pca, umap.unintegrated, umap.l1, umap.bcells
out1 <- here("output/RDS/Lineages_RDS_combined/SEU_MemoryB_Cells.rds")

if (!file.exists(out1)) {
  memory_b <- memory_b %>%
  FindVariableFeatures() %>%
  ScaleData() %>%
  RunPCA() 
  gc() 
  memory_b <- RunUMAP(memory_b, dims = 1:30, reduction = "pca", reduction.name = "umap.memoryB")

  meta_data_columns <- colnames(memory_b@meta.data)
  columns_to_remove <- grep("^RNA_snn_res", meta_data_columns, value = TRUE)
  memory_b@meta.data <- memory_b@meta.data[, !(colnames(memory_b@meta.data) %in% columns_to_remove)]
  resolutions <- seq(0.1, 0.5, by = 0.1)
  memory_b <- FindNeighbors(memory_b, dims = 1:30, reduction = "pca")
  memory_b <- FindClusters(memory_b, resolution = resolutions )

  saveRDS(memory_b, out1)

} else {
  memory_b <- readRDS(out1)
}
clustree(memory_b, prefix = "RNA_snn_res.")

DimPlot(memory_b, group.by = "RNA_snn_res.0.1", reduction = "umap.memoryB", label = TRUE, label.size = 2.5, repel = TRUE, raster = FALSE )

DimPlot(memory_b, group.by = "RNA_snn_res.0.2", reduction = "umap.memoryB", label = TRUE, label.size = 2.5, repel = TRUE, raster = FALSE )

DimPlot(memory_b, group.by = "RNA_snn_res.0.4", reduction = "umap.memoryB", label = TRUE, label.size = 2.5, repel = TRUE, raster = FALSE )

opt_res <- "RNA_snn_res.0.4"  
n <- nlevels(memory_b$RNA_snn_res.0.4)
memory_b$RNA_snn_res.0.4 <- factor(memory_b$RNA_snn_res.0.4, levels = seq(0,n-1))
memory_b$seurat_clusters <- NULL
memory_b$cluster <- memory_b$RNA_snn_res.0.4
Idents(memory_b) <- memory_b$cluster
memory_b$cell_labels <- NULL
Warning: Cannot find cell-level meta data named cell_labels
 features = list(
    MBC         = "CD27",
    ncsMBC    = c("CD267", "IGHD", "IGHM"), # non-class switching MBC
    csMBC      = c("IGHA1", "IGHG1"), # class switching MBC
    ncsMBC_FCRL4_5       = c("FCRL4", "FCRL5", "GSN", "SOX5", "FGR")
  )
for (g in features) {
  print(
    FeaturePlot(
      memory_b,
      features  = g,
      reduction = "umap.memoryB",
      raster    = FALSE,
      label     = TRUE,
      split.by  = "tissue"
    ) 
  )
}

Warning: The following requested variables were not found: CD267

It isn’t really clear what clusters are class switching and non-class switching, According to Azimuth-

table(memory_b$predicted.celltype.l2, memory_b$RNA_snn_res.0.4)
                                
                                    0    1    2    3    4    5    6    7
  CM Pre-non-Tfh                    0    0    0    0    0    1    0    0
  csMBC                          5094  728   85    3  381  108   46   66
  csMBC FCRL4/5+                 1732  293 5266  136   33  388    2   64
  DZ cell cycle exit                0    0    0    0    0    0    1    0
  DZ early Sphase                   0    0    0    0    0    0    1    0
  DZ non proliferative              0    0    0    0    0    0   22    0
  DZ_LZ transition                  3    0    0    0    0    0   44    0
  Early GC-commited NBC            45   64   14   27    0    3    0  162
  Early MBC                       487   52   16    1   39    6  435    9
  GC-commited NBC                  31   60   12   52   15    5   34  222
  IgM+ early PC precursor           1    0    0    0    0    0    0    0
  LZ_DZ reentry commitment          0    1    0    0    0    0    2    0
  MBC derived early PC precursor    1    1    1    1    0    0   43    1
  MBC FCRL5+                     1289   93  283   10  386   36  132  259
  Naive                             1    0    0    0    0    1    2    0
  NBC                            3760 3303  166   20  537  423  910   74
  NBC CD229+                        3    0    0    0    0    0    0    8
  NBC early activation           1218 1236   22   12   37   25   19   29
  NBC IFN-activated                 1   12    8    7    2  969    3    0
  ncsMBC                         3856 6846  261   10  204  378   16   98
  ncsMBC FCRL4/5+                3926 2426 4321   93  127 1109   20  301
  preB                              0    0    0    0    0    0    2    0
  Precursor MBCs                   20    2   20    0    8    0  203   10
  preGC                            32    0    1    1    3    0   29   12
  Proliferative NBC                 0    0    0    0    0    0    1    0
  Reactivated proliferative MBCs    0    0    3    0    0    0    9    0
  Tfh-LZ-GC                         0    0    0    0    1    0    0    0
cell_order <- factor(c(
  # Naive B cells
  "NBC", "NBC early activation", "NBC IFN-activated", "NBC CD229+",
  "Early GC-commited NBC", "GC-commited NBC", "preGC",
  
  # GC Dark Zone
  "DZ early Sphase", "DZ late Sphase", "DZ early G2Mphase", 
  "DZ late G2Mphase", "DZ non proliferative", "DZ migratory PC precursor",
  
  # Transitions
  "DZ_LZ transition", "LZ_DZ transition", "DZ cell cycle exit",
  
  # GC Light Zone  
  "LZ", "LZ proliferative", "LZ_DZ reentry commitment",
  "PC committed Light Zone GCBC",
  
  # Memory B cells
  "ncsMBC", "ncsMBC FCRL4/5+", "csMBC", "csMBC FCRL4/5+",
  "Early MBC", "MBC FCRL5+", "Precursor MBCs", "Reactivated proliferative MBCs",
  
  # Plasma cell precursors & PCs
  "IgG+ PC precursor", "IgM+ PC precursor", "IgD PC precursor", 
  "IgM+ early PC precursor", "preMature IgG+ PC", "preMature IgM+ PC",
  "Mature IgG+ PC", "Mature IgA+ PC", "Mature IgM+ PC",
  "Short lived IgM+ PC", "PB", "PB committed early PC precursor",
  "MBC derived early PC precursor", "MBC derived IgA+ PC", 
  "MBC derived IgG+ PC", "MBC derived PC precursor",
  
  # Other (T cells, FDC, etc.)
  "cycling T"
 ), ordered = TRUE)

ct1 <- table(memory_b$predicted.celltype.l2, memory_b$cluster)
df_atlas_cluster <- as.data.frame(ct1)
colnames(df_atlas_cluster) <- c("predicted.celltype.l2", "cluster", "n")


df_filtered <- df_atlas_cluster |>
  group_by(predicted.celltype.l2) |>
  mutate(total = sum(n)) |>
  ungroup() |>
  filter(total >= 50) |>
  mutate(predicted.celltype.l2 = factor(
    predicted.celltype.l2, 
    levels = cell_order 
  )) |>
  filter(!is.na(predicted.celltype.l2)) 

ggplot(df_filtered, aes(x = cluster, y = predicted.celltype.l2, fill = n)) +
  geom_tile() +
  scale_fill_viridis_c(option = "plasma")  +
  theme_minimal() +
  theme(axis.text.x = element_text(angle = 90, hjust = 1)) +
  labs(x = "Cluster", y = "predicted.celltype.l2 (Tonsil Atlas)",
       fill = "Cell count")

ggplot(df_filtered, aes(x = cluster, y = predicted.celltype.l2, fill = n)) +
  geom_tile() +
  scale_fill_viridis_c(option = "plasma", trans = "log10") +
  theme_minimal() +
  theme(axis.text.x = element_text(angle = 90, hjust = 1)) +
  labs(x = "Seurat cluster", y = "predicted.celltype.l2", fill = "Cell count (log10)")
Warning in scale_fill_viridis_c(option = "plasma", trans = "log10"): log-10
transformation introduced infinite values.

Idents(memory_b) <- "RNA_snn_res.0.4"
new.cluster.ids <- c("csMBC", 
                     "ncsMBC", 
                     "FCRL4or5",
                     "FCRL4or5",
                     "csMBC",
                     "FCRL4or5",
                     "Early MBC",
                     "FCRL4or5")
names(new.cluster.ids) <- levels(memory_b)
memory_b <- RenameIdents(memory_b, new.cluster.ids)
memory_b$cell_labels_l2 <- Idents(memory_b)
DimPlot(memory_b, raster = F, reduction = "umap.memoryB", label = T, repel = T)

Subclustering Class switching MBC

memory_b <- FindSubCluster(memory_b, cluster = "csMBC", graph.name = "RNA_snn", resolution = 0.1, subcluster.name = "MBC")
Modularity Optimizer version 1.3.0 by Ludo Waltman and Nees Jan van Eck

Number of nodes: 27042
Number of edges: 478514

Running Louvain algorithm...
Maximum modularity in 10 random starts: 0.9204
Number of communities: 5
Elapsed time: 2 seconds
3 singletons identified. 2 final clusters.
Idents(memory_b) <- memory_b$MBC
DimPlot(memory_b, reduction = "umap.memoryB", label = TRUE, label.size = 3.5, repel = TRUE, raster = FALSE )

Subclustering Non-class switching MBC

memory_b <- FindSubCluster(memory_b, cluster = "ncsMBC", graph.name = "RNA_snn", resolution = 0.1, subcluster.name = "MBC")
Modularity Optimizer version 1.3.0 by Ludo Waltman and Nees Jan van Eck

Number of nodes: 15443
Number of edges: 281121

Running Louvain algorithm...
Maximum modularity in 10 random starts: 0.9026
Number of communities: 2
Elapsed time: 0 seconds
Idents(memory_b) <- memory_b$MBC
DimPlot(memory_b, reduction = "umap.memoryB", label = TRUE, label.size = 3.5, repel = TRUE, raster = FALSE )

Subclustering FCRL4/5+ cells

memory_b <- FindSubCluster(memory_b, cluster = "FCRL4or5", graph.name = "RNA_snn", resolution = 0.1, subcluster.name = "MBC")
Modularity Optimizer version 1.3.0 by Ludo Waltman and Nees Jan van Eck

Number of nodes: 21143
Number of edges: 481926

Running Louvain algorithm...
Maximum modularity in 10 random starts: 0.9316
Number of communities: 4
Elapsed time: 1 seconds
Idents(memory_b) <- memory_b$MBC
DimPlot(memory_b, reduction = "umap.memoryB", label = TRUE, label.size = 3.5, repel = TRUE, raster = FALSE )

Idents(memory_b) <- factor(Idents(memory_b), levels = c("Early MBC","csMBC_0", "csMBC_1", "ncsMBC_0","ncsMBC_1", "FCRL4or5_0","FCRL4or5_1","FCRL4or5_2","FCRL4or5_3"))
memory_b$cell_labels_l3 <- Idents(memory_b)
table(memory_b$cell_labels_l3, memory_b$tissue)
            
             Adenoids   BAL Bronchial_brushings Nasal_brushings Tonsils
  Early MBC        47     2                   3               8    1929
  csMBC_0       12554    24                  90             147    9041
  csMBC_1         689   222                 107            3179     989
  ncsMBC_0       7938    30                  45             167    4165
  ncsMBC_1       2026     6                  15              63     988
  FCRL4or5_0     4349    62                 104             191    6202
  FCRL4or5_1      212   706                1639            2541     137
  FCRL4or5_2     2237     2                  39              96    1158
  FCRL4or5_3      712    13                  22             109     612
df_counts <- memory_b@meta.data |>
  count(cell_labels_l3, tissue, name = "n")
df_totals <- df_counts |>
  group_by(cell_labels_l3) |>
  summarise(total = sum(n), .groups = "drop")

ggplot(df_counts, aes(x = cell_labels_l3, y = n, fill = tissue)) +
  geom_bar(stat = "identity", position = "stack") +
  geom_text(data = df_totals,
            aes(x = cell_labels_l3, y = total, label = total),
            vjust = -0.3, size = 3, inherit.aes = FALSE) +
  theme_minimal() +
  theme(axis.text.x = element_text(angle = 90, hjust = 1)) +
  labs(x = "cell_labels_l3",
       y = "Number of cells",
       fill = "Tissue")

DE features of Memory B cells

The marker genes for this Memory B cell subclustering can be found here-

MemoryB_population_subclusters

gc()
             used    (Mb) gc trigger    (Mb) limit (Mb)   max used    (Mb)
Ncells    4764203   254.5   10139294   541.5         NA   10139294   541.5
Vcells 3514245927 26811.6 6081598827 46399.0     163840 6080984109 46394.3
paed_sub.markers <- FindAllMarkers(
  memory_b, only.pos = TRUE,min.pct = 0.25, logfc.threshold = 0.25,features = features.no.mt)
Calculating cluster Early MBC
Calculating cluster csMBC_0
Calculating cluster csMBC_1
Calculating cluster ncsMBC_0
Calculating cluster ncsMBC_1
Calculating cluster FCRL4or5_0
Calculating cluster FCRL4or5_1
Calculating cluster FCRL4or5_2
Calculating cluster FCRL4or5_3
gc()
             used    (Mb) gc trigger    (Mb) limit (Mb)   max used    (Mb)
Ncells    4765142   254.5   10139294   541.5         NA   10139294   541.5
Vcells 3514274895 26811.8 6081598827 46399.0     163840 6080984109 46394.3
top10 <- paed_sub.markers %>%
    group_by(cluster) %>%
    top_n(n = 10, wt = avg_log2FC) %>%
    ungroup() %>%
    distinct(gene, .keep_all = TRUE) %>%
    arrange(cluster, desc(avg_log2FC))


best.wilcox.gene.per.cluster <- paed_sub.markers |>
  group_by(cluster) |>
  slice_max(avg_log2FC, n = 1) |>
  select(cluster, gene)

best.wilcox.gene.per.cluster
# A tibble: 9 × 2
# Groups:   cluster [9]
  cluster    gene  
  <fct>      <chr> 
1 Early MBC  MEF2B 
2 csMBC_0    TEX9  
3 csMBC_1    IGHG1 
4 ncsMBC_0   PTPRJ 
5 ncsMBC_1   LILRA4
6 FCRL4or5_0 DHRS9 
7 FCRL4or5_1 NR4A1 
8 FCRL4or5_2 IFIT3 
9 FCRL4or5_3 EGR3  
FeaturePlot(
  memory_b,
  features = best.wilcox.gene.per.cluster$gene,
  reduction = "umap.memoryB",
  raster = FALSE,
  ncol = 1,
  label = TRUE,
  split.by = "tissue"
)

memory_b <- ScaleData(
  memory_b,
  features = unique(top10$gene),
  assay = "RNA",
  verbose = FALSE
)
Warning: Different features in new layer data than already exists for
scale.data
DoHeatmap(memory_b, features = unique(top10$gene), angle = 90) + NoLegend()

## Seurat top markers
cluster_colors <- paletteer::paletteer_d("pals::glasbey")[factor(top10$cluster)]

DotPlot(memory_b,    
        features = unique(top10$gene),
        group.by = "MBC",
        cols = c("azure1", "blueviolet"),
        dot.scale = 3, assay = "RNA") +
    RotatedAxis() +
    FontSize(y.text = 8, x.text = 12) +
    labs(y = element_blank(), x = element_blank()) +
    coord_flip() +
    theme(axis.text.y = element_text(color = cluster_colors)) +
    ggtitle("Top 10 marker genes per cluster (Seurat)")
Warning: Vectorized input to `element_text()` is not officially supported.
ℹ Results may be unexpected or may change in future versions of ggplot2.

marker_counts <- paed_sub.markers %>%
    filter(avg_log2FC > 1 & p_val_adj < 0.05) %>%  
    count(cluster, name = "n_markers") %>%
    arrange(desc(n_markers))

print(marker_counts)
     cluster n_markers
1 FCRL4or5_1       130
2 FCRL4or5_0        73
3 FCRL4or5_2        63
4   ncsMBC_1        56
5 FCRL4or5_3        51
6   ncsMBC_0        22
7  Early MBC        13
8    csMBC_0         6
9    csMBC_1         1
ggplot(marker_counts, aes(x = reorder(cluster, n_markers), y = n_markers)) +
    geom_col(fill = "steelblue", alpha = 0.8) +
    coord_flip() +
    labs(title = "High-confidence markers per subcluster (logFC > 1)",
         x = "Subcluster", y = "Number of markers") +
    theme_minimal()

out_markers <- here("output",
            "CSV_v3","B_cell_lineage",
            paste("Marker_genes_Reclustered_MemoryB.",opt_res, sep = ""))

dir.create(out_markers, recursive = TRUE, showWarnings = FALSE)

for (cl in unique(paed_sub.markers$cluster)) {
  cluster_data <- paed_sub.markers %>% dplyr::filter(cluster == cl)
  file_name <- here(out_markers, paste0("G000231_Neeland_", cl, ".csv"))
  if (!file.exists(file_name)) {
  write.csv(cluster_data, file = file_name)
  }
}

DE markers/gene between Memory B sub-clusters

Class switching Memory B cells

mem_ids <- c("csMBC_0", "csMBC_1")

res_all <- run_de_and_vln(
  memory_b,
  mem_ids,
  title_prefix = "csMBC",
  run_one_vs_all = TRUE,
  run_pairwise = TRUE,
  print_table = TRUE
)

csMBC : csMBC_0 vs_rest

Top 50 markers: csMBC_0 vs_rest
p_val avg_log2FC pct.1 pct.2 p_val_adj
DUSP1 0 1.6061086 0.652 0.180 0
EIF1 0 0.9946053 0.690 0.234 0
TSC22D3 0 0.9580139 0.790 0.336 0
SELL 0 0.9738791 0.898 0.454 0
JUN 0 1.7767377 0.573 0.164 0
PLAC8 0 0.8053995 0.719 0.325 0
KLF2 0 0.7296630 0.821 0.437 0
PNRC1 0 0.6397612 0.934 0.574 0
FOSB 0 2.3559096 0.417 0.063 0
TXNIP 0 0.7717838 0.947 0.646 0
KLF6 0 0.9979584 0.518 0.177 0
JUND 0 0.7302177 0.838 0.471 0
SCIMP 0 0.6379611 0.659 0.271 0
CR1 0 0.6769531 0.763 0.389 0
AIM2 0 0.5352096 0.767 0.349 0
GPR183 0 0.6477003 0.581 0.225 0
JUNB 0 0.7688705 0.612 0.264 0
EIF4A2 0 0.5679080 0.551 0.199 0
PPP1R15A 0 1.0529802 0.351 0.089 0
CD69 0 0.9861934 0.419 0.137 0
EVI2B 0 0.5214540 0.772 0.371 0
MEF2C 0 0.5359861 0.633 0.270 0
FOS 0 1.3700744 0.342 0.099 0
TAF7 0 0.5177084 0.605 0.245 0
CTSS 0 0.5415660 0.627 0.266 0
NFKBIA 0 0.7145442 0.429 0.143 0
BMP2K 0 0.7992549 0.393 0.123 0
FAM3C 0 0.6893482 0.429 0.146 0
RNF19A 0 0.5490206 0.462 0.165 0
TSPAN3 0 0.5245806 0.640 0.288 0
MARCKSL1 0 0.5607238 0.481 0.187 0
MYO1G 0 0.5219597 0.528 0.211 0
ITPR1 0 0.5227466 0.541 0.221 0
SMIM14 0 0.5448269 0.629 0.293 0
GNG7 0 0.5615935 0.414 0.144 0
TP53INP1 0 0.6951894 0.371 0.123 0
TEX9 0 0.8293123 0.285 0.073 0
EAF2 0 0.5329413 0.414 0.151 0
HSP90AA1 0 0.5292988 0.376 0.126 0
JUP 0 1.1833381 0.273 0.073 0
BIRC3 0 0.6643908 0.358 0.121 0
LYPLAL1 0 0.5543856 0.374 0.129 0
DDX3X 0 0.6237164 0.364 0.123 0
CENPM 0 0.5838450 0.399 0.149 0
CYSLTR1 0 0.9218644 0.269 0.069 0
ZDHHC14 0 0.5256271 0.409 0.153 0
HERC4 0 0.5041560 0.401 0.145 0
HSPA1B 0 1.6004907 0.250 0.066 0
OTUD1 0 0.7993936 0.286 0.082 0
CD55 0 0.5079554 0.494 0.212 0

csMBC : csMBC_1 vs_rest

Top 50 markers: csMBC_1 vs_rest
p_val avg_log2FC pct.1 pct.2 p_val_adj
IGHM 0.0000000 1.4143597 0.616 0.473 0.0000000
IGHD 0.0000000 1.5990091 0.363 0.212 0.0000000
TRAC 0.0000000 0.5410288 0.149 0.289 0.0000000
MPEG1 0.0000000 0.6606631 0.513 0.620 0.0000000
IGHG3 0.0000000 2.8593245 0.244 0.355 0.0000000
DOK3 0.0000000 0.5461014 0.214 0.331 0.0000000
SMARCB1 0.0000000 0.5254814 0.241 0.377 0.0000000
SBNO2 0.0000000 0.5588660 0.176 0.273 0.0000000
WDFY1 0.0000000 0.5481311 0.163 0.251 0.0000000
SBF1 0.0000000 0.6178918 0.168 0.256 0.0000000
TCIRG1 0.0000000 0.5815054 0.274 0.421 0.0000000
VOPP1 0.0000000 0.6648068 0.202 0.304 0.0000000
GM2A 0.0000000 0.5108908 0.274 0.403 0.0000047
DRAP1 0.0000000 0.6177707 0.237 0.345 0.0000072
ARHGAP24 0.0000000 0.5535911 0.197 0.281 0.0000094
SNRNP70 0.0000000 0.7085054 0.247 0.363 0.0002856
ETV6 0.0000001 0.5854297 0.232 0.329 0.0011294
FCRL5 0.0000025 0.7242486 0.360 0.401 0.0454301
ZEB2 0.0000052 0.5634250 0.266 0.365 0.0931378
CD72 0.0000458 0.9642508 0.299 0.339 0.8282880
PTPN7 0.0001372 0.7746432 0.203 0.273 1.0000000
IGHG1 0.0001624 5.1925353 0.480 0.774 1.0000000
TRABD 0.0004735 0.8393696 0.234 0.318 1.0000000
GRN 0.0041441 0.7146100 0.270 0.367 1.0000000
ARHGAP9 0.0204871 0.5621501 0.363 0.510 1.0000000
SPIB 0.0321025 0.6379678 0.317 0.430 1.0000000
FCRL3 0.0795201 0.6719602 0.238 0.296 1.0000000
FCRL2 0.1294177 0.5884311 0.425 0.551 1.0000000
OAS1 0.3281595 0.7682459 0.222 0.269 1.0000000
CLEC17A 0.3373264 0.8866940 0.254 0.307 1.0000000
CCDC50 0.5365351 0.7695592 0.282 0.367 1.0000000

csMBC : csMBC_0 vs csMBC_1

Top 50 markers: csMBC_0 vs csMBC_1
p_val avg_log2FC pct.1 pct.2 p_val_adj
DUSP1 0 1.6061086 0.652 0.180 0
EIF1 0 0.9946053 0.690 0.234 0
TSC22D3 0 0.9580139 0.790 0.336 0
SELL 0 0.9738791 0.898 0.454 0
JUN 0 1.7767377 0.573 0.164 0
PLAC8 0 0.8053995 0.719 0.325 0
KLF2 0 0.7296630 0.821 0.437 0
PNRC1 0 0.6397612 0.934 0.574 0
FOSB 0 2.3559096 0.417 0.063 0
TXNIP 0 0.7717838 0.947 0.646 0
KLF6 0 0.9979584 0.518 0.177 0
JUND 0 0.7302177 0.838 0.471 0
SCIMP 0 0.6379611 0.659 0.271 0
CR1 0 0.6769531 0.763 0.389 0
AIM2 0 0.5352096 0.767 0.349 0
GPR183 0 0.6477003 0.581 0.225 0
JUNB 0 0.7688705 0.612 0.264 0
EIF4A2 0 0.5679080 0.551 0.199 0
PPP1R15A 0 1.0529802 0.351 0.089 0
CD69 0 0.9861934 0.419 0.137 0
EVI2B 0 0.5214540 0.772 0.371 0
MEF2C 0 0.5359861 0.633 0.270 0
FOS 0 1.3700744 0.342 0.099 0
TAF7 0 0.5177084 0.605 0.245 0
CTSS 0 0.5415660 0.627 0.266 0
NFKBIA 0 0.7145442 0.429 0.143 0
BMP2K 0 0.7992549 0.393 0.123 0
FAM3C 0 0.6893482 0.429 0.146 0
RNF19A 0 0.5490206 0.462 0.165 0
TSPAN3 0 0.5245806 0.640 0.288 0
MARCKSL1 0 0.5607238 0.481 0.187 0
MYO1G 0 0.5219597 0.528 0.211 0
ITPR1 0 0.5227466 0.541 0.221 0
SMIM14 0 0.5448269 0.629 0.293 0
GNG7 0 0.5615935 0.414 0.144 0
TP53INP1 0 0.6951894 0.371 0.123 0
TEX9 0 0.8293123 0.285 0.073 0
EAF2 0 0.5329413 0.414 0.151 0
HSP90AA1 0 0.5292988 0.376 0.126 0
JUP 0 1.1833381 0.273 0.073 0
BIRC3 0 0.6643908 0.358 0.121 0
LYPLAL1 0 0.5543856 0.374 0.129 0
DDX3X 0 0.6237164 0.364 0.123 0
CENPM 0 0.5838450 0.399 0.149 0
CYSLTR1 0 0.9218644 0.269 0.069 0
ZDHHC14 0 0.5256271 0.409 0.153 0
HERC4 0 0.5041560 0.401 0.145 0
HSPA1B 0 1.6004907 0.250 0.066 0
OTUD1 0 0.7993936 0.286 0.082 0
CD55 0 0.5079554 0.494 0.212 0

Non-Class switching Memory B cells

mem_ids <- c( "ncsMBC_0","ncsMBC_1")

res_all <- run_de_and_vln(
  memory_b,
  mem_ids,
  title_prefix = "ncsMBC",
  run_one_vs_all = TRUE,
  run_pairwise = TRUE,
  print_table = TRUE
)

ncsMBC : ncsMBC_0 vs_rest

Top 50 markers: ncsMBC_0 vs_rest
p_val avg_log2FC pct.1 pct.2 p_val_adj
LTB 0 1.5000927 0.904 0.624 0
CD79A 0 0.5816704 0.993 0.969 0
CD24 0 1.1683697 0.791 0.510 0
ALOX5 0 1.0899466 0.764 0.505 0
ATP2A3 0 0.7380523 0.894 0.763 0
P2RX5 0 1.1982622 0.609 0.363 0
CR1 0 0.8606342 0.751 0.558 0
LBH 0 0.8276861 0.738 0.539 0
PLAC8 0 1.0487442 0.647 0.446 0
NIBAN3 0 0.7716244 0.703 0.495 0
BIRC3 0 1.2345638 0.459 0.244 0
PTPRJ 0 1.5662228 0.335 0.137 0
ITGB7 0 1.2833842 0.402 0.195 0
TBC1D9 0 1.0276029 0.531 0.326 0
ADAM19 0 0.7611487 0.667 0.486 0
CD1D 0 1.4063110 0.344 0.145 0
TNFRSF13B 0 0.6771024 0.772 0.624 0
PAX5 0 0.5596504 0.833 0.728 0
RASGRP2 0 0.6224150 0.786 0.648 0
OSBPL10 0 1.0240192 0.519 0.319 0
CD1C 0 0.9183661 0.555 0.357 0
SLA 0 0.9148965 0.497 0.291 0
SELL 0 0.6067178 0.773 0.617 0
ETS1 0 0.5270975 0.820 0.714 0
PTPRC 0 0.5291413 0.782 0.670 0
MOB3B 0 1.1262265 0.359 0.185 0
CLEC17A 0 0.6538095 0.599 0.418 0
GLIPR1 0 0.8653029 0.505 0.334 0
RCSD1 0 0.5746977 0.759 0.646 0
PLEKHO1 0 0.5472146 0.754 0.624 0
APBB1IP 0 0.5572090 0.703 0.573 0
IQSEC1 0 0.6196726 0.678 0.540 0
CBLB 0 0.9064535 0.417 0.246 0
SIGLEC10 0 0.8033677 0.539 0.381 0
PXK 0 0.6487999 0.620 0.483 0
EVI2B 0 0.5075770 0.766 0.669 0
RIPOR2 0 0.5711374 0.726 0.608 0
CCDC141 0 0.9894317 0.361 0.209 0
AHNAK 0 1.0398024 0.351 0.200 0
CD69 0 0.6487280 0.624 0.485 0
TRANK1 0 0.6986463 0.525 0.378 0
SPIB 0 0.7354690 0.499 0.350 0
KLF2 0 0.5823767 0.685 0.562 0
ADGRG5 0 1.0474097 0.301 0.167 0
KIAA0040 0 0.8013927 0.413 0.267 0
CXXC5 0 0.6223933 0.537 0.395 0
MAPRE2 0 0.5896555 0.580 0.447 0
IL10RA 0 0.8274260 0.434 0.298 0
PFKFB3 0 0.9862954 0.345 0.209 0
SEMA7A 0 0.5961587 0.589 0.460 0

ncsMBC : ncsMBC_1 vs_rest

Top 50 markers: ncsMBC_1 vs_rest
p_val avg_log2FC pct.1 pct.2 p_val_adj
RHOBTB2 0 2.2681169 0.781 0.310 0
OAS3 0 3.1753219 0.580 0.132 0
OAS1 0 2.2683309 0.786 0.360 0
FAM102A 0 1.7313308 0.793 0.468 0
LILRA4 0 3.5767993 0.368 0.045 0
LY9 0 1.6934658 0.823 0.505 0
UAP1L1 0 2.3651891 0.422 0.110 0
CRIP3 0 2.3903164 0.394 0.097 0
SGPP1 0 1.3660554 0.827 0.538 0
TEC 0 2.6026537 0.369 0.085 0
CD22 0 1.1424783 0.971 0.907 0
MS4A1 0 0.7257480 0.997 0.993 0
FCMR 0 0.7640120 0.972 0.908 0
GM2A 0 1.2241393 0.784 0.521 0
KLHL6 0 1.2748466 0.776 0.517 0
ASAH1 0 2.4820348 0.353 0.104 0
CTSA 0 1.6096575 0.578 0.280 0
PARP15 0 0.7785738 0.931 0.833 0
SCIMP 0 1.6093857 0.542 0.249 0
DTX1 0 1.5453423 0.566 0.278 0
TPP1 0 1.1559260 0.732 0.464 0
KCNAB2 0 1.4340258 0.573 0.288 0
SLC23A2 0 1.4066789 0.574 0.293 0
BRI3 0 1.5690970 0.453 0.182 0
NEK6 0 1.3668250 0.653 0.390 0
SLC35B2 0 1.7057412 0.445 0.185 0
HEXA 0 1.3075926 0.652 0.390 0
ARID5B 0 1.2535279 0.693 0.441 0
RENBP 0 2.0591460 0.298 0.087 0
DNMT3A 0 1.3485399 0.554 0.288 0
SORL1 0 1.7957311 0.367 0.135 0
AMDHD2 0 1.8783333 0.349 0.125 0
NPC2 0 1.2391850 0.580 0.312 0
MFHAS1 0 1.6080283 0.394 0.155 0
OAS2 0 1.1003543 0.704 0.480 0
IFI30 0 1.0141698 0.822 0.666 0
SLAMF1 0 1.5797953 0.393 0.166 0
DOK3 0 1.0788369 0.634 0.397 0
SIGLEC6 0 1.6188471 0.305 0.109 0
ACP5 0 1.0960037 0.705 0.511 0
FCER2 0 1.2908099 0.515 0.281 0
BHLHE40 0 1.0984678 0.574 0.342 0
FLCN 0 1.6322797 0.291 0.105 0
VEGFB 0 1.0013569 0.629 0.408 0
TMC8 0 0.6584677 0.869 0.738 0
PSAP 0 1.1050606 0.636 0.437 0
NFKBIE 0 1.2174373 0.478 0.266 0
FCRL5 0 0.9424738 0.732 0.559 0
IRF4 0 1.2331160 0.452 0.239 0
ST3GAL5 0 1.0317433 0.577 0.369 0

ncsMBC : ncsMBC_0 vs ncsMBC_1

Top 50 markers: ncsMBC_0 vs ncsMBC_1
p_val avg_log2FC pct.1 pct.2 p_val_adj
LTB 0 1.5000927 0.904 0.624 0
CD79A 0 0.5816704 0.993 0.969 0
CD24 0 1.1683697 0.791 0.510 0
ALOX5 0 1.0899466 0.764 0.505 0
ATP2A3 0 0.7380523 0.894 0.763 0
P2RX5 0 1.1982622 0.609 0.363 0
CR1 0 0.8606342 0.751 0.558 0
LBH 0 0.8276861 0.738 0.539 0
PLAC8 0 1.0487442 0.647 0.446 0
NIBAN3 0 0.7716244 0.703 0.495 0
BIRC3 0 1.2345638 0.459 0.244 0
PTPRJ 0 1.5662228 0.335 0.137 0
ITGB7 0 1.2833842 0.402 0.195 0
TBC1D9 0 1.0276029 0.531 0.326 0
ADAM19 0 0.7611487 0.667 0.486 0
CD1D 0 1.4063110 0.344 0.145 0
TNFRSF13B 0 0.6771024 0.772 0.624 0
PAX5 0 0.5596504 0.833 0.728 0
RASGRP2 0 0.6224150 0.786 0.648 0
OSBPL10 0 1.0240192 0.519 0.319 0
CD1C 0 0.9183661 0.555 0.357 0
SLA 0 0.9148965 0.497 0.291 0
SELL 0 0.6067178 0.773 0.617 0
ETS1 0 0.5270975 0.820 0.714 0
PTPRC 0 0.5291413 0.782 0.670 0
MOB3B 0 1.1262265 0.359 0.185 0
CLEC17A 0 0.6538095 0.599 0.418 0
GLIPR1 0 0.8653029 0.505 0.334 0
RCSD1 0 0.5746977 0.759 0.646 0
PLEKHO1 0 0.5472146 0.754 0.624 0
APBB1IP 0 0.5572090 0.703 0.573 0
IQSEC1 0 0.6196726 0.678 0.540 0
CBLB 0 0.9064535 0.417 0.246 0
SIGLEC10 0 0.8033677 0.539 0.381 0
PXK 0 0.6487999 0.620 0.483 0
EVI2B 0 0.5075770 0.766 0.669 0
RIPOR2 0 0.5711374 0.726 0.608 0
CCDC141 0 0.9894317 0.361 0.209 0
AHNAK 0 1.0398024 0.351 0.200 0
CD69 0 0.6487280 0.624 0.485 0
TRANK1 0 0.6986463 0.525 0.378 0
SPIB 0 0.7354690 0.499 0.350 0
KLF2 0 0.5823767 0.685 0.562 0
ADGRG5 0 1.0474097 0.301 0.167 0
KIAA0040 0 0.8013927 0.413 0.267 0
CXXC5 0 0.6223933 0.537 0.395 0
MAPRE2 0 0.5896555 0.580 0.447 0
IL10RA 0 0.8274260 0.434 0.298 0
PFKFB3 0 0.9862954 0.345 0.209 0
SEMA7A 0 0.5961587 0.589 0.460 0

FCRL4/5+ Memory B cells

mem_ids <- c( "FCRL4or5_0","FCRL4or5_1","FCRL4or5_2","FCRL4or5_3")

res_all <- run_de_and_vln(
  memory_b,
  mem_ids,
  title_prefix = "FCRL4or5",
  run_one_vs_all = TRUE,
  run_pairwise = TRUE,
  print_table = TRUE
)

FCRL4or5 : FCRL4or5_0 vs_rest

Top 50 markers: FCRL4or5_0 vs_rest
p_val avg_log2FC pct.1 pct.2 p_val_adj
IFNGR1 0 1.3729718 0.723 0.325 0
FCRL4 0 0.9512132 0.674 0.278 0
TSPAN3 0 0.9894633 0.824 0.436 0
HHEX 0 1.0020732 0.733 0.347 0
TRIB2 0 1.2215299 0.608 0.223 0
SLC4A7 0 1.0569550 0.644 0.269 0
LRRK2 0 0.9353177 0.721 0.346 0
CCNG2 0 0.8773428 0.713 0.341 0
EVI2B 0 0.7799391 0.864 0.494 0
FGR 0 1.0837904 0.605 0.236 0
SLAMF6 0 0.7443635 0.699 0.335 0
CCDC141 0 0.9771170 0.624 0.261 0
RHOQ 0 0.9019081 0.700 0.339 0
ADGRG5 0 0.5392342 0.769 0.410 0
MARCH1 0 0.8123578 0.755 0.397 0
FUT7 0 0.9967994 0.605 0.249 0
SOX5 0 0.8147390 0.621 0.266 0
OSBPL8 0 0.8622595 0.648 0.294 0
MOB1A 0 0.8144084 0.699 0.345 0
SESN3 0 0.6975793 0.857 0.508 0
FAM49B 0 0.7734586 0.697 0.349 0
GAPT 0 0.8984752 0.619 0.272 0
ZBED2 0 1.3844724 0.483 0.137 0
ETS1 0 0.6689249 0.879 0.537 0
BHLHE41 0 0.9226048 0.762 0.422 0
FAM214A 0 0.5680549 0.823 0.485 0
TLR10 0 0.8378853 0.913 0.576 0
METTL7A 0 0.7168806 0.662 0.326 0
CLECL1 0 0.7034118 0.715 0.379 0
WASHC4 0 0.6545229 0.726 0.392 0
RESF1 0 0.7636337 0.902 0.573 0
STX7 0 0.5660515 0.865 0.536 0
HCK 0 1.1148400 0.501 0.173 0
CD47 0 0.7447616 0.906 0.580 0
ELK3 0 0.7054684 0.589 0.263 0
PFKFB3 0 0.7058619 0.687 0.362 0
FAM49A 0 0.7179805 0.597 0.273 0
GALNT1 0 0.8834702 0.558 0.235 0
PLXNC1 0 0.9891554 0.533 0.212 0
SMIM14 0 0.7653263 0.764 0.443 0
PTPRC 0 0.5845872 0.889 0.577 0
MS4A7 0 0.8536057 0.576 0.264 0
MGAT4A 0 0.7382346 0.572 0.262 0
ENTPD1 0 0.6844262 0.819 0.510 0
FCRL5 0 0.7726460 0.930 0.623 0
TTN 0 0.8748288 0.526 0.219 0
CD96 0 1.1442847 0.508 0.207 0
CBX3 0 0.8467727 0.466 0.173 0
CCR6 0 0.8128635 0.915 0.624 0
DHRS9 0 1.7261935 0.379 0.091 0

FCRL4or5 : FCRL4or5_1 vs_rest

Top 50 markers: FCRL4or5_1 vs_rest
p_val avg_log2FC pct.1 pct.2 p_val_adj
WFDC2 0 4.0349844 0.380 0.023 0
NR4A1 0 4.2106615 0.375 0.109 0
NR4A2 0 3.9447251 0.281 0.084 0
CFL1 0 0.8840932 0.837 0.871 0
ZFP36 0 1.6379037 0.712 0.678 0
PFN1 0 0.6839151 0.927 0.963 0
ITGAX 0 1.5393788 0.598 0.455 0
CORO1A 0 0.5608385 0.946 0.982 0
DUSP4 0 2.4367307 0.435 0.270 0
CYBA 0 0.6048758 0.897 0.948 0
JUND 0 1.1860058 0.816 0.872 0
EZR 0 0.8969320 0.798 0.871 0
FMNL1 0 0.8662595 0.762 0.814 0
COTL1 0 0.8049097 0.756 0.807 0
SOCS3 0 2.2084120 0.356 0.213 0
KDM6B 0 2.5393736 0.355 0.218 0
EGR3 0 2.1098442 0.299 0.148 0
TRABD 0 1.1899356 0.614 0.584 0
NFKBID 0 2.6344874 0.305 0.170 0
LSP1 0 0.5871224 0.875 0.933 0
SPIB 0 1.0325947 0.677 0.677 0
AKNA 0 0.6079088 0.834 0.907 0
ADGRE5 0 1.3323269 0.649 0.657 0
IFI30 0 0.6551252 0.860 0.919 0
SRGN 0 1.8465187 0.497 0.454 0
PLEKHO1 0 0.6453846 0.788 0.868 0
TCIRG1 0 0.9480704 0.663 0.682 0
IER2 0 0.9897057 0.683 0.727 0
CD83 0 1.4865185 0.587 0.577 0
DUSP2 0 2.4099414 0.321 0.215 0
STAT6 0 0.7809089 0.712 0.782 0
TLN1 0 0.7623649 0.665 0.725 0
PPP1R9B 0 0.6919665 0.730 0.808 0
JUNB 0 1.1711371 0.665 0.702 0
CREM 0 2.0543053 0.338 0.253 0
METRNL 0 1.9669860 0.280 0.182 0
EFHD2 0 0.9418864 0.563 0.566 0
TNFRSF13C 0 0.5205920 0.858 0.926 0
TYMP 0 0.9613442 0.552 0.526 0
GRN 0 0.8759338 0.637 0.668 0
ARPC1B 0 0.7053061 0.631 0.669 0
PIM3 0 2.1997649 0.268 0.186 0
ARHGAP30 0 0.6917992 0.674 0.766 0
VASP 0 0.5896991 0.697 0.784 0
TAP1 0 0.6424927 0.712 0.804 0
CCDC88B 0 0.7667858 0.639 0.705 0
H3F3A 0 0.5114529 0.742 0.854 0
MAPKAPK2 0 1.0535174 0.519 0.543 0
IGHA1 0 1.0395156 0.542 0.517 0
ARHGDIA 0 1.0353375 0.512 0.542 0

FCRL4or5 : FCRL4or5_2 vs_rest

Top 50 markers: FCRL4or5_2 vs_rest
p_val avg_log2FC pct.1 pct.2 p_val_adj
IFIT3 0 3.0273385 0.532 0.142 0
IFI44L 0 2.1320345 0.629 0.250 0
IFIT1 0 2.9097447 0.475 0.106 0
XAF1 0 1.7543418 0.789 0.448 0
CMPK2 0 1.9430367 0.567 0.229 0
STAT1 0 1.6124238 0.877 0.557 0
IFI44 0 1.9697032 0.520 0.212 0
ISG20 0 1.3115634 0.807 0.507 0
EPSTI1 0 1.5787237 0.751 0.452 0
EIF2AK2 0 1.7024914 0.684 0.389 0
SLFN5 0 2.1163551 0.469 0.193 0
IFIT2 0 2.0522679 0.458 0.201 0
SAMD9L 0 1.5790061 0.772 0.518 0
HERC5 0 3.0096021 0.322 0.070 0
TRIM22 0 1.5357946 0.937 0.685 0
OAS2 0 1.4668696 0.858 0.611 0
TXNIP 0 1.4480878 0.894 0.653 0
SELL 0 1.1542131 0.879 0.644 0
MX1 0 1.3744276 0.813 0.597 0
LY6E 0 1.1804374 0.826 0.614 0
IFI16 0 1.0789824 0.843 0.661 0
ISG15 0 1.3550185 0.631 0.370 0
RSAD2 0 2.0666016 0.366 0.127 0
IFI6 0 1.6490611 0.548 0.292 0
MX2 0 1.4666612 0.667 0.449 0
IRF7 0 0.9419604 0.834 0.667 0
CR1 0 1.2179570 0.733 0.499 0
RNF213 0 1.0150739 0.824 0.685 0
ITGA4 0 1.2640204 0.640 0.398 0
CR2 0 1.3574722 0.544 0.280 0
OAS3 0 1.4298778 0.557 0.306 0
DDX60 0 1.7541902 0.466 0.240 0
ADAR 0 0.8225763 0.835 0.720 0
AIM2 0 1.1868281 0.691 0.501 0
OAS1 0 1.1766201 0.711 0.532 0
SP110 0 0.6767426 0.900 0.805 0
PARP14 0 0.8188376 0.845 0.748 0
UBE2L6 0 1.0889919 0.673 0.485 0
HERC6 0 1.8867878 0.318 0.129 0
IFIH1 0 1.3776985 0.480 0.264 0
ZBTB20 0 1.6288876 0.407 0.202 0
SMCHD1 0 1.0133767 0.684 0.538 0
APOL6 0 1.0974406 0.535 0.334 0
GNG7 0 1.6065641 0.333 0.148 0
IFITM1 0 1.9058396 0.292 0.124 0
VPREB3 0 1.6480893 0.281 0.115 0
STAP1 0 1.1062776 0.558 0.384 0
BST2 0 0.8318930 0.674 0.517 0
ZBP1 0 1.4306683 0.416 0.237 0
EVL 0 0.5156622 0.912 0.846 0

FCRL4or5 : FCRL4or5_3 vs_rest

Top 50 markers: FCRL4or5_3 vs_rest
p_val avg_log2FC pct.1 pct.2 p_val_adj
EGR3 0 2.2745418 0.572 0.157 0
CD83 0 1.5171234 0.924 0.554 0
ZFP36L1 0 1.1855603 0.940 0.815 0
MARCKSL1 0 2.0811832 0.559 0.210 0
NFKB2 0 1.5130486 0.729 0.431 0
TRAF4 0 1.7435771 0.684 0.391 0
REL 0 1.3865823 0.816 0.620 0
NFKBIA 0 1.5000249 0.705 0.413 0
SYNGR2 0 0.9189879 0.944 0.878 0
RELB 0 1.7780511 0.536 0.242 0
HIVEP3 0 2.0531996 0.472 0.200 0
TNFAIP3 0 1.7389367 0.481 0.210 0
EGR2 0 1.7574602 0.424 0.163 0
CD69 0 1.2642557 0.665 0.425 0
FCER2 0 1.8862860 0.439 0.203 0
DUSP2 0 0.8132792 0.473 0.224 0
MYC 0 1.3738630 0.438 0.214 0
HSP90AB1 0 0.8169232 0.743 0.570 0
MAT2A 0 1.1021638 0.657 0.469 0
GNL3 0 1.3104939 0.490 0.282 0
KDM6B 0 0.7997236 0.455 0.236 0
INPP5F 0 1.0915156 0.604 0.419 0
SWAP70 0 0.7469231 0.830 0.750 0
SLC38A1 0 0.8704112 0.730 0.601 0
PNRC1 0 0.6458392 0.873 0.808 0
NAB2 0 1.1738669 0.477 0.284 0
IL2RG 0 0.6026298 0.886 0.807 0
SCIMP 0 0.9233962 0.687 0.551 0
NOP16 0 1.2678837 0.423 0.244 0
RRAS2 0 1.6369852 0.318 0.157 0
NFKBIE 0 1.0437768 0.546 0.371 0
IER5 0 0.7412683 0.735 0.600 0
ITPKB 0 1.0949801 0.518 0.344 0
CCND2 0 1.3035975 0.433 0.254 0
BIRC3 0 1.0765404 0.559 0.394 0
ZMIZ2 0 1.0165903 0.554 0.400 0
DUSP10 0 1.2095493 0.424 0.252 0
SAMSN1 0 1.1434834 0.527 0.376 0
SLC23A2 0 1.3173327 0.402 0.235 0
CR2 0 0.8335031 0.512 0.310 0
CD40 0 0.7473402 0.761 0.672 0
MDFIC 0 1.1042520 0.548 0.404 0
EBI3 0 1.7055836 0.304 0.156 0
PHACTR1 0 0.8617310 0.704 0.601 0
GPX4 0 1.1157325 0.489 0.338 0
SNX11 0 1.6121154 0.285 0.143 0
MARCKS 0 1.1149452 0.394 0.228 0
FCMR 0 0.5321356 0.864 0.736 0
CR1 0 0.6584725 0.696 0.526 0
PPRC1 0 1.3612586 0.283 0.139 0

FCRL4or5 : FCRL4or5_0 vs FCRL4or5_1

Top 50 markers: FCRL4or5_0 vs FCRL4or5_1
p_val avg_log2FC pct.1 pct.2 p_val_adj
EVI2B 0 1.6617870 0.864 0.303 0
ETS1 0 1.4746293 0.879 0.343 0
EIF1 0 1.4533223 0.750 0.222 0
PLEKHF2 0 1.5110906 0.743 0.223 0
TSPAN3 0 1.4939734 0.824 0.315 0
RESF1 0 1.2990965 0.902 0.405 0
DRAM2 0 1.1795051 0.780 0.293 0
TLR10 0 1.2325390 0.913 0.426 0
SESN3 0 1.1290560 0.857 0.381 0
SELL 0 1.4884654 0.788 0.314 0
LRMP 0 0.9798055 0.850 0.380 0
RHOQ 0 1.3703825 0.700 0.231 0
IFNGR1 0 1.5987167 0.723 0.255 0
CD47 0 1.1501699 0.906 0.441 0
FAM214A 0 0.9743853 0.823 0.360 0
MOB1A 0 1.2228108 0.699 0.237 0
SMIM14 0 1.4209090 0.764 0.304 0
SETX 0 0.9256449 0.796 0.337 0
WASHC4 0 1.1470404 0.726 0.267 0
TUT4 0 1.0651068 0.710 0.255 0
CCNG2 0 1.1601480 0.713 0.261 0
ST8SIA4 0 0.8942352 0.843 0.394 0
HHEX 0 1.1055717 0.733 0.285 0
SLAMF6 0 1.0947747 0.699 0.251 0
CLK1 0 0.9397231 0.725 0.277 0
CTSS 0 0.9789340 0.771 0.324 0
CD180 0 1.0902088 0.721 0.274 0
LRRK2 0 1.1917574 0.721 0.276 0
GAPT 0 1.3823535 0.619 0.180 0
CEPT1 0 1.0765305 0.681 0.243 0
TAF7 0 1.0495650 0.680 0.242 0
PTPRC 0 0.9044857 0.889 0.451 0
JMJD1C 0 0.9081879 0.694 0.259 0
LNPEP 0 0.8072141 0.754 0.323 0
SNX2 0 1.0493416 0.693 0.262 0
SNX3 0 1.1817697 0.649 0.219 0
ATM 0 0.7747824 0.828 0.400 0
ERBIN 0 0.8692213 0.730 0.303 0
FAM49B 0 1.0072482 0.697 0.270 0
DMXL1 0 1.1507091 0.637 0.214 0
MBNL1 0 0.8017913 0.886 0.466 0
USP6NL 0 0.8793090 0.681 0.262 0
MARCH1 0 0.9114396 0.755 0.336 0
STX7 0 0.7235134 0.865 0.446 0
OSBPL8 0 1.0788276 0.648 0.230 0
UGCG 0 0.9722610 0.695 0.278 0
SMC6 0 1.2495558 0.641 0.225 0
MIOS 0 1.1613033 0.610 0.194 0
LY86 0 0.8903034 0.713 0.298 0
RALGPS2 0 0.8980821 0.751 0.337 0

FCRL4or5 : FCRL4or5_0 vs FCRL4or5_2

Top 50 markers: FCRL4or5_0 vs FCRL4or5_2
p_val avg_log2FC pct.1 pct.2 p_val_adj
FCRL4 0 3.2204685 0.674 0.107 0
SOX5 0 3.0007078 0.621 0.098 0
ITGAX 0 3.0947252 0.601 0.105 0
FGR 0 2.6507315 0.605 0.117 0
GSN 0 2.5941909 0.621 0.169 0
HCK 0 2.8892137 0.501 0.073 0
ADGRG5 0 1.3199044 0.769 0.343 0
LIMK1 0 1.3692350 0.734 0.315 0
RIN3 0 1.4994818 0.612 0.197 0
KCTD12 0 3.1197429 0.474 0.068 0
FCRL5 0 1.4823413 0.930 0.538 0
ZBED2 0 2.0908096 0.483 0.111 0
IFI30 0 1.0238253 0.964 0.809 0
ACTG1 0 1.0508611 0.968 0.872 0
PLD4 0 1.3102773 0.698 0.309 0
SPIB 0 1.1876215 0.778 0.428 0
CLIP2 0 1.8164673 0.523 0.147 0
TRIB2 0 1.5655471 0.608 0.221 0
IFNGR1 0 1.3786780 0.723 0.371 0
PFKFB3 0 1.4191344 0.687 0.309 0
PREX1 0 1.2343613 0.715 0.346 0
BHLHE40 0 1.5322505 0.601 0.222 0
ZEB2 0 1.1116011 0.807 0.449 0
TESC 0 2.1430077 0.463 0.112 0
RFTN1 0 1.2124891 0.686 0.287 0
FLNA 0 1.1643584 0.740 0.368 0
FUT7 0 1.5177660 0.605 0.230 0
ITGB2 0 1.0170260 0.794 0.434 0
ADAM8 0 1.3696825 0.596 0.222 0
DHRS9 0 2.2328830 0.379 0.074 0
LSP1 0 0.6415939 0.974 0.856 0
GPR34 0 2.7227593 0.350 0.059 0
CTSH 0 0.7487651 0.943 0.754 0
SLC4A7 0 1.2039101 0.644 0.284 0
IL21R 0 1.6483484 0.427 0.110 0
SYT11 0 1.7112914 0.405 0.094 0
DUSP4 0 2.2851516 0.351 0.065 0
VSIR 0 2.2464637 0.353 0.066 0
CCR1 0 2.3293165 0.357 0.070 0
RASSF2 0 0.7969615 0.846 0.570 0
SH3BP5 0 0.8284513 0.822 0.508 0
DDIT4 0 0.9640358 0.781 0.493 0
COTL1 0 0.7704804 0.880 0.659 0
CD82 0 0.7449710 0.891 0.654 0
BHLHE41 0 0.9229875 0.762 0.475 0
C12orf75 0 1.9891402 0.361 0.088 0
SEMA4D 0 0.8571254 0.773 0.455 0
ARRB2 0 1.1037820 0.576 0.247 0
IVNS1ABP 0 1.2538561 0.639 0.328 0
ENTPD1 0 0.8133910 0.819 0.527 0

FCRL4or5 : FCRL4or5_0 vs FCRL4or5_3

Top 50 markers: FCRL4or5_0 vs FCRL4or5_3
p_val avg_log2FC pct.1 pct.2 p_val_adj
FCRL4 0 2.8978852 0.674 0.110 0
GSN 0 3.2217099 0.621 0.103 0
SOX5 0 3.0012710 0.621 0.090 0
FGR 0 3.1082468 0.605 0.104 0
HCK 0 4.2424956 0.501 0.025 0
THEMIS2 0 1.7069586 0.780 0.316 0
ACP5 0 1.3318307 0.834 0.408 0
PFKFB3 0 2.0506393 0.687 0.234 0
LIMK1 0 1.6331832 0.734 0.284 0
PTPN1 0 1.1278459 0.900 0.586 0
PLAC8 0 1.6616059 0.793 0.460 0
ATP2A3 0 0.9708655 0.952 0.717 0
LSP1 0 0.8599918 0.974 0.810 0
RIN3 0 1.9453395 0.612 0.164 0
FUT7 0 2.0632060 0.605 0.172 0
UCP2 0 0.9884115 0.943 0.703 0
PREX1 0 1.4883190 0.715 0.296 0
TBC1D9 0 2.0503936 0.572 0.148 0
SAMD9L 0 1.6561955 0.666 0.236 0
MX1 0 1.6078848 0.702 0.281 0
KCTD12 0 2.8730600 0.474 0.087 0
LBH 0 1.0632206 0.878 0.531 0
IL10RA 0 1.5471671 0.657 0.236 0
SEMA4D 0 1.2515198 0.773 0.375 0
BHLHE41 0 1.3269012 0.762 0.390 0
ZBED2 0 2.3600544 0.483 0.088 0
CBLB 0 2.0951509 0.504 0.104 0
CCR6 0 0.9445022 0.915 0.656 0
TNFRSF13B 0 0.9174447 0.918 0.651 0
MARCH1 0 1.2034012 0.755 0.343 0
RHOH 0 1.0458392 0.844 0.478 0
HHEX 0 1.2760144 0.733 0.343 0
ITGAX 0 1.6423553 0.601 0.213 0
SH3BP5 0 1.0349396 0.822 0.456 0
CD19 0 0.8382504 0.929 0.710 0
TRIB2 0 1.6087827 0.608 0.213 0
CD52 0 0.6535180 0.990 0.915 0
ITGB7 0 1.2470338 0.711 0.319 0
YPEL3 0 1.3874979 0.662 0.269 0
PLD4 0 1.3130341 0.698 0.314 0
ADGRG5 0 1.1224520 0.769 0.385 0
RIPOR2 0 0.9100213 0.881 0.567 0
FCRLA 0 1.1077434 0.741 0.358 0
SYK 0 0.8819439 0.876 0.572 0
MPEG1 0 0.8766843 0.888 0.608 0
GPR34 0 3.6912094 0.350 0.029 0
COTL1 0 0.8784926 0.880 0.623 0
TCIRG1 0 1.0582815 0.764 0.404 0
LRRK2 0 1.1023688 0.721 0.332 0
ARRB2 0 1.4466131 0.576 0.201 0

FCRL4or5 : FCRL4or5_1 vs FCRL4or5_2

Top 50 markers: FCRL4or5_1 vs FCRL4or5_2
p_val avg_log2FC pct.1 pct.2 p_val_adj
ITGAX 0 4.2020825 0.598 0.105 0
DUSP4 0 4.3789125 0.435 0.065 0
WFDC2 0 3.8553663 0.380 0.023 0
IFI30 0 1.4410110 0.860 0.809 0
PFN1 0 1.1171542 0.927 0.924 0
NR4A1 0 5.6611038 0.375 0.048 0
SPIB 0 1.9833991 0.677 0.428 0
GSN 0 2.9446112 0.502 0.169 0
KCTD12 0 3.8871629 0.394 0.068 0
CFL1 0 1.1627039 0.837 0.781 0
FCRL4 0 3.0704209 0.440 0.107 0
SOX5 0 2.9895165 0.428 0.098 0
COTL1 0 1.3678775 0.756 0.659 0
LSP1 0 1.0424011 0.875 0.856 0
TRABD 0 1.8626922 0.614 0.356 0
ZFP36 0 1.7695230 0.712 0.553 0
BHLHE40 0 2.2104590 0.504 0.222 0
CORO1A 0 0.7270540 0.946 0.965 0
FMNL1 0 1.1446240 0.762 0.676 0
TLN1 0 1.2993982 0.665 0.525 0
CYBA 0 0.7175306 0.897 0.899 0
ARPC1B 0 1.3444831 0.631 0.474 0
AKNA 0 0.8570120 0.834 0.817 0
NR4A2 0 4.0588216 0.281 0.058 0
SRGN 0 2.1749414 0.497 0.281 0
PREX1 0 1.6633280 0.550 0.346 0
EFHD2 0 1.5477181 0.563 0.364 0
GRN 0 1.4867120 0.637 0.483 0
METRNL 0 3.1304582 0.280 0.061 0
FGR 0 2.2969314 0.353 0.117 0
EGR3 0 3.3132489 0.299 0.084 0
ADGRE5 0 1.6056986 0.649 0.515 0
DUSP2 0 3.4509197 0.321 0.109 0
APOBR 0 2.9857975 0.258 0.055 0
IL2RB 0 3.4808238 0.264 0.065 0
ACTG1 0 0.9117874 0.845 0.872 0
HCK 0 2.5618936 0.281 0.073 0
WDFY4 0 0.7928556 0.831 0.796 0
LIMK1 0 1.5695596 0.513 0.315 0
NFKBID 0 3.1972019 0.305 0.099 0
ITGB2 0 1.3449231 0.588 0.434 0
CLIP2 0 2.1782126 0.359 0.147 0
TESC 0 2.2011837 0.324 0.112 0
ADAM8 0 1.7731394 0.432 0.222 0
CAPG 0 1.1796470 0.639 0.525 0
SRC 0 2.6685592 0.277 0.082 0
CD82 0 1.0357825 0.713 0.654 0
TCIRG1 0 1.1121479 0.663 0.545 0
SIGLEC6 0 2.2703723 0.295 0.098 0
ZBTB32 0 2.1279355 0.354 0.153 0

FCRL4or5 : FCRL4or5_1 vs FCRL4or5_3

Top 50 markers: FCRL4or5_1 vs FCRL4or5_3
p_val avg_log2FC pct.1 pct.2 p_val_adj
LSP1 0 1.2607990 0.875 0.810 0
ITGAX 0 2.7497126 0.598 0.213 0
GSN 0 3.5721302 0.502 0.103 0
COTL1 0 1.4758897 0.756 0.623 0
TCIRG1 0 1.8708885 0.663 0.404 0
CFL1 0 1.0726985 0.837 0.813 0
TRABD 0 1.9437902 0.614 0.336 0
SOX5 0 2.9900797 0.428 0.090 0
WFDC2 0 2.6578591 0.380 0.046 0
IFI30 0 1.2152072 0.860 0.849 0
CORO1A 0 0.7858922 0.946 0.952 0
FCRL4 0 2.7478376 0.440 0.110 0
ATP2A3 0 1.2007129 0.813 0.717 0
AKNA 0 1.0442418 0.834 0.774 0
THEMIS2 0 1.9948499 0.585 0.316 0
KCTD12 0 3.6404800 0.394 0.087 0
PFN1 0 0.8377151 0.927 0.941 0
FMNL1 0 1.2338682 0.762 0.666 0
PREX1 0 1.9172857 0.550 0.296 0
PTPN1 0 1.2018637 0.730 0.586 0
ADGRE5 0 1.8322012 0.649 0.461 0
BHLHE40 0 2.0188572 0.504 0.231 0
DUSP4 0 2.7828805 0.435 0.162 0
HCK 0 3.9151755 0.281 0.025 0
WDFY4 0 0.9151571 0.831 0.777 0
SOCS3 0 3.2382987 0.356 0.091 0
ZFP36 0 1.5223217 0.712 0.577 0
SAT1 0 1.5639689 0.610 0.394 0
GRN 0 1.5806622 0.637 0.471 0
IRF7 0 1.7677293 0.611 0.428 0
LIMK1 0 1.8335078 0.513 0.284 0
SPIB 0 1.2910281 0.677 0.526 0
SIGLEC6 0 3.4680994 0.295 0.054 0
FGR 0 2.7544467 0.353 0.104 0
ITGB7 0 1.6851030 0.535 0.319 0
TYMP 0 1.5818013 0.552 0.328 0
HSH2D 0 1.4259866 0.593 0.424 0
CBLB 0 2.4409737 0.346 0.104 0
S100A11 0 2.0496893 0.378 0.138 0
RIN3 0 2.0795028 0.399 0.164 0
EFHD2 0 1.4461937 0.563 0.386 0
TNFRSF13B 0 0.9461050 0.750 0.651 0
PLEKHO1 0 0.8628788 0.788 0.755 0
IFI6 0 3.1407757 0.321 0.101 0
TLN1 0 1.0784411 0.665 0.574 0
APOBR 0 3.3303673 0.258 0.048 0
CCDC50 0 1.2534667 0.581 0.403 0
ISG15 0 2.9439957 0.389 0.185 0
ARPC1B 0 1.1109492 0.631 0.517 0
CAPG 0 1.1486304 0.639 0.537 0

FCRL4or5 : FCRL4or5_2 vs FCRL4or5_3

Top 50 markers: FCRL4or5_2 vs FCRL4or5_3
p_val avg_log2FC pct.1 pct.2 p_val_adj
MX1 0 2.9319316 0.813 0.281 0
TRIM22 0 1.7390086 0.937 0.628 0
SAMD9L 0 2.9626331 0.772 0.236 0
XAF1 0 2.6200571 0.789 0.260 0
LY6E 0 2.3576559 0.826 0.384 0
STAT1 0 1.8649302 0.877 0.448 0
IFI44L 0 4.0120151 0.629 0.100 0
IRF7 0 2.0741270 0.834 0.428 0
ISG20 0 2.2279320 0.807 0.352 0
OAS2 0 1.8920457 0.858 0.485 0
CMPK2 0 4.1906982 0.567 0.061 0
EPSTI1 0 2.1866869 0.751 0.298 0
OAS1 0 2.3169901 0.711 0.230 0
MX2 0 2.7057244 0.667 0.222 0
ISG15 0 3.2942656 0.631 0.185 0
IFIT3 0 4.0488069 0.532 0.062 0
IFIT1 0 5.9205717 0.475 0.018 0
IFI6 0 3.8245603 0.548 0.101 0
IFI44 0 4.0059144 0.520 0.076 0
EIF2AK2 0 2.1220074 0.684 0.272 0
PLAC8 0 1.7666152 0.791 0.460 0
RNF213 0 1.5644929 0.824 0.543 0
SP110 0 1.1057573 0.900 0.670 0
SLFN5 0 3.5752559 0.469 0.072 0
APOL6 0 2.6154211 0.535 0.143 0
RSAD2 0 4.9669547 0.366 0.020 0
IFIT2 0 3.2193379 0.458 0.095 0
UBE2L6 0 1.6198379 0.673 0.330 0
IFI16 0 1.1308085 0.843 0.603 0
PARP9 0 1.7930052 0.596 0.255 0
DDX60 0 2.5032213 0.466 0.124 0
STAT2 0 2.0105560 0.552 0.213 0
ZBP1 0 2.7705584 0.416 0.102 0
OAS3 0 1.9775209 0.557 0.248 0
TNFSF10 0 2.7448582 0.409 0.099 0
SOCS1 0 1.8890077 0.514 0.200 0
HERC5 0 3.7363814 0.322 0.042 0
BST2 0 1.3132863 0.674 0.396 0
ADAR 0 0.8778047 0.835 0.677 0
TMEM140 0 2.2141932 0.423 0.130 0
USP18 0 4.5865400 0.266 0.016 0
GBP4 0 2.0849820 0.452 0.161 0
HERC6 0 2.7878484 0.318 0.061 0
DTX3L 0 1.2117832 0.652 0.407 0
IFITM2 0 1.2686225 0.638 0.392 0
PLSCR1 0 1.8769940 0.418 0.149 0
DDX60L 0 2.3259398 0.369 0.112 0
IFI35 0 1.9318911 0.409 0.139 0
TRANK1 0 1.3466136 0.550 0.286 0
RIPOR2 0 0.8749143 0.772 0.567 0

GC B cells

gc_b <-  subset(paed_sub, idents = c("Non-Cycling GCB", "Cycling GCB"))
keep_cells <- Idents(paed_sub) %in% c("Non-Cycling GCB", "Cycling GCB")
gc_b@assays$RNA@cells@.Data <- paed_sub@assays$RNA@cells@.Data[keep_cells, ]
gc_b
An object of class Seurat 
18076 features across 104759 samples within 1 assay 
Active assay: RNA (18076 features, 2000 variable features)
 3 layers present: data, counts, scale.data
 4 dimensional reductions calculated: pca, umap.unintegrated, umap.l1, umap.bcells
out2 <- here("output/RDS/Lineages_RDS_combined/SEU_GCB_Cells.rds")

if (!file.exists(out2)) {
  gc_b <- gc_b %>%
  FindVariableFeatures() %>%
  ScaleData() %>%
  RunPCA() 
  
  gc() 
  gc_b <- RunUMAP(gc_b, dims = 1:30, reduction = "pca", reduction.name = "umap.gcB")

  meta_data_columns <- colnames(gc_b@meta.data)
  columns_to_remove <- grep("^RNA_snn_res", meta_data_columns, value = TRUE)
  gc_b@meta.data <- gc_b@meta.data[, !(colnames(gc_b@meta.data) %in% columns_to_remove)]
  resolutions <- seq(0.1, 0.5, by = 0.1)
  gc_b <- FindNeighbors(gc_b, dims = 1:30, reduction = "pca")
  gc_b <- FindClusters(gc_b, resolution = resolutions )
  
  saveRDS(gc_b, out2)

} else {
  gc_b <- readRDS(out2)
}
clustree(gc_b, prefix = "RNA_snn_res.")

DimPlot(gc_b, group.by = "RNA_snn_res.0.1", reduction = "umap.gcB", label = TRUE, label.size = 2.5, repel = TRUE, raster = FALSE )

DimPlot(gc_b, group.by = "RNA_snn_res.0.5", reduction = "umap.gcB", label = TRUE, label.size = 2.5, repel = TRUE, raster = FALSE )

DimPlot(gc_b, group.by = "cell_labels_l1", reduction = "umap.gcB", label = TRUE, label.size = 2.5, repel = TRUE, raster = FALSE )

Idents(gc_b) <- gc_b$cell_labels_l1
gc_b$cell_labels <- NULL
Warning: Cannot find cell-level meta data named cell_labels
#gc_b$cell_labels_v2 <- NULL
features <- list(
  # Core DZ identity
  DZ_core = c("CXCR4", "FOXP1", "MME", "AICDA"),

  # DZ early S phase
  DZ_early_S = c("MCM2", "MCM3", "MCM4", "MCM5", "MCM6", "MCM7", "POLA1", "PCNA"),

  # DZ late S phase
  DZ_late_S = c("HIST1H4C", "HIST1H1B", "HIST2H2AH", "HIST1H3D"),

  # DZ early G2M phase
  DZ_early_G2M = c("BUB1", "AURKA", "CDK1"),

  # DZ late G2M phase
  DZ_late_G2M = c("CCNB1", "CCNB2", "CDC20"),

  # DZ cell‑cycle exit
  DZ_exit = c("HMGN1", "HMGN2", "STMN1", "BIRC5"),

  # DZ–LZ transition
  DZ_LZ_transition = c("CD83", "LMO2"),

  # LZ core
  LZ_core = c("BCL2A1", "BCL2L1", "TRAF1", "TRAF4", "EBI3"),

  # LZ–DZ re‑entry
  LZ_DZ_reentry = c("MYC", "MIR155HG", "NFKB1", "NFKB2", "NFKBIA", "NFKBID", "RELB", "BATF"),

  # LZ proliferative
  LZ_prolif = c("MKI67", "TOP2A"),

  # LZ–DZ proliferative transition
  LZ_DZ_prolif_transition = c("TUBA1B", "TUBB")  # representative tubulins
)

for (g in features) {
  print(
    FeaturePlot(
      gc_b,
      features  = g,
      reduction = "umap.gcB",
      raster    = FALSE,
      label     = TRUE,
      split.by  = "tissue"
    ) #+ ggtitle(paste("Naive marker:", g))
  )
}

Warning: The following requested variables were not found: HIST2H2AH, HIST1H3D

Warning: The following requested variables were not found: HMGN2

Warning: The following requested variables were not found: MIR155HG

DimPlot(gc_b, split.by = "Phase", reduction = "umap.gcB", label = TRUE, label.size = 2.5, repel = TRUE, raster = FALSE )
table(gc_b$Phase, gc_b$cluster)

Subclustering Non-cycling GCB

gc_b <- FindSubCluster(gc_b, cluster = "Non-Cycling GCB", graph.name = "RNA_snn", resolution = 0.1, subcluster.name = "GCBC")
Modularity Optimizer version 1.3.0 by Ludo Waltman and Nees Jan van Eck

Number of nodes: 60662
Number of edges: 1511393

Running Louvain algorithm...
Maximum modularity in 10 random starts: 0.9255
Number of communities: 9
Elapsed time: 13 seconds
3 singletons identified. 6 final clusters.
Idents(gc_b) <- gc_b$GCBC
gc_b <- FindSubCluster(gc_b, cluster = "Cycling GCB", graph.name = "RNA_snn", resolution = 0.1, subcluster.name = "GCBC")
Modularity Optimizer version 1.3.0 by Ludo Waltman and Nees Jan van Eck

Number of nodes: 44097
Number of edges: 1297278

Running Louvain algorithm...
Maximum modularity in 10 random starts: 0.9316
Number of communities: 22
Elapsed time: 7 seconds
18 singletons identified. 4 final clusters.
Idents(gc_b) <- gc_b$GCBC
#gc_b$cell_labels_l2 <- Idents(gc_b)

Renaming Idents

Idents(gc_b) <- factor(Idents(gc_b), levels = c("Non-Cycling GCB_0","Non-Cycling GCB_1","Non-Cycling GCB_2","Non-Cycling GCB_3","Non-Cycling GCB_4","Non-Cycling GCB_5", "Cycling GCB_0", "Cycling GCB_1", "Cycling GCB_2", "Cycling GCB_3"))
new.cluster.ids <- c(
  "Non-Cycling GCB_0",
  "Non-Cycling GCB_1",
  "Non-Cycling GCB_2",
    "Non-Cycling GCB_3",
  "Cycling GCB_0",
  "Cycling GCB_2",
  "Cycling GCB_0",
    "Cycling GCB_1",
  "Cycling GCB_2",
  "Cycling GCB_3"
)
names(new.cluster.ids) <- levels(gc_b)
gc_b<- RenameIdents(gc_b, new.cluster.ids)
gc_b$cell_labels_l2 <- Idents(gc_b)
gc_b$cell_labels_l3 <- Idents(gc_b)
gc_b$GCBC <- Idents(gc_b)
DimPlot(gc_b, reduction = "umap.gcB", group.by = "GCBC", label = TRUE, label.size = 3.5, repel = TRUE, raster = FALSE )

DE features of Germinal Center B cells

The marker genes for this Germinal Center B cell subclustering can be found here-

GCB_population_subclusters

gc()
             used    (Mb) gc trigger    (Mb) limit (Mb)   max used    (Mb)
Ncells    4774295   255.0   10139294   541.5         NA   10139294   541.5
Vcells 4565392107 34831.2 7297998592 55679.4     163840 6081594399 46398.9
paed_sub.markers <- FindAllMarkers(
  gc_b,
  only.pos = TRUE,
  min.pct = 0.25,
  logfc.threshold = 0.25, features = features.no.mt
)
Calculating cluster Non-Cycling GCB_0
Calculating cluster Non-Cycling GCB_1
Calculating cluster Non-Cycling GCB_2
Calculating cluster Non-Cycling GCB_3
Calculating cluster Cycling GCB_0
Calculating cluster Cycling GCB_2
Calculating cluster Cycling GCB_1
Calculating cluster Cycling GCB_3
gc()
             used    (Mb) gc trigger    (Mb) limit (Mb)   max used    (Mb)
Ncells    4779578   255.3   10139294   541.5         NA   10139294   541.5
Vcells 4565465678 34831.8 8757678310 66815.8     163840 8744976459 66718.9
top10 <- paed_sub.markers %>%
    group_by(cluster) %>%
    top_n(n = 10, wt = avg_log2FC) %>%
    ungroup() %>%
    distinct(gene, .keep_all = TRUE) %>%
    arrange(cluster, desc(avg_log2FC))

best.wilcox.gene.per.cluster <- paed_sub.markers |>
  group_by(cluster) |>
  slice_max(avg_log2FC, n = 1) |>
  select(cluster, gene)

best.wilcox.gene.per.cluster
# A tibble: 8 × 2
# Groups:   cluster [8]
  cluster           gene    
  <fct>             <chr>   
1 Non-Cycling GCB_0 FCER2   
2 Non-Cycling GCB_1 WNK2    
3 Non-Cycling GCB_2 PLAC8   
4 Non-Cycling GCB_3 CCR5    
5 Cycling GCB_0     HIST1H1A
6 Cycling GCB_2     GAS2L3  
7 Cycling GCB_1     DTL     
8 Cycling GCB_3     TUBA1C  
FeaturePlot(
  gc_b,
  features = best.wilcox.gene.per.cluster$gene,
  reduction = "umap.gcB",
  raster = FALSE,
  ncol = 1,
  label = TRUE,
  split.by = "tissue"
)

gc_b <- ScaleData(
  gc_b,
  features = unique(top10$gene),
  assay = "RNA",
  verbose = FALSE
)
Warning: Different features in new layer data than already exists for
scale.data
DoHeatmap(gc_b, features = unique(top10$gene), angle = 90) + NoLegend()

cluster_colors <- paletteer::paletteer_d("pals::glasbey")[factor(top10$cluster)]

DotPlot(gc_b,    
        features = unique(top10$gene),
        #group.by = opt_res,
        cols = c("azure1", "blueviolet"),
        dot.scale = 3, assay = "RNA") +
    RotatedAxis() +
    FontSize(y.text = 8, x.text = 12) +
    labs(y = element_blank(), x = element_blank()) +
    coord_flip() +
    theme(axis.text.y = element_text(color = cluster_colors)) +
    ggtitle("Top 10 marker genes per cluster (Seurat)")
Warning: Vectorized input to `element_text()` is not officially supported.
ℹ Results may be unexpected or may change in future versions of ggplot2.

table(gc_b$tissue)

           Adenoids                 BAL Bronchial_brushings     Nasal_brushings 
              43433                 473                 649                1936 
            Tonsils 
              58268 
table(gc_b$tissue, gc_b$GCBC)
                     
                      Non-Cycling GCB_0 Non-Cycling GCB_1 Non-Cycling GCB_2
  Adenoids                        18403              5655               877
  BAL                               237                49                 8
  Bronchial_brushings               158                31                12
  Nasal_brushings                   962               170                61
  Tonsils                         23704              9006              1044
                     
                      Non-Cycling GCB_3 Cycling GCB_0 Cycling GCB_2
  Adenoids                            1          5926          3646
  BAL                                31            57            16
  Bronchial_brushings               136           149            22
  Nasal_brushings                    77           230            94
  Tonsils                            36          7917          5146
                     
                      Cycling GCB_1 Cycling GCB_3
  Adenoids                     6288          2637
  BAL                            32            43
  Bronchial_brushings            77            64
  Nasal_brushings               176           166
  Tonsils                      7247          4168
df_counts <- gc_b@meta.data |>
  count(GCBC, tissue, name = "n")
df_totals <- df_counts |>
  group_by(GCBC) |>
  summarise(total = sum(n), .groups = "drop")

ggplot(df_counts, aes(x = GCBC, y = n, fill = tissue)) +
  geom_bar(stat = "identity", position = "stack") +
  geom_text(data = df_totals,
            aes(x = GCBC, y = total, label = total),
            vjust = -0.3, size = 3, inherit.aes = FALSE) +
  theme_minimal() +
  theme(axis.text.x = element_text(angle = 90, hjust = 1)) +
  labs(x = "clusters after subclustering",
       y = "Number of cells",
       fill = "Tissue")

marker_counts <- paed_sub.markers %>%
    filter(avg_log2FC > 1 & p_val_adj < 0.05) %>%  
    count(cluster, name = "n_markers") %>%
    arrange(desc(n_markers))

print(marker_counts)
            cluster n_markers
1 Non-Cycling GCB_3       764
2     Cycling GCB_0       426
3     Cycling GCB_2       307
4     Cycling GCB_3       291
5 Non-Cycling GCB_2       280
6     Cycling GCB_1       196
7 Non-Cycling GCB_0       162
8 Non-Cycling GCB_1       133
ggplot(marker_counts, aes(x = reorder(cluster, n_markers), y = n_markers)) +
    geom_col(fill = "steelblue", alpha = 0.8) +
    coord_flip() +
    labs(title = "High-confidence markers per subcluster (logFC > 1)",
         x = "Subcluster", y = "Number of markers") +
    theme_minimal()

out_markers <- here("output",
            "CSV_v3","B_cell_lineage",
            paste("Marker_genes_Reclustered_GCB.",opt_res, sep = ""))

dir.create(out_markers, recursive = TRUE, showWarnings = FALSE)

for (cl in unique(paed_sub.markers$cluster)) {
  cluster_data <- paed_sub.markers %>% dplyr::filter(cluster == cl)
  file_name <- here(out_markers, paste0("G000231_Neeland_", cl, ".csv"))
  if (!file.exists(file_name)) {
  write.csv(cluster_data, file = file_name)
  }
}

DE markers/gene between GCB sub-clusters

Non-cycling GCB cells

gc_ids <- c("Non-Cycling GCB_0","Non-Cycling GCB_1","Non-Cycling GCB_2","Non-Cycling GCB_3")

res_all <- run_de_and_vln(
  gc_b,
  gc_ids,
  title_prefix = "Non-Cycling GCB",
  run_one_vs_all = TRUE,
  run_pairwise = TRUE,
  print_table = TRUE
)

Non-Cycling GCB : Non-Cycling GCB_0 vs_rest

Top 50 markers: Non-Cycling GCB_0 vs_rest
p_val avg_log2FC pct.1 pct.2 p_val_adj
SEMA7A 0 2.445011 0.662 0.174 0
DHRS9 0 2.443844 0.537 0.085 0
PTPN6 0 1.360924 0.905 0.468 0
LMO2 0 2.179688 0.913 0.498 0
ADGRG5 0 1.833174 0.703 0.295 0
FCRL5 0 2.187696 0.582 0.202 0
CR2 0 1.670004 0.703 0.326 0
TMC8 0 1.477650 0.768 0.395 0
PLEK 0 1.446334 0.756 0.384 0
ITGB2 0 1.546695 0.704 0.332 0
CAMK1 0 2.701002 0.528 0.158 0
CD72 0 1.570655 0.815 0.447 0
PARP14 0 1.741189 0.626 0.259 0
SNX22 0 1.682805 0.574 0.213 0
CIITA 0 1.765476 0.869 0.508 0
RASGRP1 0 1.813386 0.532 0.177 0
IER2 0 1.314060 0.715 0.380 0
SNX29 0 1.469083 0.635 0.301 0
BCAR3 0 1.551409 0.504 0.180 0
LPCAT1 0 1.404621 0.797 0.474 0
CD83 0 2.030048 0.799 0.477 0
HVCN1 0 1.142694 0.731 0.410 0
CYTH4 0 1.416476 0.524 0.206 0
RELT 0 1.375363 0.622 0.306 0
IFI30 0 1.189907 0.896 0.581 0
LCK 0 1.311037 0.598 0.289 0
SERPINA9 0 1.287419 0.722 0.415 0
SLAMF1 0 2.496763 0.406 0.100 0
BPNT1 0 1.225050 0.774 0.473 0
HIVEP3 0 2.306393 0.389 0.091 0
ZNF318 0 1.151377 0.705 0.407 0
TTLL3 0 1.258795 0.752 0.457 0
SYTL1 0 1.123089 0.690 0.397 0
P2RY12 0 1.933286 0.445 0.156 0
EHBP1L1 0 1.114066 0.680 0.393 0
CALR 0 1.397983 0.525 0.241 0
DNAJC10 0 1.380350 0.886 0.604 0
SLC7A6 0 1.171491 0.703 0.422 0
IL21R 0 1.133317 0.761 0.482 0
GEN1 0 1.347695 0.671 0.394 0
ERP44 0 1.223878 0.670 0.396 0
SIGLEC10 0 1.698436 0.465 0.191 0
GMDS 0 1.590202 0.471 0.199 0
PIP4K2A 0 1.023701 0.709 0.437 0
HTR3A 0 1.259914 0.551 0.280 0
PHF6 0 1.307864 0.743 0.472 0
ALCAM 0 2.063876 0.381 0.111 0
CCDC88B 0 1.056524 0.607 0.337 0
CEP85L 0 1.172535 0.566 0.297 0
NIBAN1 0 1.103672 0.605 0.337 0

Non-Cycling GCB : Non-Cycling GCB_1 vs_rest

Top 50 markers: Non-Cycling GCB_1 vs_rest
p_val avg_log2FC pct.1 pct.2 p_val_adj
AICDA 0 2.252572 0.909 0.353 0
CXCR4 0 2.131657 0.985 0.569 0
PIM1 0 1.770124 0.701 0.293 0
SLC30A4 0 1.663007 0.757 0.356 0
BCR 0 2.327738 0.580 0.191 0
USP53 0 3.041568 0.495 0.122 0
ST14 0 1.639492 0.772 0.408 0
ZNF101 0 1.687975 0.732 0.368 0
KANK2 0 3.934386 0.399 0.039 0
SLC2A5 0 1.767687 0.808 0.453 0
RUBCNL 0 1.934077 0.808 0.458 0
PRDM15 0 1.742024 0.620 0.271 0
FOXP1 0 1.862559 0.846 0.501 0
MME 0 1.688515 0.894 0.552 0
PEG10 0 3.213279 0.409 0.068 0
MDM2 0 1.686596 0.729 0.395 0
PIM2 0 1.453240 0.706 0.376 0
IFT57 0 1.705058 0.673 0.344 0
STMN1 0 2.967421 0.431 0.105 0
HRK 0 2.332611 0.448 0.123 0
SUSD3 0 1.399938 0.896 0.576 0
PEX5 0 1.368056 0.656 0.340 0
ABCA1 0 2.236008 0.430 0.122 0
KMT2A 0 1.611985 0.872 0.570 0
S100A10 0 1.143520 0.755 0.454 0
RNF144B 0 1.330088 0.668 0.369 0
CHMP7 0 1.446216 0.838 0.539 0
ANK1 0 1.488092 0.583 0.288 0
LSM10 0 1.390769 0.810 0.516 0
FAM241A 0 2.103632 0.462 0.169 0
SLC35E3 0 1.844576 0.450 0.165 0
JCHAIN 0 1.061801 0.881 0.597 0
HMGB2 0 2.772198 0.576 0.296 0
TCF3 0 1.186161 0.817 0.541 0
RASSF6 0 1.553857 0.402 0.127 0
STK40 0 1.525963 0.918 0.644 0
CDK13 0 1.347986 0.795 0.522 0
MFHAS1 0 1.278165 0.616 0.346 0
CSNK1E 0 1.952974 0.458 0.190 0
MYBL2 0 1.198345 0.794 0.527 0
TACC3 0 1.645283 0.526 0.262 0
WNK2 0 3.566791 0.289 0.031 0
BLOC1S6 0 1.157909 0.664 0.406 0
NKX6-3 0 1.921777 0.362 0.107 0
ORAI2 0 1.346144 0.800 0.547 0
RBBP7 0 1.208163 0.643 0.393 0
TP53INP1 0 1.378061 0.611 0.365 0
RNF19B 0 1.121367 0.630 0.390 0
NT5C2 0 1.207401 0.644 0.409 0
SH3TC1 0 1.457741 0.487 0.253 0

Non-Cycling GCB : Non-Cycling GCB_2 vs_rest

Top 50 markers: Non-Cycling GCB_2 vs_rest
p_val avg_log2FC pct.1 pct.2 p_val_adj
PLAC8 0 7.8471514 0.451 0.057 0
VIM 0 4.1281460 0.631 0.252 0
BHLHE41 0 6.8537099 0.343 0.036 0
CAPG 0 5.6682056 0.388 0.082 0
BHLHE40 0 6.4806394 0.296 0.031 0
PREX1 0 4.9893117 0.333 0.096 0
TNFRSF13B 0 4.7345596 0.312 0.077 0
RAB31 0 7.1980962 0.252 0.019 0
UBA52 0 1.3787967 0.850 0.916 0
TMSB10 0 1.6733976 0.804 0.864 0
EEF2 0 1.0554863 0.927 0.978 0
ARHGDIB 0 1.0744431 0.927 0.975 0
RAC2 0 1.5165648 0.904 0.947 0
ACTG1 0 1.0445176 0.959 0.987 0
EEF1G 0 1.7549086 0.845 0.872 0
PFN1 0 1.2803690 0.974 0.984 0
TMSB4X 0 1.4664248 0.978 0.987 0
ACTB 0 1.2668537 1.000 0.994 0
LSP1 0 1.6651880 0.823 0.927 0
CFL1 0 1.0474128 0.896 0.960 0
KCTD12 0 4.8580190 0.261 0.065 0
COTL1 0 1.8546389 0.744 0.806 0
RACK1 0 1.1529078 0.807 0.915 0
PSME1 0 1.8150128 0.694 0.739 0
LITAF 0 3.2441202 0.503 0.327 0
ANXA6 0 2.5304799 0.598 0.527 0
HCLS1 0 0.9614109 0.798 0.939 0
CD44 0 3.2661667 0.446 0.248 0
MSN 0 1.7429472 0.672 0.752 0
CCDC50 0 3.7158297 0.389 0.210 0
PTPN1 0 2.8826505 0.539 0.439 0
SH3BGRL3 0 1.7397776 0.659 0.741 0
BANK1 0 2.0810093 0.625 0.634 0
CNN2 0 1.0417530 0.760 0.895 0
ARPC1B 0 1.3109168 0.672 0.784 0
CORO1A 0 0.5476379 0.935 0.992 0
PTPN6 0 1.0229926 0.734 0.782 0
CAPZB 0 1.3331232 0.662 0.809 0
PLEKHO1 0 2.3091266 0.541 0.507 0
TRBC2 0 3.2455347 0.385 0.227 0
VASP 0 1.2555004 0.686 0.796 0
TOMM7 0 1.7505626 0.600 0.670 0
FTH1 0 1.7033469 0.615 0.708 0
PSMB9 0 1.7928487 0.569 0.614 0
SASH3 0 1.0550057 0.727 0.910 0
IFITM2 0 3.2453784 0.325 0.200 0
TESC 0 3.2080982 0.281 0.162 0
IL16 0 1.1803700 0.673 0.824 0
ENO1 0 1.8055954 0.554 0.635 0
DTX3L 0 3.2905141 0.313 0.201 0

Non-Cycling GCB : Non-Cycling GCB_3 vs_rest

Top 50 markers: Non-Cycling GCB_3 vs_rest
p_val avg_log2FC pct.1 pct.2 p_val_adj
TYMS 0 5.225240 0.851 0.055 0
TNFRSF13B 0 6.125881 0.868 0.081 0
FLNA 0 5.266521 0.879 0.107 0
CAPG 0 5.361603 0.847 0.089 0
ASF1B 0 5.761061 0.769 0.026 0
UHRF1 0 5.596837 0.790 0.053 0
EMP3 0 5.419086 0.819 0.124 0
TK1 0 4.593733 0.747 0.062 0
PREX1 0 4.839204 0.783 0.101 0
TCF19 0 5.021420 0.715 0.041 0
CDT1 0 4.061909 0.751 0.080 0
LY6E 0 5.565437 0.769 0.105 0
ITGAX 0 7.125384 0.705 0.042 0
BHLHE41 0 4.313481 0.698 0.043 0
BHLHE40 0 5.456861 0.690 0.037 0
KIFC1 0 4.672234 0.690 0.045 0
KCTD12 0 4.741665 0.712 0.068 0
ZWINT 0 4.948260 0.669 0.038 0
ARID3A 0 4.673324 0.665 0.040 0
MYO1F 0 6.292452 0.641 0.023 0
S100A4 0 5.626913 0.662 0.046 0
FCRL4 0 6.714031 0.662 0.048 0
AURKB 0 4.918208 0.648 0.044 0
CAPN2 0 6.198728 0.619 0.020 0
IL2RB 0 5.588775 0.648 0.049 0
FOXM1 0 5.462251 0.584 0.021 0
ESPL1 0 5.286797 0.577 0.020 0
TNFRSF1B 0 7.706513 0.584 0.031 0
PKMYT1 0 7.880483 0.544 0.004 0
DUSP4 0 5.894027 0.559 0.021 0
CDCA5 0 6.698777 0.537 0.008 0
CIT 0 4.405950 0.559 0.030 0
RAB31 0 4.337839 0.548 0.024 0
OAS3 0 5.286467 0.577 0.059 0
CALHM2 0 5.318743 0.544 0.029 0
RIN3 0 5.339045 0.559 0.048 0
GPR183 0 6.370679 0.559 0.054 0
CDC45 0 6.182065 0.512 0.009 0
ZBTB32 0 5.467796 0.523 0.023 0
KIF2C 0 4.860372 0.516 0.022 0
RRM2 0 5.705373 0.516 0.022 0
CDCA8 0 3.994105 0.527 0.037 0
E2F2 0 6.194287 0.498 0.010 0
HCK 0 5.297942 0.509 0.023 0
CCNF 0 4.631579 0.502 0.033 0
TBC1D9 0 5.483757 0.495 0.034 0
IMPA2 0 3.938266 0.498 0.038 0
WFDC2 0 6.628162 0.477 0.017 0
FUT7 0 5.205117 0.488 0.029 0
RAD54L 0 6.153866 0.466 0.008 0

Non-Cycling GCB : Non-Cycling GCB_0 vs Non-Cycling GCB_1

Top 50 markers: Non-Cycling GCB_0 vs Non-Cycling GCB_1
p_val avg_log2FC pct.1 pct.2 p_val_adj
SEMA7A 0 3.154561 0.662 0.149 0
PTPN6 0 2.286895 0.905 0.423 0
DHRS9 0 3.969974 0.537 0.063 0
LMO2 0 2.541670 0.913 0.504 0
ADGRG5 0 1.882328 0.703 0.309 0
FCRL5 0 2.458953 0.582 0.200 0
PLEK 0 1.928068 0.756 0.377 0
PARP14 0 1.972400 0.626 0.261 0
SNX22 0 1.983134 0.574 0.211 0
CAMK1 0 2.860468 0.528 0.168 0
ITGB2 0 1.639091 0.704 0.344 0
TMC8 0 1.552260 0.768 0.414 0
CIITA 0 1.833976 0.869 0.519 0
RASGRP1 0 1.954251 0.532 0.185 0
CR2 0 1.516725 0.703 0.363 0
CD72 0 1.543075 0.815 0.477 0
IER2 0 1.655984 0.715 0.378 0
BCAR3 0 1.964129 0.504 0.176 0
CYTH4 0 1.683656 0.524 0.202 0
IFI30 0 1.683998 0.896 0.580 0
SNX29 0 1.449568 0.635 0.322 0
HIVEP3 0 2.754198 0.389 0.085 0
SLAMF1 0 2.583546 0.406 0.104 0
HVCN1 0 1.123965 0.731 0.433 0
CD83 0 2.008079 0.799 0.509 0
RELT 0 1.288443 0.622 0.332 0
LPCAT1 0 1.399501 0.797 0.509 0
ZMIZ1 0 1.565660 0.491 0.205 0
LCK 0 1.313236 0.598 0.317 0
DDIT4 0 1.777197 0.443 0.167 0
BCL2A1 0 2.490181 0.500 0.226 0
P2RY12 0 1.864738 0.445 0.172 0
CALR 0 1.421801 0.525 0.254 0
SYTL1 0 1.106694 0.690 0.422 0
EHBP1L1 0 1.176820 0.680 0.414 0
SIGLEC10 0 1.731005 0.465 0.199 0
PIP4K2A 0 1.319717 0.709 0.444 0
PLD4 0 4.243457 0.293 0.028 0
ALCAM 0 2.080518 0.381 0.118 0
BPNT1 0 1.224585 0.774 0.513 0
GMDS 0 1.745203 0.471 0.210 0
INF2 0 1.657713 0.415 0.155 0
FCER2 0 2.857043 0.335 0.075 0
IQSEC1 0 1.711849 0.440 0.182 0
IL7 0 2.636745 0.322 0.065 0
LGALS9 0 1.553469 0.452 0.195 0
CCDC88B 0 1.131797 0.607 0.352 0
NAB2 0 2.544026 0.334 0.079 0
JAK3 0 1.029081 0.649 0.394 0
SERPINA9 0 1.119300 0.722 0.470 0

Non-Cycling GCB : Non-Cycling GCB_0 vs Non-Cycling GCB_2

Top 50 markers: Non-Cycling GCB_0 vs Non-Cycling GCB_2
p_val avg_log2FC pct.1 pct.2 p_val_adj
SYVN1 0 4.127659 0.918 0.102 0
SEL1L3 0 3.886095 0.973 0.169 0
RBM6 0 3.613543 0.885 0.084 0
MICAL3 0 3.429060 0.941 0.142 0
TMEM131L 0 3.687252 0.948 0.150 0
NEIL1 0 4.512952 0.872 0.078 0
DNAJC10 0 3.684824 0.886 0.097 0
LBR 0 3.245323 0.899 0.115 0
LENG8 0 3.633000 0.875 0.096 0
SYNE2 0 3.067660 0.933 0.155 0
P2RX5 0 3.112826 0.945 0.174 0
CD38 0 4.423473 0.830 0.061 0
PTPRC 0 3.475559 0.902 0.139 0
RSRP1 0 3.161706 0.857 0.098 0
EDEM1 0 2.974379 0.914 0.156 0
LPP 0 3.757201 0.831 0.076 0
PILRB 0 4.672972 0.770 0.025 0
CD40 0 3.248773 0.950 0.205 0
ARGLU1 0 2.548183 0.896 0.152 0
FCRL1 0 4.273117 0.807 0.064 0
PAG1 0 3.097913 0.862 0.119 0
HMCES 0 2.251622 0.904 0.167 0
S1PR2 0 3.240704 0.823 0.089 0
FCRL2 0 4.372901 0.811 0.078 0
CLEC2D 0 3.316602 0.867 0.134 0
TTLL3 0 4.969423 0.752 0.021 0
AMFR 0 3.029647 0.926 0.202 0
BCL6 0 2.407539 0.911 0.188 0
CCDC88A 0 2.688342 0.863 0.140 0
TMC6 0 3.653726 0.834 0.112 0
ATP8A1 0 4.633623 0.764 0.044 0
SREBF2 0 2.741568 0.868 0.148 0
P2RY8 0 3.622988 0.783 0.063 0
SEMA4A 0 3.941793 0.772 0.054 0
MDM4 0 2.818892 0.957 0.241 0
ATP2A3 0 3.239464 0.962 0.248 0
MEF2B 0 1.765477 0.963 0.250 0
LNPEP 0 3.211371 0.819 0.112 0
MCTP2 0 4.402194 0.738 0.031 0
SGPP1 0 2.769522 0.825 0.121 0
ELL3 0 2.295767 0.923 0.222 0
AFF2 0 2.298675 0.841 0.141 0
FCRLA 0 2.680658 0.844 0.147 0
SORL1 0 2.443472 0.816 0.119 0
NLK 0 2.771764 0.801 0.106 0
NKTR 0 3.506520 0.750 0.056 0
NUGGC 0 3.554317 0.753 0.059 0
LUC7L3 0 2.193545 0.870 0.177 0
LAT2 0 2.307509 0.874 0.183 0
ASH1L 0 3.532633 0.766 0.078 0

Non-Cycling GCB : Non-Cycling GCB_0 vs Non-Cycling GCB_3

Top 50 markers: Non-Cycling GCB_0 vs Non-Cycling GCB_3
p_val avg_log2FC pct.1 pct.2 p_val_adj
MARCKSL1 0 5.309273 0.972 0.295 0
MEF2B 0 5.827558 0.963 0.107 0
LRMP 0 3.735241 0.979 0.523 0
CD22 0 2.603050 0.993 0.811 0
SEL1L3 0 3.491660 0.973 0.448 0
CD79B 0 2.650675 0.988 0.722 0
P2RX5 0 4.286110 0.945 0.167 0
RGS13 0 4.793354 0.922 0.149 0
HMCES 0 5.933410 0.904 0.085 0
KLHL6 0 2.921519 0.969 0.687 0
ELL3 0 4.380318 0.923 0.260 0
BCL6 0 4.780875 0.911 0.149 0
DTX1 0 4.439041 0.920 0.057 0
TCL1A 0 4.772439 0.911 0.075 0
CD37 0 2.099184 0.990 0.811 0
NEIL1 0 5.432324 0.872 0.068 0
DNAJC10 0 4.036875 0.886 0.228 0
AFF2 0 5.306030 0.841 0.071 0
CCDC88A 0 4.460547 0.863 0.203 0
IRF8 0 1.585126 0.994 0.875 0
MS4A1 0 1.727996 0.994 0.875 0
LAPTM5 0 1.353114 0.995 0.972 0
RFTN1 0 1.910495 0.962 0.705 0
LPP 0 4.502295 0.831 0.192 0
PLEKHF2 0 2.619325 0.904 0.434 0
SEMA4A 0 6.387262 0.772 0.014 0
SYNE2 0 2.426322 0.933 0.651 0
SYVN1 0 2.245679 0.918 0.616 0
MDM4 0 1.837577 0.957 0.701 0
S1PR2 0 3.743979 0.823 0.206 0
TMEM131L 0 1.902408 0.948 0.690 0
NUGGC 0 6.779373 0.753 0.018 0
AMFR 0 2.206393 0.926 0.633 0
FNBP1 0 1.703010 0.957 0.719 0
SWAP70 0 1.620494 0.964 0.790 0
CD79A 0 1.213295 0.994 0.911 0
LMO2 0 2.425182 0.913 0.573 0
CD40 0 1.932160 0.950 0.648 0
UBE2J1 0 2.199236 0.924 0.687 0
GGA2 0 1.547781 0.975 0.858 0
BCL7A 0 3.602122 0.809 0.192 0
MCTP2 0 6.205765 0.738 0.032 0
TMEM123 0 3.942888 0.781 0.149 0
SERPINA9 0 7.347111 0.722 0.014 0
ETS1 0 1.796963 0.935 0.616 0
MYO1E 0 2.072710 0.914 0.580 0
GNA13 0 2.383569 0.868 0.441 0
POU2AF1 0 1.607699 0.966 0.794 0
FGD6 0 5.925968 0.717 0.036 0
NCOA3 0 2.152699 0.897 0.527 0

Non-Cycling GCB : Non-Cycling GCB_1 vs Non-Cycling GCB_2

Top 50 markers: Non-Cycling GCB_1 vs Non-Cycling GCB_2
p_val avg_log2FC pct.1 pct.2 p_val_adj
MME 0 5.638969 0.894 0.030 0
NEIL1 0 4.795502 0.931 0.078 0
CD38 0 4.988370 0.912 0.061 0
AICDA 0 2.766739 0.909 0.088 0
SYNE2 0 3.514378 0.973 0.155 0
SUSD3 0 3.897838 0.896 0.083 0
SEL1L3 0 4.067398 0.979 0.169 0
KMT2A 0 4.456662 0.872 0.068 0
CLEC2D 0 3.968331 0.938 0.134 0
EDEM1 0 3.512997 0.958 0.156 0
JCHAIN 0 4.697389 0.881 0.088 0
SLC2A5 0 6.676591 0.808 0.017 0
SYVN1 0 3.819415 0.891 0.102 0
LPP 0 3.759378 0.863 0.076 0
LBR 0 3.198193 0.890 0.115 0
P2RX5 0 3.159254 0.946 0.174 0
BCL7A 0 2.473539 0.928 0.162 0
SEC14L1 0 2.610884 0.951 0.188 0
TMEM131L 0 3.236376 0.912 0.150 0
RBM6 0 3.363377 0.841 0.084 0
BCL6 0 2.429295 0.941 0.188 0
ST14 0 5.714503 0.772 0.020 0
CXCR4 0 4.246837 0.985 0.235 0
P2RY8 0 3.729705 0.808 0.063 0
DCAF12 0 2.331425 0.894 0.149 0
AFF2 0 2.556052 0.884 0.141 0
RSRP1 0 3.142111 0.839 0.098 0
DTX1 0 2.533790 0.982 0.243 0
SLC30A4 0 5.381226 0.757 0.019 0
PTPRC 0 3.208588 0.876 0.139 0
FAM214A 0 3.443963 0.883 0.146 0
CD27 0 3.123966 0.889 0.155 0
S1PR2 0 3.161887 0.820 0.089 0
MYBL1 0 4.486826 0.759 0.029 0
MDM4 0 3.054775 0.969 0.241 0
TMEM156 0 3.353434 0.832 0.104 0
ARGLU1 0 2.520028 0.879 0.152 0
AMFR 0 2.915579 0.928 0.202 0
ELL3 0 2.270100 0.947 0.222 0
NUGGC 0 3.523413 0.780 0.059 0
ST6GAL1 0 2.849034 0.939 0.218 0
OS9 0 3.231786 0.824 0.107 0
KLHL5 0 2.159774 0.869 0.155 0
MEF2B 0 1.459807 0.963 0.250 0
BACH2 0 3.385106 0.806 0.095 0
FCRL1 0 4.288772 0.774 0.064 0
HMCES 0 1.830274 0.871 0.167 0
SGPP1 0 2.730377 0.823 0.121 0
FCRL2 0 4.090242 0.778 0.078 0
USP34 0 2.438757 0.926 0.226 0

Non-Cycling GCB : Non-Cycling GCB_1 vs Non-Cycling GCB_3

Top 50 markers: Non-Cycling GCB_1 vs Non-Cycling GCB_3
p_val avg_log2FC pct.1 pct.2 p_val_adj
TCL1A 0 5.663832 0.981 0.075 0
DTX1 0 5.304685 0.982 0.057 0
CD79B 0 3.237999 0.994 0.722 0
MEF2B 0 5.521888 0.963 0.107 0
SEL1L3 0 3.672963 0.979 0.448 0
ELL3 0 4.354651 0.947 0.260 0
BCL6 0 4.802631 0.941 0.149 0
NEIL1 0 5.714875 0.931 0.068 0
IRF8 0 1.961999 0.999 0.875 0
P2RX5 0 4.332537 0.946 0.167 0
UBE2J1 0 2.775523 0.973 0.687 0
EZR 0 1.880446 0.997 0.943 0
SEC14L1 0 3.459511 0.951 0.399 0
SYNE2 0 2.873040 0.973 0.651 0
BCL7A 0 4.285475 0.928 0.192 0
MME 0 6.512223 0.894 0.025 0
CD37 0 2.290212 0.991 0.811 0
LAPTM5 0 1.485041 0.998 0.972 0
AFF2 0 5.563407 0.884 0.071 0
DCAF12 0 4.861703 0.894 0.146 0
POU2AF1 0 2.135238 0.989 0.794 0
HMCES 0 5.512062 0.871 0.085 0
ETS1 0 2.219995 0.970 0.616 0
NCOA3 0 2.696817 0.943 0.527 0
AICDA 0 3.687521 0.909 0.160 0
LRMP 0 2.872831 0.949 0.523 0
JCHAIN 0 4.406718 0.881 0.100 0
CLIC4 0 3.173392 0.909 0.363 0
CD38 0 3.314316 0.912 0.256 0
RGS13 0 3.935465 0.881 0.149 0
MDM4 0 2.073460 0.969 0.701 0
MARCKSL1 0 3.803797 0.890 0.295 0
CLEC2D 0 2.706076 0.938 0.441 0
LPP 0 4.504472 0.863 0.192 0
USP34 0 2.575004 0.926 0.591 0
SLC2A5 0 6.308102 0.808 0.043 0
FOXO1 0 3.438640 0.873 0.246 0
SUSD3 0 3.125432 0.896 0.320 0
KLHL5 0 3.171269 0.869 0.342 0
EDEM1 0 2.011967 0.958 0.683 0
NUGGC 0 6.748469 0.780 0.018 0
BACH2 0 5.042626 0.806 0.114 0
FNBP1 0 1.881458 0.960 0.719 0
CD27 0 2.982137 0.889 0.320 0
ST6GAL1 0 2.237261 0.939 0.605 0
TERF2 0 2.486743 0.904 0.495 0
GNA13 0 2.502970 0.897 0.441 0
MYBL1 0 7.306966 0.759 0.018 0
ST14 0 5.515004 0.772 0.082 0
GGA2 0 1.495046 0.983 0.858 0

Non-Cycling GCB : Non-Cycling GCB_2 vs Non-Cycling GCB_3

Top 50 markers: Non-Cycling GCB_2 vs Non-Cycling GCB_3
p_val avg_log2FC pct.1 pct.2 p_val_adj
RACK1 0 1.8887705 0.807 0.829 0
UBA52 0 1.2840342 0.850 0.922 0
ARHGDIB 0 1.0254284 0.927 0.986 0
TMSB4X 0 0.7122633 0.978 1.000 0
EEF1G 0 1.3583392 0.845 0.907 0
EEF2 0 0.9136063 0.927 0.972 0
OAZ1 0 0.7410844 0.962 0.996 0
ACTB 0 0.5898635 1.000 0.996 0
RAC2 0 0.9410424 0.904 0.975 0
ACTG1 0 0.8540465 0.959 0.986 0
ETS1 0 1.9460849 0.653 0.616 0
LCP1 0 0.8948083 0.911 0.961 0
TTLL12 0 0.5298232 0.076 0.299 0
RAC1 0 0.5156014 0.114 0.374 0
UCP2 0 1.1945254 0.777 0.918 0
USP5 0 0.6098675 0.117 0.374 0
IP6K1 0 0.5865592 0.105 0.345 0
BOP1 0 0.6071143 0.093 0.313 0
LAGE3 0 0.5711725 0.119 0.370 0
CAMKK2 0 0.6634295 0.097 0.320 0
POLR2H 0 0.6883419 0.137 0.409 0
PDCD5 0 0.5026527 0.108 0.342 0
HCLS1 0 0.8413775 0.798 0.957 0
NSUN2 0 0.5232221 0.172 0.477 0
PRPF4 0 0.5485451 0.115 0.352 0
MTLN 0 0.6464583 0.094 0.306 0
CFAP20 0 0.5187680 0.081 0.274 0
PSMD11 0 0.6006317 0.108 0.335 0
RUVBL2 0 0.6540035 0.113 0.345 0
MFAP1 0 0.7350776 0.147 0.420 0
PSMB5 0 0.6381873 0.088 0.288 0
TGS1 0 0.6706737 0.121 0.359 0
TCL1A 0 3.6926205 0.310 0.075 0
BCKDK 0 0.6069432 0.121 0.359 0
GABPB1 0 0.7254950 0.120 0.356 0
HEATR1 0 0.6519023 0.106 0.324 0
GPI 0 0.5829059 0.160 0.441 0
NARS 0 0.6527729 0.190 0.509 0
POLR3H 0 0.7658764 0.076 0.256 0
TIMM17A 0 0.5773934 0.150 0.416 0
TXNRD1 0 0.5401829 0.187 0.495 0
TIMM44 0 0.5928871 0.095 0.295 0
TSR2 0 0.6154845 0.101 0.310 0
ZNF296 0 0.6807894 0.109 0.327 0
SUGT1 0 0.8242193 0.132 0.377 0
CCNI 0 1.3118804 0.669 0.786 0
CDK4 0 0.6462153 0.214 0.552 0
PANK3 0 0.5175509 0.082 0.267 0
TRAF7 0 0.5674977 0.109 0.324 0
TAGLN2 0 0.6129249 0.188 0.498 0

Cycling GCB cells

gc_ids <- c("Cycling GCB_0", "Cycling GCB_1", "Cycling GCB_2", "Cycling GCB_3")

res_all <- run_de_and_vln(
  gc_b,
  gc_ids,
  title_prefix = "Cycling GCB",
  run_one_vs_all = TRUE,
  run_pairwise = TRUE,
  print_table = TRUE
)

Cycling GCB : Cycling GCB_0 vs_rest

Top 50 markers: Cycling GCB_0 vs_rest
p_val avg_log2FC pct.1 pct.2 p_val_adj
HIST1H2AE 0 1.9668161 0.879 0.281 0
HIST1H2BB 0 1.9919248 0.938 0.355 0
HIST1H2BH 0 1.9332121 0.985 0.497 0
E2F8 0 1.4040347 0.849 0.364 0
HIST1H1A 0 1.9972762 0.645 0.199 0
RAD54L 0 1.2876729 0.815 0.370 0
HIST1H4J 0 1.8194419 0.599 0.158 0
HIST1H1D 0 1.8888341 0.981 0.555 0
PKMYT1 0 1.1985973 0.791 0.370 0
SPC25 0 1.1166291 0.881 0.460 0
SLC20A1 0 1.5047580 0.835 0.417 0
HIST1H2BN 0 1.6449886 0.574 0.158 0
ESCO2 0 1.0736617 0.711 0.308 0
HIST1H2AK 0 2.0282409 0.513 0.117 0
RRM2 0 1.2783334 0.971 0.587 0
FBXO5 0 0.9034818 0.816 0.444 0
HIST1H1E 0 1.5899008 0.972 0.602 0
MXD3 0 0.6915314 0.742 0.379 0
CDCA5 0 0.7929073 0.776 0.416 0
ANLN 0 0.5772537 0.796 0.440 0
RECQL4 0 1.1411965 0.660 0.305 0
E2F2 0 0.9098880 0.797 0.449 0
RTN3 0 1.0382087 0.806 0.458 0
HIST1H4C 0 1.6111251 0.990 0.642 0
DSCC1 0 0.8617734 0.736 0.389 0
HIST1H2BG 0 1.4929048 0.524 0.182 0
NCAPD3 0 0.9114078 0.852 0.512 0
DIAPH3 0 1.0203923 0.638 0.300 0
TMEM106C 0 0.9908682 0.904 0.567 0
ATG16L2 0 1.2626531 0.681 0.346 0
E2F7 0 1.7861208 0.463 0.128 0
ESPL1 0 0.5205386 0.799 0.465 0
CENPP 0 0.8068352 0.827 0.494 0
DONSON 0 0.8279915 0.775 0.445 0
TCF19 0 0.7257852 0.881 0.553 0
CENPI 0 0.7733891 0.720 0.393 0
FOXM1 0 0.6033070 0.891 0.565 0
SAC3D1 0 1.0639012 0.623 0.297 0
FAM111B 0 0.6159868 0.760 0.435 0
FAM111A 0 0.9273416 0.902 0.579 0
IMPA2 0 1.0755300 0.558 0.235 0
MELK 0 0.8189593 0.666 0.343 0
HIST1H1B 0 1.7902195 0.998 0.675 0
NEIL3 0 0.8337949 0.666 0.345 0
WWOX 0 0.9139968 0.763 0.444 0
ATAD2 0 0.7938541 0.805 0.487 0
LMF2 0 1.1037347 0.673 0.356 0
CDCA4 0 0.9224562 0.692 0.375 0
POLA1 0 0.7029765 0.806 0.490 0
POLQ 0 0.7633940 0.750 0.434 0

Cycling GCB : Cycling GCB_1 vs_rest

Top 50 markers: Cycling GCB_1 vs_rest
p_val avg_log2FC pct.1 pct.2 p_val_adj
UNG 0 1.5029655 0.676 0.249 0
DTL 0 1.5846622 0.707 0.352 0
GINS2 0 1.1630190 0.856 0.512 0
AEN 0 1.4420411 0.539 0.226 0
E2F1 0 1.1239766 0.894 0.589 0
ZMYND19 0 1.4302808 0.544 0.241 0
FCRL3 0 1.8335256 0.549 0.251 0
PPRC1 0 1.3023364 0.512 0.223 0
FCRL2 0 1.5544073 0.709 0.421 0
HHEX 0 1.2608534 0.557 0.272 0
MCM6 0 0.8232542 0.933 0.656 0
SLC1A5 0 1.2510598 0.581 0.304 0
COLGALT1 0 1.2964047 0.543 0.272 0
DCTPP1 0 0.7751928 0.696 0.425 0
USP37 0 1.0502989 0.626 0.363 0
PLCXD1 0 1.1202453 0.602 0.339 0
MYBBP1A 0 1.0610236 0.512 0.252 0
PUS1 0 0.9792840 0.526 0.270 0
CDC6 0 0.9195747 0.611 0.357 0
MCM4 0 0.8247742 0.948 0.698 0
GNL3 0 0.7971390 0.665 0.416 0
SRPRB 0 1.4379722 0.455 0.207 0
BYSL 0 0.8867540 0.542 0.297 0
RRS1 0 0.9446563 0.434 0.191 0
PPAN 0 0.9634136 0.529 0.288 0
CNR2 0 1.3273783 0.522 0.281 0
RNF121 0 1.3486755 0.508 0.267 0
XRCC3 0 1.0670239 0.579 0.338 0
DIS3 0 0.7995774 0.647 0.407 0
WDR43 0 0.8562509 0.598 0.359 0
CHAF1A 0 0.7880993 0.842 0.606 0
ATP6V0A2 0 1.0125406 0.644 0.409 0
NOP16 0 0.7134518 0.627 0.392 0
RCL1 0 1.2358903 0.391 0.157 0
AKAP1 0 1.4238528 0.441 0.207 0
FUCA1 0 1.3451932 0.513 0.279 0
ZNF141 0 1.0338451 0.752 0.519 0
RRP12 0 1.0634594 0.453 0.221 0
ADCY3 0 0.9504196 0.595 0.363 0
ECE1 0 0.9068432 0.685 0.455 0
SP110 0 0.6297348 0.548 0.318 0
CXCR5 0 0.8729686 0.816 0.587 0
CASP8AP2 0 0.9689284 0.557 0.330 0
NOP14 0 0.6416175 0.646 0.420 0
GGCT 0 0.7421778 0.558 0.332 0
CTPS1 0 0.7198280 0.608 0.382 0
INTS7 0 0.8316443 0.620 0.395 0
SEMA7A 0 1.5109109 0.469 0.244 0
GPATCH4 0 0.7285786 0.520 0.296 0
BCL2L11 0 1.1089305 0.649 0.427 0

Cycling GCB : Cycling GCB_2 vs_rest

Top 50 markers: Cycling GCB_2 vs_rest
p_val avg_log2FC pct.1 pct.2 p_val_adj
KIF20A 0 2.433514 0.899 0.242 0
PIF1 0 3.242320 0.818 0.165 0
PSRC1 0 2.886712 0.735 0.119 0
KIF14 0 2.432388 0.864 0.262 0
CENPA 0 2.194573 0.912 0.311 0
NEK2 0 2.447029 0.873 0.275 0
CENPE 0 2.358962 0.938 0.368 0
AURKA 0 2.089659 0.895 0.326 0
KNSTRN 0 2.153935 0.914 0.362 0
TROAP 0 2.596349 0.893 0.342 0
PLK1 0 2.221223 0.992 0.443 0
DEPDC1 0 2.348860 0.895 0.347 0
CDC20 0 2.187525 0.987 0.451 0
HMMR 0 2.303239 0.971 0.439 0
ARL6IP1 0 2.696521 0.959 0.433 0
GPSM2 0 2.145332 0.802 0.283 0
ASPM 0 2.488941 0.919 0.406 0
CENPF 0 2.318908 0.975 0.474 0
SGO2 0 1.933021 0.882 0.381 0
DLGAP5 0 1.761252 0.936 0.442 0
FAM83D 0 2.112088 0.749 0.263 0
KIF23 0 1.696575 0.917 0.458 0
ECT2 0 1.759747 0.854 0.404 0
NUF2 0 1.809934 0.907 0.460 0
MYEF2 0 2.016720 0.876 0.432 0
SUN2 0 1.955142 0.934 0.495 0
G2E3 0 1.848847 0.785 0.349 0
CDKN3 0 1.623865 0.869 0.436 0
RNF26 0 1.693369 0.793 0.365 0
CCNB1 0 1.995027 0.979 0.551 0
BRD8 0 1.709019 0.799 0.377 0
CKAP2L 0 1.478315 0.842 0.422 0
CDCA8 0 1.629255 0.961 0.541 0
TTK 0 1.656035 0.792 0.374 0
CKAP2 0 1.784009 0.898 0.480 0
PRR11 0 1.517472 0.892 0.474 0
GTSE1 0 1.409526 0.892 0.477 0
SPTBN1 0 1.995626 0.659 0.248 0
KIF18B 0 1.428923 0.851 0.443 0
CDCA3 0 1.507102 0.854 0.448 0
TUBA1C 0 1.375312 0.864 0.462 0
RANGAP1 0 1.212514 0.824 0.428 0
CCNB2 0 2.100307 0.993 0.598 0
SAPCD2 0 1.588462 0.666 0.274 0
UBE2C 0 1.727597 0.889 0.497 0
KIF4A 0 1.333625 0.733 0.341 0
DEPDC1B 0 1.338567 0.881 0.492 0
ATP8B3 0 2.957713 0.470 0.082 0
TRIM59 0 1.529394 0.854 0.472 0
PRC1 0 1.452672 0.859 0.478 0

Cycling GCB : Cycling GCB_3 vs_rest

Top 50 markers: Cycling GCB_3 vs_rest
p_val avg_log2FC pct.1 pct.2 p_val_adj
PKM 0 0.7814503 0.787 0.944 0
HSPA8 0 0.9266271 0.785 0.939 0
LDHB 0 0.9611074 0.808 0.947 0
ENO1 0 1.2241599 0.748 0.885 0
EEF1G 0 0.7120596 0.844 0.970 0
TUBB 0 0.8733832 0.857 0.938 0
HNRNPA2B1 0 0.5011495 0.923 0.992 0
EEF2 0 0.5693796 0.940 0.996 0
ACTG1 0 0.6277006 0.982 0.998 0
PFN1 0 0.6347506 0.988 0.999 0
TMSB4X 0 0.6755024 0.985 0.996 0
ACTB 0 0.6367547 0.999 1.000 0
MIF 0 0.9166250 0.733 0.895 0
YBX1 0 0.8904666 0.730 0.907 0
EIF4A1 0 1.1438221 0.682 0.839 0
UBA52 0 0.5382661 0.828 0.976 0
TMSB10 0 0.6745963 0.810 0.968 0
COTL1 0 0.8724526 0.738 0.916 0
PSME1 0 0.9434671 0.698 0.894 0
HSP90AB1 0 1.1893243 0.671 0.813 0
PRDX1 0 0.9990514 0.669 0.843 0
CSK 0 0.5260575 0.831 0.974 0
HCLS1 0 0.5800048 0.821 0.977 0
BECN1 0 0.5080404 0.219 0.494 0
VAMP7 0 0.5210004 0.166 0.397 0
CALCOCO2 0 0.5491480 0.251 0.546 0
C9orf40 0 0.5338246 0.224 0.495 0
UNC13D 0 0.5023503 0.199 0.451 0
NUP54 0 0.5223671 0.233 0.513 0
SNX20 0 0.5570184 0.212 0.471 0
ERCC1 0 0.5364479 0.183 0.420 0
CHCHD5 0 0.5752018 0.184 0.424 0
RIC8A 0 0.5015294 0.218 0.484 0
UBAC1 0 0.5193670 0.179 0.412 0
FLNA 0 0.6493532 0.195 0.439 0
UROD 0 0.5523865 0.226 0.495 0
NRBP1 0 0.5410770 0.268 0.567 0
PPP1R11 0 0.5564531 0.204 0.454 0
BAHD1 0 0.5728983 0.137 0.338 0
FOXP4 0 0.5038824 0.180 0.411 0
DMAC2 0 0.5079310 0.156 0.369 0
SNW1 0 0.5448309 0.170 0.394 0
TRIM44 0 0.5093586 0.159 0.372 0
NCL 0 1.0803806 0.652 0.849 0
PGM2 0 0.5406481 0.181 0.412 0
TAOK3 0 0.5448783 0.230 0.497 0
COMMD1 0 0.5723665 0.239 0.514 0
PPID 0 0.5401004 0.207 0.455 0
ATP6V1B2 0 0.5906437 0.233 0.507 0
THUMPD3 0 0.5274570 0.199 0.441 0

Cycling GCB : Cycling GCB_0 vs Cycling GCB_1

Top 50 markers: Cycling GCB_0 vs Cycling GCB_1
p_val avg_log2FC pct.1 pct.2 p_val_adj
HIST1H2BB 0 3.357980 0.938 0.254 0
HIST1H2AE 0 3.276382 0.879 0.203 0
HIST1H2BH 0 3.248609 0.985 0.375 0
HJURP 0 2.020266 0.869 0.343 0
MXD3 0 2.596292 0.742 0.227 0
KIF23 0 2.029000 0.739 0.234 0
HIST1H1A 0 3.415099 0.645 0.147 0
SPC25 0 1.909590 0.881 0.391 0
NDC80 0 1.874038 0.879 0.389 0
AURKB 0 1.880672 0.937 0.456 0
ESPL1 0 1.850542 0.799 0.320 0
HIST1H2BN 0 2.868240 0.574 0.109 0
HIST1H1D 0 2.888959 0.981 0.519 0
GTSE1 0 1.757284 0.747 0.286 0
HIST1H4J 0 2.671507 0.599 0.139 0
KIF18B 0 1.911400 0.720 0.262 0
ANLN 0 1.841960 0.796 0.340 0
CKAP2L 0 1.911128 0.692 0.243 0
KIF2C 0 1.550358 0.823 0.375 0
HIST1H2AK 0 2.969546 0.513 0.091 0
FOXM1 0 1.497741 0.891 0.474 0
CDCA8 0 1.487476 0.770 0.358 0
HIST1H1B 0 3.247035 0.998 0.589 0
INCENP 0 1.666689 0.900 0.491 0
ARHGAP33 0 2.385269 0.559 0.156 0
CDCA3 0 1.672708 0.690 0.288 0
SGO2 0 1.793371 0.613 0.216 0
CCNF 0 1.581733 0.716 0.321 0
HIST1H4C 0 3.007177 0.990 0.599 0
NCAPG 0 1.538799 0.920 0.533 0
TOP2A 0 1.728539 0.909 0.522 0
E2F8 0 1.137562 0.849 0.464 0
CDK1 0 1.616717 0.951 0.567 0
HIST1H2BG 0 2.205421 0.524 0.142 0
CDKN2D 0 1.964406 0.592 0.211 0
BUB1B 0 1.388937 0.803 0.423 0
CENPI 0 1.381815 0.720 0.340 0
CCNA2 0 1.239625 0.787 0.408 0
SPAG5 0 1.300384 0.828 0.449 0
DEPDC1B 0 1.361057 0.724 0.350 0
CDCA2 0 1.381183 0.752 0.380 0
RRM2 0 1.201910 0.971 0.600 0
KIFC1 0 1.723386 0.968 0.601 0
BUB1 0 1.318914 0.835 0.470 0
TPX2 0 1.144942 0.894 0.529 0
DEPDC1 0 1.744092 0.567 0.205 0
UBE2C 0 1.487037 0.700 0.339 0
ASPM 0 1.361057 0.641 0.284 0
NUF2 0 1.223777 0.682 0.327 0
HIST1H1E 0 2.368897 0.972 0.619 0

Cycling GCB : Cycling GCB_0 vs Cycling GCB_2

Top 50 markers: Cycling GCB_0 vs Cycling GCB_2
p_val avg_log2FC pct.1 pct.2 p_val_adj
SLC20A1 0 3.063245 0.835 0.258 0
FAM111B 0 3.137904 0.760 0.195 0
RAD54L 0 2.514570 0.815 0.287 0
POLA1 0 2.547037 0.806 0.287 0
E2F8 0 2.164102 0.849 0.330 0
PCNA 0 2.611932 0.866 0.353 0
PKMYT1 0 2.346882 0.791 0.288 0
MCM4 0 2.423636 0.912 0.418 0
CLSPN 0 2.475743 0.703 0.221 0
MCM6 0 2.008260 0.868 0.390 0
CDC45 0 2.621027 0.705 0.231 0
POLD3 0 2.307010 0.704 0.237 0
HIST1H2AE 0 1.449761 0.879 0.418 0
EXO1 0 2.828808 0.595 0.141 0
RFC2 0 2.034424 0.797 0.345 0
FEN1 0 2.111160 0.863 0.413 0
POLD1 0 2.007983 0.852 0.403 0
ATAD2 0 2.238892 0.805 0.357 0
CHAF1A 0 1.985656 0.857 0.409 0
CCNE2 0 3.337019 0.556 0.110 0
DONSON 0 2.141740 0.775 0.331 0
RECQL4 0 2.376626 0.660 0.224 0
DSCC1 0 1.997579 0.736 0.310 0
E2F1 0 1.739866 0.838 0.413 0
HIST1H2BB 0 1.540839 0.938 0.514 0
MCM3 0 2.126809 0.921 0.499 0
CTNNAL1 0 2.089575 0.657 0.238 0
SLC43A3 0 1.967329 0.711 0.297 0
IMPA2 0 2.651771 0.558 0.145 0
RFC4 0 1.948240 0.692 0.279 0
TCF19 0 1.927306 0.881 0.471 0
CDC6 0 2.792091 0.552 0.142 0
ESCO2 0 1.755738 0.711 0.306 0
MSH2 0 1.752043 0.832 0.430 0
HIST1H1A 0 3.017087 0.645 0.245 0
CTPS1 0 2.235618 0.581 0.181 0
ADCY3 0 2.216001 0.602 0.204 0
POLA2 0 1.660822 0.773 0.385 0
DNA2 0 1.685102 0.772 0.386 0
GINS2 0 1.881464 0.698 0.315 0
SLC7A1 0 1.749081 0.674 0.293 0
TMEM106C 0 1.855773 0.904 0.523 0
HIST1H4J 0 1.652433 0.599 0.220 0
CDK4 0 1.669856 0.847 0.469 0
MCM10 0 2.490202 0.513 0.136 0
BTG3 0 2.003865 0.588 0.213 0
NCAPH2 0 1.874971 0.935 0.561 0
HELLS 0 2.360705 0.969 0.596 0
RRM2 0 2.408373 0.971 0.599 0
MTHFD1 0 2.033832 0.598 0.226 0

Cycling GCB : Cycling GCB_0 vs Cycling GCB_3

Top 50 markers: Cycling GCB_0 vs Cycling GCB_3
p_val avg_log2FC pct.1 pct.2 p_val_adj
PILRB 0 2.090763 0.889 0.127 0
LENG8 0 1.984479 0.925 0.201 0
ATP8A1 0 2.631005 0.834 0.111 0
NEMP1 0 2.162382 0.835 0.118 0
ENTPD4 0 2.563637 0.810 0.095 0
TCIRG1 0 2.402226 0.812 0.100 0
UHRF2 0 1.891723 0.893 0.182 0
CD38 0 2.339777 0.944 0.233 0
SLC20A1 0 2.524432 0.835 0.127 0
NUP210 0 2.052609 0.970 0.266 0
ITPR3 0 1.846421 0.900 0.196 0
SLC1A4 0 2.067260 0.838 0.135 0
ASH1L 0 2.018615 0.826 0.125 0
FANCA 0 1.939364 0.938 0.239 0
SUGP2 0 1.781642 0.933 0.239 0
EML6 0 2.349717 0.811 0.118 0
NKTR 0 1.906729 0.856 0.164 0
LNPEP 0 1.753225 0.925 0.234 0
SYVN1 0 2.203559 0.963 0.272 0
PTPRC 0 1.955141 0.940 0.251 0
DMTF1 0 1.988484 0.817 0.129 0
AC091057.6 0 3.141179 0.726 0.038 0
P2RY8 0 1.703756 0.904 0.220 0
TGOLN2 0 1.684115 0.903 0.221 0
SLC15A4 0 1.982876 0.814 0.133 0
MCOLN2 0 2.007764 0.794 0.115 0
RBM6 0 1.626986 0.935 0.258 0
PLXNB2 0 1.657542 0.834 0.159 0
RTN3 0 1.714541 0.806 0.134 0
ANKLE2 0 1.527446 0.880 0.208 0
RSRP1 0 1.411759 0.887 0.217 0
NSD2 0 1.710354 0.812 0.142 0
CD47 0 1.966743 0.842 0.172 0
SLC15A2 0 2.977727 0.715 0.046 0
CREBZF 0 1.712281 0.827 0.158 0
DNAJC10 0 1.758498 0.880 0.213 0
KNTC1 0 1.533616 0.839 0.172 0
MME 0 1.789050 0.849 0.183 0
MICAL3 0 1.522134 0.956 0.292 0
TACC1 0 1.427932 0.910 0.249 0
NEIL1 0 1.490978 0.869 0.209 0
CCNL1 0 1.984900 0.791 0.132 0
SUSD6 0 1.763772 0.802 0.143 0
PHTF2 0 1.816452 0.789 0.131 0
VAMP1 0 2.018137 0.763 0.105 0
CLK1 0 1.792580 0.798 0.141 0
CD40 0 1.733127 0.903 0.246 0
FCRLA 0 1.505787 0.895 0.239 0
CD19 0 1.723585 0.908 0.252 0
MYBL1 0 1.797552 0.957 0.302 0

Cycling GCB : Cycling GCB_1 vs Cycling GCB_2

Top 50 markers: Cycling GCB_1 vs Cycling GCB_2
p_val avg_log2FC pct.1 pct.2 p_val_adj
UNG 0 4.824678 0.676 0.069 0
MCM6 0 2.541050 0.933 0.390 0
GINS2 0 2.808605 0.856 0.315 0
MCM4 0 2.953909 0.948 0.418 0
DTL 0 2.869194 0.707 0.222 0
FAM111B 0 3.088398 0.676 0.195 0
E2F1 0 2.346611 0.894 0.413 0
CDC6 0 3.339606 0.611 0.142 0
RFC2 0 2.177072 0.807 0.345 0
POLA1 0 2.455394 0.743 0.287 0
PCNA 0 2.436234 0.808 0.353 0
CHAF1A 0 2.304880 0.842 0.409 0
CTPS1 0 2.628213 0.608 0.181 0
MCM3 0 2.225233 0.925 0.499 0
CDC45 0 2.818727 0.657 0.231 0
MTHFD1 0 2.505553 0.647 0.226 0
MCM10 0 3.066447 0.548 0.136 0
SLC20A1 0 2.312239 0.668 0.258 0
POLD3 0 2.319412 0.632 0.237 0
SRM 0 2.547398 0.599 0.206 0
ADCY3 0 2.432842 0.595 0.204 0
CCNE2 0 3.418124 0.501 0.110 0
MCM5 0 2.624535 0.985 0.599 0
RFC4 0 2.072365 0.660 0.279 0
MCM2 0 2.174478 0.960 0.580 0
MSH2 0 1.858804 0.807 0.430 0
POLD1 0 1.947576 0.780 0.403 0
HELLS 0 2.592410 0.970 0.596 0
CHAF1B 0 3.357059 0.451 0.078 0
USP37 0 2.019494 0.626 0.254 0
CLSPN 0 2.334393 0.589 0.221 0
CDK4 0 1.908533 0.836 0.469 0
DCTPP1 0 1.904859 0.696 0.331 0
SLC1A5 0 2.202443 0.581 0.219 0
VARS 0 2.265766 0.550 0.194 0
POLE2 0 2.430782 0.514 0.162 0
ATIC 0 1.734816 0.709 0.359 0
C19orf48 0 1.884926 0.843 0.495 0
WDHD1 0 1.880835 0.644 0.297 0
SLBP 0 2.144403 0.957 0.610 0
XRCC3 0 2.123507 0.579 0.232 0
CDC25A 0 2.265895 0.557 0.211 0
ZMYND19 0 2.171003 0.544 0.198 0
POLA2 0 1.773815 0.729 0.385 0
FCRL3 0 2.367478 0.549 0.207 0
MMS22L 0 1.927008 0.636 0.295 0
ORC1 0 1.756834 0.663 0.323 0
CTNNAL1 0 2.028965 0.573 0.238 0
MYBBP1A 0 2.290387 0.512 0.178 0
GGCT 0 1.919760 0.558 0.228 0

Cycling GCB : Cycling GCB_1 vs Cycling GCB_3

Top 50 markers: Cycling GCB_1 vs Cycling GCB_3
p_val avg_log2FC pct.1 pct.2 p_val_adj
ASH1L 0 2.094661 0.805 0.125 0
LENG8 0 1.790036 0.873 0.201 0
NUP210 0 1.720252 0.935 0.266 0
RSRP1 0 1.589884 0.882 0.217 0
PTPRC 0 1.788521 0.915 0.251 0
ATP8A1 0 2.572331 0.773 0.111 0
SYVN1 0 1.861086 0.929 0.272 0
SLC15A4 0 2.148837 0.790 0.133 0
FANCA 0 1.911629 0.891 0.239 0
ADAM19 0 1.862379 0.833 0.186 0
CD40 0 2.073826 0.893 0.246 0
SUSD6 0 1.933148 0.787 0.143 0
OS9 0 1.623584 0.817 0.175 0
MTDH 0 1.680115 0.875 0.234 0
TGOLN2 0 1.565364 0.861 0.221 0
ITPR3 0 1.680105 0.836 0.196 0
ST6GAL1 0 1.980540 0.940 0.301 0
LNPEP 0 1.520153 0.872 0.234 0
CYBB 0 1.870505 0.843 0.206 0
ENTPD4 0 2.385035 0.730 0.095 0
CD19 0 1.776904 0.887 0.252 0
CXCR5 0 1.859096 0.816 0.182 0
PLXNB2 0 1.791560 0.791 0.159 0
P2RY8 0 1.590051 0.851 0.220 0
ZNF141 0 2.132479 0.752 0.122 0
KMT2A 0 2.053063 0.782 0.153 0
OGT 0 1.591831 0.849 0.221 0
MCOLN2 0 2.114446 0.742 0.115 0
FCRL2 0 3.318192 0.709 0.082 0
RBM6 0 1.416201 0.885 0.258 0
MICAL3 0 1.419752 0.919 0.292 0
CREBZF 0 1.684635 0.783 0.158 0
CD38 0 2.071677 0.856 0.233 0
SREBF2 0 1.476028 0.918 0.295 0
SLC44A2 0 1.663596 0.800 0.180 0
SEC62 0 1.235551 0.887 0.268 0
DMTF1 0 1.819878 0.748 0.129 0
UHRF2 0 1.515031 0.801 0.182 0
PILRB 0 1.467858 0.745 0.127 0
ANKLE2 0 1.395092 0.823 0.208 0
PHTF2 0 1.836042 0.745 0.131 0
TACC1 0 1.302337 0.863 0.249 0
ATP2B1 0 2.340039 0.709 0.095 0
LPCAT1 0 1.542318 0.839 0.226 0
FAM214A 0 1.675048 0.823 0.210 0
SLAMF6 0 1.764682 0.755 0.144 0
UGGT1 0 1.685770 0.795 0.184 0
CLEC2D 0 1.668252 0.923 0.315 0
NKTR 0 1.638985 0.772 0.164 0
TAPBP 0 1.509821 0.839 0.231 0

Cycling GCB : Cycling GCB_2 vs Cycling GCB_3

Top 50 markers: Cycling GCB_2 vs Cycling GCB_3
p_val avg_log2FC pct.1 pct.2 p_val_adj
PILRB 0 3.053851 0.926 0.127 0
ARL6IP1 0 2.677375 0.959 0.185 0
SUN2 0 2.475297 0.934 0.167 0
NEIL1 0 2.497082 0.959 0.209 0
ASPM 0 2.589396 0.919 0.170 0
LNPEP 0 2.628017 0.972 0.234 0
TROAP 0 2.193698 0.893 0.164 0
PIF1 0 2.767447 0.818 0.089 0
AC091057.6 0 3.908226 0.763 0.038 0
MYEF2 0 2.106015 0.876 0.152 0
ENTPD4 0 2.707570 0.810 0.095 0
CD38 0 2.427239 0.947 0.233 0
CR1 0 3.167923 0.817 0.104 0
DEPDC1 0 1.911453 0.895 0.183 0
PTPRC 0 2.265394 0.960 0.251 0
P2RY8 0 1.892274 0.918 0.220 0
SLAMF6 0 2.112805 0.842 0.144 0
OS9 0 1.890944 0.873 0.175 0
FCRLA 0 1.819004 0.933 0.239 0
CENPE 0 1.697066 0.938 0.247 0
SYVN1 0 2.193325 0.963 0.272 0
SUGP2 0 2.015286 0.928 0.239 0
CLK1 0 2.114745 0.829 0.141 0
FAM214A 0 1.990165 0.896 0.210 0
SGPP1 0 2.576504 0.992 0.308 0
ASH1L 0 2.106523 0.808 0.125 0
CENPF 0 1.731353 0.975 0.296 0
ATP8A1 0 2.609523 0.790 0.111 0
HMMR 0 1.659124 0.971 0.293 0
CR2 0 2.347380 0.803 0.126 0
ST8SIA4 0 2.201086 0.833 0.156 0
KIF14 0 1.588894 0.864 0.188 0
MME 0 1.993886 0.858 0.183 0
EVI2B 0 1.985249 0.914 0.239 0
ANLN 0 1.922638 0.824 0.151 0
CLEC2D 0 2.525333 0.986 0.315 0
CCDC18 0 1.935233 0.810 0.140 0
UHRF2 0 1.756385 0.849 0.182 0
NDC1 0 1.693154 0.940 0.274 0
DMTF1 0 2.006607 0.794 0.129 0
TMEM131 0 1.800055 0.835 0.171 0
MYBL1 0 1.918868 0.965 0.302 0
SERINC3 0 1.816407 0.794 0.133 0
GEN1 0 1.560910 0.876 0.217 0
KMT2A 0 1.917804 0.810 0.153 0
MCOLN2 0 2.058881 0.771 0.115 0
SUSD6 0 1.909183 0.799 0.143 0
PIKFYVE 0 1.444140 0.856 0.202 0
STIM2 0 2.165119 0.756 0.104 0
PAN3 0 1.570905 0.890 0.238 0

Plasma B cells

plasma_b <-  subset(paed_sub, idents = "Plasma B")
keep_cells <- Idents(paed_sub) %in% "Plasma B"
plasma_b@assays$RNA@cells@.Data <- paed_sub@assays$RNA@cells@.Data[keep_cells, ]
plasma_b
An object of class Seurat 
18076 features across 14390 samples within 1 assay 
Active assay: RNA (18076 features, 2000 variable features)
 3 layers present: data, counts, scale.data
 4 dimensional reductions calculated: pca, umap.unintegrated, umap.l1, umap.bcells
out3 <- here("output/RDS/Lineages_RDS_combined/SEU_PlasmaB_Cells.rds")

if (!file.exists(out3)) {
  plasma_b <- plasma_b %>%
  FindVariableFeatures() %>%
  ScaleData() %>%
  RunPCA() 
  gc() 
  plasma_b <- RunUMAP(plasma_b, dims = 1:30, reduction = "pca", reduction.name = "umap.plasmaB")

  meta_data_columns <- colnames(plasma_b@meta.data)
  columns_to_remove <- grep("^RNA_snn_res", meta_data_columns, value = TRUE)
  plasma_b@meta.data <- plasma_b@meta.data[, !(colnames(plasma_b@meta.data) %in% columns_to_remove)]
  resolutions <- seq(0.1, 0.5, by = 0.1)
  plasma_b <- FindNeighbors(plasma_b, dims = 1:30, reduction = "pca")
  plasma_b <- FindClusters(plasma_b, resolution = resolutions )

  saveRDS(plasma_b, out3)

} else {
  plasma_b <- readRDS(out3)
}
clustree(plasma_b, prefix = "RNA_snn_res.")

DimPlot(plasma_b, group.by = "RNA_snn_res.0.1", reduction = "umap.plasmaB", label = TRUE, label.size = 2.5, repel = TRUE, raster = FALSE )

opt_res <- "RNA_snn_res.0.1"  
n <- nlevels(plasma_b$RNA_snn_res.0.1)
plasma_b$RNA_snn_res.0.1 <- factor(plasma_b$RNA_snn_res.0.1, levels = seq(0,n-1))
plasma_b$seurat_clusters <- NULL
plasma_b$cluster <- plasma_b$RNA_snn_res.0.1
Idents(plasma_b) <- plasma_b$cluster
plasma_b$cell_labels <- NULL
Warning: Cannot find cell-level meta data named cell_labels
plasma_b$cell_labels_v2 <- NULL
Idents(plasma_b) <- "RNA_snn_res.0.1"
new.cluster.ids <- c("Plasma B cells_1", 
                     "Plasma B cells_2", 
                     "Plasma B cells_3",
                     "Plasma B cells_4")
names(new.cluster.ids) <- levels(plasma_b)
plasma_b <- RenameIdents(plasma_b, new.cluster.ids)
Idents(plasma_b) <- factor(Idents(plasma_b), levels = c("Plasma B cells_1", "Plasma B cells_2",  "Plasma B cells_3",  "Plasma B cells_4"))
plasma_b$cell_labels_l2 <- Idents(plasma_b)
plasma_b$cell_labels_l3 <- Idents(plasma_b)
table(plasma_b$cluster, plasma_b$tissue)
   
    Adenoids  BAL Bronchial_brushings Nasal_brushings Tonsils
  0     2152   10                   3              40    6715
  1     2127   35                  11              41    2261
  2      658   29                  83              77       1
  3        0    0                   0               3     144

DE features of Plasma B cells

The marker genes for this Plasma B cell subclustering can be found here-

PlasmaB_population_subclusters

gc()
             used    (Mb) gc trigger    (Mb) limit (Mb)   max used    (Mb)
Ncells    4783018   255.5   10139294   541.5         NA   10139294   541.5
Vcells 4504150502 34364.0 8757678310 66815.8     163840 8757032360 66810.9
paed_sub.markers <- FindAllMarkers(
  plasma_b,
  only.pos = TRUE,
  min.pct = 0.25,
  logfc.threshold = 0.25, features = features.no.mt
)
Calculating cluster Plasma B cells_1
Calculating cluster Plasma B cells_2
Calculating cluster Plasma B cells_3
Calculating cluster Plasma B cells_4
gc()
             used    (Mb) gc trigger    (Mb) limit (Mb)   max used    (Mb)
Ncells    4780408   255.4   10139294   541.5         NA   10139294   541.5
Vcells 4504104962 34363.6 8757678310 66815.8     163840 8757032360 66810.9
top10 <- paed_sub.markers %>%
    group_by(cluster) %>%
    top_n(n = 10, wt = avg_log2FC) %>%
    ungroup() %>%
    distinct(gene, .keep_all = TRUE) %>%
    arrange(cluster, desc(avg_log2FC))


best.wilcox.gene.per.cluster <- paed_sub.markers |>
  group_by(cluster) |>
  slice_max(avg_log2FC, n = 1) |>
  select(cluster, gene)

best.wilcox.gene.per.cluster
# A tibble: 4 × 2
# Groups:   cluster [4]
  cluster          gene    
  <fct>            <chr>   
1 Plasma B cells_1 AEBP1   
2 Plasma B cells_2 TBC1D9  
3 Plasma B cells_3 HIST1H1B
4 Plasma B cells_4 MAF     
FeaturePlot(
  plasma_b,
  features = best.wilcox.gene.per.cluster$gene,
  reduction = "umap.plasmaB",
  raster = FALSE,
  ncol = 1,
  label = TRUE,
  split.by = "tissue"
)
Warning: All cells have the same value (0) of "MAF"

plasma_b <- ScaleData(
  plasma_b,
  features = unique(top10$gene),
  assay = "RNA",
  verbose = FALSE
)
Warning: Different features in new layer data than already exists for
scale.data
DoHeatmap(plasma_b, features = unique(top10$gene), angle = 90) + NoLegend()

## Seurat top markers
cluster_colors <- paletteer::paletteer_d("pals::glasbey")[factor(top10$cluster)]

DotPlot(plasma_b,    
        features = unique(top10$gene),
        group.by = "cell_labels_l2",
        cols = c("azure1", "blueviolet"),
        dot.scale = 3, assay = "RNA") +
    RotatedAxis() +
    FontSize(y.text = 8, x.text = 12) +
    labs(y = element_blank(), x = element_blank()) +
    coord_flip() +
    theme(axis.text.y = element_text(color = cluster_colors)) +
    ggtitle("Top 10 marker genes per cluster (Seurat)")
Warning: Scaling data with a low number of groups may produce misleading
results
Warning: Vectorized input to `element_text()` is not officially supported.
ℹ Results may be unexpected or may change in future versions of ggplot2.

marker_counts <- paed_sub.markers %>%
    filter(avg_log2FC > 1 & p_val_adj < 0.05) %>%  
    count(cluster, name = "n_markers") %>%
    arrange(desc(n_markers))

print(marker_counts)
           cluster n_markers
1 Plasma B cells_3      2935
2 Plasma B cells_4       231
3 Plasma B cells_1       118
4 Plasma B cells_2        30
ggplot(marker_counts, aes(x = reorder(cluster, n_markers), y = n_markers)) +
    geom_col(fill = "steelblue", alpha = 0.8) +
    coord_flip() +
    labs(title = "High-confidence markers per subcluster (logFC > 1)",
         x = "Subcluster", y = "Number of markers") +
    theme_minimal()

out_markers <- here("output",
            "CSV_v3","B_cell_lineage",
            paste("Marker_genes_Reclustered_PlasmaB.",opt_res, sep = ""))

dir.create(out_markers, recursive = TRUE, showWarnings = FALSE)

for (cl in unique(paed_sub.markers$cluster)) {
  cluster_data <- paed_sub.markers %>% dplyr::filter(cluster == cl)
  file_name <- here(out_markers, paste0("G000231_Neeland_", cl, ".csv"))
  if (!file.exists(file_name)) {
  write.csv(cluster_data, file = file_name)
  }
}

DE markers/gene between Plasma sub-clusters

All Plasma Bcell subsets

pl_ids <- c("Plasma B cells_1", "Plasma B cells_2", "Plasma B cells_3",  "Plasma B cells_4")

res_all <- run_de_and_vln(
  plasma_b,
  pl_ids,
  title_prefix = "Plasma B",
  run_one_vs_all = TRUE,
  run_pairwise = TRUE,
  print_table = TRUE
)

Plasma B : Plasma B cells_1 vs_rest

Top 50 markers: Plasma B cells_1 vs_rest
p_val avg_log2FC pct.1 pct.2 p_val_adj
RGS13 0 1.0173265 0.889 0.241 0
EML6 0 1.3656062 0.748 0.234 0
VPREB3 0 1.2883790 0.604 0.160 0
DENND6B 0 2.2148724 0.670 0.234 0
LHFPL2 0 1.3712868 0.527 0.095 0
VDR 0 2.2068619 0.693 0.277 0
PRDM15 0 1.4456983 0.575 0.172 0
PLXNB2 0 1.0773755 0.674 0.273 0
MME 0 0.6768171 0.453 0.064 0
SYNE2 0 1.1030199 0.903 0.518 0
EHD1 0 0.6005142 0.618 0.237 0
PRKD3 0 0.6949531 0.756 0.376 0
MCTP2 0 0.7241993 0.547 0.168 0
NLK 0 0.7708096 0.713 0.337 0
PIK3CG 0 1.3952259 0.716 0.343 0
ALDH5A1 0 1.4495957 0.585 0.218 0
PTPRS 0 1.0652221 0.564 0.199 0
QPCT 0 1.2623177 0.529 0.170 0
RASSF6 0 1.3403298 0.700 0.342 0
RNF103 0 1.2310956 0.738 0.405 0
AKIRIN2 0 0.9277216 0.754 0.431 0
CD9 0 1.8766360 0.565 0.244 0
PITRM1 0 1.2679336 0.618 0.299 0
LRIG1 0 1.6176299 0.434 0.117 0
STK17B 0 1.1530481 0.888 0.573 0
PIM1 0 1.0653966 0.720 0.405 0
AEBP1 0 2.6140100 0.428 0.120 0
OGT 0 1.4100100 0.905 0.598 0
REXO2 0 1.4985958 0.729 0.426 0
SLCO3A1 0 1.3166198 0.359 0.064 0
IQSEC1 0 1.0376881 0.706 0.418 0
CD38 0 1.1270988 0.909 0.622 0
SLC17A9 0 1.4278455 0.685 0.398 0
FAM214A 0 0.9644738 0.889 0.605 0
ACSS1 0 1.3808703 0.655 0.380 0
GLCCI1 0 1.3506863 0.873 0.615 0
ACADVL 0 1.1716371 0.745 0.491 0
CYTIP 0 0.8097559 0.931 0.702 0
PRDM1 0 1.4217201 0.890 0.663 0
ISG20 0 0.8000618 0.912 0.691 0
ZBP1 0 1.0677250 0.810 0.594 0
CDKN1B 0 0.8244761 0.895 0.681 0
TRAM1 0 0.7986740 0.915 0.758 0
ST6GAL1 0 1.0168404 0.956 0.804 0
CD74 0 0.5832892 0.994 0.911 0
MZB1 0 1.0801846 0.984 0.928 0
CD79A 0 1.0127889 0.992 0.944 0
ADA 0 0.8370963 0.564 0.222 0
ITPR2 0 1.0605146 0.722 0.412 0
SND1 0 0.9001496 0.822 0.558 0

Plasma B : Plasma B cells_2 vs_rest

Top 50 markers: Plasma B cells_2 vs_rest
p_val avg_log2FC pct.1 pct.2 p_val_adj
TBC1D9 0e+00 3.1145894 0.415 0.117 0.0000000
PECAM1 0e+00 2.4904840 0.594 0.320 0.0000000
VIM 0e+00 1.1553429 0.769 0.621 0.0000000
CD44 0e+00 1.7982803 0.594 0.424 0.0000000
CCND2 0e+00 2.0570319 0.309 0.105 0.0000000
SDC1 0e+00 1.6763157 0.563 0.361 0.0000000
ITGA6 0e+00 2.4967445 0.324 0.129 0.0000000
CAPN2 0e+00 2.1224780 0.326 0.134 0.0000000
TXNIP 0e+00 1.5278748 0.676 0.609 0.0000000
EMP3 0e+00 1.7193510 0.504 0.326 0.0000000
PLAC8 0e+00 2.3013425 0.268 0.098 0.0000000
CADM1 0e+00 1.6374711 0.326 0.151 0.0000000
IGHD 0e+00 1.1069648 0.159 0.349 0.0000000
IGLC1 0e+00 0.9139529 0.429 0.646 0.0000000
GAS6 0e+00 1.5716056 0.368 0.213 0.0000000
FCGR2B 0e+00 1.6321345 0.331 0.187 0.0000000
TIMP1 0e+00 2.1947997 0.256 0.125 0.0000000
IGKC 0e+00 0.6527606 0.788 0.758 0.0000000
TSPAN3 0e+00 1.4628911 0.500 0.404 0.0000000
IGHA1 0e+00 1.7855112 0.432 0.282 0.0000000
ITGB7 0e+00 1.1860857 0.397 0.264 0.0000000
MARCKS 0e+00 1.3524682 0.285 0.164 0.0000000
LGALS1 0e+00 0.8214518 0.412 0.274 0.0000000
S100A6 0e+00 1.8912533 0.290 0.180 0.0000000
CELF2 0e+00 1.5206431 0.295 0.198 0.0000000
CASP10 0e+00 1.0624230 0.415 0.316 0.0000000
LY6E 0e+00 1.2134580 0.392 0.320 0.0000000
PDK1 0e+00 0.7893941 0.662 0.694 0.0000000
HIPK2 0e+00 0.7959031 0.481 0.420 0.0000000
NPC2 0e+00 0.8030023 0.657 0.679 0.0000000
PAIP2B 0e+00 1.1888534 0.335 0.261 0.0000000
SLC38A5 0e+00 0.8051600 0.298 0.216 0.0000000
DUSP5 0e+00 0.9254730 0.267 0.191 0.0000000
CD63 0e+00 1.1342348 0.425 0.377 0.0000000
PRDX4 0e+00 0.5915506 0.776 0.794 0.0000000
P2RY10 0e+00 1.1289086 0.267 0.215 0.0000000
MGST3 0e+00 1.0252454 0.269 0.212 0.0000000
ITGA4 0e+00 1.1945061 0.267 0.223 0.0000000
ATXN1 0e+00 0.9101840 0.419 0.377 0.0000000
POLR3GL 0e+00 0.5091750 0.190 0.272 0.0000000
IFI6 0e+00 0.6278550 0.457 0.430 0.0000000
LMNA 0e+00 0.9275475 0.267 0.220 0.0000000
LEPROTL1 0e+00 0.5885393 0.216 0.300 0.0000000
FUCA2 0e+00 0.9138012 0.368 0.332 0.0000002
CXCR4 0e+00 0.6556090 0.529 0.556 0.0000035
RNASE6 0e+00 0.9712013 0.286 0.256 0.0000040
HEXB 0e+00 0.8945233 0.253 0.219 0.0003155
CTSZ 1e-07 0.7849486 0.511 0.559 0.0010188
KIF13B 1e-07 0.6779496 0.269 0.242 0.0018208
SELENOW 4e-07 0.6321063 0.231 0.294 0.0071318

Plasma B : Plasma B cells_3 vs_rest

Top 50 markers: Plasma B cells_3 vs_rest
p_val avg_log2FC pct.1 pct.2 p_val_adj
CFL1 0 4.351686 0.866 0.621 0
PFN1 0 4.322730 0.940 0.748 0
ACTB 0 5.748388 0.940 0.789 0
TMSB4X 0 2.828437 0.959 0.860 0
OAZ1 0 1.281173 0.991 0.944 0
ARHGDIB 0 3.355145 0.861 0.707 0
ATP2A3 0 2.049959 0.935 0.741 0
EZR 0 3.328728 0.847 0.667 0
RAC2 0 2.168081 0.912 0.728 0
CCNI 0 1.945135 0.906 0.729 0
H3F3A 0 2.111595 0.914 0.779 0
HNRNPA2B1 0 2.648325 0.829 0.673 0
FAM107B 0 2.977415 0.835 0.635 0
RHOA 0 2.193012 0.847 0.630 0
CORO1A 0 7.228499 0.744 0.507 0
UBA52 0 1.706676 0.914 0.742 0
KLHL6 0 2.580071 0.857 0.727 0
YWHAZ 0 2.246968 0.827 0.603 0
WIPF1 0 2.394146 0.829 0.665 0
CD79B 0 2.756524 0.849 0.746 0
HCLS1 0 2.050737 0.848 0.684 0
TMSB10 0 1.945000 0.959 0.749 0
ARHGEF1 0 2.391903 0.821 0.568 0
LRMP 0 4.544261 0.779 0.646 0
CD53 0 2.595863 0.825 0.663 0
GGA2 0 3.397341 0.767 0.601 0
PTPN6 0 3.134756 0.737 0.472 0
SYVN1 0 1.527419 0.945 0.773 0
ACTG1 0 5.116043 0.761 0.631 0
AKNA 0 2.550374 0.792 0.547 0
HNRNPC 0 2.406266 0.782 0.560 0
UBE2J1 0 1.640776 0.986 0.903 0
SASH3 0 2.123651 0.828 0.628 0
TUFM 0 1.762881 0.844 0.623 0
MIF 0 1.547801 0.897 0.724 0
EIF4A1 0 2.534726 0.752 0.511 0
SERF2 0 1.919864 0.820 0.593 0
LAPTM5 0 3.385312 0.834 0.774 0
DBNL 0 2.540285 0.759 0.554 0
CTSH 0 2.215644 0.862 0.687 0
UCP2 0 3.519863 0.736 0.567 0
ATP5MC3 0 2.499598 0.723 0.456 0
RBM3 0 1.939793 0.805 0.548 0
RACK1 0 1.515714 0.899 0.742 0
ARPC2 0 2.737394 0.719 0.500 0
PLCG2 0 1.600726 0.890 0.768 0
FERMT3 0 3.195985 0.703 0.477 0
HSP90AB1 0 2.711614 0.737 0.510 0
HNRNPD 0 2.054283 0.789 0.648 0
EIF3B 0 2.040137 0.769 0.534 0

Plasma B : Plasma B cells_4 vs_rest

Top 50 markers: Plasma B cells_4 vs_rest
p_val avg_log2FC pct.1 pct.2 p_val_adj
LTB 0 6.3059703 0.687 0.174 0.0e+00
TMSB4X 0 2.6274294 0.993 0.864 0.0e+00
IGHG3 0 2.8690325 0.993 0.556 0.0e+00
ACTB 0 1.1708876 0.952 0.796 0.0e+00
MAF 0 14.1642312 0.293 0.043 0.0e+00
MS4A1 0 4.1171858 0.660 0.455 0.0e+00
ACTG1 0 0.9756393 0.707 0.638 0.0e+00
LAPTM5 0 1.0187708 0.741 0.778 0.0e+00
PFN1 0 1.0490799 0.728 0.759 0.0e+00
CD22 0 2.9544901 0.605 0.526 0.0e+00
ARHGDIB 0 1.4127676 0.687 0.716 0.0e+00
CD37 0 3.7182421 0.571 0.495 0.0e+00
CORO1A 0 2.0523409 0.599 0.520 0.0e+00
RASSF5 0 0.5803877 0.109 0.488 0.0e+00
FGFR1OP2 0 0.5035503 0.095 0.457 0.0e+00
ZFP36L1 0 6.6328184 0.415 0.250 0.0e+00
NFX1 0 0.7231503 0.129 0.526 0.0e+00
RAB8A 0 0.6047045 0.156 0.570 0.0e+00
EIF4A2 0 0.8147710 0.129 0.512 0.0e+00
SAFB2 0 0.7588652 0.109 0.465 0.0e+00
FAM120A 0 0.9992131 0.143 0.532 0.0e+00
SUMF2 0 0.5640224 0.116 0.470 1.0e-07
IRF2 0 0.5365269 0.150 0.535 1.0e-07
PHF1 0 0.5904803 0.116 0.477 1.0e-07
OGFR 0 0.5512888 0.068 0.380 1.0e-07
APOL6 0 0.6482608 0.170 0.577 1.0e-07
AKAP8 0 0.6109315 0.048 0.340 1.0e-07
KDM5C 0 1.0122799 0.136 0.515 1.0e-07
NDUFA3 0 0.6114451 0.184 0.601 1.0e-07
ORAI2 0 0.6627113 0.170 0.576 1.0e-07
TLK1 0 0.5467187 0.150 0.529 1.0e-07
IRAK1 0 0.6397909 0.156 0.544 2.0e-07
CDR2 0 0.5195778 0.075 0.390 2.0e-07
COX16 0 0.7477049 0.129 0.492 2.0e-07
HMGN4 0 0.5396207 0.136 0.498 2.0e-07
IFNAR1 0 0.9332033 0.163 0.550 3.0e-07
ALG13 0 1.2081479 0.122 0.474 5.0e-07
TCL1A 0 4.2382610 0.361 0.205 6.0e-07
EID1 0 0.5444610 0.163 0.550 7.0e-07
ERCC5 0 0.5340006 0.054 0.338 7.0e-07
HMG20B 0 0.5067281 0.075 0.374 9.0e-07
TGOLN2 0 0.5912260 0.197 0.615 9.0e-07
CCDC88B 0 0.5886380 0.150 0.521 9.0e-07
UXT 0 0.6646303 0.184 0.586 1.0e-06
STK40 0 0.8132764 0.122 0.465 1.1e-06
TMEM109 0 0.6370203 0.122 0.464 1.1e-06
PHF20L1 0 0.6453345 0.075 0.368 1.1e-06
ATP6V0D1 0 0.6244771 0.088 0.396 1.2e-06
CUL5 0 1.0299525 0.054 0.334 1.3e-06
NCKAP1L 0 0.7032760 0.136 0.489 1.3e-06

Plasma B : Plasma B cells_1 vs Plasma B cells_2

Top 50 markers: Plasma B cells_1 vs Plasma B cells_2
p_val avg_log2FC pct.1 pct.2 p_val_adj
RGS13 0 3.7865356 0.889 0.161 0
EML6 0 4.0393661 0.748 0.164 0
CD22 0 2.3097724 0.713 0.146 0
MARCKSL1 0 1.5470821 0.701 0.176 0
LAPTM5 0 1.7723599 0.948 0.427 0
BCL7A 0 3.4157588 0.582 0.061 0
RFTN1 0 2.0287321 0.687 0.170 0
DTX1 0 3.0154066 0.590 0.078 0
VPREB3 0 2.9769072 0.604 0.094 0
CLEC2D 0 2.1953609 0.727 0.223 0
DENND6B 0 2.8260213 0.670 0.177 0
AFF2 0 1.6400390 0.653 0.161 0
VDR 0 3.0785574 0.693 0.209 0
LHFPL2 0 3.6537577 0.527 0.045 0
ETS1 0 1.5962406 0.705 0.224 0
MEF2B 0 1.6714727 0.850 0.379 0
CCDC88A 0 2.3955150 0.809 0.339 0
PRDM15 0 2.9149842 0.575 0.115 0
PLXNB2 0 1.7662419 0.674 0.217 0
EHD1 0 2.1595598 0.618 0.163 0
SYNE2 0 2.0724160 0.903 0.459 0
MCTP2 0 2.2011597 0.547 0.109 0
LRMP 0 1.0012055 0.794 0.357 0
SWAP70 0 0.8372902 0.613 0.179 0
PRKD3 0 1.5051172 0.756 0.324 0
NLK 0 1.7455077 0.713 0.281 0
TNFRSF13C 0 1.1296370 0.768 0.341 0
ALDH5A1 0 2.2996444 0.585 0.158 0
PIK3CG 0 1.9454707 0.716 0.291 0
MME 0 3.4720978 0.453 0.033 0
SEPTIN1 0 1.3501786 0.740 0.321 0
SEMA4A 0 1.7007275 0.694 0.275 0
SUSD3 0 1.6523345 0.611 0.199 0
PTPRS 0 2.2120721 0.564 0.155 0
GCSAM 0 2.1855236 0.492 0.084 0
SLC44A2 0 1.3244896 0.653 0.246 0
ADA 0 2.2002732 0.564 0.161 0
QPCT 0 2.0050424 0.529 0.128 0
PXK 0 1.0969060 0.612 0.215 0
IL21R 0 1.3076292 0.643 0.247 0
RASSF6 0 1.9136126 0.700 0.305 0
HS2ST1 0 1.7237403 0.649 0.255 0
LBR 0 0.7091169 0.627 0.235 0
EHMT1 0 1.1839194 0.765 0.375 0
RNF103 0 1.8074481 0.738 0.351 0
LRRK1 0 1.5611941 0.708 0.322 0
JCHAIN 0 0.5536542 0.976 0.592 0
ARGLU1 0 1.0651542 0.787 0.405 0
PITRM1 0 1.8662956 0.618 0.238 0
P2RY8 0 1.1150918 0.702 0.322 0

Plasma B : Plasma B cells_1 vs Plasma B cells_3

Top 50 markers: Plasma B cells_1 vs Plasma B cells_3
p_val avg_log2FC pct.1 pct.2 p_val_adj
IGHG1 0 4.5891876 0.877 0.494 0
TENT5C 0 1.5940116 0.915 0.961 0
ADA2 0 2.1054920 0.854 0.883 0
ZBP1 0 2.5997169 0.810 0.856 0
SSR4 0 0.9338155 0.954 0.978 0
ITM2C 0 1.4752159 0.838 0.848 0
PLPP5 0 2.0103899 0.795 0.810 0
XBP1 0 1.3639450 0.967 0.989 0
CDKN1B 0 1.0440381 0.895 0.947 0
DNAJB9 0 1.5400863 0.840 0.850 0
IGHG3 0 5.2793306 0.580 0.268 0
FNDC3B 0 1.5069712 0.798 0.777 0
AFF1 0 2.5665303 0.681 0.715 0
IRF4 0 1.8802685 0.833 0.812 0
TP53INP1 0 1.1582316 0.823 0.816 0
BHLHE41 0 2.2282800 0.669 0.748 0
THEMIS2 0 0.9941127 0.782 0.829 0
LIMD1 0 1.8262461 0.665 0.702 0
PNRC1 0 0.7530995 0.865 0.876 0
SLAMF7 0 1.3846393 0.750 0.779 0
CCPG1 0 1.6538777 0.673 0.698 0
ACSS1 0 1.5474652 0.655 0.626 0
IGKC 0 1.8421626 0.755 0.741 0
GLCCI1 0 1.0463069 0.873 0.869 0
TRAM1 0 0.7255520 0.915 0.940 0
SEL1L 0 0.9176210 0.838 0.817 0
MANEA 0 1.0506928 0.742 0.671 0
CHD2 0 0.6478989 0.744 0.815 0
PSAP 0 0.8377947 0.770 0.874 0
PLD3 0 1.0657929 0.746 0.796 0
CPEB4 0 1.1849414 0.732 0.788 0
KLF2 0 1.6366646 0.528 0.475 0
REXO2 0 1.1558007 0.729 0.658 0
GPR183 0 2.7816885 0.524 0.517 0
IQSEC1 0 0.7628115 0.706 0.696 0
APOL6 0 1.3547080 0.618 0.679 0
OGT 0 0.5937699 0.905 0.945 0
TXNIP 0 1.3778925 0.614 0.623 0
FNDC3A 0 0.9482423 0.780 0.864 0
DUSP1 0 2.0669786 0.595 0.591 0
ERN1 0 1.4894039 0.579 0.577 0
PRDX4 0 0.8171075 0.800 0.820 0
PDK1 0 0.9387294 0.705 0.676 0
IFNAR2 0 0.9329705 0.710 0.791 0
PIM2 0 0.7819588 0.913 0.960 0
METTL7A 0 0.6789214 0.813 0.757 0
MAN1A1 0 0.8853225 0.836 0.858 0
CALCOCO1 0 1.3256360 0.557 0.522 0
NLRP1 0 0.9709577 0.585 0.613 0
P2RX1 0 1.8494494 0.524 0.529 0

Plasma B : Plasma B cells_1 vs Plasma B cells_4

Top 50 markers: Plasma B cells_1 vs Plasma B cells_4
p_val avg_log2FC pct.1 pct.2 p_val_adj
CD79A 0 2.546782 0.992 0.741 0
RGS13 0 4.943948 0.889 0.299 0
JCHAIN 0 3.236284 0.976 0.429 0
POU2AF1 0 2.703790 0.947 0.449 0
MEF2B 0 6.200937 0.850 0.354 0
CCDC88A 0 5.484404 0.809 0.136 0
TENT5C 0 2.875848 0.915 0.143 0
MZB1 0 2.487068 0.984 0.537 0
UBE2J1 0 2.142972 0.958 0.558 0
ST6GAL1 0 2.216638 0.956 0.388 0
OGT 0 2.562777 0.905 0.272 0
PRDM1 0 3.237326 0.890 0.129 0
RBM6 0 4.186298 0.773 0.122 0
KLHL6 0 2.316421 0.826 0.259 0
AKIRIN2 0 4.460355 0.754 0.088 0
TXNDC11 0 2.386468 0.925 0.197 0
CCDC69 0 2.772370 0.837 0.245 0
FBXW7 0 2.460957 0.884 0.156 0
ZBP1 0 2.892775 0.810 0.082 0
BTG2 0 2.512329 0.935 0.401 0
MAPKAPK2 0 3.038940 0.821 0.150 0
EML6 0 5.543655 0.748 0.156 0
EDEM1 0 2.530871 0.906 0.422 0
EIF2AK3 0 5.549734 0.716 0.075 0
LRRK1 0 5.511936 0.708 0.054 0
CCM2 0 2.683243 0.784 0.095 0
LRMP 0 3.184814 0.794 0.442 0
CD38 0 2.242477 0.909 0.299 0
HYOU1 0 2.817348 0.817 0.116 0
TP53INP1 0 2.524600 0.823 0.116 0
REEP5 0 2.151555 0.841 0.116 0
SEMA4A 0 6.525759 0.694 0.088 0
SF3B5 0 3.987870 0.702 0.088 0
TUT7 0 2.435941 0.847 0.224 0
TXNDC5 0 2.353114 0.972 0.456 0
SEL1L3 0 1.751997 0.953 0.415 0
GSTP1 0 3.016667 0.810 0.231 0
TNFRSF17 0 2.649153 0.815 0.129 0
VDR 0 4.919369 0.693 0.048 0
UBA5 0 6.689569 0.667 0.048 0
SEC14L1 0 2.132668 0.883 0.279 0
FAM214A 0 2.059008 0.889 0.231 0
DERL3 0 2.225560 0.880 0.177 0
NLK 0 3.002123 0.713 0.082 0
MGAT2 0 2.219769 0.814 0.116 0
ISG20 0 1.941068 0.912 0.265 0
DYNLRB1 0 5.040090 0.677 0.088 0
LITAF 0 3.892324 0.705 0.156 0
SPATS2 0 2.038529 0.831 0.136 0
METTL7A 0 2.146070 0.813 0.122 0

Plasma B : Plasma B cells_2 vs Plasma B cells_3

Top 50 markers: Plasma B cells_2 vs Plasma B cells_3
p_val avg_log2FC pct.1 pct.2 p_val_adj
IGHG1 0 4.6088653 0.840 0.494 0e+00
ITM2C 0 1.8708475 0.857 0.848 0e+00
PECAM1 0 3.9957929 0.594 0.330 0e+00
ADA2 0 1.9121072 0.781 0.883 0e+00
IGHG3 0 5.4863256 0.561 0.268 0e+00
TXNIP 0 2.8123406 0.676 0.623 0e+00
IGKC 0 2.4049321 0.788 0.741 0e+00
SDC1 0 3.6097670 0.563 0.368 0e+00
TENT5C 0 1.2360914 0.792 0.961 0e+00
XBP1 0 1.0184824 0.926 0.989 0e+00
PLPP5 0 2.1167920 0.684 0.810 0e+00
KLK1 0 0.5312858 0.101 0.312 0e+00
TBC1D9 0 3.6995162 0.415 0.233 0e+00
PRDX4 0 1.3508995 0.776 0.820 0e+00
SSR4 0 0.8785987 0.913 0.978 0e+00
ITGA6 0 4.8713741 0.324 0.139 0e+00
PDK1 0 1.6566101 0.662 0.676 0e+00
FOS 0 0.7163121 0.337 0.702 0e+00
CD44 0 1.4603506 0.594 0.583 0e+00
TSPAN3 0 1.9064752 0.500 0.388 0e+00
GAS6 0 3.1686924 0.368 0.244 0e+00
CTSD 0 0.8114894 0.270 0.564 0e+00
SEL1L 0 1.1250956 0.751 0.817 0e+00
NPC2 0 1.5641469 0.657 0.791 0e+00
CFAP54 0 2.2754972 0.198 0.433 0e+00
SLAMF7 0 1.4829819 0.667 0.779 0e+00
P2RX1 0 0.6957675 0.262 0.529 0e+00
B9D1 0 1.0329859 0.226 0.459 0e+00
S100A11 0 0.7233804 0.251 0.499 0e+00
PSAP 0 1.1897219 0.686 0.874 0e+00
SAMD9L 0 0.6599331 0.324 0.652 0e+00
DNAJB9 0 1.2473348 0.702 0.850 0e+00
CREB3L2 0 0.6919015 0.414 0.791 0e+00
RBM47 0 1.5993293 0.232 0.467 0e+00
CXCR4 0 0.9746345 0.529 0.441 0e+00
ULK1 0 0.6623173 0.192 0.370 0e+00
CCPG1 0 1.7398020 0.572 0.698 0e+00
WFS1 0 0.8608077 0.256 0.465 0e+00
FCGR2B 0 2.2418062 0.331 0.256 0e+00
FOSB 0 1.0468143 0.301 0.540 0e+00
ODF3B 0 0.7164995 0.249 0.448 0e+00
VPS37B 0 0.5731839 0.206 0.373 0e+00
RAB3D 0 0.6705100 0.186 0.335 0e+00
APOL1 0 0.7291712 0.206 0.373 0e+00
FNDC3B 0 1.2906977 0.623 0.777 1e-07
LIMD1 0 0.7047063 0.377 0.702 1e-07
ATP2B4 0 0.9335047 0.190 0.346 2e-07
EMP3 0 0.9697197 0.504 0.513 2e-07
FAM174A 0 0.7739225 0.159 0.288 2e-07
IL10RB 0 1.1312105 0.243 0.445 2e-07

Plasma B : Plasma B cells_2 vs Plasma B cells_4

Top 50 markers: Plasma B cells_2 vs Plasma B cells_4
p_val avg_log2FC pct.1 pct.2 p_val_adj
TENT5C 0 2.5179273 0.792 0.143 0
FBXW7 0 2.5859633 0.761 0.156 0
DERL3 0 2.3431184 0.799 0.177 0
TXNDC5 0 2.2311104 0.914 0.456 0
TXNIP 0 3.0571412 0.676 0.245 0
ARSA 0 6.3324878 0.502 0.041 0
SLAMF7 0 1.6369323 0.667 0.122 0
PDK1 0 1.7124770 0.662 0.129 0
TXNDC11 0 1.6457073 0.741 0.197 0
NPC2 0 1.5619893 0.657 0.122 0
POU2AF1 0 1.9646899 0.757 0.449 0
HYOU1 0 1.8870557 0.631 0.116 0
CD79A 0 1.2749216 0.942 0.741 0
PLD3 0 1.5489503 0.556 0.075 0
ZBP1 0 2.0238003 0.561 0.082 0
FNDC3B 0 1.2034469 0.623 0.109 0
ADA2 0 1.0914005 0.781 0.218 0
PSAP 0 1.4486276 0.686 0.163 0
PCMTD1 0 1.6785533 0.617 0.129 0
CCPG1 0 0.7046137 0.572 0.082 0
TSPAN3 0 2.3578972 0.500 0.048 0
SLC35B1 0 4.0244595 0.455 0.027 0
SELENOK 0 1.1746082 0.624 0.122 0
PRDM1 0 1.7527325 0.627 0.129 0
HIPK2 0 2.0165316 0.481 0.048 0
ERLEC1 0 1.1635314 0.687 0.170 0
PLPP5 0 1.0526405 0.684 0.163 0
TBC1D9 0 4.5805435 0.415 0.014 0
IGHA1 0 16.6962836 0.432 0.048 0
DYNLRB1 0 4.8647568 0.466 0.088 0
REEP5 0 1.4421832 0.595 0.116 0
MAPKAPK2 0 2.5200541 0.571 0.150 0
TP53INP1 0 1.7818256 0.577 0.116 0
RRBP1 0 1.4359914 0.526 0.082 0
HDLBP 0 1.1966229 0.583 0.116 0
CRELD2 0 0.9641654 0.615 0.136 0
RPN1 0 1.1471368 0.530 0.088 0
RPN2 0 1.1247379 0.595 0.122 0
SEC24A 0 1.3285041 0.512 0.075 0
TMEM59 0 1.0337425 0.563 0.102 0
IFI6 0 2.9357088 0.457 0.054 0
FKBP11 0 0.8579383 0.832 0.279 0
CTSS 0 1.5527149 0.537 0.095 0
KLHL6 0 2.1915235 0.545 0.259 0
ERGIC3 0 1.3970431 0.636 0.156 0
XBP1 0 1.4436010 0.926 0.565 0
MYDGF 0 1.0861289 0.740 0.224 0
DERL1 0 0.7576779 0.639 0.156 0
GALNT2 0 1.2284700 0.478 0.068 0
EIF2AK3 0 4.5007512 0.427 0.075 0

Plasma B : Plasma B cells_3 vs Plasma B cells_4

Top 50 markers: Plasma B cells_3 vs Plasma B cells_4
p_val avg_log2FC pct.1 pct.2 p_val_adj
POU2AF1 0 3.720737 0.971 0.449 0
UBE2J1 0 3.503080 0.986 0.558 0
EDEM1 0 3.293960 0.971 0.422 0
SYVN1 0 3.466081 0.945 0.252 0
CCDC69 0 4.127556 0.887 0.245 0
MAPKAPK2 0 3.547553 0.927 0.150 0
CD79A 0 2.520211 0.988 0.741 0
TXNDC5 0 2.562139 0.994 0.456 0
GSTP1 0 4.072814 0.890 0.231 0
KLHL6 0 4.843316 0.857 0.259 0
SEC14L1 0 3.196859 0.926 0.279 0
EEF2 0 1.944405 0.991 0.721 0
CALR 0 2.785263 0.934 0.143 0
CHPF2 0 3.615526 0.817 0.075 0
SLC35B1 0 4.858978 0.805 0.027 0
BTG2 0 2.472853 0.979 0.401 0
JCHAIN 0 3.233184 0.975 0.429 0
ARF1 0 2.942833 0.892 0.150 0
SF3B5 0 4.757657 0.789 0.088 0
CTSH 0 3.461705 0.862 0.259 0
TNFRSF17 0 3.340275 0.873 0.129 0
HYOU1 0 2.519024 0.922 0.116 0
FAM107B 0 4.249232 0.835 0.320 0
CD38 0 2.829048 0.926 0.299 0
EZR 0 6.237012 0.847 0.524 0
EIF2AK3 0 5.756637 0.764 0.075 0
PLCG2 0 2.819621 0.890 0.272 0
MZB1 0 1.892044 0.996 0.537 0
UBA5 0 6.674189 0.755 0.048 0
SEL1L3 0 2.369162 0.959 0.415 0
PRDM1 0 2.248052 0.946 0.129 0
CCNI 0 2.553032 0.906 0.327 0
TUFM 0 3.100025 0.844 0.197 0
USP48 0 3.033673 0.848 0.122 0
SEMA4A 0 8.278419 0.754 0.088 0
HNRNPC 0 6.455939 0.782 0.197 0
TXNDC11 0 2.063737 0.980 0.197 0
TOP1 0 3.593476 0.817 0.224 0
LITAF 0 3.545522 0.782 0.156 0
BAG6 0 8.198896 0.748 0.109 0
TMEM184B 0 2.226170 0.833 0.068 0
CCM2 0 3.309842 0.801 0.095 0
TRIB1 0 2.161479 0.815 0.054 0
CCDC88A 0 7.528682 0.754 0.136 0
ISG20 0 2.213006 0.953 0.265 0
RBM6 0 5.044023 0.751 0.122 0
BST2 0 3.087783 0.855 0.143 0
TENT5C 0 1.281836 0.961 0.143 0
BLNK 0 2.878099 0.837 0.156 0
PPIB 0 2.033483 0.958 0.177 0

Overview of l1,l2 and l3

paed_sub$cell_labels_l2 <- as.character(paed_sub$cell_labels_l1)
paed_sub$cell_labels_l3 <- as.character(paed_sub$cell_labels_l2)

for (obj in list(naive_b,memory_b,gc_b,plasma_b)) {
  cells <- intersect(colnames(paed_sub), colnames(obj))
  paed_sub$cell_labels_l2[cells] <- as.character(obj$cell_labels_l2[cells])
  paed_sub$cell_labels_l3[cells] <- as.character(obj$cell_labels_l3[cells])
}

paed_sub$cell_labels_l2 <- factor(paed_sub$cell_labels_l2)
paed_sub$cell_labels_l3 <- factor(paed_sub$cell_labels_l3)
DimPlot(paed_sub, reduction = "umap.bcells", raster = F, repel = T, label = T, group.by = "lineage")

DimPlot(paed_sub, reduction = "umap.bcells", raster = F, repel = T, label = T, group.by = "cell_labels_l1")

DimPlot(paed_sub, reduction = "umap.bcells", raster = F, repel = T, label = T, group.by = "cell_labels_l1", split.by = "tissue")

bcell_l2_order <- c(
  "Pre B",
  "Naïve B",
  "Naïve B-IFN",
  "Naïve B activated",
  "Early MBC",
  "csMBC",
  "ncsMBC",
  "FCRL4or5",
  "Non-Cycling GCB_0",
  "Non-Cycling GCB_1",
  "Non-Cycling GCB_2",
  "Non-Cycling GCB_3",
  "Cycling GCB_0",
  "Cycling GCB_1",
  "Cycling GCB_2",
  "Cycling GCB_3",
  "Plasma B cells_1",
  "Plasma B cells_2",
  "Plasma B cells_3",
  "Plasma B cells_4"
)

paed_sub$cell_labels_l2 <- factor(
  paed_sub$cell_labels_l2,
  levels = bcell_l2_order
)
DimPlot(paed_sub, reduction = "umap.bcells", raster = F, repel = T, label = T, group.by = "cell_labels_l2")

bcell_l3_order <- c(
  "Pre B",

  "Naïve B_0",
  "Naïve B_1",
  "Naïve B_2",
  "Naïve B_3",

  "Naïve B-IFN_0",
  "Naïve B-IFN_1",

  "Naïve B activated_0",
  "Naïve B activated_1",

  "Early MBC",

  "csMBC_0",
  "csMBC_1",

  "ncsMBC_0",
  "ncsMBC_1",

  "FCRL4or5_0",
  "FCRL4or5_1",
  "FCRL4or5_2",
  "FCRL4or5_3",

  "Non-Cycling GCB_0",
  "Non-Cycling GCB_1",
  "Non-Cycling GCB_2",
  "Non-Cycling GCB_3",

  "Cycling GCB_0",
  "Cycling GCB_1",
  "Cycling GCB_2",
  "Cycling GCB_3",

  "Plasma B cells_1",
  "Plasma B cells_2",
  "Plasma B cells_3",
  "Plasma B cells_4"
)

paed_sub$cell_labels_l3 <- factor(
  paed_sub$cell_labels_l3,
  levels = bcell_l3_order
)
DimPlot(paed_sub, reduction = "umap.bcells", raster = F, repel = T, label = T, group.by = "cell_labels_l3")

paed_sub@meta.data %>%
  count(cell_labels_l3, tissue) %>%
  group_by(cell_labels_l3) %>%
  mutate(total = sum(n)) %>%
  ungroup() %>%
  #mutate(cell_labels_l3 = reorder(cell_labels_l3, total)) %>%
  ggplot(aes(x = cell_labels_l3, y = n, fill = tissue)) +
  geom_col() +
  geom_text(
    data = function(df) distinct(df, cell_labels_l3, total),
    aes(x = cell_labels_l3, y = total, label = total),
    inherit.aes = FALSE,
    hjust = -0.1,
    size = 3
  ) +
  coord_flip() +
  theme_classic() +
  labs(
    x = NULL,
    y = "Cell count",
    fill = "Tissue",
    title = "Cell counts by L3 cell type (stacked by tissue)"
  )

paed_sub@meta.data %>%
    count(cell_labels_l3, donor) %>%
    group_by(cell_labels_l3) %>%
    mutate(prop = n / sum(n)) %>%  # proportion per L3
    ungroup() %>%
    ggplot(aes(x = cell_labels_l3, y = prop, fill = donor)) +
    geom_col(width = 0.9) +
    scale_y_continuous(labels = scales::percent) +
    scale_fill_viridis_d(option = "turbo", guide = guide_legend(ncol = 2)) +
    theme_classic() +
    theme(axis.text.x = element_text(angle = 45, hjust = 1)) +
    labs(
        x = NULL,
        y = "Proportion",
        fill = "Donor",
        title = "Donor composition per L3 cell type"
    )

Save RDS

saveRDS(paed_sub, "../EarlyAir_paper/output/RDS/Annotated_lineages/SEU_B_Cells_annotated.rds")

Session Info

sessionInfo()
R version 4.3.3 (2024-02-29)
Platform: aarch64-apple-darwin20 (64-bit)
Running under: macOS 15.7.3

Matrix products: default
BLAS:   /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/lib/libRblas.0.dylib 
LAPACK: /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/lib/libRlapack.dylib;  LAPACK version 3.11.0

locale:
[1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8

time zone: Australia/Melbourne
tzcode source: internal

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
 [1] presto_1.0.0        circlize_0.4.16     BiocParallel_1.36.0
 [4] harmony_1.2.3       Rcpp_1.0.14         patchwork_1.3.0    
 [7] cowplot_1.1.3       data.table_1.17.2   RColorBrewer_1.1-3 
[10] kableExtra_1.4.0    ggridges_0.5.6      ggforce_0.4.2      
[13] viridis_0.6.5       viridisLite_0.4.2   paletteer_1.6.0    
[16] clustree_0.5.1      ggraph_2.2.1        Seurat_5.0.3       
[19] SeuratObject_5.1.0  sp_2.2-0            here_1.0.1         
[22] lubridate_1.9.4     forcats_1.0.0       stringr_1.5.1      
[25] dplyr_1.1.4         purrr_1.0.4         readr_2.1.5        
[28] tidyr_1.3.1         tibble_3.2.1        ggplot2_3.5.2      
[31] tidyverse_2.0.0     BiocStyle_2.30.0    workflowr_1.7.1    

loaded via a namespace (and not attached):
  [1] RcppAnnoy_0.0.22       splines_4.3.3          later_1.4.2           
  [4] prismatic_1.1.2        polyclip_1.10-7        fastDummies_1.7.5     
  [7] lifecycle_1.0.4        rprojroot_2.0.4        globals_0.17.0        
 [10] processx_3.8.6         lattice_0.22-5         MASS_7.3-60.0.1       
 [13] backports_1.5.0        magrittr_2.0.3         limma_3.58.1          
 [16] plotly_4.10.4          sass_0.4.10            rmarkdown_2.29        
 [19] jquerylib_0.1.4        yaml_2.3.10            httpuv_1.6.16         
 [22] sctransform_0.4.2      spam_2.11-1            spatstat.sparse_3.1-0 
 [25] reticulate_1.42.0      pbapply_1.7-2          abind_1.4-8           
 [28] Rtsne_0.17             tweenr_2.0.3           git2r_0.36.2          
 [31] ggrepel_0.9.6          irlba_2.3.5.1          listenv_0.9.1         
 [34] spatstat.utils_3.1-4   goftest_1.2-3          RSpectra_0.16-2       
 [37] spatstat.random_3.4-1  fitdistrplus_1.2-2     parallelly_1.44.0     
 [40] svglite_2.2.1          leiden_0.4.3.1         codetools_0.2-19      
 [43] xml2_1.3.8             tidyselect_1.2.1       shape_1.4.6.1         
 [46] farver_2.1.2           matrixStats_1.5.0      spatstat.explore_3.4-3
 [49] jsonlite_2.0.0         tidygraph_1.3.1        progressr_0.15.1      
 [52] survival_3.5-8         systemfonts_1.2.3      tools_4.3.3           
 [55] ica_1.0-3              glue_1.8.0             gridExtra_2.3         
 [58] xfun_0.52              withr_3.0.2            BiocManager_1.30.25   
 [61] fastmap_1.2.0          callr_3.7.6            digest_0.6.37         
 [64] timechange_0.3.0       R6_2.6.1               mime_0.13             
 [67] textshaping_1.0.1      colorspace_2.1-1       scattermore_1.2       
 [70] tensor_1.5             spatstat.data_3.1-6    utf8_1.2.5            
 [73] generics_0.1.4         graphlayouts_1.2.2     httr_1.4.7            
 [76] htmlwidgets_1.6.4      whisker_0.4.1          uwot_0.2.3            
 [79] pkgconfig_2.0.3        gtable_0.3.6           lmtest_0.9-40         
 [82] htmltools_0.5.8.1      dotCall64_1.2          scales_1.4.0          
 [85] png_0.1-8              spatstat.univar_3.1-3  knitr_1.50            
 [88] rstudioapi_0.17.1      tzdb_0.5.0             reshape2_1.4.4        
 [91] checkmate_2.3.2        nlme_3.1-164           cachem_1.1.0          
 [94] zoo_1.8-14             GlobalOptions_0.1.2    KernSmooth_2.23-22    
 [97] vipor_0.4.7            parallel_4.3.3         miniUI_0.1.2          
[100] ggrastr_1.0.2          pillar_1.10.2          grid_4.3.3            
[103] vctrs_0.6.5            RANN_2.6.2             promises_1.3.2        
[106] xtable_1.8-4           cluster_2.1.6          beeswarm_0.4.0        
[109] evaluate_1.0.3         cli_3.6.5              compiler_4.3.3        
[112] rlang_1.1.6            crayon_1.5.3           future.apply_1.11.3   
[115] labeling_0.4.3         rematch2_2.1.2         ps_1.9.1              
[118] ggbeeswarm_0.7.2       getPass_0.2-4          plyr_1.8.9            
[121] fs_1.6.6               stringi_1.8.7          deldir_2.0-4          
[124] lazyeval_0.2.2         spatstat.geom_3.4-1    Matrix_1.6-5          
[127] RcppHNSW_0.6.0         hms_1.1.3              future_1.40.0         
[130] statmod_1.5.0          shiny_1.10.0           ROCR_1.0-11           
[133] igraph_2.1.4           memoise_2.0.1          bslib_0.9.0           

sessionInfo()
R version 4.3.3 (2024-02-29)
Platform: aarch64-apple-darwin20 (64-bit)
Running under: macOS 15.7.3

Matrix products: default
BLAS:   /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/lib/libRblas.0.dylib 
LAPACK: /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/lib/libRlapack.dylib;  LAPACK version 3.11.0

locale:
[1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8

time zone: Australia/Melbourne
tzcode source: internal

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
 [1] presto_1.0.0        circlize_0.4.16     BiocParallel_1.36.0
 [4] harmony_1.2.3       Rcpp_1.0.14         patchwork_1.3.0    
 [7] cowplot_1.1.3       data.table_1.17.2   RColorBrewer_1.1-3 
[10] kableExtra_1.4.0    ggridges_0.5.6      ggforce_0.4.2      
[13] viridis_0.6.5       viridisLite_0.4.2   paletteer_1.6.0    
[16] clustree_0.5.1      ggraph_2.2.1        Seurat_5.0.3       
[19] SeuratObject_5.1.0  sp_2.2-0            here_1.0.1         
[22] lubridate_1.9.4     forcats_1.0.0       stringr_1.5.1      
[25] dplyr_1.1.4         purrr_1.0.4         readr_2.1.5        
[28] tidyr_1.3.1         tibble_3.2.1        ggplot2_3.5.2      
[31] tidyverse_2.0.0     BiocStyle_2.30.0    workflowr_1.7.1    

loaded via a namespace (and not attached):
  [1] RcppAnnoy_0.0.22       splines_4.3.3          later_1.4.2           
  [4] prismatic_1.1.2        polyclip_1.10-7        fastDummies_1.7.5     
  [7] lifecycle_1.0.4        rprojroot_2.0.4        globals_0.17.0        
 [10] processx_3.8.6         lattice_0.22-5         MASS_7.3-60.0.1       
 [13] backports_1.5.0        magrittr_2.0.3         limma_3.58.1          
 [16] plotly_4.10.4          sass_0.4.10            rmarkdown_2.29        
 [19] jquerylib_0.1.4        yaml_2.3.10            httpuv_1.6.16         
 [22] sctransform_0.4.2      spam_2.11-1            spatstat.sparse_3.1-0 
 [25] reticulate_1.42.0      pbapply_1.7-2          abind_1.4-8           
 [28] Rtsne_0.17             tweenr_2.0.3           git2r_0.36.2          
 [31] ggrepel_0.9.6          irlba_2.3.5.1          listenv_0.9.1         
 [34] spatstat.utils_3.1-4   goftest_1.2-3          RSpectra_0.16-2       
 [37] spatstat.random_3.4-1  fitdistrplus_1.2-2     parallelly_1.44.0     
 [40] svglite_2.2.1          leiden_0.4.3.1         codetools_0.2-19      
 [43] xml2_1.3.8             tidyselect_1.2.1       shape_1.4.6.1         
 [46] farver_2.1.2           matrixStats_1.5.0      spatstat.explore_3.4-3
 [49] jsonlite_2.0.0         tidygraph_1.3.1        progressr_0.15.1      
 [52] survival_3.5-8         systemfonts_1.2.3      tools_4.3.3           
 [55] ica_1.0-3              glue_1.8.0             gridExtra_2.3         
 [58] xfun_0.52              withr_3.0.2            BiocManager_1.30.25   
 [61] fastmap_1.2.0          callr_3.7.6            digest_0.6.37         
 [64] timechange_0.3.0       R6_2.6.1               mime_0.13             
 [67] textshaping_1.0.1      colorspace_2.1-1       scattermore_1.2       
 [70] tensor_1.5             spatstat.data_3.1-6    utf8_1.2.5            
 [73] generics_0.1.4         graphlayouts_1.2.2     httr_1.4.7            
 [76] htmlwidgets_1.6.4      whisker_0.4.1          uwot_0.2.3            
 [79] pkgconfig_2.0.3        gtable_0.3.6           lmtest_0.9-40         
 [82] htmltools_0.5.8.1      dotCall64_1.2          scales_1.4.0          
 [85] png_0.1-8              spatstat.univar_3.1-3  knitr_1.50            
 [88] rstudioapi_0.17.1      tzdb_0.5.0             reshape2_1.4.4        
 [91] checkmate_2.3.2        nlme_3.1-164           cachem_1.1.0          
 [94] zoo_1.8-14             GlobalOptions_0.1.2    KernSmooth_2.23-22    
 [97] vipor_0.4.7            parallel_4.3.3         miniUI_0.1.2          
[100] ggrastr_1.0.2          pillar_1.10.2          grid_4.3.3            
[103] vctrs_0.6.5            RANN_2.6.2             promises_1.3.2        
[106] xtable_1.8-4           cluster_2.1.6          beeswarm_0.4.0        
[109] evaluate_1.0.3         cli_3.6.5              compiler_4.3.3        
[112] rlang_1.1.6            crayon_1.5.3           future.apply_1.11.3   
[115] labeling_0.4.3         rematch2_2.1.2         ps_1.9.1              
[118] ggbeeswarm_0.7.2       getPass_0.2-4          plyr_1.8.9            
[121] fs_1.6.6               stringi_1.8.7          deldir_2.0-4          
[124] lazyeval_0.2.2         spatstat.geom_3.4-1    Matrix_1.6-5          
[127] RcppHNSW_0.6.0         hms_1.1.3              future_1.40.0         
[130] statmod_1.5.0          shiny_1.10.0           ROCR_1.0-11           
[133] igraph_2.1.4           memoise_2.0.1          bslib_0.9.0