def getDataFromDB(): """ Funzione per ottenere i dati dal server locale influxdb contenente le misurazioni dei pazienti. """ ipDB = os.getenv('INFLUX_IP_AI', 'localhost') portDB = os.getenv('INFLUX_PORT_AI', '8086') userDB = os.getenv('INFLUX_USER_AI', 'admin') passwordDB = os.getenv('INFLUX_PW_AI', 'G10m1R0m3') nameDB = os.getenv('INFLUX_DB_AI', 'giomi') dr = DataRetriever(metrics) dfs = dr.loadDataFromDB(ipDB, portDB, userDB, passwordDB, nameDB) dp = DataProcessor(metrics, defaults) df = dp.applyPipeline(dfs) return df
def main(n_dimensions: int, n_clusters: int, processInstanceId: str, method: str): metrics = [ 'temperature', 'systolic', 'diastolic', 'pulse', 'spo2', 'weight' ] # metrihe da ottenere dal db defaults = [36, 115, 75, 75, 98, 75] # valori di default per ogni metrica ipDB = os.getenv('INFLUX_IP_AI', 'localhost') portDB = os.getenv('INFLUX_PORT_AI', '8086') userDB = os.getenv('INFLUX_USER_AI', 'admin') passwordDB = os.getenv('INFLUX_PW_AI', 'G10m1R0m3') nameDB = os.getenv('INFLUX_DB_AI', 'giomi') dr = DataRetriever(metrics) dfs = dr.loadDataFromDB(ipDB, portDB, userDB, passwordDB, nameDB) # ottengo i dati dal databse dp = DataProcessor(metrics, defaults) df = dp.applyPipeline( dfs ) # applico le funzioni per fare il merging tra le varie misurazioni da = DataAnalyzer(n_dimensions, metrics) da.applyPCA(df) # applico la PCA kmeans = da.applyKMeans(df, n_clusters) # applico il kmeans ax, plt = da.plot( df, kmeans.labels_, kmeans.cluster_centers_) # stampo sull'immagine i cluster method = True if method == 'cluster' else False point = da.addPatientPoint( df, ax, processInstanceId, method) # stampo sull'immagine il punto del paziente plt.savefig('/tmp/out.png') da2 = DataAnalyzer(n_dimensions, metrics) da2.applyPCA(df) kmeans2 = da2.applyKMeans(df, n_clusters) ax2, plt2 = da2.plot(df, kmeans2.labels_, kmeans2.cluster_centers_, zoom=True) method = True if method == 'cluster' else False point2 = da2.addPatientPoint(df, ax2, processInstanceId, method) # da.addAllPatientPoints(df, ax, processInstanceId) #distance = kmeans.transform(point.reshape(1, -1)) #normalizedDistance = (distance / np.linalg.norm(distance, ord=2, axis=1, keepdims=True))[0] # out = { # "distances": normalizedDistance.tolist() # } #print(json.dumps(out)) plt2.savefig('/tmp/out2.png') print("Eseguito con successo")