{"id":18774687,"url":"https://github.com/firefly-cpp/nix-reproducible-experiment","last_synced_at":"2025-04-13T09:22:06.506Z","repository":{"id":145978831,"uuid":"590600429","full_name":"firefly-cpp/nix-reproducible-experiment","owner":"firefly-cpp","description":null,"archived":false,"fork":false,"pushed_at":"2024-09-25T12:42:50.000Z","size":27,"stargazers_count":6,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-03-27T00:54:57.361Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Nix","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"cc-by-sa-4.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/firefly-cpp.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,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-01-18T19:29:06.000Z","updated_at":"2024-09-25T12:42:54.000Z","dependencies_parsed_at":null,"dependency_job_id":"89f72806-e4a6-4a75-85a5-81ce298ebbb9","html_url":"https://github.com/firefly-cpp/nix-reproducible-experiment","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/firefly-cpp%2Fnix-reproducible-experiment","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/firefly-cpp%2Fnix-reproducible-experiment/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/firefly-cpp%2Fnix-reproducible-experiment/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/firefly-cpp%2Fnix-reproducible-experiment/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/firefly-cpp","download_url":"https://codeload.github.com/firefly-cpp/nix-reproducible-experiment/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248689382,"owners_count":21145923,"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":[],"created_at":"2024-11-07T19:39:05.721Z","updated_at":"2025-04-13T09:22:06.482Z","avatar_url":"https://github.com/firefly-cpp.png","language":"Nix","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ch1 align=\"center\"\u003e\n    Nix\n\u003c/h1\u003e\n\n\u003cp align=\"center\"\u003e\n    \u003ca href=\"#-what-is-nix\"\u003e🔍 What is Nix?\u003c/a\u003e •\n    \u003ca href=\"#-installation\"\u003e📦 Installation\u003c/a\u003e •\n    \u003ca href=\"#-benefits-for-data-science-experiments\"\u003e📈 Benefits for data science experiments\u003c/a\u003e •\n    \u003ca href=\"#-outline-of-a-simple-experiment\"\u003e🧪 Outline of a simple experiment\u003c/a\u003e •\n    \u003ca href=\"#-references-and-further-reading\"\u003e📚 References and further reading\u003c/a\u003e •\n    \u003ca href=\"#-similar-solutions\"\u003e🔗 Similar solutions\u003c/a\u003e •\n    \u003ca href=\"#-license\"\u003e🔑 License\u003c/a\u003e\n\u003c/p\u003e\n\nThe repository is devoted to a sample data science experiment based on a Nix environment.\n\n## 🔍 What is Nix?\n\nNix is considered a package manager working on all popular platforms. Domain-specific Nix expression language, which is pure, lazy, and functional, defines the Nix package. Nix expressions can be viewed as functions that describe the build process. Installed packages via the Nix package manager are installed into unique directories that are immutable and cannot be changed after a build is completed.\n\n## 📦 Installation\n\nPlease follow the official [instructions](https://nixos.org/download.html). The entire installation process takes only a few minutes.\n\n### 📈 Benefits for data science experiments\n\n#### Reproducibility\n\nThe reproducibility of computational experiments is a cornerstone for the fast advancement of scientific disciplines. Although depositing source code along with the paper\nwas not usual in history, it is becoming more common thanks to the several tools that allow easier packaging of experiment pipelines.\n\n#### Nix vs. containers\n\nAccording to the [2], containers statically bundle dependencies but do not provide mechanisms to update, rebuild and maintain the contents of a container. Additionally, the Nix environment provides also a nixpkgs package collection consisting of 80000+ packages that can be available in the form of Nix expressions and as binaries. It is worth mentioning that most of the Python packages used in the Python data science pipelines are\nalready available in nixpkgs.\n\n## 🧪 Outline of a simple experiment\n\n### Motivation\n\nLet's consider simple Python scripts that utilize the implementation of nature-inspired algorithms in a Python library called NiaPy for running an experiment.\n\nThe code of experiments is available in a separate repository: [CLICK](https://gitlab.com/firefly-cpp/nia-test-experiments)\n\nThe directory structure is as follows:\n\n    .\n    ├── ...\n    ├── src                     # two main Python files\n    │   ├── niapy_custom_problem.py\n    │   ├── niapy_pso.py\n    ├── README.md\n    ├── run.sh                  # simple shell script that runs python files\n    ├── setup.py                # basic setup file\n    └── ...\n\n### Build \u0026 run\n\nThe experiment derivation can be built using the following command:\n\n```sh\n$ nix-build -A nia-experiment\n```\n\nTo enter the experiment environment and run it:\n\n```sh\n$ nix-shell default.nix -A experiment\n```\n\n## 📚 References and further reading\n\n[1] Nix for reproducibility of scientific experiments. [https://nix-tutorial.gitlabpages.inria.fr/nix-tutorial/index.html](https://nix-tutorial.gitlabpages.inria.fr/nix-tutorial/index.html)\n\n[2] Kowalewski, Markus, and Phillip Seeber. \"[Sustainable packaging of quantum chemistry software with the Nix package manager](https://onlinelibrary.wiley.com/doi/full/10.1002/qua.26872).\" International Journal of Quantum Chemistry 122.9 (2022): e26872.\n\n[3] Sandve, Geir Kjetil, et al. \"[Ten simple rules for reproducible computational research](https://journals.plos.org/ploscompbiol/article?id=10.1371/journal.pcbi.1003285).\" PLoS computational biology 9.10 (2013): e1003285.\n\n## 🔗 Similar solutions\n\n[1a] A basic container image for performing data science reproducibility studies based on Alpine Linux, [https://github.com/firefly-cpp/alpine-container-data-science](https://github.com/firefly-cpp/alpine-container-data-science)\n\n[2a] A basic container image for performing data science reproducibility studies based on Fedora Linux, [https://github.com/firefly-cpp/fedora-container-data-science](https://github.com/firefly-cpp/fedora-container-data-science)\n\n## Disclaimer\n\nThis software is provided as-is, and there are no guarantees that it fits your purposes or that it is bug-free. Use it at your own risk!\n\n## 🔑 License\n\nMaterial in this folder is licensed under a\n[Creative Commons Attribution-ShareAlike 4.0 International License][cc-by-sa].\n\n[![CC BY-SA 4.0][cc-by-sa-image]][cc-by-sa]\n\n[cc-by-sa]: http://creativecommons.org/licenses/by-sa/4.0/\n[cc-by-sa-image]: https://licensebuttons.net/l/by-sa/4.0/88x31.png\n[cc-by-sa-shield]: https://img.shields.io/badge/License-CC%20BY--SA%204.0-lightgrey.svg\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffirefly-cpp%2Fnix-reproducible-experiment","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffirefly-cpp%2Fnix-reproducible-experiment","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffirefly-cpp%2Fnix-reproducible-experiment/lists"}