Untitled

 avatar
unknown
plain_text
a year ago
3.6 kB
2
Indexable
import h5py
import numpy as np
import csv
import os
import pandas as pd
import math
from scipy.spatial import distance

result = []

# def distance_calculator()
def find(pattern, path):
    for root, dirs, files in os.walk(path):
        for name in files:
            if name.find('.hdf') != -1:
                result.append(os.path.join(root, name))

find('*.hdf', 'C:/Users/David/OneDrive/Desktop/ommoChallenge/softwareengineerinternshipprojectommotechnologiesin/')




device_list = []
average_x = []
average_y = []
average_z = []
sensor = []

#Euclidean


for file in result:
    hf_in = h5py.File(f'{file}', 'r')
    for item in hf_in:
        if "device" in item.lower():
            device = hf_in[f'{item}']
            attributes = device.keys()

            # print(attributes)
            if any("Position" in i for i in attributes):
                data_1 = hf_in[f'{item}/Position']
                number_sensors = data_1.shape[1]
                device_list.append(device)
                # print(device_list)

                # print(dictionary)
                for j in range(number_sensors):
                    sensor.append(j + 1)
                    x_coordinates = data_1[:, j:, 0]
                    y_coordinates = data_1[:, j:, 1]
                    z_coordinates = data_1[:, j:, 2]
                    coordinates = np.array([x_coordinates, y_coordinates, z_coordinates])
                    new_coordinates = np.transpose(coordinates)
                    euclidean = distance.cdist(new_coordinates, 'euclidean')
                    max_euclidean = max(euclidean)
                    print(max_euclidean)

                    for i in range(3):
                        if i == 0:
                            print("The average of X values are: ", sum(data_1[:, 0:, i]) / len(data_1[:, 0:, i]))
                            avg = sum(data_1[:, j:, i]) / len(data_1[:, j:, i])
                            average_x.append(avg[0])
                            print(average_x)
                            #For distance calculation

                        if i == 1:
                            print("The average of Y values are: ", sum(data_1[:, 0:, i]) / len(data_1[:, 0:, i]))
                            avg = sum(data_1[:, j:, i]) / len(data_1[:, j:, i])
                            average_y.append(avg[0])
                        if i == 2:
                            print("The average of Z values are: ", sum(data_1[:, 0:, i]) / len(data_1[:, 0:, i]))
                            avg = sum(data_1[:, j:, i]) / len(data_1[:, j:, i])
                            print(avg)
                            average_z.append(avg[0])
            else:
                print("No Position Data found.")
                average_x.append(None)
                average_y.append(None)
                average_z.append(None)
                sensor.append(None)


        else:
            device_list.append(None)
            sensor.append(None)
            average_x.append(None)
            average_y.append(None)
            average_z.append(None)
            print("No device found")

dict = {}
dict["File"] = result
dict["Device"] = device_list
dict["Sensor #"] = sensor
dict["Average X-Value"] = average_x
dict["Average Y-Value"] = average_y
dict["Average Z-Value"] = average_z
print(dict)



df = pd.DataFrame.from_dict(dict, orient='index')
df_transposed = df.transpose()
df_transposed.to_csv("test4.csv", mode='w+', index=False)
Editor is loading...
Leave a Comment