Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
/* MELODIC - Multivariate exploratory linear optimized decomposition into
independent components
meldata.h - data container class
Christian F. Beckmann, FMRIB Image Analysis Group
Copyright (C) 1999-2002 University of Oxford */
/* CCOPYRIGHT */
#ifndef __MELODICDATA_h
#define __MELODICDATA_h
#include "newimageall.h"
#include "log.h"
#include "meloptions.h"
using namespace Utilities;
using namespace NEWIMAGE;
namespace Melodic{
class MelodicData
{
public:
//constructor
MelodicData(MelodicOptions &popts, Log &plogger):
opts(popts),
logger(plogger)
{
}
void save();
inline void save4D(Matrix what, string fname){
volume4D<float> tempVol;
tempVol.setmatrix(what,Mask);
save_volume4D(tempVol,logger.appendDir(fname),tempInfo);
}
inline void saveascii(Matrix what, string fname){
write_ascii_matrix(logger.appendDir(fname),what); }
int remove_components();
void setup();
void status(const string &txt);
inline Matrix& get_pcaE() {return pcaE;}
inline void set_pcaE(Matrix& Arg) {pcaE = Arg;}
inline DiagonalMatrix& get_pcaD() {return pcaD;}
inline void set_pcaD(DiagonalMatrix& Arg) {pcaD = Arg;}
inline Matrix& get_data() {return Data;}
inline void set_data(Matrix& Arg) {Data = Arg;}
inline Matrix& get_IC() {return IC;}
inline void set_IC(Matrix& Arg) {IC = Arg;}
inline Matrix& get_white() {return whiteMatrix;}
inline void set_white(Matrix& Arg) {whiteMatrix = Arg;}
inline Matrix& get_dewhite() {return dewhiteMatrix;}
inline void set_dewhite(Matrix& Arg) {dewhiteMatrix = Arg;}
inline Matrix& get_meanC() {return meanC;}
inline Matrix& get_meanR() {return meanR;}
inline Matrix& get_stdDevi() {return stdDevi;}
inline void set_stdDevi(Matrix& Arg) {stdDevi = Arg;}
inline Matrix& get_mix() {return mixMatrix;}
inline void set_mix(Matrix& Arg) {mixMatrix = Arg;}
inline Matrix& get_fmix() {return mixFFT;}
inline void set_fmix(Matrix& Arg) {mixFFT = Arg;}
inline Matrix& get_unmix() {return unmixMatrix;}
inline void set_unmix(Matrix& Arg) {unmixMatrix = Arg;}
inline volume<float>& get_mask() {return Mask;}
inline void set_mask(volume<float>& Arg) {Mask = Arg;}
inline volume<float>& get_mean() {return Mean;}
inline void set_mean(volume<float>& Arg) {Mean = Arg;}
inline Matrix& get_Data() {return Data;}
inline void set_Data(Matrix& Arg) {Data = Arg;}
inline Matrix& get_DataVN() {return DataVN;}
inline void set_DataVN(Matrix& Arg) {DataVN = Arg;}
inline Matrix& get_RXweight() {return RXweight;}
inline void set_RXweight(Matrix& Arg) {RXweight = Arg;}
inline Matrix& get_EVP() {return EVP;}
inline void set_EVP(Matrix& Arg) {EVP = Arg;}
inline Matrix& get_EV() {return EV;}
inline void set_EV(Matrix& Arg) {EV = Arg;}
inline Matrix& get_PPCA() {return PPCA;}
inline void set_PPCA(Matrix& Arg) {PPCA = Arg;}
inline Matrix& get_stdNoisei() {return stdNoisei;}
inline void set_stdNoisei(Matrix& Arg) {stdNoisei = Arg;}
inline int data_dim() {return Data.Nrows();}
inline int data_samples() {return Data.Ncols();}
inline float get_resels() {return Resels;}
inline void set_resels(float& Arg) {Resels = Arg;}
Matrix smoothColumns(const Matrix &inp);
inline void flipres(int num){
IC.Row(num) = -IC.Row(num);
mixMatrix.Column(num) = -mixMatrix.Column(num);
mixFFT=calc_FFT(mixMatrix);
unmixMatrix = pinv(mixMatrix);
}
inline void varnorm(){
Data = SP(Data,ones(Data.Nrows(),1)*stdDevi);
}
volumeinfo tempInfo;
Matrix calc_FFT(const Matrix& Mat);
private:
MelodicOptions &opts;
Log &logger;
// static MelodicData* melodat;
Matrix pcaE;
DiagonalMatrix pcaD;
Matrix whiteMatrix;
Matrix dewhiteMatrix;
Matrix meanC;
Matrix meanR;
Matrix stdDevi;
Matrix RXweight;
Matrix mixMatrix;
Matrix unmixMatrix;
Matrix mixFFT;
Matrix IC;
Matrix EVP;
Matrix EV;
Matrix stdNoisei;
volume<float> Mask;
volume<float> Mean;
Matrix Data;
Matrix DataVN;
Matrix PPCA;
float Resels;
char Mean_fname[1000];
void create_mask(volume4D<float> &theData, volume<float> &theMask);
// void remove_comp(Matrix& Mat, const int numIC);
void create_RXweight();
};
}
#endif