By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
446,361 Members | 1,683 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 446,361 IT Pros & Developers. It's quick & easy.

large datasets!!

P: 15
Hallo guys!!I have a problem and i would like your help.I have to make a reader for a platform,where reads csv files.So, i made this read and its possible to read now csv files.But the problem is that the size of some csv files is 300MB the largest one.In that case my program breaks!I include with my question the reading part of my code and a test data i create just to see how the data looks like!!

reading part:::::::::::::::::::::::::::::::::::::::::::::: :::::::::::::::::::::::::::::::::::::::::::::::::: ::

Expand|Select|Wrap|Line Numbers
  1. #ifdef _MSC_VER
  2. #pragma warning ( disable : 4786 )
  3. #endif
  4. #include <iostream>
  5. #include <stdio.h>
  6. #include <ctype.h>
  7. #include <stdlib.h>
  8. #include <string.h>
  9. #include "itkExceptionObject.h"
  10. #include "itkIOCommon.h"
  11. #include "itkCSVImageIO.h"
  12. #include "itksys/SystemTools.hxx"
  13. #include "stdafx.h"
  14.  
  15. int get_next_double(char **str, double *d)
  16. {
  17.     char start=0;
  18.     char isfloat=0;
  19.     char tmp_num[10];
  20.     int i=0,j=0;
  21.     char *end;
  22.  
  23.     memset(tmp_num,0,10);
  24.  
  25.     end=(*str)+strlen(*str);
  26.  
  27.     while(((*str)++)<=end)
  28.     { 
  29.         if( isdigit(**str) )
  30.         //if (((**str)>=0) && ((**str)<=9))
  31.  
  32.  
  33.         {
  34.             start=1;
  35.             tmp_num[j] = **str;
  36.             j=j+1;
  37.         }
  38.         //if( ispunct(**str) && start==1)
  39.         if ((**str)=='.' && start==1)
  40.  
  41.         {
  42.             isfloat=1;
  43.             tmp_num[j] = **str;
  44.             j=j+1;
  45.         }
  46.  
  47.         if( (**str==' ') || (**str==0) )
  48.         {
  49.             if(isfloat==1 && start==1)
  50.             {
  51.                 *d=atof(tmp_num);
  52.                 return 0;
  53.             }
  54.             if(*(*str+1)==0)
  55.             {
  56.                 return 1;
  57.             }
  58.             start=0;
  59.             isfloat=0;
  60.             j=0;
  61.             memset(tmp_num,0,10);
  62.         }
  63.  
  64.     }    
  65.  
  66.     return 1;
  67. }
  68.  
  69. int count_numbers(const char *str)
  70. {
  71.  
  72.     char *tmp = 0;
  73.     tmp=(char*)str;
  74.     int counter=0;
  75.  
  76.  
  77.     while(*tmp!='\n')
  78.     {
  79.     if (*tmp=='.')
  80.     {counter=counter+1;}
  81.     tmp=tmp+1;
  82.     }
  83.     return counter;
  84.  
  85.  
  86. }
  87.  
  88. namespace itk
  89. {
  90.  
  91. CSVImageIO::CSVImageIO()
  92. {
  93.   this->SetNumberOfDimensions(3); // CSV is 3D.
  94.   this->SetNumberOfComponents(1); // CSV only has one component.
  95.   m_ByteOrder = LittleEndian;
  96.   m_FileType = ASCII;
  97.  
  98.  
  99. CSVImageIO::~CSVImageIO()
  100. {
  101. }
  102.  
  103. void CSVImageIO::PrintSelf(std::ostream& os, Indent indent) const
  104. {
  105.   Superclass::PrintSelf(os, indent);
  106. }
  107.  
  108. bool CSVImageIO::CanReadFile( const char* filename ) 
  109.   std::cout << "CSVImageIO::CanReadFile() " << std::endl;
  110.   //
  111.   // If the file exists, and have extension .csv, then we are good to read it.
  112.   //
  113.   if( !itksys::SystemTools::FileExists( filename ) )
  114.     {
  115.     std::cout << "File doesn't exist" << std::endl;
  116.     return false;
  117.     }
  118. std::cout << itksys::SystemTools::GetFilenameLastExtension( filename ) << std::endl;
  119.   if( itksys::SystemTools::GetFilenameLastExtension( filename ) != ".csv" )
  120.     {
  121.     std::cout << "Wrong extension" << std::endl;
  122.     return false;
  123.     }
  124.  
  125.   return true;
  126. }
  127.  
  128.  
  129. void CSVImageIO::ReadImageInformation()
  130.     char onedataline[300000];
  131.     char headerLine[100];
  132.     _CRT_FLOAT ftemp;
  133.     _CRT_FLOAT ScanningLength;
  134.     _CRT_FLOAT ScanningResolution;
  135.     _CRT_FLOAT IndexLength;
  136.     _CRT_FLOAT IndexResolution;
  137.     char str[10];
  138.     int retval=0;
  139.  
  140.   // CSV only reads 8-bits unsigned short images.
  141.   this->SetPixelType( SCALAR );
  142.   this->SetComponentType( USHORT );
  143.  
  144.     // read our own information
  145.     m_InputStream.open(this->m_FileName.c_str(), std::ios::in);
  146.     m_InputStream.seekg(0, std::ios::beg);
  147.     for (int i=0; i<33; i++)
  148.     {
  149.         m_InputStream.getline(headerLine, 100, '\n');
  150.     }
  151.     m_InputStream.getline(headerLine, 100, ':');
  152.     m_InputStream.getline(headerLine, 100, '\n');
  153.     strcpy(str,headerLine);
  154.     retval=_atoflt( &ScanningLength,str);
  155.  
  156.     m_InputStream.getline(headerLine, 100, ':');
  157.     m_InputStream.getline(headerLine, 100, '\n');
  158.     strcpy(str,headerLine);
  159.     retval=_atoflt( &ScanningResolution,str);
  160.  
  161.     m_InputStream.getline(headerLine, 100, '\n');
  162.  
  163.     m_InputStream.getline(headerLine, 100, ':');
  164.     m_InputStream.getline(headerLine, 100, '\n');
  165.     strcpy(str,headerLine);
  166.     retval=_atoflt( &IndexLength,str);
  167.  
  168.     m_InputStream.getline(headerLine, 100, ':');
  169.     m_InputStream.getline(headerLine, 100, '\n');
  170.     strcpy(str,headerLine);
  171.     retval=_atoflt( &IndexResolution,str);
  172.  
  173.     m_InputStream.getline(headerLine, 100, '\n');
  174.  
  175.     m_InputStream.getline(headerLine, 100, '\n');
  176.  
  177.     m_InputStream.getline(headerLine, 100, ':');
  178.     m_InputStream.getline(headerLine, 100, '\n');
  179.     strcpy(str,headerLine);
  180.     retval=_atoflt( &ftemp,str);
  181.  
  182.     m_InputStream.getline(headerLine, 100, ':');
  183.     m_InputStream.getline(headerLine, 100, '\n');
  184.     strcpy(str,headerLine);
  185.     retval=_atoflt( &ftemp,str);
  186.  
  187.     m_InputStream.getline(headerLine, 100, ':');
  188.     m_InputStream.getline(headerLine, 100, '\n');
  189.     strcpy(str,headerLine);
  190.     retval=_atoflt( &ftemp,str);
  191.  
  192.     m_InputStream.getline(headerLine, 100, '\n');
  193.     m_InputStream.getline(headerLine, 100, '\n');
  194.     m_InputStream.getline(headerLine, 100, '\n');
  195.  
  196.     //data follows here
  197.     data_position = m_InputStream.tellg();
  198.     m_InputStream.getline(onedataline, 300000, '\n');
  199.  
  200.  
  201.     this->SetOrigin( 0, 0.0 );
  202.     this->SetOrigin( 1, 0.0 );
  203.     this->SetOrigin( 2, 0.0 );
  204.  
  205.     this->SetDimensions( 0, count_numbers(onedataline)-1);
  206.     this->SetDimensions( 1, ((ScanningLength.f)/(ScanningResolution.f)) );
  207.     this->SetDimensions( 2, ((IndexLength.f)/(IndexResolution.f)) );
  208.  
  209.     this->SetSpacing( 0, ((0.0027)*100) );
  210.     this->SetSpacing( 1, ((ScanningResolution.f)*100)  );
  211.     this->SetSpacing( 2, ((IndexResolution.f)*100) );
  212.  
  213.   m_InputStream.close();
  214. }
  215.  
  216.  
  217. void CSVImageIO::Read( void * buffer)
  218.     char onedataline[300000];
  219.     char *tmp=0;
  220.     double d=0;
  221.     unsigned short data=0;
  222.     unsigned short * inptr = static_cast< unsigned short * >( buffer );
  223.     unsigned short * tmp_buf=0;
  224.  
  225.     //copy the pointer to the buffer, because we are going to change the pointer soon
  226.     tmp_buf=inptr;
  227.  
  228.     //print the data for check
  229.     std::ofstream     m_OutputStream("D:\\MIP\\outdata.csv");
  230.  
  231.     //open file
  232.     this->m_InputStream.open(this->m_FileName.c_str(), std::ios::in);
  233.  
  234.     //seek to data position
  235.     m_InputStream.seekg(data_position);
  236.  
  237.     //clear temporay buffer that hold a complete line
  238.     //memset(onedataline,0,65000);
  239.  
  240.     //read in one data line
  241.     //m_InputStream.getline(onedataline, 65000, '\n');
  242.  
  243.     //const unsigned int m = this->GetDimensions( 0 );
  244.     //const unsigned int n = this->GetDimensions( 1 );
  245.     //const unsigned int o = this->GetDimensions( 2 );
  246.  
  247.     int i=0,j=0,k=0;
  248.  
  249.     //memset(inptr,0,m*n*o);
  250.  
  251.     do 
  252.     {    
  253.         memset(onedataline,0,300000);
  254.         m_InputStream.getline(onedataline, 300000, '\n');
  255.         tmp=(char*)onedataline;
  256.         while(get_next_double(&tmp,&d)==0)
  257.         {
  258.             data=(unsigned short)((double)fabs(d)*10000);
  259.             *(tmp_buf++)=data;
  260.             i++;
  261.             m_OutputStream << data << " ";
  262.         }
  263.  
  264.             m_OutputStream <<endl;
  265.  
  266.         //m_InputStream.getline(onedataline, 65000, '\n');
  267.     }while(!m_InputStream.eof());
  268.  
  269.     std::cout << "data read: " << i << std::endl;
  270. /*
  271.   const unsigned int nx = this->GetDimensions( 0 );
  272.   const unsigned int ny = this->GetDimensions( 1 );
  273.   const unsigned int nz = this->GetDimensions( 2 );
  274.  
  275.   ImageIORegion regionToRead = this->GetIORegion();
  276.  
  277.   ImageIORegion::SizeType  size  = regionToRead.GetSize();
  278.   ImageIORegion::IndexType start = regionToRead.GetIndex();
  279.  
  280.   const unsigned int mx = size[0];
  281.   const unsigned int my = size[1];
  282.   const unsigned int mz = size[2];
  283.  
  284.   const unsigned int sx = start[0];
  285.   const unsigned int sy = start[1];
  286.   const unsigned int sz = start[2];
  287.  
  288.   unsigned short * inptr = static_cast< unsigned short * >( buffer );
  289.  
  290.     //seek to data
  291.  
  292.     //read data
  293.     //store into buffer
  294. */
  295.   this->m_InputStream.close(); 
  296.  
  297.  
  298. bool CSVImageIO::CanWriteFile( const char * name )
  299. {
  300.   //
  301.   // CSV is not affraid of writing either !!
  302.   // 
  303.   return true;
  304. }
  305.  
  306.  
  307. void 
  308. CSVImageIO
  309. ::WriteImageInformation(void)
  310. {
  311.   // add writing here
  312. }
  313.  
  314.  
  315. /**
  316.  *
  317.  */
  318. void 
  319. CSVImageIO
  320. ::Write( const void* buffer) 
  321. {
  322. }
  323.  
  324. /** Given a requested region, determine what could be the region that we can
  325.  * read from the file. This is called the streamable region, which will be
  326.  * smaller than the LargestPossibleRegion and greater or equal to the 
  327. RequestedRegion */
  328. ImageIORegion 
  329. CSVImageIO
  330. ::CalculateStreamableReadRegionFromRequestedRegion( const ImageIORegion & requested ) const
  331. {
  332.   std::cout << "CSVImageIO::CalculateStreamableReadRegionFromRequestedRegion()" << std::endl;
  333.   std::cout << "Requested region = " << requested << std::endl;
  334.   //
  335.   // CSV is the ultimate streamer.
  336.   //
  337.   ImageIORegion streamableRegion = requested;
  338.  
  339.   std::cout << "StreamableRegion = " << streamableRegion << std::endl;
  340.  
  341.   return streamableRegion;
  342. }
  343.  
  344.  
  345. } // end namespace itk
  346.  
