Metadata-Version: 2.1
Name: dash-vtk
Version: 0.0.2
Summary: React based declarative usage of vtk.js for Dash
Home-page: https://github.com/plotly/dash-vtk
Author: Kitware Inc <sebastien.jourdain@kitware.com> and Plotly Technologies <xinghan@plot.ly>
License: MIT
Platform: UNKNOWN
Classifier: Environment :: Web Environment
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Education
Classifier: Intended Audience :: Financial and Insurance Industry
Classifier: Intended Audience :: Healthcare Industry
Classifier: Intended Audience :: Manufacturing
Classifier: Intended Audience :: Science/Research
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
Classifier: Topic :: Database :: Front-Ends
Classifier: Topic :: Scientific/Engineering :: Visualization
Classifier: Topic :: Software Development :: Libraries :: Application Frameworks
Description-Content-Type: text/markdown
Requires-Dist: dash

# Dash VTK

Dash VTK lets you integrate the `vtk.js` visualization pipeline directly into your Dash app. It is powered by [`react-vtk-js`](https://github.com/Kitware/react-vtk-js/).

![A demo of dash-vtk in action](./docs/images/vtk-demo.gif)

## Getting started

### Quickstart (Python)

First, install the library through `pip`:
```
pip install dash-vtk
```

Then, create a file called `app.py` and add the following example:

```python
import dash
import dash_vtk
import dash_html_components as html

app = dash.Dash(__name__)

app.layout = html.Div(
    style={"width": "100%", "height": "calc(100vh - 16px)"},
    children=dash_vtk.View([
        dash_vtk.GeometryRepresentation([
            dash_vtk.Algorithm(
                vtkClass="vtkConeSource",
                state={"resolution": 64, "capping": False},
            )
        ]),
    ]),
)

if __name__ == "__main__":
    app.run_server(debug=True)
```

Now, simply run the app:
```
python app.py
```

For a more detailed example, see `usage.py`.

### Quickstart (R)

First, install the package from GitHub (the package is not yet available via CRAN):
```
remotes::install_github("plotly/dash-vtk")
```

then, create your component and add it to your layout:

```r
library(dash)
library(dashVtk)
library(dashHtmlComponents)

app <- Dash$new()

app$layout(htmlDiv(
    style = list("width" = "100%", "height" = "calc(100vh - 16px)"),
    children = vtkView(list(
        vtkGeometryRepresentation(
            vtkAlgorithm(
                vtkClass = "vtkConeSource",
                state = list("resolution" = 64, "capping" = FALSE),
            )
        )
    ))
))

app$run_server()
```
## Contributing

See [docs/CONTRIBUTING.md](./docs/CONTRIBUTING.md) to learn about:

* Setting up the environment
* Coding Style
* Code quality & design
* Tests
* Publishing


## Running the demos

First clone the project (replace `<name>` with the desired demo):

``` bash
git clone https://github.com/plotly/dash-vtk.git
cd dash-vtk/demos/<name>/
```

Create a venv and install the requirements:
```bash
python -m venv venv
source venv/bin/activate  # for Windows, use venv\Scripts\activate.bat
pip install -e ../../  # IMPORTANT! If you skip you will get the pip version of dash-vtk
pip install -r requirements.txt
```

Run the demo:
```bash
python app.py
```

## References

You can find the complete API reference in [`docs/REFERENCES.md`](./docs/REFERENCES.md) for each of the following components:
- [Algorithm](./docs/REFERENCES.md#Algorithm)
- [Calculator](./docs/REFERENCES.md#Calculator)
- [CellData](./docs/REFERENCES.md#CellData)
- [DataArray](./docs/REFERENCES.md#DataArray)
- [FieldData](./docs/REFERENCES.md#FieldData)
- [GeometryRepresentation](./docs/REFERENCES.md#GeometryRepresentation)
- [ImageData](./docs/REFERENCES.md#ImageData)
- [PointCloudRepresentation](./docs/REFERENCES.md#PointCloudRepresentation)
- [PointData](./docs/REFERENCES.md#PointData)
- [PolyData](./docs/REFERENCES.md#PolyData)
- [Reader](./docs/REFERENCES.md#Reader)
- [ShareDataSet](./docs/REFERENCES.md#ShareDataSet)
- [SliceRepresentation](./docs/REFERENCES.md#SliceRepresentation)
- [View](./docs/REFERENCES.md#View)
- [VolumeController](./docs/REFERENCES.md#VolumeController)
- [VolumeDataRepresentation](./docs/REFERENCES.md#VolumeDataRepresentation)
- [VolumeRepresentation](./docs/REFERENCES.md#VolumeRepresentation)


## Demos

### Usage for `dash_vtk.Algorithm`

* [Code](./demos/usage-algorithm)
* Online Demo (coming soon)

![A demo of the usage-algorithm app](demos/usage-algorithm/demo.jpg)

### Point Cloud with PyVista

* [Code](./demos/pyvista-point-cloud)
* Online Demo (coming soon)

![A demo of the pyvista-point-cloud app](demos/pyvista-point-cloud/demo.jpg)


### Terrain deformation using PyVista and dash-vtk

* [Code](./demos/pyvista-terrain-following-mesh)
* Online Demo (coming soon)

![A demo of the pyvista-terrain-following-mesh app](demos/pyvista-terrain-following-mesh/demo.jpg)


### Volume Rendering

* [Code](./demos/volume-rendering)
* Online Demo (coming soon)

![A demo of the volume-rendering app](demos/volume-rendering/demo.jpg)

### VTK for data processing and dash-vtk for rendering

* [Code](./demos/usage-vtk-cfd)
* Online Demo (coming soon)

![A demo of the usage-vtk-cfd app](demos/usage-vtk-cfd/demo.jpg)

### Synthetic Volume Rendering

* [Code](./demos/synthetic-volume-rendering)
* Online Demo (coming soon)

![A demo of the synthetic-volume-rendering app](demos/synthetic-volume-rendering/demo.jpg)


