diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..80a85ad --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +*.csv +*.png diff --git a/analysis.py b/analysis.py index b1fbfdb..7fb3ead 100644 --- a/analysis.py +++ b/analysis.py @@ -13,7 +13,7 @@ 4: "Matte Photo", 5: "Photo Premium Matte", } -data_dir = r"\\gabor\Project\内科\舌診\TIAS\開発\カラーチャート\TCC2025-01\退色調査" +data_dir = r"D:\usr\prog\CM700Reader" def make_all_data_csv() -> None: @@ -23,10 +23,14 @@ files = [f for f in os.listdir(data_dir) if f.endswith(".csv")] all_data = pd.DataFrame() for i, file in enumerate(files): + if not file.startswith("dobot"): + continue file_path = os.path.join(data_dir, file) - paper = int(file[5:6]) - datestr = "2025/" + file[7:9] + "/" + file[9:11] + parts = os.path.splitext(os.path.basename(file))[0].split("_") + paper = 2 + datestr = parts[1] + "-" + parts[2] iter = 0 if file[11:12] == "a" else 1 + iter = 0 # print(f"Reading {file_path} (Paper: {paper}, Date: {datestr}, Iteration: {iter})") df = pd.read_csv(file_path, encoding="utf-8") df["tcc"] = df["no"].astype("int") @@ -36,6 +40,7 @@ # df.drop(columns=["no", "X", "Y", "Z"], inplace=True, errors="ignore") # df.drop(columns=[f"{c:.1f}" for c in range(400, 710, 10)], inplace=True, errors="ignore") all_data = pd.concat([all_data, df], ignore_index=True) + all_data.sort_values(by=["date", "paper", "iter", "tcc"], inplace=True) # Save the combined DataFrame to a CSV file all_data[["date", "paper", "iter", "tcc", "L*", "a*", "b*"]].to_csv( csv_file, index=False, encoding="utf-8" @@ -50,20 +55,35 @@ print("Calculating repeat stability...") df = pd.read_csv(csv_file, encoding="utf-8", parse_dates=["date"]) + no_repeat = False + if df["iter"].max() < 1: + print("No repeat measurements found.") + no_repeat = True + df0 = df[df["iter"] == 0].drop(columns=["iter"]).copy() df0.columns = ["date", "paper", "tcc", "L0", "a0", "b0"] - df1 = df[df["iter"] == 1].drop(columns=["iter"]).copy() - df1.columns = ["date", "paper", "tcc", "L1", "a1", "b1"] - dfm = pd.merge(df0, df1, on=["date", "paper", "tcc"]) - dfm["dL"] = dfm["L1"] - dfm["L0"] - dfm["da"] = dfm["a1"] - dfm["a0"] - dfm["db"] = dfm["b1"] - dfm["b0"] - dfm["dE"] = np.sqrt( - dfm["dL"] ** 2 + dfm["da"] ** 2 + dfm["db"] ** 2 - ) # Euclidean distance in Lab color space - dfm["meanL"] = (dfm["L1"] + dfm["L0"]) / 2 - dfm["meana"] = (dfm["a1"] + dfm["a0"]) / 2 - dfm["meanb"] = (dfm["b1"] + dfm["b0"]) / 2 + if not no_repeat: + df1 = df[df["iter"] == 1].drop(columns=["iter"]).copy() + df1.columns = ["date", "paper", "tcc", "L1", "a1", "b1"] + dfm = pd.merge(df0, df1, on=["date", "paper", "tcc"]) + dfm["dL"] = dfm["L1"] - dfm["L0"] + dfm["da"] = dfm["a1"] - dfm["a0"] + dfm["db"] = dfm["b1"] - dfm["b0"] + dfm["dE"] = np.sqrt( + dfm["dL"] ** 2 + dfm["da"] ** 2 + dfm["db"] ** 2 + ) # Euclidean distance in Lab color space + dfm["meanL"] = (dfm["L1"] + dfm["L0"]) / 2 + dfm["meana"] = (dfm["a1"] + dfm["a0"]) / 2 + dfm["meanb"] = (dfm["b1"] + dfm["b0"]) / 2 + else: + dfm = df0.copy() + dfm["dL"] = 0.0 + dfm["da"] = 0.0 + dfm["db"] = 0.0 + dfm["dE"] = 0.0 + dfm["meanL"] = dfm["L0"] + dfm["meana"] = dfm["a0"] + dfm["meanb"] = dfm["b0"] dfm.to_csv(stability_file, index=False, encoding="utf-8") @@ -107,7 +127,7 @@ .iloc[0] .to_list() ) - tcc_data.loc[:, "days"] = (tcc_data["date"] - begin_date).dt.days + tcc_data.loc[:, "days"] = (tcc_data["date"] - begin_date).dt.total_seconds() // 60 tcc_data.loc[:, "changeL"] = tcc_data["meanL"] - begin_lab[0] tcc_data.loc[:, "changea"] = tcc_data["meana"] - begin_lab[1] tcc_data.loc[:, "changeb"] = tcc_data["meanb"] - begin_lab[2] @@ -142,7 +162,7 @@ for i in range(1, 25): ax = fig.add_subplot(4, 6, i) ax.set_title(f"TCC {i}") - ax.set_xlabel("Days") + ax.set_xlabel("Minutes") ax.set_ylabel("Change in deltaE") for paper in paper_list: paper_data = df[df["paper"] == paper] @@ -154,7 +174,7 @@ markersize=4, label=f"Paper {paper}", ) - ax.set_ylim(0, 7) # Set y-axis limit for better visibility + ax.set_ylim(0, 1) # Set y-axis limit for better visibility ax.legend() fig.savefig("out_degradation_eachTCC.png", dpi=300, bbox_inches="tight") @@ -173,7 +193,7 @@ label=f"Paper {paper} {paper_names[paper]}", ) plt.legend(loc="upper left", borderaxespad=0) - plt.xlabel("Days") + plt.xlabel("Minutes since first measurement") plt.ylabel("Change in deltaE") fig2.savefig("out_degradation_meanTCC.png", dpi=300, bbox_inches="tight")