pygsl

PyGSL is a Python wrapper for the GNU Scientific Library (GSL).

https://github.com/pygsl/pygsl

Science Score: 54.0%

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

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
  • Academic publication links
  • Committers with academic emails
    4 of 9 committers (44.4%) from academic institutions
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (15.0%) to scientific vocabulary
Last synced: 6 months ago · JSON representation ·

Repository

PyGSL is a Python wrapper for the GNU Scientific Library (GSL).

Basic Info
  • Host: GitHub
  • Owner: pygsl
  • License: gpl-2.0
  • Language: C
  • Default Branch: main
  • Homepage:
  • Size: 4.34 MB
Statistics
  • Stars: 33
  • Watchers: 4
  • Forks: 9
  • Open Issues: 22
  • Releases: 10
Created almost 5 years ago · Last pushed 11 months ago
Metadata Files
Readme Changelog License Citation

README.rst

PyGSL: Python interface for GNU Scientific Library
==================================================


.. image:: https://img.shields.io/pypi/v/pygsl.svg
        :target: https://pypi.python.org/pypi/pygsl

.. image:: https://img.shields.io/conda/vn/conda-forge/pygsl
        :target: https://anaconda.org/conda-forge/pygsl

..
  .. image:: https://img.shields.io/codecov/c/github/bluesky/pygsl
          :target: https://codecov.io/gh/pygsl/pygsl

.. image:: https://img.shields.io/github/commits-since/pygsl/pygsl/latest
        :target: https://github.com/pygsl/pygsl

.. image:: https://img.shields.io/pypi/dm/pygsl?label=PyPI%20downloads
        :target: https://pypi.python.org/pypi/pygsl

.. image:: https://img.shields.io/conda/dn/conda-forge/pygsl?label=Conda-Forge%20downloads
        :target: https://anaconda.org/conda-forge/pygsl




PyGSL is a Python wrapper for the `GNU Scientific Library (GSL) `_. Nearly all modules are wrapped. A lot of tests are covering various functionality.

Please report it as a `Github Issue `_ if you find a bug. We are looking forward to contributions of new submodules, while maintaining the available code, and welcome `pull requests `_.

PyGSL moved from Sourceforge to GitHub in 2021.

Requirements
------------

To build the interface, you will need

- `GSL 2.x `_
- `Python 3.9 `_ or newer
- `NumPy `_
- Swig4 _
- an ANSI C compiler (e.g. gcc).
- A Posix 1 compliant operating system

Since version 2.6 PyGSL is built using meson-python. Swig must be always
installed to build PyGSL.Meson-python will be automatically
installed by PyPI during the build process.

Installing PyGSL
----------------

Installing via PyPI
~~~~~~~~~~~~~~~~~~~


PyGSL can also installed using the pip package installer.
SWIG is required to be installed and can usually be found via your distribution's package manager
(for example, ``apt install swig``).

To install PyGSL from PyPI, first install

.. code-block:: sh

   pip install --upgrade pip wheel

.. code-block:: sh

   pip install pygsl

To remove PyGSL, use:

.. code-block:: sh

   pip uninstall pygsl


Building it locally
~~~~~~~~~~~~~~~~~~~

It can be useful to install PyGSL locally e.g. if the automatic build process fails.
In a first step, update the packages `pip` and `wheel` as

.. code-block:: sh

   pip install --upgrade build

-- code-block:: sh

   python3 -m build -w .



Using PyGSL
-----------

Do NOT test the interface in the distribution root directory! -- please
install it first and then change to the tests directory and execute ``python
-m pytest .``.


Just write in Python

.. code-block:: python

   import pygsl.sf
   print("%g+/-%g"%pygsl.sf.erf(1))

or

.. code-block:: python

   import pygsl.rng
   rng=pygsl.rng.rng()
   print rng.gaussian(1.0)

You may set the environment variable ``LD_LIBRARY_PATH`` to find the gsl
shared object.


Supported Platforms
-------------------

- Linux with Python 3.x and GSL 2.x
- Mac OS X with Python 3.x and GSL 2.x

but is supposed to compile and run on any posix platform.

Currently it is being tested using GitHub Actions continuous integration on:

