An open API service indexing awesome lists of open source software.

https://github.com/erotemic/erotemic

Jon Crall's Github
https://github.com/erotemic/erotemic

algorithms-and-data-structures bash computer-vision linux machine-learning open-source python software-development utilities

Last synced: 2 months ago
JSON representation

Jon Crall's Github

Awesome Lists containing this project

README

        

### Hi there 👋

[![Erotemic's github stats](https://github-readme-stats.vercel.app/api?username=Erotemic)](https://github.com/Erotemic/github-readme-stats)

- 🔭 I’m currently working on: computer vision research, dog poop detection
- 🌱 I’m currently learning: as much as possible, including: lean4, python-poetry, c/rust, javascript.
- 🤔 I’m looking for help with: fixing bugs in my repos, lean4, win32-pyhesaff wheels, a [delayed-image speed issue](https://gitlab.kitware.com/computer-vision/delayed_image/-/issues/2)
- 💬 Ask me about: doctests, Python, graphs, image processing
- 📫 How to reach me: mastodon / bsky
- 😄 Pronouns: he / him
- 🏭 Born at 353 ppm CO₂
- 🔐 GPG Key: 4AC8B478335ED6ED667715F3622BE571405441B4
- 🧠 I highly value being corrected; it makes me less incorrect, and I don't like being incorrect.
- ⚡ Fun fact: [if the holographic principle holds, the maximum amount of information that can be contained in a finite space is proportional to its surface area and not its volume.](https://en.wikipedia.org/wiki/Holographic_principle#Energy,_matter,_and_information_equivalence)


[![](https://img.shields.io/github/followers/Erotemic.svg?style=social&label=Follow:Erotemic)](https://github.com/Erotemic)
[![](https://img.shields.io/twitter/follow/erotemic?style=social)](https://twitter.com/Erotemic)
[![Mastodon Follow](https://img.shields.io/mastodon/follow/109538419145927960?domain=https%3A%2F%2Fsigmoid.social&style=social)](https://sigmoid.social/@erotemic)

To learn about me in a professional context, see my [Kitware bio](https://www.kitware.com/jon-crall/), where I've been employed from 2007-~2010, break for grad school, and then again from 2017 - present. For my published and some unpublished papers, see my [google scholar profile](https://scholar.google.com/citations?user=zwRsVsAAAAAJ&hl=en). I also have a [blog](https://erotemic.wordpress.com/) where I muse.

I am a maintainer of all of the projects on this front page. I either own them or I am a major contributor. The following table gives an overview, and then I have a few small blurbs about some of them.

| Name | Github Stars | Pypi Downloads | Docs |
|:------------------------------------------------------------------------------|:-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|:-------------------------------------------------------------------------------------------------------------------|:-------------------------------------------------------------------------------------------------------------------------------------|
| [xdoctest](https://github.com/Erotemic/xdoctest) | [![GitHub stars](https://img.shields.io/github/stars/Erotemic/xdoctest?style=social&label=stars:xdoctest)](https://github.com/Erotemic/xdoctest) | [![Downloads](https://img.shields.io/pypi/dm/xdoctest.svg)](https://pypistats.org/packages/xdoctest) | [![Docs](https://readthedocs.org/projects/xdoctest/badge/?version=latest)](https://xdoctest.readthedocs.io/en/latest/) |
| [ubelt](https://github.com/Erotemic/ubelt) | [![GitHub stars](https://img.shields.io/github/stars/Erotemic/ubelt?style=social&label=stars:ubelt)](https://github.com/Erotemic/ubelt) | [![Downloads](https://img.shields.io/pypi/dm/ubelt.svg)](https://pypistats.org/packages/ubelt) | [![Docs](https://readthedocs.org/projects/ubelt/badge/?version=latest)](https://ubelt.readthedocs.io/en/latest/) |
| [mkinit](https://github.com/Erotemic/mkinit) | [![GitHub stars](https://img.shields.io/github/stars/Erotemic/mkinit?style=social&label=stars:mkinit)](https://github.com/Erotemic/mkinit) | [![Downloads](https://img.shields.io/pypi/dm/mkinit.svg)](https://pypistats.org/packages/mkinit) | [![Docs](https://readthedocs.org/projects/mkinit/badge/?version=latest)](https://mkinit.readthedocs.io/en/latest/) |
| [vimtk](https://github.com/Erotemic/vimtk) | [![GitHub stars](https://img.shields.io/github/stars/Erotemic/vimtk?style=social&label=stars:vimtk)](https://github.com/Erotemic/vimtk) | [![Downloads](https://img.shields.io/pypi/dm/vimtk.svg)](https://pypistats.org/packages/vimtk) | [![Docs](https://readthedocs.org/projects/vimtk/badge/?version=latest)](https://vimtk.readthedocs.io/en/latest/) |
| [xdev](https://github.com/Erotemic/xdev) | [![GitHub stars](https://img.shields.io/github/stars/Erotemic/xdev?style=social&label=stars:xdev)](https://github.com/Erotemic/xdev) | [![Downloads](https://img.shields.io/pypi/dm/xdev.svg)](https://pypistats.org/packages/xdev) | [![Docs](https://readthedocs.org/projects/xdev/badge/?version=latest)](https://xdev.readthedocs.io/en/latest/) |
| [progiter](https://github.com/Erotemic/progiter) | [![GitHub stars](https://img.shields.io/github/stars/Erotemic/progiter?style=social&label=stars:progiter)](https://github.com/Erotemic/progiter) | [![Downloads](https://img.shields.io/pypi/dm/progiter.svg)](https://pypistats.org/packages/progiter) | [![Docs](https://readthedocs.org/projects/progiter/badge/?version=latest)](https://progiter.readthedocs.io/en/latest/) |
| [timerit](https://github.com/Erotemic/timerit) | [![GitHub stars](https://img.shields.io/github/stars/Erotemic/timerit?style=social&label=stars:timerit)](https://github.com/Erotemic/timerit) | [![Downloads](https://img.shields.io/pypi/dm/timerit.svg)](https://pypistats.org/packages/timerit) | [![Docs](https://readthedocs.org/projects/timerit/badge/?version=latest)](https://timerit.readthedocs.io/en/latest/) |
| [git_well](https://github.com/Erotemic/git_well) | [![GitHub stars](https://img.shields.io/github/stars/Erotemic/git_well?style=social&label=stars:git_well)](https://github.com/Erotemic/git_well) | [![Downloads](https://img.shields.io/pypi/dm/git_well.svg)](https://pypistats.org/packages/git_well) | [![Docs](https://readthedocs.org/projects/git_well/badge/?version=latest)](https://git_well.readthedocs.io/en/latest/) |
| [line_profiler](https://github.com/pyutils/line_profiler) | [![GitHub stars](https://img.shields.io/github/stars/pyutils/line_profiler?style=social&label=stars:line_profiler)](https://github.com/pyutils/line_profiler) | [![Downloads](https://img.shields.io/pypi/dm/line_profiler.svg)](https://pypistats.org/packages/line-profiler) | [![Docs](https://readthedocs.org/projects/line_profiler/badge/?version=latest)](https://kernprof.readthedocs.io/en/latest/) |
| [ibeis](https://github.com/Erotemic/ibeis) | [![GitHub stars](https://img.shields.io/github/stars/Erotemic/ibeis?style=social&label=stars:ibeis)](https://github.com/Erotemic/ibeis) | [![Downloads](https://img.shields.io/pypi/dm/ibeis.svg)](https://pypistats.org/packages/ibeis) | [![Docs](https://readthedocs.org/projects/ibeis/badge/?version=latest)](https://ibeis.readthedocs.io/en/latest/) |
| [graphid](https://github.com/Erotemic/graphid) | [![GitHub stars](https://img.shields.io/github/stars/Erotemic/graphid?style=social&label=stars:graphid)](https://github.com/Erotemic/graphid) | [![Downloads](https://img.shields.io/pypi/dm/graphid.svg)](https://pypistats.org/packages/graphid) | [![Docs](https://readthedocs.org/projects/graphid/badge/?version=latest)](https://graphid.readthedocs.io/en/latest/) |
| [hotspotter](https://github.com/Erotemic/hotspotter) | [![GitHub stars](https://img.shields.io/github/stars/Erotemic/hotspotter?style=social&label=stars:hotspotter)](https://github.com/Erotemic/hotspotter) | nan | nan |
| [crall-thesis-2017](https://github.com/Erotemic/crall-thesis-2017) | [![GitHub stars](https://img.shields.io/github/stars/Erotemic/crall-thesis-2017?style=social&label=stars:crall-thesis-2017)](https://github.com/Erotemic/crall-thesis-2017) | nan | nan |
| [pypogo](https://github.com/Erotemic/pypogo) | [![GitHub stars](https://img.shields.io/github/stars/Erotemic/pypogo?style=social&label=stars:pypogo)](https://github.com/Erotemic/pypogo) | [![Downloads](https://img.shields.io/pypi/dm/pypogo.svg)](https://pypistats.org/packages/pypogo) | [![Docs](https://readthedocs.org/projects/pypogo/badge/?version=latest)](https://pypogo.readthedocs.io/en/latest/) |
| [sm64-random-assets](https://github.com/Erotemic/sm64-random-assets) | [![GitHub stars](https://img.shields.io/github/stars/Erotemic/sm64-random-assets?style=social&label=stars:sm64-random-assets)](https://github.com/Erotemic/sm64-random-assets) | nan | nan |
| [shitspotter](https://github.com/Erotemic/shitspotter) | [![GitHub stars](https://img.shields.io/github/stars/Erotemic/shitspotter?style=social&label=stars:shitspotter)](https://github.com/Erotemic/shitspotter) | nan | nan |
| [liberator](https://gitlab.kitware.com/python/liberator) | [![GitHub stars](https://img.shields.io/github/stars/Kitware/liberator?style=social&label=stars:liberator)](https://github.com/Kitware/liberator) | [![Downloads](https://img.shields.io/pypi/dm/liberator.svg)](https://pypistats.org/packages/liberator) | [![Docs](https://readthedocs.org/projects/liberator/badge/?version=latest)](https://liberator.readthedocs.io/en/latest/) |
| [scriptconfig](https://gitlab.kitware.com/utils/scriptconfig) | [![GitHub stars](https://img.shields.io/github/stars/Kitware/scriptconfig?style=social&label=stars:scriptconfig)](https://github.com/Kitware/scriptconfig) | [![Downloads](https://img.shields.io/pypi/dm/scriptconfig.svg)](https://pypistats.org/packages/scriptconfig) | [![Docs](https://readthedocs.org/projects/scriptconfig/badge/?version=latest)](https://scriptconfig.readthedocs.io/en/latest/) |
| [torch_liberator](https://gitlab.kitware.com/computer-vision/torch_liberator) | [![GitHub stars](https://img.shields.io/github/stars/Kitware/torch_liberator?style=social&label=stars:torch_liberator)](https://github.com/Kitware/torch_liberator) | [![Downloads](https://img.shields.io/pypi/dm/torch_liberator.svg)](https://pypistats.org/packages/torch_liberator) | [![Docs](https://readthedocs.org/projects/torch_liberator/badge/?version=latest)](https://torch_liberator.readthedocs.io/en/latest/) |
| [kwcoco](https://gitlab.kitware.com/computer-vision/kwcoco) | [![GitHub stars](https://img.shields.io/github/stars/Kitware/kwcoco?style=social&label=stars:kwcoco)](https://github.com/Kitware/kwcoco) | [![Downloads](https://img.shields.io/pypi/dm/kwcoco.svg)](https://pypistats.org/packages/kwcoco) | [![Docs](https://readthedocs.org/projects/kwcoco/badge/?version=latest)](https://kwcoco.readthedocs.io/en/latest/) |
| [kwarray](https://gitlab.kitware.com/computer-vision/kwarray) | [![GitHub stars](https://img.shields.io/github/stars/Kitware/kwarray?style=social&label=stars:kwarray)](https://github.com/Kitware/kwarray) | [![Downloads](https://img.shields.io/pypi/dm/kwarray.svg)](https://pypistats.org/packages/kwarray) | [![Docs](https://readthedocs.org/projects/kwarray/badge/?version=latest)](https://kwarray.readthedocs.io/en/latest/) |
| [kwimage](https://gitlab.kitware.com/computer-vision/kwimage) | [![GitHub stars](https://img.shields.io/github/stars/Kitware/kwimage?style=social&label=stars:kwimage)](https://github.com/Kitware/kwimage) | [![Downloads](https://img.shields.io/pypi/dm/kwimage.svg)](https://pypistats.org/packages/kwimage) | [![Docs](https://readthedocs.org/projects/kwimage/badge/?version=latest)](https://kwimage.readthedocs.io/en/latest/) |
| [kwplot](https://gitlab.kitware.com/computer-vision/kwplot) | [![GitHub stars](https://img.shields.io/github/stars/Kitware/kwplot?style=social&label=stars:kwplot)](https://github.com/Kitware/kwplot) | [![Downloads](https://img.shields.io/pypi/dm/kwplot.svg)](https://pypistats.org/packages/kwplot) | [![Docs](https://readthedocs.org/projects/kwplot/badge/?version=latest)](https://kwplot.readthedocs.io/en/latest/) |
| [kwutil](https://gitlab.kitware.com/computer-vision/kwutil) | [![GitHub stars](https://img.shields.io/github/stars/Kitware/kwutil?style=social&label=stars:kwutil)](https://github.com/Kitware/kwutil) | [![Downloads](https://img.shields.io/pypi/dm/kwutil.svg)](https://pypistats.org/packages/kwutil) | [![Docs](https://readthedocs.org/projects/kwutil/badge/?version=latest)](https://kwutil.readthedocs.io/en/latest/) |
| [netharn](https://gitlab.kitware.com/computer-vision/netharn) | [![GitHub stars](https://img.shields.io/github/stars/Kitware/netharn?style=social&label=stars:netharn)](https://github.com/Kitware/netharn) | [![Downloads](https://img.shields.io/pypi/dm/netharn.svg)](https://pypistats.org/packages/netharn) | [![Docs](https://readthedocs.org/projects/netharn/badge/?version=latest)](https://netharn.readthedocs.io/en/latest/) |
| [ndsampler](https://gitlab.kitware.com/computer-vision/ndsampler) | [![GitHub stars](https://img.shields.io/github/stars/Kitware/ndsampler?style=social&label=stars:ndsampler)](https://github.com/Kitware/ndsampler) | [![Downloads](https://img.shields.io/pypi/dm/ndsampler.svg)](https://pypistats.org/packages/ndsampler) | [![Docs](https://readthedocs.org/projects/ndsampler/badge/?version=latest)](https://ndsampler.readthedocs.io/en/latest/) |
| [delayed_image](https://gitlab.kitware.com/computer-vision/delayed_image) | [![GitHub stars](https://img.shields.io/github/stars/Kitware/delayed_image?style=social&label=stars:delayed_image)](https://github.com/Kitware/delayed_image) | [![Downloads](https://img.shields.io/pypi/dm/delayed_image.svg)](https://pypistats.org/packages/delayed_image) | [![Docs](https://readthedocs.org/projects/delayed_image/badge/?version=latest)](https://delayed_image.readthedocs.io/en/latest/) |
| [cmd_queue](https://gitlab.kitware.com/computer-vision/cmd_queue) | [![GitHub stars](https://img.shields.io/github/stars/Kitware/cmd_queue?style=social&label=stars:cmd_queue)](https://github.com/Kitware/cmd_queue) | [![Downloads](https://img.shields.io/pypi/dm/cmd_queue.svg)](https://pypistats.org/packages/cmd_queue) | [![Docs](https://readthedocs.org/projects/cmd_queue/badge/?version=latest)](https://cmd_queue.readthedocs.io/en/latest/) |
| [geowatch](https://gitlab.kitware.com/computer-vision/geowatch) | [![GitHub stars](https://img.shields.io/github/stars/Kitware/geowatch?style=social&label=stars:geowatch)](https://github.com/Kitware/geowatch) | [![Downloads](https://img.shields.io/pypi/dm/geowatch.svg)](https://pypistats.org/packages/geowatch) | [![Docs](https://readthedocs.org/projects/geowatch/badge/?version=latest)](https://geowatch.readthedocs.io/en/latest/) |

[![Star History Chart](https://api.star-history.com/svg?repos=Erotemic/xdoctest,Erotemic/ubelt,Erotemic/mkinit&type=Date)](https://star-history.com/#Erotemic/xdoctest&Erotemic/ubelt&Erotemic/mkinit&Date)

Here is the rough full-dependency structure of these packages. Note many of the packages (e.g. ubelt) have minimal versions with no dependencies, but the visualization is for full dependency sets.

![Package dependencies](https://i.imgur.com/A2ohosH.png)

And here are some logical groupings of the packages with links and descriptions:

### Python packages and utilities

- https://github.com/Erotemic/xdoctest - Python doctest parser and runner. (mature)
- https://github.com/Erotemic/ubelt - Python utilities and stdlib extensions. (mature)
- https://github.com/Erotemic/mkinit - Autogenerate Python `__init__.py` files that expose submodule APIs at the top-level. (mature)
- https://github.com/Erotemic/vimtk - My Vim plugin, which contains useful functional macros and key remaps. (stable)
- https://github.com/Erotemic/xdev - Python utilities useful for development and debugging. (stable)
- https://github.com/Erotemic/progiter - Small standalone progress bar. (mature)
- https://github.com/Erotemic/timerit - Pure python syntax for timeit-like timings of blocks of code. (mature)
- https://github.com/Erotemic/git_well - Git command line extensions. (stable)
- https://github.com/pyutils/line_profiler - I help maintain this widely used Python tool. (maintaining)
- https://github.com/Erotemic/googledoc - A google docstring parser and tools (alpha).
- https://github.com/Erotemic/networkx_algo_common_subtree - A contrib repo containing specialized networkx algorithms for maximum common subtree problems (stable).

### Animal Identification (products of my PhD)

- https://github.com/Erotemic/ibeis - PhD Thesis project: automatic identification of patterned individual animals. Successor to hotspotter. (maintaining, help wanted with win32/osx support).
- https://github.com/Erotemic/graphid - A standalone version of the graph identification algorithm from my thesis. (complete)
- https://github.com/Erotemic/hotspotter - My original Python code for the hotspotter identification algorithm. (shoddy)
- https://github.com/Erotemic/crall-thesis-2017 - The LaTeX source for my thesis. (complete)

### Fun Projects

- https://github.com/Erotemic/pypogo - Pokemon Go calculations and POC battle simulator. (calculations are good, stalled on simulator logic, but might pick back up)
- https://github.com/Erotemic/shitspotter - Poop detection in images. (active)
- https://github.com/Erotemic/sm64-random-assets - Playable randomized assets for sm64.

### Gitlab Repos

- https://gitlab.kitware.com/computer-vision/torch_liberator - Partial weight transfer between networks. 3rd place winner of PyTorch Hackaton 2021 https://devpost.com/software/torchliberator-partial-weight-loading (kitware related)

- https://gitlab.kitware.com/computer-vision/kwcoco - A computer-vision dataset manifest. Extension of MS-COCO. (kitware project, active)

- https://gitlab.kitware.com/python/liberator - Static Python code extraction. (kitware project)
- https://gitlab.kitware.com/utils/scriptconfig - Simplified script configuration via kwargs, cli, or yaml. (kitware project, stable)

- https://gitlab.kitware.com/computer-vision/kwarray - Kitware python array helpers (kitware project, stable)
- https://gitlab.kitware.com/computer-vision/kwimage - Kitware python image helpers (kitware project, stable)
- https://gitlab.kitware.com/computer-vision/kwplot - Kitware python plotting helpers (kitware project, stable)

- https://gitlab.kitware.com/computer-vision/netharn - Probably best to use pytorch-lightning instead, still cool network stuff in here through (deprecated kitware project, in favor of pytorch-lightning)
- https://gitlab.kitware.com/computer-vision/ndsampler - Fast windowed sampling from images (kitware project, stable)
- https://gitlab.kitware.com/computer-vision/delayed_image - Symbolic delayed image operations. Operation trees are optimized to minimize load time. Delay, manipulate, and finalize. (kitware projectk, stable)
- https://gitlab.kitware.com/computer-vision/cmd_queue - Execute a DAG of bash commands sequentially, in multiple tmux sessions, slurm, or airflow. (kitware project, stable)

### My Dotfiles
- https://github.com/Erotemic/local