From e527546271dc12605b4b185d1e7562baa48991cc Mon Sep 17 00:00:00 2001
From: Zhiyu <zhiyu.zhao@utsouthwestern.edu>
Date: Tue, 16 May 2023 22:26:29 +0000
Subject: [PATCH] Bug fixed for fold change with empty groups when imputation
 is not enabled.

---
 V2.0c/ODA/statTests.R | 28 ++++++++++++++++++++--------
 1 file changed, 20 insertions(+), 8 deletions(-)

diff --git a/V2.0c/ODA/statTests.R b/V2.0c/ODA/statTests.R
index bcb29be..5357eff 100644
--- a/V2.0c/ODA/statTests.R
+++ b/V2.0c/ODA/statTests.R
@@ -57,15 +57,27 @@ fold_change=function(dataList,groups,groupMeanLowerBound,logTransform) {
 		for (i in unique(temp$Feature)) {
 			featureData=temp[temp$Feature==i,]
 			res[[names1[1]]][i]=mean(featureData$Value[featureData$GroupID==g],na.rm=T)
-			res[[names1[2]]][i]=sd(featureData$Value[featureData$GroupID==g],na.rm=T)
-			res[[names1[3]]][i]=res[[names1[1]]][i]
-			if (res[[names1[3]]][i]<groupMeanLowerBound)
-				res[[names1[3]]][i]=groupMeanLowerBound
+			if (!is.nan(res[[names1[1]]][i])) {	#Added on 5/16/23 for cases where the group is empty and no imputation is used.
+				res[[names1[2]]][i]=sd(featureData$Value[featureData$GroupID==g],na.rm=T)
+				res[[names1[3]]][i]=res[[names1[1]]][i]
+				if (res[[names1[3]]][i]<groupMeanLowerBound)
+					res[[names1[3]]][i]=groupMeanLowerBound
+			} else {
+				res[[names1[1]]][i]=NA
+				res[[names1[2]]][i]=NA
+				res[[names1[3]]][i]=NA
+			}
 			res[[names2[1]]][i]=mean(featureData$Value[featureData$GroupID!=g],na.rm=T)
-			res[[names2[2]]][i]=sd(featureData$Value[featureData$GroupID!=g],na.rm=T)
-			res[[names2[3]]][i]=res[[names2[1]]][i]
-			if (res[[names2[3]]][i]<groupMeanLowerBound)
-				res[[names2[3]]][i]=groupMeanLowerBound
+			if (!is.nan(res[[names2[1]]][i])) {	#Added on 5/16/23 for cases where the group is empty and no imputation is used.
+				res[[names2[2]]][i]=sd(featureData$Value[featureData$GroupID!=g],na.rm=T)
+				res[[names2[3]]][i]=res[[names2[1]]][i]
+				if (res[[names2[3]]][i]<groupMeanLowerBound)
+					res[[names2[3]]][i]=groupMeanLowerBound
+			} else {
+				res[[names2[1]]][i]=NA
+				res[[names2[2]]][i]=NA
+				res[[names2[3]]][i]=NA
+			}
 			if (logTransform) {
 				res[[paste0('log2_',fcName)]][i]=res[[names1[3]]][i]-res[[names2[3]]][i]
 				res[[fcName]][i]=2^res[[paste0('log2_',fcName)]][i]
-- 
GitLab