- Python 3.9 -- 3.12, numpy 1.x and 2.x  and GSL 2.7.1 under Ubuntu Linux 22.04.2.


Testing
-------

The directory test will contain several testsuites, based on Python
unittest. Change to this directory to run the tests.

What is implemented (versus GSL 2.1):

- Blas
- BSplines
- Chebyshev
- Combination
- Const
- Diff
- Eigen
- Fit
- Ieee
- Integrate
- Interpolation
- Interpolation2D
- Linalg
- Math
- Minimize
- Multifit
- Multifit_nlin
- Multimin
- Multiroots
- Odeiv
- Permutation
- Poly
- Qrng
- Rng
- Roots
- Siman
- Sf
- Spline
- Statistics


What is not implemented yet (versus GSL 2.7)
---------------------------------------------

- GSL Capabilites not yet wrapped by PyGSL

    - Sorting
    - N-tuples

- GSL Capabilites partly implemented

    - Discrete Hankel Transforms

See also the TODO file in the distribution.

For the exact function volume for a module, please type:

.. code-block:: python

   from pygsl.testing import sf
   dir(sf)

You can do this with the other modules, too. The naming scheme is the same
as in GSL.


Documentation
-------------

The function reference can be found in the docstrings and at the gsl-reference.

Written documentation can be found in the ``doc/ref`` directory.

See also the ``examples`` directory.


Support
-------

Support requests and all other questions should be submitted as a `GitHub Issue `_.

Developement
------------

You can browse our `git repository `_.

If you want to contribute to PyGSL, please fork the repository and create a pull request.

The script tools/extract_tool.py generates most of the special function code.

History
-------

A GSL interface for Python was needed for a project at `Center for
applied informatics Cologne `_.

pygsl-0.0.3 was released on May 23, 2001.

Thanks
------

* Charl Linssen for continous integration
* Jochen Küpper for pygsl.statistics
* Fabian Jakobs for pygsl.blas, pygsl.eigen,
  pygsl.linalg and pygsl.permutation
* Leonardo Milano for rpm build support and test
* Eric Gurrola and Peter Stoltz for testing and supporting the port of
  pygsl to the MAC
* Sebastien Maret for supporting the Fink http://fink.sourceforge.net
  port of pygsl.
* Michael Forbes for Series Acceleration
* Sergei Ossokine
* Jerry James
* and all for support by providing feed back on testing or showing by
  email that the code is useful for them


Maintainers
-----------

PyGSL is currently maintained by `Achim Gaedke `_, `Pierre Schnizer `_ and `Charl Linssen `_.

Owner

  • Name: pygsl
  • Login: pygsl
  • Kind: organization

Citation (citation.cff)

# This CITATION.cff file was generated with cffinit.
# Visit https://bit.ly/cffinit to generate yours today!

cff-version: 1.2.0
title: pygsl
message: Python wrapper for the GNU Scientific Library
type: software
authors:
  - given-names: Pierre
    family-names: Schnizer
    email: pierre.schnizer@helmholtz-berlin.de
    orcid: 'https://orcid.org/0000-0002-2897-7855'
  - given-names: Achim
    family-names: Gädke
    email: achim.gaedke@gmail.com
  - given-names: Charl
    family-names: Linssen
    email: c.linssen@fz-juelich.de
  - given-names: Jochen
    family-names: Küpper
  - name: Fabian
  - given-names: Fabian
    family-names: Jacobs
  - given-names: Eric
    family-names: Gurrola
  - given-names: Sebastian
    family-names: Maret
  - given-names: Michael
    family-names: Forbes
  - given-names: Sergei
    family-names: Ossokine
  - given-names: Jerry
    family-names: James
identifiers:
  - type: other
    value: 'https://www.gnu.org/software/gsl/'
    description: GNU Scientific library
