Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/schrodinger/gpusimilarity
A Cuda/Thrust implementation of fingerprint similarity searching
https://github.com/schrodinger/gpusimilarity
cheminformatics chemistry gpu similarity-analysis
Last synced: about 1 month ago
JSON representation
A Cuda/Thrust implementation of fingerprint similarity searching
- Host: GitHub
- URL: https://github.com/schrodinger/gpusimilarity
- Owner: schrodinger
- License: bsd-3-clause
- Created: 2018-05-14T20:13:19.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2024-01-24T19:08:08.000Z (11 months ago)
- Last Synced: 2024-08-03T09:04:12.190Z (5 months ago)
- Topics: cheminformatics, chemistry, gpu, similarity-analysis
- Language: C++
- Homepage:
- Size: 479 KB
- Stars: 94
- Watchers: 19
- Forks: 26
- Open Issues: 7
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- top-life-sciences - **schrodinger/gpusimilarity** - analysis`<br><img src='https://github.com/HubTou/topgh/blob/main/icons/gstars.png'> 91 <img src='https://github.com/HubTou/topgh/blob/main/icons/forks.png'> 26 <img src='https://github.com/HubTou/topgh/blob/main/icons/code.png'> C++ <img src='https://github.com/HubTou/topgh/blob/main/icons/license.png'> BSD 3-Clause "New" or "Revised" License <img src='https://github.com/HubTou/topgh/blob/main/icons/last.png'> 2024-01-24 19:08:08 | (Ranked by starred repositories)
README
# gpusimilarity
A brute-force GPU implementation of chemical fingerprint similarity searching. Its intended use is to be kept alive as a service with an entire library loaded into graphics card memory. It has python scripts included which use RDKit to generate fingerprints, but the C++/Cuda backend are agnostic to the data once it's been created.
Architecture and benchmarks were presented in [a presentation at the 2018 RDKit European UGM](gpusimilarity_rdkit_presentation.pdf).
## Incentive Version
The commercial GPUSimilarity product ("FPSim GPU") with additional enhancements, maintenance and support is available from [Schrödinger](https://www.schrodinger.com). Enhancements to the incentive version will be periodically merged into the open source version, similar to Incentive PyMOL.
## Basic Benchmark
On a machine with four Tesla V100, searching one billion compounds takes ~0.2 seconds.
See [RDKit Presentation](gpusimilarity_rdkit_presentation.pdf) for much more in depth benchmarks (that are slightly out of date).
## Example integration
Here is a video of this backend being utilized for immediate-response searching inside Schrödinger's LiveDesign application:
[![GPUSimilarity Gadget](http://img.youtube.com/vi/DZhknAXXEo4/0.jpg)](https://www.youtube.com/watch?v=T11UXEoF_rk)
## Using GPUSimilarity
**It is highly recommended that you use docker for building/running.**See [Our Docker Readme](docker/)
## Dependencies for Building (recommended only for development)
* RDKit (At Python level, not compilation)
* Qt 5.2+ (including QtNetwork)
* PyQt
* Cuda SDK, CUDACXX env variable pointing to nvcc
* cmake 3.10.2+
* C++11 capable compiler
* Boost test libraries
* Optional: Doxygen for generating documents## Building with CMake and running unit tests with CTest
**Recommended only for development, see Docker**
```
From parent directory of source:
mkdir bld
cd bld
ccmake ../gpusimilarity
make -j5
ctest
```
If Cuda, boost or doxygen are not found, start ccmake with the following
options:
```
ccmake -DCMAKE_CUDA_COMPILER=/path/to/nvcc -DBOOST_ROOT=/path/to/boost/directory -DDOXYGEN_EXECUTABLE=/path/to/doxygen
```
### Generate the documentation
Install doxygen on system
```
make doc_doxygen
```
The result is in bld/doc/html## Running
**Recommended only for development, see Docker**
### For basic json-response http endpoint:
From build directory:
`python3 ${SRC_DIR}/python/gpusim_server.py `### For testing (insecure):
From build directory:
`python3 ${SRC_DIR}/python/gpusim_server.py --http_interface`### For generating databases:
Easiest from rdkit conda with pyqt installed:From source python directory:
```python3 gpusim_createdb.py ```### For debugging Cuda server, avoiding python/http server altogether:
```bash
From build directory:
./gpusimserver .fsim
python3 python ${SRC_DIR}/python/gpusim_search.py
```
Note: No .fsim extension is used for gpusim_search.pyThis may be useful to determine if the backend is having Cuda/GPU problems.