CubingB is a timer/analyzer for speedsolving Rubik's cubes, with smart cube support

Related tags

Data AnalysisCubingB
Overview

icon

CubingB

CubingB is a timer/analyzer for speedsolving Rubik's cubes (and related puzzles). It focuses on supporting "smart cubes" (i.e. bluetooth cubes) for recording the exact moves of a solve in real time.

CubingB is at a very early stage, and only supports macOS, and only the MoYu Weilong AI for smart cube functionality. It's written in Python, and uses PyQt and PyOpenGL for all sorts of graphical goodness, and pyobjc for binding to macOS' native CoreBluetooth APIs for communicating with smart cubes. It uses a SQLite database, managed with SQLAlchemy and Alembic.

This is just a hobby project written for my own use, so don't expect an easy installation experience or much technical support. If you're not a programmer that knows how to install Python packages, don't bug me with issues yet, please.

icon

Features

  • Normal cubing timer features: basic scramble generation, single/aoX calculations, etc.
  • Session management: renaming, drag-n-drop to reorder, and merge sessions
  • Full incremental turn and gyroscope data recorded and timestamped throughout solves on a smart cube. This can be viewed later like a video, with play/pause/scrubbing. The data is stored in a compact binary format, but can still accumulate rather quickly (about 1K of data for 2-3 seconds of solving)
  • Click-and-drag to rotate, scroll to zoom on 3D cube viewer
  • Smart cube hotkeys: r to reset cube state (i.e. make the virtual cube solved), c to calibrate gyroscope (takes the current gyroscope position and assumes its the standard white top, green front orientation)
  • All solve data stored in a SQLite database for easy analytics (if you're nerdy enough to know SQL)
  • CSTimer importing (no interface, just a Python script for now)
  • Free and open source, yo

In the near future, the priority will be in analyzing solves (i.e. making sane reconstructions incorporating the turn and gyroscope data, tracking algorithm performance, etc.), as well as creating training exercises. That's the whole reason I wanted a smart cube in the first place. This other stuff was just the basics to get a decent timer that's good enough for typical usage.

Issues

  • Cross platform support: PyQt can theoretically run on most platforms. Qt supports bluetooth, but apparently it doesn't support the BTLE advertisement/scanning, which I think is needed for the MoYu cube (at least I couldn't get it to work).
  • Other smart cube support: Maybe later? I really like the MoYu cube for now.
  • Minor weirdnesses with rotations/gyroscope: no idea! I'm out of my depth on the math here at the moment. If you know how quaternions work, I'd love some help!

Misc

CubingB doesn't work! That sucks!

What does CubingB mean? Well, it could potentially stand for CubingBuddy, CubingBenchmarker, or CubingBehemoth, but really it's just a dumb variation on a dumb joke

Owner
Zach Wegner
Zach Wegner
An Aspiring Drop-In Replacement for NumPy at Scale

Legate NumPy is a Legate library that aims to provide a distributed and accelerated drop-in replacement for the NumPy API on top of the Legion runtime. Using Legate NumPy you do things like run the f

Legate 502 Jan 03, 2023
CPSPEC is an astrophysical data reduction software for timing

CPSPEC manual Introduction CPSPEC is an astrophysical data reduction software for timing. Various timing properties, such as power spectra and cross s

Tenyo Kawamura 1 Oct 20, 2021
Randomisation-based inference in Python based on data resampling and permutation.

Randomisation-based inference in Python based on data resampling and permutation.

67 Dec 27, 2022
Using approximate bayesian posteriors in deep nets for active learning

Bayesian Active Learning (BaaL) BaaL is an active learning library developed at ElementAI. This repository contains techniques and reusable components

ElementAI 687 Dec 25, 2022
Minimal working example of data acquisition with nidaqmx python API

Data Aquisition using NI-DAQmx python API Based on this project It is a minimal working example for data acquisition using the NI-DAQmx python API. It

