[GRASS-dev] Using the new s flag or seed option for r.mapcalc in a python script

Paulo van Breugel p.vanbreugel at gmail.com
Thu Jul 24 01:52:38 PDT 2014


How do I use this new flag / seed parameter for r.mapcalc in python 
scripts? I have for example a script where I can define the seed, or if 
left empty I want to set the 's' flag:

     if seed == "":
         grass.mapcalc("$tmp_map = rand(${minval},${maxval})",
             minval = minval,
             maxval = maxval,
             tmp_map = tmp_map)
     else:
         grass.mapcalc("$tmp_map = rand(${minval},${maxval})",
             minval = minval,
             maxval = maxval,
             tmp_map = tmp_map)

Where I need to set the flag='s' in the first instance or the seed= in 
the second instance






On 23-07-14 02:14, Glynn Clements wrote:
> Glynn Clements wrote:
>
>> I'm inclined to add both an option (to specify a seed, replacing the
>> environment variable) and a flag (to seed from the system clock or
>> whatever), and having the PRNG generate a fatal error if neither of
>> those are used.
> This is now done.
>
> r61350 adds the lrand48/mrand48/drand48 equivalents to lib/gis. Brief
> testing suggests that the results are identical to those generated by
> GNU libc (which should be identical to any other POSIX implementation).
>
> r61352 changes it to generate a fatal error if used prior to seeding.
>
> r61353 changes r.mapcalc so that seeding is performed via seed= or -s.
> The seed (whether specified by seed= or generated for -s) is added to
> the history (for r.mapcalc; r3.mapcalc's create_history() function is
> a stub; do 3D rasters have history?)
>
> Note that GRASS_RND_SEED is no longer supported. That was a hack from
> the time before r.mapcalc used G_parser().
>
> As I write this, it has occurred to me that the behaviour of rand()
> may be non-deterministic in the presence of certain forms of
> parallelism, e.g. multiple occurences of rand() in the expression(s)
> in conjunction with pthreads. Ultimately we may need to expand the
> PRNG to support explicit state (as per erand48, nrand48 and jrand48).
>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/grass-dev/attachments/20140724/e7608d6d/attachment.html>


More information about the grass-dev mailing list