[GRASS-SVN] r63899 - in grass/branches/releasebranch_7_0: . scripts/db.univar scripts/v.db.univar
svn_grass at osgeo.org
svn_grass at osgeo.org
Thu Jan 1 06:11:02 PST 2015
Author: martinl
Date: 2015-01-01 06:11:02 -0800 (Thu, 01 Jan 2015)
New Revision: 63899
Modified:
grass/branches/releasebranch_7_0/
grass/branches/releasebranch_7_0/scripts/db.univar/db.univar.py
grass/branches/releasebranch_7_0/scripts/v.db.univar/v.db.univar.py
Log:
db.univar: check if column is numeric
replace print by sys.stdout.write()
v.db.univar: check if map exists
catch error from db.univar
(merge r63897-8 from trunk)
Property changes on: grass/branches/releasebranch_7_0
___________________________________________________________________
Modified: svn:mergeinfo
- /grass/trunk:60817,61096,61141,61994,62105,62179-62180,62182,62190,62403,62422,62424,62437,62466,62469,62487,62491,62494,62501,62506,62508-62509,62515,62518-62519,62521,62526,62533,62539,62541,62555,62562,62566,62570,62573,62575,62585,62588,62597,62603,62606,62608-62609,62614,62618,62628,62632,62638,62642,62648-62649,62652,62654-62657,62666,62691,62705,62709,62723,62730,62739,62741,62743,62746,62750-62752,62757,62762,62785,62798,62800-62801,62803,62805,62812,62822,62824,62828,62831,62838,62845,62847,62850,62856,62879,62881,62886,62904,62907-62908,62910,62912,62914,62916,62918,62920,62925,62932-62933,62935,62940,62942,62944-62946,62949,62955-62956,62958,62960,62962,62964,62966-62968,62970,62973,62975,62977,62981,62983,62985,62987,62989,62991,62993,62995,62997,62999-63000,63003,63005,63007,63009,63011,63013,63015,63017,63020,63022,63024,63026,63028-63031,63033,63035,63037,63040,63043-63044,63047,63049,63051,63053,63055,63057,63060,63062-63064,63066,63068,63070-63071,63074,
63076,63079,63081,63083,63085,63087,63089,63091,63093,63095,63098,63100,63102,63105,63107,63109,63111,63113-63114,63116,63119,63121,63123,63125,63130,63132-63133,63135,63137,63140,63143,63145,63147,63149,63151,63153-63154,63157,63160,63165,63170,63173,63175,63187,63192-63193,63196,63199-63200,63202,63209,63216,63220-63221,63224,63227,63240,63246,63250,63255,63259,63261,63275-63276,63279,63281,63283,63287,63290,63292,63297,63302,63304-63307,63315,63319,63327,63330,63332,63339,63342,63345,63361-63363,63367,63379,63389,63391,63393,63402,63408-63409,63416-63417,63425,63427,63429,63431,63433,63448,63451,63453,63457,63459,63464-63470,63473,63482,63497,63505,63508,63510,63515,63521-63524,63526,63536-63537,63551-63552,63554,63556,63558-63559,63562,63570,63576,63582,63589-63593,63602,63604,63608-63609,63616,63618,63624,63626,63628,63630,63634,63639,63642,63644,63650,63652,63656,63679,63685,63689,63691,63693,63695,63698,63700-63702,63704,63706-63707,63709,63711,63713,63715,63717-63718
,63721-63727,63731,63733,63740-63742,63744,63747-63749,63751-63752,63756,63758,63761,63767,63777,63780,63783,63787,63793,63796-63798,63801,63803,63807-63808,63812,63814,63816,63821,63823-63824,63827-63828,63830-63831,63834-63835,63837-63839,63841,63843-63844,63846-63847,63849,63851,63853,63855-63856,63858-63859,63862,63865,63869,63871,63882,63884,63889-63890,63895
+ /grass/trunk:60817,61096,61141,61994,62105,62179-62180,62182,62190,62403,62422,62424,62437,62466,62469,62487,62491,62494,62501,62506,62508-62509,62515,62518-62519,62521,62526,62533,62539,62541,62555,62562,62566,62570,62573,62575,62585,62588,62597,62603,62606,62608-62609,62614,62618,62628,62632,62638,62642,62648-62649,62652,62654-62657,62666,62691,62705,62709,62723,62730,62739,62741,62743,62746,62750-62752,62757,62762,62785,62798,62800-62801,62803,62805,62812,62822,62824,62828,62831,62838,62845,62847,62850,62856,62879,62881,62886,62904,62907-62908,62910,62912,62914,62916,62918,62920,62925,62932-62933,62935,62940,62942,62944-62946,62949,62955-62956,62958,62960,62962,62964,62966-62968,62970,62973,62975,62977,62981,62983,62985,62987,62989,62991,62993,62995,62997,62999-63000,63003,63005,63007,63009,63011,63013,63015,63017,63020,63022,63024,63026,63028-63031,63033,63035,63037,63040,63043-63044,63047,63049,63051,63053,63055,63057,63060,63062-63064,63066,63068,63070-63071,63074,
63076,63079,63081,63083,63085,63087,63089,63091,63093,63095,63098,63100,63102,63105,63107,63109,63111,63113-63114,63116,63119,63121,63123,63125,63130,63132-63133,63135,63137,63140,63143,63145,63147,63149,63151,63153-63154,63157,63160,63165,63170,63173,63175,63187,63192-63193,63196,63199-63200,63202,63209,63216,63220-63221,63224,63227,63240,63246,63250,63255,63259,63261,63275-63276,63279,63281,63283,63287,63290,63292,63297,63302,63304-63307,63315,63319,63327,63330,63332,63339,63342,63345,63361-63363,63367,63379,63389,63391,63393,63402,63408-63409,63416-63417,63425,63427,63429,63431,63433,63448,63451,63453,63457,63459,63464-63470,63473,63482,63497,63505,63508,63510,63515,63521-63524,63526,63536-63537,63551-63552,63554,63556,63558-63559,63562,63570,63576,63582,63589-63593,63602,63604,63608-63609,63616,63618,63624,63626,63628,63630,63634,63639,63642,63644,63650,63652,63656,63679,63685,63689,63691,63693,63695,63698,63700-63702,63704,63706-63707,63709,63711,63713,63715,63717-63718
,63721-63727,63731,63733,63740-63742,63744,63747-63749,63751-63752,63756,63758,63761,63767,63777,63780,63783,63787,63793,63796-63798,63801,63803,63807-63808,63812,63814,63816,63821,63823-63824,63827-63828,63830-63831,63834-63835,63837-63839,63841,63843-63844,63846-63847,63849,63851,63853,63855-63856,63858-63859,63862,63865,63869,63871,63882,63884,63889-63890,63895,63897-63898
Modified: grass/branches/releasebranch_7_0/scripts/db.univar/db.univar.py
===================================================================
--- grass/branches/releasebranch_7_0/scripts/db.univar/db.univar.py 2015-01-01 14:07:44 UTC (rev 63898)
+++ grass/branches/releasebranch_7_0/scripts/db.univar/db.univar.py 2015-01-01 14:11:02 UTC (rev 63899)
@@ -59,12 +59,12 @@
import os
import atexit
import math
-from grass.script.utils import try_remove
-from grass.script import core as grass
+import grass.script as grass
+
def cleanup():
for ext in ['', '.sort']:
- try_remove(tmp + ext)
+ grass.try_remove(tmp + ext)
def sortfile(infile, outfile):
inf = file(infile, 'r')
@@ -100,8 +100,20 @@
perc = [float(p) for p in perc.split(',')]
+ desc_table = grass.db_describe(table, database=database, driver=driver)
+ if not desc_table:
+ grass.fatal(_("Unable to describe table <%s>") % table)
+ found = False
+ for cname, ctype, cwidth in desc_table['cols']:
+ if cname == column:
+ found = True
+ if ctype not in ('INTEGER', 'DOUBLE PRECISION'):
+ grass.fatal(_("Column <%s> is not numeric") % cname)
+ if not found:
+ grass.fatal(_("Column <%s> not found in table <%s>") % (column, table))
+
if not shellstyle:
- grass.message(_("Calculation for column <%s> of table <%s>...") % (column, table))
+ grass.verbose(_("Calculation for column <%s> of table <%s>...") % (column, table))
grass.message(_("Reading column values..."))
sql = "SELECT %s FROM %s" % (column, table)
@@ -128,7 +140,7 @@
# calculate statistics
if not shellstyle:
- grass.message(_("Calculating statistics..."))
+ grass.verbose(_("Calculating statistics..."))
N = 0
sum = 0.0
@@ -154,30 +166,27 @@
grass.fatal(_("No non-null values found"))
if not shellstyle:
- print ""
- print "Number of values: %d" % N
- print "Minimum: %.15g" % minv
- print "Maximum: %.15g" % maxv
- print "Range: %.15g" % (maxv - minv)
- print "-----"
- print "Mean: %.15g" % (sum/N)
- print "Arithmetic mean of absolute values: %.15g" % (sum3/N)
- print "Variance: %.15g" % ((sum2 - sum*sum/N)/N)
- print "Standard deviation: %.15g" % (math.sqrt((sum2 - sum*sum/N)/N))
- print "Coefficient of variation: %.15g" % ((math.sqrt((sum2 - sum*sum/N)/N))/(math.sqrt(sum*sum)/N))
- print "Sum: %.15g" % sum
- print "-----"
+ sys.stdout.write("Number of values: %d\n"% N)
+ sys.stdout.write("Minimum: %.15g\n"% minv)
+ sys.stdout.write("Maximum: %.15g\n"% maxv)
+ sys.stdout.write("Range: %.15g\n"% (maxv - minv))
+ sys.stdout.write("Mean: %.15g\n"% (sum/N))
+ sys.stdout.write("Arithmetic mean of absolute values: %.15g\n"% (sum3/N))
+ sys.stdout.write("Variance: %.15g\n"% ((sum2 - sum*sum/N)/N))
+ sys.stdout.write("Standard deviation: %.15g\n"% (math.sqrt((sum2 - sum*sum/N)/N)))
+ sys.stdout.write("Coefficient of variation: %.15g\n"% ((math.sqrt((sum2 - sum*sum/N)/N))/(math.sqrt(sum*sum)/N)))
+ sys.stdout.write("Sum: %.15g\n"% sum)
else:
- print "n=%d" % N
- print "min=%.15g" % minv
- print "max=%.15g" % maxv
- print "range=%.15g" % (maxv - minv)
- print "mean=%.15g" % (sum/N)
- print "mean_abs=%.15g" % (sum3/N)
- print "variance=%.15g" % ((sum2 - sum*sum/N)/N)
- print "stddev=%.15g" % (math.sqrt((sum2 - sum*sum/N)/N))
- print "coeff_var=%.15g" % ((math.sqrt((sum2 - sum*sum/N)/N))/(math.sqrt(sum*sum)/N))
- print "sum=%.15g" % sum
+ sys.stdout.write("n=%d\n"% N)
+ sys.stdout.write("min=%.15g\n"% minv)
+ sys.stdout.write("max=%.15g\n"% maxv)
+ sys.stdout.write("range=%.15g\n"% (maxv - minv))
+ sys.stdout.write("mean=%.15g\n"% (sum/N))
+ sys.stdout.write("mean_abs=%.15g\n"% (sum3/N))
+ sys.stdout.write("variance=%.15g\n"% ((sum2 - sum*sum/N)/N))
+ sys.stdout.write("stddev=%.15g\n"% (math.sqrt((sum2 - sum*sum/N)/N)))
+ sys.stdout.write("coeff_var=%.15g\n"% ((math.sqrt((sum2 - sum*sum/N)/N))/(math.sqrt(sum*sum)/N)))
+ sys.stdout.write("sum=%.15g\n"% sum)
if not extend:
return
@@ -227,29 +236,29 @@
q50 = (q50a + q50b) / 2
if not shellstyle:
- print "1st Quartile: %.15g" % q25
- print "Median (%s N): %.15g" % (eostr, q50)
- print "3rd Quartile: %.15g" % q75
+ sys.stdout.write("1st Quartile: %.15g\n" % q25)
+ sys.stdout.write("Median (%s N): %.15g\n" % (eostr, q50))
+ sys.stdout.write("3rd Quartile: %.15g\n" % q75)
for i in range(len(perc)):
if perc[i] == int(perc[i]): # integer
if int(perc[i]) % 10 == 1 and int(perc[i]) != 11:
- print "%dst Percentile: %.15g" % (int(perc[i]), pval[i])
+ sys.stdout.write("%dst Percentile: %.15g\n"% (int(perc[i]), pval[i]))
elif int(perc[i]) % 10 == 2 and int(perc[i]) != 12:
- print "%dnd Percentile: %.15g" % (int(perc[i]), pval[i])
+ sys.stdout.write("%dnd Percentile: %.15g\n"% (int(perc[i]), pval[i]))
elif int(perc[i]) % 10 == 3 and int(perc[i]) != 13:
- print "%drd Percentile: %.15g" % (int(perc[i]), pval[i])
+ sys.stdout.write("%drd Percentile: %.15g\n"% (int(perc[i]), pval[i]))
else:
- print "%dth Percentile: %.15g" % (int(perc[i]), pval[i])
+ sys.stdout.write("%dth Percentile: %.15g\n"% (int(perc[i]), pval[i]))
else:
- print "%.15g Percentile: %.15g" % (perc[i], pval[i])
+ sys.stdout.write("%.15g Percentile: %.15g\n"% (perc[i], pval[i]))
else:
- print "first_quartile=%.15g" % q25
- print "median=%.15g" % q50
- print "third_quartile=%.15g" % q75
+ sys.stdout.write("first_quartile=%.15g\n"% q25)
+ sys.stdout.write("median=%.15g\n"% q50)
+ sys.stdout.write("third_quartile=%.15g\n"% q75)
for i in range(len(perc)):
percstr = "%.15g" % perc[i]
percstr = percstr.replace('.','_')
- print "percentile_%s=%.15g" % (percstr, pval[i])
+ sys.stdout.write("percentile_%s=%.15g\n"% (percstr, pval[i]))
if __name__ == "__main__":
options, flags = grass.parser()
Modified: grass/branches/releasebranch_7_0/scripts/v.db.univar/v.db.univar.py
===================================================================
--- grass/branches/releasebranch_7_0/scripts/v.db.univar/v.db.univar.py 2015-01-01 14:07:44 UTC (rev 63898)
+++ grass/branches/releasebranch_7_0/scripts/v.db.univar/v.db.univar.py 2015-01-01 14:11:02 UTC (rev 63899)
@@ -54,6 +54,7 @@
import sys
import os
import grass.script as grass
+from grass.exceptions import CalledModuleError
def main():
global tmp
@@ -67,7 +68,9 @@
extend = flags['e']
shellstyle = flags['g']
-
+ if not grass.find_file(vector, element='vector')['file']:
+ grass.fatal(_("Vector map <%s> not found") % vector)
+
fi = grass.vector_db(vector, stderr = nuldev)[int(layer)]
table = fi['table']
database = fi['database']
@@ -81,12 +84,14 @@
passflags = 'g'
else:
passflags = passflags + 'g'
+
+ try:
+ grass.run_command('db.univar', table = table, column = column,
+ database = database, driver = driver,
+ perc = perc, where = where, flags = passflags)
+ except CalledModuleError:
+ sys.exit(1)
- grass.run_command('db.univar', table = table, column = column,
- database = database, driver = driver,
- perc = perc, where = where, flags = passflags)
-
-
if __name__ == "__main__":
options, flags = grass.parser()
nuldev = file(os.devnull, 'w')
More information about the grass-commit
mailing list