Advertisement
Guest User

Untitled

a guest
Jun 20th, 2018
50
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.76 KB | None | 0 0
  1. import os
  2. import datetime
  3.  
  4.  
  5. def main():
  6.     p88 = []
  7.     datumi = []
  8.     for filename in sorted(os.listdir("prognoza/mm/real")):
  9.         y, m, d = filename.split(".")[0].split("-")
  10.         d = datetime.datetime(year=int(y), month=int(m), day=int(d))
  11.         datumi.append(d)
  12.  
  13.         p88.append({})
  14.         with open(os.path.join("prognoza/mm/real/", filename), encoding="latin1") as fin:
  15.             lines = fin.readlines()
  16.             for line in lines[2:]:
  17.                 place, mm = line.strip().split("\t")
  18.                 p88[-1][place] = float(mm)
  19.  
  20.     p = {}
  21.     for i in range(len(p88)-1):
  22.         p[datumi[i]] = {}
  23.         for place in p88[i]:
  24.             p[datumi[i]][place] = p88[i][place]/3.0
  25.         for place in p88[i+1]:
  26.             p[datumi[i]][place] = p[datumi[i]].get(place, 0) + p88[i+1][place] * 2 / 3.0
  27.  
  28.     results = {}
  29.     for place in ["Rijeka", "Split", "Zagreb"]:
  30.         dir = os.path.join("prognoza/mm", place)
  31.  
  32.         for file in os.listdir(dir):
  33.             y, m, d = file.split("_")[1].split(".")[0].split("-")
  34.             prediction_date = datetime.datetime(year=int(y), month=int(m), day=int(d))
  35.  
  36.             src = file.split("_")[0]
  37.             if src not in results:
  38.                 results[src] = {}
  39.             with open(os.path.join(dir, file)) as fin:
  40.                 for line in fin.readlines()[1:]:
  41.                     line = line.strip()
  42.  
  43.                     predict_date, mm = line.split("\t")
  44.                     mm = float(mm)
  45.                     if src == "wwo":
  46.                         y = 2018
  47.                         if predict_date.split()[2] == "May,":
  48.                             m = 5
  49.                         elif predict_date.split()[2] == "Jun,":
  50.                             m = 6
  51.                         else:
  52.                             m = 7
  53.  
  54.                         d = int(predict_date.split()[1][:2])
  55.                     else:
  56.                         y = 2018
  57.                         m = 5 if predict_date.split()[1] == "May" else 6
  58.                         d = int(predict_date.split()[0])
  59.  
  60.                     predict_d = datetime.datetime(year=int(y), month=int(m), day=int(d))
  61.                     #prediction_offset = (predict_d - prediction_date).days
  62.                     if predict_d not in results[src]:
  63.                         results[src][predict_d] = []
  64.                     results[src][predict_d].append((mm, prediction_date, place))
  65.     # results
  66.     # src:
  67.     #   predicted_date: [(mm, prediction_date, place), ...]
  68.     offset_diff = {}
  69.     for src in results:
  70.         offset_diff[src] = {}
  71.         for predicted_date in results[src]:
  72.  
  73.             for mm, prediction_date, place in results[src][predicted_date]:
  74.                 offset = (predicted_date - prediction_date).days
  75.                 reals = []
  76.                 if predicted_date in p:
  77.                     for place2 in p[predicted_date]:
  78.                         if place in place2:
  79.                             # npr. Split-Marjan
  80.                             reals.append(p[predicted_date][place2])
  81.                     real = sum(reals) / len(reals) if reals else 0
  82.                     if offset not in offset_diff[src]:
  83.                         offset_diff[src][offset] = []
  84.                     offset_diff[src][offset].append(abs(mm - real))
  85.     for place in offset_diff:
  86.         print(place)
  87.         print("\tOdmak\t#mjerenja\tProsječna apsolutna greška")
  88.         for offset in offset_diff[place]:
  89.             print("\t{}\t\t\t{}\t\t\t{:.4f}".format(offset,
  90.                                                     len(offset_diff[place][offset]),
  91.                                                     sum(offset_diff[place][offset]) / len(offset_diff[place][offset])))
  92.         print()
  93.  
  94.  
  95. if __name__ == '__main__':
  96.     main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement