An open API service indexing awesome lists of open source software.

https://github.com/mechwolf/mechwolf

⚙️🐺 Robotic chemistry made easy
https://github.com/mechwolf/mechwolf

automation chemistry robotics

Last synced: 8 months ago
JSON representation

⚙️🐺 Robotic chemistry made easy

Awesome Lists containing this project

README

          





MechWolf


Python version
Gitter chat
DOI
GPLv3 license
CI status
Netlify




MechWolf is a Python framework for automating continuous flow processes.
It was developed as a collaboration between computer scientists, chemists, and complete novices to be used by anyone wanting to do better, faster, more reproducible flow-based science.
Features include:

- Natural language description, analysis, and visualization of continuous flow networks
- Automated execution of protocols
- Full user extensibility
- Smart default settings, designed by scientists for scientists
- Extensive checking to prevent potentially costly and dangerous errors before runtime
- Natural language parsing of times and quantities
- Thorough documentation and tutorials

## Installation

It's as easy as:

```bash
$ conda install -c conda-forge mechwolf
```

Or, to get the latest (but not necessarily stable) development branch:

```bash
$ pip install git+https://github.com/MechWolf/MechWolf.git
```

For more information about installation, as well as to learn about other installation options, please look at the full [installation instructions](docs/guide/installation.md).

## What can MechWolf do?

A lot.
Let's say you're trying to automate the production of [acetaminophen](https://en.wikipedia.org/wiki/Paracetamol), a popular pain reliever and fever reducer.
The reaction involves combining two chemicals, 4-aminophenol and acetic anhydride.
The basic level of organization in MechWolf are individual components, such as the vessels and pumps.

First, we define our components and create an **`Apparatus`** object to hold them:

```python
import mechwolf as mw

# define the vessels
aminophenol = mw.Vessel("15 mL 4-aminophenol")
acetic_anhydride = mw.Vessel("15 mL acetic anhydride")
acetaminophen = mw.Vessel("acetaminophen")

# define the pumps
pump_1 = mw.Pump()
pump_2 = mw.Pump()

# define the mixer
mixer = mw.TMixer()

# same tube specs for all tubes
tube = mw.Tube(length="1 m", ID="1/16 in", OD="2/16 in", material="PVC")

# create the Apparatus object
A = mw.Apparatus()
```

Next, we define the connectivity of the **`Apparatus`** with **`add()`**. **`add()`** expects three arguments, `from_component`, `to_component`, and `tube` (in that order). First, we connect `aminophenol` to `pump_1` via `tube`:

```python
A.add(from_component=aminophenol, to_component=pump_1, tube=tube)
```

Note that the keyword arguments are optional:

```python
A.add(acetic_anhydride, pump_2, tube)
```

Since `from_component` is a list, both `pump_1` and `pump_2` will be connected to `mixer`.

```python
A.add([pump_1, pump_2], mixer, tube)
```

Finally, connect `mixer` to the output vessel, `acetaminophen`:

```python
A.add(mixer, acetaminophen, tube)
```

Then we define a **`Protocol`** and run it:

```python
# create the Protocol object
P = mw.Protocol(A, name="acetaminophen synthesis")
P.add([pump_1, pump_2], duration="15 mins", rate="1 mL/min")

# execute the Protocol
P.execute()
```

That's it! You can do this and a whole lot more with MechWolf.
To learn more, take a look at the [docs](https://mechwolf.org).

## Documentation

The documentation website is accessible [here](https://mechwolf.org).

## License

[GPLv3](LICENSE) [(summary)](https://choosealicense.com/licenses/gpl-3.0/).

## Citation

```
Will go here.
```