[OpenWalnut-Dev] Write file reader for WDataSetScalar

Mario Hlawitschka hlawitschka at informatik.uni-leipzig.de
Mon May 14 16:19:11 CEST 2012


Hi Frank, Alex,

This looks more like flipped axes when creating the file. Can you verify that the X-Y-Z dimensions are correct and you are not reading the data as, e.g., Z-Y-X?

	Mario

On May 14, 2012, at 4:13 PM, Alexander Wiebel wrote:

> Hi Frank,
> Mario might be right about endianness related problems. It looks like
> something is wrong with the order of the bits or the values themselves.
> So you might want to look at endianness or at the order in which you
> have the values in the value set.
> 
> See my attached snapshots that I created using Amira.
> 
> Cheers,
> Alex
> 
> On 05/14/2012 12:12 PM, Frank Zisko wrote:
>> Hi Alex,
>> 
>> here is a file exported from OW. 
>> 
>> https://www.dropbox.com/s/xnrgvnsqxryayco/out.nii
>> 
>> Greetings
>> 
>> Frank
>> 
>> 
>> Am Donnerstag, den 10.05.2012, 23:46 +0200 schrieb Alexander Wiebel:
>>> Hi Frank,
>>> I can not see the problem immediately. So let us approach it iteratively:
>>> - Can you save the loaded dataset in NIfTI (.nii) format and send it to
>>> me so I can check the data you actually loaded?
>>> 
>>> Cheers Alex
>>> 
>>> On 05/10/2012 05:58 PM, Frank Zisko wrote:
>>>> 
>>>> 
>>>> Hey guys,
>>>> 
>>>> I've a problem in writing a file reader.
>>>> (ROOT/src/modules/data/io/WReaderMy.cpp  .h)
>>>> It is a anatomic file. Including a header, voxels (intensity values) and
>>>> postheader.
>>>> 
>>>> I try to use a WDataSetScalar. Constructor want: WDataSetScalar aDataSet
>>>> = new (WValueSetBase,WGrid). But something is wrong in my code. I write
>>>> all values in WValueSet and create a WGrid. The 3D viewer shows a black
>>>> dataset, the histogram viewer give me errors (see below). The tmp
>>>> variable in the loop has right values. But I don't know why it doesn't
>>>> works.
>>>> 
>>>> Has anybody an idea what can i do?
>>>> 
>>>> 
>>>> HEADER
>>>> 
>>>> [...]
>>>> protected:
>>>> 
>>>>    boost::shared_ptr< std::ifstream > m_ifs;
>>>> [...]
>>>> 
>>>> 
>>>> SOURCE
>>>> 
>>>> #include ...
>>>> [...]
>>>> boost::shared_ptr< WDataSet > WReaderMy::read()
>>>> {
>>>>    m_ifs = boost::shared_ptr< std::ifstream >( new std::ifstream() );
>>>>    m_ifs->open( m_fname.c_str(), std::ifstream::in |
>>>> std::ifstream::binary );
>>>> [...]
>>>>    wlog::info( "WReaderMy" ) << "Read array ...";
>>>>    // My Data Array.
>>>>    int voxelCount = dimX * dimY * dimZ;
>>>>    int tensorDim = 1; // Scalar values.
>>>>    int order = 0; // ?
>>>>    boost::shared_ptr< std::vector< int > > myData =  boost::shared_ptr<
>>>> std::vector< int > >( new std::vector< int >( voxelCount ) );
>>>> 
>>>>    int tmp = 0;
>>>>    for (int i = 0; i < voxelCount; i++)
>>>>    {
>>>>        //m_ifs->read( reinterpret_cast<char*>(&myData->at(i) ),  1);
>>>>        m_ifs->read( reinterpret_cast<char*>(&tmp),  1); // Read 1 byte.
>>>>        (*myData)[i] = tmp;
>>>>    }
>>>>    wlog::info( "WReaderMy" ) << "Read array ... Done.";
>>>> 
>>>>    boost::shared_ptr< WValueSetBase > myValueSet; // For creatiung
>>>> DataSetScalar ( WValueSetBase, WGrid).
>>>>    myValueSet = boost::shared_ptr< WValueSetBase >( new WValueSet< int
>>>>> ( order, tensorDim, myData) );
>>>> 
>>>> 
>>>> [...]
>>>>    boost::shared_ptr< WGrid > myGrid;
>>>>    myGrid = boost::shared_ptr< WGridRegular3D >( new WGridRegular3D(
>>>> dimX, dimY, dimZ, WGridTransformOrtho( getStandardTransform() ) ) );
>>>>    boost::shared_ptr< WDataSet > myDataSet;
>>>>    wlog::debug( "WReaderMy" ) << "Load as WDataSetScalar";
>>>>    myDataSet = boost::shared_ptr< WDataSet >( new WDataSetScalar(
>>>> myValueSet, myGrid ) );
>>>>    myDataSet->setFilename( m_fname );
>>>>    m_ifs->close();
>>>>    return myDataSet;
>>>> }
>>>> 
>>>> 
>>>> Histogram output in bash:
>>>> 
>>>> [...]
>>>> *INFO    [ModuleContainer (KernelRootContainer)] Connecting Data
>>>> Module:out with HistogramView:Input dataset #0
>>>> *INFO    [HistogramView] Recalculating histogram.
>>>> Exception thrown! Callstack's backtrace:
>>>> trace: WException::WException(std::exception const&)    ->   
>>>> lib/libopenwalnut.so.1(_ZN10WExceptionC1ERKSt9exception+0x135)
>>>> [0x7ff3457e6715]
>>>> trace: WThreadedRunner::threadMainSave()    ->   
>>>> lib/libopenwalnut.so.1(_ZN15WThreadedRunner14threadMainSaveEv+0xba)
>>>> [0x7ff34581b00a]
>>>> trace: boost::detail::thread_data<boost::function<void ()> >::run()   
>>>> ->   
>>>> lib/libopenwalnut.so.1(_ZN5boost6detail11thread_dataINS_8functionIFvvEEEE3runEv+0x1e)
>>>> [0x7ff34581d98e]
>>>> trace: thread_proxy()    ->   
>>>> /usr/lib/libboost_thread.so.1.46.1(thread_proxy+0x69) [0x7ff341f19ba9]
>>>> trace: ()    ->    /usr/lib/nvidia-current-updates/libGL.so.1(+0xa7354)
>>>> [0x7ff33f197354]
>>>> 
>>>> *ERROR   [KernelRootContainer] Error in module "HistogramView".
>>>> Forwarding to nesting container.
>>>> *INFO    [ModuleContainer (KernelRootContainer)] Disconnecting Data
>>>> Module:out from HistogramView:Input dataset #0
>>>> *ERROR   [Module (HistogramView)] WException. Notifying. Message:
>>>> vector::_M_range_check
>>>> 
>>>> 
>>>> _______________________________________________
>>>> OpenWalnut-Dev mailing list
>>>> OpenWalnut-Dev at lists.informatik.uni-leipzig.de
>>>> http://lists.informatik.uni-leipzig.de/mailman/listinfo/openwalnut-dev
>>>> 
>>>> Archive: http://lists.informatik.uni-leipzig.de/pipermail/openwalnut-dev/
>>> 
>>> 
>>> _______________________________________________
>>> OpenWalnut-Dev mailing list
>>> OpenWalnut-Dev at lists.informatik.uni-leipzig.de
>>> http://lists.informatik.uni-leipzig.de/mailman/listinfo/openwalnut-dev
>>> 
>>> Archive: http://lists.informatik.uni-leipzig.de/pipermail/openwalnut-dev/
>> 
>> 
>> _______________________________________________
>> OpenWalnut-Dev mailing list
>> OpenWalnut-Dev at lists.informatik.uni-leipzig.de
>> http://lists.informatik.uni-leipzig.de/mailman/listinfo/openwalnut-dev
>> 
>> Archive: http://lists.informatik.uni-leipzig.de/pipermail/openwalnut-dev/
> 
> <snapshot.jpg><snapshot2.jpg>_______________________________________________
> OpenWalnut-Dev mailing list
> OpenWalnut-Dev at lists.informatik.uni-leipzig.de
> http://lists.informatik.uni-leipzig.de/mailman/listinfo/openwalnut-dev
> 
> Archive: http://lists.informatik.uni-leipzig.de/pipermail/openwalnut-dev/



More information about the OpenWalnut-Dev mailing list