GithubHelp home page GithubHelp logo

nezix / quickses Goto Github PK

View Code? Open in Web Editor NEW
14.0 5.0 6.0 385 KB

Tool to compute molecular Solvent Excluded Surface meshes on the GPU using CUDA

License: MIT License

Cuda 37.03% C++ 61.82% Makefile 0.45% C 0.70%
molecular-visualization molecular-surface marching-cubes cuda gpgpu

quickses's Introduction

QuickSES

Tool to compute molecular Solvent Excluded Surface meshes on the GPU using CUDA.

Implementation of Hermosilla's paper: Hermosilla, Pedro, Michael Krone, Victor Guallar, Pere-Pau Vázquez, Àlvar Vinacua, and Timo Ropinski. "Interactive GPU-based generation of solvent-excluded surfaces

You can find it here : https://www.uni-ulm.de/fileadmin/website_uni_ulm/iui.inst.100/institut/Papers/viscom/2017/hermosilla17ses.pdf

This implementation contains a 3D uniform grid to access atoms neighbors in constant time and a Marching Cubes algorithm implemented in CUDA, a method to weld mesh vertices is also implemented on the GPU.

Example

$> wget https://files.rcsb.org/download/1KX2.pdb
$> ./QuickSES -i 1KX2.pdb -o 1KX2_Surface.obj -v 0.2

Input / Output

QuickSES uses CPDB for parsing PDB files : https://github.com/vegadj/cpdb

$ ./QuickSES
Usage:   QuickSES {OPTIONS}

    QuickSES, SES mesh generation using GPU

  OPTIONS:

      -i[input.pdb]                     Input PDB file
      -o[output.obj]                    Output OBJ mesh file
      -l[smooth factor]                 (1) Times to run Laplacian smoothing step.
      -v[voxel size]                    (0.5) Voxel size in Angstrom. Defines the quality of the mesh.
      -s[slice size]                    (300) Size of the sub-grid. Defines the quantity of GPU memory needed.
      -h, --help                           Display this help menu

The default resolution is set to 0.5 Å but can be changed at runtime using -v argument.

The size of the slice that defines how much memory QuickSES uses can be changed using -s argument.

The tool can also be used as a library by sending an array of positions and an array of radius per atom (see API_* functions).

Compilation

You CUDA toolkit installed.

Just run the make file with

$> make

This will call nvcc to create a QuickSES executable.

Check the Releases section for pre-built executables.

Contribute

Pull requests are welcome!

Please cite the following paper

Martinez, Xavier, Michael Krone, and Marc Baaden. "QuickSES: A Library for Fast Computation of Solvent Excluded Surfaces." The Eurographics Association, 2019.

@inproceedings{martinez2019quickses,
  title={QuickSES: A Library for Fast Computation of Solvent Excluded Surfaces},
  author={Martinez, Xavier and Krone, Michael and Baaden, Marc},
  year={2019},
  organization={The Eurographics Association}
}

Available here: https://hal.archives-ouvertes.fr/hal-02370900/document

License

License: MIT

quickses's People

Contributors

nezix avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

quickses's Issues

Make File Error

When trying to compile this interesting package with the supplied make file, i run into the following error:

nvcc -c -o CudaSurf.o CudaSurf.cu -Icpdb/ -use_fast_math -O3
nvcc -c -o SmoothMesh.o SmoothMesh.cpp -O3
nvcc -o QuickSES -O3 cpdb/cpdb.o cpdb/utils.o SmoothMesh.o CudaSurf.o
nvlink fatal   : Could not find fatbin in 'cpdb/cpdb.o'
nvlink fatal   : elfLink internal error

Could you please solve this, so that I can try out your package?

Two potential problem I encountered during using the code.

I recently wrote a Python binding for surface generation. During the test, I found that there are usually some unexpected spikes on the surface as demonstrated in Fig1. Another problem is that the surface is not watertight as demonstrated in Fig2. Did you ever experienced such a situation? Is it like a bug in the program or setting?

Fig1

image

Fig2

image

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.