Comments (2)
Thank you for submitting the issue @awoimbee! You bring up an important point!
To start, for context, Vtk
is a barebones model/type for representing all possible representations of a vtk file (XML or Legacy).
We could for instance represent different vtk files (e.g. pvtp, vtp, vtu, pvtu, vtk (legacy)) with different types, but this would make it difficult for users to use the same code to access the same data from different formats. This is roughly why the "API" seems complex.
I'll try to address each of your questions given the context above:
why do I have to check that my Attribute is a DataArray ? I'm working on a VTP file (that only supports DataArray).
because in the legacy format it can also be a Field
I don't understand the pieces vector of DataSet, aren't VTP files always single element ?
In general VTK files in XML format (e.g. VTP) can be distributed into multiple pieces, and loaded on-demand. This is why pieces is a Vec.
Do you have any plans to simplify the API ?
If you mean simplify the Vtk data structure, then definitely no because this will remove some of the functionality. However I am open to adding a simpler access API on top of Vtk
to make it easier to use...
Are you open to PRs ?
I am definitely open to PRs adding more ergonomic APIs on top of this model.
I think your proposed API can easily be implemented on top of the vtkio and the Vtk
type, but I am happy to accept PRs directly to vtkio as well.
Are there reasons to make the API so complex ?
Think of it this way. The "API" on top of Vtk is minimal, this is deliberate because different use cases may require different access patterns, and so adding an actual API would be somewhat opinionated. With that said, of course, especially with Vtk, there are the most common use cases, and I am happy to support those directly with an API in vtkio
under a feature flag.
PS:
I also don't use vtkio
directly when working on projects. I have another crate called meshx
that uses vtkio
along with other file formats to load and save mesh data with attributes.
from vtkio.
I've never heard of pyvista until now, so thanks for bringing it up.
I glanced at it and noticed that pyvista is actually a wrapper for Vtk. Vtk actually has its own python api but it is possible that it may not be very user friendly (i don't know since I haven't really used it much).
Maybe it's not obvious from the docs, but vtkio
has no dependency on the original vtk C++ library, it implements the serializer and deserializer for vtk files directly in Rust, and it tries to be as complete as possible (AFAIR we support most features except for direct binary (not base64) embedding inside XML files, which is a limitation of the quick-xml library we use).
So that is to say that vtkio
is meant to be a low level library. I think building a more comprehensive toolset like pyvista on top of it would be of great value for the scientific community using Rust. Although, like I said above, I am also happy to accept PRs for a more ergonomic API directly in vtkio. Something similar to what you proposed with "as_polydata" and "as_map" seems reasonable to me, although I would prefer "into_" prefixes for more expensive conversions that are not just views into the underlying data.
from vtkio.
Related Issues (20)
- Improve version handling
- Update references to vtk file format docs
- VTKIO Real-World Video Tutorial
- Extracting Data HOT 2
- creating a Circle approximated by a BezierCurve HOT 7
- providing examples for each CellType HOT 4
- Clarify the connection between xml VTK file extensions and VTKFile tag type
- Unable to import various VTK and VTU file types HOT 10
- The Paraview import issue for exported compressed VTU and VTI files HOT 6
- ParaView cannot read XML vtp files whose `connectivity` and `offsets` are `UInt64`. HOT 2
- Future compatibility for nom version 3 HOT 2
- Error importing VTU with `<AppendedData encoding="raw">` block HOT 3
- Support for CRLF line endings in legacy VTK files
- unresolved imports `vtkio::export_ascii`, `vtkio::import` HOT 1
- Request an example of constructing a VTK object containing point/cell data in Legacy style HOT 2
- Exported data for point cloud is not readable by Paraview 5.11 HOT 3
- Add configuration options for exporting files
- Improve documentation for creating point clouds
- `0.7.0` is not available on crates.io
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from vtkio.