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
- Host: GitHub
- URL: https://github.com/mechwolf/mechwolf
- Owner: MechWolf
- License: gpl-3.0
- Created: 2017-11-29T15:03:50.000Z (over 8 years ago)
- Default Branch: master
- Last Pushed: 2023-03-01T13:05:41.000Z (over 3 years ago)
- Last Synced: 2025-09-13T21:41:09.587Z (10 months ago)
- Topics: automation, chemistry, robotics
- Language: Python
- Homepage: https://mechwolf.org
- Size: 271 MB
- Stars: 31
- Watchers: 2
- Forks: 3
- Open Issues: 31
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
Awesome Lists containing this project
README
MechWolf
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.
```