{"id":30539043,"url":"https://github.com/viktor-shcherb/reproducible-research-project-template","last_synced_at":"2026-05-08T09:33:34.437Z","repository":{"id":306095197,"uuid":"1024996901","full_name":"viktor-shcherb/reproducible-research-project-template","owner":"viktor-shcherb","description":"A Docker-based template for reproducible Python research, integrating pip‑tools dependency pinning, pytest, and Codecov reporting","archived":false,"fork":false,"pushed_at":"2025-07-27T12:47:52.000Z","size":46,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-08-28T04:20:52.233Z","etag":null,"topics":["cicd","codecov","data-science","docker","docker-compose","pip-tools","pytest","python","reproducible-research","template"],"latest_commit_sha":null,"homepage":"","language":"Dockerfile","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"cc0-1.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/viktor-shcherb.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,"zenodo":null}},"created_at":"2025-07-23T15:01:52.000Z","updated_at":"2025-07-27T12:47:55.000Z","dependencies_parsed_at":"2025-07-23T17:21:18.732Z","dependency_job_id":"3ca8a121-6e0b-4c0a-85b7-2e5770f4daa5","html_url":"https://github.com/viktor-shcherb/reproducible-research-project-template","commit_stats":null,"previous_names":["viktor-shcherb/reproducible-research-project-template"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/viktor-shcherb/reproducible-research-project-template","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/viktor-shcherb%2Freproducible-research-project-template","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/viktor-shcherb%2Freproducible-research-project-template/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/viktor-shcherb%2Freproducible-research-project-template/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/viktor-shcherb%2Freproducible-research-project-template/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/viktor-shcherb","download_url":"https://codeload.github.com/viktor-shcherb/reproducible-research-project-template/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/viktor-shcherb%2Freproducible-research-project-template/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32774934,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-08T08:22:46.396Z","status":"ssl_error","status_checked_at":"2026-05-08T08:22:45.650Z","response_time":54,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6: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":["cicd","codecov","data-science","docker","docker-compose","pip-tools","pytest","python","reproducible-research","template"],"created_at":"2025-08-27T21:24:42.461Z","updated_at":"2026-05-08T09:33:34.419Z","avatar_url":"https://github.com/viktor-shcherb.png","language":"Dockerfile","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Research Project Title\n\n[![codecov](https://codecov.io/gh/OWNER/reproducible-research-project-template/branch/main/graph/badge.svg)](https://codecov.io/gh/OWNER/reproducible-research-project-template)\n\n## Overview\n\n\u003c!-- TODO: Write a concise description of the project, its goals, and its main components. --\u003e\n\n## Reproduction Steps\n\n\u003c!-- TODO: Describe end‑to‑end steps to reproduce our results:\n1. Data acquisition\n2. Preprocessing\n3. Analysis\n4. Evaluation\n--\u003e\n\n---\n\n## Environment Setup\n\nThis project is fully containerized with Docker to guarantee bit‑for‑bit reproducibility. You can either drive everything from the CLI or hook into your IDE (PyCharm) for an integrated experience. Follow the instructions that match your workflow.\n\n### Prerequisites\n\n* **Docker** (Engine \u0026 CLI) installed and running\n* **Docker Compose** (if not bundled with Docker)\n* A local checkout of this repository\n\n---\n\n### 1. CLI‑Based Workflow\n\n\u003e **Assumes** you have `docker` and `docker-compose` in your `$PATH` and that you’re in the project root.\n\n1. **Build the dev image**\n\n   ```bash\n   docker-compose build\n   ```\n\n2. **Launch the container**\n\n   ```bash\n   docker-compose up -d\n   ```\n\n   * Your project directory is bind‑mounted into `/app` inside the container.\n   * A persistent pip cache volume speeds up installs.\n\n3. **Run commands inside the container**\n\n   ```bash\n   # Open a shell\n   docker-compose exec app bash\n\n   # From within: install extras, run tests, start analysis, etc.\n   pytest --cov=common --cov-report=term-missing\n   # Coverage results will be uploaded to Codecov by the CI pipeline\n   python scripts/your_analysis.py --input data/data.parquet --output results/\n\n   # Or exit when you’re done:\n   exit\n   ```\n\n4. **Stop \u0026 clean up**\n\n   ```bash\n   docker-compose down\n   ```\n\n---\n\n### 2. PyCharm‑Based Workflow\n\n\u003e **Assumes** you’re using PyCharm Professional (with Docker support).\n\n**Add a Docker‑Compose interpreter**\n\n   * **Preferences → Project → Python Interpreter → ⚙️ → Add… → Docker Compose**\n   * Select:\n\n     * **Compose file:** `docker-compose.yml`\n     * **Service:** `app`\n     * **Python interpreter path:** `/usr/local/bin/python3`\n   * Click **OK** and let PyCharm probe the container.\n\n---\n\n### 3. Syncing Dependencies (`sync_dependencies.sh`)\n\nWhenever you update your `requirements/*.in` files, you need to recompile them into `.txt`, rebuild your Docker images, and restart the services. Instead of doing these steps by hand, use the provided `sync_dependencies.sh` script:\n\n```bash\n# From the project root:\n./sync_dependencies.sh\n```\n\nThis script will:\n1. Run `pip-compile` inside the Docker environment to update `requirements/*.txt` (ensuring the correct Python/OS context).\n2. Rebuild your Docker Compose images.\n3. Redeploy all services (with `--remove-orphans` to clean up any old containers).\n\nAfter it finishes, your dependencies and containers will be fully up-to-date without manual intervention.\n\n---\nThis repository uses the following [template](https://github.com/viktor-shcherb/reproducible-research-project-template). See [TEMPLATE.md](TEMPLATE.md) for instructions on customizing the template.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fviktor-shcherb%2Freproducible-research-project-template","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fviktor-shcherb%2Freproducible-research-project-template","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fviktor-shcherb%2Freproducible-research-project-template/lists"}