{"id":15942822,"url":"https://github.com/jakublala/alchemical-kernels","last_synced_at":"2026-05-05T03:32:10.378Z","repository":{"id":109596970,"uuid":"523669065","full_name":"jakublala/alchemical-kernels","owner":"jakublala","description":"Pytorch implementation of Alchemical Kernels from Phys. Chem. Chem. Phys., 2018,20, 29661-29668","archived":false,"fork":false,"pushed_at":"2022-08-11T10:42:29.000Z","size":1182,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-28T15:34:45.981Z","etag":null,"topics":["alchemical-kernel","elpasolite","energy-prediction","kernel-ridge-regression","rascaline","soap"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jakublala.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-08-11T09:51:55.000Z","updated_at":"2023-04-20T05:34:14.000Z","dependencies_parsed_at":null,"dependency_job_id":"96800b8d-693f-4701-a712-f179cf0580a1","html_url":"https://github.com/jakublala/alchemical-kernels","commit_stats":{"total_commits":4,"total_committers":2,"mean_commits":2.0,"dds":0.5,"last_synced_commit":"209333ece551b12885f1a8b2e1bf0ac0323b16ea"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jakublala%2Falchemical-kernels","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jakublala%2Falchemical-kernels/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jakublala%2Falchemical-kernels/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jakublala%2Falchemical-kernels/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jakublala","download_url":"https://codeload.github.com/jakublala/alchemical-kernels/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245078145,"owners_count":20557279,"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","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":["alchemical-kernel","elpasolite","energy-prediction","kernel-ridge-regression","rascaline","soap"],"created_at":"2024-10-07T08:01:15.484Z","updated_at":"2026-05-05T03:32:10.324Z","avatar_url":"https://github.com/jakublala.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# PyTorch Implementation of Alchemical Kernels\n \nReproduced from [Feature optimization for atomistic machine learning yields a data-driven construction of the periodic table of the elements](https://doi.org/10.1039/C8CP05921G) with a simplified loss function compared to the original paper. The idea is to use kernel ridge regression to fit the structure-energy relationship from the SOAP descriptor representation. The SOAP vector is computed by [librascal](https://github.com/lab-cosmo/librascal).\n\nNevertheless, to reduce the dimensionality of the kernel, an alchemical kernel is used, which describes the elemental information of the 39 elements present in the dataset as a linear combination of 4 pseudo-elements, or alchemical elements. This then allows us to produce a reconstruction of the periodic table of elements as shown in the figure below, for 2, 3, and 4 pseudo-elements (taken from the original paper).\n\u003cp align=\"center\"\u003e\n\u003cimg src=\"https://user-images.githubusercontent.com/68380659/184111486-a273b817-bd64-4e75-88f0-ad59a5ea3b69.gif\" alt=\"periodic_table\" width=\"50%\"/\u003e\n\u003c/p\u003e\nThe dataset used is an elpasolite dataset of 8k structure from \u003ca href=\"https://doi.org/10.1103/PhysRevLett.117.135502\"\u003eMachine Learning Energies of 2 Million Elpasolite (\u003ci\u003eABC\u003csub\u003e2\u003c/sub\u003eD\u003csub\u003e6\u003c/sub\u003e\u003c/i\u003e) Crystals\u003c/a\u003e. My slightly different approach in terms of learning the coupling parameters, compared to the original paper, is given in the figure below.\n\n![model_structure](https://user-images.githubusercontent.com/68380659/184113100-99b45fcc-8244-4e1a-be68-7eff9ff61a04.png)\n\n\nWe use two different datasets during training: a) \u003cb\u003etraining dataset\u003c/b\u003e: learns the weights that describe the kernel-energy relationship through linear matrix regression and b) \u003cb\u003eoptimization dataset\u003c/b\u003e: learns the coupling parameters \u003ci\u003eU\u003c/i\u003e that transfer the full SOAP descriptor into the reduced SOAP vector with the reduced dimensionality. We train the weights and coupling parameters simultaneously. \n\nIt was found that there is training instability if we detach the gradients in the training dataset path, betwen the weights and the \u003ci\u003eU\u003c/i\u003e coupling parameters. Hence the parameter updates of the \u003ci\u003eU\u003c/i\u003e matrix are updated using gradients that propagate through both paths - training and optimization.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjakublala%2Falchemical-kernels","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjakublala%2Falchemical-kernels","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjakublala%2Falchemical-kernels/lists"}