Software and Utilities

In this repository, software and utilities developed along the years are available for download

NanoShaper 0.7 Linux64 static build; VMD compatible

NanoShaper 0.7 statically linked for Linux 64. It comes with some bug fixes. Upon unzip please assure to make the file executable: chmod +X NanoShaper. This version is adapted to be used together with VMD, just make it reachable by placing the executable in a folder covered by the PATH variable, such as usr/bin in some Linux distributions, or update the $PATH variable according to the folder where you decided to place NanoShaper.

Nano Shaper User Guide

NanoShaper user guide in pdf format

NanoShaper version 0.7

In this version new functionalities and several improvements are present:

  • This version of NanoShaper, using the DelPhiPatcher, can be interfaced to DelPhi Fortran 77 solver.
  • The first grid operator is introduced, namely the minus operator. By grid operator we mean a function that takes as input one or more grids and produces an output grid. The minus operator is introduced because it is used to support pocket/cavity detection. To support cavity/pocket detection the keyword Operative_Mode is introduced; pockets detection is carried instead of the usual flow when the keyword is set to "pockets".
  • Normals to vertices can be computed, analytically where possible. Meshes can now be saved in the, here introduced, OFF+N, OFF+N+A formats. These new formats save the nearest atom index (A) and the normals (N). Now meshes can be saved in MSMS format too when explicitly requested.
  • Octree are now used when collecting the analytical intersections for the triangulation. This leads to a significant memory saving, in particular when an high resolution is used for triangulation. A parallel version of the Marching Cubes algorithm is present. It is a major change with respect to the previous version in that the algorithm has been significantly reformulated; often it gives a linearly scaling performance.
  • Load balancing (during ray-tracing) is significantly improved.
  • The flood-fill algorithm for closed cavity detection can lead to significant performance improvements wrt to previous version (4x) in particular when the number of detected cavities is relatively small (< 10).
  • An algorithm to convert a mesh to a set of approximating atoms (balls) is developed. This can be useful for those codes which, for instance, use as input only a set of atoms (e.g. DelPhi Fortran 95 code) and are not able to directly manipulate an arbitrary mesh.
  • The classes that derive from Surface can be very easily registered. It is sufficient to add the .cpp and .h files of the new surface in src directory and recompile to make the surface available to the rest of the framework. To make clear how the surface derived classes should be written the ExampleSurface class is provided.

NanoShaper 0.7.5 cumulative bugfix

This bugfix is cumulative and it is a superset of the previous one. Therefore, it requires the 0.7 version to be already installed.


This bugfix allows NanoShaper to save the status map if requested. The previous version ignored the Save_Status_map flag. To apply the patch overwrite the given source files in the src folder and type make (Linux) or recompile in Visual Studio (Windows).

This bug fix increases the version number to 0.7.5

Additionally we provide precompiled 32/64 bits versions of NanoShaper for Windows.The 32 bit version should run almost everywhere, included older Windows XP based machines.

The 64 bit version requires Windows 7 or above, the shipped .dll in the path (or the running directory) and the Visual Studio 2013 redistributable package installed.

NanoShaper version 0.3.2

NanoShaper 0.3.2 provides a bug fix for the Solvent Excluded Surface Module.

NanoShaper version 0.3.1

NanoShaper 0.3.1 comes with two significant performance improvements: Skin Surface build-up time has been reduced by a factor of 5x-12x depending on the molecule. Ray casting for triangulated surfaces now uses the 2D acceleration grid that leads to a 3x performance speed-up. Additionally NanoShaper has an automated installer, called, that allows to install the required packages on Linux/Mac, and compile the code. The supported distributions/packet managers pairs are: apt-get/Ubuntu-Debian, yast/Suse, yum/RedHat-Centos, fink/Mac.

In the script and utilities section the script is given: this script translates a pdb file to a .xyzr using Amber99 radii set.

prmtop2pqr converter

This Python script allows you to convert an Amber (version 7 and higher), topology file (.prmtop) into a pqr format. This script takes as input the pdb of the system, the prmtop file, the output pqr file name and, optionally, a VMD-like atom selection string. To parse the pdb and apply the selection the ProDy package is used and must be previously installed: ProDy is an excellent tool to manipulate MD trajectories and pdb files and can be dowloaded from .

