import numpy as np
import pandas as pd
import csv
import os


#平均をcounter.pyで算出するようにしたので、全体辞書はデータ的には必要なくなった(辞書形式指定のために必要)
#全体辞書の準備
with open('all_e5.txt') as f:
    synfile = f.read().splitlines()
synfile.append("2_fal_a_e5")
init = [0 for _ in range(len(synfile))]
all_dict = {k: v for k, v in zip(synfile, init)}
all_dict["2_fal_a_e5"] = 0



#初期設定
c = 0
dict_list1 = []
dict_list2 = []


#test01〜07のループ
for test_num in range(1, 8):
    print("test0{0}".format(test_num))
    directory = "/home/okasyo/public_html/202401_e5score/test0" + str(test_num) + "/log"
    log_c = 0

    #読み取るlogごとのループ
    for filename in os.listdir(directory):
        filepath = os.path.join(directory, filename)

        if os.path.isfile(filepath):
            print(filepath)
            log_c += 1
        #if (filename == "bach6440_20231109220743-63.csv"):

            #この1回答用の辞書を生成
            #実験1
            one_dict1 = dict.fromkeys(all_dict, []) #これでは全て[]が同期されてしまうらしい
            for sf in synfile:
                one_dict1[sf] = []

            #実験2
            one_dict2 = dict.fromkeys(all_dict, []) #これでは全て[]が同期されてしまうらしい
            for sf in synfile:
                one_dict2[sf] = []



            #logファイルから回答を読み込み
            with open(filepath, "r") as f:
                #print(filepath)
                #実験1データ
                start1 = f.readline()
                end1 = f.readline()
                seq1 = int(f.readline())
                q1_num = int(f.readline())

                ans1 = []
                #for line in f:
                #    ans1.append(int((line.split(","))[-1]))
                for _ in range(q1_num):
                    line = f.readline()
                    ans1.append(int((line.split(","))[-1]))


                #空行確認
                interval = f.readline()
                if(interval != "\n"):
                    print("read error")
                    #exit(1)
                
                else:
                    #実験2データ
                    start2 = f.readline()
                    end2 = f.readline()
                    seq2 = int(f.readline())
                    q2_num = int(f.readline())

                    ans2 = []
                    #for line in f:
                    #    ans1.append(int((line.split(","))[-1]))
                    for _ in range(q1_num):
                        line = f.readline()
                        ans2.append(int((line.split(","))[-1]))

            f.close()


            #実験1
            #seqファイルから出題順を読み取り
            seqfile1 = "/home/okasyo/public_html/202401_e5score/test0" + str(test_num) + "/Sequence/" + str(seq1) + ".seq"
            with open(seqfile1,'r') as f:
                f.readline() #1行目の改行を読み込む
                targetfiles = f.read().splitlines()
            f.close()


            #辞書に追加
            for i in range(len(targetfiles)):
                target = targetfiles[i]
                one_dict1[target].append(ans1[i])

            
            #counter.pyのために形式を変換・辞書リストに追加
            for sf in synfile:
                one_dict1[sf] = ",".join(map(str, one_dict1[sf]))
            dict_list1.append(one_dict1)


            #実験2
            #seqファイルから出題順を読み取り
            seqfile2 = "/home/okasyo/public_html/202401_e5score/test0" + str(test_num) + "/Sequence/" + str(seq2) + ".seq"
            with open(seqfile2,'r') as f:
                f.readline() #1行目の改行を読み込む
                targetfiles = f.read().splitlines()
            f.close()


            #辞書に追加
            for i in range(len(targetfiles)):
                target = targetfiles[i]
                one_dict2[target].append(ans2[i])

            
            #counter.pyのために形式を変換・辞書リストに追加
            for sf in synfile:
                one_dict2[sf] = ",".join(map(str, one_dict2[sf]))
            dict_list2.append(one_dict2)


            """
            #スクリーニングの条件を満たすものだけ全体辞書に追加
            if(sum(one_dict1["2_mod_a_cs4"]) <= 6 and sum(one_dict1["2_fal_a_cs4"]) >= 12):
                for i in range(len(targetfiles)):
                    target = targetfiles[i]
                    if(target == "2_mod_a_cs4" or target == "2_fal_a_cs4"):
                        all_dict[target] += str(ans1[i])
                    else:
                        all_dict[target] += ans1[i]     
                c += 1
            """
    print(log_c)




"""
keys = all_dict.keys()
for key in keys:
    if(key == "2_mod_a_cs4" or key == "2_fal_a_cs4"):
        all_dict[key] /= 3
    all_dict[key] /= c
    all_dict[key] = round(all_dict[key], 2)
dict_list.append(all_dict)
"""

#print(c)
df1 = pd.json_normalize(dict_list1)
df1 = df1.replace('', 2) #空データを2に置換
df1.to_csv('results/falscore.csv')


df2 = pd.json_normalize(dict_list2)
df2 = df2.replace('', 0)
df2.to_csv('results/naturalness.csv')
