FastJet和NumPy之间的接口
项目描述
pyjet 在过去几年中一直保持简约风格。在此期间,Scikit-HEP生态系统启动了一个新项目,以提供一个现代化的Pythonic喷注查找包。
fastjet 提供了官方FastJet绑定到Python和Awkward Array。 有关详细信息,请参阅GitHub存储库。
pyjet:FastJet和NumPy之间的接口
pyjet 允许您在 FastJet 上使用 NumPy 数组进行喷注聚类。默认情况下,pyjet 仅依赖于 NumPy,并在内部使用 FastJet 的独立 fjcore 版本。接口代码使用 Cython 编写,然后编译为 C++,因此速度快。请注意,如果您使用 pyjet,则表示您正在使用 FastJet,并且应该引用此处列出的论文 [此处]。
严格依赖
入门
pyjet 提供了 cluster() 函数,该函数接受一个 NumPy 数组作为输入,并返回一个 ClusterSequence,您可以从其中访问喷注
from pyjet import cluster
from pyjet.testdata import get_event
vectors = get_event()
sequence = cluster(vectors, R=1.0, p=-1)
jets = sequence.inclusive_jets() # list of PseudoJets
exclusivejets = sequence.exclusive_jets(3) # Find the cluster history when there are 3 jets
输入以 numpy 的结构数组形式给出。输入数组 vectors 的前四个字段必须是以下之一
np.dtype([('pT', 'f8'), ('eta', 'f8'), ('phi', 'f8'), ('mass', 'f8')])
或者如果 cluster(..., ep=True)
np.dtype([('E', 'f8'), ('px', 'f8'), ('py', 'f8'), ('pz', 'f8')])
请注意,输入数组的字段名称不需要与“pT”,“eta”,“phi”,“mass”等匹配。pyjet 仅假设前四个字段是这些量。此数组还可以有其他类型的任何附加字段。附加字段将成为 PseudoJet 对象的属性。
查看 示例 以开始使用
独立安装
要简单使用内置的 FastJet 源,从您的虚拟环境运行
python -m pip install pyjet
然后就可以使用了!如果您有旧版本的 pip (<10),则需要已安装 Cython 和 Numpy 才能从源代码构建 - 但是在大多数系统上,您应该得到一个二进制轮。
获取 example.py 并运行它
curl -O https://raw.githubusercontent.com/scikit-hep/pyjet/master/examples/example.py python example.py jet# pT eta phi mass #constit. 1 983.280 -0.868 2.905 36.457 34 2 901.745 0.221 -0.252 51.850 34 3 67.994 -1.194 -0.200 11.984 32 4 12.465 0.433 0.673 5.461 13 5 6.568 -2.629 1.133 2.099 9 6 6.498 -1.828 -2.248 3.309 6 The 6th jet has the following constituents: PseudoJet(pt=0.096, eta=-2.166, phi=-2.271, mass=0.000) PseudoJet(pt=2.200, eta=-1.747, phi=-1.972, mass=0.140) PseudoJet(pt=1.713, eta=-2.037, phi=-2.469, mass=0.940) PseudoJet(pt=0.263, eta=-1.682, phi=-2.564, mass=0.140) PseudoJet(pt=1.478, eta=-1.738, phi=-2.343, mass=0.940) PseudoJet(pt=0.894, eta=-1.527, phi=-2.250, mass=0.140) Get the constituents as an array (pT, eta, phi, mass): [( 0.09551261, -2.16560157, -2.27109083, 4.89091390e-06) ( 2.19975694, -1.74672746, -1.97178728, 1.39570000e-01) ( 1.71301882, -2.03656511, -2.46861524, 9.39570000e-01) ( 0.26339374, -1.68243005, -2.56397904, 1.39570000e-01) ( 1.47781519, -1.7378898 , -2.34304346, 9.39570000e-01) ( 0.89353864, -1.52729244, -2.24973202, 1.39570000e-01)] or (E, px, py, pz): [( 0.42190436, -0.06155242, -0.07303395, -0.41095089) ( 6.50193926, -0.85863306, -2.02526044, -6.11692764) ( 6.74203628, -1.33952806, -1.06775374, -6.45273802) ( 0.74600384, -0.22066287, -0.1438199 , -0.68386087) ( 4.43164941, -1.0311407 , -1.05862485, -4.07096881) ( 2.15920027, -0.56111108, -0.69538886, -1.96067711)] Reclustering the constituents of the hardest jet with the kt algorithm [PseudoJet(pt=983.280, eta=-0.868, phi=2.905, mass=36.457)] Go back in the clustering sequence to when there were two jets PseudoJet(pt=946.493, eta=-0.870, phi=2.908, mass=20.117) PseudoJet(pt=36.921, eta=-0.800, phi=2.821, mass=4.119) Ask how many jets there are with a given dcut There are 9 jets with a dcut of 0.5 Get the jets with the given dcut 1 PseudoJet(pt=308.478, eta=-0.865, phi=2.908, mass=2.119) 2 PseudoJet(pt=256.731, eta=-0.868, phi=2.906, mass=0.140) 3 PseudoJet(pt=142.326, eta=-0.886, phi=2.912, mass=0.829) 4 PseudoJet(pt=135.971, eta=-0.870, phi=2.910, mass=0.140) 5 PseudoJet(pt=91.084, eta=-0.864, phi=2.899, mass=1.530) 6 PseudoJet(pt=30.970, eta=-0.831, phi=2.822, mass=2.124) 7 PseudoJet(pt=7.123, eta=-0.954, phi=2.939, mass=1.017) 8 PseudoJet(pt=5.951, eta=-0.626, phi=2.818, mass=0.748) 9 PseudoJet(pt=4.829, eta=-0.812, phi=3.037, mass=0.384)
使用外部 FastJet 安装
要利用完整的 FastJet 库,包括喷注面积计算和优化的 O(NlnN) kt 和 anti-kt 算法,您首先需要构建和安装 FastJet,然后使用 --external-fastjet 标志安装 pyjet。在构建 FastJet 之前,您需要安装 CGAL 和 GMP。
基于 Debian 的系统(Ubuntu)
sudo apt-get install libcgal-dev libcgal11v5 libgmp-dev libgmp10
基于 RPM 的系统(Fedora)
sudo dnf install gmp.x86_64 gmp-devel.x86_64 CGAL.x86_64 CGAL-devel.x86_64
在 Mac OS 上
brew install cgal gmp wget
然后运行 pyjet 的 install-fastjet.sh 脚本
curl -O https://raw.githubusercontent.com/scikit-hep/pyjet/master/install-fastjet.sh chmod +x install-fastjet.sh sudo ./install-fastjet.sh
现在像这样安装 pyjet
python -m pip install numpy Cython python setup.py install --external-fastjet
pyjet 现在将使用系统上的外部 FastJet 安装。
关于单位
该包对特定单位不敏感,这些单位仅仅是“传播”通过代码。我们建议使用 HEP 单位,如 hepunits 包 的 units 模块中定义的。
值得注意的是,方位角 phi 以弧度表示,从 pi 变化到 pi。
开发
如果您想为开发设置
python3 -m venv .env source .env/bin/activate pip install -e .[dev] pytest
项目详情
下载文件
下载您平台上的文件。如果您不确定选择哪个,请了解有关 安装包 的更多信息。
源分布
构建的版本
pyjet-1.9.0.tar.gz 的散列值
算法 | 散列摘要 | |
---|---|---|
SHA256 | 2896c5a8f241d29b8b1fa19b89efb9707cb5931f2957b67baf6b17ff38d7c6c6 |
|
MD5 | 266f1eabe4efd56dff689c53f0ca9cc4 |
|
BLAKE2b-256 | 13eb3ce3ff19ec50f24995447cf0375ca4257cd560d4b21ce785ca6ee6783436 |
pyjet-1.9.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl 的散列值
算法 | 散列摘要 | |
---|---|---|
SHA256 | fe28997a7d527c7ebf684499a20308f52384f4c8f85f2f46fc2a037c96d35b74 |
|
MD5 | d53c625d988d83a4c8a998a80124eeac |
|
BLAKE2b-256 | 8a305882ab03420e1930c13e9c5d530e2a7f0ab919dd78981fe0d9e977a45ee5 |
pyjet-1.9.0-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl 的散列值
算法 | 散列摘要 | |
---|---|---|
SHA256 | e89f354faddb38bf5c9ef296a0c6fde45157e23da8ed796fa4a6fc2ddf68434a |
|
MD5 | 5d121fc440d040040d1a3404376d6c7b |
|
BLAKE2b-256 | 476099ea189b6232d8cbbaa2123c7629715c78bc29ebe42d0cf064021892a1bb |
pyjet-1.9.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl 的散列值
算法 | 散列摘要 | |
---|---|---|
SHA256 | 14ff6c5574442682eb1d333606f20814bf827ffcc9fe0814b0c6fa2a599bc5ad |
|
MD5 | 75c730b1cff2bf290ec7ec3fb47d6d5d |
|
BLAKE2b-256 | 7c7a90a7d6e1fd002044bb6d04dc8003e34b7d04e2f7418055ea0c56c5f179dd |
pyjet-1.9.0-pp38-pypy38_pp73-manylinux_2_17_i686.manylinux2014_i686.whl 的散列值
算法 | 散列摘要 | |
---|---|---|
SHA256 | 865fa6c914059ad91f6bd66ec6d73e3cf15bf8c46cb9606443989bfd08ec497b |
|
MD5 | 684b1a87a894af755481053ab29d34cb |
|
BLAKE2b-256 | bbb39496bd7b48e68dfaee485999fc17cea59e4d692c0922642f0d1407ae24e6 |
哈希值 用于 pyjet-1.9.0-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
算法 | 散列摘要 | |
---|---|---|
SHA256 | 175b2a1846956cd6da175b1e85971deadfca2c518d167e6b670e7322c78f87cc |
|
MD5 | 9b4aa521a40e1f67e1ed95f27ade9a74 |
|
BLAKE2b-256 | 417cde676c677b517abed8828970c0411d4842434bc25be56f7211c3d0ff8258 |
哈希值 用于 pyjet-1.9.0-pp37-pypy37_pp73-manylinux_2_17_i686.manylinux2014_i686.whl
算法 | 散列摘要 | |
---|---|---|
SHA256 | f82427b94488824abbabb7a656353b403ae69980fbe7a7a11a6728884a9418de |
|
MD5 | 6840e2c19729ff8a34b9c3c9da759167 |
|
BLAKE2b-256 | 8bf38096d42ac41be38efe8d48319c2d36cbf658b7d5ee8fc92b7c4aad784213 |
哈希值 用于 pyjet-1.9.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
算法 | 散列摘要 | |
---|---|---|
SHA256 | e04a07ef3bd7c49e3a762eb02002b15e5b347d40adabdcd429bcb0acedb17e8f |
|
MD5 | d1d6b41496f07248a179009d6cbe6599 |
|
BLAKE2b-256 | 5d0796db082ada806f174a1e6ce9a88a72d944177e2789b67c1f97f2aef90f3e |
哈希值 用于 pyjet-1.9.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl
算法 | 散列摘要 | |
---|---|---|
SHA256 | 59bc11d94b648476ac1f2c4c0f91c025b1cb5d0caaddd9c76530b615f0442bc1 |
|
MD5 | 37d265fee05f5f33a7f64b02927572b3 |
|
BLAKE2b-256 | 62b1083c5b0908d66712a704ce35bdd763920b3d655361daf1f690408abff89a |
哈希值 用于 pyjet-1.9.0-cp310-cp310-macosx_10_9_x86_64.whl
算法 | 散列摘要 | |
---|---|---|
SHA256 | a2a8f9dc78b16c773a18528c2c9530d3246268b65db90bd56057b45f5a9d569c |
|
MD5 | e14d119749587c3bc160801647f4a037 |
|
BLAKE2b-256 | cf5f63d07485502e9042f3569074b9c95ef9e884c948e5dd9159a41fb5a7d09d |
哈希值 用于 pyjet-1.9.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
算法 | 散列摘要 | |
---|---|---|
SHA256 | f012f216a60a69085f838261db54457ee803841ee74e9535bb7f0b0a94e258d0 |
|
MD5 | b4d3bd0162466cff2e8ac964a9561fc7 |
|
BLAKE2b-256 | 54518090c4e986060ec8a421fd0a28b0b2b60c7fc36d9fd78aec4a4b0de1e8c1 |
哈希值 用于 pyjet-1.9.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl
算法 | 散列摘要 | |
---|---|---|
SHA256 | e09f02277c4296ee58026d90f53d08d1661bf32f10b57442fe0f73ec10bc86e8 |
|
MD5 | 4b8e66b225c69255e5aa14da32eb8b97 |
|
BLAKE2b-256 | 59a54c130223927f09695791611e3742ac94d383766396664363afdb30358c78 |
哈希值 for pyjet-1.9.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
算法 | 散列摘要 | |
---|---|---|
SHA256 | d87ccebb17f6c05baed77c92f21a50ef0eeb6c490a21551271a9ec9782d55b83 |
|
MD5 | afc8f9f06fb2fab32cd1b2c6d932a73a |
|
BLAKE2b-256 | 37d19c273fd97c454982daf011da57e3f24aba53fc1331c8eb10e32dd5fe950c |
哈希值 for pyjet-1.9.0-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl
算法 | 散列摘要 | |
---|---|---|
SHA256 | b0bb903784a8574bdcffacf1161abbce0ac9063e102313190f3bb78873857b11 |
|
MD5 | f5e9f86d91824493989556a1dc7cdaae |
|
BLAKE2b-256 | ec9212f940b096ba502980494f1744ce05e457516b76cc78c81787e2ce0330b4 |
哈希值 for pyjet-1.9.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
算法 | 散列摘要 | |
---|---|---|
SHA256 | f88c596049ac7f950d30dc20e3cd10e5513092bad2704075af0e512594611aa8 |
|
MD5 | 9ae5d42e1c9c6db993d087e3d1123c54 |
|
BLAKE2b-256 | 25afbe1d39c2e8e4768aee4e51548b629477477e8e20ce19cd5294f230ab2d45 |
哈希值 for pyjet-1.9.0-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl
算法 | 散列摘要 | |
---|---|---|
SHA256 | f7fea1eb76da948afbc0866d493cb40f710b9729640995bf7c26a97634f913e8 |
|
MD5 | ffd0a9365b7cbed8f2370034d4366fdc |
|
BLAKE2b-256 | fefcc3b8e3d89d8bd976eae156128e415e13caf8fc3ac952a3e7d6494d02020b |
哈希值 for pyjet-1.9.0-cp37-cp37m-macosx_10_9_x86_64.whl
算法 | 散列摘要 | |
---|---|---|
SHA256 | 8dce3297b5083ecb04861a49af28eb49018f7559c2059dc147cd8baeed78e233 |
|
MD5 | 8db3e2abbc16a5c443d974f561aa0117 |
|
BLAKE2b-256 | fcae23459ae2e414db98a438771e1f6b4b271082ff275f67fd8f834bef7e3da9 |