# HOPPET: A Higher Order Perturbative Parton Evolution Toolkit
HOPPET is a package for carrying out DGLAP evolution and other common
manipulations of parton distribution functions (PDFs) in particle
physics. The core package is written in Fortran. This Python interface
provides access to a key subset of the functionality, the part known
in the documentation as the "streamlined" interface.
The full underlying code and documentation can be found at
https://github.com/hoppet-code/hoppet.
## Example usage
```Python
import hoppet as hp
import numpy as np
def main():
# choose the underlying spacing in y=log(1/x):
# smaller spacing gives higher accuracy but slower evolution
dy = 0.1
# choose NNLO evolution
nloop = 3
# Start hoppet
hp.Start(dy, nloop)
asQ0 = 0.35
Q0 = np.sqrt(2.0)
# Do the evolution starting from a standard benchmark initial condition
hp.Evolve(asQ0, Q0, nloop, 1.0, hp.BenchmarkPDFunpol, Q0)
# Evaluate the PDFs at some x values and print them
xvals = [1e-5,1e-4,1e-3,1e-2,0.1,0.3,0.5,0.7,0.9]
Q = 100.0
print('')
print(' Evaluating PDFs at Q =',Q, ' GeV')
print(' x u-ubar d-dbar 2(ubr+dbr) c+cbar gluon')
for ix in range(9):
pdf_array = hp.Eval(xvals[ix], Q)
print('{:7.1E} {:11.4E} {:11.4E} {:11.4E} {:11.4E} {:11.4E}'.format(
xvals[ix],
pdf_array[6 + 2] - pdf_array[6 - 2],
pdf_array[6 + 1] - pdf_array[6 - 1],
2 * (pdf_array[6 - 1] + pdf_array[6 - 2]),
pdf_array[6 - 4] + pdf_array[6 + 4],
pdf_array[6 + 0]
))
hp.DeleteAll()
```
For more examples take a look at
[example_py](https://github.com/hoppet-code/hoppet/tree/master/example_py).
The above example is essentially identical to
[tabulation_example.py](https://github.com/hoppet-code/hoppet/tree/master/example_py/tabulation_example.py)
and prints the output of a typical benchmark PDF.
## Citation policy
If you use this program in a scientific publication we ask that you cite
G.P. Salam, J. Rojo, 'A Higher Order Perturbative Parton Evolution Toolkit (HOPPET)',
Comput. Phys. Commun. 180 (2009) 120-156, [arXiv:0804.3755](https://arxiv.org/abs/0804.3755)
and
A. Karlberg, P. Nason, G.P. Salam, G. Zanderighi & F. Dreyer [arXiv:2510.09310](https://arxiv.org/abs/2510.09310).
Raw data
{
"_id": null,
"home_page": null,
"name": "HOPPET",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.8",
"maintainer_email": null,
"keywords": "physics, pdf, evolution",
"author": "Frederic Dreyer, Alexander Karlberg, Paolo Nason, Juan Rojo, Gavin Salam, Giulia Zanderighi",
"author_email": "Alexander Karlberg <alexander.karlberg@cern.ch>, Gavin Salam <gavin.salam@physics.ox.ac.uk>",
"download_url": "https://files.pythonhosted.org/packages/81/56/30cf686954c99dad49fdf67ec442fdab79a3305699a98b0b0e9318159046/hoppet-2.0.1.tar.gz",
"platform": null,
"description": "# HOPPET: A Higher Order Perturbative Parton Evolution Toolkit\n\nHOPPET is a package for carrying out DGLAP evolution and other common\nmanipulations of parton distribution functions (PDFs) in particle\nphysics. The core package is written in Fortran. This Python interface\nprovides access to a key subset of the functionality, the part known \nin the documentation as the \"streamlined\" interface.\n\nThe full underlying code and documentation can be found at\nhttps://github.com/hoppet-code/hoppet.\n\n## Example usage\n\n```Python\nimport hoppet as hp\nimport numpy as np\n\ndef main():\n # choose the underlying spacing in y=log(1/x): \n # smaller spacing gives higher accuracy but slower evolution\n dy = 0.1 \n # choose NNLO evolution\n nloop = 3 \n # Start hoppet\n hp.Start(dy, nloop)\n \n asQ0 = 0.35\n Q0 = np.sqrt(2.0)\n # Do the evolution starting from a standard benchmark initial condition \n hp.Evolve(asQ0, Q0, nloop, 1.0, hp.BenchmarkPDFunpol, Q0)\n\n # Evaluate the PDFs at some x values and print them\n xvals = [1e-5,1e-4,1e-3,1e-2,0.1,0.3,0.5,0.7,0.9]\n Q = 100.0\n\n print('')\n print(' Evaluating PDFs at Q =',Q, ' GeV')\n print(' x u-ubar d-dbar 2(ubr+dbr) c+cbar gluon')\n for ix in range(9):\n pdf_array = hp.Eval(xvals[ix], Q)\n print('{:7.1E} {:11.4E} {:11.4E} {:11.4E} {:11.4E} {:11.4E}'.format(\n xvals[ix],\n pdf_array[6 + 2] - pdf_array[6 - 2], \n pdf_array[6 + 1] - pdf_array[6 - 1], \n 2 * (pdf_array[6 - 1] + pdf_array[6 - 2]),\n pdf_array[6 - 4] + pdf_array[6 + 4],\n pdf_array[6 + 0]\n ))\n\n hp.DeleteAll()\n``` \nFor more examples take a look at\n[example_py](https://github.com/hoppet-code/hoppet/tree/master/example_py).\nThe above example is essentially identical to\n[tabulation_example.py](https://github.com/hoppet-code/hoppet/tree/master/example_py/tabulation_example.py)\nand prints the output of a typical benchmark PDF.\n\n## Citation policy\n\nIf you use this program in a scientific publication we ask that you cite\n\nG.P. Salam, J. Rojo, 'A Higher Order Perturbative Parton Evolution Toolkit (HOPPET)', \nComput. Phys. Commun. 180 (2009) 120-156, [arXiv:0804.3755](https://arxiv.org/abs/0804.3755)\n\nand \n\nA. Karlberg, P. Nason, G.P. Salam, G. Zanderighi & F. Dreyer [arXiv:2510.09310](https://arxiv.org/abs/2510.09310). \n\n",
"bugtrack_url": null,
"license": "GPL-3.0-or-later",
"summary": "HOPPET: A Higher Order Perturbative Parton Evolution Toolkit",
"version": "2.0.1",
"project_urls": {
"Changelog": "https://github.com/hoppet-code/hoppet/blob/master/NEWS.md",
"Homepage": "https://github.com/hoppet-code",
"Repository": "https://github.com/hoppet-code/hoppet"
},
"split_keywords": [
"physics",
" pdf",
" evolution"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "6c6d706daeae0b392dc1ba2fbcd141c40f51fe1153624781dc701501715964cf",
"md5": "e81b7e8548da35a2c1165a870b65273b",
"sha256": "153c2979aedbff8ed7e3007910a9b5bd6d1cf861a1cfa357b12516ff99c36168"
},
"downloads": -1,
"filename": "hoppet-2.0.1-cp310-cp310-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "e81b7e8548da35a2c1165a870b65273b",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.8",
"size": 6974652,
"upload_time": "2025-10-18T09:49:18",
"upload_time_iso_8601": "2025-10-18T09:49:18.441702Z",
"url": "https://files.pythonhosted.org/packages/6c/6d/706daeae0b392dc1ba2fbcd141c40f51fe1153624781dc701501715964cf/hoppet-2.0.1-cp310-cp310-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "f507a0cc9096e76db7727f27bbce5416132eb48c8b69bf9392c93e949fed586b",
"md5": "c993f93a73604daaf0c6b6142f1def98",
"sha256": "8fbefebe1de82ac7bc38dcfaee928feca6d5e38c9c8458a18ee6136be77bd3e1"
},
"downloads": -1,
"filename": "hoppet-2.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "c993f93a73604daaf0c6b6142f1def98",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.8",
"size": 5881793,
"upload_time": "2025-10-18T09:49:20",
"upload_time_iso_8601": "2025-10-18T09:49:20.353746Z",
"url": "https://files.pythonhosted.org/packages/f5/07/a0cc9096e76db7727f27bbce5416132eb48c8b69bf9392c93e949fed586b/hoppet-2.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "7d7dd6cc0926b117ebdb3c3269e90fe3862ff29ee5d1f9443f819f3b5b1730dd",
"md5": "2ee268eab1612d8deca394f48560f5f1",
"sha256": "8958637b421cb3af90a7f7dc3ffede1b1980d8cde88c3969a30cdcd375358fdd"
},
"downloads": -1,
"filename": "hoppet-2.0.1-cp311-cp311-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "2ee268eab1612d8deca394f48560f5f1",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.8",
"size": 6974670,
"upload_time": "2025-10-18T09:49:21",
"upload_time_iso_8601": "2025-10-18T09:49:21.765286Z",
"url": "https://files.pythonhosted.org/packages/7d/7d/d6cc0926b117ebdb3c3269e90fe3862ff29ee5d1f9443f819f3b5b1730dd/hoppet-2.0.1-cp311-cp311-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "99ddf76925783d139b8d7bc2556c0f696b6175d561b5ac762785e0c194f0fdc9",
"md5": "6d48724076e196396844bb7b60d6021a",
"sha256": "1d18d4d21ef95a39db4abcecb22578952f3fdcca5e01e9e5a604a923e39206b2"
},
"downloads": -1,
"filename": "hoppet-2.0.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "6d48724076e196396844bb7b60d6021a",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.8",
"size": 5881834,
"upload_time": "2025-10-18T09:49:23",
"upload_time_iso_8601": "2025-10-18T09:49:23.523443Z",
"url": "https://files.pythonhosted.org/packages/99/dd/f76925783d139b8d7bc2556c0f696b6175d561b5ac762785e0c194f0fdc9/hoppet-2.0.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "dec167c247248897021711e022950ca467c097d7343fd94193c370a83d80fcd8",
"md5": "8ad8fa22d605b2d57173890fc11a04e8",
"sha256": "6864f4cbbdfba37e1cdf06123415fb0a629b7088d6fad795bd836177b4af7363"
},
"downloads": -1,
"filename": "hoppet-2.0.1-cp312-cp312-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "8ad8fa22d605b2d57173890fc11a04e8",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.8",
"size": 6974912,
"upload_time": "2025-10-18T09:49:25",
"upload_time_iso_8601": "2025-10-18T09:49:25.314188Z",
"url": "https://files.pythonhosted.org/packages/de/c1/67c247248897021711e022950ca467c097d7343fd94193c370a83d80fcd8/hoppet-2.0.1-cp312-cp312-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "b9ebc0e80fa2e4a78b6b86bbf560d46fc936c132c2c230c764898917757fc171",
"md5": "c9fdd79c877f20b8a57688c2a3542c94",
"sha256": "c8f6398e8d63a22a1bd67c02df185490f2aebb11379bbe2d5ca5d8ee9f391fe3"
},
"downloads": -1,
"filename": "hoppet-2.0.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "c9fdd79c877f20b8a57688c2a3542c94",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.8",
"size": 5881972,
"upload_time": "2025-10-18T09:49:26",
"upload_time_iso_8601": "2025-10-18T09:49:26.738062Z",
"url": "https://files.pythonhosted.org/packages/b9/eb/c0e80fa2e4a78b6b86bbf560d46fc936c132c2c230c764898917757fc171/hoppet-2.0.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "43fd1f0caa27507a48a1d50ec602cc8ea8aa751ea613687b710ac54d8b54cd44",
"md5": "e78688c50be4f4d9a46c46b923af4d44",
"sha256": "90a096274b56dab5b22d00625f654dcdf20e6758561c6f1c753d4ef09a4be5b9"
},
"downloads": -1,
"filename": "hoppet-2.0.1-cp313-cp313-macosx_15_0_arm64.whl",
"has_sig": false,
"md5_digest": "e78688c50be4f4d9a46c46b923af4d44",
"packagetype": "bdist_wheel",
"python_version": "cp313",
"requires_python": ">=3.8",
"size": 6976848,
"upload_time": "2025-10-18T09:49:28",
"upload_time_iso_8601": "2025-10-18T09:49:28.493739Z",
"url": "https://files.pythonhosted.org/packages/43/fd/1f0caa27507a48a1d50ec602cc8ea8aa751ea613687b710ac54d8b54cd44/hoppet-2.0.1-cp313-cp313-macosx_15_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "659e7a3bc5a5c54689a9ae361e74b73afcba6f92ea9c0071fd19e14a4d01ec89",
"md5": "3bff9837a8b97e9291b2a516b793a4e4",
"sha256": "a77e0b04f6fe0c262dd440522bb047b8502c019592b84c8dbba77e7c4032308b"
},
"downloads": -1,
"filename": "hoppet-2.0.1-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl",
"has_sig": false,
"md5_digest": "3bff9837a8b97e9291b2a516b793a4e4",
"packagetype": "bdist_wheel",
"python_version": "cp313",
"requires_python": ">=3.8",
"size": 5992869,
"upload_time": "2025-10-18T09:49:30",
"upload_time_iso_8601": "2025-10-18T09:49:30.551409Z",
"url": "https://files.pythonhosted.org/packages/65/9e/7a3bc5a5c54689a9ae361e74b73afcba6f92ea9c0071fd19e14a4d01ec89/hoppet-2.0.1-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "675164a5baf7cb549a15ba83e0016d0f4eca1d0c600dbfdfcfd2fece87d2467b",
"md5": "51114ea8b48a316f8ff9146499c50b81",
"sha256": "7609dc2809fb381c8ef2d1edb69a2e94ed7ccf60f4c92fd6f14d671e2b9f07c1"
},
"downloads": -1,
"filename": "hoppet-2.0.1-cp314-cp314-macosx_15_0_arm64.whl",
"has_sig": false,
"md5_digest": "51114ea8b48a316f8ff9146499c50b81",
"packagetype": "bdist_wheel",
"python_version": "cp314",
"requires_python": ">=3.8",
"size": 6976804,
"upload_time": "2025-10-18T09:49:32",
"upload_time_iso_8601": "2025-10-18T09:49:32.525883Z",
"url": "https://files.pythonhosted.org/packages/67/51/64a5baf7cb549a15ba83e0016d0f4eca1d0c600dbfdfcfd2fece87d2467b/hoppet-2.0.1-cp314-cp314-macosx_15_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "e4bac451b7266f3dd8e35bd67fe0c8c88f5e8350a74f7a828447fb33b1ff197c",
"md5": "191a3bcd631edbb8f1883c65d69bb743",
"sha256": "ff32e708d614cd1c1427c9bd6fadb630dce9a16f18070174db0323d5050f3ebe"
},
"downloads": -1,
"filename": "hoppet-2.0.1-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl",
"has_sig": false,
"md5_digest": "191a3bcd631edbb8f1883c65d69bb743",
"packagetype": "bdist_wheel",
"python_version": "cp314",
"requires_python": ">=3.8",
"size": 5992879,
"upload_time": "2025-10-18T09:49:33",
"upload_time_iso_8601": "2025-10-18T09:49:33.942494Z",
"url": "https://files.pythonhosted.org/packages/e4/ba/c451b7266f3dd8e35bd67fe0c8c88f5e8350a74f7a828447fb33b1ff197c/hoppet-2.0.1-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "8003941d34bc6b41f326a700addfeac144830e6b9af5230037fd3bb7694c5820",
"md5": "45b0b9a0a4713baef9dee60f0371c26c",
"sha256": "121d948d6020d9bed2e8521da815af5262ab14cbfd5e826a3cf9a4fd4f4b761d"
},
"downloads": -1,
"filename": "hoppet-2.0.1-cp39-cp39-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "45b0b9a0a4713baef9dee60f0371c26c",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.8",
"size": 6974850,
"upload_time": "2025-10-18T09:49:35",
"upload_time_iso_8601": "2025-10-18T09:49:35.348968Z",
"url": "https://files.pythonhosted.org/packages/80/03/941d34bc6b41f326a700addfeac144830e6b9af5230037fd3bb7694c5820/hoppet-2.0.1-cp39-cp39-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "83625f3cd9b41710664722c4d5ac57f4a72f5271ea7e990757e2e37c8c733b73",
"md5": "3edf91b68f7952fe90c128d844e8dd4d",
"sha256": "54d978005e8cc1c91e03690cadcd991287a225014247674ac6879b8464c3a932"
},
"downloads": -1,
"filename": "hoppet-2.0.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "3edf91b68f7952fe90c128d844e8dd4d",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.8",
"size": 5881753,
"upload_time": "2025-10-18T09:49:37",
"upload_time_iso_8601": "2025-10-18T09:49:37.116371Z",
"url": "https://files.pythonhosted.org/packages/83/62/5f3cd9b41710664722c4d5ac57f4a72f5271ea7e990757e2e37c8c733b73/hoppet-2.0.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "815630cf686954c99dad49fdf67ec442fdab79a3305699a98b0b0e9318159046",
"md5": "5c6fd501c655bb67da34eb91c75bffdd",
"sha256": "364a7da86ef64f5caa35585c4bee0a1f4acdb63865f88942e6b7ab89f527116f"
},
"downloads": -1,
"filename": "hoppet-2.0.1.tar.gz",
"has_sig": false,
"md5_digest": "5c6fd501c655bb67da34eb91c75bffdd",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.8",
"size": 12942977,
"upload_time": "2025-10-18T09:49:39",
"upload_time_iso_8601": "2025-10-18T09:49:39.107537Z",
"url": "https://files.pythonhosted.org/packages/81/56/30cf686954c99dad49fdf67ec442fdab79a3305699a98b0b0e9318159046/hoppet-2.0.1.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-10-18 09:49:39",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "hoppet-code",
"github_project": "hoppet",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "hoppet"
}