#*************************************************************
# Progamm:			korrelations_koeffizient
# Sinn des Programms: 		Berechnung der Korrelationekoeffizienten
#				Zweier Zufallsreihen
#				Zweier Sinusreihen
# Sinn der Einheit  :		Hauptprogramm	
# Name dieser Datei:		korrelations_koeffizient.py
# Versionsnummer:		1
# Wird aufgerufen von:		-
# Ruft auf:			zeit.py, steuer.py, rechner.py, ausgabe.py
# Nummer im Programmpaket:	1
# von:				5			
# Autor: 			Armin Ulrich
# Erster Lauf: 			15.09.2018
# Letzte Änderung: 		01.01.2020
#*************************************************************


#*************************************************************
# Importieren der Klassen zur Zeitdokumentation
#*************************************************************

import time
import datetime



from steuer import Steuer
from datei_einlese import Datei_einlese
from rechner import Rechner
from ausgabe import Ausgabe


steuer = Steuer()
datei_einlese=Datei_einlese()
rechner = Rechner()
ausgabe = Ausgabe()

#*************************************************************
# Berechnung der Startzeit des Programmes mit:
# a) datetime
# b) time
# und Konvertieren der Startzeit zu einem String "datum_zeit"
#*************************************************************
dt_start = datetime.datetime.now()
lt_start = time.localtime()
jahr, monat, tag, stunde, minute, sekunde  = lt_start[0:6]
datum_zeit = "Datum: " +str(tag)+"."+str(monat)+"."+str(jahr)+"\n"+"Zeit: "+str(stunde)+":"+str(minute)+":"+str(sekunde)

#*************************************************************
# öffnen der Log-Datei
#*************************************************************
fobj_log = open("korr_koeff.log","w")

#*************************************************************
# Schreiben von Datum und Zeit des Programmstarts 
# in die Logdatei 
#*************************************************************
fobj_log.write("Anfang: "+ "\n" + datum_zeit)
fobj_log.write("\n")

#*************************************************************
# Prüfung, ob Steuerdatei erfolgreich geöffnet wurde
#*************************************************************
if(steuer.steuer_input()):
  fobj_log.write( "Datei existiert\n")
else:
  fobj_log.write( "Datei existiert nicht\n")

print("Korrelationskoeffizient:")
if(datei_einlese.datei_input(steuer.eingabedatei_1)):
  fobj_log.write( "Datei existiert\n")
else:
  fobj_log.write( "Datei existiert nicht\n")
x_1 = list(range(datei_einlese.m))
y_1 = list(range(datei_einlese.m))
x_1 = datei_einlese.x
y_1 = datei_einlese.y
print(y_1)
if(datei_einlese.datei_input(steuer.eingabedatei_2)):
  fobj_log.write( "Datei existiert\n")
else:
  fobj_log.write( "Datei existiert nicht\n")
x_2 = list(range(datei_einlese.m))
y_2 = list(range(datei_einlese.m))
x_2 = datei_einlese.x
y_2 = datei_einlese.y
for i in range(datei_einlese.m):
        y_2[i] *= 25.4 # inch in mm
print(y_2)
rechner.zufallszahlen(datei_einlese.m)
rechner.klimareihen(datei_einlese.m,y_1,y_2)

#*************************************************************
# Einlesen der Variablen x
#*************************************************************
ausgabe.schirm_ausgabe(datei_einlese.m,rechner.zufall_1,rechner.zufall_2,y_1,y_2)
ausgabe.gui_ausgabe(rechner.zufall_k_k,rechner.klima_k_k)
ausgabe.datei_ausgabe(steuer.ausgabe_datei,steuer.k_k_datei,datei_einlese.m,rechner.zufall_1,rechner.zufall_2,y_1,y_2,rechner.zufall_k_k,rechner.klima_k_k)
ausgabe.graphik_ausgabe(datei_einlese.m,rechner.zufall_1,rechner.zufall_2,y_1,y_2,steuer.graphikdatei_1,steuer.graphikdatei_2)


#*************************************************************
# Berechnung der Endzeit des Programmes mit:
# a) datetime
# b) time
# und Konvertieren der Endzeit zu einem String "datum_zeit"
#*************************************************************
lt_end = time.localtime()
jahr, monat, tag, stunde, minute, sekunde  = lt_end[0:6]
datum_zeit = "Datum: "+str(tag)+"."+str(monat)+"."+str(jahr)+"\n"+"Zeit: "+str(stunde)+":"+str(minute)+":"+str(sekunde)
dt_end = datetime.datetime.now()

#*************************************************************
# Berechnung der Rechendauer mit dem Zeitdifferenzoperator 
# des Moduls datetime
#*************************************************************
dauer = dt_end - dt_start

#*************************************************************
# Schreiben von Datum und Zeit des Programmendes und der 
# Rechendauer in die Logdatei 
#*************************************************************
fobj_log.write("Ende: "+ "\n" +datum_zeit + "\n")
fobj_log.write("Rechendauer: "+ "\n" + str(dauer))

#*************************************************************
# Schließen der Logdatei
#*************************************************************
fobj_log.close()

#*************************************************************
#Programmende
#*************************************************************



