Contents

Longbow is our light-weight automated job submission tool. Longbow is designed to reproduce the look and feel of using software on the users local computer, however when used with Longbow the heavy lifting is seemlessly done by a supercomputer. Longbow has been written with both users and developers in mind; whilst primarily this software started out as an application, demand has increasingly come from developers of bio-simulation software tools and packages to make the functionality of Longbow available as an API.

This documentation is primarily aimed at those wanting to include Longbow into other software, or those that wish to make new plugins to extend the functionality of Longbow. This guide will assume that the reader has read the user documentation in advance, however cross links will be provided to specific content. The language of choice for Longbow is Python and is compatible with series 2.6, 2.7 and 3.x, we chose Python to better suit the skill set of our target audience. Longbow makes use of SSH and rsync to handle the ultimate file transfer and command and control of job scheduling on remote machines.

A number of application and scheduler plugins provide out of the box support for common MD packages and HPC environments a typical bio-simulation scientist might encounter. This does not mean that Longbow is only for bio-simulation scientists or that the code is specific to biological software, what it does mean is that this is what we as developers are focused on supporting out of the box.

We would be quite happy to discuss the inclusion of user (group or consortium) contributed plugins should the need to include them in Longbow core arise, just open a thread on the forums.

This version of this documentation is compatible with all versions of Longbow in series v1.5.x

 

Licensing

Longbow is released under the BSD 3-clause license. A copy of this license is provided when Longbow is downloaded and installed.

 

Citing

If you make use of Longbow in your own code or in production simulations that result in publishable output, then please reference our paper:

Gebbie-Rayet, J, Shannon, G, Loeffler, H H and Laughton, C A 2016 Longbow: A Lightweight Remote Job Submission Tool. Journal of Open Research Software, 4: e1, DOI: http://dx.doi.org/10.5334/jors.95

 

Support

Support for any issues arising from using Longbow, whether these are questions, to report a bug or to suggest new ideas, we actively support developers that are extending or integrating Longbow capabilities. You should use the Longbow forums here:

http://www.hecbiosim.ac.uk/longbow-support

 

Changelog

To keep an eye on what is changing version to version, a changelog can be found here.

 

Developers

Developers that wish to contribute to Longbow are welcome. We do ask that if you wish to contribute to the Longbow base code that you contact us first. The following resources are available to developers:

Code repository: https://github.com/hecbiosim/longbow

Unit testing: https://travis-ci.org/HECBioSim/Longbow

Code coverage: https://coveralls.io/github/HECBioSim/Longbow

Code quality: https://landscape.io/github/HECBioSim/Longbow

 

Contents

1. The Structure of Longbow and API

    1.1 The File Structure of Longbow

    1.2 The Longbow API

    1.3 The Longbow Data Structures

2. Longbow Plugins

    2.1 Creating a New Plugin

3. Integrating Longbow into Other Software

    3.1 Integration by Calling the Application

    3.2 Integration by API