Metadata-Version: 2.4
Name: aixd
Version: 1.0.1
Summary: AI-eXtended Design (AIXD)
Author: Aleksandra Apolinarska, Rafael Bischof, Gonzalo Casas, Michael Kraus, Sophia Kuhn, Alessandro Maissen, Romana Rust, Konstantinos Tatsis, Matteo Fasulo
Author-email: Luis Salamanca <sluis@ethz.ch>
License-Expression: MIT
Project-URL: Homepage, https://gitlab.datascience.ch/ai-augmented-design/aixd
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Science/Research
Classifier: Operating System :: Unix
Classifier: Operating System :: POSIX
Classifier: Operating System :: Microsoft :: Windows
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: Implementation :: CPython
Classifier: Topic :: Scientific/Engineering
Requires-Python: >=3.9
Description-Content-Type: text/markdown
License-File: LICENSE
License-File: AUTHORS.md
Requires-Dist: pandas<3.0.0,>=2.1.0
Requires-Dist: numpy>=1.22.4; sys_platform != "win32"
Requires-Dist: numpy<2; sys_platform == "win32"
Requires-Dist: scipy>=1.8.1
Requires-Dist: scikit-learn>=0.23.0
Requires-Dist: plotly~=6.0.0
Requires-Dist: kaleido<1.0.0
Requires-Dist: torch<2.8,>=2.0.0
Requires-Dist: wandb
Requires-Dist: pytorch-lightning<2.6,>=2.0.0
Requires-Dist: bayesian-optimization<2.0.0
Requires-Dist: coolname
Provides-Extra: dev
Requires-Dist: black[jupyter]; extra == "dev"
Requires-Dist: bump-my-version>=0.31.1; extra == "dev"
Requires-Dist: compas_invocations>=1.0.0; extra == "dev"
Requires-Dist: flake8; extra == "dev"
Requires-Dist: invoke>=0.14; extra == "dev"
Requires-Dist: isort; extra == "dev"
Requires-Dist: nbsphinx; extra == "dev"
Requires-Dist: nbmake; extra == "dev"
Requires-Dist: nb-clean; extra == "dev"
Requires-Dist: pytest>=6.0; extra == "dev"
Requires-Dist: pytest-env; extra == "dev"
Requires-Dist: pytest-xdist; extra == "dev"
Requires-Dist: sphinx==7.4.7; extra == "dev"
Requires-Dist: pydata-sphinx-theme; extra == "dev"
Requires-Dist: check-manifest>=0.36; extra == "dev"
Requires-Dist: scp; extra == "dev"
Requires-Dist: paramiko; extra == "dev"
Requires-Dist: uv; extra == "dev"
Requires-Dist: pyclean; extra == "dev"
Provides-Extra: examples
Requires-Dist: jupyter; extra == "examples"
Requires-Dist: ipython>=5.8; extra == "examples"
Requires-Dist: ipykernel; extra == "examples"
Requires-Dist: pythreejs; extra == "examples"
Requires-Dist: matplotlib; extra == "examples"
Requires-Dist: rich>=10.2.2; extra == "examples"
Dynamic: license-file

# AI-eXtended Design (AIXD)

## Introduction

In the current repository we collect the code for the general methodology for AI-augmented generative design. This methodology allows to invert the standard paradigm of parametric modelling, where the designer needs to tweak and tune the input parameters, iteratively or through trial and error, for achieving some desired performance values.

Instead, this method allows to, by just specifying the requirements' values, obtain a range of designs that closely approximate those. Besides, the present methodology allows the user to explore the design space, understand how different parameters relate to each other, areas of feasible and unfeasible designs, etc.

## Documentation

A detailed documentation of the ``aixd`` library is provided [here](https://aixd.ethz.ch). The documentation includes detailed installation instructions, API references, a user guide, application examples and more.

## Installation

### Requirements

- Python >= 3.9

The `aixd` library can be installed using `uv`, `pip` or `conda`. The recommended way is to use `uv` for its automatic PyTorch backend selection, but you can also use `pip` or `conda` if you prefer.

**Note**: It is recommended to use virtual environments to manage the dependencies of your projects.

### Using conda

Create a new environment and install `aixd`:

```bash
conda create -n venv python=3.9
conda activate venv
conda install -c conda-forge aixd
```

### Using pip

Create a virtual environment:

```bash
python -m venv .venv
source .venv/bin/activate  # On Windows: .venv\Scripts\activate
```

Install `aixd`:

```bash
pip install aixd
```

### Using uv

Create a virtual environment:

```bash
uv venv
source .venv/bin/activate  # On Windows: .venv\Scripts\activate
```

Install `aixd` with automatic PyTorch backend selection:

```bash
uv pip install aixd --torch-backend=auto
```

The `--torch-backend` flag automatically detects your CUDA driver, AMD ROCm driver, or Intel GPU and selects the most suitable PyTorch version. If no compatible GPU is found, the CPU version will be installed. For more information, refer to the [uv documentation](https://docs.astral.sh/uv/guides/integration/pytorch/#automatic-backend-selection).

### Latest development version

Install the latest version using `pip` from the git repository:

```bash
pip install --upgrade git+https://gitlab.datascience.ch/ai-augmented-design/aixd.git
```

## Examples

The `aixd` toolbox includes a variety of example applications to showcase its features and usage. These examples are located in the [examples](examples) folder and cover different design tasks, each with self-contained Jupyter notebooks and detailed explanations.

For more information about each example, refer to the corresponding `README.md` file within each example folder.

To run the examples, ensure you have downloaded the [examples](examples) folder and installed the `aixd` library with all example dependencies:

```bash
pip install "aixd[examples]"
```

## Development

If you are going to develop on this repository, perform an installation from source:

```bash
git clone https://gitlab.datascience.ch/ai-augmented-design/aixd.git
cd aixd
```

Create and activate a python virtual environment. Install all dependencies including the examples and development tools.

Using `conda`:

```bash
conda env create -f environment.yml
```

Or using `pip`:

```bash
pip install -e ".[examples, dev]"
```

Or using `uv` (recommended for proper `torch` backend selection):

```bash
uv pip install -e ".[examples, dev]" --torch-backend=auto
```

Check the [contribution guidelines](CONTRIBUTING.md) for more details.

## Folders and structure

The structure we follow on the current repo is as follows:

- `examples` : all example applications of the `aixd` toolbox
- `src` : for all source code. It can be structure following the next structures
  - `src/aixd` : source code of `aixd` toolbox

## Known issues

- Plotly image export can cause a hang of the system. This is due to a bug in Kaleido (the library
  used by Plotly for image export) reported in [here](https://github.com/plotly/Kaleido/issues/134). A workaround is to
  downgrade Kaleido to version `0.1.0.post1`, which can be done by running `pip install kaleido==0.1.0.post1`.
