[GRASS-dev] grass.info versus print
Paulo van Breugel
p.vanbreugel at gmail.com
Thu Apr 14 07:25:44 PDT 2016
On 14-04-16 16:20, Vaclav Petras wrote:
>
> On Thu, Apr 14, 2016 at 9:55 AM, Paulo van Breugel
> <p.vanbreugel at gmail.com <mailto:p.vanbreugel at gmail.com>> wrote:
>
>> I would have to go through the individual examples but sometimes
>> it might be be clear what is a message to inform user about
>> something and what is a text output of the module. A rule of
>> thumb can be that modules which output maps, (usually) don't do
>> text output, so they shouldn't use print().
>
> In this case (r.vif) the output is not a map, but a list of
> values, i.e., text output (see below). Based on the guidelines, I
> would assume I should use print()?
>
>
> Then print() is the right thing. I would recommend finding a similar
> module and see its behavior. For example, r.univar will give you human
> readable report and also parseable output (in this case by
> grass.script.parse_command()). Both are written to standard output
> (the g.message wrappers use standard error output).
OK, will do that
>
>
> All variables
>
> ----------------------------------------
>
> variable vif sqrtvif
>
> 2000_01_precip at climate_1970_2012 2.30 1.52
>
> 2000_03_tempmean at climate_1970_2012 24.95 5.00
>
> 2000_11_precip at climate_1970_2012 3.54 1.88
>
> 2001_02_precip at climate_1970_2012 4.55 2.13
>
> 2001_04_tempmean at climate_1970_2012 25.01 5.00
>
> Variable '2001_04_tempmean at climate_1970_2012' removed
>
> ----------------------------------------
>
> variable vif sqrtvif
>
> 2000_01_precip at climate_1970_2012 2.30 1.52
>
> 2000_03_tempmean at climate_1970_2012 2.19 1.48
>
> 2000_11_precip at climate_1970_2012 3.48 1.87
>
> 2001_02_precip at climate_1970_2012 4.54 2.13
>
> Final selected variables are: 2000_01_precip, 2000_03_tempmean, 2000_11_precip, 2001_02_precip
>
> with as maximum VIF: 5.69787583189
>
>
>
> This definitively looks like something from r.report or r.info
> <http://r.info>.
>
>> Perhaps the most important thing is that one should avoid
>> mixing the two, which is something that maybe could go
>> somewhere in the wiki?
>>
>>
>> Feel free to extent either wiki or guidelines if you think it is
>> not clear enough.
>
> I wouldn't mind doing so, but I probably should understand better
> myself what exactly the issue is with using both print() and
> grass.info <http://grass.info>() in one script. Based on what I
> read in the guidelines, I am not clear whether using both is
> against the guidelines as such,
>
>
> You can use both in one script. The difference is what you use them
> for. For example, a lot of modules will tell which map was created
> (this is done through g.message or its C equivalents), while g.region
> -p will use standard output. Some cases are unclear, for example
> v.in.lidar uses standard output (fprintf(stdout,...)) to tell how many
> points imported. G_message() might be more appropriate here because it
> is an message to the user while the output is the vector map. If
> G_message() would be used, this output could be silenced by --quiet.
>
> but technically it seems it can cause problems as you explained
> (and I experienced).
>
>
> They are mostly related to syncing of stdout and strerr streams which
> is more challenging for the GUI (and may need some fixing there).
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/grass-dev/attachments/20160414/8cb807c0/attachment.html>
More information about the grass-dev
mailing list