def generate_ini_hashes(f, plants): h = IniParser() h.read('hashes.ini') for ini in h.sections(): f.write('<tr>\n') f.write('<th>%s</th>\n' % ini) for i in plants: tooltip = ' title = \'%s%s\'' % (ini, create_tooltip(i)) if ini in i.ini_hashes: hash = 'h%s' % i.ini_hashes[ini] style = ' class="pink"' if h.has_option(ini, hash): val = h.get(ini, hash) app = val.split(':')[0] if (h.get(ini, hash) == '' or (app in i.versions and i.versions[app][0] in h.get(ini, hash))) \ and (not h.has_option(ini, '%s_motherboard' % hash) or i.motherboard in h.get(ini, '%s_motherboard' % hash)): style = ' class="green"' if h.has_option(ini, '%s_message' % hash): hash = h.get(ini, '%s_message' % hash) else: hash = '' else: style = ' class="yellow"' #endif #endif else: hash = '' style = ' class="grey"' #endif f.write('<td%s%s>%s</td>\n' % (tooltip, style, hash)) #endfor f.write('</tr>\n')
def get_little_amounts(self): log.info('little amounts function called') silo = {} self.little_amounts_fails = {} doba = None vaha = None navazeno = None analog = None adaptivita = None pozadavek = None zasobnik = 99 # can delete this line after three month (bacuse of error in info txt from Piestany) fn = 'control.log' for l in give_lines(fn, 3): if 'poddavkovani ' in l.lower(): zasobnik = int(l.split()[-1]) vaha = None navazeno = None pozadavek = None elif 'dobaotevreni ' in l.lower(): pom = float(l.split()[-1]) if pom > 3 or pom < 0: continue # filtrace demetskych hodnot v milisekundach a zapornych hodnot doba = pom elif 'mezistav1 ' in l.lower(): vaha = float(l.split()[-1]) elif 'NejblizsiCil2' in l and vaha: pozadavek = float(l.split()[-1]) - vaha elif 'PrumernaHodnotaAI[CisloAnalogu] - VychoziVaha' in l: analog = float(l.split()[-1]) elif 'frakcenamereno2 ' in l.lower() and vaha: navazeno = float(l.split()[-1]) - vaha #endif if doba and navazeno: log.info('%i, %0.2f, %i' % (navazeno, doba, zasobnik)) if navazeno < 30 or navazeno > 500: log.info('little amount fail: %i, %0.2f, %i' % (navazeno, doba, zasobnik)) if not zasobnik in self.little_amounts_fails: self.little_amounts_fails[zasobnik] = [] #endif self.little_amounts_fails[zasobnik].append('%i, %0.2f' % (navazeno, doba)) doba = None continue #endif if analog: adaptivita = navazeno - analog + vaha if not zasobnik in silo: silo[zasobnik] = [] silo[zasobnik].append((doba, navazeno, pozadavek, adaptivita)) doba = None vaha = None navazeno = None analog = None adaptivita = None #endif #endfor #log.info('%s' % silo) self.silo = {} self.little_amounts_error = False f = './temp/ini/adapt.ini' if not os.path.isfile(f): return adapt = IniParser() adapt.read(f) f = './temp/ini/parameters.ini' if not os.path.isfile(f): return parameters = IniParser() parameters.read(f) for k in silo: self.little_amounts_error = adapt.has_option('Aggregate', 'VelocityOfFilling1-%s' % k) param_velocity = 0 param_offset = 0 if parameters.has_option('Aggregate_Bin1_Silo%s' % k, 'Velocity_Base'): param_velocity = parameters.getint('Aggregate_Bin1_Silo%s' % k, 'Velocity_Base') param_offset = parameters.getfloat('Aggregate_Bin1_Silo%s' % k, 'Additional_Time') else: self.little_amounts_error = True #endif x = 0 sez = {} while x < 1.5: if not x in sez: sez[x] = [] for doba, navazeno, pozadavek, adaptivita in silo[k]: if doba-x == 0: continue #I dont know why sez[x].append(navazeno/(doba - x)) #endfor x = x + 0.01 #endwhile minimum = None for x in sorted(sez): sqr_sum = 0 avg = 0 dev = 0 avg = sum(sez[x]) * 1.0 / len(sez[x]) for velocity in sez[x]: sqr_sum += ((velocity - avg) ** 2) / len(sez[x]) #endfor dev = sqr_sum ** 0.5 if not minimum or dev < minimum: #print dev minimum = dev self.silo[k] = (x, avg, len(sez[x]), dev, param_velocity, param_offset)