diff --git a/V2.1/CRI_HMDB_KEGG_IDs.xlsx b/V2.1/CRI_HMDB_KEGG_IDs.xlsx
index 91d0e08c41acd49325eef0c17cc4b6337f6009e4..65f7dcfceba68514955686a1a034a78b8c89ee9d 100755
Binary files a/V2.1/CRI_HMDB_KEGG_IDs.xlsx and b/V2.1/CRI_HMDB_KEGG_IDs.xlsx differ
diff --git a/V2.1/ODA/MetaboAnalyst_3.0.3/enrich_path_stats.R b/V2.1/ODA/MetaboAnalyst_3.0.3/enrich_path_stats.R
index a7efe78077114ecc690acc7633980e4f27f40fa1..5ce86faf7dbc4d4022d0649290a81ed1ce5bd390 100755
--- a/V2.1/ODA/MetaboAnalyst_3.0.3/enrich_path_stats.R
+++ b/V2.1/ODA/MetaboAnalyst_3.0.3/enrich_path_stats.R
@@ -31,7 +31,7 @@ CalculateOraScore1 <- function(mSetObj=NA, nodeImp, method){
   }
   q.size<-length(ora.vec);
 
-  if(is.na(ora.vec) || q.size==0) {
+  if(q.size==0) {	#Removed "|| is.na(ora.vec)" by ZZY on 7/31/24.
     if(mSetObj$pathwaylibtype == "KEGG"){
       AddErrMsg("No valid KEGG compounds found!");
     } else if(mSetObj$pathwaylibtype == "SMPDB"){
diff --git a/V2.1/ODA/MetaboAnalyst_3.0.3/enrich_stats.R b/V2.1/ODA/MetaboAnalyst_3.0.3/enrich_stats.R
index d84f33df5640780d4893786a3d19c65132cc1c8f..b59f57fe3a96b1c33a764b0c2f15431305db8785 100755
--- a/V2.1/ODA/MetaboAnalyst_3.0.3/enrich_stats.R
+++ b/V2.1/ODA/MetaboAnalyst_3.0.3/enrich_stats.R
@@ -26,7 +26,7 @@ CalculateHyperScore1 <- function(mSetObj=NA){
 
   q.size<-length(ora.vec);
   
-  if(is.na(ora.vec) || q.size==0) {
+  if(q.size==0) {	#Removed "|| is.na(ora.vec)" by ZZY on 7/31/24.
     AddErrMsg("No valid HMDB compound names found!");
     return(0);
   }
diff --git a/V2.1/ODA/MetaboAnalyst_3.0.3/qs/compound_db.qs b/V2.1/ODA/MetaboAnalyst_3.0.3/qs/compound_db.qs
index 5d32ec145e2e7810307ebbb006c48cded1be4bcf..21b880d7bd04e101d01a9527d18079a5550b8220 100644
Binary files a/V2.1/ODA/MetaboAnalyst_3.0.3/qs/compound_db.qs and b/V2.1/ODA/MetaboAnalyst_3.0.3/qs/compound_db.qs differ
diff --git a/V2.1/ODA/MetaboAnalyst_3.0.3/qs/metpa/kegg/mmu.qs b/V2.1/ODA/MetaboAnalyst_3.0.3/qs/metpa/kegg/mmu.qs
index 544d1192f179392c3a358d882cb9964dfa8ccadc..87b1a114720e17e8cc062aac84a62392c7e50425 100644
Binary files a/V2.1/ODA/MetaboAnalyst_3.0.3/qs/metpa/kegg/mmu.qs and b/V2.1/ODA/MetaboAnalyst_3.0.3/qs/metpa/kegg/mmu.qs differ
diff --git a/V2.1/ODA/ODA.R b/V2.1/ODA/ODA.R
index ed516c22a58d1445c60d2902f0102c4f2151f423..4fc143a464326fa3beb5dad75a85db89042e8097 100755
--- a/V2.1/ODA/ODA.R
+++ b/V2.1/ODA/ODA.R
@@ -94,31 +94,32 @@ if (odaObj$attributes$nInterestedFeatures>0) {
 	rowOffset=rowOffset+odaObj$attributes$nInterestedFeatures+3
 	wbObj=writeTable(wbObj,'Selected_Features',odaObj$presentGroups[odaObj$features$interested,,drop=F],'Group_Counts',odaObj$featureDescription,rowOffset,0)
 
+}
+##############################End Writing Selected Features#####################################
+
 ##############################Begin MSEA-ORA Analysis by MetaboAnalyst#####################################
-	if (odaObj$parameters$oraMethod=='msea-ora'&&odaObj$parameters$eaDB!='no'&&!is.null(odaObj$features$eaMetabolites)) {
-		eaPath=file.path(odaObj$eaPath,paste0(odaObj$parameters$eaDB,'_MSEA-ORA'))
-		if (file.exists(eaPath)&&!rlang::is_empty(dir(eaPath))) {
-			stop('ORA folder is not empty.')
-		} else {
-			dir.create(eaPath,recursive=T,showWarnings=F)
-			MSEA_ORA(file.path(eaPath,'msea_ora'),rownames(odaObj$features$eaMetabolites),odaObj$features$refMetabolites,idType=odaObj$features$eaMetaboliteIDType,dbType=odaObj$parameters$eaDB,lipid=(odaObj$parameters$featureType=='lipid'),eaFile=odaObj$parameters$eaFile)
-		}
+if (odaObj$parameters$oraMethod=='msea-ora'&&odaObj$parameters$eaDB!='no'&&!is.null(odaObj$features$eaMetabolites)) {
+	eaPath=file.path(odaObj$eaPath,paste0(odaObj$parameters$eaDB,'_MSEA-ORA'))
+	if (file.exists(eaPath)&&!rlang::is_empty(dir(eaPath))) {
+		stop('ORA folder is not empty.')
+	} else {
+		dir.create(eaPath,recursive=T,showWarnings=F)
+		MSEA_ORA(file.path(eaPath,'msea_ora'),rownames(odaObj$features$eaMetabolites),odaObj$features$refMetabolites,idType=odaObj$features$eaMetaboliteIDType,dbType=odaObj$parameters$eaDB,lipid=(odaObj$parameters$featureType=='lipid'),eaFile=odaObj$parameters$eaFile)
 	}
+}
 ##############################End MSEA-ORA Analysis by MetaboAnalyst#####################################
 
 ##############################Begin MSPA-ORA Analysis by MetaboAnalyst#####################################
-	if (odaObj$parameters$oraMethod=='mspa-ora'&&odaObj$parameters$eaDB!='no'&&!is.null(odaObj$features$eaMetabolites)) {
-		eaPath=file.path(odaObj$eaPath,paste0(odaObj$parameters$eaDB,'_MSPA-ORA'))
-		if (file.exists(eaPath)&&!rlang::is_empty(dir(eaPath))) {
-			stop('ORA folder is not empty.')
-		} else {
-			dir.create(eaPath,recursive=T,showWarnings=F)
-			MSPA_ORA(file.path(eaPath,'mspa_ora'),rownames(odaObj$features$eaMetabolites),odaObj$features$refMetabolites,idType=odaObj$features$eaMetaboliteIDType,dbType=odaObj$parameters$eaDB,odaObj$parameters$species,eaFile=odaObj$parameters$eaFile)
-		}
+if (odaObj$parameters$oraMethod=='mspa-ora'&&odaObj$parameters$eaDB!='no'&&!is.null(odaObj$features$eaMetabolites)) {
+	eaPath=file.path(odaObj$eaPath,paste0(odaObj$parameters$eaDB,'_MSPA-ORA'))
+	if (file.exists(eaPath)&&!rlang::is_empty(dir(eaPath))) {
+		stop('ORA folder is not empty.')
+	} else {
+		dir.create(eaPath,recursive=T,showWarnings=F)
+		MSPA_ORA(file.path(eaPath,'mspa_ora'),rownames(odaObj$features$eaMetabolites),odaObj$features$refMetabolites,idType=odaObj$features$eaMetaboliteIDType,dbType=odaObj$parameters$eaDB,odaObj$parameters$species,eaFile=odaObj$parameters$eaFile)
 	}
-##############################End MSPA-ORA Analysis by MetaboAnalyst#####################################
 }
-##############################End Writing Selected Features#####################################
+##############################End MSPA-ORA Analysis by MetaboAnalyst#####################################
 
 ##############################Begin JointPA Analysis by MetaboAnalyst#####################################
 if ((!is.null(odaObj$features$eaMetabolites)||!is.null(odaObj$features$eaGenes))&&odaObj$parameters$jointPA!='no') {
diff --git a/V2.1/oda.sh b/V2.1/oda_analysis.sh
similarity index 100%
rename from V2.1/oda.sh
rename to V2.1/oda_analysis.sh