Acknowledgements

We give huge thanks to everyone who has contributed to sire development, whether directly in the form of writing code, tests or documentation, or indirectly via support, discussions or submitting issues or bug reports.

We gratefully acknowledge funding from the EPSRC and BBSRC who contributed funding to the initial development of sire. We are also thankful to UCB, Cresset, Exscientia and Evotec who have all either directly funded development, or have funded researchers who have contributed to sire.

We also thank the Software Sustainability Institute for many useful discussions.

We thank the Universities of Bristol and Edinburgh for providing the time to the members of staff who have contributed to sire’s development.

We thank CCP-BioSim who have also provided guidance and encouragement during the development of this software.

Website

This website was generated using sphinx, using a modified version of the furo theme.

Hosting

sire is developed on GitHub, making extensive use of its many excellent features. This include using GitHub pages for hosting this website, and GitHub actions for CI/CD.

sire binary packages are hosted on conda-forge.

sire containers are hosted on docker hub.

The sire notebook service is hosted in a JupyterHub cluster, built following the instructions on Zero to JupyterHub. This is hosted in a kubernetes cluster on Microsoft Azure.

Third Party Software

sire depends on a lot of third party software, the details and licenses of which can be found below. The software will be installed automatically as part of the installing the sire conda package, so you shouldn’t have to do anything yourself.

sire is itself distributed under the terms of the GPL version 3 (or any later GPL license). The C++ source code is licensed under the GPL 3 or later, and linking with GPL3 dependencies (e.g. GSL) means that the entire package is licensed under GPL 3 or later.

C++ Dependencies

Qt 5

sire is built on top of Qt.Core from Qt 5. This is used under the terms of the LGPL 2 or later. sire does not modify Qt, so this license allows both commercial and non-commercial use without fee. You can find out more about Qt and its license from here.

Python

The sire C++ library is wrapped up and made available for use within Python 3. This is used under the terms of the PSF license, which is compatible with the GPLv3. The license allows both commercial and non-commercial use without fee. You can find out more about Python and its license from here.

boost

sire uses many of the components from the boost libraries, in particular the boost::python module that is used to wrap up the C++ code. This is used under the terms of the Boost Software License, which allows both commercial and non-commercial use without fee. This is compatible with the GPLc3. You can find out more about boost and its license from here.

Py++

sire uses Py++ to auto-generate all of the C++ python wrappers. Py++ uses either GCCXML or CastXML, and, as it is used as a tool, its license does not affect sire. You can read more about Py++ from here.

cmake

sire uses cmake as its build system. As it is used as a tool, its license does not affect sire. CMake is excellent. You can read more about it from here.

Anaconda

sire uses Anaconda Python (specifically miniforge and conda-forge) to simplify the management and installation of Python and the various modules on which sire depends.

Anaconda (and miniforge) are distributed as open source projects. As sire does not explicitly link with them, the license is not an issue. You can find out more about Anaconda from here.

Threading Building Blocks (tbb)

sire uses the Threading Building Blocks library for within-node parallelisation. This is licensed under the open source Apache 2.0 license.

Gnu Scientific Library (GSL)

sire uses some of the routines from the Gnu Scientific Library. This is used under the terms of the GPL v3 license. More information about GSL and its license can be found here.

NetCDF

sire links to the NetCDF library so that it can read/write Amber binary files. NetCDF is openly licensed under a BSD-style license, and is compatible with the GPL.

OpenMM

sire links to OpenMM to perform accelerated dynamics (e.g. as part of the somd program), and also via an interconversion layer to switch between sire and OpenMM system representations. This is licensed under either the MIT or LGPL licenses, so compatible with the GPL.

Regress

sire uses the linear least squares regression library, regress, for polynomial least squares fitting. This is used under the terms of the GPLv3 license.

The source code for this module can be found here.

eig3

sire uses the eig3 library for eigenvector/eigenmatrix calculations by Connelly Barnes. This is in the public domain, and is derived itself from the Java matrix library JAMA (also public domain).

Information about this can be found here, with the license within sire found here.

Mersenne Twister

sire uses the Mersenne Twister program by Richard Wagner for the generation of random numbers. This is used under a BSD-style license, shown below.

