{"id":44606130,"url":"https://github.com/makgyver/rectorch","last_synced_at":"2026-02-14T10:37:09.058Z","repository":{"id":57460574,"uuid":"241092441","full_name":"makgyver/rectorch","owner":"makgyver","description":"rectorch is a pytorch-based framework for state-of-the-art top-N recommendation","archived":false,"fork":false,"pushed_at":"2021-03-16T12:59:18.000Z","size":3403,"stargazers_count":151,"open_issues_count":3,"forks_count":19,"subscribers_count":7,"default_branch":"master","last_synced_at":"2025-09-02T09:44:02.453Z","etag":null,"topics":["autoencoder","collaborative-filtering","generative-adversarial-network","matrix-factorization","pypi","pytorch","recommender-system","top-n-recommendations","variational-autoencoder"],"latest_commit_sha":null,"homepage":"https://makgyver.github.io/rectorch/","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/makgyver.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2020-02-17T11:35:47.000Z","updated_at":"2024-11-27T15:31:01.000Z","dependencies_parsed_at":"2022-09-01T20:25:30.396Z","dependency_job_id":null,"html_url":"https://github.com/makgyver/rectorch","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/makgyver/rectorch","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/makgyver%2Frectorch","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/makgyver%2Frectorch/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/makgyver%2Frectorch/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/makgyver%2Frectorch/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/makgyver","download_url":"https://codeload.github.com/makgyver/rectorch/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/makgyver%2Frectorch/sbom","scorecard":{"id":613595,"data":{"date":"2025-08-11","repo":{"name":"github.com/makgyver/rectorch","commit":"f4292d6baf381a8a356260ad87b616fcf38dbf51"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":1.7,"checks":[{"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":"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":"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":"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":0,"reason":"Found 0/13 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":"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":"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":"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":"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: MIT License: 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":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":"Vulnerabilities","score":0,"reason":"15 existing vulnerabilities detected","details":["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-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-2023-102","Warn: Project is vulnerable to: PYSEC-2023-114","Warn: Project is vulnerable to: GHSA-3749-ghw9-m3mg","Warn: Project is vulnerable to: PYSEC-2022-43015 / GHSA-47fc-vmwq-366v","Warn: Project is vulnerable to: PYSEC-2025-41 / GHSA-53q9-r3pm-6pq6","Warn: Project is vulnerable to: PYSEC-2024-252 / GHSA-5pcm-hx3q-hm94","Warn: Project is vulnerable to: GHSA-887c-mr87-cxwp","Warn: Project is vulnerable to: PYSEC-2024-251 / GHSA-pg7h-5qx3-wjr3","Warn: Project is vulnerable to: PYSEC-2024-250","Warn: Project is vulnerable to: PYSEC-2024-259"],"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 18 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"}}]},"last_synced_at":"2025-08-21T03:16:59.662Z","repository_id":57460574,"created_at":"2025-08-21T03:16:59.662Z","updated_at":"2025-08-21T03:16:59.662Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29442800,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-14T10:17:46.583Z","status":"ssl_error","status_checked_at":"2026-02-14T10:17:22.534Z","response_time":53,"last_error":"SSL_read: 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":["autoencoder","collaborative-filtering","generative-adversarial-network","matrix-factorization","pypi","pytorch","recommender-system","top-n-recommendations","variational-autoencoder"],"created_at":"2026-02-14T10:37:08.881Z","updated_at":"2026-02-14T10:37:09.051Z","avatar_url":"https://github.com/makgyver.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"[logo]: https://raw.githubusercontent.com/makgyver/rectorch/master/docsrc/img/logo_150w.svg\n![logo]\n\n[travis-img]: https://travis-ci.org/makgyver/rectorch.svg?branch=master\n[travis-url]: https://travis-ci.org/makgyver/rectorch\n[language]: https://img.shields.io/github/languages/top/makgyver/rectorch\n[issues]: https://img.shields.io/github/issues/makgyver/rectorch\n[license]: https://img.shields.io/github/license/makgyver/rectorch\n[version]: https://img.shields.io/badge/python-3.6|3.7|3.8-blue\n[pypi-image]: https://img.shields.io/pypi/v/rectorch.svg\n[pypi]: https://pypi.python.org/pypi/rectorch\n[pytorch]: https://pytorch.org/\n\n[![Build Status][travis-img]][travis-url]\n[![PyPi][pypi-image]][pypi]\n[![DOI](https://zenodo.org/badge/241092441.svg)](https://zenodo.org/badge/latestdoi/241092441)\n[![Coverage Status](https://coveralls.io/repos/github/makgyver/rectorch/badge.svg?branch=master)](https://coveralls.io/github/makgyver/rectorch?branch=master)\n[![docs](https://img.shields.io/badge/docs-github.io-blue)](https://makgyver.github.io/rectorch/)\n![version] ![issues] ![license]\n\n**rectorch** is a pytorch-based framework for top-N recommendation.\nIt includes several state-of-the-art top-N recommendation approaches implemented in [pytorch](https://pytorch.org/).\n\n### Included methods\n\nThe latest PyPi release contains the following methods.\n\n| Name      | Description                                                                | Ref.      |\n|-----------|----------------------------------------------------------------------------|-----------|\n| MultiDAE  | Denoising Autoencoder for Collaborative filtering with Multinomial prior   | [[1]](#1) |\n| MultiVAE  | Variational Autoencoder for Collaborative filtering with Multinomial prior | [[1]](#1) |\n| CMultiVAE | Conditioned Variational Autoencoder                                        | [[2]](#2) |\n| CFGAN     | Collaborative Filtering with Generative Adversarial Networks               | [[3]](#3) |\n| EASE      | Embarrassingly shallow autoencoder for sparse data                         | [[4]](#4) |\n| ADMM_Slim | ADMM SLIM: Sparse Recommendations for Many Users                           | [[5]](#5) |\n| SVAE      | Sequential Variational Autoencoders for Collaborative Filtering            | [[6]](#6) |\n\n\n# Getting started\n## Installation\n\n**rectorch** is available on PyPi and it can be installed using *pip*\n\n```\npip3 install rectorch\n```\n\n## Requirements\n\nIf you install **rectorch** by cloning this repository make sure to install all the requirements.\n```\npip3 install -r requirements.txt\n```\n\n## Architecture\n**rectorch** is composed of 7 main modules summarized in the following.\n\n| Name          | Scope                                                                                        |\n|---------------|----------------------------------------------------------------------------------------------|\n| configuration | Contains useful classes to manage the configuration files.                                   |\n| data          | Manages the reading, writing and loading of the data sets                                    |\n| evaluation    | Contains utility functions to evaluate recommendation engines.                               |\n| metrics       | Contains the definition of the evaluation metrics.                                           |\n| models        | Includes the training algorithm for the implemented recommender systems.                     |\n| nets          | Contains definitions of the neural newtork architectures used by the implemented approaches. |\n| samplers      | Contains definitions of sampler classes useful when training neural network-based models.    |\n\n## Tutorials\n\n*(To be released soon)* \n\nWe will soon release a series of python notebooks with examples on how to train and evaluate\nrecommendation methods using **rectorch**.\n\n## Documentation\nThe full documentation of the **rectorch** APIs is available at https://makgyver.github.io/rectorch/.\n\n### Known issues\nThe documentation has rendering issues on 4K display. To \"fix\" the problem zoom in ([Ctrl][+], [Cmd][+]) the page.\nThanks for your patience, it will be fixed soon.\n\n## Testing\nThe easiest way to test **rectorch** is using [pytest](https://docs.pytest.org/en/latest/).\n\n```\ngit clone https://github.com/makgyver/rectorch.git\ncd rectorch/tests\npytest\n```\n\nYou can also check the coverage using [coverage](https://pypi.org/project/coverage/).\nFrom the `tests` folder:\n```\ncoverage run -m pytest  \ncoverage report -m\n```\n\n# Dev branch\n\n**rectorch** is developed using a test-driven approach. The *master* branch (i.e., the pypi release) is the up-to-date\nversion of the framework where each module has been fully tested. However, new untested\nor under development features are available in the *dev* branch. The *dev* version of **rectorch**\ncan be used by cloning the branch.\n\n```\ngit clone -b dev https://github.com/makgyver/rectorch.git\ncd rectorch\npip3 install -r requirements.txt\n```\n\n# Work in progress\n\nThe following features/changes will be soon released:\n* Splitting of the `models` module in more sub-modules on the basis of the models' characteristics;\n* Introduction of a \"global\" setting/configuration for the framework;\n* Adding optimizer's parameters in the configuration;\n* Including horizontal splitting and leave-one-out in `DataProcessing`.\n\n# Suggestions\n\nThis framework is constantly growing and the implemented methods are chosen on the basis of the need\nof our research activity. We plan to include as many state-of-the-art methods as soon as we can, but\nif you have any specific request feel free to contact us by opening an issue.\n\n# Citing this repo\n\nIf you are using **rectorch** in your work, please consider citing this repository.\n\n```\n@misc{rectorch,\n    author = {Mirko Polato},\n    title = {{rectorch: pytorch-based framework for top-N recommendation}},\n    year = {2020},\n    month = {may},\n    doi = {10.5281/zenodo.3841898},\n    version = {0.0.9-beta0},\n    publisher = {Zenodo},\n    url = {https://doi.org/10.5281/zenodo.153841898991}\n}\n```\n\n## References\n\u003ca id=\"1\"\u003e[1]\u003c/a\u003e\nDawen Liang, Rahul G. Krishnan, Matthew D. Hoffman, and Tony Jebara. 2018.\n   Variational Autoencoders for Collaborative Filtering. In Proceedings of the 2018\n   World Wide Web Conference (WWW ’18). International World Wide Web Conferences Steering\n   Committee, Republic and Canton of Geneva, CHE, 689–698.\n   DOI: https://doi.org/10.1145/3178876.3186150\n\n\u003ca id=\"2\"\u003e[2]\u003c/a\u003e\nTommaso Carraro, Mirko Polato and Fabio Aiolli. Conditioned Variational\n   Autoencoder for top-N item recommendation, 2020. arXiv pre-print:\n   https://arxiv.org/abs/2004.11141\n\n\u003ca id=\"3\"\u003e[3]\u003c/a\u003e\nDong-Kyu Chae, Jin-Soo Kang, Sang-Wook Kim, and Jung-Tae Lee. 2018.\n   CFGAN: A Generic Collaborative Filtering Framework based on Generative Adversarial Networks.\n   In Proceedings of the 27th ACM International Conference on Information and Knowledge\n   Management (CIKM ’18). Association for Computing Machinery, New York, NY, USA, 137–146.\n   DOI: https://doi.org/10.1145/3269206.3271743\n\n\u003ca id=\"4\"\u003e[4]\u003c/a\u003e\nHarald Steck. 2019. Embarrassingly Shallow Autoencoders for Sparse Data.\n   In The World Wide Web Conference (WWW ’19). Association for Computing Machinery,\n   New York, NY, USA, 3251–3257. DOI: https://doi.org/10.1145/3308558.3313710\n\n\u003ca id=\"5\"\u003e[5]\u003c/a\u003e\nHarald Steck, Maria Dimakopoulou, Nickolai Riabov, and Tony Jebara. 2020.\n   ADMM SLIM: Sparse Recommendations for Many Users. In Proceedings of the 13th International\n   Conference on Web Search and Data Mining (WSDM ’20). Association for Computing Machinery,\n   New York, NY, USA, 555–563. DOI: https://doi.org/10.1145/3336191.3371774\n\n\u003ca id=\"6\"\u003e[6]\u003c/a\u003e\nNoveen Sachdeva, Giuseppe Manco, Ettore Ritacco, and Vikram Pudi. 2019.\n   Sequential Variational Autoencoders for Collaborative Filtering. In Proceedings of the Twelfth\n   ACM International Conference on Web Search and Data Mining (WSDM ’19). Association for Computing\n   Machinery, New York, NY, USA, 600–608. DOI: https://doi.org/10.1145/3289600.3291007\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmakgyver%2Frectorch","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmakgyver%2Frectorch","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmakgyver%2Frectorch/lists"}