From fef0d7d37b2065c4309bbc6186b2e4f0d9050bcd Mon Sep 17 00:00:00 2001 From: Christian Beckmann <c.beckmann@donders.ru.nl> Date: Mon, 27 Feb 2012 23:02:50 +0000 Subject: [PATCH] Concat for unequal number of volumes --- meldata.cc | 15 +++++++++++++-- meldata.h | 4 ++++ melodic.cc | 6 +++--- melreport.cc | 2 ++ 4 files changed, 22 insertions(+), 5 deletions(-) diff --git a/meldata.cc b/meldata.cc index 207ede2..7810c18 100644 --- a/meldata.cc +++ b/meldata.cc @@ -139,10 +139,13 @@ namespace Melodic{ void MelodicData::set_TSmode() { Matrix tmp, tmpT, tmpS, tmpT2, tmpS2, tmpT3; + tmp = expand_dimred(mixMatrix); tmpT = zeros(tmp.Nrows()/numfiles, tmp.Ncols()); tmpS = zeros(numfiles, tmp.Ncols()); - explained_var = krfact(tmp,tmpT,tmpS); + + if(opts.approach.value()==string("tica")){ + explained_var = krfact(tmp,tmpT,tmpS); outMsize("tmp",tmp); outMsize("tmpT",tmpT); outMsize("tmpS",tmpS); @@ -164,7 +167,7 @@ namespace Melodic{ add_Smodes(tmpS2); } // } - + //add GLM OLS fit if(Tdes.Storage()){ Matrix alltcs = Tmodes.at(0).Column(1); @@ -180,6 +183,14 @@ namespace Melodic{ if((alltcs.Nrows()==Sdes.Nrows())&&(Sdes.Nrows()>Sdes.Ncols()&&alltcs.Nrows()>2)) glmS.olsfit(alltcs,Sdes,Scon); } + + } +// else{ +// add_Tmodes(tmp); +// } + + dbgmsg(string("END: set_TSmode")); + } void MelodicData::setup() diff --git a/meldata.h b/meldata.h index 8d579bb..c4e0460 100644 --- a/meldata.h +++ b/meldata.h @@ -76,20 +76,24 @@ namespace Melodic{ inline Matrix& get_Smodes(int what) {return Smodes.at(what);} inline void add_Smodes(Matrix& Arg) {Smodes.push_back(Arg);} inline void save_Smodes(){ + if(Smodes.size()>0){ Matrix tmp = Smodes.at(0); for(unsigned int ctr = 1; ctr < Smodes.size(); ctr++) tmp |= Smodes.at(ctr); saveascii(tmp,opts.outputfname.value() + "_Smodes"); + } } inline vector<Matrix>& get_Tmodes() {return Tmodes;} inline Matrix& get_Tmodes(int what) {return Tmodes.at(what);} inline void add_Tmodes(Matrix& Arg) {Tmodes.push_back(Arg);} inline void save_Tmodes(){ + if(Tmodes.size()>0){ Matrix tmp = Tmodes.at(0); for(unsigned int ctr = 1; ctr < Tmodes.size(); ctr++) tmp |= Tmodes.at(ctr); saveascii(tmp,opts.outputfname.value() + "_Tmodes"); + } } void set_TSmode(); diff --git a/melodic.cc b/melodic.cc index bfa713a..b78b5ff 100644 --- a/melodic.cc +++ b/melodic.cc @@ -331,9 +331,9 @@ Matrix mmall(Log& logger, MelodicOptions& opts,MelodicData& melodat, MelodicRepo message(" saving probability map: "); melodat.save4D(mixmod.get_probmap(), string("stats/probmap_")+num2str(ctr)); -%% message(" saving mixture model fit:"); -%% melodat.saveascii(mixmod.get_params(), -%% string("stats/MMstats_")+num2str(ctr)); + message(" saving mixture model fit:"); + melodat.saveascii(mixmod.get_params(), + string("stats/MMstats_")+num2str(ctr)); } //re-scale spatial maps to mean 0 for nht diff --git a/melreport.cc b/melreport.cc index abe803a..a1bc2f6 100644 --- a/melreport.cc +++ b/melreport.cc @@ -770,6 +770,7 @@ namespace Melodic{ } void MelodicReport::Smode_rep(){ + if(melodat.get_Smodes().size()>0){ report << "<p><hr><b>TICA Subject/Session modes </b> <br>" << endl; miscplot newplot; report << "Boxplots show the relative response amplitudes across the " @@ -789,5 +790,6 @@ namespace Melodic{ newplot.boxplot(allmodes,report.appendDir(string("bp_Smodes.png")), string("Subject/Session modes")); report << "<img BORDER=0 SRC=\"bp_Smodes.png\"><p>" << endl; + } } } -- GitLab