1. Load Libraries

2. Load Data

2.1 Load CSV Files with Mean Expression

3. Summarize Results

3.1 Summary Function

summarize_markers <- function(markers) {
  num_pval0 <- sum(markers$p_val_adj == 0)
  num_pval1 <- sum(markers$p_val_adj == 1)
  num_significant <- sum(markers$p_val_adj < 0.05)
  num_upregulated <- sum(markers$avg_log2FC > 1)
  num_downregulated <- sum(markers$avg_log2FC < -1)
  
  cat("Number of genes with p_val_adj = 0:", num_pval0, "\n")
  cat("Number of genes with p_val_adj = 1:", num_pval1, "\n")
  cat("Number of significant genes (p_val_adj < 0.05):", num_significant, "\n")
  cat("Number of upregulated genes (avg_log2FC > 1):", num_upregulated, "\n")
  cat("Number of downregulated genes (avg_log2FC < -1):", num_downregulated, "\n")
}

3.2 Summarize Markers1 (markers_wilcox_RNA)

cat("Markers1 Summary (MAST with Batch Correction):\n")
Markers1 Summary (MAST with Batch Correction):
summarize_markers(markers_wilcox_RNA)
Number of genes with p_val_adj = 0: 3424 
Number of genes with p_val_adj = 1: 20820 
Number of significant genes (p_val_adj < 0.05): 15047 
Number of upregulated genes (avg_log2FC > 1): 7080 
Number of downregulated genes (avg_log2FC < -1): 16205 

3.3 Summary for Markers2 (markers_wilcox_SCT)

cat("Markers2 Summary (Wilcoxon Test):\n")
Markers2 Summary (Wilcoxon Test):
summarize_markers(markers_wilcox_SCT)
Number of genes with p_val_adj = 0: 4486 
Number of genes with p_val_adj = 1: 10140 
Number of significant genes (p_val_adj < 0.05): 15313 
Number of upregulated genes (avg_log2FC > 1): 14958 
Number of downregulated genes (avg_log2FC < -1): 2379 

4. Volcano Plots for All Genes

4.1 Volcano Plot for MAST with Batch Correction

EnhancedVolcano(markers_wilcox_RNA,
                lab = rownames(markers_wilcox_RNA),
                x = "avg_log2FC",
                y = "p_val_adj",
                title = "Wilcox with RNA assay (All Genes)",
                pCutoff = 0.05,
                FCcutoff = 1.0)
Warning: One or more p-values is 0. Converting to 10^-1 * current lowest non-zero p-value...

4.2 Volcano Plot for Wilcoxon Test

EnhancedVolcano(markers_wilcox_SCT,
                lab = rownames(markers_wilcox_SCT),
                x = "avg_log2FC",
                y = "p_val_adj",
                title = "Wilcoxon with SCT assay (All Genes)",
                pCutoff = 0.05,
                FCcutoff = 1.0)
Warning: One or more p-values is 0. Converting to 10^-1 * current lowest non-zero p-value...

