]> Creatis software - bbtk.git/commitdiff
#3493 BUG IPP bbgdcmvtk GetXCoherentInfoGdcmReader box
authorEduardo DAVILA <davila@creatis.insa-lyon.fr>
Wed, 14 Dec 2022 08:59:26 +0000 (09:59 +0100)
committerEduardo DAVILA <davila@creatis.insa-lyon.fr>
Wed, 14 Dec 2022 08:59:26 +0000 (09:59 +0100)
packages/gdcmvtk/src/bbgdcmvtkGetXCoherentInfoGdcmReader.cxx
packages/std/src/bbstdVectorFilterString.cxx
packages/std/src/bbstdVectorFilterString.h

index c8a1e470c8a6035085b7266dc94e837dcfe08742..008bd0e34fb4e77349ec61bc7f1ec76aaaadaac8 100644 (file)
@@ -131,7 +131,6 @@ void GetXCoherentInfoGdcmReader::Process()
 // Add *all the files* to the SerieHelper
    sh = GDCM_NAME_SPACE::SerieHelper::New();
    std::vector<std::string> gii = bbGetInputIn();
-
    for(std::vector<std::string>::iterator it = gii.begin();
                                           it != gii.end();
                                         ++it)
@@ -141,10 +140,8 @@ void GetXCoherentInfoGdcmReader::Process()
 
    GDCM_NAME_SPACE::FileList::const_iterator it;
    GDCM_NAME_SPACE::FileList *l;
-
    // Should only contain one!
    l = sh->GetFirstSingleSerieUIDFileSet();
