[PYTHON] Zusammenfassung von vtkThreshold (von Zeit zu Zeit aktualisiert)

Was ist vtkThreshold?

Ein Filter, der nur Elemente extrahiert, die Werte innerhalb des angegebenen Bereichs enthalten.

** Klassenreferenz ** https://vtk.org/doc/nightly/html/classvtkThreshold.html

Insbesondere das Beispiel in der folgenden Paraview ist leicht zu verstehen

Überprüfen Sie die Funktion mit Paraview

Für das Berechnungsbeispiel habe ich "pitzDaily" aus dem "OpenFOAM" -Tutorial verwendet.

Vor dem Anwenden von Threshold

image.png

Drücken Sie diese Taste, nachdem Sie das Berechnungsergebnis gelesen haben image.png

Nach dem Anwenden von Threshold

Ergebnis der Anwendung eines Bereichs von 5 bis 15 für Druck p

image.png

Nach dem Anwenden der Option TInvert

Nehmen Sie ein komplementäres Set

image.png

Funktionsprüfung mit Python

Umgebung

python 3.7 vtk 8.1.2

Bestätigungsmethode


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

Basiscode

Ich benutze vtkOpenFOAMReader, um das Ergebnis von OpenFOAM zu lesen Über vtkOpenFOAMReader werde ich es auch in [hier] zusammenfassen (https://qiita.com/matsubaradaisuke/items/2035a779ffc383820ad3)

import vtk
#Lesen Sie das Ergebnis von OpenFOAM
filename = "case1.foam"
reader = vtk.vtkOpenFOAMReader()
reader.SetFileName(filename)
reader.CreateCellToPointOn()
reader.DecomposePolyhedraOn()
reader.EnableAllCellArrays()
reader.Update()
#Wenden Sie das neueste Zeitergebnis an
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())

###################
#Fügen Sie hier Einstellungen hinzu#
###################
filter_threshold.Update()


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

mapper = vtk.vtkCompositePolyDataMapper2()
mapper.SetInputConnection(filter.GetOutputPort()) #Filter im Mapper einstellen
mapper.SetScalarModeToUseCellFieldData() #Für skalare Daten einstellen

# renderer
renderer = vtk.vtkRenderer()
renderer.AddActor(actor)            #Stellen Sie den Schauspieler im Renderer ein

##Hintergrundfarbeneinstellung
renderer.GradientBackgroundOn()      #Stellen Sie einen Verlaufshintergrund ein
renderer.SetBackground2(0.2,0.4,0.6) #Top Farbe
renderer.SetBackground(1,1,1)        #Grundfarbe

#Window
renWin = vtk.vtkRenderWindow()
renWin.AddRenderer(renderer)         #Stellen Sie den Renderer im Fenster ein
iren = vtk.vtkRenderWindowInteractor();
iren.SetRenderWindow(renWin);
renWin.SetSize(850, 850)
renWin.Render()
iren.Start();

Basic

ThresholdBetween()

Einschränkung durch Angabe der oberen und unteren Grenzen


#Stellen Sie den Schwellenwert zwischen 5 und 15 ein
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"Filtert gegen Druck
filter_threshold.SetInputArrayToProcess(0,0,0,FIELD_ASSOCIATION_CELLS ,"p")
filter_threshold.Update()

In Übereinstimmung mit den Ergebnissen in der obigen Paraview

image.png

Wenn Sie nicht wissen, wie Sie die Methode verwenden sollen, können Sie sie möglicherweise mithilfe der Hilfefunktion lösen.

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()

Limit durch Angabe der Obergrenze Es werden nur Bereiche angezeigt, die größer als der angegebene Wert sind

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

Es wird nichts angezeigt, da der Zielbereich nicht vorhanden ist image.png

ThresholdByLower()

Limit durch Angabe der Untergrenze Es werden nur Bereiche angezeigt, die kleiner als der angegebene Wert sind

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

Infolgedessen stimmte es mit dem Ergebnis von Invertieren in der obigen Paraview überein.

image.png

Beziehung umkehren

Anscheinend ist die Invert-Beziehung bereits in c ++ implementiert, aber nicht in der Python-Version.

filter_threshold.SetInvert(True)

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

Andere Methoden

GetUpperThreshold Holen Sie sich die Obergrenze des Schwellenwerts

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

GetLowerThreshold Holen Sie sich die Untergrenze des Schwellenwerts

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'

Ich werde es aktualisieren, wenn ich Lust dazu habe

Recommended Posts

