{"id":50268965,"url":"https://github.com/fablabbcn/smartcitizen-data","last_synced_at":"2026-06-13T07:01:24.691Z","repository":{"id":45386965,"uuid":"97752018","full_name":"fablabbcn/smartcitizen-data","owner":"fablabbcn","description":"A python package for analyzing environmental sensor's data","archived":false,"fork":false,"pushed_at":"2026-05-21T16:59:32.000Z","size":109223,"stargazers_count":17,"open_issues_count":9,"forks_count":10,"subscribers_count":17,"default_branch":"master","last_synced_at":"2026-05-29T14:02:52.468Z","etag":null,"topics":["air-quality","data-analysis","data-science","environmental-monitoring","low-cost-sensor","machine-learning","python","sensor-data","sensors","smartcitizen"],"latest_commit_sha":null,"homepage":"https://docs.smartcitizen.me/data/data-tools/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/fablabbcn.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,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2017-07-19T19:07:36.000Z","updated_at":"2026-05-19T06:42:35.000Z","dependencies_parsed_at":"2026-01-29T13:03:08.380Z","dependency_job_id":"1fe88b2e-eec9-4407-b14e-4d6c0ef3acd6","html_url":"https://github.com/fablabbcn/smartcitizen-data","commit_stats":{"total_commits":806,"total_committers":9,"mean_commits":89.55555555555556,"dds":0.04962779156327546,"last_synced_commit":"c598651483db0501b8c8a133965c202081e3bbfa"},"previous_names":[],"tags_count":66,"template":false,"template_full_name":null,"purl":"pkg:github/fablabbcn/smartcitizen-data","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fablabbcn%2Fsmartcitizen-data","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fablabbcn%2Fsmartcitizen-data/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fablabbcn%2Fsmartcitizen-data/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fablabbcn%2Fsmartcitizen-data/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/fablabbcn","download_url":"https://codeload.github.com/fablabbcn/smartcitizen-data/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fablabbcn%2Fsmartcitizen-data/sbom","scorecard":{"id":390388,"data":{"date":"2025-08-11","repo":{"name":"github.com/fablabbcn/smartcitizen-data","commit":"b256e28280915a8c3a3ba835210a081c22367aaf"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":3.3,"checks":[{"name":"Code-Review","score":0,"reason":"Found 0/30 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":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","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":"Maintained","score":1,"reason":"0 commit(s) and 2 issue activity found in the last 90 days -- score normalized to 1","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/python-latest.yml:1","Warn: no topLevel permission defined: .github/workflows/python-multiple-versions.yml:1","Info: topLevel 'contents' permission set to 'read': .github/workflows/python-publish.yml:16","Info: no jobLevel write permissions found"],"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":"SAST","score":0,"reason":"no SAST tool detected","details":["Warn: no pull requests merged into dev branch"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"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":"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":"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: GNU General Public License v3.0: 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":"Packaging","score":10,"reason":"packaging workflow detected","details":["Info: Project packages its releases by way of GitHub Actions.: .github/workflows/python-publish.yml:19"],"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":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/python-latest.yml:19: update your workflow using https://app.stepsecurity.io/secureworkflow/fablabbcn/smartcitizen-data/python-latest.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/python-latest.yml:21: update your workflow using https://app.stepsecurity.io/secureworkflow/fablabbcn/smartcitizen-data/python-latest.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/python-multiple-versions.yml:21: update your workflow using https://app.stepsecurity.io/secureworkflow/fablabbcn/smartcitizen-data/python-multiple-versions.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/python-multiple-versions.yml:23: update your workflow using https://app.stepsecurity.io/secureworkflow/fablabbcn/smartcitizen-data/python-multiple-versions.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/python-publish.yml:24: update your workflow using https://app.stepsecurity.io/secureworkflow/fablabbcn/smartcitizen-data/python-publish.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/python-publish.yml:26: update your workflow using https://app.stepsecurity.io/secureworkflow/fablabbcn/smartcitizen-data/python-publish.yml/master?enable=pin","Warn: containerImage not pinned by hash: .devcontainer/Dockerfile:1: pin your Docker image by updating python:3.8 to python:3.8@sha256:d411270700143fa2683cc8264d9fa5d3279fd3b6afff62ae81ea2f9d070e390c","Warn: pipCommand not pinned by hash: .github/workflows/python-latest.yml:29","Warn: pipCommand not pinned by hash: .github/workflows/python-latest.yml:30","Warn: pipCommand not pinned by hash: .github/workflows/python-latest.yml:31","Warn: pipCommand not pinned by hash: .github/workflows/python-multiple-versions.yml:31","Warn: pipCommand not pinned by hash: .github/workflows/python-multiple-versions.yml:32","Warn: pipCommand not pinned by hash: .github/workflows/python-multiple-versions.yml:33","Warn: pipCommand not pinned by hash: .github/workflows/python-publish.yml:31","Warn: pipCommand not pinned by hash: .github/workflows/python-publish.yml:32","Info:   0 out of   6 GitHub-owned GitHubAction dependencies pinned","Info:   1 out of   1 third-party GitHubAction dependencies pinned","Info:   0 out of   1 containerImage dependencies pinned","Info:   0 out of   8 pipCommand dependencies pinned"],"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":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"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":"30 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: PYSEC-2023-62 / GHSA-m2qf-hxjv-5gpq","Warn: Project is vulnerable to: GHSA-cpwx-vrp4-4pq7","Warn: Project is vulnerable to: GHSA-gmj6-6f8f-6699","Warn: Project is vulnerable to: GHSA-h5c8-rqwp-cp95","Warn: Project is vulnerable to: GHSA-h75v-3vvj-5mfj","Warn: Project is vulnerable to: GHSA-q2x7-8rv6-6q7h","Warn: Project is vulnerable to: PYSEC-2021-47 / GHSA-5jqp-qgf6-3pvh","Warn: Project is vulnerable to: GHSA-mr82-8j83-vxmv","Warn: Project is vulnerable to: PYSEC-2014-14 / GHSA-652x-xj99-gmcc","Warn: Project is vulnerable to: GHSA-9hjg-9r4m-mvj7","Warn: Project is vulnerable to: GHSA-9wx4-h78v-vm56","Warn: Project is vulnerable to: PYSEC-2014-13 / GHSA-cfj3-7x9c-4p3h","Warn: Project is vulnerable to: PYSEC-2018-28 / GHSA-x84v-xcm2-53pg","Warn: Project is vulnerable to: PYSEC-2020-107 / GHSA-jjw5-xxj6-pcv5","Warn: Project is vulnerable to: PYSEC-2024-110 / GHSA-jw8x-6495-233v","Warn: Project is vulnerable to: PYSEC-2020-108","Warn: Project is vulnerable to: PYSEC-2019-156 / GHSA-xp76-357g-9wqq","Warn: Project is vulnerable to: PYSEC-2023-102","Warn: Project is vulnerable to: PYSEC-2023-114","Warn: Project is vulnerable to: GHSA-g7vv-2v7x-gj9p","Warn: Project is vulnerable to: GHSA-34jh-p97f-mpxf","Warn: Project is vulnerable to: PYSEC-2023-212 / GHSA-g4mx-q9vg-27p4","Warn: Project is vulnerable to: PYSEC-2023-207 / GHSA-gwvm-45gx-3cf8","Warn: Project is vulnerable to: PYSEC-2019-133 / GHSA-mh33-7rrq-662w","Warn: Project is vulnerable to: GHSA-pq67-6m6q-mj2v","Warn: Project is vulnerable to: PYSEC-2019-132 / GHSA-r64q-w8jr-g9qp","Warn: Project is vulnerable to: PYSEC-2023-192 / GHSA-v845-jxx5-vc9f","Warn: Project is vulnerable to: PYSEC-2020-148 / GHSA-wqvq-5m8c-6g24","Warn: Project is vulnerable to: PYSEC-2018-32 / GHSA-www2-v7xj-xrc6","Warn: Project is vulnerable to: PYSEC-2021-108"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-18T17:39:14.639Z","repository_id":45386965,"created_at":"2025-08-18T17:39:14.639Z","updated_at":"2025-08-18T17:39:14.639Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33993195,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-06T02:00:07.033Z","response_time":107,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["air-quality","data-analysis","data-science","environmental-monitoring","low-cost-sensor","machine-learning","python","sensor-data","sensors","smartcitizen"],"created_at":"2026-05-27T16:00:21.002Z","updated_at":"2026-06-13T07:01:24.679Z","avatar_url":"https://github.com/fablabbcn.png","language":"Python","funding_links":[],"categories":["Natural Resources"],"sub_categories":["Air Quality"],"readme":"Smart Citizen Data\n=======\n\n[![DOI](https://zenodo.org/badge/97752018.svg)](https://zenodo.org/badge/latestdoi/97752018)\n[![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/fablabbcn/smartcitizen-data-framework/master?filepath=%2Fexamples%2Fnotebooks)\n[![PyPI version](https://badge.fury.io/py/scdata.svg)](https://badge.fury.io/py/scdata)\n[![Python application](https://github.com/fablabbcn/smartcitizen-data/actions/workflows/python-multiple-versions.yml/badge.svg)](https://github.com/fablabbcn/smartcitizen-data/actions/workflows/python-multiple-versions.yml)\n\nWelcome to **SmartCitizen Data**. This is a data analysis framework for working with sensor data in different ways:\n\n- Interacting with several sensors APIs\n- Clean data, export and calculate metrics\n- Model sensor data and calibrate sensors\n- Generate data visualisations - matplotlib, ~[plotly](https://plotly.com/)~ or [uplot](https://leeoniya.github.io/uPlot)\n- Generate analysis reports in html or pdf and upload them to [Zenodo](http://zenodo.org)\n\n## Installation\n\nYou can check it out in the [![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/fablabbcn/smartcitizen-data-framework/master?filepath=%2Fexamples%2Fnotebooks) before installing if you want. Works with `Python 3.*` (tested between 3.9 and 3.11).\n\nYou can just run:\n\n```\npip install scdata\n```\n\n### Work on the source code\n\nSimply clone the repository with:\n\n```\ngit clone https://github.com/fablabbcn/smartcitizen-data.git\ncd smartcitizen-data\n```\n\nInstall `scdata` package with requirements:\n\n```\npython setup.py install\n```\n\nOr if you want to edit:\n\n```\ncd scdata\npip install --editable .\n```\n\n### Tokens and config\n\nA configuration file is available at `~/.config/scdata/config.yaml`, which contains a set of configurable variables to allow or not the local storage of relevant data in the data folder, normally in `~/.cache/scdata`:\n\n```\ndata:\n  cached_data_margin: 2\n  load_cached_api: true\n  reload_metadata: true\n  store_cached_api: true\npaths:\n  config: /Users/username/.config/scdata\n  data: /Users/username/.cache/scdata\n  export: /Users/username/.cache/scdata/export\n  interim: /Users/username/.cache/scdata/interim\n  inventory: ''\n  models: /Users/username/.cache/scdata/models\n  processed: /Users/username/.cache/scdata/processed\n  raw: /Users/username/.cache/scdata/raw\n  reports: /Users/username/.cache/scdata/reports\n  uploads: /Users/username/.cache/scdata/uploads\nzenodo_real_base_url: https://zenodo.org\nzenodo_sandbox_base_url: http://sandbox.zenodo.org\n```\n\nAlso, `.env` files will be picked from `~/.cache/scdata`. An [env.example](env.example) is provided. If you want to upload data to [Zenodo](http://zenodo.org), you will need to fill set an environment variable called `ZENODO_TOKEN` in your environment. The `.env` file is not mandatory for `scdata` to work. It only serves for authentication if you want to `POST` or `GET` data without throttling. You can still do `GET` requests but they will be throttled if not authenticated/authorized by the platform. See [user roles](https://developer.smartcitizen.me/#authentication) for more info.\n\n### Using with jupyter lab (optional)\n\nIt can also be used with `jupyter lab` or `jupyter`. For this [install juypterlab](https://github.com/jupyterlab/jupyterlab).\n\n## Contribute\n\nIssues and PR more than welcome!\n\n## Funding\n\nThis work has received funding from the European Union's Horizon 2020 research and innovation program under the grant agreement [No. 689954](https://cordis.europa.eu/project/rcn/202639_en.html)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffablabbcn%2Fsmartcitizen-data","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffablabbcn%2Fsmartcitizen-data","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffablabbcn%2Fsmartcitizen-data/lists"}