# megham
A library for working with point clouds and related concepts.
## Introduction
Over the last few years I have written a fair bit of code for both
the [Simons Observatory](https://simonsobservatory.org/) and [CLASS](https://sites.krieger.jhu.edu/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](https://numpy.org/), [scipy](https://scipy.org/), [sklearn's manifold module](https://scikit-learn.org/stable/modules/classes.html#module-sklearn.manifold), [pycpd](https://github.com/siavashk/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).
## Getting Started
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](https://skhrg.github.io/megham/)
## Contributing
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.
### Style and Standards
In general contributions should be [PEP8](https://peps.python.org/pep-0008/) with commits in the [conventional commits](https://www.conventionalcommits.org/en/v1.0.0/) format.
This library follows [semantic versioning](https://semver.org/) 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](https://commitizen-tools.github.io/commitizen/) and [pre-commit](https://pre-commit.com/).
It is recommended that you make use of these tools to save time.
Docstrings should follow the [numpy style](https://numpydoc.readthedocs.io/en/latest/format.html). API reference docs are automatically built, but any additional narrative documentation or tutorials should go in the `docs` folder. This project uses [`mkdocs`](https://www.mkdocs.org/) to generate documentation.
#### Tool Setup
1. Install both tools with `pip install commitizen pre-commit`.
2. `cd` into the `megham` repository it you aren't already in it.
3. (Optional) Setup `commitizen` to automatically run when you run `git commit`. Follow instruction [here](https://commitizen-tools.github.io/commitizen/tutorials/auto_prepare_commit_message/).
4. Make sure the `pre-commit` hook is installed by running `pre-commit install`.
#### Example Workflow
1. Make a branch for the edits you want to make.
2. Code.
3. Commit your code with a [conventional commit message](https://www.conventionalcommits.org/en/v1.0.0/#summary). `cz c` gives you a wizard that will do this for you, if you followed Step 3 above then `git commit` will also do this (but not `git commit -m`).
4. Repeat steps 2 and 3 until the goal if your branch has been completed.
5. Put in a PR.
5. Once the PR is merged the repo version and tag will update [automatically](https://commitizen-tools.github.io/commitizen/tutorials/github_actions/).
Raw data
{
"_id": null,
"home_page": null,
"name": "megham",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.8",
"maintainer_email": null,
"keywords": "point cloud, affine, rotations, mds, multidimensional scaling, point set registration, cpd, coherent point drift, mpd, guassian mixture model",
"author": "Saianeesh Keshav Haridas",
"author_email": null,
"download_url": "https://files.pythonhosted.org/packages/2a/31/82c20f73674912fd3740ef7a6eff916ff024df5643fa16818542706763f2/megham-1.3.1.tar.gz",
"platform": null,
"description": "# megham\n\nA library for working with point clouds and related concepts.\n\n## Introduction \nOver the last few years I have written a fair bit of code for both\nthe [Simons Observatory](https://simonsobservatory.org/) and [CLASS](https://sites.krieger.jhu.edu/class/)\nthat involves point clouds.\nWhen writing that code I have found myself wanting for a cohesive library that handles all my point cloud\nrelated tasks.\nThere are things that exist in bits and pieces\n([numpy](https://numpy.org/), [scipy](https://scipy.org/), [sklearn's manifold module](https://scikit-learn.org/stable/modules/classes.html#module-sklearn.manifold), [pycpd](https://github.com/siavashk/pycpd), etc.)\nbut none of them had all of the features I wanted or were implemented in ways that weren't ideal for my usecase.\n\nMegham exists to help me bridge that gap.\nCurrently I am targeting only a small set of features that are relevant to my work:\n\n* Fitting transforms between point clouds\n* Point set registration (without known correspondence)\n* Outlier detection\n* Multi dimensional scaling\n\nBut other features may exist down the line (and PRs are welcome).\n\n## Getting Started\nTo install this repository run:\n```\npip install megham \n```\nIf you will be actively developing the code may want to instead clone this repository and run:\n```\npip install -e .\n```\n\nDocumentation can be found [here](https://skhrg.github.io/megham/)\n\n## Contributing\n\nAll are welcome to contribute to this repository as long as long as the code is relevant.\nIn general contributions other than minor changes should follow the branch/fork -> PR -> merge workflow.\nIf you are going to contribute regularly, contact me to get push access to the repository.\n\n### Style and Standards\nIn general contributions should be [PEP8](https://peps.python.org/pep-0008/) with commits in the [conventional commits](https://www.conventionalcommits.org/en/v1.0.0/) format.\nThis library follows [semantic versioning](https://semver.org/) but the version bumping is done automatically and should usually not have be done manually.\n\nIn order to make following these rules easier this repository is setup to work with [commitizen](https://commitizen-tools.github.io/commitizen/) and [pre-commit](https://pre-commit.com/).\nIt is recommended that you make use of these tools to save time.\n\nDocstrings should follow the [numpy style](https://numpydoc.readthedocs.io/en/latest/format.html). API reference docs are automatically built, but any additional narrative documentation or tutorials should go in the `docs` folder. This project uses [`mkdocs`](https://www.mkdocs.org/) to generate documentation.\n\n#### Tool Setup\n1. Install both tools with `pip install commitizen pre-commit`.\n2. `cd` into the `megham` repository it you aren't already in it.\n3. (Optional) Setup `commitizen` to automatically run when you run `git commit`. Follow instruction [here](https://commitizen-tools.github.io/commitizen/tutorials/auto_prepare_commit_message/).\n4. Make sure the `pre-commit` hook is installed by running `pre-commit install`.\n\n#### Example Workflow\n1. Make a branch for the edits you want to make.\n2. Code.\n3. Commit your code with a [conventional commit message](https://www.conventionalcommits.org/en/v1.0.0/#summary). `cz c` gives you a wizard that will do this for you, if you followed Step 3 above then `git commit` will also do this (but not `git commit -m`).\n4. Repeat steps 2 and 3 until the goal if your branch has been completed.\n5. Put in a PR.\n5. Once the PR is merged the repo version and tag will update [automatically](https://commitizen-tools.github.io/commitizen/tutorials/github_actions/).\n",
"bugtrack_url": null,
"license": "GPLv3",
"summary": "Tools for working with point clouds",
"version": "1.3.1",
"project_urls": null,
"split_keywords": [
"point cloud",
" affine",
" rotations",
" mds",
" multidimensional scaling",
" point set registration",
" cpd",
" coherent point drift",
" mpd",
" guassian mixture model"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "735977768a4b72fc32715cf39dca102be89a5beee645e4448557e116e60b33b4",
"md5": "a51691ca76ed6668e51b3e5c66a37a5c",
"sha256": "32f93fa146c6a266524e3584310a5a653e33c1a44aeb788848dc635fab76f2a9"
},
"downloads": -1,
"filename": "megham-1.3.1-py3-none-any.whl",
"has_sig": false,
"md5_digest": "a51691ca76ed6668e51b3e5c66a37a5c",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.8",
"size": 23483,
"upload_time": "2024-11-18T21:21:23",
"upload_time_iso_8601": "2024-11-18T21:21:23.982312Z",
"url": "https://files.pythonhosted.org/packages/73/59/77768a4b72fc32715cf39dca102be89a5beee645e4448557e116e60b33b4/megham-1.3.1-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "2a3182c20f73674912fd3740ef7a6eff916ff024df5643fa16818542706763f2",
"md5": "3fa6e47c0d32c4bfc44d7c7f7ae392d8",
"sha256": "d3daedc83e7c7c5375551704073a91c44e9189f460ef1bc459e2fd19bfc2632a"
},
"downloads": -1,
"filename": "megham-1.3.1.tar.gz",
"has_sig": false,
"md5_digest": "3fa6e47c0d32c4bfc44d7c7f7ae392d8",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.8",
"size": 24349,
"upload_time": "2024-11-18T21:21:26",
"upload_time_iso_8601": "2024-11-18T21:21:26.249015Z",
"url": "https://files.pythonhosted.org/packages/2a/31/82c20f73674912fd3740ef7a6eff916ff024df5643fa16818542706763f2/megham-1.3.1.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-11-18 21:21:26",
"github": false,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"lcname": "megham"
}