https://github.com/bio-pnpi/gromacs-pyapi

Gromacs Python API bindings for analysis tools

https://github.com/bio-pnpi/gromacs-pyapi

Science Score: 10.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
  • codemeta.json file
  • .zenodo.json file
  • DOI references
  • Academic publication links
    Links to: acs.org
  • Academic email domains
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (14.2%) to scientific vocabulary

Keywords

gromacs python trajectory-analysis
Last synced: 6 months ago · JSON representation

Repository

Gromacs Python API bindings for analysis tools

Basic Info
  • Host: GitHub
  • Owner: bio-pnpi
  • License: lgpl-2.1
  • Language: CMake
  • Default Branch: master
  • Size: 70.3 KB
Statistics
  • Stars: 3
  • Watchers: 5
  • Forks: 0
  • Open Issues: 0
  • Releases: 0
Topics
gromacs python trajectory-analysis
Created almost 9 years ago · Last pushed over 8 years ago

https://github.com/bio-pnpi/gromacs-pyapi/blob/master/

GROMACS Python API project
==========================

This project provides Python wrappers for Gromacs trajectory analysis [framework][trjan].

You can find an example tool written with this framework in `examples/example_pyapi.py`.

We would be very grateful for any feedback at this very alpha stage of the project.

Building and installing
-----------------------

gromacs-pyapi has following dependencies:

* Gromacs (tested with 2016.x branch)
* CMake
* [SIP][sip] (confirmed to work with 4.19)

These should be present in repositories of any modern Linux distro.

To build do the following:

```console
$ mkdir build
$ cd build
$ cmake .. -DCMAKE_INSTALL_PREFIX=~/.local
$ make
$ make install
```

Of course, you can choose any install location you like.

By default, the bindings will be built with currently active Python version. Both Python 2 and Python 3 are supported.

Usage
--------

To use analysis framework, you need to subclass `gromacs.TrajectoryAnalysis.TrajectoryAnalysisModule` and override all virtual methods as stated in Gromacs documentation. To run the tool, provide an instance of your module to `TrajectoryAnalysis.TrajectoryAnalysisCommandLineRunner.runAsMain` function. All this boilerplate code can be copied from the example.

When run, the script will behave exactly like any other `gmx` tool, accepting the same set of command-line options. Module specific options can be provided in `initOptions` method with use of `gromacs.Options.PyOptionsHolder` class. This class is needed to overcome impossibilities to directly wrap gromacs `Options` framework in Python.

`PyOptionHolder` class has several static methods:

* `doubleOption`
* `integerOption`
* `stringOption`
* `booleanOption`
* `selectionOption`
* `fileNameOption`

All of these methods accept three arguments: `name`, `count` and `default`. Only name is mandatory, `count` is 1 by default.
If `count` is zero, the option will accept an unlimited number of values. If `count` is greater than zero, the option will accept exactly `count` values.

You should store an instance of `PyOptionsHolder` class in your module's instance field and later access options values by name with `[]` operator. In other words, this class will behave as a dictionary.

This option framework may change in the future.

NumPy
----------

All data sent from C++ side is not copied into Python memory. Instead, a memory view of some sort is returned. For topology, frames and selections all coordinate, velocity, etc. vectors are provided as NumPy arrays directly on top of C++ arrays allocated by Gromacs. This means that actual references to these arrays are only valid during current fuction call, e.g. `analyzeFrame`. If you try to store an array and use it later, you may get a segmentation fault or you may access not the array you were expecting, because of memory re-writing. If you need to store this data for later use, allocate your own array and make a copy.

[trjan]: http://manual.gromacs.org/documentation/2016.3/doxygen/html-user/page_analysisframework.xhtml
[sip]: https://www.riverbankcomputing.com/software/sip/intro

Owner

  • Name: bio-pnpi
  • Login: bio-pnpi
  • Kind: organization
  • Location: Russian Federation

GitHub Events

Total
Last Year