{"id":16284412,"url":"https://github.com/nuest/sensebox-binder","last_synced_at":"2026-01-25T14:05:28.179Z","repository":{"id":146971725,"uuid":"116244786","full_name":"nuest/sensebox-binder","owner":"nuest","description":"A reproducible analysis of environmental data - from hardware to plot","archived":false,"fork":false,"pushed_at":"2019-01-25T08:46:27.000Z","size":2061,"stargazers_count":3,"open_issues_count":3,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-09-17T10:43:44.523Z","etag":null,"topics":["binder","jupyter-notebook","reproducible-analysis","reproducible-research","reproducible-science","research-compendium"],"latest_commit_sha":null,"homepage":"https://nuest.github.io/sensebox-binder/sensebox-analysis.html","language":"Jupyter Notebook","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/nuest.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":"2018-01-04T10:06:21.000Z","updated_at":"2025-03-31T18:45:33.000Z","dependencies_parsed_at":null,"dependency_job_id":"2ad01ef3-4e78-47f6-93e2-9152c73cedda","html_url":"https://github.com/nuest/sensebox-binder","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/nuest/sensebox-binder","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nuest%2Fsensebox-binder","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nuest%2Fsensebox-binder/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nuest%2Fsensebox-binder/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nuest%2Fsensebox-binder/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nuest","download_url":"https://codeload.github.com/nuest/sensebox-binder/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nuest%2Fsensebox-binder/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28754145,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-25T13:59:49.818Z","status":"ssl_error","status_checked_at":"2026-01-25T13:59:33.728Z","response_time":113,"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":["binder","jupyter-notebook","reproducible-analysis","reproducible-research","reproducible-science","research-compendium"],"created_at":"2024-10-10T19:19:28.885Z","updated_at":"2026-01-25T14:05:28.117Z","avatar_url":"https://github.com/nuest.png","language":"Jupyter Notebook","funding_links":[],"categories":[],"sub_categories":[],"readme":"# sensebox-binder\n\n[![Binder](http://mybinder.org/badge_logo.svg)](http://mybinder.org/v2/gh/nuest/sensebox-binder/master) [![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.1135139.svg)](https://doi.org/10.5281/zenodo.1135139)\n\n_A reproducible analysis of environmental data - from hardware to plot!_\n\nThe analysis can be explored in three ways, all of which offer full transparency and provide an interactive environment to [study and adopt](#edit-analysis) code and data.\n\n1. [One-click execution](#one-click-execution)\n1. [Local build and execution](#local-build)\n1. [Import runtime and local execution](#import-runtime)\n\n## One-click execution\n\nThis repo can be opened directly in [Binder](https://mybinder.org/) thanks to [this example](https://github.com/binder-examples/dockerfile-rstudio) and [Rocker](https://github.com/rocker-org/binder) by clicking on the \"launch binder\" button above.\n\n[![screencast of senseBox-Binder analysis in RStudio running on mybinder.org](https://media.giphy.com/media/l49JRjO65S0WQ1Kyk/giphy.gif)](https://media.giphy.com/media/l49JRjO65S0WQ1Kyk/giphy.gif)\n\n## Local build\n\nThe following commands build a Docker image from the `Dockerfile` and the runs it on your local machine.\nTherefore you need [Docker](http://docker.com/).\nThe steps are roughly what happens when launching this repository in Binder.\n\n```bash\ndocker build --tag sensebinder .\n```\n\nContinue with [Local execution](#local-execution).\n\n## Import runtime\n\n[Zenodo](https://en.wikipedia.org/wiki/Zenodo) is a public research data repository.\nIt provides a secure place to deposit datasets and makes them citable by providing a [DOI](https://en.wikipedia.org/wiki/Digital_object_identifier).\n\nThis workflow relies on several online resources and tools that might disappear or stop working (GitHub, openseSenseMap-API, Docker, ...), but Zenodo is much less likely to vanish.\n\nDownload all files from [https://doi.org/10.5281/zenodo.1135140](https://doi.org/10.5281/zenodo.1135140) and put them in one directory.\n\nImport the runtime from the compressed tarball (cf. [Export runtime](#export-runtime)).\n\n```bash\ndocker image load --input sensebox-binder.tar.gz\n```\n\nContinue with [Local execution](#local-execution).\n\n## Local execution\n\nYou have now either build or loaded a Docker image.\nNow start a Docker container using the image with the following command.\n\n```bash\ndocker run -p 8888:8888 -v $(pwd):/home/rstudio sensebinder\n```\n\nThe current directory (`$(pwd)` for Ubuntu/Debian; on Windows or Mac please manually put in the local path) is mounted to the container's default working directory (`/home/rstudio`) and the Jupyter port (`8888`) is exposed to the host computer.\nYou may leave out the mount, but changes are not persisted to the host machine then.\n\nThe output includes a login link to the Jupyter Notebook start page, similar to `http://0.0.0.0:8888/?token=bd3fc8b1176293170965e7ce613f5fbfd7a64733f312c34a` but with a different token.\nOpen this link in your browser and continue with [Open analysis](#open-analysis).\n\n### Troubleshooting\n\nIf you encounter file permission errors, such as `PermissionError: [Errno 13] Permission denied: '/home/rstudio/.local'` when starting the container, try to explicitly set the container user ID to the required default user `rstudio` with `UID` of `1000`.\n\n```bash\ndocker run -it -p 8888:8888 --user=1000 sensebinder\n```\n\n## Open analysis\n\nThe **main workflow** is available both as an [R Markdown](http://rmarkdown.rstudio.com/) document (primary) and a [Jupyter Notebook](https://nbformat.readthedocs.io/en/latest/) (automatic conversion) using an R kernel.\n\nTo open the **R Markdown document**, click on \"new\" in the top right, and at \"RStudio Session\" in the pop-up menu.\nThis will start a new browser tab with an RStudio session.\nIn the RStudio window, open the file `sensebox-analysis.Rmd` from the \"Files\" tab in the bottom right of the interface.\nNow click on the [\"Knit\" button](http://rmarkdown.rstudio.com/authoring_quick_tour.html) to render the document.\n\nFor a quick preview, the HTML output of the R Markdown document is also rendered by [Travis CI](http://travis-ci.org/) (see configuration in `.travis.yml`) and available at [https://nuest.github.io/sensebox-binder/sensebox-analysis.html](https://nuest.github.io/sensebox-binder/sensebox-analysis.html).\n\nTo open the **Jupyter Notebook**, click on the notebook file `sensebox-analysis.ipynb` on the Jupyter start page.\nThe Jupyter Notebook is automatically updated when rendering the R Markdown document.\n\n## Edit analysis\n\nBecause the host directory is mounted into the container, all changes to the workflows saved in Jupyter or RStudio are persisted to your local disc.\n\nIt is strongly recommended to use only the containerised browser version of RStudio, although the R Markdown document could easily be edited with the desktop version, because working in the container ensures a controlled environment.\nTo install additional packages, use `install.R` and re-build the container (see [Local execution](#local-execution)).\n\n## Export runtime\n\nThe following steps were used to create the archivable version of the workflow stored on Zenodo (cf. [Import runtime](#import-runtime)).\n\nFirst create a [Local build](#local-build).\nThen export the container using it's name with the `docker image save` command into a [compressed](https://en.wikipedia.org/wiki/Gzip) [tarball](https://en.wikipedia.org/wiki/Tar_(computing)):\n\n```bash\ndocker image save sensebinder:latest | gzip -c \u003e sensebox-binder.tar.gz\n```\n\nThe created image contains the runtime environment of the workflow (R, Jupyter Notebook, libraries \u0026 packages) as well as files from this directory, including the [git repository](https://en.wikipedia.org/wiki/Git).\n\n## Create release\n\n1. Create a [Local build](#local-build) and start a [Local execution](#local-execution) without mounting the local files\n1. Make sure the R Markdown document renders correctly with `online \u003c- FALSE` in the code chunk `load_box_data`, then set `online \u003c- TRUE` again and re-render\n1. Commit all changes to the git repository\n1. Add a tag `v1` to the current git commit and push the tag to GitHub\n1. Start a [Local execution](#local-execution) with mounting the local files to render the R Markdown document to HTML;make sure the hash in the HTML file is the one with the version tag\n1. Create a [Local build](#local-build) (to have the latest commit and tag in the local git repository)\n1. [Export runtime](\"#export-runtime\")\n1. Create ZIP file with `zip -1 -r sensebox-binder.zip .git data .dockerignore .gitignore .travis.yml 320px-Fireworks_2.jpg Dockerfile install.R LICENSE README.md sensebox-analysis.* sensebox-binder.Rproj sensebox-binder.tar.gz` (fast compression, the tarball is already compressed and the other file sizes are negligible)\n1. Upload to Zenodo (as a new version), setting the same version tag\n\n## Contact\n\n[Daniel Nüst](https://nordholmen.net), [@nordholmen](https://twitter.com/nordholmen), [https://orcid.org/0000-0002-0024-5046](https://orcid.org/0000-0002-0024-5046)\n\n## License\n\nThis project is licensed under Apache License, Version 2.0, see file LICENSE.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnuest%2Fsensebox-binder","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnuest%2Fsensebox-binder","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnuest%2Fsensebox-binder/lists"}