{"id":41148829,"url":"https://github.com/caderidris/graddnodi","last_synced_at":"2026-01-22T19:00:08.784Z","repository":{"id":37466929,"uuid":"378448755","full_name":"CaderIdris/Graddnodi","owner":"CaderIdris","description":"Import measurements from InfluxDB 2.x database and calibrate them with a variety of linear regression techniques (both univariate and multivariate). Then, graph the results and export to a pdf document.","archived":false,"fork":false,"pushed_at":"2025-02-15T14:18:05.000Z","size":2929,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-15T15:26:51.314Z","etag":null,"topics":["air-quality-data","analysis","calibration","influxdb2","phd","python3","regression","statistics"],"latest_commit_sha":null,"homepage":"","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/CaderIdris.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":"2021-06-19T15:48:19.000Z","updated_at":"2025-02-15T14:18:09.000Z","dependencies_parsed_at":"2023-02-08T18:30:28.892Z","dependency_job_id":"f6c1b983-bf83-4212-a48e-11fd5117d938","html_url":"https://github.com/CaderIdris/Graddnodi","commit_stats":{"total_commits":105,"total_committers":1,"mean_commits":105.0,"dds":0.0,"last_synced_commit":"2340404bb7f46d2da83fe32808a65931052b7ba8"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/CaderIdris/Graddnodi","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CaderIdris%2FGraddnodi","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CaderIdris%2FGraddnodi/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CaderIdris%2FGraddnodi/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CaderIdris%2FGraddnodi/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/CaderIdris","download_url":"https://codeload.github.com/CaderIdris/Graddnodi/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CaderIdris%2FGraddnodi/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28668804,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-22T17:07:18.858Z","status":"ssl_error","status_checked_at":"2026-01-22T17:05:02.040Z","response_time":144,"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":["air-quality-data","analysis","calibration","influxdb2","phd","python3","regression","statistics"],"created_at":"2026-01-22T19:00:07.539Z","updated_at":"2026-01-22T19:00:08.686Z","avatar_url":"https://github.com/CaderIdris.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ch1 align=\"center\"\u003e\n\tGraddnodi\n\u003c/h1\u003e\n\n**Contact**: [CaderIdrisGH@outlook.com](mailto:CaderIdrisGH@outlook.com)\n\n---\n\n\n## Table of Contents\n\n1. [Introdution](##introduction)\n1. [Input](##input)\n1. [Output](##output)\n1. [Requirements](##requirements)\n1. [Setup](##setup)\n1. [Standard Operating Procedure](##standard-operating-procedure)\n1. [Settings](##settings)\n1. [Data Dictionary](##data-dictionary)\n\n---\n\n## Introduction\n\nGraddnodi (en: Calibration) is a program developed as part of a suite of tools designed to analyse the data generated by low-cost air quality sensors and attempt to assess their quality, remove outliers, detect malfunctions and calibrate them over both short distances (collocation) and long distances (experimental pseudo-collocation). \nGraddnodi assesses the calibrates measurements made during a collocation study and assesses their quality via a range of error calculcations.\n\nGraddnodi can output both the results of the calibrations and summary statistics detailing the best performing calibratino techniques and secondary variables to use in multivariate calibrations.\nTherefore this program can not only identify the best calibration technique to use for different types of air quality monitors but also allow you to correct the measurements produced by these devices using the best calibration technique.\n\nThis program was tested on a data generated during a long-term collocation study performed at the National Physical Laboratory in Teddington. \nMany different air quality monitors were deployed there, both low and high-cost.\nThey measured a range of pollutants and environmental conditions (e.g temperature, relative humidity) to varying degrees of quality.\nThe measurements were collected, standardised and uploaded to an InfluxDB 2.x database (using a suite of programs you can find [here](https://github.com/stars/CaderIdris/lists/influxdb-2-x-upload)) before being aggregated in Graddnodi.\n\n![Flowchart](img/Flowchart.drawio.png)\n\n---\n\n## Input\n\n---\n\n## Output\n\n---\n\n## Requirements\n\nThis program imports data from an InfluxDB 2.x database. Several examples of importing different data formats to an InfluxDB database can be found here. The structure of the data should not matter as the Flux query is dynamically generated in [the config file](./Settings/config.json)\n\n---\n\n## How to Use \n\n\n|Flag|Flag|Description|Default|\n|---|---|---|---|\n|-c|--config-path|Path to the config file|Settings/config.json|\n|-i|--influx-path|Path to the influx config|Settings/influx.json|\n|-o|--output-path|Where the output is saved to|Output/|\n|-f|--full-output|Include full output in saved report (eCDFs, scatter plots, Bland-Altman plots etc)|False, True if called|\n\n---\n\n## Setup\n\n\n---\n\n## Settings\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcaderidris%2Fgraddnodi","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcaderidris%2Fgraddnodi","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcaderidris%2Fgraddnodi/lists"}