{"id":32176388,"url":"https://github.com/suncat-center/catlearn","last_synced_at":"2025-10-21T19:59:23.109Z","repository":{"id":31893919,"uuid":"130307939","full_name":"SUNCAT-Center/CatLearn","owner":"SUNCAT-Center","description":"A machine learning environment for atomic-scale modeling in surface science and catalysis.","archived":false,"fork":false,"pushed_at":"2024-06-28T07:53:45.000Z","size":94241,"stargazers_count":116,"open_issues_count":11,"forks_count":67,"subscribers_count":18,"default_branch":"master","last_synced_at":"2025-10-21T19:59:09.147Z","etag":null,"topics":["atomistic-machine-learning","catalysis","catalyst","computational-chemistry","machine-learning","materials-informatics","materials-science","nanotechnology","python"],"latest_commit_sha":null,"homepage":"http://catlearn.readthedocs.io/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/SUNCAT-Center.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2018-04-20T04:16:14.000Z","updated_at":"2025-09-21T03:10:21.000Z","dependencies_parsed_at":"2023-01-14T20:15:35.804Z","dependency_job_id":"1a9f5897-c18f-46a8-9ba8-a69010d37c1a","html_url":"https://github.com/SUNCAT-Center/CatLearn","commit_stats":{"total_commits":1580,"total_committers":20,"mean_commits":79.0,"dds":"0.43924050632911393","last_synced_commit":"6a307f32dbef18da9cd848f632d082b8e4f117b1"},"previous_names":[],"tags_count":8,"template":false,"template_full_name":null,"purl":"pkg:github/SUNCAT-Center/CatLearn","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SUNCAT-Center%2FCatLearn","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SUNCAT-Center%2FCatLearn/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SUNCAT-Center%2FCatLearn/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SUNCAT-Center%2FCatLearn/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/SUNCAT-Center","download_url":"https://codeload.github.com/SUNCAT-Center/CatLearn/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SUNCAT-Center%2FCatLearn/sbom","scorecard":{"id":124575,"data":{"date":"2025-08-11","repo":{"name":"github.com/SUNCAT-Center/CatLearn","commit":"6a307f32dbef18da9cd848f632d082b8e4f117b1"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":2.1,"checks":[{"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":"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":"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":"Code-Review","score":6,"reason":"Found 6/9 approved changesets -- score normalized to 6","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":"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":"Binary-Artifacts","score":6,"reason":"binaries present in source code","details":["Warn: binary detected: catlearn/api/magpie/Magpie.jar:1","Warn: binary detected: catlearn/api/magpie/exes/voroExt.exe:1","Warn: binary detected: catlearn/api/magpie/exes/voroExt_MACOS.exe:1","Warn: binary detected: catlearn/api/magpie/exes/voroExt_windows.exe:1"],"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":"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":"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":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: GNU General Public License v3.0: LICENSE: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":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"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":"Vulnerabilities","score":0,"reason":"52 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: PYSEC-2024-230 / GHSA-248v-346w-9cwc","Warn: Project is vulnerable to: PYSEC-2023-135 / GHSA-xqr8-7jwr-rhp7","Warn: Project is vulnerable to: PYSEC-2023-62 / GHSA-m2qf-hxjv-5gpq","Warn: Project is vulnerable to: PYSEC-2024-60 / GHSA-jjg7-2v4v-x38h","Warn: Project is vulnerable to: GHSA-cpwx-vrp4-4pq7","Warn: Project is vulnerable to: GHSA-gmj6-6f8f-6699","Warn: Project is vulnerable to: GHSA-h5c8-rqwp-cp95","Warn: Project is vulnerable to: GHSA-h75v-3vvj-5mfj","Warn: Project is vulnerable to: GHSA-q2x7-8rv6-6q7h","Warn: Project is vulnerable to: PYSEC-2021-856 / GHSA-5545-2q6w-2gh6","Warn: Project is vulnerable to: GHSA-6p56-wp2h-9hxr","Warn: Project is vulnerable to: PYSEC-2019-108 / GHSA-9fq2-x9r6-wfmf","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-2020-73","Warn: Project is vulnerable to: PYSEC-2022-42969","Warn: Project is vulnerable to: PYSEC-2023-117 / GHSA-mrwq-x4v8-fh7p","Warn: Project is vulnerable to: GHSA-9hjg-9r4m-mvj7","Warn: Project is vulnerable to: GHSA-9wx4-h78v-vm56","Warn: Project is vulnerable to: PYSEC-2023-74 / GHSA-j8r2-6x86-q33q","Warn: Project is vulnerable to: PYSEC-2020-107 / GHSA-jjw5-xxj6-pcv5","Warn: Project is vulnerable to: PYSEC-2024-110 / GHSA-jw8x-6495-233v","Warn: Project is vulnerable to: PYSEC-2020-108","Warn: Project is vulnerable to: PYSEC-2023-102","Warn: Project is vulnerable to: PYSEC-2023-114","Warn: Project is vulnerable to: PYSEC-2025-49 / GHSA-5rjg-fvgr-3xxf","Warn: Project is vulnerable to: GHSA-cx63-2mw6-8hw5","Warn: Project is vulnerable to: PYSEC-2022-43012 / GHSA-r9hx-vwmv-q579","Warn: Project is vulnerable to: GHSA-753j-mpmx-qq6g","Warn: Project is vulnerable to: GHSA-7cx3-6m66-7c5m","Warn: Project is vulnerable to: GHSA-8w49-h785-mj3c","Warn: Project is vulnerable to: PYSEC-2023-75 / GHSA-hj3f-6gcp-jg8j","Warn: Project is vulnerable to: GHSA-qppv-j76h-2rpx","Warn: Project is vulnerable to: GHSA-w235-7p84-xx57","Warn: Project is vulnerable to: GHSA-g7vv-2v7x-gj9p","Warn: Project is vulnerable to: GHSA-34jh-p97f-mpxf","Warn: Project is vulnerable to: PYSEC-2023-212 / GHSA-g4mx-q9vg-27p4","Warn: Project is vulnerable to: GHSA-pq67-6m6q-mj2v","Warn: Project is vulnerable to: PYSEC-2023-192 / GHSA-v845-jxx5-vc9f","Warn: Project is vulnerable to: GHSA-2g68-c3qc-8985","Warn: Project is vulnerable to: GHSA-f9vj-2wh5-fj8j","Warn: Project is vulnerable to: PYSEC-2023-221 / GHSA-hrfv-mqp8-q5rw","Warn: Project is vulnerable to: PYSEC-2023-57 / GHSA-px8h-6qxv-m22q","Warn: Project is vulnerable to: GHSA-q34m-jh98-gwm2","Warn: Project is vulnerable to: PYSEC-2023-58 / GHSA-xg9f-g7g7-2323","Warn: Project is vulnerable to: PYSEC-2022-203","Warn: Project is vulnerable to: GHSA-jfmj-5v4g-7637","Warn: Project is vulnerable to: PYSEC-2019-217 / GHSA-462w-v97r-4m45","Warn: Project is vulnerable to: PYSEC-2021-66 / GHSA-g3rq-g295-4j3m","Warn: Project is vulnerable to: PYSEC-2019-41 / GHSA-qfc5-mcwq-26q8","Warn: Project is vulnerable to: PYSEC-2019-140 / GHSA-gq9m-qvpx-68hc","Warn: Project is vulnerable to: GHSA-j544-7q9p-6xp8"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 29 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":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: containerImage not pinned by hash: Dockerfile:1: pin your Docker image by updating jenningspc/catlearn:latest to jenningspc/catlearn:latest@sha256:420bcfadd0d75052a1ef6d0801f5d6df963dee5c2271c77acf327edd6bcf44ac","Warn: containerImage not pinned by hash: setup/Dockerfile:1: pin your Docker image by updating ubuntu:latest to ubuntu:latest@sha256:a08e551cb33850e4740772b38217fc1796a66da2506d312abe51acda354ff061","Warn: pipCommand not pinned by hash: setup/Dockerfile:21","Warn: pipCommand not pinned by hash: setup/Dockerfile:23","Warn: pipCommand not pinned by hash: setup/Dockerfile:23","Info:   0 out of   2 containerImage dependencies pinned","Info:   0 out of   3 pipCommand dependencies pinned"],"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"}}]},"last_synced_at":"2025-08-16T03:26:34.969Z","repository_id":31893919,"created_at":"2025-08-16T03:26:34.969Z","updated_at":"2025-08-16T03:26:34.969Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":280325298,"owners_count":26311419,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-21T02:00:06.614Z","response_time":58,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["atomistic-machine-learning","catalysis","catalyst","computational-chemistry","machine-learning","materials-informatics","materials-science","nanotechnology","python"],"created_at":"2025-10-21T19:59:22.010Z","updated_at":"2025-10-21T19:59:23.103Z","avatar_url":"https://github.com/SUNCAT-Center.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# CatLearn\n\n\u003e An environment for atomistic machine learning in Python for applications in catalysis.\n\n[![DOI](https://zenodo.org/badge/130307939.svg)](https://zenodo.org/badge/latestdoi/130307939) [![Build Status](https://travis-ci.org/SUNCAT-Center/CatLearn.svg?branch=master)](https://travis-ci.org/SUNCAT-Center/CatLearn) [![Coverage Status](https://coveralls.io/repos/github/SUNCAT-Center/CatLearn/badge.svg?branch=master)](https://coveralls.io/github/SUNCAT-Center/CatLearn?branch=master) [![Documentation Status](https://readthedocs.org/projects/catlearn/badge/?version=latest)](http://catlearn.readthedocs.io/en/latest/?badge=latest) [![PyPI version](https://badge.fury.io/py/CatLearn.svg)](https://badge.fury.io/py/CatLearn) [![License: GPL v3](https://img.shields.io/badge/License-GPL%20v3-blue.svg)](https://www.gnu.org/licenses/gpl-3.0)\n\nUtilities for building and testing atomic machine learning models. Gaussian Processes (GP) regression machine learning routines are implemented. These will take any numpy array of training and test feature matrices along with a vector of target values.\n\nIn general, any data prepared in this fashion can be fed to the GP routines, a number of additional functions have been added that interface with [ASE](https://wiki.fysik.dtu.dk/ase/). This integration allows for the manipulation of atoms objects through GP predictions, as well as dynamic generation of descriptors through use of the many ASE functions.\n\nCatLearn also includes the [MLNEB](https://github.com/SUNCAT-Center/CatLearn/tree/master/tutorials/11_NEB) algorithm for efficient transition state search, and the [MLMIN](https://github.com/SUNCAT-Center/CatLearn/tree/master/tutorials/12_MLMin) algorithm for efficient atomic structure optimization.\n\nPlease see the [tutorials](https://github.com/SUNCAT-Center/CatLearn/tree/master/tutorials) for a detailed overview of what the code can do and the conventions used in setting up the predictive models. For an overview of all the functionality available, please read the [documentation](http://catlearn.readthedocs.io/en/latest/).\n\n## Table of contents\n\n-   [Installation](#installation)\n-   [Tutorials](#tutorials)\n-   [Usage](#usage)\n-   [Functionality](#functionality)\n-   [How to cite](#how-to-cite-catlearn)\n-   [Contribution](#contribution)\n\n## Installation\n\n[(Back to top)](#table-of-contents)\n\nThe easiest way to install the code is with:\n\n```shell\n$ pip install catlearn\n```\n\nThis will automatically install the code as well as the dependencies. \n\n### Installation without dependencies\n\n[(Back to top)](#table-of-contents)\n\nIf you want to install catlearn without dependencies, you can do:\n\n```shell\n$ pip install catlearn --no-deps\n```\n\nMLMIN and MLNEB will not need anything apart from ASE 3.17.0 or newer to run, but there are other parts of the code, which need the dependencies listed in [requirements.txt](https://github.com/SUNCAT-Center/CatLearn/blob/master/requirements.txt)\n\n### Developer installation\n\n```shell\n$ git clone https://github.com/SUNCAT-Center/CatLearn.git\n```\n\nAnd then put the `\u003cinstall_dir\u003e/` into your `$PYTHONPATH` environment variable.\n\nYou can install dependencies in with:\n\n```shell\n$ pip install -r requirements.txt\n```\n\n### Docker\n\nTo use the docker image, it is necessary to have [docker](https://www.docker.com) installed and running. After cloning the project, build and run the image as follows:\n\n```shell\n$ docker build -t catlearn .\n```\n\nThen it is possible to use the image in two ways. It is possible to run the docker image as a bash environment in which CatLearn can be used will all dependencies in place.\n\n```shell\n$ docker run -it catlearn bash\n```\n\nOr python can be run from the docker image.\n\n```shell\n$ docker run -it catlearn python2 [file.py]\n$ docker run -it catlearn python3 [file.py]\n```\n\nUse Ctrl + d to exit the docker image when done.\n\n### Optional Dependencies\n\nThe tutorial scripts will generally output some graphical representations of the results etc. For these scripts, it is advisable to have at least `matplotlib` installed:\n\n```shell\n$ pip install matplotlib seaborn\n```\n\n## Tutorials\n\n[(Back to top)](#table-of-contents)\n\nHelpful examples and test scripts are present in [tutorials](https://github.com/SUNCAT-Center/CatLearn/tree/master/tutorials).\n\n## Usage\n\n[(Back to top)](#table-of-contents)\n\nSet up CatLearn's Gaussian Process model and make some predictions using the following lines of code:\n\n```python\nimport numpy as np\nfrom catlearn.regression import GaussianProcess\n\n# Define some input data.\ntrain_features = np.arange(200).reshape(50, 4)\ntarget = np.random.random_sample((50,))\ntest_features = np.arange(100).reshape(25, 4)\n\n# Setup the kernel.\nkernel = [{'type': 'gaussian', 'width': 0.5}]\n\n# Train the GP model.\ngp = GaussianProcess(kernel_list=kernel, regularization=1e-3,\n                     train_fp=train_features, train_target=target,\n                     optimize_hyperparameters=True)\n\n# Get the predictions.\nprediction = gp.predict(test_fp=test_features)\n```\n\n## Functionality\n\n[(Back to top)](#table-of-contents)\n\nThere is much functionality in CatLearn to assist in handling atom data and building optimal models. This includes:\n\n-   API to other codes:\n    -   [Atomic simulation environment](https://wiki.fysik.dtu.dk/ase/) API\n    -   [Magpie](https://bitbucket.org/wolverton/magpie) API\n    -   [NetworkX](https://networkx.github.io/) API\n-   Fingerprint generators:\n    -   Bulk systems\n    -   Support/slab systems\n    -   Discrete systems\n-   Preprocessing routines:\n    -   Data cleaning\n    -   Feature elimination\n    -   Feature engineering\n    -   Feature extraction\n    -   Feature scaling\n-   Regression methods:\n    -   Regularized ridge regression\n    -   Gaussian processes regression\n-   Cross-validation:\n    -   K-fold cv\n    -   Ensemble k-fold cv\n-   Machine Learning Algorithms\n    -   Machine Learning Nudged Elastic Band (ML-NEB) algorithm.\n-   General utilities:\n    -   K-means clustering\n    -   Neighborlist generators\n    -   Penalty functions\n    -   SQLite db storage\n\n## How to cite CatLearn\n\n[(Back to top)](#table-of-contents)\n\nIf you find CatLearn useful in your research, please cite\n\n    1) M. H. Hansen, J. A. Garrido Torres, P. C. Jennings, \n       Z. Wang, J. R. Boes, O. G. Mamun and T. Bligaard.\n       An Atomistic Machine Learning Package for Surface Science and Catalysis.\n       https://arxiv.org/abs/1904.00904\n\nIf you use CatLearn's ML-NEB module, please cite:\n\n    2) J. A. Garrido Torres, M. H. Hansen, P. C. Jennings,\n       J. R. Boes and T. Bligaard. Phys. Rev. Lett. 122, 156001.\n       https://journals.aps.org/prl/abstract/10.1103/PhysRevLett.122.156001\n\n## Contribution\n\n[(Back to top)](#table-of-contents)\n\nAnyone is welcome to contribute to the project. Please see the contribution guide for help setting up a local copy of the code. There are some `TODO` items in the README files for the various modules that give suggestions on parts of the code that could be improved.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsuncat-center%2Fcatlearn","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsuncat-center%2Fcatlearn","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsuncat-center%2Fcatlearn/lists"}