[PYTHON] Résumé de vtkThreshold (mis à jour de temps en temps)

Qu'est-ce que vtkThreshold?

Un filtre qui extrait uniquement les éléments qui contiennent des valeurs dans la plage spécifiée.

** référence de classe ** https://vtk.org/doc/nightly/html/classvtkThreshold.html

Plus précisément, l'exemple du paraview suivant est facile à comprendre

Vérifiez la fonction avec paraview

Pour l'exemple de calcul, j'ai utilisé pitzDaily dans le tutoriel de ʻOpenFOAM`.

Avant d'appliquer le seuil

image.png

Après avoir lu le résultat du calcul, appuyez sur ce bouton image.png

Après avoir appliqué le seuil

Résultat de l'application d'une plage de 5 à 15 pour la pression p

image.png

Après avoir appliqué l'option TInvert

Prenez un ensemble complémentaire

image.png

Vérification de fonctionnement avec python

environnement

python 3.7 vtk 8.1.2

Méthode de confirmation


import Vtk
print(vtk.vtkVersion.GetVTKSourceVersion())
>> vtk version 8.1.2

Code de base

J'utilise vtkOpenFOAMReader pour lire le résultat d'OpenFOAM Nous allons également résumer vtkOpenFOAMReader dans ici.

import vtk
#Lire le résultat d'OpenFOAM
filename = "case1.foam"
reader = vtk.vtkOpenFOAMReader()
reader.SetFileName(filename)
reader.CreateCellToPointOn()
reader.DecomposePolyhedraOn()
reader.EnableAllCellArrays()
reader.Update()
#Appliquer le dernier résultat de l'heure
n_step = reader.GetTimeValues().GetNumberOfValues()
latest_time = reader.GetTimeValues().GetValue(n_step-1)
reader.UpdateTimeStep(latest_time)
reader.Update()

filter_threshold = vtk.vtkThreshold()
filter_threshold.SetInputConnection(reader.GetOutputPort())

###################
#Ajoutez les paramètres ici#
###################
filter_threshold.Update()


filter = vtk.vtkGeometryFilter()
filter.SetInputConnection(filter_threshold.GetOutputPort())
filter.Update()

mapper = vtk.vtkCompositePolyDataMapper2()
mapper.SetInputConnection(filter.GetOutputPort()) #Définir le filtre dans le mappeur
mapper.SetScalarModeToUseCellFieldData() #Défini pour les données scalaires

# renderer
renderer = vtk.vtkRenderer()
renderer.AddActor(actor)            #Définir l'acteur dans le moteur de rendu

##Réglage de la couleur d'arrière-plan
renderer.GradientBackgroundOn()      #Définir un arrière-plan dégradé
renderer.SetBackground2(0.2,0.4,0.6) #Top couleur
renderer.SetBackground(1,1,1)        #Couleur du bas

#Window
renWin = vtk.vtkRenderWindow()
renWin.AddRenderer(renderer)         #Définir le rendu dans la fenêtre
iren = vtk.vtkRenderWindowInteractor();
iren.SetRenderWindow(renWin);
renWin.SetSize(850, 850)
renWin.Render()
iren.Start();

De base

ThresholdBetween()

Limitation en spécifiant les limites supérieure et inférieure


#Réglez le seuil entre 5 et 15
filter_threshold.ThresholdBetween(5,15)

#enum FieldAssociations
#  {
#    FIELD_ASSOCIATION_POINTS,
#    FIELD_ASSOCIATION_CELLS,
#    FIELD_ASSOCIATION_NONE,
#    FIELD_ASSOCIATION_POINTS_THEN_CELLS,
#    FIELD_ASSOCIATION_VERTICES,
#    FIELD_ASSOCIATION_EDGES,
#    FIELD_ASSOCIATION_ROWS,
#    NUMBER_OF_ASSOCIATIONS
#  };
FIELD_ASSOCIATION_POINTS = 0
FIELD_ASSOCIATION_CELLS = 1
# "p"Est filtrant contre la pression
filter_threshold.SetInputArrayToProcess(0,0,0,FIELD_ASSOCIATION_CELLS ,"p")
filter_threshold.Update()

Conforme aux résultats du paraview ci-dessus

image.png

Si vous ne savez pas comment utiliser la méthode, vous pourrez peut-être la résoudre en utilisant la fonction d'aide.

help(filter_threshold.SetInputArrayToProcess)

>> 

Help on built-in function SetInputArrayToProcess:

SetInputArrayToProcess(...) method of vtkFiltersCorePython.vtkThreshold instance
    V.SetInputArrayToProcess(int, int, int, int, string)
    C++: virtual void SetInputArrayToProcess(int idx, int port,
        int connection, int fieldAssociation, const char *name)
    V.SetInputArrayToProcess(int, int, int, int, int)
    C++: virtual void SetInputArrayToProcess(int idx, int port,
        int connection, int fieldAssociation, int fieldAttributeType)
    V.SetInputArrayToProcess(int, vtkInformation)
    C++: virtual void SetInputArrayToProcess(int idx,
        vtkInformation *info)
    V.SetInputArrayToProcess(int, int, int, string, string)
    C++: virtual void SetInputArrayToProcess(int idx, int port,
        int connection, const char *fieldAssociation,
        const char *attributeTypeorName)
    
    Set the input data arrays that this algorithm will process.
    Specifically the idx array that this algorithm will process
    (starting from 0) is the array on port, connection with the
    specified association and name or attribute type (such as
    SCALARS). The fieldAssociation refers to which field in the data
    object the array is stored. See vtkDataObject::FieldAssociations
    for detail.

ThresholdByUpper()

Limiter en spécifiant la limite supérieure Seules les zones plus grandes que la valeur spécifiée sont affichées

#filter_threshold.ThresholdBetween(5,15)
filter_threshold.ThresholdByUpper(10)

Rien ne s'affiche car la zone cible n'existe pas image.png

ThresholdByLower()

Limiter en spécifiant la limite inférieure Seules les zones plus petites que la valeur spécifiée sont affichées

#filter_threshold.ThresholdBetween(5,15)
filter_threshold.ThresholdByLower(5)

En conséquence, il correspondait au résultat de Invert dans le paraview ci-dessus.

image.png

Inverser la relation

Apparemment, la relation Invert est déjà implémentée en c ++, mais pas dans la version python.

filter_threshold.SetInvert(True)

AttributeError  
---> 31 filter_threshold.SetInvert(True)
AttributeError: 'vtkFiltersCorePython.vtkThreshold' object has no attribute 'SetInvert'

Autres méthodes

GetUpperThreshold Obtenez la limite supérieure du seuil

filter_threshold.ThresholdBetween(-100,100)
filter_threshold.GetUpperThreshold()
>> 100

GetLowerThreshold Obtenez la limite inférieure du seuil

filter_threshold.ThresholdBetween(-100,100)
filter_threshold.GetLowerThreshold()
>> -100

Set/GetAttributeMode

filter_threshold.SetAttributeModeToDefault()
filter_threshold.GetAttributeMode()
>>0

filter_threshold.SetAttributeModeToUsePointData()
filter_threshold.GetAttributeMode()
>>1
filter_threshold.GetAttributeModeAsString()
>>'UsePointData'

filter_threshold.SetAttributeModeToUseCellData()
filter_threshold.GetAttributeMode()
>>2
filter_threshold.GetAttributeModeAsString()
>>'UseCellData'

filter_threshold.SetAttributeMode(2)
filter_threshold.GetAttributeModeAsString()
>>'UseCellData'

Je le mettrai à jour quand j'en aurai envie

Recommended Posts

Résumé de vtkThreshold (mis à jour de temps en temps)
Résumé de vtkXMLUnstructuredGridReader (mis à jour de temps en temps)
Résumé de vtkOpenFOAMReader (mis à jour de temps en temps)
vtkClipPolyData / DataSet Summary (mis à jour de temps en temps)
[Mis à jour de temps en temps] Résumé des modèles de conception en Java
[Mis à jour de temps en temps] Examen de Let Code NumPy
Livre de mots de l'ingénieur (mis à jour de temps en temps)
Mémo Tensorflow [mis à jour de temps à autre]
Manuel Python privé (mis à jour de temps en temps)
[Mis à jour de temps à autre] Notes relatives au système d'exploitation après commercialisation
[Mis à jour de temps en temps] Algorithme et bibliothèque LetCode
Aide-mémoire pour le post-traitement d'OpenFOAM (mis à jour de temps en temps)
mémo d'apprentissage progate Python (mis à jour de temps en temps)
Sites d'aide utiles, etc. (mis à jour de temps à autre)
Récapitulatif des dossiers dans lesquels Ruby, Python, PostgreSQL, etc. sont installés sur macOS (mis à jour de temps en temps)
Paramètres Apache, confirmation du journal, etc. (* Mis à jour de temps en temps)
Anaconda mis à jour de 4.2.0 à 4.3.0 (python3.5 mis à jour vers python3.6)
J'ai lu la référence Chainer (mise à jour de temps en temps)
(Mis à jour de temps en temps) Résumé des API d'apprentissage automatique qui vous permettent de créer rapidement des applications par Team AI
Mémorandum des commandes, packages, termes, etc. utilisés sous Linux (mis à jour de temps en temps)
(Mis à jour de temps en temps) Emplacement de stockage de divers fichiers de réglage de VS Code Note mémo
Résumé de l'utilisation de pandas.DataFrame.loc
Résumé de l'utilisation de pyenv-virtualenv
Python (de la première fois à l'exécution)
Résumé de l'utilisation de csvkit
Liste de mes articles pouvant être utiles aux pros de la compétition (mise à jour de temps en temps)
[Note] Sites Web relatifs à l'IA / à l'apprentissage automatique / à python [mis à jour de temps en temps]
Résumé des avantages (inconvénients) lors du passage de CUnit à Google Test
[Python] Résumé de l'utilisation des pandas
Conversion facile de l'heure UTC en heure locale
[Python2.7] Résumé de l'utilisation d'unittest
De l'attention de Zero Tsuku 2 au transformateur
Résumé des procédures jusqu'à l'enregistrement PyPI
Résumé de l'utilisation de la liste Python
[Python2.7] Résumé de l'utilisation du sous-processus
Résumé de l'écriture d'AWS Lambda
Introduction à Scapy ① (De l'installation à l'exécution de Scapy)
Mis à jour vers Python 2.7.9
mesure du temps
[Procédure d'installation Ansible] De l'installation à l'exécution du playbook
Résumé de la façon d'importer des fichiers dans Python 3
Somme de 1 à 10
Résumé de l'utilisation de MNIST avec Python
Modifiez le point décimal de la journalisation de, à.
Résumé de l'étude de Python pour utiliser AWS Lambda
De l'introduction de pyethapp à l'exécution du contrat
Histoire de passer de Pipenv à la poésie
(Version préservée: mise à jour de temps en temps) Une collection de tutoriels utiles pour les hackathons d'analyse de données par Team AI
Comprendre les modèles de conception en comparant les implémentations en JavaScript et Java [mis à jour de temps en temps]
Résumé du début au chapitre 1 de l'introduction aux modèles de conception appris en langage Java
[Mis à jour de temps en temps] Mémos Python souvent utilisés pour l'analyse des données [Division N, etc.]
Le mur lors du passage du service Django de Python 2.7 à la série Python 3
Je veux détecter des images de chats d'Instagram
Résumé des outils nécessaires pour analyser les données en Python
[Blender] Résumé de la procédure d'installation / de mise à jour / de désinstallation des modules complémentaires
DataNitro, implémentation de la fonction de lecture des données de feuille
[Python] Résumé de la façon de spécifier la couleur de la figure
Convertir les éléments du tableau numpy de float en int
Résumé de la façon de partager l'état avec plusieurs fonctions