python - 在 Paraview 的自定义过滤器中导入日志记录
问题描述
我有一个自定义过滤器,我一直在尝试添加日志记录,但无法使其工作,Paraview GUI 不断崩溃,我不知道为什么。
我尝试过类似的东西
import vtk
import math
import numpy as np
import numpy.linalg as la
from vtkmodules.util.vtkAlgorithm import VTKPythonAlgorithmBase
from vtkmodules.vtkCommonDataModel import vtkDataSet
from paraview.util.vtkAlgorithm import smproxy, smproperty
from vtk.numpy_interface import algorithms as algs
from vtk.numpy_interface import dataset_adapter as dsa
import logging
logging.basicConfig(filename='app.log', filemode='w', format='%(name)s - %(levelname)s - %(message)s')
logging.warning('This will get logged to a file')
@smproxy.filter(label="Custom Markers Filter")
@smproperty.input(name="Input")
class CustomMarkersFilter(VTKPythonAlgorithmBase):
def __init__(self):
VTKPythonAlgorithmBase.__init__(self)
def RequestData(self, request, inInfo, outInfo):
logging.info('Requesting Data')
inp = vtkDataSet.GetData(inInfo[0])
dsaInp = dsa.WrapDataObject(inp)
points = dsaInp.GetPoints()
centers = identify_markers(points)
M1_, M2_, M3_ = centers
print("M1': " + str(M1_))
print("M2': " + str(M2_))
print("M3': " + str(M3_))
# Create vtkPoints from markers centers
pts = vtk.vtkPoints()
for p in centers:
pts.InsertNextPoint(p)
opt = vtkDataSet.GetData(outInfo)
dsaOpt = dsa.WrapDataObject(opt)
opt.SetPoints(pts)
numPts = pts.GetNumberOfPoints()
ptIds = vtk.vtkIdList()
ptIds.SetNumberOfIds(numPts)
for a in range(numPts):
ptIds.SetId(a, a)
dsaOpt.Allocate(1)
dsaOpt.InsertNextCell(vtk.VTK_POLY_VERTEX, ptIds)
return 1
我也尝试在类内部进行初始化,但也没有成功。
即使应用程序崩溃,有没有办法获得反馈?
解决方案
推荐阅读
- r - R ggplot中具有不同比例的两个折线图
- delphi - Windows 文本缩放更改时如何避免重置 Screen.MenuFont 设置?
- typescript - 通用功能限制
- javascript - 使用 MutationObserver,即使删除了父级,我如何检测被删除的子级?
- r - 如何创建两个数据帧中常见唯一值数量的汇总计数?
- python - 日期时间收到一个天真的日期时间,而我在时区之前精确
- reactjs - 滑块不会在 ReactJS 中显示图像
- python - 将配置和环境文件传递给 pytest
- r - R问题中的支持向量机与预测表
- python - 来自 yfinance 的具有股票价格的 Polyfit 函数