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

https://github.com/michelml/chempp

[paused development] Large scale concurrent chemical search using RDKit cartridge, Oat++ and native Postgres & C++ features.
https://github.com/michelml/chempp

cheminformatics cpp oatpp postgresql rdkit

Last synced: 11 months ago
JSON representation

[paused development] Large scale concurrent chemical search using RDKit cartridge, Oat++ and native Postgres & C++ features.

Awesome Lists containing this project

README

          

**Paused Development**

[![Contributors][contributors-shield]][contributors-url]
[![Forks][forks-shield]][forks-url]
[![Stargazers][stars-shield]][stars-url]
[![Issues][issues-shield]][issues-url]
[![Apache License][license-shield]][license-url]
[![LinkedIn][linkedin-shield]][linkedin-url]





Chempp - Project Logo


[Large scale] concurrent chemical search engine using RDKit cartridge, Oat++ and native Postgres & C++ features.


Explore the docs »




View Demo
·
Report Bug
·
Request Feature

Table of Contents




  1. About The Project



  2. Installation


  3. Usage

  4. Roadmap

  5. Contributing

  6. License

  7. Contact

  8. Acknowledgements

## About The Project

**chempp** [kem-pee-pee], is a large scale concurrent chemical search engine using RDKit cartridge, Oat++ and native Postgres & C++ features.

### Built With

* [Oat++](https://oatpp.io/)
* [PostgreSQL RDKit cartridge](https://rdkit.org/docs/Cartridge.html)
* [PostgreSQL](https://www.postgresql.org/)
* Special mention to Arthur Farias for his very well crafted [url encoding/decoding C++ gist](https://gist.github.com/arthurafarias/56fec2cd49a32f374c02d1df2b6c350f)

## Installation

### Prerequisites

- Knowledge of what a [SMILES](https://en.wikipedia.org/wiki/Simplified_molecular-input_line-entry_system) is in chemistry
- Knowledge of what a [SMARTS](https://en.wikipedia.org/wiki/SMILES_arbitrary_target_specification) is in chemistry
- [Git](https://git-scm.com/)
- [Docker and Docker-Compose](https://www.docker.com/)

### Install steps

Clone the project

```bash
git clone https://github.com/MichelML/chempp.git && \
cd chempp
```

Then, start the db and fill it with molecules. You have two options:

#### Option 1 - Small Database of 1000 molecules

```bash
docker-compose up -d db && \
docker-compose exec db bash -c "SMALLDB=1 /utility/populate_db.sh"
```

#### Option 2 - Large database of ~3M compounds

```bash
docker-compose up -d db && \
docker-compose exec db bash -c "/utility/populate_db.sh"
```

> **Warning:** This command will take a while because it inserts ~3M rows in the db and [creates indexes to perform efficient searches](https://rdkit.org/docs/Cartridge.html), a rough estimate being between 15 minutes and an hour.

Lastly, start the chempp service:

```bash
docker-compose up service
```

Once these commands are ran, you are ready to test the endpoints at http://localhost:8000/swagger/ui .

## Usage

See usage through Swagger demo here https://drive.google.com/file/d/1FKh3-N4KWvVEz7NPFmMDALWu-BzYbaHP/view?usp=sharing .

## Roadmap

See the [open issues](https://github.com/michelml/chempp/issues) for a list of proposed features (and known issues).

## Contributing

Contributions are what make the open source community such an amazing place to be learn, inspire, and create. Any contributions you make are **greatly appreciated**.

1. Fork the Project
2. Create your Feature Branch (`git checkout -b feature/AmazingFeature`)
3. Commit your Changes (`git commit -m 'Add some AmazingFeature'`)
4. Push to the Branch (`git push origin feature/AmazingFeature`)
5. Open a Pull Request

Make sure to format your code properly with `make format`.

## License

Distributed under the Apache-2.0 License. See `LICENSE` for more information.

## Contact

Michel ML - [@michelml](https://github.com/MichelML) - michmoreau.l@gmail.com

Project Link: [https://github.com/michelml/chempp](https://github.com/michelml/chempp)

## Acknowledgements

Thank you to all contributors of libraries and tools used in this project.

[contributors-shield]: https://img.shields.io/github/contributors/michelml/chempp.svg?style=for-the-badge
[contributors-url]: https://github.com/michelml/chempp/graphs/contributors
[forks-shield]: https://img.shields.io/github/forks/michelml/chempp.svg?style=for-the-badge
[forks-url]: https://github.com/michelml/chempp/network/members
[stars-shield]: https://img.shields.io/github/stars/michelml/chempp.svg?style=for-the-badge
[stars-url]: https://github.com/michelml/chempp/stargazers
[issues-shield]: https://img.shields.io/github/issues/michelml/chempp.svg?style=for-the-badge
[issues-url]: https://github.com/michelml/chempp/issues
[license-shield]: https://img.shields.io/github/license/michelml/chempp.svg?style=for-the-badge
[license-url]: https://github.com/michelml/chempp/blob/master/LICENSE.txt
[linkedin-shield]: https://img.shields.io/badge/-LinkedIn-black.svg?style=for-the-badge&logo=linkedin&colorB=555
[linkedin-url]: https://www.linkedin.com/in/michelmoreau1/
[product-screenshot]: chempp.png