and the test data:::::::::::::::::::::::::::::::::::::::::::::: :::::::::::::::::::::::::::::::::::::::::::::


_____________C-Scan Settings__________________________
Distance Unit: mm
Scanning Axis: 0
Scanning Length: 1.000
Scanning Resolution: 0.2500
Index Axis: 1
Index Length: 1.000
Index Resolution: 0.2500
_____________Output Waveform Settings____________________
Data Ch: 1
Waveform Start(us): 7.182
Waveform Length(#): 0.000
Waveform Sampling Rate(MHz): 4000.000

______Output Data (Format for each row: index Number, scanning number, Waveform)______

0 0 0.0000 1.0000 0.0000 0.0000 2.0000 0.0000 0.0000 0.0000 3.0000 0.0000 0.0000
0 1 0.0000 1.0000 0.0000 0.0000 2.0000 0.0000 0.0000 0.0000 3.0000 0.0000 0.0000
0 2 0.0000 1.0000 0.0000 0.0000 2.0000 0.0000 0.0000 0.0000 3.0000 0.0000 0.0000
0 3 0.0000 1.0000 0.0000 0.0000 2.0000 0.0000 0.0000 0.0000 3.0000 0.0000 0.0000
1 0 0.0000 1.0000 0.0000 0.0000 2.0000 0.0000 0.0000 0.0000 3.0000 0.0000 0.0000
1 1 0.0000 1.0000 0.0000 0.0000 2.0000 0.0000 0.0000 0.0000 3.0000 0.0000 0.0000
1 2 0.0000 1.0000 0.0000 0.0000 2.0000 0.0000 0.0000 0.0000 3.0000 0.0000 0.0000
1 3 0.0000 1.0000 0.0000 0.0000 2.0000 0.0000 0.0000 0.0000 3.0000 0.0000 0.0000
2 0 0.0000 1.0000 0.0000 0.0000 2.0000 0.0000 0.0000 0.0000 3.0000 0.0000 0.0000
2 1 0.0000 1.0000 0.0000 0.0000 2.0000 0.0000 0.0000 0.0000 3.0000 0.0000 0.0000
2 2 0.0000 1.0000 0.0000 0.0000 2.0000 0.0000 0.0000 0.0000 3.0000 0.0000 0.0000
2 3 0.0000 1.0000 0.0000 0.0000 2.0000 0.0000 0.0000 0.0000 3.0000 0.0000 0.0000
3 0 0.0000 1.0000 0.0000 0.0000 2.0000 0.0000 0.0000 0.0000 3.0000 0.0000 0.0000
3 1 0.0000 1.0000 0.0000 0.0000 2.0000 0.0000 0.0000 0.0000 3.0000 0.0000 0.0000
3 2 0.0000 1.0000 0.0000 0.0000 2.0000 0.0000 0.0000 0.0000 3.0000 0.0000 0.0000
3 3 0.0000 1.0000 0.0000 0.0000 2.0000 0.0000 0.0000 0.0000 3.0000 0.0000 0.0000

I am looking forward for your answer!!
Thanx!!
Jan 18 '08 #1
Share this Question
Share on Google+
21 Replies


RedSon
Expert 5K+
P: 5,000
Please enclose your posted code in [code] tags (See How to Ask a Question).

This makes it easier for our Experts to read and understand it. Failing to do so creates extra work for the moderators, thus wasting resources, otherwise available to answer the members' questions.

Please use [code] tags in future.

MODERATOR
Jan 18 '08 #2

P: 15
Please enclose your posted code in [code] tags (See How to Ask a Question).

This makes it easier for our Experts to read and understand it. Failing to do so creates extra work for the moderators, thus wasting resources, otherwise available to answer the members' questions.

Please use [code] tags in future.

MODERATOR
So sorry,i couldnt understand it.I will post again my question.
Sorry!
Jan 18 '08 #3

RedSon
Expert 5K+
P: 5,000
So sorry,i couldnt understand it.I will post again my question.
Sorry!
No don't post again. That is double posting and is a waste of time and energy and will get you one step closer to being banned from this site. Your original post is fine. Just use [code] tags in the future.

-MODERATOR
Jan 18 '08 #4

P: 15
Ok thnx!!Can anybody help me?I need an advice as soon as possible if its easy.
Thnx guys!!
Jan 21 '08 #5

weaknessforcats
Expert Mod 5K+
P: 9,197
My first suggestion is to get your arrays off the stack and onto the heap. I would never let the compiler manage the memory.
Jan 21 '08 #6

P: 15
My first suggestion is to get your arrays off the stack and onto the heap. I would never let the compiler manage the memory.
Can you tell practically how can i do this??
Thnx for answering to me!!
Jan 22 '08 #7

weaknessforcats
Expert Mod 5K+
P: 9,197
Just allocate your own memory:

Expand|Select|Wrap|Line Numbers
  1. char onedataline[300000];
  2.  
  3. //becomes:
  4.  
  5. char* onedataline = new char[300000];
  6.  
This should require no code chnages anywhere since the heap array and the stack array use the same syntax. You just need to delete the array when you are finished with it.

I would do this will all the local variables.
Jan 22 '08 #8

P: 15
Just allocate your own memory:

Expand|Select|Wrap|Line Numbers
  1. char onedataline[300000];
  2.  
  3. //becomes:
  4.  
  5. char* onedataline = new char[300000];
  6.  
This should require no code chnages anywhere since the heap array and the stack array use the same syntax. You just need to delete the array when you are finished with it.

I would do this will all the local variables.

Thank you very much!!I will try it and i will tell you what happened!!
Jan 23 '08 #9

P: 15
Thank you very much!!I will try it and i will tell you what happened!!
Ok i followed your advice and now its working for a large file 200MB.But
there is a strange artifact in every image a white slice.Do you have any idea
how this slice created?
Tnx for help!!
I am waiting your answer!!
Jan 23 '08 #10

weaknessforcats
Expert Mod 5K+
P: 9,197
But
there is a strange artifact in every image a white slice.Do you have any idea
how this slice created?
I'm not sure what you are talking about. As in "strange artifact" and "white slice".

If you allocate an array, it is required that a single contiguous allocation be made. The contents of the elements are indeterminate unless you have default constuctors.
Jan 23 '08 #11

P: 15
I'm not sure what you are talking about. As in "strange artifact" and "white slice".

If you allocate an array, it is required that a single contiguous allocation be made. The contents of the elements are indeterminate unless you have default constuctors.

Sorry again but i want you to make me a clarification.You told me to allocate my
own memory and i did only for the two spots in my code tha it refered:
code (cpp):
char onedataline[300000];

I have to do it somewhere else??

Sorry but i am new and i need your help!!
Jan 25 '08 #12

RedSon
Expert 5K+
P: 5,000
Sorry again but i want you to make me a clarification.You told me to allocate my
own memory and i did only for the two spots in my code tha it refered:
code (cpp):
char onedataline[300000];

I have to do it somewhere else??

Sorry but i am new and i need your help!!
First I think you should explain what "strange artifact" and "white slice" mean.
Jan 25 '08 #13

P: 15
First I think you should explain what "strange artifact" and "white slice" mean.
Before i make this change you advice me my code could work for csv files until 80MB.The picture i had as a result in my screen was an image as i would like to be with 3 layers.Now after i did the change the image i get is totally different.I cant see the layers instead i can see a white layer and some strange spots.But the positive is that i can open a 200MB file, but its not correct.

I am looking forward for your answer!!
Thnx!!
Jan 25 '08 #14

weaknessforcats
Expert Mod 5K+
P: 9,197
Before i make this change you advice me my code could work for csv files until 80MB.The picture i had as a result in my screen was an image as i would like to be with 3 layers.Now after i did the change the image i get is totally different.I cant see the layers instead i can see a white layer and some strange spots.But the positive is that i can open a 200MB file, but its not correct.
You never answered RedSon's question, or mine: What is this "artifact" and what is this "white slice"??????

A csv file is just a file where each record is a line and the values in the line a separated by commas. That's all it is.

The actual meaning of the values differes by application. You cannot use a csv file for a picture unless you already know the structure of the file. Just opening any old csv file will get you garbage.

It's starting to look like an application bug and not a memory allocation problem.

Exactly what are you trying to do?
Jan 25 '08 #15

P: 15
You never answered RedSon's question, or mine: What is this "artifact" and what is this "white slice"??????

A csv file is just a file where each record is a line and the values in the line a separated by commas. That's all it is.

The actual meaning of the values differes by application. You cannot use a csv file for a picture unless you already know the structure of the file. Just opening any old csv file will get you garbage.

It's starting to look like an application bug and not a memory allocation problem.

Exactly what are you trying to do?
Hallo!!
An artifact is a structure or feature that is yisible only as a result of external action or experimental error.Also known as disturbance in biopotential signals.

The csv files i have is exctly like the example i sent you above.
Opening these files i expect to see an image with 3 layers.And i am trying to open all these files and seethe images.

I am looking forward for your answer.
Jan 28 '08 #16

RedSon
Expert 5K+
P: 5,000
Hallo!!
An artifact is a structure or feature that is yisible only as a result of external action or experimental error.Also known as disturbance in biopotential signals.

The csv files i have is exctly like the example i sent you above.
Opening these files i expect to see an image with 3 layers.And i am trying to open all these files and seethe images.

I am looking forward for your answer.
CSV files are not images. If you open a csv file you will see some data separated by commas. If you are using a CSV file to represent an image, for example, where each entry represents an RGB value for a pixel then you are going to have to write a custom application viewer.
Jan 28 '08 #17

P: 15
CSV files are not images. If you open a csv file you will see some data separated by commas. If you are using a CSV file to represent an image, for example, where each entry represents an RGB value for a pixel then you are going to have to write a custom application viewer.

Ok then lets assume that we have another type of file.A file like this one i send you.These values give us a three layer image.Now it is possible to imagine the problem??

Sorry if i am not clear some times but i am new.
thank you for your help!
Jan 30 '08 #18

100+
P: 424
I suspect English is not your native language! Taking a wild guess, it looks like you wrote a program using some libraries which somehow converts your csv data (presumably representing tissue imaging scans or something) into actual images (bitmaps, etc) you can look at. If you see artefacts or "white regions" in your resulting images, then this is probably a problem with the way you're converting the csv data into images, do you actually understand how this is being done in your program? If the csv data represents electrical signals from your tissue scans, for example, perhaps you need to rescale your data by equating the maximum and minimum voltage to the maximum and minimum pixel brightness supported by the target image format?
Jan 30 '08 #19

P: 15
Good morning!!Its true that English its not my native language and also i am new
in the programming.All i had to do was to make a reader for a specific kind of files and integrate it in a visualization platform that other people make.My files has the following form:

_____________C-Scan Settings__________________________
Distance Unit: mm
Scanning Axis: 0
Scanning Length: 1.000
Scanning Resolution: 0.2500
Index Axis: 1
Index Length: 1.000
Index Resolution: 0.2500
_____________Output Waveform Settings____________________
Data Ch: 1
Waveform Start(us): 7.182
Waveform Length(#): 0.000
Waveform Sampling Rate(MHz): 4000.000

______Output Data (Format for each row: index Number, scanning number, Waveform)______

0 0 0.0000 1.0000 0.0000 0.0000 2.0000 0.0000 0.0000 0.0000 3.0000 0.0000 0.0000
0 1 0.0000 1.0000 0.0000 0.0000 2.0000 0.0000 0.0000 0.0000 3.0000 0.0000 0.0000
0 2 0.0000 1.0000 0.0000 0.0000 2.0000 0.0000 0.0000 0.0000 3.0000 0.0000 0.0000
0 3 0.0000 1.0000 0.0000 0.0000 2.0000 0.0000 0.0000 0.0000 3.0000 0.0000 0.0000
1 0 0.0000 1.0000 0.0000 0.0000 2.0000 0.0000 0.0000 0.0000 3.0000 0.0000 0.0000
1 1 0.0000 1.0000 0.0000 0.0000 2.0000 0.0000 0.0000 0.0000 3.0000 0.0000 0.0000
1 2 0.0000 1.0000 0.0000 0.0000 2.0000 0.0000 0.0000 0.0000 3.0000 0.0000 0.0000
1 3 0.0000 1.0000 0.0000 0.0000 2.0000 0.0000 0.0000 0.0000 3.0000 0.0000 0.0000
2 0 0.0000 1.0000 0.0000 0.0000 2.0000 0.0000 0.0000 0.0000 3.0000 0.0000 0.0000
2 1 0.0000 1.0000 0.0000 0.0000 2.0000 0.0000 0.0000 0.0000 3.0000 0.0000 0.0000
2 2 0.0000 1.0000 0.0000 0.0000 2.0000 0.0000 0.0000 0.0000 3.0000 0.0000 0.0000
2 3 0.0000 1.0000 0.0000 0.0000 2.0000 0.0000 0.0000 0.0000 3.0000 0.0000 0.0000
3 0 0.0000 1.0000 0.0000 0.0000 2.0000 0.0000 0.0000 0.0000 3.0000 0.0000 0.0000
3 1 0.0000 1.0000 0.0000 0.0000 2.0000 0.0000 0.0000 0.0000 3.0000 0.0000 0.0000
3 2 0.0000 1.0000 0.0000 0.0000 2.0000 0.0000 0.0000 0.0000 3.0000 0.0000 0.0000
3 3 0.0000 1.0000 0.0000 0.0000 2.0000 0.0000 0.0000 0.0000 3.0000 0.0000 0.0000

and when i run the program i get the following..:
[IMG]test[/IMG]
Jan 31 '08 #20

P: 15
Sorry how can i insert an image??
Jan 31 '08 #21

100+
P: 424
It sounds to me more like you don't understand what kind of input the visualization platform expects. Read its documentation to understand how it works.
Jan 31 '08 #22

Post your reply

Sign in to post your reply or Sign up for a free account.