convert.py revision 1519
17119Sgblack@eecs.umich.edu# metric prefixes 27119Sgblack@eecs.umich.eduexa = 1.0e18 37119Sgblack@eecs.umich.edupeta = 1.0e15 47119Sgblack@eecs.umich.edutera = 1.0e12 57119Sgblack@eecs.umich.edugiga = 1.0e9 67119Sgblack@eecs.umich.edumega = 1.0e6 77119Sgblack@eecs.umich.edukilo = 1.0e3 87119Sgblack@eecs.umich.edu 97119Sgblack@eecs.umich.edumilli = 1.0e-3 107119Sgblack@eecs.umich.edumicro = 1.0e-6 117119Sgblack@eecs.umich.edunano = 1.0e-9 127119Sgblack@eecs.umich.edupico = 1.0e-12 137119Sgblack@eecs.umich.edufemto = 1.0e-15 147119Sgblack@eecs.umich.eduatto = 1.0e-18 157119Sgblack@eecs.umich.edu 167119Sgblack@eecs.umich.edu# power of 2 prefixes 177119Sgblack@eecs.umich.edukibi = 1024 187119Sgblack@eecs.umich.edumebi = kibi * 1024 197119Sgblack@eecs.umich.edugibi = mebi * 1024 207119Sgblack@eecs.umich.edutebi = gibi * 1024 217119Sgblack@eecs.umich.edupebi = tebi * 1024 227119Sgblack@eecs.umich.eduexbi = pebi * 1024 237119Sgblack@eecs.umich.edu 247119Sgblack@eecs.umich.edu# memory size configuration stuff 257119Sgblack@eecs.umich.edudef to_integer(value): 267119Sgblack@eecs.umich.edu if not isinstance(value, str): 277119Sgblack@eecs.umich.edu result = int(value) 287119Sgblack@eecs.umich.edu elif value.endswith('Ei'): 297119Sgblack@eecs.umich.edu result = int(value[:-2]) * exbi 307119Sgblack@eecs.umich.edu elif value.endswith('Pi'): 317119Sgblack@eecs.umich.edu result = int(value[:-2]) * pebi 327119Sgblack@eecs.umich.edu elif value.endswith('Ti'): 337119Sgblack@eecs.umich.edu result = int(value[:-2]) * tebi 347119Sgblack@eecs.umich.edu elif value.endswith('Gi'): 357119Sgblack@eecs.umich.edu result = int(value[:-2]) * gibi 367119Sgblack@eecs.umich.edu elif value.endswith('Mi'): 377119Sgblack@eecs.umich.edu result = int(value[:-2]) * mebi 387119Sgblack@eecs.umich.edu elif value.endswith('ki'): 397119Sgblack@eecs.umich.edu result = int(value[:-2]) * kibi 407167Sgblack@eecs.umich.edu elif value.endswith('E'): 417167Sgblack@eecs.umich.edu result = int(value[:-1]) * exa 427167Sgblack@eecs.umich.edu elif value.endswith('P'): 437133Sgblack@eecs.umich.edu result = int(value[:-1]) * peta 447133Sgblack@eecs.umich.edu elif value.endswith('T'): 457133Sgblack@eecs.umich.edu result = int(value[:-1]) * tera 467119Sgblack@eecs.umich.edu elif value.endswith('G'): 477119Sgblack@eecs.umich.edu result = int(value[:-1]) * giga 487134Sgblack@eecs.umich.edu elif value.endswith('M'): 497202Sgblack@eecs.umich.edu result = int(value[:-1]) * mega 507202Sgblack@eecs.umich.edu elif value.endswith('k'): 517202Sgblack@eecs.umich.edu result = int(value[:-1]) * kilo 527134Sgblack@eecs.umich.edu elif value.endswith('m'): 537134Sgblack@eecs.umich.edu result = int(value[:-1]) * milli 547150Sgblack@eecs.umich.edu elif value.endswith('u'): 557150Sgblack@eecs.umich.edu result = int(value[:-1]) * micro 567150Sgblack@eecs.umich.edu elif value.endswith('n'): 577159Sgblack@eecs.umich.edu result = int(value[:-1]) * nano 587159Sgblack@eecs.umich.edu elif value.endswith('p'): 597159Sgblack@eecs.umich.edu result = int(value[:-1]) * pico 607375Sgblack@eecs.umich.edu elif value.endswith('f'): 617375Sgblack@eecs.umich.edu result = int(value[:-1]) * femto 627375Sgblack@eecs.umich.edu else: 637639Sgblack@eecs.umich.edu result = int(value) 647639Sgblack@eecs.umich.edu 657639Sgblack@eecs.umich.edu return result 66 67def to_bool(val): 68 t = type(val) 69 if t == bool: 70 return val 71 72 if t == None: 73 return False 74 75 if t == int or t == long: 76 return bool(val) 77 78 if t == str: 79 val = val.lower() 80 if val == "true" or val == "t" or val == "yes" or val == "y": 81 return True 82 elif val == "false" or val == "f" or val == "no" or val == "n": 83 return False 84 85 return to_integer(val) != 0 86 87def to_frequency(value): 88 if not isinstance(value, str): 89 result = float(value) 90 elif value.endswith('THz'): 91 result = float(value[:-3]) * tera 92 elif value.endswith('GHz'): 93 result = float(value[:-3]) * giga 94 elif value.endswith('MHz'): 95 result = float(value[:-3]) * mega 96 elif value.endswith('kHz'): 97 result = float(value[:-3]) * kilo 98 elif value.endswith('Hz'): 99 result = float(value[:-2]) 100 else: 101 result = float(value) 102 103 return result 104 105def to_latency(value): 106 if not isinstance(value, str): 107 result = float(value) 108 elif value.endswith('c'): 109 result = float(value[:-1]) 110 elif value.endswith('ps'): 111 result = float(value[:-2]) * pico 112 elif value.endswith('ns'): 113 result = float(value[:-2]) * nano 114 elif value.endswith('us'): 115 result = float(value[:-2]) * micro 116 elif value.endswith('ms'): 117 result = float(value[:-2]) * milli 118 elif value.endswith('s'): 119 result = float(value[:-1]) 120 else: 121 result = float(value) 122 123 return result; 124 125def to_network_bandwidth(value): 126 if not isinstance(value, str): 127 result = float(value) 128 elif value.endswith('Tbps'): 129 result = float(value[:-3]) * tera 130 elif value.endswith('Gbps'): 131 result = float(value[:-3]) * giga 132 elif value.endswith('Mbps'): 133 result = float(value[:-3]) * mega 134 elif value.endswith('kbps'): 135 result = float(value[:-3]) * kilo 136 elif value.endswith('bps'): 137 result = float(value[:-2]) 138 else: 139 result = float(value) 140 141 return result 142 143def to_memory_bandwidth(value): 144 if not isinstance(value, str): 145 result = int(value) 146 elif value.endswith('PB/s'): 147 result = int(value[:-4]) * pebi 148 elif value.endswith('TB/s'): 149 result = int(value[:-4]) * tebi 150 elif value.endswith('GB/s'): 151 result = int(value[:-4]) * gibi 152 elif value.endswith('MB/s'): 153 result = int(value[:-4]) * mebi 154 elif value.endswith('kB/s'): 155 result = int(value[:-4]) * kibi 156 elif value.endswith('B/s'): 157 result = int(value[:-3]) 158 else: 159 result = int(value) 160 161 return result 162 163def to_memory_size(value): 164 if not isinstance(value, str): 165 result = int(value) 166 elif value.endswith('PB'): 167 result = int(value[:-2]) * pebi 168 elif value.endswith('TB'): 169 result = int(value[:-2]) * tebi 170 elif value.endswith('GB'): 171 result = int(value[:-2]) * gibi 172 elif value.endswith('MB'): 173 result = int(value[:-2]) * mebi 174 elif value.endswith('kB'): 175 result = int(value[:-2]) * kibi 176 elif value.endswith('B'): 177 result = int(value[:-1]) 178 else: 179 result = int(value) 180 181 return result 182