# ---------------------------------------------------------------------
#
# Copyright (c) CREATIS (Centre de Recherche en Acquisition et Traitement de l'Image
- # pour la Santé)
+ # pour la Santé©
# Authors : Eduardo Davila, Frederic Cervenansky, Claire Mouton
# Previous Authors : Laurent Guigues, Jean-Pierre Roux
# CreaTools website : www.creatis.insa-lyon.fr/site/fr/creatools_accueil
bool Bruker2Dicom::Execute()
{
+ int dimension = 1;
//--- first, Test the system----//
bool bigEndian = gdcm::ByteSwap<uint16_t>::SystemIsBigEndian();
{
if(! boost::filesystem::is_directory( (*it) ) )
{
- if( (*it).filename() == "subject")
+//EED 2026-05-19
+// if( (*it).filename() == "subject")
+ if( (*it).path().filename() == "subject")
{
subjectFound = true;
}
- if( (*it).filename() == "acqp")
+//EED 2026-05-19
+// if( (*it).filename() == "acqp")
+ if( (*it).path().filename() == "acqp")
{
acqpFound = true;
}
subject_name = b_name.GetStringValue()[0];
strPatientName = subject_name;
cleanString(subject_name);
- DealWithSingleStudyDirectory (InputDirName, OutputDirName);
+ DealWithSingleStudyDirectory (InputDirName, OutputDirName, dimension);
}
break;
}
{
subject_name = "defaultPatName";
strPatientName = subject_name;
- DealWithSingleStudyDirectory (InputDirName,OutputDirName);
+ DealWithSingleStudyDirectory (InputDirName,OutputDirName, dimension);
break;
}
// ----------------------------------------------------------------------------------------------------------
-void Bruker2Dicom::DealWithMultiStudyDirectory (gdcm::Directory::FilenamesType &dirNames, const std::string ¤tOutputDirName)
+void Bruker2Dicom::DealWithMultiStudyDirectory (gdcm::Directory::FilenamesType &dirNames, const std::string ¤tOutputDirName, int dimension)
{
gdcm::Directory::FilenamesType::iterator it;
strPatientName = subject_name;
cleanString(subject_name);
- DealWithSingleStudyDirectory(dirList.GetDirectories().begin()->c_str(), currentOutputDirName);
+ DealWithSingleStudyDirectory(dirList.GetDirectories().begin()->c_str(), currentOutputDirName,dimension);
}
}
else
// ----------------------------------------------------------------------------------------------------------
//void Bruker2Dicom::DealWithSingleStudyDirectory (const std::string &dirname, const std::string &i_outputDir) //(gdcm::Directory::FilenamesType &fileNames)
-void Bruker2Dicom::DealWithSingleStudyDirectory (const std::string dirname, const std::string i_outputDir)
+void Bruker2Dicom::DealWithSingleStudyDirectory (const std::string dirname, const std::string i_outputDir, int dimension)
{
bool res;
// creation directory : 'nom du patient'
{
if(boost::filesystem::is_directory(*it))
{
- std::string fname = (*it).filename() ;
+//EED 2026-05-19
+// std::string fname = (*it).filename() ;
+ std::string fname = (*it).path().filename().c_str() ;
//if (fname == "AdjResult") continue; what's the point?
boost::filesystem::directory_iterator it_level((*it));
bool bAcqp = false;
std::string nameAcqp;
for(; it_level != end_iter; ++it_level)
{
- if( (*it_level).filename() == "acqp")
+//EED 2026-05-19
+// if( (*it_level).filename() == "acqp")
+ if( (*it_level).path().filename() == "acqp")
{
- strAcqp = (*it_level).string();
- nameAcqp = (*it_level).filename();
+//EED 2026-05-19
+// strAcqp = (*it_level).string();
+// nameAcqp = (*it_level).filename();
+ strAcqp = (*it_level).path().string().c_str();
+ nameAcqp = (*it_level).path().filename().c_str();
boost::algorithm::replace_all( strAcqp, INVALID_FILE_SEPARATOR, VALID_FILE_SEPARATOR);
bAcqp = true;
}
else if (boost::filesystem::is_directory( (*it_level) ) && nextLevel == "")
{
- nextLevel = (*it_level).string(); // Hope we found only one directory
+//EED 2026-05-19
+// nextLevel = (*it_level).string(); // Hope we found only one directory
+ nextLevel = (*it_level).path().string(); // Hope we found only one directory
}
else
{
if (verbose)
printf ("outputDirName [%s]\n", output.c_str());
try {
- DealWithNiveau1( (*it).string(), output);
+//EED 2026-05-19
+// DealWithNiveau1( (*it).string(), output);
+ DealWithNiveau1( (*it).path().string(), output, dimension);
}
catch (BrukerHopelessException &e)
{
// =====================================================================
-void Bruker2Dicom::DealWithNiveau1(std::string level1Directory, std::string currentOutputDirName) {
+void Bruker2Dicom::DealWithNiveau1(std::string level1Directory, std::string currentOutputDirName, int dimension) {
//
// e.g. : at level 1, in B67d1.Bp1/6
//
boost::filesystem::directory_iterator it(level1Directory), it_end;
for(; it != it_end; it++)
{
- if((*it).leaf() == "method")
+//EED 2026-05-19
+// if((*it).leaf() == "method")
+ if((*it).path().filename() == "method")
{
- bmethod = br_method.LoadFile((*it).string());
+//EED 2026-05-19
+// bmethod = br_method.LoadFile((*it).string());
+ bmethod = br_method.LoadFile((*it).path().string());
break;
}
}
{
for(; it != it_end; it++)
{
- if((*it).leaf() == "imnd")
+//EED 2026-05-19
+// if((*it).leaf() == "imnd")
+ if((*it).path().filename() == "imnd")
{
- bmethod = br_method.LoadFile((*it).string());
+//EED 2026-05-19
+// bmethod = br_method.LoadFile((*it).string());
+ bmethod = br_method.LoadFile((*it).path().string());
break;
}
}
boost::filesystem::directory_iterator itDir(level1Directory), it_end;
for(; itDir != it_end; ++itDir)
{
- if ( boost::filesystem::is_directory(*itDir) && (*itDir).leaf() == "pdata")
+//EED 2026-05-19
+// if ( boost::filesystem::is_directory(*itDir) && (*itDir).leaf() == "pdata")
+ if ( boost::filesystem::is_directory(*itDir) && (*itDir).path().filename() == "pdata")
{
- std::string output = createDirectory( (*itDir).leaf() , currentOutputDirName);
+//EED 2026-05-19
+// std::string output = createDirectory( (*itDir).leaf() , currentOutputDirName);
+ std::string output = createDirectory( (*itDir).path().filename().c_str() , currentOutputDirName);
// will be always "pdata" ...
boost::filesystem::directory_iterator itDirInside(*itDir), it_inside_end;
for(; itDirInside != it_end; ++it)
// we take the first and hope that we have only one!
if ( boost::filesystem::is_directory(*itDirInside))
{
- output = createDirectory( (*itDirInside).leaf() , output);
- DealWithNiveau2( (*itDirInside).string(), output);
+//EED 2026-05-19
+// output = createDirectory( (*itDirInside).leaf() , output);
+// DealWithNiveau2( (*itDirInside).string(), output);
+ output = createDirectory( (*itDirInside).path().filename().c_str() , output);
+ DealWithNiveau2( (*itDirInside).path().string(), output,dimension);
}
}
}
// =====================================================================
-void Bruker2Dicom::DealWithNiveau2(std::string level2Directory, std::string currentOutputDirName) {
+void Bruker2Dicom::DealWithNiveau2(std::string level2Directory, std::string currentOutputDirName, int dimension) {
// e.g. : at level 2 in B67d1.Bp1/6/pdata
//
boost::filesystem::directory_iterator it(level2Directory), it_end;
for(; it != it_end; ++it)
{
- if((*it).leaf() == "isa")
+//EED 2026-05-19
+// if((*it).path().leaf() == "isa")
+ if((*it).path().filename() == "isa")
{
- bisa = br_isa.LoadFile((*it).string());
+//EED 2026-05-19
+// bisa = br_isa.LoadFile((*it).string());
+ bisa = br_isa.LoadFile((*it).path().string());
if (bisa)
{
br_isa.FillMap();
}
}
try {
- DealWithNiveau3(level2Directory, output);
+ DealWithNiveau3(level2Directory, output,dimension);
}
catch (BrukerHopelessException &e)
{
// =====================================================================
//
-void Bruker2Dicom::DealWithNiveau3(std::string &level3Directory, std::string ¤tOutputDirName){
+void Bruker2Dicom::DealWithNiveau3(std::string &level3Directory, std::string ¤tOutputDirName,int dimension){
//
// e.g. at level 3, in
// This one will be important!
// ---------------------------
try {
- imageSet = CreateImageSet ( );
+ imageSet = CreateImageSet( dimension );
}
catch (BrukerInitException& e)
{
// ===========================================================================================
-std::vector<BrukerImage> Bruker2Dicom::CreateImageSet ( )
+std::vector<BrukerImage> Bruker2Dicom::CreateImageSet ( int dimension )
{
std::vector<BrukerImage> imageSet;
- br_acqp.SetLoopStructure();
+ br_acqp.SetLoopStructure( dimension );
std::vector<int> tempVect = br_acqp.GetLoopStructure() ;
std::map<std::string, BrukerFieldData> map = br_acqp.GetBrukerHeaderMap();
boost::filesystem::directory_iterator it(i_dir), it_end;
for(; it != it_end; ++it)
{
- if((*it).leaf() == i_name)
+//EED 2026-05-19
+// if((*it).path().leaf() == i_name)
+ if((*it).path().filename() == i_name)
{
- file = (*it).string();
+//EED 2026-05-19
+// file = (*it).string();
+ file = (*it).path().string();
bres = true;
break;
}
boost::filesystem::directory_iterator itless(pth.branch_path()), it_end;
for(; itless != it_end; ++itless)
{
- if((*itless).leaf() == i_name)
+//EED 2026-05-19
+// if((*itless).leaf() == i_name)
+ if((*itless).path().filename() == i_name)
{
- file = (*itless).string();
+//EED 2026-05-19
+// file = (*itless).string();
+ file = (*itless).path().string();
bres = true;
break;
}
# ---------------------------------------------------------------------
#
# Copyright (c) CREATIS (Centre de Recherche en Acquisition et Traitement de l'Image
- # pour la Santé)
+ # pour la Santé©
# Authors : Eduardo Davila, Frederic Cervenansky, Claire Mouton
# Previous Authors : Laurent Guigues, Jean-Pierre Roux
# CreaTools website : www.creatis.insa-lyon.fr/site/fr/creatools_accueil
int imgNum, int imagecontenttype//gdcm2 dont have such things, I think, as ImageContentTYpe
);
-std::vector<BrukerImage> CreateImageSet ( );
+std::vector<BrukerImage> CreateImageSet ( int dimension );
void getImhDataType(BrukerFieldData &bDPT,
std::string &mhdDataPixelType,
bool CreateDirectory(const std::string &dirNameout);
int CheckUserDirectory(std::string &userDirName);
-void DealWithMultiStudyDirectory(gdcm::Directory::FilenamesType &fileNames, const std::string ¤tOutputDirName);
-void DealWithSingleStudyDirectory (const std::string dirname, const std::string currentOutputDirName) ;
+void DealWithMultiStudyDirectory(gdcm::Directory::FilenamesType &fileNames, const std::string ¤tOutputDirName,int dimension);
+void DealWithSingleStudyDirectory (const std::string dirname, const std::string currentOutputDirName,int dimension) ;
-void DealWithNiveau1(std::string level1Directory, std::string currentOutputDirName);
-void DealWithNiveau2(std::string level2Directory, std::string currentOutputDirName);
-void DealWithNiveau3(std::string &level3Directory, std::string ¤tOutputDirName);
+void DealWithNiveau1(std::string level1Directory, std::string currentOutputDirName, int dimension);
+void DealWithNiveau2(std::string level2Directory, std::string currentOutputDirName, int dimension);
+void DealWithNiveau3(std::string &level3Directory, std::string ¤tOutputDirName, int dimension);
void dealWithCarto(gdcm::Directory::FilenamesType &fileNames, int NX, int NY, int nbSlices,
double fovX, double fovY, double sliceDistance,