Metadata-Version: 2.4
Name: neuflow
Version: 0.1.3
Summary: The pytorch implementation of the paper 'EPINF: Efficient Physics Informed Fluid Flow Reconstruction With Spatial and Temporal Priors'
Author-email: Xayah Hina <ycxiang14sep@gmail.com>
License-Expression: MPL-2.0
Project-URL: Homepage, https://github.com/IME-lab-Hokudai/EPINF-NeuFlow
Classifier: Programming Language :: Python :: 3
Classifier: Operating System :: OS Independent
Requires-Python: >=3.11
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: lightning
Requires-Dist: lightning[extra]
Requires-Dist: dearpygui
Requires-Dist: tyro
Requires-Dist: matplotlib
Requires-Dist: av
Requires-Dist: huggingface_hub
Requires-Dist: opencv-python
Requires-Dist: phiflow
Dynamic: license-file

# EPINF-NeuFlow

The pytorch implementation of the paper "EPINF: Efficient Physics Informed Neural Reconstruction of Diverse Fluid Dynamics from Sparse Observations"

This repo is also a pypi package [NeuFlow](https://pypi.org/project/neuflow) that can be installed via pip:
```shell
python -m pip install neuflow
```

## Environment Setup

### System Requirements

- System
  - Windows 11 (Fully Tested)
  - Ubuntu 24.04.2 (Fully Tested)
- Python: 3.13
- PyTorch: 2.7.1 + CUDA 12.8

### Pip Packages

```shell
python -m pip install --upgrade pip setuptools wheel
python -m pip install torch torchvision --index-url https://download.pytorch.org/whl/cu128
python -m pip install lightning lightning[extra] dearpygui tyro matplotlib av huggingface_hub wandb opencv-python phiflow

set TCNN_CUDA_ARCHITECTURES=86
python -m pip install git+https://github.com/NVlabs/tiny-cuda-nn/#subdirectory=bindings/torch

python -m pip install ./cuda_extensions/freqencoder ./cuda_extensions/gridencoder ./cuda_extensions/raymarching ./cuda_extensions/shencoder
```
For Windows user, open `X64 Native Tools Command Prompt for VS 2022` then activate your python venv if any, and set `TCNN_CUDA_ARCHITECTURES` to your GPU architecture.

|    **GPU**    | H100 | 40X0 | 30X0 | A100 | 20X0 | TITAN V / V100 | 10X0 / TITAN Xp | 9X0 | K80 |
|:---------:|:----:|:----:|:----:|:----:|:----:|:----------------:|:-----------------:|:---:|:---:|
| **CUDA arch** |  `90`  |  `89`  |  `86`  |  `80`  |  `75`  |        `70`        |        `61`         | `52`  | `37`  |

### Optional Packages

#### [triton-windows](https://github.com/woct0rdho/triton-windows) - Activate `torch.compile` for Windows

```shell
python -m pip install -U "triton-windows<3.3"
```

### Wandb Logger
To use the Wandb logger, you need to set up your [Wandb account](https://wandb.ai/) and login. You can do this by running the following command:

```shell
wandb login
```

## Datasets

We provide two datasets for training and testing the model:

- the NeRF-Synthetic is available
  at [Hugging Face - nerf_synthetic](https://huggingface.co/datasets/XayahHina/nerf_synthetic).
- The PI-Neuflow dataset is available
  at [Hugging Face - PI-NeuFlow](https://huggingface.co/datasets/XayahHina/PI-NeuFlow).

ALL datasets are downloaded **_AUTOMATICALLY_** when running the training script.

## Training
```shell
python -O app.py ngp --gui
python -O app.py epinf --dataset.dataset=sphere --export_val_map --renderer.num_sample_rays=1024 --renderer.num_depth_samples=192 --gui
python -O app.py epinf --dataset.downscale=2 --dataset.dataset=scalar --renderer.num_sample_rays=1024 --renderer.num_depth_samples=192 --export_val_map --gui
python -O app.py epinf --dataset.dataset=fireplace --dataset.downscale=2 --export_val_map --export_val_map --gui
```