-
        if (l==NULL)
        {       
                return;
@@ -170,9 +167,20 @@ void GetXCoherentInfoGdcmReader::Process()
        int iTag,sizeDicomTagsVector=bbGetInputDicomTags().size();
        GDCM_NAME_SPACE::FileList::const_iterator iitt = l->begin();
        //iitt ++;
+    printf("EED GetXCoherentInfoGdcmReader::Process 1 \n");
 
        for ( ; iitt != l->end(); ++iitt)
        {
+        if ( iitt == l->begin() )   // The first ordered element IPP
+        {
+            group       = 0;
+            elem        = 0;
+            strTagValue = std::string("void");
+            sscanf("D0020_0032","D%04hx_%04hx",&group,&elem);
+            strTagValue = (*iitt)->GetEntryString(group,elem);
+            printf("EED GetXCoherentInfoGdcmReader::Process position %s \n",strTagValue.c_str() );
+        } // if first elemetn  get IPP
+        
                MapInfoDicom mapinfodicom;
                for (iTag=0; iTag<sizeDicomTagsVector; iTag++)
                {
@@ -185,7 +193,6 @@ void GetXCoherentInfoGdcmReader::Process()
                        strTagValue = (*iitt)->GetEntryString(group,elem);
                        mapinfodicom.insert ( std::pair<std::string,std::string>(key,strTagValue) );
                } // for iTag
-
                vectormapinfodicom.push_back( mapinfodicom );
    } // for iitt
    bbSetOutputDicomInfo( vectormapinfodicom );
@@ -213,7 +220,7 @@ void GetXCoherentInfoGdcmReader::Process()
 #if defined USE_GDCM2
 void GetXCoherentInfoGdcmReader::Process()
 {
-       printf("GetXCoherentInfoGdcmReader   %d files.\n", bbGetInputIn().size() );
+//     printf("GetXCoherentInfoGdcmReader   %d files.\n", bbGetInputIn().size() );
  // Read the *first* image file (a SET of file names is given as input) 
        gdcm::Reader *read = new gdcm::Reader();
        reader->SetFileName( bbGetInputIn()[0].c_str() );
index d7ceec8a7f1c233e9fe73e96568bc32ca28b979d..fc996ad37f5e4e59b470156913fe70bc65bdcba4 100644 (file)
@@ -3,6 +3,9 @@
 //===== 
 #include "bbstdVectorFilterString.h"
 #include "bbstdPackage.h"
+
+#include <string>
+#include <stdlib.h>
 namespace bbstd
 {
 
@@ -23,9 +26,9 @@ void VectorFilterString::ConnectionRepetitions( std::vector<std::string> vIn,std
                {
                        acum++;
                } else {
-                       itmp=i;
+                       itmp = i;
                        vOut->push_back(std::to_string(acum));
-                       acum=1;
+                       acum = 1;
                }
        } // for
        vOut->push_back(std::to_string(acum));
@@ -129,8 +132,6 @@ void VectorFilterString::InvertLists()
     std::vector<std::string> vOut8;
     std::vector<std::string> vOut9;
     int i,size      = bbGetInputIn0().size();
-//    std::string sk1 = bbGetInputsk1();
-//    int pos         = atoi( bbGetInputsk2().c_str() );
     for (i=size-1; i>=0; i--)
     {
             if ( i < bbGetInputIn0().size() ) { vOut0.push_back( bbGetInputIn0()[i] );  }
@@ -157,6 +158,122 @@ void VectorFilterString::InvertLists()
 }
 
 
+void VectorFilterString::SwitchElement(std::vector<std::string> *pVec, int i, int ii )
+{
+    std::string tmp;
+    
+    if  ( (i<pVec->size()) && (ii<pVec->size()) )
+    {
+        tmp         = (*pVec)[i];
+        (*pVec)[i]  = (*pVec)[ii];
+        (*pVec)[ii] = tmp;
+    } // if size
+}
+
+void VectorFilterString::OrderLists()
+{
+    std::vector<std::string> vOut0=bbGetInputIn0();
+    std::vector<std::string> vOut1=bbGetInputIn1();
+    std::vector<std::string> vOut2=bbGetInputIn2();
+    std::vector<std::string> vOut3=bbGetInputIn3();
+    std::vector<std::string> vOut4=bbGetInputIn4();
+    std::vector<std::string> vOut5=bbGetInputIn5();
+    std::vector<std::string> vOut6=bbGetInputIn6();
+    std::vector<std::string> vOut7=bbGetInputIn7();
+    std::vector<std::string> vOut8=bbGetInputIn8();
+    std::vector<std::string> vOut9=bbGetInputIn9();
+    int i,ii,size      = bbGetInputIn0().size();
+    bool ok;
+    for (i=0; i<=size; i++)
+    {
+        for (ii=i; ii<=size; ii++)
+        {
+            ok=false;
+            if (bbGetInputType()==5)
+            {
+                if ( vOut0[i] > vOut0[ii] )
+                {
+                    ok = true;
+                }  // if vIn0[i] > vIn0[ii]     // string version
+            } // if Type == 5
+            if (bbGetInputType()==6)
+            {
+//                if ( std::stod( vOut0[i] ) > std::stod( vOut0[ii] ) )
+                if ( ::atof( vOut0[i].c_str() ) > ::atof( vOut0[ii].c_str() ) )
+                {
+                    ok = true;
+                }  // if vIn0[i] > vIn0[ii]     double version
+            } // if Type == 6
+
+            if (ok==true)
+            {
+                SwitchElement( &vOut0 , i ,ii );
+                SwitchElement( &vOut1 , i ,ii );
+                SwitchElement( &vOut2 , i ,ii );
+                SwitchElement( &vOut3 , i ,ii );
+                SwitchElement( &vOut4 , i ,ii );
+                SwitchElement( &vOut5 , i ,ii );
+                SwitchElement( &vOut6 , i ,ii );
+                SwitchElement( &vOut7 , i ,ii );
+                SwitchElement( &vOut8 , i ,ii );
+                SwitchElement( &vOut9 , i ,ii );
+            }  // if ok
+        } // for ii
+    } // for i
+    bbSetOutputOut0( vOut0 );
+    bbSetOutputOut1( vOut1 );
+    bbSetOutputOut2( vOut2 );
+    bbSetOutputOut3( vOut3 );
+    bbSetOutputOut4( vOut4 );
+    bbSetOutputOut5( vOut5 );
+    bbSetOutputOut6( vOut6 );
+    bbSetOutputOut7( vOut7 );
+    bbSetOutputOut8( vOut8 );
+    bbSetOutputOut9( vOut9 );
+}
+
+void VectorFilterString::SubString()
+{
+    std::vector<std::string> vOut0;
+    std::vector<std::string> vOut1;
+    std::vector<std::string> vOut2;
+    std::vector<std::string> vOut3;
+    std::vector<std::string> vOut4;
+    std::vector<std::string> vOut5;
+    std::vector<std::string> vOut6;
+    std::vector<std::string> vOut7;
+    std::vector<std::string> vOut8;
+    std::vector<std::string> vOut9;
+    int i,size  = bbGetInputIn0().size();
+    int sk1     = atoi( bbGetInputsk1().c_str() );
+    int sk2     = atoi( bbGetInputsk2().c_str() );
+    for (i=0; i<size; i++)
+    {
+            if ( i < bbGetInputIn0().size() ) { vOut0.push_back( bbGetInputIn0()[i].substr(sk1,sk2) );  }
+            if ( i < bbGetInputIn1().size() ) { vOut1.push_back( bbGetInputIn1()[i].substr(sk1,sk2) );  }
+            if ( i < bbGetInputIn2().size() ) { vOut2.push_back( bbGetInputIn2()[i].substr(sk1,sk2) );  }
+            if ( i < bbGetInputIn3().size() ) { vOut3.push_back( bbGetInputIn3()[i].substr(sk1,sk2) );  }
+            if ( i < bbGetInputIn4().size() ) { vOut4.push_back( bbGetInputIn4()[i].substr(sk1,sk2) );  }
+            if ( i < bbGetInputIn5().size() ) { vOut5.push_back( bbGetInputIn5()[i].substr(sk1,sk2) );  }
+            if ( i < bbGetInputIn6().size() ) { vOut6.push_back( bbGetInputIn6()[i].substr(sk1,sk2) );  }
+            if ( i < bbGetInputIn7().size() ) { vOut7.push_back( bbGetInputIn7()[i].substr(sk1,sk2) );  }
+            if ( i < bbGetInputIn8().size() ) { vOut8.push_back( bbGetInputIn8()[i].substr(sk1,sk2) );  }
+            if ( i < bbGetInputIn9().size() ) { vOut9.push_back( bbGetInputIn9()[i].substr(sk1,sk2) );  }
+    } // for i
+    bbSetOutputOut0( vOut0 );
+    bbSetOutputOut1( vOut1 );
+    bbSetOutputOut2( vOut2 );
+    bbSetOutputOut3( vOut3 );
+    bbSetOutputOut4( vOut4 );
+    bbSetOutputOut5( vOut5 );
+    bbSetOutputOut6( vOut6 );
+    bbSetOutputOut7( vOut7 );
+    bbSetOutputOut8( vOut8 );
+    bbSetOutputOut9( vOut9 );
+}
+
+
+
 
 void VectorFilterString::Process()
 {
@@ -225,7 +342,17 @@ void VectorFilterString::Process()
         InvertLists();
     }
 
+    if ( (bbGetInputType()==5)  ||  (bbGetInputType()==6)  )
+    {
+        OrderLists();
+    }
     
+    if (bbGetInputType()==7)
+    {
+        SubString();
+    }
+
+
 }
 //===== 
 // Before editing this file, make sure it's a file of your own (i.e.: it wasn't generated from xml description; if so : your modifications will be lost)
index 87514f6f7756e14bd7444a0a2ad20d91567e6388..877ee9a1087b59bb4170d3415c48595109aca635 100644 (file)
@@ -49,6 +49,10 @@ class bbstd_EXPORT VectorFilterString
     void FilterByFindinIn0();
     void InsertStringPos();
     void InvertLists();
+    void SwitchElement(std::vector<std::string> *pVec, int id1, int id2 );
+    void OrderLists();
+    void SubString();
+
 //===== 
 // Before editing this file, make sure it's a file of your own (i.e.: it wasn't generated from xml description; if so : your modifications will be lost)
 //===== 
@@ -70,7 +74,7 @@ BBTK_BEGIN_DESCRIBE_BLACK_BOX(VectorFilterString,bbtk::AtomicBlackBox);
   BBTK_INPUT(VectorFilterString,In7,"Input vector",std::vector<std::string>,"");
   BBTK_INPUT(VectorFilterString,In8,"Input vector",std::vector<std::string>,"");
   BBTK_INPUT(VectorFilterString,In9,"Input vector",std::vector<std::string>,"");
-  BBTK_INPUT(VectorFilterString,Type,"(Default 0)  0:count connected repetitions, 1:CleaningPointsConnectTwoMesh sk1 criterium, 2: Select lines contain sk1 in In0  (the other intputs In1..In9 are afected, 3: insert string:sk1 in position:sk2 for all elements ),  4: Invert input lists",int,"");
+  BBTK_INPUT(VectorFilterString,Type,"(Default 0)  0:count connected repetitions, 1:CleaningPointsConnectTwoMesh sk1 criterium, 2: Select lines contain sk1 in In0  (the other intputs In1..In9 are afected, 3: insert string:sk1 in position:sk2 for all elements ),  4: Invert input lists, 5:Order lists with (string)In0 criterius,  6:Order lists with  (double)In0 criterius  7:sub string sk1=pos sk2=len for all lists ",int,"");
   BBTK_INPUT(VectorFilterString,sk1,"constant 1",std::string,"");
   BBTK_INPUT(VectorFilterString,sk2,"constant 2",std::string,"");