MathGroup Archive 2007

[Date Index] [Thread Index] [Author Index]

Search the Archive

RE: Manipulating current read position in a binary file

  • To: mathgroup at smc.vnet.net
  • Subject: [mg80314] RE: [mg80266] Manipulating current read position in a binary file
  • From: "David Annetts" <davidannetts at aapt.net.au>
  • Date: Fri, 17 Aug 2007 01:51:44 -0400 (EDT)
  • References: <200708160844.EAA23238@smc.vnet.net>

Hi Greg,

> I'm trying to read in a large data file (several million data 
> points); at the beginning of the file is the number of data 
> points, but at the end of the file is the number of bins into 
> which the data will be grouped.  Is there a way to skip to 
> the end of the file to read in the number of bins before 
> returning to the beginning of the file to read in the actual 
> data?  I can do the analysis In another CAS, since there are 
> functions fseek and ftell, so that once I read in the number 
> of data points I can seek to the end, get the grouping count, 
> then seek back to the beginning, but I'd like to be able to 
> do it in Mathematica.
> 
> Any suggestions?

It depends on the file's exact format, but something like

	iunit = OpenRead["file"];

	Find[iunit, "Here are my bins"];
	bins = ReadList[iunit, Number, numberOfBins];

	SetStreamPosition[iunit, 0]; (* rewind *)
	data = ReadList[iunit, Number, numberOfData];
	
	Close[iunit];

Should get you started.

However, unless there were a compelling reason, it'd be inclined to 
1. read the file		(idata = Import[])
2. sort out my data	(data = Take[idata, {1, 1000000}] or data =
idata[[{1, 10000000}]];)
3. sort out my bins	(bins = idata[[2000000, 2000000+20]])

Regards,

Dave.


  • Prev by Date: Re: Manipulating current read position in a binary file
  • Next by Date: Re: Questions about InputField
  • Previous by thread: Re: Manipulating current read position in a binary file
  • Next by thread: Re: Manipulating current read position in a binary file