{"id":48491596,"url":"https://github.com/mpes-kit/mpes","last_synced_at":"2026-04-07T11:33:19.812Z","repository":{"id":41869106,"uuid":"87291987","full_name":"mpes-kit/mpes","owner":"mpes-kit","description":"Distributed data processing routines for multidimensional photoemission spectroscopy (MPES)","archived":false,"fork":false,"pushed_at":"2025-10-15T22:21:16.000Z","size":28844,"stargazers_count":32,"open_issues_count":1,"forks_count":7,"subscribers_count":11,"default_branch":"master","last_synced_at":"2026-01-27T12:23:59.645Z","etag":null,"topics":["arpes","condensed-matter-physics","dask","distortion-correction","distributed-processing","electron-spectroscopy","fitting","instrument-calibration","lineshape","materials-science","mpes","pes","photoemission","physics","python","spectroscopy","visualization"],"latest_commit_sha":null,"homepage":"https://mpes-kit.github.io/mpes/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mpes-kit.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2017-04-05T09:34:06.000Z","updated_at":"2025-12-05T10:07:42.000Z","dependencies_parsed_at":"2023-02-13T03:46:15.502Z","dependency_job_id":null,"html_url":"https://github.com/mpes-kit/mpes","commit_stats":null,"previous_names":[],"tags_count":7,"template":false,"template_full_name":null,"purl":"pkg:github/mpes-kit/mpes","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mpes-kit%2Fmpes","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mpes-kit%2Fmpes/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mpes-kit%2Fmpes/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mpes-kit%2Fmpes/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mpes-kit","download_url":"https://codeload.github.com/mpes-kit/mpes/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mpes-kit%2Fmpes/sbom","scorecard":{"id":662773,"data":{"date":"2025-08-11","repo":{"name":"github.com/mpes-kit/mpes","commit":"718d5826cd9192a52598e355ea146a94dfc4db84"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":1.7,"checks":[{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Code-Review","score":0,"reason":"Found 0/2 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Pinned-Dependencies","score":-1,"reason":"no dependencies found","details":null,"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE.md:0","Info: FSF or OSI recognized license: MIT License: LICENSE.md:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 30 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Vulnerabilities","score":0,"reason":"43 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GHSA-h2x6-5jx5-46hf","Warn: Project is vulnerable to: PYSEC-2021-387 / GHSA-j8fq-86c5-5v2r","Warn: Project is vulnerable to: PYSEC-2018-34 / GHSA-2fc2-6r4j-p65h","Warn: Project is vulnerable to: PYSEC-2021-856 / GHSA-5545-2q6w-2gh6","Warn: Project is vulnerable to: PYSEC-2019-108 / GHSA-9fq2-x9r6-wfmf","Warn: Project is vulnerable to: PYSEC-2018-33 / GHSA-cw6w-4rcx-xphc","Warn: Project is vulnerable to: PYSEC-2021-857 / GHSA-f7c7-j99h-c22f","Warn: Project is vulnerable to: GHSA-fpfv-jqm9-f5jm","Warn: Project is vulnerable to: PYSEC-2017-1 / GHSA-frgw-fgh6-9g52","Warn: Project is vulnerable to: GHSA-267x-w5hx-8hjr","Warn: Project is vulnerable to: GHSA-33h2-69j3-r336","Warn: Project is vulnerable to: GHSA-3448-vrgh-85xr","Warn: Project is vulnerable to: GHSA-5rpc-gwh9-q9fg","Warn: Project is vulnerable to: GHSA-634c-v2xv-ffpg","Warn: Project is vulnerable to: GHSA-6v6p-p97v-g2p7","Warn: Project is vulnerable to: GHSA-83rh-hx5x-q9p5","Warn: Project is vulnerable to: GHSA-8849-5h85-98qw","Warn: Project is vulnerable to: GHSA-89rj-5ggj-3p9p","Warn: Project is vulnerable to: GHSA-8w3x-457r-wg53","Warn: Project is vulnerable to: GHSA-9g8h-pjm4-q92p","Warn: Project is vulnerable to: GHSA-c7gp-2pch-qh2v","Warn: Project is vulnerable to: GHSA-cvhw-2593-5j2q","Warn: Project is vulnerable to: GHSA-fffj-9qwg-qmh5","Warn: Project is vulnerable to: GHSA-fm39-cw8h-3p63","Warn: Project is vulnerable to: GHSA-fr58-2xhv-qp3w","Warn: Project is vulnerable to: GHSA-fvq6-392h-6mjj","Warn: Project is vulnerable to: GHSA-fw99-f933-rgh8","Warn: Project is vulnerable to: GHSA-hxfw-jm98-v4mq","Warn: Project is vulnerable to: GHSA-jcxv-2j3h-mg59","Warn: Project is vulnerable to: GHSA-jggw-2q6g-c3m6","Warn: Project is vulnerable to: GHSA-m43c-649m-pm48","Warn: Project is vulnerable to: GHSA-m6vm-8g8v-xfjh","Warn: Project is vulnerable to: GHSA-pqjj-6f5q-gqph","Warn: Project is vulnerable to: GHSA-q799-q27x-vp7w","Warn: Project is vulnerable to: GHSA-qr4w-53vh-m672","Warn: Project is vulnerable to: GHSA-rqxg-xvcq-3v2f","Warn: Project is vulnerable to: GHSA-vc29-rj92-gc7j","Warn: Project is vulnerable to: GHSA-w96g-3p64-63wr","Warn: Project is vulnerable to: GHSA-wq8f-wvqp-xvvm","Warn: Project is vulnerable to: GHSA-x3rm-644h-67m8","Warn: Project is vulnerable to: PYSEC-2023-183","Warn: Project is vulnerable to: PYSEC-2020-73","Warn: Project is vulnerable to: PYSEC-2017-74"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-21T16:43:51.261Z","repository_id":41869106,"created_at":"2025-08-21T16:43:51.262Z","updated_at":"2025-08-21T16:43:51.262Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31511739,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-07T03:10:19.677Z","status":"ssl_error","status_checked_at":"2026-04-07T03:10:13.982Z","response_time":105,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["arpes","condensed-matter-physics","dask","distortion-correction","distributed-processing","electron-spectroscopy","fitting","instrument-calibration","lineshape","materials-science","mpes","pes","photoemission","physics","python","spectroscopy","visualization"],"created_at":"2026-04-07T11:33:19.694Z","updated_at":"2026-04-07T11:33:19.792Z","avatar_url":"https://github.com/mpes-kit.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# mpes\n\n![Build Status](https://www.travis-ci.org/RealPolitiX/mpes.svg?branch=master) ![License](https://img.shields.io/github/license/mpes-kit/mpes?color=lightgrey) [![Downloads](https://pepy.tech/badge/mpes)](https://pepy.tech/project/mpes)\n\nDistributed data processing routines for multidimensional photoemission spectroscopy (MPES), an upgrade of the angle-resolved photoemission spectroscopy (ARPES) to achieve parallel data acquisition on multiple parameters by the use of a time-of-flight tube and a multichannel delay-line detector.\n\n![Banner](https://github.com/mpes-kit/mpes/blob/master/resources/figures/Schematic.png)\n\nIn a photoemission process, an extreme UV or X-ray photon liberates an electron from the confines of the electronic potential within the material. [ARPES](https://en.wikipedia.org/wiki/Angle-resolved_photoemission_spectroscopy) directly measures the electronic energy and momentum parallel to the surface of the sample under study to infer the electronic states of the material. For a tutorial review on ARPES and its applications in physics and material science, see [here](http://www.phas.ubc.ca/~damascel/ARPES_Intro.pdf). The data structure of ARPES is a stack of 2D images measured at different sample geometries, which are used to reconstruct the full static 3D band structure of the material.\n\n\nThe MPES instrument enables sampling of the multidimensional parameter space associated with the electronic band structure at an elevated speed. At the minimum, it measures the two parallel momenta and the energy of photoelectrons simultaneously. The measurement procedure can be extended with recording of varying external parameters such as the temperature, photon polarization, dynamical time delay as in a time-resolved ARPES ([trARPES](http://ac.els-cdn.com/S036820481400108X/1-s2.0-S036820481400108X-main.pdf?_tid=00fe4a76-705f-11e7-aa2e-00000aacb35f\u0026acdnat=1500894080_b61b6aadc82bb357e2797ddac6419991)) experiments using a ultrafast laser system (~ fs resolution), etc. These different flavors of momentum-resolved photoemission experiment together yield a complete understanding of the electronic properties of materials under equilibrium and nonequilibrium conditions for realistic design and simulation of electronic devices.\n\n### Installation\n\n1. Install from scratch\n\n    \u003cpre\u003e\u003ccode class=\"console\"\u003e pip install git+https://github.com/mpes-kit/mpes.git\n    \u003c/code\u003e\u003c/pre\u003e\n\n2. Upgrade or overwrite an existing installation\n\n    \u003cpre\u003e\u003ccode class=\"console\"\u003e pip install --upgrade git+https://github.com/mpes-kit/mpes.git\n    \u003c/code\u003e\u003c/pre\u003e\n\n3. [PyPI](https://pypi.org/project/mpes/) installation\n\n    \u003cpre\u003e\u003ccode class=\"console\"\u003e pip install mpes\n    \u003c/code\u003e\u003c/pre\u003e\n\n4. Install a specific version\n\n    \u003cpre\u003e\u003ccode class=\"console\"\u003e # version 1.0.9 from PyPI\n    pip install mpes==1.0.9\n\n    # version 0.9.8 from GitHub\n    pip install --upgrade git+https://github.com/mpes-kit/mpes.git@0.9.8\n    \u003c/code\u003e\u003c/pre\u003e\n\n### Documentation and tutorials\n\nDocumentation on the usage is posted [here](https://mpes-kit.github.io/mpes/) and examples are provided in [Jupyter notebooks](https://github.com/mpes-kit/mpes/tree/master/examples).\n\nList of current tutorials are viewable using [nbviewer](https://nbviewer.jupyter.org) via the links\n\n- [**Tutorial_01_HDF5 File Management**](https://nbviewer.jupyter.org/github/mpes-kit/mpes/blob/master/examples/Tutorial_01_HDF5%20File%20Management.ipynb)\n- [**Tutorial_02_Data Binning**](https://nbviewer.jupyter.org/github/mpes-kit/mpes/blob/master/examples/Tutorial_02_Data%20Binning.ipynb)\n- [**Tutorial_03_Rebinning Artefacts**](https://nbviewer.jupyter.org/github/mpes-kit/mpes/blob/master/examples/Tutorial_03_Rebinning%20Artefacts.ipynb)\n- [**Tutorial_04_Distortion Correction**](https://nbviewer.jupyter.org/github/mpes-kit/mpes/blob/master/examples/Tutorial_04_Distortion%20Correction.ipynb)\n- [**Tutorial_05_Axes Calibration**](https://nbviewer.jupyter.org/github/mpes-kit/mpes/blob/master/examples/Tutorial_05_Axes%20Calibration.ipynb)\n- [**Tutorial_06_MPES_Workflow**](https://nbviewer.jupyter.org/github/mpes-kit/mpes/blob/master/examples/Tutorial_06_MPES_Workflow.ipynb)\n\nThe size of the single-event datasets used in the tutorial [notebooks](https://github.com/mpes-kit/mpes/tree/master/examples) are in the GB to TB range each, which reflect the actual examperimental setting and the light source configuration (see [here](https://doi.org/10.1063/5.0024493) for technical details). Example datasets are made available publicly in a [Zenodo repository](https://doi.org/10.5281/zenodo.3987303). Please always use the latest version of the datasets.\n\n### Reference\n\nIf you want to refer the software in your work, please cite the following paper.\n\nR. P. Xian, Y. Acremann, S. Y. Agustsson, M. Dendzik, K. Bühlmann, D. Curcio, D. Kutnyakhov, F. Pressacco, M. Heber, S. Dong, T. Pincelli, J. Demsar, W. Wurth, P. Hofmann, M.Wolf, M. Scheidgen, L. Rettig, R. Ernstorfer, An open-source, end-to-end workflow for multidimensional photoemission spectroscopy, [Sci. Data 7, 442 (2020)](https://www.nature.com/articles/s41597-020-00769-8).\n\nSpecifically, for the symmetry distortion correction, please cite\n\nR. P. Xian, L. Rettig, R. Ernstorfer, Symmetry-guided nonrigid registration: The case for distortion correction in multidimensional photoemission spectroscopy, [Ultramicroscopy 202, 133 (2019)](https://doi.org/10.1016/j.ultramic.2019.04.004).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmpes-kit%2Fmpes","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmpes-kit%2Fmpes","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmpes-kit%2Fmpes/lists"}