repository-code: 'https://github.com/pygsl/pygsl.git'
url: 'https://github.com/pygsl/pygsl'
abstract: >-
  PyGSL is a Python wrapper for the GNU Scientific Library
  (GSL,  https://www.gnu.org/software/gsl/) Nearly all
  modules are wrapped.
license: GPL-2.0
version: 2.6.2
date-released: '11. April 2025'

GitHub Events

Total
  • Create event: 24
  • Release event: 4
  • Issues event: 13
  • Watch event: 10
  • Delete event: 21
  • Issue comment event: 29
  • Push event: 107
  • Pull request review event: 1
  • Pull request review comment event: 4
  • Pull request event: 36
  • Fork event: 1
Last Year
  • Create event: 24
  • Release event: 4
  • Issues event: 13
  • Watch event: 10
  • Delete event: 21
  • Issue comment event: 29
  • Push event: 107
  • Pull request review event: 1
  • Pull request review comment event: 4
  • Pull request event: 36
  • Fork event: 1

Committers

Last synced: almost 3 years ago

All Time
  • Total Commits: 1,095
  • Total Committers: 9
  • Avg Commits per committer: 121.667
  • Development Distribution Score (DDS): 0.202
Top Committers
Name Email Commits
Pierre Schnizer s****r@u****t 874
Achim G"adke a****e@u****t 80
Pierre Schnizer P****r@h****e 72
C.A.P. Linssen c****n@f****e 24
Pierre Schnizer p****r@h****e 14
Jochen Kuepper k****r@u****t 14
C.A.P. Linssen c****l@t****m 10
Sebastien Maret 6
Serguei Ossokine s****e@a****e 1
Committer Domains (Top 20 + Academic)

Issues and Pull Requests

Last synced: 6 months ago

All Time
  • Total issues: 36
  • Total pull requests: 73
  • Average time to close issues: 4 months
  • Average time to close pull requests: 15 days
  • Total issue authors: 24
  • Total pull request authors: 5
  • Average comments per issue: 2.64
  • Average comments per pull request: 0.45
  • Merged pull requests: 52
  • Bot issues: 0
  • Bot pull requests: 0
Past Year
  • Issues: 8
  • Pull requests: 44
  • Average time to close issues: about 1 month
  • Average time to close pull requests: 7 days
  • Issue authors: 8
  • Pull request authors: 3
  • Average comments per issue: 2.13
  • Average comments per pull request: 0.34
  • Merged pull requests: 27
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
  • clinssen (4)
  • jose-matos (4)
  • milen-prg (3)
  • SergeiOssokine (2)
  • steffengraber (2)
  • adwaitk06 (2)
  • TimBerberich (2)
  • matthias-baur (1)
  • marfari (1)
  • Saakethjayarama (1)
  • beykyle (1)
  • amesgen (1)
  • WarrenWeckesser (1)
  • sylviankahane (1)
  • opoplawski (1)
Pull Request Authors
  • PierreSchnizer (63)
  • jamesjer (13)
  • clinssen (8)
  • SergeiOssokine (2)
  • amesgen (2)
Top Labels
Issue Labels
Pull Request Labels
bug (4)

Packages

  • Total packages: 1
  • Total downloads:
    • pypi 361 last-month
  • Total dependent packages: 1
  • Total dependent repositories: 4
  • Total versions: 9
  • Total maintainers: 4
pypi.org: pygsl

GNU Scientific Library Interface

  • Versions: 9
  • Dependent Packages: 1
  • Dependent Repositories: 4
  • Downloads: 361 Last month
Rankings
Dependent packages count: 4.8%
Dependent repos count: 7.5%
Average: 10.7%
Downloads: 12.6%
Forks count: 14.2%
Stargazers count: 14.6%
Last synced: 7 months ago

Dependencies

.github/workflows/pygsl-ci.yml actions
  • actions/checkout v2 composite
  • actions/setup-python v2 composite
  • actions/upload-artifact v3 composite
.github/workflows/pygsl-pypi.yml actions
  • actions/checkout v2 composite
  • actions/setup-python v2 composite
docker/Dockerfile docker
  • ubuntu focal build
pyproject.toml pypi
.github/workflows/pygsl-ci-compat.yml actions
  • actions/cache v4 composite
  • actions/checkout v4 composite
  • actions/download-artifact v4 composite
  • actions/upload-artifact v4 composite
.github/workflows/pypi-publish.yml actions
  • actions/checkout v4 composite
  • actions/download-artifact v4 composite
  • actions/setup-python v5 composite
  • actions/upload-artifact v4 composite
  • pypa/gh-action-pypi-publish release/v1 composite
  • sigstore/gh-action-sigstore-python v3.0.0 composite
bak/setup.py pypi
  • numpy *