3. Volcano Plots for All Genes
3.1 Volcano Plot for MAST with Batch Correction
EnhancedVolcano(markers_mast_batch,
lab = markers_mast_batch$gene,
x = "avg_log2FC",
y = "p_val_adj",
title = "MAST with Batch Correction (All Genes)",
pCutoff = 0.05,
FCcutoff = 1.0)
Avis : One or more p-values is 0. Converting to 10^-1 * current lowest non-zero p-value...

3.2 Volcano Plot for Wilcoxon Test
EnhancedVolcano(markers_wilcox,
lab = markers_wilcox$gene,
x = "avg_log2FC",
y = "p_val_adj",
title = "Wilcoxon Test (All Genes)",
pCutoff = 0.05,
FCcutoff = 1.0)
Avis : One or more p-values is 0. Converting to 10^-1 * current lowest non-zero p-value...

3.3 Volcano Plot for MAST without Batch Correction
EnhancedVolcano(markers_mast_no_batch,
lab = markers_mast_no_batch$gene,
x = "avg_log2FC",
y = "p_val_adj",
title = "MAST without Batch Correction (All Genes)",
pCutoff = 0.05,
FCcutoff = 1.0)
Avis : One or more p-values is 0. Converting to 10^-1 * current lowest non-zero p-value...

