|
| 1 | +# Fluidize |
| 2 | + |
| 3 | +[](https://python.org) |
| 4 | +[](https://pypi.org/project/fluidize/) |
| 5 | +[](LICENSE) |
| 6 | +[](https://Fluidize-Inc.github.io/fluidize-python/) |
| 7 | + |
| 8 | + |
| 9 | +**Open Foundation for AI-Driven Scientific Computing** |
| 10 | + |
| 11 | +Fluidize library provides the foundational types and abstractions for building and executing AI-orchestrated scientific computing pipelines. This allows agents to automatically orchestrate, configure, and iterate through computational pipeline with minimal prompting. |
| 12 | + |
| 13 | +Fluidize is a Python library that establishes a standard for AI-orchestrated scientific computing. With this common framework, agents can automatically build, configure, and run computational pipelines across different domains and platforms. |
| 14 | + |
| 15 | + |
| 16 | +**The Problem** |
| 17 | + |
| 18 | +Students and researchers face significant barriers while translating their ideas into production ready pipelines: |
| 19 | + |
| 20 | +- |
| 21 | +- Time spent on software engineering instead of research |
| 22 | + |
| 23 | + |
| 24 | + |
| 25 | +**Solution** |
| 26 | + |
| 27 | +We devised a wrapper |
| 28 | + |
| 29 | + |
| 30 | +Here are the building blocks. |
| 31 | + |
| 32 | + |
| 33 | +Nodes: These are the foundational building blocks for Fluidize. It comes with the minimal set of information to run the simulation with no required modification for the source code itself. It is modular and easily easily extensible. |
| 34 | + |
| 35 | +- Consistent and predictable input and output path for all simulations |
| 36 | +- An arbitrary complicated scientific computing software to be be run with a single API endpoint. |
| 37 | + |
| 38 | + |
| 39 | + |
| 40 | + Here are the information specified on the nodes (More Could be put in documentation?) |
| 41 | + |
| 42 | +- Properties.yaml - This tells the container image link, the working directory for the simulation running in the container, and where the output path is. |
| 43 | + |
| 44 | +- Metadata.yaml - This provides more context on what the node is, including description, version, authors, and the repository URL it came from. |
| 45 | + |
| 46 | +- Dockerfile - This provides the setup instructions for simulation runs |
| 47 | + |
| 48 | +- Parameters.json - This is where you put your parameters you would like to tune during your experiments. |
| 49 | + |
| 50 | +- main.sh - This is the script that executes your source code. |
| 51 | + |
| 52 | +- source/ - This is where the source code is. |
| 53 | + |
| 54 | +The good news is that we can automate the generation of these nodes. |
| 55 | + |
| 56 | +Projects: Projects are a way of orchestrating nodes. |
| 57 | + |
| 58 | +- graph.json - Graph specifiying how nodes are connected. It allows orchestration of generated nodes. |
| 59 | +- metadata.yaml - This provides more context on what the project does. |
| 60 | + |
| 61 | +More information on each of these files can be found in the documentation. |
| 62 | + |
| 63 | + |
| 64 | + |
| 65 | + |
| 66 | + |
| 67 | + |
| 68 | + |
| 69 | + |
| 70 | + |
| 71 | + |
| 72 | + |
| 73 | + |
| 74 | +--- |
| 75 | + |
| 76 | +## Getting Started |
| 77 | + |
| 78 | +### Requirements |
| 79 | + |
| 80 | +- Python 3.9+ |
| 81 | +- Docker Desktop (for local execution) |
| 82 | + Download and install Docker Desktop (version 20.10+) from https://docs.docker.com/desktop/. |
| 83 | + After installation, verify with: |
| 84 | + ```bash |
| 85 | + docker --version |
| 86 | + ``` |
| 87 | + Ensure the Docker daemon is running before using Fluidize. |
| 88 | + |
| 89 | +### Install from PyPI |
| 90 | + |
| 91 | +```bash |
| 92 | +pip install fluidize |
| 93 | +``` |
| 94 | + |
| 95 | +### Development Installation |
| 96 | + |
| 97 | +```bash |
| 98 | +git clone https://github.com/Fluidize-Inc/fluidize-python.git |
| 99 | +cd fluidize-python |
| 100 | +make install |
| 101 | +``` |
| 102 | + |
| 103 | +--- |
| 104 | + |
| 105 | +### Basic Usage |
| 106 | + |
| 107 | +```python |
| 108 | +from fluidize import FluidizeClient |
| 109 | + |
| 110 | +client = FluidizeClient() |
| 111 | + |
| 112 | +# Create a new project |
| 113 | +project = client.projects.create(name="My Project") |
| 114 | + |
| 115 | +# Load a project |
| 116 | +loaded_project = client.projects.get(project_id=project.id) |
| 117 | + |
| 118 | +# Run Project |
| 119 | +loaded_project.run.run_flow() |
| 120 | + |
| 121 | +``` |
| 122 | + |
| 123 | +--- |
| 124 | + |
| 125 | + |
| 126 | +## 📚 Documentation |
| 127 | + |
| 128 | +- **[API Documentation](https://Fluidize-Inc.github.io/fluidize-python/)** - Complete API reference |
| 129 | +- **[Interactive Demo](utils/fluidize_demo.ipynb)** - Jupyter notebook walkthrough |
| 130 | +- **[Examples](examples/)** - Examples |
| 131 | + |
| 132 | +--- |
| 133 | + |
| 134 | +## 🤝 Contributing |
| 135 | + |
| 136 | +We welcome contributions! Please see our [Contributing Guide](CONTRIBUTING.md) for details. |
| 137 | + |
| 138 | +### Quick Contributing Steps |
| 139 | + |
| 140 | +1. Fork the repository |
| 141 | +2. Create a feature branch: `git checkout -b feature/amazing-feature` |
| 142 | +3. Run quality checks: `make check` |
| 143 | +4. Commit changes: `git commit -m 'Add amazing feature'` |
| 144 | +5. Push to branch: `git push origin feature/amazing-feature` |
| 145 | +6. Open a Pull Request |
| 146 | + |
| 147 | + |
| 148 | +We are looking to collaborate with researchers who are interested in ... |
| 149 | + |
| 150 | +--- |
| 151 | + |
| 152 | +## Roadmap |
| 153 | + |
| 154 | +- |
| 155 | + |
| 156 | + |
| 157 | +--- |
| 158 | + |
| 159 | +## 📄 License |
| 160 | + |
| 161 | +This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details. |
| 162 | + |
| 163 | +--- |
| 164 | + |
| 165 | +## Contact |
| 166 | + |
| 167 | +Henry Bae - henry@fluidize.ai |
| 168 | + |
| 169 | + |
| 170 | + |
| 171 | +--- |
| 172 | + |
| 173 | +What should the documentation contain: |
| 174 | + |
| 175 | +- Overview of Fluidize Project |
| 176 | + |
| 177 | + |
| 178 | +- Overview of Fluidize Node |
| 179 | +- Overview of Fluidize Workflow |
| 180 | + |
| 181 | +--- |
| 182 | + |
| 183 | +<p align="center"> |
| 184 | + <strong>Built with ❤️ by the Fluidize team</strong><br> |
| 185 | + <em> </em> |
| 186 | +</p> |
0 commit comments