This is an C++ implementation of algorithms capable of generate discrete volume-application-descriptions of protein-ligand interactions.
This implementation is based on ProLIF protein-ligand interaction definitions
This implementation uses RDKit software library in order to handle SMART patterns, geometry calculation and .pdb files import/export
This is part of a project-work for Advanced Computer Architectures course @Polimi
Project developed by:
-
include-base
- headers files where:Mesh.hpp
- defines the data structure containing the discrete molecule meshDiscretizer.hpp
- defines method to transform rdkit molecule into mesh and vice versaInteraction.hpp
- defines the basic method interfaces and structure an interaction should haveInteractionCollection.hpp
- defines the structure the collection of interaction to be applied should haveDistanceInteraction.hpp
- defines the basic method interface and structure a distance-based interaction should haveSingleAngleInteraction.hpp
- defines the basic method interface and structure a single-angle-based interaction should haveRestrictedBasePIStackingInteraction.hpp
- defines the basic method interface and structure a base-pi-stacking-based interaction should have
-
include-extended
- header files of interaction classes extensions -
src
- source file of headers multi-platform implementation -
src-normal
- source file of headers cpu based, single threaded implementation -
src-omp
- source file of headers cpu based, openmp multithreaded implementation -
src-cuda
- source file of headers gpu based, cuda implementation
In order to build the executable, from the root folder run the following commands:
$ mkdir build
$ cd build
$ cmake .. _FLAGS_
$ make
_FLAGS_
are optional, they can be:
-D USECUDA=1/0'
- specify if to use gpu based, cuda implementation of interactions-D CUDA_BLOCK_SIZE=_size_block_
- specify the size of cuda-thread-block to be used-D USEOMP=1/0'
- specify if to use cpu base, openmp implementation of interactions-D OMP_NUM_THREADS=_num_threads_
- specify the number of threads used by omp implementation-D GRAINING=_voxel_density_per_armstrong_unity_
- specify the number of voxel used to describe a point in space (**)
(**) Note that actual grow rate of voxel used is not linear, but cubic, this can cause significant drop in performance and will produce very large output file. I suggest to use Graining not bigger than 20. [Default is 3]
$ ./ProLIF_Coloring input.pdb
where:
input.pdb
- is a path/filename to .pdb input molecule file