4. Filter and Summarize Results
4.1 Apply Expression Filter First
# Apply the expression filter first
markers_mast_batch <- markers_mast_batch %>%
filter(!(mean_expr_group1 < 0.2 & mean_expr_group2 < 0.2))
markers_wilcox <- markers_wilcox %>%
filter(!(mean_expr_group1 < 0.2 & mean_expr_group2 < 0.2))
markers_mast_no_batch <- markers_mast_no_batch %>%
filter(!(mean_expr_group1 < 0.2 & mean_expr_group2 < 0.2))
4.2 Apply Additional Filters for Statistical Significance and Fold
Change
# Define filtering criteria
p_val_threshold <- 0.05
logfc_threshold <- 1
# Apply additional filters for markers_mast_batch
filtered_markers_mast_batch <- markers_mast_batch %>%
filter(p_val_adj < p_val_threshold & abs(avg_log2FC) > logfc_threshold)
# Apply additional filters for markers_wilcox
filtered_markers_wilcox <- markers_wilcox %>%
filter(p_val_adj < p_val_threshold & abs(avg_log2FC) > logfc_threshold)
# Apply additional filters for markers_mast_no_batch
filtered_markers_mast_no_batch <- markers_mast_no_batch %>%
filter(p_val_adj < p_val_threshold & abs(avg_log2FC) > logfc_threshold)
# Save filtered results
write.csv(filtered_markers_mast_batch, file = "0-imp_Robj/1-MAST_with_batch_as_Covariate_filtered.csv", row.names = TRUE)
write.csv(filtered_markers_wilcox, file = "0-imp_Robj/2-Wilcox_min.pct_logfcT-Default_filtered.csv", row.names = TRUE)
write.csv(filtered_markers_mast_no_batch, file = "0-imp_Robj/3-MAST_without_batch_as_Covariate_filtered.csv", row.names = TRUE)
4.3 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")
}
4.4 Summarize Markers1 (MAST with Batch Correction)
cat("Markers1 Summary (MAST with Batch Correction):\n")
Markers1 Summary (MAST with Batch Correction):
summarize_markers(filtered_markers_mast_batch)
Number of genes with p_val_adj = 0: 0
Number of genes with p_val_adj = 1: 0
Number of significant genes (p_val_adj < 0.05): 3133
Number of upregulated genes (avg_log2FC > 1): 3042
Number of downregulated genes (avg_log2FC < -1): 91
4.5 Summarize Markers2 (Wilcoxon Test)
cat("Markers2 Summary (Wilcoxon Test):\n")
Markers2 Summary (Wilcoxon Test):
summarize_markers(filtered_markers_wilcox)
Number of genes with p_val_adj = 0: 3933
Number of genes with p_val_adj = 1: 0
Number of significant genes (p_val_adj < 0.05): 4630
Number of upregulated genes (avg_log2FC > 1): 4503
Number of downregulated genes (avg_log2FC < -1): 127
4.6 Summarize Markers3 (MAST without Batch Correction)
cat("Markers3 Summary (MAST without Batch Correction):\n")
Markers3 Summary (MAST without Batch Correction):
summarize_markers(filtered_markers_mast_no_batch)
Number of genes with p_val_adj = 0: 4090
Number of genes with p_val_adj = 1: 0
Number of significant genes (p_val_adj < 0.05): 4630
Number of upregulated genes (avg_log2FC > 1): 4503
Number of downregulated genes (avg_log2FC < -1): 127
LS0tCnRpdGxlOiAiRGlmZmVyZW50aWFsIEV4cHJlc3Npb24gQW5hbHlzaXMgLSBGaWx0ZXJpbmcgYW5kIFZpc3VhbGl6YXRpb24iCmF1dGhvcjogTmFzaXIgTWFobW9vZCBBYmJhc2kKZGF0ZTogImByIFN5cy5EYXRlKClgIgpvdXRwdXQ6CiAgaHRtbF9ub3RlYm9vazoKICAgIHRvYzogdHJ1ZQogICAgdG9jX2Zsb2F0OiB0cnVlCiAgICB0b2NfY29sbGFwc2VkOiB0cnVlCi0tLQoKIyMgMS4gTG9hZCBMaWJyYXJpZXMKYGBge3Igc2V0dXAsIGluY2x1ZGU9RkFMU0V9CmxpYnJhcnkoZHBseXIpCmxpYnJhcnkoZ2dwbG90MikKbGlicmFyeShFbmhhbmNlZFZvbGNhbm8pCmxpYnJhcnkocGhlYXRtYXApCmxpYnJhcnkodGliYmxlKQpgYGAKCiMjIDIuIExvYWQgRGF0YQojIyMgMi4xIExvYWQgQ1NWIEZpbGVzIHdpdGggTWVhbiBFeHByZXNzaW9uCmBgYHtyfQojIExvYWQgdGhlIENTViBmaWxlcyB3aXRoIG1lYW4gZXhwcmVzc2lvbiBkYXRhCm1hcmtlcnNfbWFzdF9iYXRjaCA8LSByZWFkLmNzdigiMC1pbXBfUm9iai8xLU1BU1Rfd2l0aF9iYXRjaF9hc19Db3ZhcmlhdGVfd2l0aF9tZWFuRXhwcmVzc2lvbi5jc3YiLCByb3cubmFtZXMgPSAxKQptYXJrZXJzX3dpbGNveCA8LSByZWFkLmNzdigiMC1pbXBfUm9iai8yLVdpbGNveF9taW4ucGN0X2xvZ2ZjVC0wX3dpdGhfbWVhbkV4cHJlc3Npb24uY3N2Iiwgcm93Lm5hbWVzID0gMSkKbWFya2Vyc19tYXN0X25vX2JhdGNoIDwtIHJlYWQuY3N2KCIwLWltcF9Sb2JqLzMtTUFTVF93aXRob3V0X2JhdGNoX2FzX0NvdmFyaWF0ZV93aXRoX21lYW5FeHByZXNzaW9uLmNzdiIsIHJvdy5uYW1lcyA9IDEpCmBgYAoKIyMgMy4gVm9sY2FubyBQbG90cyBmb3IgQWxsIEdlbmVzCiMjIyAzLjEgVm9sY2FubyBQbG90IGZvciBNQVNUIHdpdGggQmF0Y2ggQ29ycmVjdGlvbgpgYGB7ciwgZmlnLmhlaWdodD0xMiwgZmlnLndpZHRoPTEyfQpFbmhhbmNlZFZvbGNhbm8obWFya2Vyc19tYXN0X2JhdGNoLAogICAgICAgICAgICAgICAgbGFiID0gbWFya2Vyc19tYXN0X2JhdGNoJGdlbmUsCiAgICAgICAgICAgICAgICB4ID0gImF2Z19sb2cyRkMiLAogICAgICAgICAgICAgICAgeSA9ICJwX3ZhbF9hZGoiLAogICAgICAgICAgICAgICAgdGl0bGUgPSAiTUFTVCB3aXRoIEJhdGNoIENvcnJlY3Rpb24gKEFsbCBHZW5lcykiLAogICAgICAgICAgICAgICAgcEN1dG9mZiA9IDAuMDUsCiAgICAgICAgICAgICAgICBGQ2N1dG9mZiA9IDEuMCkKYGBgCgojIyMgMy4yIFZvbGNhbm8gUGxvdCBmb3IgV2lsY294b24gVGVzdApgYGB7ciwgZmlnLmhlaWdodD0xMiwgZmlnLndpZHRoPTEyfQpFbmhhbmNlZFZvbGNhbm8obWFya2Vyc193aWxjb3gsCiAgICAgICAgICAgICAgICBsYWIgPSBtYXJrZXJzX3dpbGNveCRnZW5lLAogICAgICAgICAgICAgICAgeCA9ICJhdmdfbG9nMkZDIiwKICAgICAgICAgICAgICAgIHkgPSAicF92YWxfYWRqIiwKICAgICAgICAgICAgICAgIHRpdGxlID0gIldpbGNveG9uIFRlc3QgKEFsbCBHZW5lcykiLAogICAgICAgICAgICAgICAgcEN1dG9mZiA9IDAuMDUsCiAgICAgICAgICAgICAgICBGQ2N1dG9mZiA9IDEuMCkKYGBgCgojIyMgMy4zIFZvbGNhbm8gUGxvdCBmb3IgTUFTVCB3aXRob3V0IEJhdGNoIENvcnJlY3Rpb24KYGBge3IsIGZpZy5oZWlnaHQ9MTIsIGZpZy53aWR0aD0xMn0KRW5oYW5jZWRWb2xjYW5vKG1hcmtlcnNfbWFzdF9ub19iYXRjaCwKICAgICAgICAgICAgICAgIGxhYiA9IG1hcmtlcnNfbWFzdF9ub19iYXRjaCRnZW5lLAogICAgICAgICAgICAgICAgeCA9ICJhdmdfbG9nMkZDIiwKICAgICAgICAgICAgICAgIHkgPSAicF92YWxfYWRqIiwKICAgICAgICAgICAgICAgIHRpdGxlID0gIk1BU1Qgd2l0aG91dCBCYXRjaCBDb3JyZWN0aW9uIChBbGwgR2VuZXMpIiwKICAgICAgICAgICAgICAgIHBDdXRvZmYgPSAwLjA1LAogICAgICAgICAgICAgICAgRkNjdXRvZmYgPSAxLjApCmBgYAoKIyMgNC4gRmlsdGVyIGFuZCBTdW1tYXJpemUgUmVzdWx0cwojIyMgNC4xIEFwcGx5IEV4cHJlc3Npb24gRmlsdGVyIEZpcnN0CmBgYHtyfQojIEFwcGx5IHRoZSBleHByZXNzaW9uIGZpbHRlciBmaXJzdAptYXJrZXJzX21hc3RfYmF0Y2ggPC0gbWFya2Vyc19tYXN0X2JhdGNoICU+JQogIGZpbHRlcighKG1lYW5fZXhwcl9ncm91cDEgPCAwLjIgJiBtZWFuX2V4cHJfZ3JvdXAyIDwgMC4yKSkKCm1hcmtlcnNfd2lsY294IDwtIG1hcmtlcnNfd2lsY294ICU+JQogIGZpbHRlcighKG1lYW5fZXhwcl9ncm91cDEgPCAwLjIgJiBtZWFuX2V4cHJfZ3JvdXAyIDwgMC4yKSkKCm1hcmtlcnNfbWFzdF9ub19iYXRjaCA8LSBtYXJrZXJzX21hc3Rfbm9fYmF0Y2ggJT4lCiAgZmlsdGVyKCEobWVhbl9leHByX2dyb3VwMSA8IDAuMiAmIG1lYW5fZXhwcl9ncm91cDIgPCAwLjIpKQpgYGAKCiMjIyA0LjIgQXBwbHkgQWRkaXRpb25hbCBGaWx0ZXJzIGZvciBTdGF0aXN0aWNhbCBTaWduaWZpY2FuY2UgYW5kIEZvbGQgQ2hhbmdlCmBgYHtyfQojIERlZmluZSBmaWx0ZXJpbmcgY3JpdGVyaWEKcF92YWxfdGhyZXNob2xkIDwtIDAuMDUKbG9nZmNfdGhyZXNob2xkIDwtIDEKCiMgQXBwbHkgYWRkaXRpb25hbCBmaWx0ZXJzIGZvciBtYXJrZXJzX21hc3RfYmF0Y2gKZmlsdGVyZWRfbWFya2Vyc19tYXN0X2JhdGNoIDwtIG1hcmtlcnNfbWFzdF9iYXRjaCAlPiUKICBmaWx0ZXIocF92YWxfYWRqIDwgcF92YWxfdGhyZXNob2xkICYgYWJzKGF2Z19sb2cyRkMpID4gbG9nZmNfdGhyZXNob2xkKQoKIyBBcHBseSBhZGRpdGlvbmFsIGZpbHRlcnMgZm9yIG1hcmtlcnNfd2lsY294CmZpbHRlcmVkX21hcmtlcnNfd2lsY294IDwtIG1hcmtlcnNfd2lsY294ICU+JQogIGZpbHRlcihwX3ZhbF9hZGogPCBwX3ZhbF90aHJlc2hvbGQgJiBhYnMoYXZnX2xvZzJGQykgPiBsb2dmY190aHJlc2hvbGQpCgojIEFwcGx5IGFkZGl0aW9uYWwgZmlsdGVycyBmb3IgbWFya2Vyc19tYXN0X25vX2JhdGNoCmZpbHRlcmVkX21hcmtlcnNfbWFzdF9ub19iYXRjaCA8LSBtYXJrZXJzX21hc3Rfbm9fYmF0Y2ggJT4lCiAgZmlsdGVyKHBfdmFsX2FkaiA8IHBfdmFsX3RocmVzaG9sZCAmIGFicyhhdmdfbG9nMkZDKSA+IGxvZ2ZjX3RocmVzaG9sZCkKCiMgU2F2ZSBmaWx0ZXJlZCByZXN1bHRzCndyaXRlLmNzdihmaWx0ZXJlZF9tYXJrZXJzX21hc3RfYmF0Y2gsIGZpbGUgPSAiMC1pbXBfUm9iai8xLU1BU1Rfd2l0aF9iYXRjaF9hc19Db3ZhcmlhdGVfZmlsdGVyZWQuY3N2Iiwgcm93Lm5hbWVzID0gVFJVRSkKd3JpdGUuY3N2KGZpbHRlcmVkX21hcmtlcnNfd2lsY294LCBmaWxlID0gIjAtaW1wX1JvYmovMi1XaWxjb3hfbWluLnBjdF9sb2dmY1QtRGVmYXVsdF9maWx0ZXJlZC5jc3YiLCByb3cubmFtZXMgPSBUUlVFKQp3cml0ZS5jc3YoZmlsdGVyZWRfbWFya2Vyc19tYXN0X25vX2JhdGNoLCBmaWxlID0gIjAtaW1wX1JvYmovMy1NQVNUX3dpdGhvdXRfYmF0Y2hfYXNfQ292YXJpYXRlX2ZpbHRlcmVkLmNzdiIsIHJvdy5uYW1lcyA9IFRSVUUpCmBgYAoKIyMjIDQuMyBTdW1tYXJ5IEZ1bmN0aW9uCmBgYHtyfQpzdW1tYXJpemVfbWFya2VycyA8LSBmdW5jdGlvbihtYXJrZXJzKSB7CiAgbnVtX3B2YWwwIDwtIHN1bShtYXJrZXJzJHBfdmFsX2FkaiA9PSAwKQogIG51bV9wdmFsMSA8LSBzdW0obWFya2VycyRwX3ZhbF9hZGogPT0gMSkKICBudW1fc2lnbmlmaWNhbnQgPC0gc3VtKG1hcmtlcnMkcF92YWxfYWRqIDwgMC4wNSkKICBudW1fdXByZWd1bGF0ZWQgPC0gc3VtKG1hcmtlcnMkYXZnX2xvZzJGQyA+IDEpCiAgbnVtX2Rvd25yZWd1bGF0ZWQgPC0gc3VtKG1hcmtlcnMkYXZnX2xvZzJGQyA8IC0xKQogIAogIGNhdCgiTnVtYmVyIG9mIGdlbmVzIHdpdGggcF92YWxfYWRqID0gMDoiLCBudW1fcHZhbDAsICJcbiIpCiAgY2F0KCJOdW1iZXIgb2YgZ2VuZXMgd2l0aCBwX3ZhbF9hZGogPSAxOiIsIG51bV9wdmFsMSwgIlxuIikKICBjYXQoIk51bWJlciBvZiBzaWduaWZpY2FudCBnZW5lcyAocF92YWxfYWRqIDwgMC4wNSk6IiwgbnVtX3NpZ25pZmljYW50LCAiXG4iKQogIGNhdCgiTnVtYmVyIG9mIHVwcmVndWxhdGVkIGdlbmVzIChhdmdfbG9nMkZDID4gMSk6IiwgbnVtX3VwcmVndWxhdGVkLCAiXG4iKQogIGNhdCgiTnVtYmVyIG9mIGRvd25yZWd1bGF0ZWQgZ2VuZXMgKGF2Z19sb2cyRkMgPCAtMSk6IiwgbnVtX2Rvd25yZWd1bGF0ZWQsICJcbiIpCn0KYGBgCgojIyMgNC40IFN1bW1hcml6ZSBNYXJrZXJzMSAoTUFTVCB3aXRoIEJhdGNoIENvcnJlY3Rpb24pCmBgYHtyfQpjYXQoIk1hcmtlcnMxIFN1bW1hcnkgKE1BU1Qgd2l0aCBCYXRjaCBDb3JyZWN0aW9uKTpcbiIpCnN1bW1hcml6ZV9tYXJrZXJzKGZpbHRlcmVkX21hcmtlcnNfbWFzdF9iYXRjaCkKYGBgCgojIyMgNC41IFN1bW1hcml6ZSBNYXJrZXJzMiAoV2lsY294b24gVGVzdCkKYGBge3J9CmNhdCgiTWFya2VyczIgU3VtbWFyeSAoV2lsY294b24gVGVzdCk6XG4iKQpzdW1tYXJpemVfbWFya2VycyhmaWx0ZXJlZF9tYXJrZXJzX3dpbGNveCkKYGBgCgojIyMgNC42IFN1bW1hcml6ZSBNYXJrZXJzMyAoTUFTVCB3aXRob3V0IEJhdGNoIENvcnJlY3Rpb24pCmBgYHtyfQpjYXQoIk1hcmtlcnMzIFN1bW1hcnkgKE1BU1Qgd2l0aG91dCBCYXRjaCBDb3JyZWN0aW9uKTpcbiIpCnN1bW1hcml6ZV9tYXJrZXJzKGZpbHRlcmVkX21hcmtlcnNfbWFzdF9ub19iYXRjaCkKYGBgCgojIyA1LiBWaXN1YWxpemF0aW9uIG9mIEZpbHRlcmVkIFJlc3VsdHMKIyMjIDUuMSBWb2xjYW5vIFBsb3QgZm9yIEZpbHRlcmVkIE1BU1Qgd2l0aCBCYXRjaCBDb3JyZWN0aW9uCmBgYHtyLCBmaWcuaGVpZ2h0PTEyLCBmaWcud2lkdGg9MTJ9CkVuaGFuY2VkVm9sY2FubyhmaWx0ZXJlZF9tYXJrZXJzX21hc3RfYmF0Y2gsCiAgICAgICAgICAgICAgICBsYWIgPSBmaWx0ZXJlZF9tYXJrZXJzX21hc3RfYmF0Y2gkZ2VuZSwKICAgICAgICAgICAgICAgIHggPSAiYXZnX2xvZzJGQyIsCiAgICAgICAgICAgICAgICB5ID0gInBfdmFsX2FkaiIsCiAgICAgICAgICAgICAgICB0aXRsZSA9ICJGaWx0ZXJlZCBNQVNUIHdpdGggQmF0Y2ggQ29ycmVjdGlvbiIsCiAgICAgICAgICAgICAgICBwQ3V0b2ZmID0gMC4wNSwKICAgICAgICAgICAgICAgIEZDY3V0b2ZmID0gMS4wKQpgYGAKCgo=