MathGroup Archive 2006

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

Search the Archive

Re: "In progress" saving of data collected using Reap/Sow

  • To: mathgroup at smc.vnet.net
  • Subject: [mg66179] Re: "In progress" saving of data collected using Reap/Sow
  • From: "Ray Koopman" <koopman at sfu.ca>
  • Date: Wed, 3 May 2006 02:44:52 -0400 (EDT)
  • References: <e2v5pu$n64$1@smc.vnet.net><e36vft$n7c$1@smc.vnet.net>
  • Sender: owner-wri-mathgroup at wolfram.com

Expanding on my previous post, here are three ways to unravel z into
a simple list of all the past results. The first way is fastest, but
doesn't work if each result itself is a list.

In[1]:= n = 8
        y = {}; Do[AppendTo[y,result[i]],{i,n}]; y
        z = {}; Do[z = {z,result[i]},{i,n}]; z
        Flatten[z] === y
        Nest[FlattenAt[#,1]&,z,n] === y
        Table[Last@Nest[First,z,n-i],{i,n}] === y

Out[1]= 8
Out[2]= {result[1],result[2],result[3],result[4],
         result[5],result[6],result[7],result[8]}
Out[3]= {{{{{{{{{},result[1]},result[2]},result[3]},result[4]},
                   result[5]},result[6]},result[7]},result[8]}
Out[4]= True
Out[5]= True
Out[6]= True

In[7]:= n = 8
        y = {}; Do[AppendTo[y,{i,-i}],{i,n}]; y
        z = {}; Do[z = {z,{i,-i}},{i,n}]; z
        Flatten[z] === y
        Nest[FlattenAt[#,1]&,z,n] === y
        Table[Last@Nest[First,z,n-i],{i,n}] === y

Out[7]= 8
Out[8]= {{1,-1},{2,-2},{3,-3},{4,-4},
         {5,-5},{6,-6},{7,-7},{8,-8}}
Out[9]= {{{{{{{{{},{1,-1}},{2,-2}},{3,-3}},{4,-4}},
                   {5,-5}},{6,-6}},{7,-7}},{8,-8}}
Out[10]= False
Out[11]= True
Out[12]= True

Ray Koopman wrote:
> giacomo.ciani at gmail.com wrote:
> > Hello to everyone,
> >
> > I'm quite new to Mathematica, so please be patient if I ask something
> > trivial.
> > I wrote a little simulation program that need to iterate a calculation
> > thousand of times, storing the result of each iteration. At first, I
> > used the "Append" function to store data in a list at every iteration,
> > but I noticed that this operation become slower and slower as the list
> > increases in size, so that appending a single data at the end of a
> > quite big list takes a lot of time.
> > So I migrated to the reap/sow functions that are written exactly for
> > this purpose, ad gives much better performances. My code now is
> > something like:
> >
> > results = Reap[Do[a lot of iterations with almost a call to Sow in
> > each]]];
> >
> > The problem now is that, since the collected data are returned by the
> > Reap function only whern it terminates, I have no way to access that
> > data if the calculation is in progress, ie if the Do loop is not
> > completed. This way, I can't check the status of the calculation nor
> > provide backup save of data during the calculation itself, that can
> > last for days...
> > As you can imagine, using the Append function both this (and others)
> > tasks where easily accomplishable, since in every moment I had a list
> > whith all the results obtained so far...
> >
> > Any idea on how I can solve the problem?
> >
> > Thanks a lot
> >
> > Giacomo
>
>
> In[1]:= n = 1*^4
>         Timing[y = {}; Do[AppendTo[y,i],{i,n}];]
>         Timing[z = {}; Do[z = {z,i},{i,n}];]
>         i = Random[Integer,{1,n}]
>         y[[i]]
>         Last@Nest[First,z,n-i]
>
> Out[1]= 10000
> Out[2]= {1.86 Second,Null}
> Out[3]= {0.02 Second,Null}
> Out[4]= 9353
> Out[5]= 9353
> Out[6]= 9353


  • Prev by Date: Re: Re: Conditions with Statistical Functions
  • Next by Date: Re: nearest neighbor
  • Previous by thread: Re: "In progress" saving of data collected using Reap/Sow
  • Next by thread: Re: "In progress" saving of data collected using Reap/Sow