{"id":24357058,"url":"https://github.com/drewwing/edrewcatedguesser","last_synced_at":"2026-04-29T12:37:23.134Z","repository":{"id":272215207,"uuid":"907160340","full_name":"DrewWing/EDrewcatedGuesser","owner":"DrewWing","description":"Software aimed at real-time prediction of match outcomes for FIRST Tech Challenge using machine learning algorithms.","archived":false,"fork":false,"pushed_at":"2025-03-09T22:53:54.000Z","size":11719,"stargazers_count":1,"open_issues_count":22,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-09T23:25:34.164Z","etag":null,"topics":["api-rest","first-tech-challenge","ftc","ftc-scouting","google-cloud","google-sheets","google-sheets-api","machine-learning","machine-learning-algorithms","machinelearning","prediction","prediction-algorithm","prediction-model","sklearn"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/DrewWing.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":".github/CONTRIBUTING","funding":null,"license":"COPYING","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":"2024-12-23T01:02:39.000Z","updated_at":"2025-03-09T23:10:55.000Z","dependencies_parsed_at":null,"dependency_job_id":"236edb52-42b2-470e-9cfe-04644e282dc5","html_url":"https://github.com/DrewWing/EDrewcatedGuesser","commit_stats":null,"previous_names":["drewwing/edrewcatedguesser"],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DrewWing%2FEDrewcatedGuesser","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DrewWing%2FEDrewcatedGuesser/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DrewWing%2FEDrewcatedGuesser/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DrewWing%2FEDrewcatedGuesser/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/DrewWing","download_url":"https://codeload.github.com/DrewWing/EDrewcatedGuesser/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243179822,"owners_count":20249178,"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":["api-rest","first-tech-challenge","ftc","ftc-scouting","google-cloud","google-sheets","google-sheets-api","machine-learning","machine-learning-algorithms","machinelearning","prediction","prediction-algorithm","prediction-model","sklearn"],"created_at":"2025-01-18T18:55:41.301Z","updated_at":"2025-12-24T12:56:46.122Z","avatar_url":"https://github.com/DrewWing.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# EDrewcated Guesser V50.0\nby Drew Wingfield\n\n[Source](https://github.com/DrewWing/EDrewcatedGuesser).\n\n\u003c!-- Copyright (C) 2024, Drew Wingfield\n\nThis document is part of EDrewcated Guesser by Drew Wingfield, found at https://github.com/DrewWing/EDrewcatedGuesser.\nEDrewcated Guesser is free software: you can redistribute it and/or modify it under \nthe terms of the AGNU Affero General Public License as published by the Free Software \nFoundation, either version 3 of the License, or (at your option) any later version.\n\nEDrewcated Guesser is distributed in the hope that it will be useful, but WITHOUT ANY \nWARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR \nPURPOSE. See the AGNU Affero General Public License for more details.\n\nYou should have received a copy of the AGNU Affero General Public License along with \nEDrewcated Guesser. If not, see \u003chttps://www.gnu.org/licenses/\u003e.\n\nSee the documentation in the README.md file. --\u003e\n\n\n## About\nThe EDrewcated Guesser software is aimed at real-time prediction of match outcomes for FIRST Tech Challenge using machine learning algorithms.\n\nSimply put, this software:\n  - Runs on your computer or laptop, \n  - Fetches live team data, match data, and match schedules from the FIRST API, \n  - Calculates statistics such as OPR and CCWM, \n  - Predicts match outcomes using machine learning, and \n  - Pushes the statistics and predictions to a Google Sheets spreadsheet.\n\n\u003e [!Important]\n\u003e This software is a CLI intended for advanced users. If you don't know you way around the command line or aren't willing to set up a Google Cloud project, this software is not suited for you. \\\n\u003e In the near future, a local spreadsheet option will be available.\n\nYou can find the license statement [here](LICENSE.txt) (The full GNU Affero General Public License is [here](COPYING)).\nThe todo list is [here](docs/todos.md).\nAlso see the [Updates](docs/Updates.md) page.\n\n\n## Why Use EDrewcated Guesser?\nThis software runs on *your computer*. Apart from the [official FIRST API](https://ftc-events.firstinspires.org/services/API), it doesn't rely on internet connectivity or other web servers to function (connectivity to a Google Sheets spreadsheet is an optional feature).\nThis means that **it won't crash when sites like FTCScout get busy** (*cough cough* during States and Worlds *cough cough*).\n\nIt is (as far as I'm aware) one-of-a-kind, extremely accurate, and built to be efficient. It's also open-source, completely free to use, and student developed.\n\nEDrewcated Guesser **never** sends crash reports, analytics, or other data of any kind to the developer(s). All feedback is via email and the GitHub Issues page.\n\n\n## Helpful Documentation Links\n - [How to Set Up the Project (Start Here!)](docs/Setup.md)\n - [Running the Project](docs/RunningTheProject.md)\n - [Stats Calculation Docs (WIP)](docs/StatsCalculation.md)\n - [Machine Learning Guide (advanced)](docs/MachineLearningGuide.md)\n\n\n## Contributing\nSee the [contributing guide](.github/CONTRIBUTING).\n\n## Errors\nAs always, EDrewcated Guesser is a work in progress and has some bugs. Errors are both printed to the terminal and appended to `app/generatedfiles/errors.log` with a timestamp. If `LOG_LEVEL` is `DEBUG`, debug info will be saved to `app/generatedfiles/debug.log`\n\n\n## Language Stats:\nAutomatically generated by [line_counter.py](line_counter.py).\n\n\u003cimg src=\"./languages.png\" alt=\"A graph describing the current language composition.\" width=\"512\"/\u003e \n\u003c!-- Created by line_counter.py --\u003e\n\u003cbr\u003e\n\n\n## Credits/Honorable Mentions\nThough I wrote almost the entirety of the project by myself, I had some help. Below are some resources that I used (whether for copypasting code, general reference, or other research). All copypasted snippets of code are also cited in their respective locations.\n\nThis program uses the official FIRST Tech Challenge API to get information on matches, schedules, and scores.\nYou can find it [here](https://ftc-events.firstinspires.org/services/API).\n\nThanks to [The Blue Alliance](https://blog.thebluealliance.com/2017/10/05/the-math-behind-opr-an-introduction/) for an overview of OPR and the math behind it.\n\nThanks to [this article](https://www.johndcook.com/blog/2010/01/19/dont-invert-that-matrix/) for ideas on matrix calculation.\n\nPrinting in BASH with help from some people on [this StackOverflow post](https://stackoverflow.com/questions/1898712/make-sure-int-variable-is-2-digits-long-else-add-0-in-front-to-make-it-2-digits).\n\nPython printing in colors (the `Colors` class in `commonresources.py`) was taken from [Rene-d](https://gist.github.com/rene-d/9e584a7dd2935d0f461904b9f2950007).\n\nThe Google Sheets API was implemented with lots of help from [their sample program](https://github.com/googleapis/google-api-python-client/blob/main/samples/service_account/tasks.py) and [quickstart](https://developers.google.com/sheets/api/quickstart/python).\n\nThanks to viniciusarrud on GitHub in [this Joblib issue](https://github.com/joblib/joblib/issues/1496#issuecomment-1788968714) for a solution to a particular bug involving pathing on Windows.\n\nThe diagrams `docs/FTCAPI file diagram.drawio`, `docs/EDrewcatedGuesser_Default_Flowchart.drawio`, `docs/images/Flowchart_Main_Cycle.svg`, `docs/images/Flowchart_Main_Overview.svg`, and all other files ending with the extension `.drawio` were generated using [Drawio](https://app.diagrams.net/) [24.7.7], made by JGraph, https://github.com/jgraph/drawio. \\\nI am not JGraph, this project is not by JGraph, and JGraph neither endorses me nor this project.\n\n### External libraries\n\nThis software uses the following external libraries:\n\n - Google API Python Client Framework: Copyright Google APIs. Licensed under Apache 2.0 license, see [LICENSES/APACHE2.txt](LICENSES/APACHE2.txt) for details. \\\nWebsite: https://github.com/googleapis/google-api-python-client\n\n - Matplotlib Framework: Copyright (c)\n2012- Matplotlib Development Team; All Rights Reserved. Licensed similar to the PSF license, see [LICENSES/MATPLOTLIB.txt](LICENSES/MATPLOTLIB.txt) for details. \\\nWebsite: https://matplotlib.org/stable/\n\n - Pandas Framework: Copyright (c) 2008-2011, AQR Capital Management, LLC, Lambda Foundry, Inc. and PyData Development Team. Licensed under a BSD 3-Clause license, see [LICENSES/PANDAS.txt](LICENSES/PANDAS.txt) for details. \\\nWebsite: https://github.com/pandas-dev/pandas\n\n - Scikit-Learn Framework: Copyright (c) 2011, Pedregosa et al. Licensed under a BSD 3-Clause license, see [LICENSES/SCIKIT-LEARN.txt](LICENSES/SCIKIT-LEARN.txt) for details. \\\nWebsite: https://github.com/scikit-learn/scikit-learn\n\n - PyArrow Framework: Copyright (c) 2024, Richardson N, Cook I, Crane N, Dunnington D, François R, Keane J, Moldovan-Grünfeld D, Ooms J, Wujciak-Jens J, Apache Arrow (2024). arrow: Integration to 'Apache' 'Arrow'. Licensed under Apache 2.0 license, see [LICENSES/APACHE2.txt](LICENSES/APACHE2.txt) for details. \\\nWebsites: https://github.com/apache/arrow/, https://arrow.apache.org/docs/r/.\n\n\n### EDrewcated Guesser License\n\u003cimg src=\"https://www.gnu.org/graphics/agplv3-with-text-162x68.png\" alt=\"AGPL3 logo, Free as in Freedom.\" width=\"120\"/\u003e \n\nCopyright (C) 2024, Drew Wingfield\n\nEDrewcated Guesser is licenced under the GNU Affero General Public License as published by the Free Software Foundation, version 3.\n\nEDrewcated Guesser is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.\n\nEDrewcated Guesser is distributed in the hope that it will be useful,\nbut WITHOUT ANY WARRANTY; without even the implied warranty of\nMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\nGNU Affero General Public License for more details.\n\nYou should have received a copy of the GNU Affero General Public License\nalong with this program (in the COPPYING file). If not, see https://www.gnu.org/licenses/.\n\n\nNo Large Language Models (LLMs), chatbots, or any other so-called \"AI\" tools were used to code, write, or otherwise create resources for EDrewcated Guesser. Apart from a few (cited) snippets from StackOverflow (and various other places), EDrewcated Guesser was created by hand, from scratch.\n\nNo Texas A\u0026M University resources were used in the creation of EDrewcated Guesser.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdrewwing%2Fedrewcatedguesser","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdrewwing%2Fedrewcatedguesser","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdrewwing%2Fedrewcatedguesser/lists"}