Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import os
- import datetime
- def main():
- p88 = []
- datumi = []
- for filename in sorted(os.listdir("prognoza/mm/real")):
- y, m, d = filename.split(".")[0].split("-")
- d = datetime.datetime(year=int(y), month=int(m), day=int(d))
- datumi.append(d)
- p88.append({})
- with open(os.path.join("prognoza/mm/real/", filename), encoding="latin1") as fin:
- lines = fin.readlines()
- for line in lines[2:]:
- place, mm = line.strip().split("\t")
- p88[-1][place] = float(mm)
- p = {}
- for i in range(len(p88)-1):
- p[datumi[i]] = {}
- for place in p88[i]:
- p[datumi[i]][place] = p88[i][place]/3.0
- for place in p88[i+1]:
- p[datumi[i]][place] = p[datumi[i]].get(place, 0) + p88[i+1][place] * 2 / 3.0
- results = {}
- for place in ["Rijeka", "Split", "Zagreb"]:
- dir = os.path.join("prognoza/mm", place)
- for file in os.listdir(dir):
- y, m, d = file.split("_")[1].split(".")[0].split("-")
- prediction_date = datetime.datetime(year=int(y), month=int(m), day=int(d))
- src = file.split("_")[0]
- if src not in results:
- results[src] = {}
- with open(os.path.join(dir, file)) as fin:
- for line in fin.readlines()[1:]:
- line = line.strip()
- predict_date, mm = line.split("\t")
- mm = float(mm)
- if src == "wwo":
- y = 2018
- if predict_date.split()[2] == "May,":
- m = 5
- elif predict_date.split()[2] == "Jun,":
- m = 6
- else:
- m = 7
- d = int(predict_date.split()[1][:2])
- else:
- y = 2018
- m = 5 if predict_date.split()[1] == "May" else 6
- d = int(predict_date.split()[0])
- predict_d = datetime.datetime(year=int(y), month=int(m), day=int(d))
- #prediction_offset = (predict_d - prediction_date).days
- if predict_d not in results[src]:
- results[src][predict_d] = []
- results[src][predict_d].append((mm, prediction_date, place))
- # results
- # src:
- # predicted_date: [(mm, prediction_date, place), ...]
- offset_diff = {}
- for src in results:
- offset_diff[src] = {}
- for predicted_date in results[src]:
- for mm, prediction_date, place in results[src][predicted_date]:
- offset = (predicted_date - prediction_date).days
- reals = []
- if predicted_date in p:
- for place2 in p[predicted_date]:
- if place in place2:
- # npr. Split-Marjan
- reals.append(p[predicted_date][place2])
- real = sum(reals) / len(reals) if reals else 0
- if offset not in offset_diff[src]:
- offset_diff[src][offset] = []
- offset_diff[src][offset].append(abs(mm - real))
- for place in offset_diff:
- print(place)
- print("\tOdmak\t#mjerenja\tProsječna apsolutna greška")
- for offset in offset_diff[place]:
- print("\t{}\t\t\t{}\t\t\t{:.4f}".format(offset,
- len(offset_diff[place][offset]),
- sum(offset_diff[place][offset]) / len(offset_diff[place][offset])))
- print()
- if __name__ == '__main__':
- main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement