X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/f9dae702752c7b24a5800ad064a4961557d7a5a3..8a30d839e791237688f68d4047fef5a30293dfc4:/tools/sg_xml_unit_converter.py diff --git a/tools/sg_xml_unit_converter.py b/tools/sg_xml_unit_converter.py new file mode 100644 index 0000000000..830e91fd62 --- /dev/null +++ b/tools/sg_xml_unit_converter.py @@ -0,0 +1,84 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + +# grep -ohrI 'bw=".*"' . | sort | uniq + +import sys, fnmatch, os +from decimal import Decimal +import re + +def to_str(dec): + return re.sub(r"(\.\d*?)0*$", r"\1", dec.to_eng_string()).rstrip(".") + +def format(xml, formats, attrib): + res = [] + m = re.search(r'%s="(.*?)"'%attrib, xml) + while m: + b, e = m.span(1) + res.append(xml[:b]) + val = xml[b:e] + xml = xml[e:] + try: + power = Decimal(val) + tmp = to_str(power) + for p, f in formats: + d = power / p + if d >= 1.0: + tmp = "%s%s"%(to_str(d), f) + break + res.append(tmp) + except: + print "Error with:", val + res.append(val) + m = re.search(r'%s="(.*?)"'%attrib, xml) + + res.append(xml) + return "".join(res) + +def formats(list): + return sorted(((Decimal(i), j) for i,j in list), key=lambda x: x[0], reverse=True) + +for root, dirnames, filenames in os.walk(sys.argv[1]): + for filename in fnmatch.filter(filenames, '*.xml'): + print root, dirnames, filename + path = os.path.join(root, filename) + xml = open(path).read() + + power_formats = formats([( "1E0", "f"), + ( "1E3", "kf"), + ( "1E6", "mf"), + ( "1E9", "gf"), + ("1E12", "tf"), + ("1E15", "pt"), + ("1E18", "ef"), + ("1E21", "zf")]) + xml = format(xml, power_formats, "power") + + bandwidth_formats = formats([( "1E0", "Bps"), + ( "1E3", "KBps"), + ( "1E6", "MBps"), + ( "1E9", "GBps"), + ("1E12", "TBps")]) + xml = format(xml, bandwidth_formats, "bandwidth") + xml = format(xml, bandwidth_formats, "bw") + xml = format(xml, bandwidth_formats, "bb_bw") + xml = format(xml, bandwidth_formats, "bw_in") + xml = format(xml, bandwidth_formats, "bw_out") + + time_formats = formats([( "1E-12", "ps"), + ( "1E-9" , "ns"), + ( "1E-6" , "us"), + ( "1E-3" , "ms"), + ( "1E0" , "s"), + ( "60E0" , "m"), + ( "3600E0" , "h"), + ( "86400E0" , "d"), + ("604800E0" , "w")]) + xml = format(xml, time_formats, "latency") + xml = format(xml, time_formats, "lat") + xml = format(xml, time_formats, "bb_lat") + + #print xml + file = open(path, "w") + file.write(xml) + file.close()