23#ifndef vtkONNXInference_h
24#define vtkONNXInference_h
26#include "vtkFiltersONNXModule.h"
34VTK_ABI_NAMESPACE_BEGIN
38class AllocatorWithDefaultOptions;
55 vtkGetMacro(ModelFile, std::string);
95 vtkSetMacro(TimeStepIndex,
int);
96 vtkGetMacro(TimeStepIndex,
int);
185 vtkSetMacro(FieldArrayInput,
bool);
186 vtkGetMacro(FieldArrayInput,
bool);
187 vtkBooleanMacro(FieldArrayInput,
bool);
194 vtkSetMacro(ProcessedFieldArrayName,
const std::string&);
195 vtkGetMacro(ProcessedFieldArrayName,
const std::string&);
202 vtkSetMacro(OutputDimension,
int);
203 vtkGetMacro(OutputDimension,
int);
211 vtkSetMacro(ArrayAssociation,
int);
212 vtkGetMacro(ArrayAssociation,
int);
223 vtkGetMacro(AutoDetectInputShape,
bool);
224 vtkBooleanMacro(AutoDetectInputShape,
bool);
236 vtkSetMacro(AutoDetectPermutation,
bool);
237 vtkGetMacro(AutoDetectPermutation,
bool);
238 vtkBooleanMacro(AutoDetectPermutation,
bool);
267 bool InitializeSession();
274 bool ShouldGenerateTimeSteps();
280 bool GenerateInputTensorFromParameters(
281 std::vector<float>& parameters, Ort::Value& inputTensor,
double timeValue);
287 bool GenerateInputTensorFromFieldArray(
294 std::vector<Ort::Value> RunModel(Ort::Value& inputTensor);
297 std::string ModelFile;
298 std::vector<int64_t> InputShape = { 0 };
299 std::vector<float> InputParameters;
300 std::vector<double> TimeStepValues;
301 int TimeStepIndex = -1;
302 bool FieldArrayInput =
false;
303 std::string ProcessedFieldArrayName;
304 std::vector<int> InputPermutation;
307 int OutputDimension = 1;
308 std::vector<int> OutputPermutation;
311 std::vector<float> InputDataBuffer;
313 bool AutoDetectInputShape =
false;
314 bool AutoDetectPermutation =
false;
316 bool Initialized =
false;
317 std::unique_ptr<vtkONNXInferenceInternals> Internals;
general representation of visualization data
represent and manipulate attribute data in a dataset
a simple class to control print indentation
void ClearInputParameters()
Clear the input parameters vector.
void ClearTimeStepValues()
Clear the time step values vector.
void ClearOutputPermutation()
Set/Get the permutation between the model output and a VTK array.
void SetNumberOfInputPermutationElements(vtkIdType nb)
Set/Get the permutation between the VTK array and the model input.
void SetInputPermutation(const std::vector< int > &shape)
Set/Get the permutation between the VTK array and the model input.
void SetInputShape(vtkIdType idx, int shapeElement)
Set/Get the shape of the input.
int RequestInformation(vtkInformation *, vtkInformationVector **, vtkInformationVector *) override
This is required to inform the pipeline of the time steps.
~vtkONNXInference() override=default
const std::vector< int > & GetOutputPermutation() const
Set/Get the permutation between the model output and a VTK array.
void SetInputShape(const std::vector< int64_t > &shape)
Set/Get the shape of the input.
int RequestData(vtkInformation *, vtkInformationVector **, vtkInformationVector *) override
This is called within ProcessRequest when a request asks the algorithm to do its work.
void SetInputParameters(const std::vector< float > ¶ms)
Input Parameters.
void SetInputParameter(vtkIdType idx, float InputParameter)
Set an input parameter at a given index.
void ClearInputPermutation()
Set/Get the permutation between the VTK array and the model input.
static vtkONNXInference * New()
void SetTimeStepValues(const std::vector< double > ×)
Time Steps.
void SetTimeStepValue(vtkIdType idx, double timeStepValue)
Set a time value at a given index.
void SetInputPermutationElement(vtkIdType idx, int permutationElement)
Set/Get the permutation between the VTK array and the model input.
void SetModelFile(const std::string &file)
Get/Set the path to the ONNX model and load it.
void ClearInputShape()
Clear the input shape vector.
void SetOutputPermutationElement(vtkIdType idx, int permutationElement)
Set/Get the permutation between the model output and a VTK array.
void SetNumberOfOutputPermutationElements(vtkIdType nb)
Set/Get the permutation between the model output and a VTK array.
int ExecuteData(vtkDataObject *input, vtkDataObject *output, double timevalue)
Execute the inference and add the resulting array on the given data object.
void SetNumberOfInputShapeElements(vtkIdType nb)
Set the number of input shape values.
void SetOutputPermutation(const std::vector< int > &permutation)
Set/Get the permutation between the model output and a VTK array.
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
const std::vector< int > & GetInputPermutation() const
Set/Get the permutation between the VTK array and the model input.
void SetInputShape(vtkIdType nb)
Set/Get the shape of the input.
void SetNumberOfTimeStepValues(vtkIdType nb)
Set the number of time step values.
const std::vector< int64_t > & GetInputShape() const
Set/Get the shape of the input.
void SetAutoDetectInputShape(bool SetAutoDetectInputShape)
Set/Get whether to automatically detect input shape from the ONNX model.
VTK internal class for hiding ONNX members.