|
1 | | -# fluidize-python |
| 1 | +# Fluidize |
2 | 2 |
|
3 | | -[](https://img.shields.io/github/v/release/fluidize_inc/fluidize-python) |
4 | | -[](https://github.com/fluidize_inc/fluidize-python/actions/workflows/main.yml?query=branch%3Amain) |
5 | | -[](https://codecov.io/gh/fluidize_inc/fluidize-python) |
6 | | -[](https://img.shields.io/github/commit-activity/m/fluidize_inc/fluidize-python) |
7 | | -[](https://img.shields.io/github/license/fluidize_inc/fluidize-python) |
| 3 | +[](https://python.org) |
| 4 | +[](https://pypi.org/project/fluidize/) |
| 5 | +[](LICENSE) |
| 6 | +[](https://Fluidize-Inc.github.io/fluidize-python/) |
8 | 7 |
|
9 | | -Python package for automatic generation of scientific computing software pipelines. |
| 8 | +### An Open Framework for AI-Driven Scientific Computing |
10 | 9 |
|
11 | | -- **Github repository**: <https://github.com/fluidize_inc/fluidize-python/> |
12 | | -- **Documentation** <https://fluidize_inc.github.io/fluidize-python/> |
| 10 | + **fluidize-python ** is a library for building modular, reproducible scientific computing pipelines. It provides a unified interface to a wide range of physical simulation tools, eliminating the need to navigate the inconsistent, incomplete instructions that often vary from tool to tool. |
13 | 11 |
|
14 | | -## Getting started with your project |
| 12 | +This library marks our first step toward AI-orchestrated scientific computing. By standardizing tools and practices within our framework, AI agents can automatically build, configure, and execute computational pipelines across domains and simulation platforms. Our goal is to improve today’s simulation tools so AI can assist researchers and scientists in accelerating the pace of innovation and scientific discovery. |
15 | 13 |
|
16 | | -### 1. Create a New Repository |
| 14 | +## Quick Start |
17 | 15 |
|
18 | | -First, create a repository on GitHub with the same name as this project, and then run the following commands: |
| 16 | +## Installation |
19 | 17 |
|
20 | | -```bash |
21 | | -git init -b main |
22 | | -git add . |
23 | | -git commit -m "init commit" |
24 | | -git remote add origin git@github.com:fluidize_inc/fluidize-python.git |
25 | | -git push -u origin main |
26 | | -``` |
| 18 | +### Prerequesites: |
| 19 | + |
| 20 | +- Python 3.9+ |
| 21 | +- Docker Desktop (for local execution). Download and install Docker Desktop from https://docs.docker.com/desktop/. |
| 22 | + |
| 23 | + After installation, verify with: |
| 24 | + ```bash |
| 25 | + docker --version |
| 26 | + ``` |
27 | 27 |
|
28 | | -### 2. Set Up Your Development Environment |
29 | 28 |
|
30 | | -Then, install the environment and the pre-commit hooks with |
31 | 29 |
|
| 30 | +### From PyPI |
32 | 31 | ```bash |
| 32 | +pip install fluidize |
| 33 | +``` |
| 34 | + |
| 35 | +### From Source |
| 36 | +```bash |
| 37 | +git clone https://github.com/Fluidize-Inc/fluidize-python.git |
| 38 | +cd fluidize-python |
33 | 39 | make install |
34 | 40 | ``` |
35 | 41 |
|
36 | | -This will also generate your `uv.lock` file |
| 42 | +## Run Examples |
37 | 43 |
|
38 | | -### 3. Run the pre-commit hooks |
| 44 | +Example projects are located in this folder: [example/](example/) |
39 | 45 |
|
40 | | -Initially, the CI/CD pipeline might be failing due to formatting issues. To resolve those run: |
41 | 46 |
|
42 | | -```bash |
43 | | -uv run pre-commit run -a |
44 | | -``` |
| 47 | +## The Problem |
45 | 48 |
|
46 | | -### 4. Commit the changes |
| 49 | +Students and researchers face significant barriers when working with different simulation tools: |
47 | 50 |
|
48 | | -Lastly, commit the changes made by the two steps above to your repository. |
| 51 | +- **Setup overhead** – Installing and configuring someone else’s research code can take an enormous amount of time. |
| 52 | +- **Diverse architectures** – Scientific software is built using a wide range of tools and architectures, each with its own complexities and quirks. |
| 53 | +- **Time drain** – Good software engineering practices are important, but in practice they often slow down the process of getting immediate results. |
| 54 | +- **Reproducibility issues** – Sharing and reproducing experiments is frequently cumbersome and error-prone. |
| 55 | +- **Scaling friction** – Moving from a local prototype to a cloud environment or dedicated compute cluster can be slow and difficult. |
49 | 56 |
|
50 | | -```bash |
51 | | -git add . |
52 | | -git commit -m 'Fix formatting issues' |
53 | | -git push origin main |
54 | | -``` |
| 57 | +## The Solution |
| 58 | + |
| 59 | +Fluidize provides a standardized wrapper that turns complex scientific software into modular components. This makes it possible to: |
| 60 | + |
| 61 | +- **Expose a single API endpoint** for any scientific computing software—any language, any tool, any complexity. |
| 62 | +- **Easily connect** tools that were never designed to work together. |
| 63 | +- **Adopt consistent I/O patterns** across all simulations. |
| 64 | + |
| 65 | +All of this works with **minimal or no changes** to the existing codebase, allowing our framework to scale effortlessly to any repository. |
| 66 | + |
| 67 | +## Architecture |
| 68 | + |
| 69 | +### Nodes |
| 70 | +The foundational building blocks of Fluidize. Each node encapsulates a computational unit with: |
| 71 | + |
| 72 | +| File | Purpose | |
| 73 | +|------|---------| |
| 74 | +| `properties.yaml` | Container configuration, working directory, and output paths | |
| 75 | +| `metadata.yaml` | Node description, version, authors, and repository URL | |
| 76 | +| `Dockerfile` | Environment setup and dependency installation | |
| 77 | +| `parameters.json` | Tunable parameters for experiments | |
| 78 | +| `main.sh` | Execution script for the source code | |
| 79 | +| `source/` | Original scientific computing code | |
| 80 | + |
| 81 | +**Key Features:** |
| 82 | +- Predictable input/output paths |
| 83 | +- Modular and extensible design |
| 84 | +- No source code modification required |
| 85 | +- Automated node generation support (Public launch soon) |
| 86 | + |
| 87 | +### Projects |
| 88 | +The project currently hosts a simple layer for composing and managing multiple nodes: |
| 89 | + |
| 90 | +| File | Purpose | |
| 91 | +|------|---------| |
| 92 | +| `graph.json` | Node connectivity and data flow definition | |
| 93 | +| `metadata.yaml` | Project description and configuration | |
| 94 | + |
| 95 | + |
| 96 | +Docker engine is used for local execution. With API calls, we use the Kubernetes engine with Argo Workflow Manager. |
| 97 | + |
| 98 | + |
| 99 | + |
| 100 | + |
| 101 | +## Documentation |
| 102 | + |
| 103 | +Comprehensive documentation is available at [https://Fluidize-Inc.github.io/fluidize-python/](https://Fluidize-Inc.github.io/fluidize-python/) |
| 104 | + |
| 105 | +- [Getting Started Guide](https://Fluidize-Inc.github.io/fluidize-python/getting-started) |
| 106 | +- [Node Creation Tutorial](https://Fluidize-Inc.github.io/fluidize-python/nodes) |
| 107 | +- [Project Orchestration](https://Fluidize-Inc.github.io/fluidize-python/projects) |
| 108 | +- [API Reference](https://Fluidize-Inc.github.io/fluidize-python/api) |
| 109 | + |
| 110 | +## Contributing |
| 111 | + |
| 112 | +We would love contributions and collaborations! Please see our [Contributing Guide](CONTRIBUTING.md) for details. |
55 | 113 |
|
56 | | -You are now ready to start development on your project! |
57 | | -The CI/CD pipeline will be triggered when you open a pull request, merge to main, or when you create a new release. |
| 114 | +Also - we would love to help streamline your research pipeline! Please reach out at [henry@fluidize.ai](mailto:henry@fluidize.ai) or [henrybae@g.harvard.edu](mailto:henrybae@g.harvard.edu). |
58 | 115 |
|
59 | | -To finalize the set-up for publishing to PyPI, see [here](https://fpgmaas.github.io/cookiecutter-uv/features/publishing/#set-up-for-pypi). |
60 | | -For activating the automatic documentation with MkDocs, see [here](https://fpgmaas.github.io/cookiecutter-uv/features/mkdocs/#enabling-the-documentation-on-github). |
61 | | -To enable the code coverage reports, see [here](https://fpgmaas.github.io/cookiecutter-uv/features/codecov/). |
| 116 | +## Roadmap |
62 | 117 |
|
63 | | -## Releasing a new version |
| 118 | +This is just the beginning of what we think is a really exciting new era for how we learn science and do research. We will be releasing the following tools built from this framework: |
64 | 119 |
|
65 | | -- Create an API Token on [PyPI](https://pypi.org/). |
66 | | -- Add the API Token to your projects secrets with the name `PYPI_TOKEN` by visiting [this page](https://github.com/fluidize_inc/fluidize-python/settings/secrets/actions/new). |
67 | | -- Create a [new release](https://github.com/fluidize_inc/fluidize-python/releases/new) on Github. |
68 | | -- Create a new tag in the form `*.*.*`. |
| 120 | +- **Fluidize Playground**: Automatically explore and build simulation pipelines with natural language. |
| 121 | +- **Auto-Fluidize**: Automatically convert obscure scientific software to run anywhere |
69 | 122 |
|
70 | | -For more details, see [here](https://fpgmaas.github.io/cookiecutter-uv/features/cicd/#how-to-trigger-a-release). |
71 | 123 |
|
72 | | ---- |
| 124 | +## License |
73 | 125 |
|
74 | | -Repository initiated with [fpgmaas/cookiecutter-uv](https://github.com/fpgmaas/cookiecutter-uv). |
| 126 | +This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details. |
0 commit comments