[PYTHON] Lecture des données de séries chronologiques OpenFOAM et des ensembles de données

Aperçu

J'ai créé une fonction pour lire les données de séries chronologiques OpenFOAM et les ensembles de données (données de distribution spatiale générées par la commande exemple) en Python, et simplifié le traçage avec matplotlib.

En principe, les données de série chronologique d'OpenFOAM sont enregistrées dans un nouveau répertoire à chaque redémarrage, mais on suppose qu'elles sont jointes avec la commande cat pour former un seul fichier.

Code Python

Fonction de lecture des données de séries chronologiques

def readHistory(case, positions, variables):
    import numpy as np
    
    """
    case: case name (string data)
    positions: position name (list data)
    variables: physical quantities (list data)
    """
    
    data ={}

    for position in positions:
        for variable in variables:
            key = variable+"_"+position
            value = np.genfromtxt(case+"/"+position+"/"+variable, unpack=True)
            data[key] = value
        
    return data

fonctions de lecture des données des ensembles

Description de l'argument

def readSets(case, file, variables):
    import numpy as np
    import pandas as pd
    import glob
    import os
    
    """
    case: case name (string data)
    file: sets data file name (string data)
    variables: physical quantities (list data)
    """

    # list of timing
    list1 = glob.glob(case + "/sets/*")
    
    variable_names = file.split("_")
    # remove ".xy" 
    variable_names[-1] = variable_names[-1].split(".")[0]
    position, variable_names[0] = variable_names[0], "x"
    #print(variable_names)
        
    data = {}
    for variable in variables:
        key = variable+"_"+position
        data[key] = pd.DataFrame()
        
        for i in list1:
            path = i+"/" + file
            df = pd.read_table(path, header = None, names = variable_names)   
            data[key] = pd.concat([data[key], df[variable]], axis=1,)
    
        list_index=[]    
        for i in list1:
            list_index.append(str(float(os.path.basename(i))))
    
        data[key].columns = list_index
        data[key] = pd.concat([df[variable_names[0]], data[key].sort_index(axis=1)], axis=1)
    
    # return dictionary of dataframe
    return data

Tracer avec matplotlib

Tracez les données avec matplotlib.

Supposons que la disposition des données soit la suivante. test01 est le nom du cas.

test01/position-A/p test01/position-A/U test01/position-B/p test01/position-B/U test01/sets/0/center_p_k.xy test01/sets/10/center_p_k.xy

p et U sont des données de séries chronologiques de position-A et B center_p_k.xy correspond aux données de distribution aux instants 0 et 10. est.

Il existe plusieurs cas, et il est conçu en supposant que vous pouvez facilement créer un tracé avec seulement le nom de cas modifié.

import matplotlib.pyplot as plt
%matplotlib inline

case = "test01"
history_position = ["position-A", "position-B"]
history_variables = ["p", "U"]
sets_variables = ["p", "k"]
sets_position = "center"
dataSet_test01= [readHistory(case, history_position, history_variables), 
                  readSets(case, "center_p_k.xy", sets_variables)]

#Tracé d'un ensemble de données de séries chronologiques
for i in history_position:
    for j in history_variables:
        fig = plt.figure(figsize=(8,8))
        ax = fig.add_subplot(111)

        ax.plot(dataSet_test01[0][j+"_"+i][0], dataSet_test01[0][j+"_"+i][1], label=j)
        ax.legend(bbox_to_anchor=(1.01, 1., 0., 0), loc='upper left', borderaxespad=0.,)

#Diagramme de distribution spatiale
for sets in sets_variables:
    for column in dataSet_test01[1][sets+"_"+sets_position]:
        fig = plt.figure(figsize=(8,8))
        ax = fig.add_subplot(111)
    
        ax.plot(dataSet_test01[1][sets+"_"+sets_position]["x"], 
            dataSet_test01[1][sets+"_"+sets_position][column], 
            label=sets+"_"+column)
        ax.legend(bbox_to_anchor=(1.01, 1., 0., 0), loc='upper left', borderaxespad=0.,)

Recommended Posts

Lecture des données de séries chronologiques OpenFOAM et des ensembles de données
[Python] Tracer des données de séries chronologiques
Graphique des données de séries chronologiques en Python à l'aide de pandas et matplotlib
Python: analyse des séries chronologiques: prétraitement des données des séries chronologiques
Différenciation des données de séries chronologiques (discrètes)
Analyse des séries chronologiques 3 Prétraitement des données des séries chronologiques
Comparaison de la prédiction des données de séries chronologiques entre le modèle SARIMA et le modèle Prophet
Lors du traçage des données de séries chronologiques et de l'obtention d'une erreur de débordement matplotlib
Prédiction des données de séries chronologiques par projection simplex
Prédire les données de séries chronologiques avec un réseau neuronal
Détection d'anomalies de données chronologiques pour les débutants
Comment gérer les données de séries chronologiques (mise en œuvre)
Analyse des séries chronologiques n ° 6 Faux retour et partie républicaine
Formater et afficher des données de séries chronologiques avec différentes échelles et unités avec Python ou Matplotlib
[Kaggle] De la lecture des données au prétraitement et au codage
Résumé de la méthode Kaggle's Kernel [Table time series data]
Décomposition des séries temporelles
Acquisition de données chronologiques (quotidiennes) des cours des actions
Voir les détails des données de séries chronologiques dans Remotte
Comment lire les données de séries chronologiques dans PyTorch
[Dernière méthode] Visualisation des données de séries chronologiques et extraction de modèles fréquents à l'aide du profil Pan-Matrix
Quantité d'entités pouvant être extraite des données de séries chronologiques
Visualisez les données et saisissez la corrélation en même temps
Prédiction de données chronologiques par AutoML (apprentissage automatique automatique)
Python: analyse des séries chronologiques
Lecture de données avec TensorFlow
"Analyse des séries chronologiques de mesure des données économiques et financières" Résolution du problème de fin de chapitre avec Python
Question sur la série chronologique Python
Analyse des séries chronologiques RNN_LSTM1
Analyse des séries chronologiques 1 Principes de base
Afficher les séries chronologiques TOPIX
Diagramme de séries chronologiques / Matplotlib
[Python] [Supplément] Chapitre 04-08 Diverses structures de données (création et manipulation d'ensembles)
Une histoire de regroupement de données de séries chronologiques d'échange