// Mersenne Twister random number generator -- a C++ class MTRand
// Based on code by Makoto Matsumoto, Takuji Nishimura, and Shawn Cokus
// Richard J. Wagner  v1.0  15 May 2003  rjwagner@writeme.com

// The Mersenne Twister is an algorithm for generating random numbers.  It
// was designed with consideration of the flaws in various other generators.
// The period, 2^19937-1, and the order of equidistribution, 623 dimensions,
// are far greater.  The generator is also fast; it avoids multiplication and
// division, and it benefits from caches and pipelines.  For more information
// see the inventors' web page at http://www.math.keio.ac.jp/~matumoto/emt.html

// Reference
// M. Matsumoto and T. Nishimura, "Mersenne Twister: A 623-Dimensionally
// Equidistributed Uniform Pseudo-Random Number Generator", ACM Transactions on
// Modeling and Computer Simulation, Vol. 8, No. 1, January 1998, pp 3-30.

// Copyright (C) 1997 - 2002, Makoto Matsumoto and Takuji Nishimura,
// Copyright (C) 2000 - 2003, Richard J. Wagner
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions
// are met:
//
//   1. Redistributions of source code must retain the above copyright
//      notice, this list of conditions and the following disclaimer.
//
//   2. Redistributions in binary form must reproduce the above copyright
//      notice, this list of conditions and the following disclaimer in the
//      documentation and/or other materials provided with the distribution.
//
//   3. The names of its contributors may not be used to endorse or promote
//      products derived from this software without specific prior written
//      permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
// A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR
// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

// The original code included the following notice:
//
//     When you use this, send an email to: matumoto@math.keio.ac.jp
//     with an appropriate reference to your work.
//
// It would be nice to CC: rjwagner@writeme.com and Cokus@math.washington.edu
// when you write.

I must remember to send them an email…

More information about Mersenne Twister can be found here.

sse_mathfun

sire uses sse_mathfun for vectorising intrinsic maths functions on processors that support SSE. These libraries were written by Julien Pommier, and released under the BSD-style zlib license, which is given here.

/* Copyright (C) 2007  Julien Pommier
 This software is provided 'as-is', without any express or implied
 warranty.  In no event will the authors be held liable for any damages
 arising from the use of this software.
 Permission is granted to anyone to use this software for any purpose,
 including commercial applications, and to alter it and redistribute it
 freely, subject to the following restrictions:
 1. The origin of this software must not be misrepresented; you must not
    claim that you wrote the original software. If you use this software
    in a product, an acknowledgment in the product documentation would be
    appreciated but is not required.
 2. Altered source versions must be plainly marked as such, and must not be
    misrepresented as being the original software.
 3. This notice may not be removed or altered from any source distribution.
 (this is the zlib license)
*/

avx_mathfun

This is an AVX library inspired by sse_mathfun, that extends support to processors with AVX instructions. It was written by Giovanni Garberoglio, and is also under a BSD-style zlib license.

AVX implementation of sin, cos, sincos, exp and log
 Based on "sse_mathfun.h", by Julien Pommier
 http://gruntthepeon.free.fr/ssemath/
 Copyright (C) 2012 Giovanni Garberoglio
 Interdisciplinary Laboratory for Computational Science (LISC)
 Fondazione Bruno Kessler and University of Trento
 via Sommarive, 18
 I-38123 Trento (Italy)
This software is provided 'as-is', without any express or implied
warranty.  In no event will the authors be held liable for any damages
arising from the use of this software.
Permission is granted to anyone to use this software for any purpose,
including commercial applications, and to alter it and redistribute it
freely, subject to the following restrictions:
1. The origin of this software must not be misrepresented; you must not
   claim that you wrote the original software. If you use this software
   in a product, an acknowledgment in the product documentation would be
   appreciated but is not required.
2. Altered source versions must be plainly marked as such, and must not be
   misrepresented as being the original software.
3. This notice may not be removed or altered from any source distribution.
(this is the zlib license)

sse2neon

sire uses sse2neon to convert the hand-vectorised SSE2 code to ARM NEON instructions. This worked amazingly well, and we sincerely thank this project for producing such a well-documented and performant header-only library. This is used under a MIT license.

LAP (Linear Assignment Problem Solver)

