{"id":15195438,"url":"https://github.com/davidiacostant/astrophotopy","last_synced_at":"2026-03-07T13:02:31.723Z","repository":{"id":57412020,"uuid":"460521307","full_name":"DavidiaCostant/astrophotopy","owner":"DavidiaCostant","description":"Astrophotography processing tools","archived":false,"fork":false,"pushed_at":"2022-02-25T10:49:07.000Z","size":313,"stargazers_count":2,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-12T14:16:35.868Z","etag":null,"topics":["astrophotography","image-processing","image-stacking","ipython-notebook","jupyter","jupyter-notebook","python"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/DavidiaCostant.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2022-02-17T16:42:20.000Z","updated_at":"2024-03-23T17:31:10.000Z","dependencies_parsed_at":"2022-09-07T23:30:59.274Z","dependency_job_id":null,"html_url":"https://github.com/DavidiaCostant/astrophotopy","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DavidiaCostant%2Fastrophotopy","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DavidiaCostant%2Fastrophotopy/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DavidiaCostant%2Fastrophotopy/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DavidiaCostant%2Fastrophotopy/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/DavidiaCostant","download_url":"https://codeload.github.com/DavidiaCostant/astrophotopy/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":241445071,"owners_count":19963918,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["astrophotography","image-processing","image-stacking","ipython-notebook","jupyter","jupyter-notebook","python"],"created_at":"2024-09-27T23:23:39.441Z","updated_at":"2026-03-07T13:02:31.679Z","avatar_url":"https://github.com/DavidiaCostant.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# AstroPhotoPy\nAstrophotography processing tools\n\n[![LinkedIn][linkedin-shield]][linkedin-url]\n\n\n\u003c!-- PROJECT LOGO --\u003e\n\u003cbr /\u003e\n\u003cdiv align=\"center\"\u003e\n    \n  \u003ca href=\"https://github.com/DavidiaCostant/astrophotopy\"\u003e\n    \u003cimg src=\"https://github.com/DavidiaCostant/astrophotopy/blob/main/crab.jpg\" alt=\"Logo\" width=\"100\" height=\"100\"\u003e\n  \u003c/a\u003e\n  \u003ch1 align=\"center\"\u003eAstroPhotoPy\u003c/h1\u003e\n\n  \u003cp align=\"center\"\u003e\n    Flexible image processing with the astrophotographer in mind\n  \n  \u003c/p\u003e\n  \u003cp align=\"center\"\u003e\n\n  \n  \u003c/p\u003e\n\u003c/div\u003e\n\n\u003c!-- TABLE OF CONTENTS --\u003e\n\u003cdetails\u003e\n  \u003csummary\u003eTable of Contents\u003c/summary\u003e\n  \u003col\u003e\n    \u003cli\u003e\n      \u003ca href=\"#about-the-project\"\u003eAbout The Project\u003c/a\u003e\n      \u003cul\u003e\n        \u003cli\u003e\u003ca href=\"#built-with\"\u003eBuilt With\u003c/a\u003e\u003c/li\u003e\n      \u003c/ul\u003e\n    \u003c/li\u003e\n    \u003cli\u003e\n      \u003ca href=\"#getting-started\"\u003eGetting Started\u003c/a\u003e\n      \u003cul\u003e\n        \u003cli\u003e\u003ca href=\"#prerequisites\"\u003ePrerequisites\u003c/a\u003e\u003c/li\u003e\n        \u003cli\u003e\u003ca href=\"#installation\"\u003eInstallation\u003c/a\u003e\u003c/li\u003e\n      \u003c/ul\u003e\n    \u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"#Simple usage\"\u003eUsage\u003c/a\u003e\u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"#Changelog\"\u003eChangelog\u003c/a\u003e\u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"#roadmap\"\u003eRoadmap\u003c/a\u003e\u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"#contributing\"\u003eContributing\u003c/a\u003e\u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"#license\"\u003eLicense\u003c/a\u003e\u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"#contact\"\u003eContact\u003c/a\u003e\u003c/li\u003e\n  \u003c/ol\u003e\n\u003c/details\u003e\n\n\u003c!-- ABOUT THE PROJECT --\u003e\n## About The Project\n\nOnce I approached astrophotography several months ago, I searched for a tool grouping all my needs in term of image processing workflow. Much of those instruments are counterintuitive and/or platform/OS restricted (and not less important not free). \nSo I wrote this simple library including all I need at the moment for a flexible processing workflow.\\\nRemember that the AstroPhotoPy library can only be used inside a Jupiter / IPython notebook. \nI hope you'll enjoy it!\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n\n### Built With\n\nThis library is based essentially on two image processing libraries and a front-end library: \n\n* opencv\n* skimage\n* IPython \n\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n\u003c!-- GETTING STARTED --\u003e\n## Getting Started\n\nThis is an example of how you can setting up your project locally.\nTo get a local copy up and running, follow these simple steps:\n\n### Prerequisites\n\nTo install the things you need first:\n\n* numpy\n  ```sh\n  pip install numpy\n  ```\n* matplotlib\n  ```sh\n  pip install matplotlib\n  \n* pyfits\n  ```sh\n  pip install pyfits\n  ```\n* opencv\n  ```sh\n  pip install opencv-python\n  ```\n* skimage\n  ```sh\n  pip install -U scikit-image\n  ```\n* IPython\n  ```sh\n  pip install ipython\n  ```\n### Installation\n\nAfter installing dependencies, you can install the library with pip:\n\n   ```sh\n   pip install astrophotopy\n   ```\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n\n\u003c!-- USAGE EXAMPLES --\u003e\n## Simple usage\n1. Open your Jupyter / IPython notebook and import the AstroPhotoPy library. You can create a setup (optics + sensor) and an observation site first, then you have to create your project:\n ```python\n   import astrophotopy as ap \n   my_optics = ap.Optics(model=\"RC 8\", diameter = 203, f_len = 1604, f_len_ep = 22)\n   my_sensor = ap.Sensor(model = \"Sony IMX\", px_dim = 2.9, sens_diag = 23)\n   my_site = ap.Observation_Site(location_name = \"Tre cime di Lavaredo\", altitude = 2320, latitude = 46.6, air_temp = -5.5, fwhm = 1)\n   crab = ap.Project(subject=\"M1\", path=\"My_folder\", optics = my_optics, sensor = my_sensor, observation_site = my_site)\n\n```\n2. After copying your images (rough, dark and flat frames) in their respective folders, you have to load them (only .jpg, .png, .bmp, .tiff and .fits can be imported), possibly debayer (in case of color camera acquisition software can't make it properly) and then perform set cleaning by means of master dark and flat frame subtraction:\n```python\n   crab.load()\n   crab.debayering()\n   crab.subtract_master_dark_and_flat()\n\n```\n3. Now perform an automatic selection of the best images (i.e. dropping those frames in which a damn Starlink passed) and then align the retained frames:\n```python\n   crab.show_select_and_drop()\n   crab.align_frames()\n\n```\n4. After prior calculation of total exposure and creation of integration sets, sets' integration can be performed:\n```python\n   crab.create_integration_sets()\n   crab.integrate_over_sets()\n\n```\n \n_For a better description of the above (and others) astrophotopy methods, please refer to the [Documentation](https://github.com/DavidiaCostant/astrophotopy/blob/main/DOCS.md)_\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n\u003c!-- CHANGELOG --\u003e\n## Changelog\n### 2022 feb 25 - v0.2.2 \n \n* added multiprocessing support for speedup of cpu intensive tasks\n* added Changelog\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n\u003c!-- ROADMAP --\u003e\n## Roadmap\n\n- [x] Add Changelog\n- [x] Add multiprocessing\n- [ ] Add monochromatic camera workflow\n- [ ] Write exhaustive documentation\n- [ ] Add .ser file import/export\n- [ ] CUDA/OpenCL aligning code implementation\n\n\nSee the [open issues](https://github.com/DavidiaCostant/astrophotopy/issues) for a full list of proposed features (and known issues).\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n\n\n\u003c!-- CONTRIBUTING --\u003e\n## Contributing\n\nContributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are **greatly appreciated**.\n\nIf you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag \"enhancement\".\nDon't forget to give the project a star! Thanks again!\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n\u003c!-- LICENSE --\u003e\n## License\n\nDistributed under the MIT License. See `LICENSE.txt` for more information.\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n\n\n\u003c!-- CONTACT --\u003e\n## Contact\n\nDavidia - d.costantini.stcerello@gmail.com\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n\u003c!-- MARKDOWN LINKS \u0026 IMAGES --\u003e\n\u003c!-- https://www.markdownguide.org/basic-syntax/#reference-style-links --\u003e\n[linkedin-shield]: https://img.shields.io/badge/-LinkedIn-black.svg?style=for-the-badge\u0026logo=linkedin\u0026colorB=555\n[linkedin-url]: https://www.linkedin.com/in/davide-costantini-299805113/\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdavidiacostant%2Fastrophotopy","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdavidiacostant%2Fastrophotopy","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdavidiacostant%2Fastrophotopy/lists"}