{"id":40681378,"url":"https://github.com/kanglcn/moraine","last_synced_at":"2026-01-21T10:18:24.615Z","repository":{"id":64743207,"uuid":"577910765","full_name":"kanglcn/moraine","owner":"kanglcn","description":"Modern Radar Interferometry Environment; A simple, stupid InSAR postprocessing tool in big data era","archived":false,"fork":false,"pushed_at":"2025-11-02T03:07:20.000Z","size":549833,"stargazers_count":39,"open_issues_count":8,"forks_count":8,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-11-02T05:25:45.085Z","etag":null,"topics":["big-data","deep-learning","ds","insar","interactive-visualizations","phase-unwrapping","ps"],"latest_commit_sha":null,"homepage":"https://kanglcn.github.io/moraine/","language":"Jupyter Notebook","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/kanglcn.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2022-12-13T20:10:04.000Z","updated_at":"2025-11-02T03:04:40.000Z","dependencies_parsed_at":"2024-05-01T04:46:56.065Z","dependency_job_id":"f5fd0f90-caf8-4219-8ab8-782e54d98567","html_url":"https://github.com/kanglcn/moraine","commit_stats":{"total_commits":102,"total_committers":3,"mean_commits":34.0,"dds":0.02941176470588236,"last_synced_commit":"d2a7788baba04b464a5277bcdcb1c38d9679cfaa"},"previous_names":["kanglcn/moraine","kanglcn/decorrelation"],"tags_count":28,"template":false,"template_full_name":null,"purl":"pkg:github/kanglcn/moraine","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kanglcn%2Fmoraine","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kanglcn%2Fmoraine/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kanglcn%2Fmoraine/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kanglcn%2Fmoraine/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kanglcn","download_url":"https://codeload.github.com/kanglcn/moraine/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kanglcn%2Fmoraine/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28631936,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-21T04:47:28.174Z","status":"ssl_error","status_checked_at":"2026-01-21T04:47:22.943Z","response_time":86,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["big-data","deep-learning","ds","insar","interactive-visualizations","phase-unwrapping","ps"],"created_at":"2026-01-21T10:18:23.799Z","updated_at":"2026-01-21T10:18:24.609Z","avatar_url":"https://github.com/kanglcn.png","language":"Jupyter Notebook","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Moraine\n\n\u003e Modern Radar Interferometry Environment; A simple, stupid InSAR\n\u003e postprocessing tool in big data era\n\nThis package provide functions for InSAR post-processing which refers as\nprocessing after SAR images co-registration and geocoding. The functions\ninclude PS/DS identification, coherence matrix estimation, phase linking\netc.\n\n\u003cdiv\u003e\n\n\u003e **Warning**\n\u003e\n\u003e Due to the heavy dependence on CuPy and CUDA, this package only works\n\u003e on device with Nivida GPU.\n\n\u003c/div\u003e\n\n\u003cdiv\u003e\n\n\u003e **Warning**\n\u003e\n\u003e This package is under intensive development. API is subjected to\n\u003e change without any noticement.\n\n\u003c/div\u003e\n\n## Principle[^1]\n\n### Simplicity\n\nThere is no perfect workflow that always generate satisfactory InSAR\nresult, mostly due to decorrelation, strong atmospheric artifact and\nhigh deformation gradient. Different methods implemented in different\npackages need to be tried which is frustrating especially when the\npackages are over-encapsulated and no detailed documentations are\nprovided. Furthermore, it brings more dirty work when users need to save\nintermediate data from one software and prepared them in a designated\nformat and structure required by another software.\n\nMoraine defines simplicity as *without complex data structure and\nover-encapsulation*. Most data in Moraine is just the basic\nmulti-dimentional array, i.e., [NumPy](https://numpy.org/) array or\n[CuPy](https://cupy.dev/) array in memory, or\n[Zarr](https://zarr.readthedocs.io/en/stable/) on disk. Instead of\nproviding a standard workflow as\n[StamPS](https://homepages.see.leeds.ac.uk/~earahoo/stamps/) and\n[MintPy](https://mintpy.readthedocs.io/en/latest/), Moraine is designed\nas a collection of functions that implement specific InSAR processing\ntechniques and data manipulation infrastructure.\n\n### Modernity\n\nMoraine strives to implement state-of-art InSAR techniques, including\nadvanced PS/DS identification, phase linking and deep-learning-based\nmethods.\n\nMoraine also emphasizes performance, especially in this big data era.\nMost Moraine functions are implemented with well-optimized GPU code or\nOpenMP code. Furthermore, with the support of\n[Dask](https://docs.dask.org/en/stable/), Moraine can be runed on\nmulti-GPUs to further accelerate the processing, get rid of the\nlimitation of memory and achieve asynchronous IO.\n\n### Pragmatism\n\nMoraine is a pragmatic library rather than an ideological workflow. The\nlarge number of functions in MOraine offer free and open source\nimplementation for many InSAR techniques. Ultimately, workflow designs\nare made on a case-by-case basis by the user. We provide the necessary\ninfrastructure and your role is to be innovative!\n\n### User centrality\n\nWhereas many InSAR packages attempt to be more user-friendly, Moraine\nhas always been, and shall always remain user-centric. This package is\nintended to fill the needs of those contributing to it, rather than\ntrying to appeal to as many users as possible. It is targeted at the\nproficient InSAR user, or anyone with a do-it-yourself attitude who is\nwilling to read the documentation, and solve their own problems.\n\nAll users are encouraged to participate and contribute to this package.\nReporting bugs and requesting new features by raising a Github\n[issue](https://github.com/kanglcn/moraine/issues) is highly valued and\nbugs fixing, documentation improving and features implementation by make\na Github [pull request](https://github.com/kanglcn/moraine/pulls) are\nvery appreciated. Users can also freely ask questions, provide technical\nassistance to others or just exchange opinions in the\n[discussions](https://github.com/kanglcn/moraine/discussions).\n\n## Install\n\nBecause of GPU driver and CUDA Version Compatibility, there is no simple\nsolution for CUDA related packages installation. Users need to\nsuccessfully install\n[cupy](https://docs.cupy.dev/en/stable/install.html#installation) and\n[dask_cuda](https://docs.rapids.ai/api/dask-cuda/stable/) first.\n\nHere is some tips for installing them. Generally, the cuda driver is\nalrealy installed and maintained by the system administrator. Users only\nneed to determine the right cudatoolkit version. Frist run\n\n``` bash\nnvidia-smi\n```\n\nIt will prints something like:\n\n    ...\n    +-----------------------------------------------------------------------------+\n    | NVIDIA-SMI 525.105.17   Driver Version: 525.105.17   CUDA Version: 12.0     |\n    |-------------------------------+----------------------+----------------------+\n    ...\n\nThe `CUDA Version` is the maxminum cudatoolkit version that supported by\nthe current CUDA driver. Here we use version 11.8 as an example. Then\nyou can install the needed `cudatoolkit`, `cupy`, `dask_cuda` by:\n\n``` bash\nconda install -c \"nvidia/label/cuda-11.8.0\" cuda-toolkit\nconda install -c conda-forge cupy cuda-version=11.8\nconda install -c rapidsai -c conda-forge -c nvidia dask-cuda rmm cuda-version=11.8\npip install onnxruntime # or onnxruntime-gpu\n```\n\nThen\n\nWith conda:\n\n``` bash\nconda install -c conda-forge moraine\n```\n\nOr with pip:\n\n``` bash\npip install moraine\n```\n\nIn development mode:\n\n``` bash\ngit clone git@github.com:kanglcn/moraine.git ./moraine\ncd ./moraine\npip install -e '.[dev]'\n```\n\n## How to use\n\nRead the [software\narchitecture](./Introduction/software_architecture.ipynb) for an\noverview of the software design. Refer to [Tutorials](./Tutorials) for\nthe examples. Refer to [API](./API/) and [CLI](./CLI) for the detailed\nusage of every functions.\n\n## Contact us\n\n- Most discussion happens on\n  [GitHub](https://github.com/kanglcn/moraine). Feel free to [open an\n  issue](https://github.com/kanglcn/moraine/issues/new) or comment on\n  any open issue or pull request.\n- use github\n  [discussions](https://github.com/kanglcn/moraine/discussions) to ask\n  questions or leave comments.\n\n## License\n\n- This package is opened under\n  [GPL-v3](https://www.gnu.org/licenses/gpl-3.0.en.html).\n- The deep learning models under `moraine/dl_model/*` are opened under\n  [CC BY-NC-SA 4.0](https://creativecommons.org/licenses/by-nc-sa/4.0/).\n\n## General Guidelines for Making a Pull Request (PR)[^2]\n\nWe follow the [git pull request\nworkflow](https://www.asmeurer.com/git-workflow/) to make changes to our\ncodebase.\n\nBefore you make a PR, have a quick look at the titles of all the\nexisting issues first. If there is already an issue that matches your\nPR, leave a comment there to let us know what you plan to do. Otherwise,\nopen an issue describing what you want to do.\n\nWhat should be included in a PR\n\n- Each pull request should consist of a small and logical collection of\n  changes; larger changes should be broken down into smaller parts and\n  integrated separately.\n\n- Bug fixes should be submitted in separate PRs.\n\nHow to write and submit a PR\n\n- This package is developed with the [nbdev](https://nbdev.fast.ai/), a\n  notebook-driven development platform. Developers should write or edit\n  the notebooks rather than the `.py` files. After than, run\n  `nbdev_export` to export the code in the notebooks to `.py` files and\n  run `nbdev_clean` to clean the notebooks.\n\n- The github bot to generate docs do not support GPU, so all GPU related\n  packages (`dask_cuda`) should be prevented in import cells and export\n  cells. `cupy` v13 now allow `import cupy` on a cpu-only machine. So it\n  can be used now.\n\n- Describe what your PR changes and why this is a good thing. Be as\n  specific as you can. The PR description is how we keep track of the\n  changes made to the project over time.\n\n- Do not commit changes to files that are irrelevant to your feature or\n  bugfix (e.g.: .gitignore, IDE project files, etc).\n\n- Write descriptive commit messages. Chris Beams has written a\n  [guide](https://cbea.ms/git-commit/) on how to write good commit\n  messages.\n\nPR review\n\nBe willing to accept criticism and work on improving your code; we don’t\nwant to break other users’ code, so care must be taken not to introduce\nbugs.\n\nBe aware that the pull request review process is not immediate, and is\ngenerally proportional to the size of the pull request.\n\n[^1]: The pronciples are modified from the\n    [principle](https://wiki.archlinux.org/title/Arch_Linux) of Arch\n    Linux.\n\n[^2]: this is modified from the [Contributers\n    Guide](https://www.pygmt.org/latest/contributing.html) of\n    [PyGMT](https://www.pygmt.org/latest/index.html).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkanglcn%2Fmoraine","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkanglcn%2Fmoraine","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkanglcn%2Fmoraine/lists"}