sire implements its own C++ version of the LAP library for solving the linear assignment problem. This is available here.

The original code is Freeware, with more information about it available from here.

MD5

sire uses the MD5 library written by L. Peter Deutsch. It is used under a BSD-style license, given below.

Copyright (C) 1999, 2002 Aladdin Enterprises.  All rights reserved.
This software is provided 'as-is', without any express or implied
warranty.  In no event will the authors be held liable for any damages
arising from the use of this software.
Permission is granted to anyone to use this software for any purpose,
including commercial applications, and to alter it and redistribute it
freely, subject to the following restrictions:
1. The origin of this software must not be misrepresented; you must not
   claim that you wrote the original software. If you use this software
   in a product, an acknowledgment in the product documentation would be
   appreciated but is not required.
2. Altered source versions must be plainly marked as such, and must not be
   misrepresented as being the original software.
3. This notice may not be removed or altered from any source distribution.
L. Peter Deutsch
ghost@aladdin.com

More information about MD5 libraries in general can be found here.

kabasch fitting

I have written a C++ implementation of the kabasch algorithm for alignment. This was inspired by the calculate_rmsd python script written by Jimmy Charnley Kromann and Lars Bratholm, available https://github.com/charnley/rmsd, and under license;

=====================
Copyright (c) 2013, Jimmy Charnley Kromann <jimmy@charnley.dk> & Lars Bratholm
All rights reserved.

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:

1. Redistributions of source code must retain the above copyright notice, this
   list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright notice,
   this list of conditions and the following disclaimer in the documentation
   and/or other materials provided with the distribution.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
=======================

mdanalysis

I have written a C++ implementation of the _infer_bo_and_charges algorithm from mdanalysis.

The algorithm is described here and here.

The code was written by Matteo Ferla and was released under the GPL.

gemmi

sire uses the gemmi library for reading and writing PDBx/mmCIF files. This is used under the terms of the LGPL3 license. Thanks to this project for providing such a useful header-only C++ library that is easy to bring incorporate into other programs, and that is so well documented and feature-rich. This is provided via an integration that supports interconversion between sire and gemmi objects.

PEGTL

gemmi uses the PEGTL library for parsing mmCIF files. This is used under the terms of the MIT or Boost Software License (the version bundled with gemmi is MIT, while the version on GitHub is BSL)

pyboost11

Thanks to Yung-Yu’s excellent blog post on how to interconvert between boost::python and pybind11, and for providing pyboost11.hpp as a header-only library to support interconversion. This was really useful to let me mix pybind11-wrapped gemmi objects with boost::python-wrapped sire. The code is used under the terms of the liberal open source license given at the top of the header file.

RDKit

sire provides an integration with the RDKit package, supporting interconversion between the sire and RDKit molecular representations. This is used under the terms of the BSD3 license.

Python Dependencies

ap (ascii plot)

sire bundles the Python “ap” library for drawing ascii graphs. This is available as “Sire.Tools.ap”

Version 0.9 written by M. Fouesneau is included, available freely from GitHub here. The only change I’ve made is running this through Python’s 2to3 program to make this code work with Python 3.

The header documentation reads;

Package that allows you to plot simple graphs in ASCII, a la matplotlib.
This package is a inspired from Imri Goldberg's ASCII-Plotter 1.0
(https://pypi.python.org/pypi/ASCII-Plotter/1.0)
At a time I was enoyed by security not giving me direct access to my computer,
and thus to quickly make figures from python, I looked at how I could make
quick and dirty ASCII figures. But if I were to develop something, I wanted
something that can be used with just python and possible standard-ish packages
(numpy, scipy).
So I came up with this package after many iterations based of ASCII-plotter.
I added the feature to show multiple curves on one plot with different markers.
And I also made the usage, close to matplotlib, such that there is a plot,
hist, hist2d and imshow functions.

TODO:
    imshow does not plot axis yet.
    make a correct documentation

lazy_import

sire uses lazy_import to lazy load the modules. This is licensed under the GPLv3.

rich

sire uses rich to provide rich console output when printing. This is licensed under the GPL-compatible MIT license.

pandas

sire uses pandas to output data in DataFrames that can be more easily operated on and explored by users. Pandas is BSD-licensed, so compatible with the GPL.