{"diffoscope-json-version": 1, "source1": "/srv/reproducible-results/rbuild-debian/r-b-build.lYyvG8dy/b1/python-gsd_4.0.0-1_amd64.changes", "source2": "/srv/reproducible-results/rbuild-debian/r-b-build.lYyvG8dy/b2/python-gsd_4.0.0-1_amd64.changes", "unified_diff": null, "details": [{"source1": "Files", "source2": "Files", "unified_diff": "@@ -1,4 +1,4 @@\n \n- 6616013932e9151835cceb14f9e36500 122480 doc optional python-gsd-doc_4.0.0-1_all.deb\n+ 652f1f4e84b222e1c4c4cbb852a36009 122456 doc optional python-gsd-doc_4.0.0-1_all.deb\n d87cd6831dde921ada279435f407c06d 362300 debug optional python3-gsd-dbgsym_4.0.0-1_amd64.deb\n 7f9647f73192c62530ad5b20c3c04475 208964 python optional python3-gsd_4.0.0-1_amd64.deb\n"}, {"source1": "python-gsd-doc_4.0.0-1_all.deb", "source2": "python-gsd-doc_4.0.0-1_all.deb", "unified_diff": null, "details": [{"source1": "file list", "source2": "file list", "unified_diff": "@@ -1,3 +1,3 @@\n -rw-r--r-- 0 0 0 4 2025-08-11 08:32:38.000000 debian-binary\n -rw-r--r-- 0 0 0 2708 2025-08-11 08:32:38.000000 control.tar.xz\n--rw-r--r-- 0 0 0 119580 2025-08-11 08:32:38.000000 data.tar.xz\n+-rw-r--r-- 0 0 0 119556 2025-08-11 08:32:38.000000 data.tar.xz\n"}, {"source1": "control.tar.xz", "source2": "control.tar.xz", "unified_diff": null, "details": [{"source1": "control.tar", "source2": "control.tar", "unified_diff": null, "details": [{"source1": "./md5sums", "source2": "./md5sums", "unified_diff": null, "details": [{"source1": "./md5sums", "source2": "./md5sums", "comments": ["Files differ"], "unified_diff": null}]}]}]}, {"source1": "data.tar.xz", "source2": "data.tar.xz", "unified_diff": null, "details": [{"source1": "data.tar", "source2": "data.tar", "unified_diff": null, "details": [{"source1": "file list", "source2": "file list", "unified_diff": "@@ -71,15 +71,15 @@\n -rw-r--r-- 0 root (0) root (0) 23272 2025-08-11 08:32:38.000000 ./usr/share/doc/python-gsd-doc/html/python-api.html\n -rw-r--r-- 0 root (0) root (0) 88696 2025-08-11 08:32:38.000000 ./usr/share/doc/python-gsd-doc/html/python-module-gsd.fl.html\n -rw-r--r-- 0 root (0) root (0) 95626 2025-08-11 08:32:38.000000 ./usr/share/doc/python-gsd-doc/html/python-module-gsd.hoomd.html\n -rw-r--r-- 0 root (0) root (0) 49510 2025-08-11 08:32:38.000000 ./usr/share/doc/python-gsd-doc/html/python-module-gsd.pygsd.html\n -rw-r--r-- 0 root (0) root (0) 18753 2025-08-11 08:32:38.000000 ./usr/share/doc/python-gsd-doc/html/python-module-gsd.version.html\n -rw-r--r-- 0 root (0) root (0) 107552 2025-08-11 08:32:38.000000 ./usr/share/doc/python-gsd-doc/html/schema-hoomd.html\n -rw-r--r-- 0 root (0) root (0) 16657 2025-08-11 08:32:38.000000 ./usr/share/doc/python-gsd-doc/html/search.html\n--rw-r--r-- 0 root (0) root (0) 73229 2025-08-11 08:32:38.000000 ./usr/share/doc/python-gsd-doc/html/searchindex.js\n+-rw-r--r-- 0 root (0) root (0) 73241 2025-08-11 08:32:38.000000 ./usr/share/doc/python-gsd-doc/html/searchindex.js\n -rw-r--r-- 0 root (0) root (0) 32663 2025-08-11 08:32:38.000000 ./usr/share/doc/python-gsd-doc/html/shapes.html\n -rw-r--r-- 0 root (0) root (0) 20809 2025-08-11 08:32:38.000000 ./usr/share/doc/python-gsd-doc/html/specification.html\n -rw-r--r-- 0 root (0) root (0) 24982 2025-08-11 08:32:38.000000 ./usr/share/doc/python-gsd-doc/html/style.html\n drwxr-xr-x 0 root (0) root (0) 0 2025-08-11 08:32:38.000000 ./usr/share/doc-base/\n -rw-r--r-- 0 root (0) root (0) 331 2025-08-11 08:32:38.000000 ./usr/share/doc-base/python-gsd-doc.python-gsd\n lrwxrwxrwx 0 root (0) root (0) 0 2025-08-11 08:32:38.000000 ./usr/share/doc/python-gsd-doc/html/_static/doctools.js -> ../../../../javascript/sphinxdoc/1.0/doctools.js\n lrwxrwxrwx 0 root (0) root (0) 0 2025-08-11 08:32:38.000000 ./usr/share/doc/python-gsd-doc/html/_static/language_data.js -> ../../../../javascript/sphinxdoc/1.0/language_data.js\n"}, {"source1": "./usr/share/doc/python-gsd-doc/html/hoomd-examples.html", "source2": "./usr/share/doc/python-gsd-doc/html/hoomd-examples.html", "unified_diff": "@@ -354,23 +354,23 @@\n Out[16]: np.uint64(5)\n \n In [17]: frame.particles.N\n Out[17]: np.uint32(9)\n \n In [18]: frame.particles.position\n Out[18]: \n-array([[0.2448324 , 0.4248788 , 0.03036282],\n- [0.09682854, 0.5456384 , 0.03632759],\n- [0.05022744, 0.04346096, 0.7365458 ],\n- [0.18079156, 0.7473205 , 0.51275426],\n- [0.7295292 , 0.37780795, 0.9342821 ],\n- [0.805061 , 0.6408879 , 0.67015564],\n- [0.6312153 , 0.35059008, 0.8324852 ],\n- [0.78022105, 0.32808965, 0.18684301],\n- [0.65824497, 0.21917616, 0.61023533]], dtype=float32)\n+array([[0.8300317 , 0.6433904 , 0.88677955],\n+ [0.9174645 , 0.28754658, 0.7540563 ],\n+ [0.7841679 , 0.73606324, 0.03237678],\n+ [0.07652885, 0.78441316, 0.26030752],\n+ [0.6771271 , 0.24711876, 0.89931047],\n+ [0.28426662, 0.08380098, 0.07250234],\n+ [0.06633534, 0.76704437, 0.22600213],\n+ [0.8664561 , 0.89306444, 0.8969469 ],\n+ [0.5709988 , 0.11224406, 0.94705933]], dtype=float32)\n \n \n
gsd.hoomd.HOOMDTrajectory
supports random indexing of frames in the file.\n Indexing into a trajectory returns a gsd.hoomd.Frame
.
In [23]: f = gsd.pygsd.GSDFile(open('example.gsd', 'rb'))\n \n In [24]: trajectory = gsd.hoomd.HOOMDTrajectory(f);\n \n In [25]: trajectory[3].particles.position\n Out[25]: \n-array([[0.57121 , 0.731209 , 0.35579365],\n- [0.41756624, 0.9366235 , 0.6583382 ],\n- [0.641247 , 0.1326517 , 0.628977 ],\n- [0.29231876, 0.8117944 , 0.8759391 ],\n- [0.20119959, 0.5564307 , 0.46785906],\n- [0.6268789 , 0.2843572 , 0.11323138],\n- [0.75064737, 0.11587842, 0.03046744]], dtype=float32)\n+array([[0.5927836 , 0.32609093, 0.04699515],\n+ [0.32690832, 0.98091334, 0.7284996 ],\n+ [0.08499312, 0.50255823, 0.02372489],\n+ [0.6917006 , 0.16607437, 0.18782897],\n+ [0.93474716, 0.3432794 , 0.9952016 ],\n+ [0.5984785 , 0.4091289 , 0.55379504],\n+ [0.7263609 , 0.05809404, 0.97646195]], dtype=float32)\n
You can use GSD without needing to compile C code to read GSD files\n using gsd.pygsd.GSDFile
in combination with gsd.hoomd.HOOMDTrajectory
. It\n only supports the rb
mode and does not read files as fast as the C\n implementation. It takes in a python file-like object, so it can be used with\n in-memory IO classes, and grid file classes that access data over the internet.