LS0tCnRpdGxlOiAiRGlmZmVyZW50aWFsIEV4cHJlc3Npb24gQW5hbHlzaXMgLSBGaWx0ZXJpbmcgYW5kIFZpc3VhbGl6YXRpb24tTkVXVU1BUCIKYXV0aG9yOiBOYXNpciBNYWhtb29kIEFiYmFzaQpkYXRlOiAiYHIgU3lzLkRhdGUoKWAiCm91dHB1dDoKICBodG1sX25vdGVib29rOgogICAgdG9jOiB0cnVlCiAgICB0b2NfZmxvYXQ6IHRydWUKICAgIHRvY19jb2xsYXBzZWQ6IHRydWUKLS0tCgojIDEuIExvYWQgTGlicmFyaWVzCmBgYHtyIHNldHVwLCBpbmNsdWRlPUZBTFNFfQpsaWJyYXJ5KGRwbHlyKQpsaWJyYXJ5KGdncGxvdDIpCmxpYnJhcnkoRW5oYW5jZWRWb2xjYW5vKQpsaWJyYXJ5KHBoZWF0bWFwKQpsaWJyYXJ5KHRpYmJsZSkKYGBgCgojIDIuIExvYWQgRGF0YQojIyAyLjEgTG9hZCBDU1YgRmlsZXMgd2l0aCBNZWFuIEV4cHJlc3Npb24KYGBge3J9CgojIExvYWQgdGhlIENTViBmaWxlcyB3aXRoIG1lYW4gZXhwcmVzc2lvbiBkYXRhCm1hcmtlcnNfd2lsY294X1JOQSA8LSByZWFkLmNzdigiTWFsaWduYW50X0NENFRjZWxsc192c19Ob3JtYWxfQ0Q0VGNlbGxzX1JOQV9Bc3NheV9XaWxjb3guY3N2Iiwgcm93Lm5hbWVzID0gMSkKbWFya2Vyc193aWxjb3hfU0NUIDwtIHJlYWQuY3N2KCJNYWxpZ25hbnRfQ0Q0VGNlbGxzX3ZzX05vcm1hbF9DRDRUY2VsbHNfU0NUX1NDVHJhbnNmb3JtZWRfV2lsY294LmNzdiIsIHJvdy5uYW1lcyA9IDEpCgoKYGBgCgojIDMuIFN1bW1hcml6ZSBSZXN1bHRzCiMjIDMuMSBTdW1tYXJ5IEZ1bmN0aW9uCmBgYHtyfQpzdW1tYXJpemVfbWFya2VycyA8LSBmdW5jdGlvbihtYXJrZXJzKSB7CiAgbnVtX3B2YWwwIDwtIHN1bShtYXJrZXJzJHBfdmFsX2FkaiA9PSAwKQogIG51bV9wdmFsMSA8LSBzdW0obWFya2VycyRwX3ZhbF9hZGogPT0gMSkKICBudW1fc2lnbmlmaWNhbnQgPC0gc3VtKG1hcmtlcnMkcF92YWxfYWRqIDwgMC4wNSkKICBudW1fdXByZWd1bGF0ZWQgPC0gc3VtKG1hcmtlcnMkYXZnX2xvZzJGQyA+IDEpCiAgbnVtX2Rvd25yZWd1bGF0ZWQgPC0gc3VtKG1hcmtlcnMkYXZnX2xvZzJGQyA8IC0xKQogIAogIGNhdCgiTnVtYmVyIG9mIGdlbmVzIHdpdGggcF92YWxfYWRqID0gMDoiLCBudW1fcHZhbDAsICJcbiIpCiAgY2F0KCJOdW1iZXIgb2YgZ2VuZXMgd2l0aCBwX3ZhbF9hZGogPSAxOiIsIG51bV9wdmFsMSwgIlxuIikKICBjYXQoIk51bWJlciBvZiBzaWduaWZpY2FudCBnZW5lcyAocF92YWxfYWRqIDwgMC4wNSk6IiwgbnVtX3NpZ25pZmljYW50LCAiXG4iKQogIGNhdCgiTnVtYmVyIG9mIHVwcmVndWxhdGVkIGdlbmVzIChhdmdfbG9nMkZDID4gMSk6IiwgbnVtX3VwcmVndWxhdGVkLCAiXG4iKQogIGNhdCgiTnVtYmVyIG9mIGRvd25yZWd1bGF0ZWQgZ2VuZXMgKGF2Z19sb2cyRkMgPCAtMSk6IiwgbnVtX2Rvd25yZWd1bGF0ZWQsICJcbiIpCn0KCmBgYAoKIyMgMy4yIFN1bW1hcml6ZSBNYXJrZXJzMSAobWFya2Vyc193aWxjb3hfUk5BKQpgYGB7cn0KY2F0KCJNYXJrZXJzMSBTdW1tYXJ5IChNQVNUIHdpdGggQmF0Y2ggQ29ycmVjdGlvbik6XG4iKQpzdW1tYXJpemVfbWFya2VycyhtYXJrZXJzX3dpbGNveF9STkEpCgpgYGAKCiMjIDMuMyBTdW1tYXJ5IGZvciBNYXJrZXJzMiAobWFya2Vyc193aWxjb3hfU0NUKQpgYGB7cn0KY2F0KCJNYXJrZXJzMiBTdW1tYXJ5IChXaWxjb3hvbiBUZXN0KTpcbiIpCnN1bW1hcml6ZV9tYXJrZXJzKG1hcmtlcnNfd2lsY294X1NDVCkKYGBgCgoKIyA0LiBWb2xjYW5vIFBsb3RzIGZvciBBbGwgR2VuZXMKIyMgNC4xIFZvbGNhbm8gUGxvdCBmb3IgTUFTVCB3aXRoIEJhdGNoIENvcnJlY3Rpb24KYGBge3IsIGZpZy5oZWlnaHQ9MTIsIGZpZy53aWR0aD0xMn0KRW5oYW5jZWRWb2xjYW5vKG1hcmtlcnNfd2lsY294X1JOQSwKICAgICAgICAgICAgICAgIGxhYiA9IHJvd25hbWVzKG1hcmtlcnNfd2lsY294X1JOQSksCiAgICAgICAgICAgICAgICB4ID0gImF2Z19sb2cyRkMiLAogICAgICAgICAgICAgICAgeSA9ICJwX3ZhbF9hZGoiLAogICAgICAgICAgICAgICAgdGl0bGUgPSAiV2lsY294IHdpdGggUk5BIGFzc2F5IChBbGwgR2VuZXMpIiwKICAgICAgICAgICAgICAgIHBDdXRvZmYgPSAwLjA1LAogICAgICAgICAgICAgICAgRkNjdXRvZmYgPSAxLjApCmBgYAoKIyMgNC4yIFZvbGNhbm8gUGxvdCBmb3IgV2lsY294b24gVGVzdApgYGB7ciwgZmlnLmhlaWdodD0xMiwgZmlnLndpZHRoPTEyfQpFbmhhbmNlZFZvbGNhbm8obWFya2Vyc193aWxjb3hfU0NULAogICAgICAgICAgICAgICAgbGFiID0gcm93bmFtZXMobWFya2Vyc193aWxjb3hfU0NUKSwKICAgICAgICAgICAgICAgIHggPSAiYXZnX2xvZzJGQyIsCiAgICAgICAgICAgICAgICB5ID0gInBfdmFsX2FkaiIsCiAgICAgICAgICAgICAgICB0aXRsZSA9ICJXaWxjb3hvbiB3aXRoIFNDVCBhc3NheSAoQWxsIEdlbmVzKSIsCiAgICAgICAgICAgICAgICBwQ3V0b2ZmID0gMC4wNSwKICAgICAgICAgICAgICAgIEZDY3V0b2ZmID0gMS4wKQpgYGAKCgo=