Pablo 1 Nov 05, 2021
Data Analytics: Modeling and Studying data relating to climate change and adoption of electric vehicles

Correlation-Study-Climate-Change-EV-Adoption Data Analytics: Modeling and Studying data relating to climate change and adoption of electric vehicles I

Jonathan Feng 1 Jan 03, 2022
Demonstrate the breadth and depth of your data science skills by earning all of the Databricks Data Scientist credentials

Data Scientist Learning Plan Demonstrate the breadth and depth of your data science skills by earning all of the Databricks Data Scientist credentials

Trung-Duy Nguyen 27 Nov 01, 2022
A simple and efficient tool to parallelize Pandas operations on all available CPUs

Pandaral·lel Without parallelization With parallelization Installation $ pip install pandarallel [--upgrade] [--user] Requirements On Windows, Pandara

Manu NALEPA 2.8k Dec 31, 2022
PCAfold is an open-source Python library for generating, analyzing and improving low-dimensional manifolds obtained via Principal Component Analysis (PCA).

PCAfold is an open-source Python library for generating, analyzing and improving low-dimensional manifolds obtained via Principal Component Analysis (PCA).

Burn Research 4 Oct 13, 2022
A Python package for the mathematical modeling of infectious diseases via compartmental models

A Python package for the mathematical modeling of infectious diseases via compartmental models. Originally designed for epidemiologists, epispot can be adapted for almost any type of modeling scenari

epispot 12 Dec 28, 2022
Sample code for Harry's Airflow online trainng course

Sample code for Harry's Airflow online trainng course You can find the videos on youtube or bilibili. I am working on adding below things: the slide p

102 Dec 30, 2022
Show you how to integrate Zeppelin with Airflow

Introduction This repository is to show you how to integrate Zeppelin with Airflow. The philosophy behind the ingtegration is to make the transition f

Jeff Zhang 11 Dec 30, 2022
Helper tools to construct probability distributions built from expert elicited data for use in monte carlo simulations.

Elicited Helper tools to construct probability distributions built from expert elicited data for use in monte carlo simulations. Credit to Brett Hoove

Ryan McGeehan 3 Nov 04, 2022
Unsub is a collection analysis tool that assists libraries in analyzing their journal subscriptions.

About Unsub is a collection analysis tool that assists libraries in analyzing their journal subscriptions. The tool provides rich data and a summary g

9 Nov 16, 2022
CINECA molecular dynamics tutorial set

High Performance Molecular Dynamics Logging into CINECA's computer systems To logon to the M100 system use the following command from an SSH client ss

J. W. Dell 0 Mar 13, 2022
ASOUL直播间弹幕抓取&&数据分析

ASOUL直播间弹幕抓取&&数据分析(更新中) 这些文件用于爬取ASOUL直播间的弹幕(其他直播间也可以)和其他信息,以及简单的数据分析生成。

159 Dec 10, 2022
Demonstrate a Dataflow pipeline that saves data from an API into BigQuery table

Overview dataflow-mvp provides a basic example pipeline that pulls data from an API and writes it to a BigQuery table using GCP's Dataflow (i.e., Apac

Chris Carbonell 1 Dec 03, 2021
A Python and R autograding solution

Otter-Grader Otter Grader is a light-weight, modular open-source autograder developed by the Data Science Education Program at UC Berkeley. It is desi

Infrastructure Team 93 Jan 03, 2023
A Big Data ETL project in PySpark on the historical NYC Taxi Rides data

Processing NYC Taxi Data using PySpark ETL pipeline Description This is an project to extract, transform, and load large amount of data from NYC Taxi

Unnikrishnan 2 Dec 12, 2021
WAL enables programmable waveform analysis.

This repro introcudes the Waveform Analysis Language (WAL). The initial paper on WAL will appear at ASPDAC'22 and can be downloaded here: https://www.

Institute for Complex Systems (ICS), Johannes Kepler University Linz 40 Dec 13, 2022