Example #1
0
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
Example #2
0
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")