"The McChicken of Data Analysis."
McNugget is a collection of Python (and a few MatLab) scripts which interact with our data visualization, system control, and telemetry database server, Synnax. This repository was originally made by Emiliano Bonilla in March 2023, then maintained by the 'Software' subteam until August 2025, and is now managed by Avionics.
If you are, download and launch/use WSL (Windows sub-system for Linux), which will allow you to run a virtual machine of Ubuntu (or most other Linux distributions) locally on your computer with fairly low overhead.
This is useful because some Python behavior is dependent on your operating system such as program interrupt signals and file systems. While MacOS and Linux are "POSIX compliant" and so share many commonalities with how they interact with programs, Windows is not which causes problems. Using WSL gets around all of these headaches by literally installing another operating system inside of your existing Windows install so that you can work on stuff just like this without compatibility issues.
If you are doing development, you probably want to push to this repository eventually, however to do this you will need to authenticate yourself and be added to this project. Assuming you have a GitHub account with your Umich email added to this repository, there are a few ways of doing this:
-
Simply use the GitHub CLI (reccomended)
This is by far the easiest method, simply follow the download and install prompts on the link above and then run:
gh auth login
Follow the in-terminal prompts and authenticate through your browser. As long as it completes with no errors you're good!
-
Setup SSH keys with your GitHub account
This is a sort of painful setup process but if you can't or don't want to use the GitHub CLI for some reason, instead of writing a couple paragraphs of instructions these ones from the EECS 280 Git setup guide should work well.
git clone https://github.com/masa-umich/mcnugget.git
cd mcnuggetuv is a Python package manager and project manager which all (current) McNugget projects should use. Install it with:
curl -LsSf https://astral.sh/uv/install.sh | shHopefully what you're looking for is named as you would expect, and you can find it in either autosequences/, utilities/, or avionics/. Most Python scripts that are in this repository should be setup as uv scripts, meaning they have a "shebang" at the top of the file which tells the operating system how to run it. If so, you can simply run them as if they were executables, for instance:
./auto-channels.pyAssuming you've already gone through the usage instructions (you have uv installed and this repository cloned)
Go to the right directory (autosequences/, utilities/, or avionics/) and make a new project directory with uv:
uv init <new project name>Enter it, if you want you can rename main.py to the name of the project which is usually nice, and then I also suggest you make the primary file of the script into a uv script so that it's easier for others to execute without activating the venv:
uv init --script <primary file name>
chmod +x <primary file name> # tells the OS that this should be run as an executableOnce you are in the directory for the project you want to work on in your terminal, I reccomend re-focusing your (I assume) VScode window by typing:
code .This will open a new VScode session inside of the directory you're in. This lets extension like the Official VScode Python Extension do it's job and correctly do intellisense and stuff.
If you are editing an existing project or have just cloned the repo, you probably want to make & sync a virtual environment with:
uv syncIn the bottom right of your screen when you are editing a Python file, if you do not see the correct Python version, intellisense active, or if certain imports do not resolve correctly, you probably need to manually set your Python intepreter to the .venv directory in your project directory.
Also, activate the virtual environment in your terminal. In VS code, most terminals will do this automatically if you close them with Ctrl-D and re-open them, but if they don't you can also manually acitvate the virtual environment with:
./.venv/bin/activateIf you're making a script that talks with Synnax, their guides are a good place to start. Note that instead of using pip install synnax you should correctly add it to your uv project:
uv add synnaxAs well as any other external modules or libraries you want to use. Also make sure to add them to the 'script' version of the primary file as well with:
uv add --script <file_name> synnaxAnd run your project with:
uv run <file_name>Or as a file like shown in the 'usage' instructions in this document.
When developing, remember to make a new branch of this repo, make & push commits often, and make pull-requests when you're done!
If you want to test your script with a real Synnax cluster before you push it (a GREAT idea), you can do so by following the instructions on their website found here. Make sure to change your connection settings to use localhost as the host in your Synnax connection settings.
Install the Synnax Console for your operating system to view what your script is doing in real-time!
- Host:
localhostor sometimessynnax.masa.engin.umich.edu - Port:
9090 - Username:
synnax - Password:
seldon - Secure:
FALSE
Ruff is a great, fast, Python Linter and code formatter made by the same folk who make uv. I suggest most projects use it to make code in this repository consistent. You can find it here.
Q: What is Synnax?
A: Synnax is our data visualization, system control, and telemetry database server. Basically, it takes in all of the sensor readings from our rocket or engine in real-time, stores them into a database so we can look at them later, and lets us control things on our system in real-time like valves. Synnax used to be made by MASA for MASA, but has since become a succesful Colorado-based startup.
Q: WHERE ARE MY FILES?!
A: I (Jack) did a re-organization on October 20th, 2025 -- around when Avionics took over this repository. All old files (that haven't been replaced/updated) are in mcnugget/archive and for even older files, look in mcnugget/archive/old (a fantastic name, I know)
Q: How do I connect to the real DAQ PC during a test to use a script?
A: All scripts will prioritize the current Synnax cluster last connected to in the terminal with:
sy loginWhen run in a project with the virtual environment activated. When connecting, these are the default connection settings for the DAQ PC:
- Host:
synnax.masa.engin.umich.edu - Port:
9090 - Username:
synnax - Password:
seldon - Secure:
FALSE
Q: When I run a Synnax server on Windows but try to access it with my script in WSL, I can't connect
A: The IP of your Windows computer that is exposed to WSL is not localhost be default, but you can find it by running this command in WSL:
ip route show | grep -i default | awk '{ print $3}'You should be able to set that as the host in your Synnax scripts to be able to connect.
Q: Why is it called McNugget?
A: To quote the famous Emiliano Bonilla: "I saw someone eating a chicken nugget while I was trying to come up with a name."