Re: Batch

*To*: mathgroup at smc.vnet.net*Subject*: [mg60388] Re: [mg60364] Batch*From*: "David Annetts" <davidannetts at aapt.net.au>*Date*: Thu, 15 Sep 2005 05:16:11 -0400 (EDT)*Sender*: owner-wri-mathgroup at wolfram.com

Hi Maria, > I need to run a batch in Mathematica, so that I read data > from several files and execute the calculations and generate > the graphics. > Then I read another group of data and perform the same > calculation and that goes on until the data finish. > > I just manage to do this by putting all the calculation > in a single cell, inside a Do. My cases are rather large, I > am dealing with experimental data and I have to manipulate > files with 1,000,000 points. > I cannot just read all of them at once and start the calculus. > > My first go was to separate the calculations in notebooks > and one nb called the next one. The first notebook called the > following without a problem, but it did not evaluate it. I > had to do it manually. And I have around 100 cases to > analyse. I really need to automatize the procedure. My suggestion is to save each notebook as a package (File->Save as special->Package format). This will leave you with a series of files that you can happily batch, either from your operating system, or through Mathematica. For example, we can generate some files using ( ount = OpenWrite[onam[[#]]]; ostr = "Print[\"Hi from file : \", "; ostr = StringJoin[ostr, ToString[#], "];"]; Write[ount, OutputForm[ostr]]; Close[ount]; ) & /@ Range[Length@onam] Then, under Windows, we can run them sequentially using the batch file c:\Mathematica\5.0.1\math < File_0001.m c:\Mathematica\5.0.1\math < File_0002.m c:\Mathematica\5.0.1\math < File_0003.m c:\Mathematica\5.0.1\math < File_0004.m c:\Mathematica\5.0.1\math < File_0005.m You will probably have to change the path to math.exe. Note that this is not the front end, nor even the kernel, but a text-mode front end. It is also worth noting that we can use Mathematica to run the batch process using the following code ifil = FileNames["*.m"] ( Print["Working on file : ", ifil[[#]]]; Get[ifil[[#]]]; ) & /@ Range[Length@ifil] Regards, Dave.