From 1f655899396475e550c991c0d15a8342c730eec6 Mon Sep 17 00:00:00 2001
From: Carl Philipp Klemm <philipp@uvos.xyz>
Date: Thu, 11 Jul 2024 16:42:44 +0200
Subject: [PATCH] scripts: createdataset: create a tar file instead of a
 directory of files

---
 scripts/createdataset.py | 17 +++++++++++++----
 scripts/spectrafile.py   | 15 +++++++++------
 2 files changed, 22 insertions(+), 10 deletions(-)

diff --git a/scripts/createdataset.py b/scripts/createdataset.py
index a7d126d..6315b97 100644
--- a/scripts/createdataset.py
+++ b/scripts/createdataset.py
@@ -1,6 +1,7 @@
 import argparse
 import os
 from tqdm import tqdm
+import tarfile
 
 from chargefile import ChargeFile
 from spectrafile import SpectraFile
@@ -39,9 +40,17 @@ if __name__ == "__main__":
 		step = int(tokens[0])
 		cellid = int(tokens[1])
 		substep = int(tokens[2])
-		celldir = os.path.join(args.out, str(cellid))
-		if not os.path.exists(celldir):
-			os.makedirs(celldir)
 		sf = SpectraFile(os.path.join(args.data, filename), cellid, step, substep, charge_files, len(cells))
-		sf.write(celldir)
+		sf.write(args.out)
+
+	try:
+		os.remove(f"{args.out}.tar")
+	except FileNotFoundError:
+		pass
+	tar = tarfile.open(f"{args.out}.tar", mode="x")
+	for filename in tqdm(os.listdir(args.out)):
+		path = os.path.join(args.out, filename)
+		tar.add(path, arcname=os.path.split(path)[-1])
+		os.remove(path)
+	os.rmdir(args.out)
 
diff --git a/scripts/spectrafile.py b/scripts/spectrafile.py
index 3475e1e..d1f4c1d 100644
--- a/scripts/spectrafile.py
+++ b/scripts/spectrafile.py
@@ -26,11 +26,14 @@ class SpectraFile:
 			raise ParseError(f"file name and file content of SpectraFile {filename} do not match")
 
 	def write(self, directory: str):
-		meta_dsc_string = "step, substep, cellid, temparature, ocv, charge_cycles, thermal_cycles, last_avg_cap, last_avg_step, last_cap, last_cap_step, soc"
-		metastring = f"{self.step}, {self.substep}, {self.cellid}, {self.temperature}, {self.ocv}, {self.meta.charge_cycles}, {self.meta.thermal_cycles}, "
-		metastring += f"{self.meta.last_avg_cap}, {self.meta.last_avg_cap_step}, {self.meta.last_cap}, {self.meta.last_cap_step}, {self.meta.soc}"
-
-		self.spectra.headerDescription = meta_dsc_string
-		self.spectra.header = metastring
+		metaList = [float(self.step), float(self.substep), float(self.cellid), float(self.temperature), float(self.ocv),
+			float(self.meta.charge_cycles), float(self.meta.thermal_cycles), float(self.meta.last_avg_cap), float(self.meta.last_avg_cap_step),
+			float(self.meta.last_cap), float(self.meta.last_cap_step), float(self.meta.soc)]
+		self.spectra.setLabels(metaList)
+		meta_dsc_strings = ["step", "substep", "cellid", "temparature", "ocv", "charge_cycles", "thermal_cycles",
+			"last_avg_cap", "last_avg_step", "last_cap", "last_cap_step", "soc"]
+		self.spectra.headerDescription = "File origin"
+		self.spectra.header = "CoinCellHell mesurement file"
+		self.spectra.labelNames = meta_dsc_strings
 		self.spectra.saveToDisk(os.path.join(directory, self.filename))
 
-- 
GitLab