def getFields(self): if not self.dataTable: # read a data file if '.csv' in self.inputFile: r = vtk.vtkDelimitedTextReader() r.DetectNumericColumnsOn() r.SetFileName(self.inputFile) r.SetHaveHeaders(True) r.Update() self.dataTable = r.GetOutput() else: reader = simple.OpenDataFile(self.inputFile) reader.UpdatePipeline() ds = reader.GetClientSideObject().GetOutputDataObject(0) if ds.IsA('vtkTable'): self.dataTable = ds else: self.dataTable = vtk.vtkTable() fillTableWithDataSet(self.dataTable, ds) self.fields = {} self.columnNames = [] self.numRows = self.dataTable.GetNumberOfRows() for i in range(self.dataTable.GetNumberOfColumns()): # Add a range for any numeric fields self.columnNames.append(self.dataTable.GetColumnName(i)) arr = self.dataTable.GetColumn(i) if arr.GetDataTypeAsString() in NUMERIC_TYPES: self.fields[self.columnNames[i]] = { 'range': list(arr.GetRange()) } return self.fields
def __init__(self, module_manager): SimpleVTKClassModuleBase.__init__( self, module_manager, vtk.vtkDelimitedTextReader(), 'Reading vtkDelimitedText.', (), ('vtkDelimitedText',), replaceDoc=True, inputFunctions=None, outputFunctions=None)
def initialize(self, VTKWebApp, args): dataid = args.id treedata = getDBdata(dataid) VTKWebApp.tree1 = treedata["tree1"] VTKWebApp.tree2 = treedata["tree2"] VTKWebApp.table = dataid+ ".csv" # Create default pipeline (Only once for all the session) if not VTKWebApp.view: # read the trees treeReader1 = vtk.vtkNewickTreeReader() treeReader1.SetReadFromInputString(1) treeReader1.SetInputString(VTKWebApp.tree1) treeReader1.Update() tree1 = treeReader1.GetOutput() treeReader2 = vtk.vtkNewickTreeReader() treeReader2.SetReadFromInputString(1) treeReader2.SetInputString(VTKWebApp.tree2) treeReader2.Update() tree2 = treeReader2.GetOutput() # read the table tableReader = vtk.vtkDelimitedTextReader() tableReader.SetFileName(VTKWebApp.table) tableReader.SetHaveHeaders(True) tableReader.DetectNumericColumnsOn() tableReader.ForceDoubleOn() tableReader.Update() table = tableReader.GetOutput() # setup the tanglegram tanglegram = vtk.vtkTanglegramItem() tanglegram.SetTree1(tree1); tanglegram.SetTree2(tree2); tanglegram.SetTable(table); tanglegram.SetTree1Label("tree1"); tanglegram.SetTree2Label("tree2"); # setup the window view = vtk.vtkContextView() view.GetRenderer().SetBackground(1,1,1) view.GetRenderWindow().SetSize(800,600) iren = view.GetInteractor() iren.SetRenderWindow(view.GetRenderWindow()) transformItem = vtk.vtkContextTransform() transformItem.AddItem(tanglegram) transformItem.SetInteractive(1) view.GetScene().AddItem(transformItem) view.GetRenderWindow().SetMultiSamples(0) iren.Initialize() view.GetRenderWindow().Render() # VTK Web application specific VTKWebApp.view = view.GetRenderWindow() self.Application.GetObjectIdMap().SetActiveObject("VIEW", view.GetRenderWindow())
def CSVToVTKTable(csv): reader = vtk.vtkDelimitedTextReader() reader.SetReadFromInputString(1) reader.SetInputString(csv, len(csv)) reader.SetHaveHeaders(1) reader.DetectNumericColumnsOn() reader.Update() table = reader.GetOutput() return table
def __init__(self, module_manager): SimpleVTKClassModuleBase.__init__(self, module_manager, vtk.vtkDelimitedTextReader(), 'Reading vtkDelimitedText.', (), ('vtkDelimitedText', ), replaceDoc=True, inputFunctions=None, outputFunctions=None)
def initialize(self): global renderer, renderWindow, renderWindowInteractor, cone, mapper, actor # Bring used components self.registerVtkWebProtocol(protocols.vtkWebMouseHandler()) self.registerVtkWebProtocol(protocols.vtkWebViewPort()) self.registerVtkWebProtocol(protocols.vtkWebViewPortImageDelivery()) self.registerVtkWebProtocol(protocols.vtkWebViewPortGeometryDelivery()) # Update authentication key to use self.updateSecret(_PhylogeneticTree.authKey) # Create default pipeline (Only once for all the session) if not _PhylogeneticTree.view: # read in a tree treeReader = vtk.vtkNewickTreeReader() treeReader.SetFileName(_PhylogeneticTree.treeFilePath) treeReader.Update() reader = treeReader.GetOutput() # read in a table tableReader = vtk.vtkDelimitedTextReader() tableReader.SetFileName(_PhylogeneticTree.csvFilePath) tableReader.SetHaveHeaders(True) tableReader.DetectNumericColumnsOn() tableReader.Update() table = tableReader.GetOutput() # play with the heatmap vis treeHeatmapItem = vtk.vtkTreeHeatmapItem() treeHeatmapItem.SetTree(reader) treeHeatmapItem.SetTable(table) # setup the window view = vtk.vtkContextView() view.GetRenderer().SetBackground(1, 1, 1) view.GetRenderWindow().SetSize(800, 600) iren = view.GetInteractor() iren.SetRenderWindow(view.GetRenderWindow()) transformItem = vtk.vtkContextTransform() transformItem.AddItem(treeHeatmapItem) transformItem.SetInteractive(1) view.GetScene().AddItem(transformItem) view.GetRenderWindow().SetMultiSamples(0) iren.Initialize() view.GetRenderWindow().Render() # VTK Web application specific _PhylogeneticTree.view = view.GetRenderWindow() self.Application.GetObjectIdMap().SetActiveObject( "VIEW", view.GetRenderWindow())
def initialize(self): global renderer, renderWindow, renderWindowInteractor, cone, mapper, actor # Bring used components self.registerVtkWebProtocol(protocols.vtkWebMouseHandler()) self.registerVtkWebProtocol(protocols.vtkWebViewPort()) self.registerVtkWebProtocol(protocols.vtkWebViewPortImageDelivery()) self.registerVtkWebProtocol(protocols.vtkWebViewPortGeometryDelivery()) # Update authentication key to use self.updateSecret(_PhylogeneticTree.authKey) # Create default pipeline (Only once for all the session) if not _PhylogeneticTree.view: # read in a tree treeReader = vtk.vtkNewickTreeReader() treeReader.SetFileName(_PhylogeneticTree.treeFilePath) treeReader.Update() reader = treeReader.GetOutput() # read in a table tableReader = vtk.vtkDelimitedTextReader() tableReader.SetFileName(_PhylogeneticTree.csvFilePath) tableReader.SetHaveHeaders(True) tableReader.DetectNumericColumnsOn() tableReader.Update() table = tableReader.GetOutput() # play with the heatmap vis treeHeatmapItem = vtk.vtkTreeHeatmapItem() treeHeatmapItem.SetTree(reader); treeHeatmapItem.SetTable(table); # setup the window view = vtk.vtkContextView() view.GetRenderer().SetBackground(1,1,1) view.GetRenderWindow().SetSize(800,600) iren = view.GetInteractor() iren.SetRenderWindow(view.GetRenderWindow()) transformItem = vtk.vtkContextTransform() transformItem.AddItem(treeHeatmapItem) transformItem.SetInteractive(1) view.GetScene().AddItem(transformItem) view.GetRenderWindow().SetMultiSamples(0) iren.Initialize() view.GetRenderWindow().Render() # VTK Web application specific _PhylogeneticTree.view = view.GetRenderWindow() self.Application.GetObjectIdMap().SetActiveObject("VIEW", view.GetRenderWindow())
def readCSVFile(self, filename): """ Function to read a CSV file """ print("CSV FilePath: " + filename) sys.stdout.flush() CSVreader = vtk.vtkDelimitedTextReader() CSVreader.SetFieldDelimiterCharacters(",") CSVreader.SetFileName(filename) CSVreader.SetHaveHeaders(True) CSVreader.Update() return CSVreader.GetOutput()
def download_sparse_points(): """Used with ``download_saddle_surface``""" saved_file, _ = _download_file('sparsePoints.txt') points_reader = vtk.vtkDelimitedTextReader() points_reader.SetFileName(saved_file) points_reader.DetectNumericColumnsOn() points_reader.SetFieldDelimiterCharacters('\t') points_reader.SetHaveHeaders(True) table_points = vtk.vtkTableToPolyData() table_points.SetInputConnection(points_reader.GetOutputPort()) table_points.SetXColumn('x') table_points.SetYColumn('y') table_points.SetZColumn('z') table_points.Update() return pyvista.wrap(table_points.GetOutput())
def initialize(self, VTKWebApp, args): VTKWebApp.treeFilePath = args.tree VTKWebApp.csvFilePath = args.table # Create default pipeline (Only once for all the session) if not VTKWebApp.view: # read in a tree treeReader = vtk.vtkNewickTreeReader() treeReader.SetFileName(VTKWebApp.treeFilePath) treeReader.Update() reader = treeReader.GetOutput() # read in a table tableReader = vtk.vtkDelimitedTextReader() tableReader.SetFileName(VTKWebApp.csvFilePath) tableReader.SetHaveHeaders(1) tableReader.DetectNumericColumnsOn() tableReader.Update() table = tableReader.GetOutput() # play with the heatmap vis treeHeatmapItem = vtk.vtkTreeHeatmapItem() treeHeatmapItem.SetTree(reader) treeHeatmapItem.SetTable(table) # setup the window view = vtk.vtkContextView() view.GetRenderer().SetBackground(1, 1, 1) view.GetRenderWindow().SetSize(800, 600) iren = view.GetInteractor() iren.SetRenderWindow(view.GetRenderWindow()) transformItem = vtk.vtkContextTransform() transformItem.AddItem(treeHeatmapItem) transformItem.SetInteractive(1) view.GetScene().AddItem(transformItem) view.GetRenderWindow().SetMultiSamples(0) iren.Initialize() view.GetRenderWindow().Render() # VTK Web application specific VTKWebApp.view = view.GetRenderWindow() self.Application.GetObjectIdMap().SetActiveObject("VIEW", view.GetRenderWindow())
def _readFile(self, filename, color): # Takes filename as string and returns polyData extension = os.path.splitext(filename)[1] # Read PLY into vtkPoints if extension == ".ply": reader = vtk.vtkPLYReader() reader.SetFileName(filename) reader.Update() points = reader.GetOutput().GetPoints() vertices = vtk.vtkCellArray() for i in range(0, reader.GetOutput().GetNumberOfPoints()): vertices.InsertNextCell(1) vertices.InsertCellPoint(i) # Read TXT into vtkPoints elif extension == ".txt": textReader = vtk.vtkDelimitedTextReader() textReader.SetFileName(filename) textReader.SetFieldDelimiterCharacters('\t ') textReader.DetectNumericColumnsOn() textReader.Update() table = textReader.GetOutput() points = vtk.vtkPoints() vertices = vtk.vtkCellArray() for i in range(0, table.GetNumberOfRows()): points.InsertNextPoint( table.GetValue(i, 0).ToDouble(), table.GetValue(i, 1).ToDouble(), table.GetValue(i, 2).ToDouble()) vertices.InsertNextCell(1) vertices.InsertCellPoint(i) else: raise InputError("file must be ply or txt") # Add all generated data to polydata polydata = vtk.vtkPolyData() polydata.SetPoints(points) polydata.SetVerts(vertices) return polydata
mode = 3 lut = vtk.vtkLookupTable() lut.SetTableRange(0, 10) lut.SetHueRange(0, 0.333) lut.SetSaturationRange(0.9, 0.9) lut.SetValueRange(0.75, 0.75) lut.SetNumberOfColors(11) lut.Build() color_map = [] for i in range(lut.GetNumberOfTableValues()): color_map.append(lut.GetTableValue(i)) for i in range(lut.GetNumberOfTableValues()): lut.SetTableValue(i, color_map[lut.GetNumberOfTableValues() - 1 - i]) color_map.reverse() reader = vtk.vtkDelimitedTextReader() reader.SetFileName(EHRDataPath) reader.DetectNumericColumnsOn() reader.SetFieldDelimiterCharacters(',') reader.Update() rootTable = reader.GetOutput() feature = featureVector(EHRDataPath, mode) point_xyz, middle_points, frequency_count = pointCalculate( rootTable, feature) duration = durationCalculate(middle_points, feature, frequency_count) distance = distanceCalculate(point_xyz) #print(frequency_count) renderer = vtk.vtkRenderer() renderWindow = vtk.vtkRenderWindow()
import vtk import numpy as N from vtk.util import numpy_support as VN import time currGraph = vtk.vtkDirectedGraph() prevGraph = vtk.vtkDirectedGraph() reader = vtk.vtkDelimitedTextReader() reader.SetDetectNumericColumns(True) reader.SetHaveHeaders(True) reader.SetFileName('/Volumes/SciVis_LargeData/ArtMarkets/judicial/judicial.csv') reader.GetFieldDelimiterCharacters() reader.Update() table = reader.GetOutput() year = VN.vtk_to_numpy(table.GetColumnByName('year')) caseid = VN.vtk_to_numpy(table.GetColumnByName('caseid')) edges = vtk.vtkDelimitedTextReader() edges.DetectNumericColumnsOn() edges.SetFileName('/Volumes/SciVis_LargeData/ArtMarkets/judicial/allcites.txt') edges.SetFieldDelimiterCharacters(' ') edges.Update() edges_table = edges.GetOutput() start_node = VN.vtk_to_numpy(edges_table.GetColumn(0)) end_node = VN.vtk_to_numpy(edges_table.GetColumn(1)) # This array is the same length as the number of edges # and denotes the year in which the start node was decided
def vtkfile(): csvfile = './sample.csv' colors = vtk.vtkNamedColors() points_reader = vtk.vtkDelimitedTextReader() points_reader.SetFileName(csvfile) points_reader.DetectNumericColumnsOn() points_reader.SetFieldDelimiterCharacters(',') points_reader.SetHaveHeaders(True) table_points = vtk.vtkTableToPolyData() table_points.SetInputConnection(points_reader.GetOutputPort()) table_points.SetXColumn('CentroidX') table_points.SetYColumn('CentroidY') table_points.SetZColumn('CentroidZ') table_points.Update() points = table_points.GetOutput() points.GetPointData().SetActiveScalars('VelocityMagnitude') # range = points.GetPointData().GetScalars().GetRange() box = vtk.vtkImageData() box.SetDimensions([101, 101, 101]) gaussian_kernel = vtk.vtkGaussianKernel() gaussian_kernel.SetSharpness(2) gaussian_kernel.SetRadius(12) interpolator = vtk.vtkPointInterpolator() interpolator.SetInputData(box) interpolator.SetSourceData(points) interpolator.SetKernel(gaussian_kernel) mapper = vtk.vtkPolyDataMapper() mapper.SetInputConnection(interpolator.GetOutputPort()) # mapper.SetScalarRange(range) actor = vtk.vtkActor() actor.SetMapper(mapper) # point_mapper = vtk.vtkPointGaussianMapper() # point_mapper.SetInputData(points) # # point_mapper.SetScalarRange(range) # point_mapper.SetScaleFactor(0.6) # point_mapper.EmissiveOff() # point_mapper.SetSplatShaderCode( # "//VTK::Color::Impl\n" # "float dist = dot(offsetVCVSOutput.xy,offsetVCVSOutput.xy);\n" # "if (dist > 1.0) {\n" # " discard;\n" # "} else {\n" # " float scale = (1.0 - dist);\n" # " ambientColor *= scale;\n" # " diffuseColor *= scale;\n" # "}\n" # ) # # point_actor = vtk.vtkActor() # point_actor.SetMapper(point_mapper) renderer = vtk.vtkRenderer() renWin = vtk.vtkRenderWindow() renWin.AddRenderer(renderer) iren = vtk.vtkRenderWindowInteractor() iren.SetRenderWindow(renWin) renderer.AddActor(actor) # renderer.AddActor(point_actor) renderer.SetBackground(colors.GetColor3d("SlateGray")) renWin.SetSize(640, 480) renWin.SetWindowName('PointInterpolator') renderer.ResetCamera() renderer.GetActiveCamera().Elevation(-45) iren.Initialize() renWin.Render() iren.Start()
def test_table_init(tmpdir): """Save some delimited text to a file and read it""" filename = str(tmpdir.mkdir("tmpdir").join('tmp.%s' % 'csv')) nr, nc = 50, 3 arrays = np.random.rand(nr, nc) # Create from 2D array table = pyvista.Table(arrays) assert table.n_rows == nr assert table.n_columns == nc assert table.n_arrays == nc assert len(table.row_arrays) == nc for i in range(nc): assert np.allclose(arrays[:, i], table[i]) with pytest.raises(AssertionError): pyvista.Table(np.random.rand(100)) with pytest.raises(AssertionError): pyvista.Table(np.random.rand(100, 2, 3)) # create from dictionary array_dict = {} for i in range(nc): array_dict['foo{}'.format(i)] = arrays[:, i].copy() table = pyvista.Table(array_dict) assert table.n_rows == nr assert table.n_columns == nc assert len(table.row_arrays) == nc for i in range(nc): assert np.allclose(arrays[:, i], table['foo{}'.format(i)]) dataset = examples.load_hexbeam() array_dict = dataset.point_arrays table = pyvista.Table(array_dict) assert table.n_rows == dataset.n_points assert table.n_columns == len(array_dict) assert len(table.row_arrays) == len(array_dict) for name in table.keys(): assert np.allclose(dataset[name], table[name]) # Create from vtkTable object h = '\t'.join(['a{}'.format(i) for i in range(nc)]) np.savetxt(filename, arrays, delimiter='\t', header=h, comments='') reader = vtk.vtkDelimitedTextReader() reader.SetFileName(filename) reader.DetectNumericColumnsOn() reader.SetFieldDelimiterCharacters('\t') reader.SetHaveHeaders(True) reader.Update() # Test init table = pyvista.Table(reader.GetOutput(), deep=True) assert isinstance(table, vtk.vtkTable) assert isinstance(table, pyvista.Table) table = pyvista.Table(reader.GetOutput(), deep=False) assert isinstance(table, vtk.vtkTable) assert isinstance(table, pyvista.Table) # Test wrap table = pyvista.wrap(reader.GetOutput()) assert isinstance(table, vtk.vtkTable) assert isinstance(table, pyvista.Table) assert table.n_rows == nr assert table.n_columns == nc assert len(table.row_arrays) == nc for i in range(nc): assert np.allclose(arrays[:, i], table[i]) with pytest.raises(TypeError): pyvista.Table("foo") return
def initialize(self, VTKWebApp, args): dataid = args.id treedata = getDBdata(dataid) VTKWebApp.tree = treedata["tree"] VTKWebApp.table = dataid+ ".csv" # Create default pipeline (Only once for all the session) if not VTKWebApp.view: treeHeatmapItem = vtk.vtkTreeHeatmapItem() # read in a tree treeReader = vtk.vtkNewickTreeReader() treeReader.SetReadFromInputString(1) treeReader.SetInputString(VTKWebApp.tree) treeReader.Update() tree = treeReader.GetOutput() treeHeatmapItem.SetTree(tree) if (VTKWebApp.table != "none" and os.path.isfile(VTKWebApp.table)): # read in a table print("read table"+ VTKWebApp.table) tableReader = vtk.vtkDelimitedTextReader() tableReader.SetFileName(VTKWebApp.table) tableReader.SetHaveHeaders(1) tableReader.DetectNumericColumnsOn() tableReader.Update() table = tableReader.GetOutput() if (table): treeHeatmapItem.SetTable(table) # setup the window view = vtk.vtkContextView() view.GetRenderer().SetBackground(1,1,1) view.GetRenderWindow().SetSize(800,600) iren = view.GetInteractor() iren.SetRenderWindow(view.GetRenderWindow()) transformItem = vtk.vtkContextTransform() transformItem.AddItem(treeHeatmapItem) transformItem.SetInteractive(1) view.GetScene().AddItem(transformItem) view.GetRenderWindow().SetMultiSamples(0) iren.Initialize() view.GetRenderWindow().Render() # adjust zoom so the item nicely fills the screen itemSize = [0, 0] treeHeatmapItem.GetSize(itemSize) itemSize.append(0) transformItem.GetTransform().MultiplyPoint(itemSize, itemSize) newWidth = view.GetScene().GetSceneWidth() newHeight = view.GetScene().GetSceneHeight() pageWidth = newWidth pageHeight = newHeight sx = pageWidth / itemSize[0] sy = pageHeight / itemSize[1] if sy < sx: scale = sy; else: scale = sx; if scale > 1: scale = scale * 0.5 else: scale = scale * 0.9 transformItem.Scale(scale, scale) # center the item within the screen itemCenter = [0, 0] treeHeatmapItem.GetCenter(itemCenter) itemCenter.append(0) centerPt = vtk.vtkPoints2D() centerPt.InsertNextPoint(newWidth / 2.0, newHeight / 2.0) transformItem.GetTransform().InverseTransformPoints(centerPt, centerPt) sceneCenter = [0, 0] centerPt.GetPoint(0, sceneCenter) dx = -1 * (itemCenter[0] - sceneCenter[0]) dy = -1 * (itemCenter[1] - sceneCenter[1]) transformItem.Translate(dx, dy) # VTK Web application specific VTKWebApp.view = view.GetRenderWindow() self.Application.GetObjectIdMap().SetActiveObject("VIEW", view.GetRenderWindow())
def initialize(self, VTKWebApp, args): # Create default pipeline (Only once for all the session) if not VTKWebApp.view: baseURL = args.baseURL # support for overriding the base URL scriptDir = os.path.dirname(os.path.realpath(__file__)) configPath = scriptDir + "/baseURL.txt" if os.path.isfile(configPath): f = file(configPath, "r") baseURL = f.read().rstrip() f.close() # get our input data from romanesco r = requests.get(baseURL + args.tree1URI, verify=False) tree1JSON = r.json() tree1Str = tree1JSON["data"] r = requests.get(baseURL + args.tree2URI, verify=False) tree2JSON = r.json() tree2Str = tree2JSON["data"] r = requests.get(baseURL + args.tableURI, verify=False) tableJSON = r.json() tableStr = tableJSON["data"] # get the tree names (TODO: consider better ways to get this info) tree1LabelURI = args.tree1URI[0:args.tree1URI.find("romanesco")] r = requests.get(baseURL + tree1LabelURI, verify=False) tree1LabelJSON = r.json() tree1Label = tree1LabelJSON["name"] tree1Label = tree1Label[0:tree1Label.find(".")] tree2LabelURI = args.tree2URI[0:args.tree2URI.find("romanesco")] r = requests.get(baseURL + tree2LabelURI, verify=False) tree2LabelJSON = r.json() tree2Label = tree2LabelJSON["name"] tree2Label = tree2Label[0:tree2Label.find(".")] # convert our input data into deserialized VTK objects tree1Reader = vtk.vtkTreeReader() tree1Reader.ReadFromInputStringOn() tree1Reader.SetInputString(tree1Str, len(tree1Str)) tree1Reader.Update() tree1 = tree1Reader.GetOutput() tree2Reader = vtk.vtkTreeReader() tree2Reader.ReadFromInputStringOn() tree2Reader.SetInputString(tree2Str, len(tree2Str)) tree2Reader.Update() tree2 = tree2Reader.GetOutput() tableReader = vtk.vtkDelimitedTextReader() tableReader.ReadFromInputStringOn() tableReader.SetInputString(tableStr, len(tableStr)) tableReader.SetHaveHeaders(True) tableReader.DetectNumericColumnsOn() tableReader.ForceDoubleOn() table = tableReader.GetOutput() tableReader.Update() # create our visualization item and load the data into it. tanglegram = vtk.vtkTanglegramItem() tanglegram.SetTree1(tree1) tanglegram.SetTree2(tree2) tanglegram.SetTable(table) tanglegram.SetTree1Label(tree1Label) tanglegram.SetTree2Label(tree2Label) tanglegram.SetCorrespondenceLineWidth(4.0) tanglegram.SetTreeLineWidth(2.0) # setup the window view = vtk.vtkContextView() view.GetRenderWindow().SetSize(int(args.width), int(args.height)) view.GetRenderer().SetBackground(1, 1, 1) iren = view.GetInteractor() iren.SetRenderWindow(view.GetRenderWindow()) transformItem = vtk.vtkContextTransform() transformItem.AddItem(tanglegram) transformItem.SetInteractive(1) view.GetScene().AddItem(transformItem) view.GetRenderWindow().SetMultiSamples(0) iren.Initialize() view.GetRenderWindow().Render() # VTK Web application specific VTKWebApp.view = view.GetRenderWindow() self.Application.GetObjectIdMap().SetActiveObject( "VIEW", view.GetRenderWindow())
def main(): input_filename = get_program_parameters() reader = vtk.vtkDelimitedTextReader() reader.SetFileName(input_filename) reader.DetectNumericColumnsOn() reader.SetFieldDelimiterCharacters(" ") reader.Update() table = reader.GetOutput() points = vtk.vtkPoints() normals = vtk.vtkDoubleArray() normals.SetNumberOfComponents(3) # 3 d normals(ie x, y, z) print("Table has", table.GetNumberOfRows(), "rows.") print("Table has", table.GetNumberOfColumns(), "columns.") for i in range(0, table.GetNumberOfRows()): print("x:", table.GetValue(i, 0).ToDouble(), "y:", (table.GetValue(i, 1)).ToDouble(), "z:", (table.GetValue(i, 2)).ToDouble()) points.InsertNextPoint( table.GetValue(i, 0).ToDouble(), table.GetValue(i, 1).ToDouble(), table.GetValue(i, 2).ToDouble()) n = [0.0, 0.0, 0.0] n[0] = (table.GetValue(i, 3)).ToDouble() n[1] = (table.GetValue(i, 4)).ToDouble() n[2] = (table.GetValue(i, 5)).ToDouble() print("n:", n[0], n[1], n[2]) normals.InsertNextTuple(n) print("There are", points.GetNumberOfPoints(), "points.") polydata = vtk.vtkPolyData() polydata.SetPoints(points) polydata.GetPointData().SetNormals(normals) glyph_filter = vtk.vtkVertexGlyphFilter() glyph_filter.SetInputData(polydata) glyph_filter.Update() # Visualize colors = vtk.vtkNamedColors() mapper = vtk.vtkPolyDataMapper() mapper.SetInputConnection(glyph_filter.GetOutputPort()) actor = vtk.vtkActor() actor.SetMapper(mapper) actor.GetProperty().SetPointSize(30) actor.GetProperty().SetColor(colors.GetColor3d("Tomato")) renderer = vtk.vtkRenderer() render_window = vtk.vtkRenderWindow() render_window.AddRenderer(renderer) render_window_interactor = vtk.vtkRenderWindowInteractor() render_window_interactor.SetRenderWindow(render_window) renderer.AddActor(actor) renderer.SetBackground(colors.GetColor3d("Mint")) render_window.Render() render_window_interactor.Start()
import os import sys import vtk from vtk.util.misc import vtkGetDataRoot from vtk.util.misc import vtkGetTempDir VTK_DATA_ROOT = vtkGetDataRoot() VTK_TEMP_DIR = vtkGetTempDir() file0 = VTK_TEMP_DIR + '/idFile0.vtt' file1 = VTK_TEMP_DIR + '/idFile1.vtt' file2 = VTK_TEMP_DIR + '/idFile2.vtt' # read in some poly data csvReader = vtk.vtkDelimitedTextReader() csvReader.SetFileName(VTK_DATA_ROOT + "/Data/vehicle_data.csv") csvReader.DetectNumericColumnsOn(); csvReader.SetHaveHeaders(True); csvReader.Update() # write various versions xmlTableWriter = vtk.vtkXMLTableWriter() xmlTableWriter.SetFileName(file0) xmlTableWriter.SetDataModeToAscii() xmlTableWriter.SetInputConnection(csvReader.GetOutputPort()) xmlTableWriter.Write() xmlTableWriter.SetFileName(file1) xmlTableWriter.SetInputConnection(csvReader.GetOutputPort()) xmlTableWriter.SetDataModeToAppended()
def main(): points_fn, probe_fn = get_program_parameters() colors = vtk.vtkNamedColors() points_reader = vtk.vtkDelimitedTextReader() points_reader.SetFileName(points_fn) points_reader.DetectNumericColumnsOn() points_reader.SetFieldDelimiterCharacters('\t') points_reader.SetHaveHeaders(True) table_points = vtk.vtkTableToPolyData() table_points.SetInputConnection(points_reader.GetOutputPort()) table_points.SetXColumn('x') table_points.SetYColumn('y') table_points.SetZColumn('z') table_points.Update() points = table_points.GetOutput() points.GetPointData().SetActiveScalars('val') range = points.GetPointData().GetScalars().GetRange() # Read a probe surface stl_reader = vtk.vtkSTLReader() stl_reader.SetFileName(probe_fn) stl_reader.Update() surface = stl_reader.GetOutput() bounds = np.array(surface.GetBounds()) dims = np.array([101, 101, 101]) box = vtk.vtkImageData() box.SetDimensions(dims) box.SetSpacing((bounds[1::2] - bounds[:-1:2]) / (dims - 1)) box.SetOrigin(bounds[::2]) # Gaussian kernel gaussian_kernel = vtk.vtkGaussianKernel() gaussian_kernel.SetSharpness(2) gaussian_kernel.SetRadius(12) interpolator = vtk.vtkPointInterpolator() interpolator.SetInputData(box) interpolator.SetSourceData(points) interpolator.SetKernel(gaussian_kernel) resample = vtk.vtkResampleWithDataSet() resample.SetInputData(surface) resample.SetSourceConnection(interpolator.GetOutputPort()) mapper = vtk.vtkPolyDataMapper() mapper.SetInputConnection(resample.GetOutputPort()) mapper.SetScalarRange(range) actor = vtk.vtkActor() actor.SetMapper(mapper) point_mapper = vtk.vtkPointGaussianMapper() point_mapper.SetInputData(points) point_mapper.SetScalarRange(range) point_mapper.SetScaleFactor(0.6) point_mapper.EmissiveOff() point_mapper.SetSplatShaderCode( "//VTK::Color::Impl\n" "float dist = dot(offsetVCVSOutput.xy,offsetVCVSOutput.xy);\n" "if (dist > 1.0) {\n" " discard;\n" "} else {\n" " float scale = (1.0 - dist);\n" " ambientColor *= scale;\n" " diffuseColor *= scale;\n" "}\n") point_actor = vtk.vtkActor() point_actor.SetMapper(point_mapper) renderer = vtk.vtkRenderer() renWin = vtk.vtkRenderWindow() renWin.AddRenderer(renderer) iren = vtk.vtkRenderWindowInteractor() iren.SetRenderWindow(renWin) renderer.AddActor(actor) renderer.AddActor(point_actor) renderer.SetBackground(colors.GetColor3d('SlateGray')) renWin.SetSize(640, 480) renWin.SetWindowName('PointInterpolator') renderer.ResetCamera() renderer.GetActiveCamera().Elevation(-45) iren.Initialize() renWin.Render() iren.Start()