MathGroup Archive 2005

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

Search the Archive

Re: Export, Import, Convert Types Again?

  • To: mathgroup at smc.vnet.net
  • Subject: [mg57245] Re: Export, Import, Convert Types Again?
  • From: Bill Rowe <readnewsciv at earthlink.net>
  • Date: Sat, 21 May 2005 02:41:22 -0400 (EDT)
  • Sender: owner-wri-mathgroup at wolfram.com

On 5/20/05 at 4:43 AM, leenewm at umich.edu (Lee Newman) wrote:

>Q: What is the (best) way to save a big expression of data to be
>used later in the same notebook without having to do type
>conversion processing?

>Situation:

>1) I have a notebook that imports data from various Excel
>spreadsheets and converts the data to the desired types.  When
>complete, I "save" the expression containing the data using Export,
>i.e, Export["featureDB.tsv", "TSV"].  I do this so I don't have to
>re-process the data everytime I do analysis on it in this notebook.

>2) When I open the noteobook again, I import the data using the
>statement:  featureDB = Import["featureDB.tsv"]

>Problem: Many of type conversions that I took the time to process
>are lost. Using Head /@ featureDB[[1]]  before and after the
>export/re-import, the types are as follows:

>Before:  {Integer, Integer, List, List, List, Integer, List, List,
>Symbol, List} After   : {Integer, Integer, String, String, String,
>Integer, String, String, String, String}

>So it seems that lists become Strings as  Symbols (e.g. True,
>False, Null).  I use Export so I can view the data outside
>Mathematica using a text editor -- should I use Save instead?  Is
>there another Export format that will preserve mathematica
>expressions like lists upon Import?

A combination of Import/Export is quite useful when data is in a format not native to Mathematica or when you want the data saved in a format easier to read in a different application. But once you have imported the data into Mathematica and plan only to use the data in Mathematica using either Put or DumpSave is much more efficient.

Put[expr, "filename"] or equivalently, expr >> "filename", writes all of the values associated with expr to a text file in a format Mathematica understands. Then in a future notebook you can restore things using Get as in expr = Get["filename"] or equivalently expr = << "filename".

An alternative which is more efficient, would be DumpSave. DumpSave["file.nx", symbol] writes everything associated with symbol including the name to a binary file. Then Get["file.mx"] or <<"file.mx" restores things including symbol names. In fact you can save the entire Global` context and restore it using DumpSave and Get.

The disadvantage of DumpSave is the binary format is not portable accross platforms. That is if I used DumpSave to create a file on my Mac and send it to someone using Windows, they will not be able to read the file correctly.

For myself, I typically use Export{"filename", expr, "CSV"] and modify the file with a text editor so that I can restor things using expr = << "filename". This is somewhat more effort than simply using Put. I prefer my method over Put becuase the file Put creates is not neatly formated and is consequently more difficult to read in something other than Mathematica. 
--
To reply via email subtract one hundred and four


  • Prev by Date: Re: GridLines issue
  • Next by Date: Re: runs test for evaluation of model fit
  • Previous by thread: Re: Export, Import, Convert Types Again?
  • Next by thread: Merging InterpolationFunctions