Zusammenfassung von vtkThreshold (von Zeit zu Zeit aktualisiert)
vtkXMLUnstructuredGridReader Zusammenfassung (von Zeit zu Zeit aktualisiert)
vtkOpenFOAMReader-Zusammenfassung (von Zeit zu Zeit aktualisiert)
vtkClipPolyData / DataSet-Zusammenfassung (von Zeit zu Zeit aktualisiert)
[Von Zeit zu Zeit aktualisiert] Zusammenfassung der Entwurfsmuster in Java
[Von Zeit zu Zeit aktualisiert] Überprüfung von Let Code NumPy
Ingenieur-Wortbuch (von Zeit zu Zeit aktualisiert)
Tensorflow-Memo [von Zeit zu Zeit aktualisiert]
Privates Python-Handbuch (von Zeit zu Zeit aktualisiert)
[Von Zeit zu Zeit aktualisiert] Hinweise zum Postmarket-Betriebssystem
[Von Zeit zu Zeit aktualisiert] LetCode-Algorithmus und Bibliothek
OpenFOAM-Spickzettel für die Nachbearbeitung (von Zeit zu Zeit aktualisiert)
progate Python-Lernnotiz (von Zeit zu Zeit aktualisiert)
Nützliche Hilfeseiten usw. (von Zeit zu Zeit aktualisiert)
Zusammenfassung der Ordner, in denen Ruby, Python, PostgreSQL usw. unter macOS installiert sind (von Zeit zu Zeit aktualisiert)
Apache-Einstellungen, Protokollbestätigung usw. (* Von Zeit zu Zeit aktualisiert)
Anaconda aktualisiert von 4.2.0 auf 4.3.0 (python3.5 aktualisiert auf python3.6)
Ich habe die Chainer-Referenz gelesen (von Zeit zu Zeit aktualisiert).
(Von Zeit zu Zeit aktualisiert) Zusammenfassung der APIs für maschinelles Lernen, mit denen Sie schnell Apps von Team AI erstellen können
Memorandum über Befehle, Pakete, Begriffe usw., die unter Linux verwendet werden (von Zeit zu Zeit aktualisiert)
(Von Zeit zu Zeit aktualisiert) Speicherort verschiedener VS-Code-Einstellungsdateien Notiz notieren
Zusammenfassung der Verwendung von pandas.DataFrame.loc
Zusammenfassung der Verwendung von pyenv-virtualenv
Python (vom ersten Mal bis zur Ausführung)
Zusammenfassung der Verwendung von csvkit
Liste meiner Artikel, die für Wettkampfprofis nützlich sein können (von Zeit zu Zeit aktualisiert)
[Hinweis] Websites zu KI / maschinellem Lernen / Python [von Zeit zu Zeit aktualisiert]
Zusammenfassung der Vor- und Nachteile beim Wechsel von CUnit zu Google Test
[Python] Zusammenfassung der Verwendung von Pandas
Einfache Konvertierung von UTC in Ortszeit
[Python2.7] Zusammenfassung der Verwendung von unittest
Von der Aufmerksamkeit von Zero Tsuku 2 zum Transformator
Zusammenfassung der Verfahren bis zur PyPI-Registrierung
Zusammenfassung der Verwendung der Python-Liste
[Python2.7] Zusammenfassung der Verwendung des Unterprozesses
Zusammenfassung des Schreibens von AWS Lambda
Einführung in Scapy ① (Von der Installation bis zur Ausführung von Scapy)
Auf Python 2.7.9 aktualisiert
Zeitmessung
[Ansible Installationsverfahren] Von der Installation bis zur Ausführung des Playbooks
Zusammenfassung zum Importieren von Dateien in Python 3
Summe von 1 bis 10
Zusammenfassung der Verwendung von MNIST mit Python
Ändern Sie den Dezimalpunkt der Protokollierung von, nach.
Zusammenfassung des Studiums von Python zur Verwendung von AWS Lambda
Von der Einführung von Pyethapp bis zur Vertragsabwicklung
Die Geschichte vom Umzug von Pipenv zur Poesie
(Erhaltene Version: von Zeit zu Zeit aktualisiert) Eine Sammlung nützlicher Tutorials für Datenanalyse-Hackathons von Team AI
Verstehen Sie Entwurfsmuster, indem Sie Implementierungen in JavaScript und Java vergleichen. [Von Zeit zu Zeit aktualisiert]
Zusammenfassung von Anfang bis Kapitel 1 der Einführung in Entwurfsmuster, die in der Java-Sprache gelernt wurden
[Von Zeit zu Zeit aktualisiert] Python-Memos, die häufig für die Datenanalyse verwendet werden [N-Division usw.]
Die Wand beim Ändern des Django-Dienstes von Python 2.7 auf Python 3-Serie
Ich möchte Bilder von Katzen von Instagram erkennen
Zusammenfassung der Tools, die zum Analysieren von Daten in Python benötigt werden
[Blender] Zusammenfassung der Installation / Aktualisierung / Deinstallation von Add-Ons
DataNitro, Implementierung einer Funktion zum Lesen von Daten aus dem Blatt
[Python] Zusammenfassung, wie die Farbe der Figur angegeben wird
Konvertieren Sie Elemente des Numpy-Arrays von float in int
Zusammenfassung, wie der Status mit mehreren Funktionen geteilt wird