The script typical application is in converting a system used in a MD simulation to perform computations with DelPhi or protonate a system by tleap (AmberTools) and then using DelPhi on it.The presence of the atom selection string allows the user to remove in one step all the undesired components of the system (e.g. waters).

A typical usage example is:

python sys.pdb box.prmtop sys_prot.pqr "protein"

where "protein" is the VMD-like atom selection string to remove all but the protein atoms. Another useful example to retain protein atoms, DNA atoms and those belonging to the ligand LIG is:

python sys.pdb box.prmtop sys_dna_lig.pqr "protein or nucleic or resname LIG"

This script loads a .off triangulated mesh and build several files: the .idtf file converted mesh, the .u3d file that represents the mesh, the latex file that properly embeds the mesh, the final pdf in which the the mesh is embedded. The script assumes that a idtf -> u3d converter is available: for easiness of using a converter in the \bin folder is given. The script also assumes that pdflatex is available (here an example pdf); in order to get the final pdf the movie15 package is requested, for this reason this file is included.

This script converts a "" file into the pair "" and "" MSMS files. If also an optional xyzr file (coordinates+radius) file is provided then for each vertex the nearest atom is found and it is saved into the MSMS file. This allows to load the files into VMD and have all the info needed for surface per-atom colouring. Note that when VMD loads an externally computed surface it does not load all the information but only the raw triangulated surface. In order to correctly load all the info a trick is needed (see msms_redirect).

This script loads a .off file and visualizes it. By default the surface is semi-transparent in order to see cavities. If the cavities loading is enabled, grid points in cavities are shown together with a scalar indicating the ratio of the cavity volume and the volume of the water molecule approximated as a sphere with a radius of 1.4 Angstrom. By indicating the name of the NanoShaper executable both computation and visualization can be done in one single command.


msms_redirect.cpp: this file is used to allow full VMD visualization of the surface. This program redirects VMD to the two saved files, This redirect is used because VMD is not able to enable all surface visualization features when a saved file is loaded; that is a specific VMD prog path has to be used. If you load an MSMS external file, surface effects cannot be applied. In order to get a proper visualization the following steps must be followed:

  • 1) Compile msms_redirect, call it MSMS and put it into the VMD folder
  • 2) Start VMD, load your pdb file and request for MSMS surface: this will generate the file atoms.xyzr
  • 3) Feed atoms.xyzr to NanoShaper to get the desired mesh
  • 4) Convert the .off file together with atoms.xyzr in MSMS format by
  • 5) Name the two files as,, and copy them on VMD folder
  • 6) Request again to VMD the MSMS surface. The surface computed by NanoShaper should be visualized

At this last point VMD will run msms_redirect that will copy the two desired files, into the temporary files that VMD 'believes' are from MSMS. At this stage you will get the raw surface together with proper atom info (if provided). It is up to the user to grant the consistency of the pdb loaded in VMD and the .xyzr file provided to the script.


This utility is a minimal Graphical User Interface to NanoShaper to get the visualization of a molecule surface; it should not be considered a substitute for advanced tools such as VMD. For this script to work Enthought python must be used and optionally togetherwith Prody installed. Put in the .\NSgui folder the NanoShaper executable and run This minimal GUI allows to dowload or load a pdb file, apply Amber99 radii using DelPhi .siz file format, define a configuration file for NanoShaper and display the 3D surface together with, if requested, the cavities. The integration with Prody allows to filter out the interested part of the protein using the familiar selection string of VMD. By default the surface is shown in non transparent mode. To allow transparency and see cavities enable "Cavity Detection" and "Save Status Map" on the configuration settings.

This script reads an .off triangulated mesh and adds the grey color to the vertices. The converted file can be visualized using .off VMD plugin. This script can be used to get a fast way to visualize the surface on VMD. For a full featured visualization on VMD msms_redirect should be used.

This script reads an .off file and performs scaling and zero centering of the mesh. This is useful when an arbitrary mesh is loaded inside NanoShaper: the mesh scale must be of the same order of molecular surfaces in order to get consistent results.


This utility converts a pdb into a xyzr file using the file amber.siz. This file is in DelPhi radii format and contains Amber99 radii. This script requires the excellent ProDy package, which can be dowloaded from .

This script shows as red dots the projected boundary grid points (a set of points) passed as a file.