From 04635c65da66f82c5a5f011eeca2668a6753c38d Mon Sep 17 00:00:00 2001
From: Christian Beckmann <c.beckmann@donders.ru.nl>
Date: Mon, 6 Jul 2009 22:20:33 +0000
Subject: [PATCH] added full data normalisation

---
 fsl_glm.cc | 25 ++++++++++++++-----------
 1 file changed, 14 insertions(+), 11 deletions(-)

diff --git a/fsl_glm.cc b/fsl_glm.cc
index fc2f1b9..c4f1bea 100644
--- a/fsl_glm.cc
+++ b/fsl_glm.cc
@@ -22,8 +22,8 @@ using namespace std;
 // The two strings below specify the title and example usage that is
 // printed out as the help or usage message
 
-  string title=string("fsl_glm (Version 1.05)")+
-		string("\nCopyright(c) 2004-2008, University of Oxford (Christian F. Beckmann)\n")+
+  string title=string("fsl_glm (Version 1.1)")+
+		string("\nCopyright(c) 2004-2009, University of Oxford (Christian F. Beckmann)\n")+
 		string(" \n Simple GLM usign ordinary least-squares (OLS) regression on\n")+
 		string(" time courses and/or 3D/4D imges against time courses \n")+
 		string(" or 3D/4D images\n\n");
@@ -54,6 +54,9 @@ using namespace std;
 	Option<bool> normdes(string("--des_norm"),FALSE,
 		string("switch on normalisation of the design matrix columns to unit std. deviation"),
 		false, no_argument);
+	Option<bool> normdat(string("--dat_norm"),FALSE,
+		string("switch on normalisation of the data time series to unit std. deviation"),
+		false, no_argument);
 	Option<bool> perfvn(string("--vn"),FALSE,
 		string("        perform MELODIC variance-normalisation on data"),
 		false, no_argument);
@@ -161,14 +164,17 @@ int setup(){
 		
 		data = tmpdata.matrix(mask);
 		voxels = data.Ncols();
-		if(perf_demean.value())
-			data = remmean(data,1);
-		if(perfvn.value())
-			vnscales = Melodic::varnorm(data);
 	}
 	else
 		data = read_ascii_matrix(fnin.value());	
 
+	if(perf_demean.value())
+		data = remmean(data,1);
+	if(perfvn.value())
+		vnscales = Melodic::varnorm(data);
+	if(normdat.value())
+		data =  SP(data,ones(data.Nrows(),1)*pow(stdev(data,1),-1));
+
 	if(fsl_imageexists(fndesign.value())){//read design
 		volume4D<float> tmpdata;
 		read_volume4D(tmpdata,fndesign.value());
@@ -183,11 +189,7 @@ int setup(){
 	}
 
 	meanR=mean(data,1);
-	if(perf_demean.value()){
-		data = remmean(data,1);
-		design = remmean(design,1);
-	}
-	
+	if(perf_demean.value()){	
 	if(normdes.value())
 		design =  SP(design,ones(design.Nrows(),1)*pow(stdev(design,1),-1));
 
@@ -256,6 +258,7 @@ int main(int argc,char *argv[]){
 			options.add(fnftest);
 			options.add(dofset);
 			options.add(normdes);
+			options.add(normdat);
 			options.add(perfvn);
 			options.add(perf_demean);
 			options.add(help);
-- 
GitLab