Skip to content
Snippets Groups Projects
Commit 3d16160d authored by Matthew Webster's avatar Matthew Webster
Browse files

Changes for NewNifit 3.0.0

parent 4f64c0d1
No related branches found
No related tags found
No related merge requests found
...@@ -17,12 +17,11 @@ void print_usage(const string& progname) ...@@ -17,12 +17,11 @@ void print_usage(const string& progname)
int avwcpgeom_main(int argc, char *argv[]) int avwcpgeom_main(int argc, char *argv[])
{ {
NiftiIO reader;
NiftiHeader headerSrc,headerDest; NiftiHeader headerSrc,headerDest;
string fullDestinationName(return_validimagefilename(string(argv[2]))); string fullDestinationName(return_validimagefilename(string(argv[2])));
try { try {
headerSrc=reader.loadHeader(return_validimagefilename(string(argv[1]))); headerSrc=loadHeader(return_validimagefilename(string(argv[1])));
headerDest=reader.loadHeader(fullDestinationName); headerDest=loadHeader(fullDestinationName);
} catch (...) { } catch (...) {
perror("Error opening files"); perror("Error opening files");
return EXIT_FAILURE; return EXIT_FAILURE;
...@@ -38,7 +37,7 @@ int avwcpgeom_main(int argc, char *argv[]) ...@@ -38,7 +37,7 @@ int avwcpgeom_main(int argc, char *argv[])
} }
vector<NiftiExtension> extensions; vector<NiftiExtension> extensions;
reader.loadImage(fullDestinationName,buffer,extensions,false); loadImage(fullDestinationName,buffer,extensions,false);
headerDest.sformCode = headerSrc.sformCode; headerDest.sformCode = headerSrc.sformCode;
headerDest.setSForm(headerSrc.getSForm()); headerDest.setSForm(headerSrc.getSForm());
...@@ -49,7 +48,7 @@ int avwcpgeom_main(int argc, char *argv[]) ...@@ -49,7 +48,7 @@ int avwcpgeom_main(int argc, char *argv[])
if (copydim) if (copydim)
headerDest.dim=headerSrc.dim; headerDest.dim=headerSrc.dim;
reader.saveImage(fullDestinationName,buffer,extensions,headerDest,FslIsCompressedFileType(fslFileType(fullDestinationName))); saveImage(fullDestinationName,buffer,extensions,headerDest,FslIsCompressedFileType(fslFileType(fullDestinationName)));
return 0; return 0;
} }
......
...@@ -23,10 +23,136 @@ void print_usage(const string& progname) ...@@ -23,10 +23,136 @@ void print_usage(const string& progname)
} }
NiftiHeader headerFromXML(vector<string> XMLreport)
{
NiftiHeader header;
int xyzUnits(0);
int tUnits(0);
int freqDim(0);
int phaseDim(0);
int sliceDim(0);
for(unsigned int setting=1;setting<XMLreport.size()-1;setting++) {
//Tokenise
size_t pos1=XMLreport[setting].find_first_of(" ")+2;
size_t pos2=XMLreport[setting].find_first_of(" ",pos1);
size_t pos3=XMLreport[setting].find_first_of('\'')+1;
size_t pos4=XMLreport[setting].find_last_of('\'');
string field(XMLreport[setting].substr(pos1,pos2-pos1));
string value(XMLreport[setting].substr(pos3,pos4-pos3));
istringstream values(value);
if ( field == "datatype" ) {
values >> header.datatype;
} else if ( field == "image_offset" ) {
values >> header.vox_offset;
} else if ( field == "sto_xyz_matrix" ) {
mat44 sForm;
for ( int i=0;i<4;i++ )
for ( int j=0;j<4;j++ )
values >> sForm.m[i][j];
header.setSForm(sForm);
} else if ( field == "ndim" ) {
values >> header.dim[0];
} else if ( field == "nx" ) {
values >> header.dim[1];
} else if ( field == "ny" ) {
values >> header.dim[2];
} else if ( field == "nz" ) {
values >> header.dim[3];
} else if ( field == "nt" ) {
values >> header.dim[4];
} else if ( field == "nu" ) {
values >> header.dim[5];
} else if ( field == "nv" ) {
values >> header.dim[6];
} else if ( field == "nw" ) {
values >> header.dim[7];
}else if ( field == "qfac" ) {
values >> header.pixdim[0];
} else if ( field == "dx" ) {
values >> header.pixdim[1];
} else if ( field == "dy" ) {
values >> header.pixdim[2];
} else if ( field == "dz" ) {
values >> header.pixdim[3];
} else if ( field == "dt" ) {
values >> header.pixdim[4];
} else if ( field == "du" ) {
values >> header.pixdim[5];
} else if ( field == "dv" ) {
values >> header.pixdim[6];
} else if ( field == "dw" ) {
values >> header.pixdim[7];
} else if ( field == "cal_min" ) {
values >> header.cal_min;
} else if ( field == "cal_max" ) {
values >> header.cal_max;
} else if ( field == "scl_slope" ) {
values >> header.sclSlope;
} else if ( field == "scl_inter" ) {
values >> header.sclInter;
} else if ( field == "intentCode" ) {
values >> header.sclSlope;
} else if ( field == "intent_p1" ) {
values >> header.sclInter;
} else if ( field == "intent_p2" ) {
values >> header.cal_min;
} else if ( field == "intent_p3" ) {
values >> header.cal_max;
} else if ( field == "intent_name" ) {
values >> header.intentName;
} else if ( field == "toffset" ) {
values >> header.toffset;
} else if ( field == "xyz_units" ) {
values >> xyzUnits;
} else if ( field == "time_units" ) {
values >> tUnits;
} else if ( field == "descrip" ) {
values >> header.description;
} else if ( field == "aux_file" ) {
values >> header.auxillaryFile;
} else if ( field == "qform_code" ) {
values >> header.qformCode;
} else if ( field == "sform_code" ) {
values >> header.sformCode;
} else if ( field == "quatern_b" ) {
values >> header.qB;
} else if ( field == "quatern_c" ) {
values >> header.qC;
} else if ( field == "quatern_d" ) {
values >> header.qD;
} else if ( field == "qoffset_x" ) {
values >> header.qX;
} else if ( field == "qoffset_y" ) {
values >> header.qY;
} else if ( field == "qoffset_z" ) {
values >> header.qZ;
} else if ( field == "freq_dim" ) {
values >> freqDim;
} else if ( field == "phase_dim" ) {
values >> phaseDim;
} else if ( field == "slice_dim" ) {
values >> sliceDim;
} else if ( field == "slice_code" ) {
values >> header.sliceCode;
} else if ( field == "slice_start" ) {
values >> header.sliceStart;
} else if ( field == "slice_end" ) {
values >> header.sliceEnd;
} else if ( field == "slice_duration" ) {
values >> header.sliceDuration;
} else {
//cerr << XMLreport[setting] << endl;
//cerr << "Unknown" << endl;
}
}
header.units=xyzUnits+tUnits;
header.sliceOrdering=freqDim | ( phaseDim << 2 ) | ( sliceDim << 4 );
header.bitsPerVoxel=header.bpvOfDatatype();
return header;
}
int fslcreatehd_main(int argc, char *argv[]) int fslcreatehd_main(int argc, char *argv[])
{ {
NiftiIO reader;
vector <NiftiExtension> extensions; vector <NiftiExtension> extensions;
NiftiHeader header,originalHeader; NiftiHeader header,originalHeader;
char *buffer(NULL); char *buffer(NULL);
...@@ -43,7 +169,7 @@ int fslcreatehd_main(int argc, char *argv[]) ...@@ -43,7 +169,7 @@ int fslcreatehd_main(int argc, char *argv[])
if (FslFileExists(filename)) { if (FslFileExists(filename)) {
existingImage = true; existingImage = true;
filename=return_validimagefilename(filename); filename=return_validimagefilename(filename);
header=reader.loadImage(filename,buffer,extensions); header=loadImage(filename,buffer,extensions);
originalHeader=header; originalHeader=header;
} }
...@@ -75,33 +201,27 @@ int fslcreatehd_main(int argc, char *argv[]) ...@@ -75,33 +201,27 @@ int fslcreatehd_main(int argc, char *argv[])
if (strcmp(argv[1],"-")==0) {fileread=0;} if (strcmp(argv[1],"-")==0) {fileread=0;}
newstr = (char *)calloc(10000,1); newstr = (char *)calloc(10000,1);
if (fileread) if (fileread) {
{
inputfile.open (argv[1], ifstream::in | ifstream::binary); inputfile.open (argv[1], ifstream::in | ifstream::binary);
if (!inputfile.is_open()) if (!inputfile.is_open()) {
{ cerr << "Cannot open file " << argv[1] << endl;
cerr << "Cannot open file " << argv[1] << endl; return EXIT_FAILURE;
return EXIT_FAILURE; }
}
} }
do do {
{ if (fileread) {
if (fileread) inputfile.getline(newstr,9999); // maybe use > for delimiting character remove while increase size
{ } else {
inputfile.getline(newstr,9999); // maybe use > for delimiting character remove while increase size if (fgets(newstr,9999,stdin)==NULL) break;
} }
else settings.push_back(string(newstr));
{
if (fgets(newstr,9999,stdin)==NULL) break;
}
settings.push_back(string(newstr));
} while (settings[settings.size()-1]!="/>"); } while (settings[settings.size()-1]!="/>");
header=NiftiHeader(settings); header=headerFromXML(settings);
if (fileread) if (fileread)
inputfile.close(); inputfile.close();
} }
/* reset datatype in case it has been overwritten */ /* reset datatype in case it has been overwritten */
...@@ -125,7 +245,7 @@ int fslcreatehd_main(int argc, char *argv[]) ...@@ -125,7 +245,7 @@ int fslcreatehd_main(int argc, char *argv[])
header.bitsPerVoxel=header.bpvOfDatatype(); header.bitsPerVoxel=header.bpvOfDatatype();
header.setNiftiVersion(FslNiftiVersionFileType(filetype),FslIsSingleFileType(filetype)); header.setNiftiVersion(FslNiftiVersionFileType(filetype),FslIsSingleFileType(filetype));
reader.saveImage(filename,buffer,extensions,header, FslIsCompressedFileType(filetype)); saveImage(filename,buffer,extensions,header, FslIsCompressedFileType(filetype));
return 0; return 0;
} }
......
// fslhd.cc - show image header // fslhd.cc - show image header
// Steve Smith, Mark Jenkinson and Matthew Webster, FMRIB Image Analysis Group // Steve Smith, Mark Jenkinson and Matthew Webster, FMRIB Image Analysis Group
// Copyright (C) 2000-2012 University of Oxford // Copyright (C) 2000-2019 University of Oxford
// CCOPYRIGHT // CCOPYRIGHT
#include "newimage/newimageall.h" #include "newimage/newimageall.h"
...@@ -90,10 +90,9 @@ int main(int argc,char *argv[]) ...@@ -90,10 +90,9 @@ int main(int argc,char *argv[])
if (argc < 2) if (argc < 2)
return print_usage(string(argv[0])); return print_usage(string(argv[0]));
bool reportXML(argc==3 && strcmp(argv[1],"-x")==0 ); bool reportXML(argc==3 && strcmp(argv[1],"-x")==0 );
NiftiIO reader;
try { try {
string filename(return_validimagefilename(argv[argc-1])); string filename(return_validimagefilename(argv[argc-1]));
NiftiHeader header(reader.loadHeader(filename)); NiftiHeader header(loadHeader(filename));
if (reportXML) if (reportXML)
reportXMLHeader(header); reportXMLHeader(header);
else { else {
......
// fslmerge.cc concatenate AVW files into a single output // fslmerge.cc concatenate AVW files into a single output
// Steve Smith, David Flitney, Stuart Clare and Matthew Webster, FMRIB Image Analysis Group // Steve Smith, David Flitney, Stuart Clare and Matthew Webster, FMRIB Image Analysis Group
// Copyright (C) 2000-2010 University of Oxford // Copyright (C) 2000-2019 University of Oxford
// CCOPYRIGHT // CCOPYRIGHT
#define EXPOSE_TREACHEROUS #define EXPOSE_TREACHEROUS
#include "newimage/newimageall.h" #include "newimage/newimageall.h"
...@@ -25,8 +25,7 @@ int fmrib_main(int argc, char *argv[]) ...@@ -25,8 +25,7 @@ int fmrib_main(int argc, char *argv[])
volume4D<T> input_volume; volume4D<T> input_volume;
int direction,dimerror=0,xoffset=0,yoffset=0,zoffset=0,toffset=0; int direction,dimerror=0,xoffset=0,yoffset=0,zoffset=0,toffset=0;
NiftiIO reader; NiftiHeader header(loadHeader(return_validimagefilename(string(argv[3]))));
NiftiHeader header(reader.loadHeader(return_validimagefilename(string(argv[3]))));
float newTR(header.pixdim[4]); float newTR(header.pixdim[4]);
if (!strcmp(argv[1], "-t")) direction=0; if (!strcmp(argv[1], "-t")) direction=0;
...@@ -54,7 +53,7 @@ int fmrib_main(int argc, char *argv[]) ...@@ -54,7 +53,7 @@ int fmrib_main(int argc, char *argv[])
for(int vol = 4; vol < argc; vol++) for(int vol = 4; vol < argc; vol++)
{ {
header=reader.loadHeader(return_validimagefilename(string(argv[vol]))); header=loadHeader(return_validimagefilename(string(argv[vol])));
if (direction==0) tdimtot+=std::max(header.dim[4],(int64_t)1); if (direction==0) tdimtot+=std::max(header.dim[4],(int64_t)1);
if (direction==1) xdimtot+=std::max(header.dim[1],(int64_t)1); if (direction==1) xdimtot+=std::max(header.dim[1],(int64_t)1);
if (direction==2) ydimtot+=std::max(header.dim[2],(int64_t)1); if (direction==2) ydimtot+=std::max(header.dim[2],(int64_t)1);
......
// fslnvols.cc REALLY advanced program for counting the volumes in a 4D file // fslnvols.cc REALLY advanced program for counting the volumes in a 4D file
// Stephen Smith and Matthew Webster, FMRIB Image Analysis Group // Stephen Smith and Matthew Webster, FMRIB Image Analysis Group
// Copyright (C) 1999-2005 University of Oxford // Copyright (C) 1999-2019 University of Oxford
// CCOPYRIGHT // CCOPYRIGHT
#include "newimage/newimageall.h" #include "newimage/newimageall.h"
using namespace NEWIMAGE; using namespace NEWIMAGE;
void print_usage(const string& progname) void print_usage(const string& progname)
{ {
cout << endl; cout << endl;
cout << "Usage: fslnvols <input>" << endl; cout << "Usage: fslnvols <input>" << endl;
...@@ -21,14 +21,12 @@ int main(int argc,char *argv[]) ...@@ -21,14 +21,12 @@ int main(int argc,char *argv[])
print_usage(progname); print_usage(progname);
return 1; return 1;
} }
if (!FslFileExists(string(argv[1]))) if (!FslFileExists(string(argv[1])))
{ {
cout << "0" << endl; cout << "0" << endl;
return 0; // the intended usage is to return "0" and not show an error return 0; // the intended usage is to return "0" and not show an error
} }
NiftiIO reader; NiftiHeader header(loadHeader(return_validimagefilename(string(argv[1]))));
NiftiHeader header(reader.loadHeader(return_validimagefilename(string(argv[1]))));
cout << header.dim[4] << endl; cout << header.dim[4] << endl;
return 0; return 0;
} }
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