A library for working with point clouds and related concepts.
Over the last few years I have written a fair bit of code for both the Simons Observatory and CLASS that involves point clouds. When writing that code I have found myself wanting for a cohesive library that handles all my point cloud related tasks. There are things that exist in bits and pieces (numpy, scipy, sklearn's manifold module, pycpd, etc.) but none of them had all of the features I wanted or were implemented in ways that weren't ideal for my usecase.
Megham exists to help me bridge that gap. Currently I am targeting only a small set of features that are relevant to my work:
- Fitting transforms between point clouds
- Point set registration (without known correspondence)
- Outlier detection
- Multi dimensional scaling
But other features may exist down the line (and PRs are welcome).
To install this repository run:
pip install megham
If you will be actively developing the code may want to instead clone this repository and run:
pip install -e .
Documentation can be found here
All are welcome to contribute to this repository as long as long as the code is relevant. In general contributions other than minor changes should follow the branch/fork -> PR -> merge workflow. If you are going to contribute regularly, contact me to get push access to the repository.
In general contributions should be PEP8 with commits in the conventional commits format. This library follows semantic versioning but the version bumping is done automatically and should usually not have be done manually.
In order to make following these rules easier this repository is setup to work with commitizen and pre-commit. It is recommended that you make use of these tools to save time.
Docstrings should follow the numpy style. API reference docs are automatically built, but any additional narrative documentation or tutorials should go in the docs
folder. This project uses mkdocs
to generate documentation.
- Install both tools with
pip install commitizen pre-commit
. cd
into themegham
repository it you aren't already in it.- (Optional) Setup
commitizen
to automatically run when you rungit commit
. Follow instruction here. - Make sure the
pre-commit
hook is installed by runningpre-commit install
.
- Make a branch for the edits you want to make.
- Code.
- Commit your code with a conventional commit message.
cz c
gives you a wizard that will do this for you, if you followed Step 3 above thengit commit
will also do this (but notgit commit -m
). - Repeat steps 2 and 3 until the goal if your branch has been completed.
- Put in a PR.
- Once the PR is merged the repo version and tag will update automatically.