Skip to content
Snippets Groups Projects
Commit e5011d65 authored by Stamatios Sotiropoulos's avatar Stamatios Sotiropoulos
Browse files

Added pseudo-constrained non-linear optimization

parent f76982d3
No related branches found
No related tags found
No related merge requests found
......@@ -116,15 +116,29 @@ int main(int argc, char** argv)
S(t+1)=data(i,j,k,t);
if(opts.modelnum.value()==1){
PVM_single pvm(S,bvecs,bvals,opts.nfibres.value());
pvm.fit();
if (opts.cnonlinear.value()){
PVM_single_c pvm(S,bvecs,bvals,opts.nfibres.value());
pvm.fit();
S0(i-minx,j-miny,k-minz) = pvm.get_s0();
dvol(i-minx,j-miny,k-minz) = pvm.get_d();
for(int f=0;f<opts.nfibres.value();f++){
fvol[f](i-minx,j-miny,k-minz) = pvm.get_f(f+1);
thvol[f](i-minx,j-miny,k-minz) = pvm.get_th(f+1);
phvol[f](i-minx,j-miny,k-minz) = pvm.get_ph(f+1);
S0(i-minx,j-miny,k-minz) = pvm.get_s0();
dvol(i-minx,j-miny,k-minz) = pvm.get_d();
for(int f=0;f<opts.nfibres.value();f++){
fvol[f](i-minx,j-miny,k-minz) = pvm.get_f(f+1);
thvol[f](i-minx,j-miny,k-minz) = pvm.get_th(f+1);
phvol[f](i-minx,j-miny,k-minz) = pvm.get_ph(f+1);
}
}
else{
PVM_single pvm(S,bvecs,bvals,opts.nfibres.value());
pvm.fit();
S0(i-minx,j-miny,k-minz) = pvm.get_s0();
dvol(i-minx,j-miny,k-minz) = pvm.get_d();
for(int f=0;f<opts.nfibres.value();f++){
fvol[f](i-minx,j-miny,k-minz) = pvm.get_f(f+1);
thvol[f](i-minx,j-miny,k-minz) = pvm.get_th(f+1);
phvol[f](i-minx,j-miny,k-minz) = pvm.get_ph(f+1);
}
}
}
else{
......
......@@ -36,6 +36,8 @@ class pvmfitOptions {
Option<string> bvalsfile;
Option<int> nfibres;
Option<int> modelnum;
Option<bool> cnonlinear;
bool parse_command_line(int argc, char** argv);
private:
......@@ -84,6 +86,9 @@ class pvmfitOptions {
modelnum(string("--model"), 1,
string("1:monoexponential;2:non mono-exponential"),
false, requires_argument),
cnonlinear(string("--cnonlinear"),false,
string("Apply constrained nonlinear optimization on the diffusivity, volume fractions and their sum"),
false,no_argument),
options("pvmfit", "pvmfit -k <datafile> -m <maskfile> -r <bvecsfile> -b <bvalsfile> [-n 2]\n")
{
......@@ -98,6 +103,7 @@ class pvmfitOptions {
options.add(bvalsfile);
options.add(nfibres);
options.add(modelnum);
options.add(cnonlinear);
}
catch(X_OptionError& e) {
options.usage();
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment