import csv #Notre fichier csv a été obtenu via le code du projet transdi 2019-2020. #Il est composé de lignes de valeurs espacées d'une ligne vide #Ses valeurs correspondent aux 8 valeurs des capteurs à chaque unité de temps #On crée une liste contenant 8 listes avec les valeurs pour chaque capteurs valeurs = [[],[],[],[],[],[],[],[]] #Permet d'ouvrir le fichier csv de lecture (r correspond au mode de lecture, #ici lecture seule) with open("CSVFILE.CSV",'r') as infile: lecture = csv.reader(infile) #On définit un objet qui lit notre fichier #Pour les données que nous utilisons ici, nous réduissons le nombre de points trop nombreux #pour être lu par Ossia Score. On en prend 1 sur 1000. compteur=0; for row in lecture: #On boucle sur chaque ligne du fichier if row: #Agit seulement sur la ligne n'est pas vide if compteur%50==0: for i in range(8): valeurs[i].append(row[i]) compteur=compteur+1 #Il faut traduire les valeurs en les remettant sur une échelle de 0 à 1 pour #qu'elles soient compatibles avec Ossia Score : for i in range(len(valeurs)): for j in range(len(valeurs[i])): valeurs[i][j] = float(valeurs[i][j]) valeurs[i][j] = valeurs[i][j] + 8398930 #on remet tout en positif valeurs[i][j] = valeurs[i][j] / 16777216 #On met sur une échelle de 0 à 1 valeurs[i][j] = str(valeurs[i][j]) #On récupère le script du fichier JSON with open("scriptsignaux.json",'r') as infile: script = infile.readlines() #Maintenant qu'on a nos données dans une liste, on écrit les fichiers JSON : for i in range(8): with open(f"capteur{i}.layer",'w') as outfile: #On écrit un nouveau fichier (w = écriture seule) pour chaque capteur for j in range(48): #Les 48 premières lignes du script sont les mêmes pour tous les fichiers outfile.write(script[j]) #lire les lignes du fichier JSON et les copier dans le fichier #Insertion des valeurs : on commence par calculer l'échantillonnage (nb #de points) ech = 1 / (len(valeurs[i]) - 1) #Dernière valeur: outfile.write('{\n"uuid": "1e7cb83f-4e47-4b14-814d-2242a9c75991",\n"ObjectName": "CurveSegmentModel",') outfile.write(f'"id": {len(valeurs[i])-2},') outfile.write(f'"Previous": {len(valeurs[i])-3},') outfile.write('"Following": null,') outfile.write(f'"Start": [ {ech*(len(valeurs[i])-2)}, {valeurs[i][len(valeurs[i])-2]} ],') outfile.write(f'"End": [ 1.0, {valeurs[i][len(valeurs[i])-1]} ],') outfile.write('"Power": 1.0\n},') for j in range(len(valeurs[i]) - 3, 0, -1): outfile.write('{\n"uuid": "1e7cb83f-4e47-4b14-814d-2242a9c75991",\n"ObjectName": "CurveSegmentModel",') outfile.write(f'"id": {j},') outfile.write(f'"Previous": {j-1},') outfile.write(f'"Following": {j+1},') outfile.write(f'"Start": [ {ech*(j)}, {valeurs[i][j-1]} ],') outfile.write(f'"End": [ {ech*(j+1)}, {valeurs[i][j]} ],') outfile.write('"Power": 1.0\n},') #Première valeur: outfile.write('{\n"uuid": "1e7cb83f-4e47-4b14-814d-2242a9c75991",\n"ObjectName": "CurveSegmentModel",') outfile.write('"id": 0,') outfile.write('"Previous": null,') outfile.write('"Following": 1,') outfile.write('"Start": [ 0.0, 0.0 ],') outfile.write(f'"End": [ {ech*1}, {valeurs[i][0]} ],') outfile.write('"Power": 1.0\n}') for j in range(34): #les lignes 69 à 102 sont les même pour tous les fichiers outfile.write(script[68 + j])