LEOSatpy is a highly-automated end-to-end pipeline for the reduction, calibration, and analysis of Low Earth Orbit Satellite observations from various telescopes.
Project description
LEOSatpy (Low Earth Orbit satellite python) is an end-to-end pipeline to process and analyse satellite trail observations from various telescopes.
The pipeline is written in Python 3 and provides the following functionalities:
Module |
Function |
---|---|
reduceSatObs |
Full reduction of raw-FITS images including bias, dark, and flat reduction. |
calibrateSatObs |
WCS calibration, i.e. plate solving, using GAIA DR3 positions, obtained via the Astroquery tool. |
analyseSatObs |
Satellite trail(s) detection and aperture photometry using comparison stars from the GSC v2.4.3 catalog. |
The full documentation for LEOSatpy can be found here.
LEOSatpy is distributed under the GNU General Public License v3. See the LICENSE file for the precise terms and conditions.
- Currently supported telescopes:
0.6-metre Chakana telescope at the Ckoirama Observatory of the Universidad de Antofagasta, Antofagasta, Chile.
0.9-metre Small and Moderate Aperture Research Telescope System (SMARTS) at the Cerro Tololo Inter-american Observatory (CTIO), Chile.
Víctor M. Blanco 4-meter Telescope at the Cerro Tololo Inter-american Observatory (CTIO), Chile.
1.54-metre Danish telescope at the La Silla Observatory, Chile.
0.28-metre DDOTI (Deca-Degree Optical Transient Imager) telescopes at the Observatorio Astronómico Nacional (OAN) in Sierra San Pedro Martír (SPM), Baja California, México.
0.5-metre MOSS telescope at the Oukaïmeden Observatory, Morocco.
0.6-metre telescope of the Chungbuk National University Observatory in Jincheon, South Korea.
1.23-metre telescope at the Calar Alto Observatory, Spain.
How to use LEOSatpy
The LEOSatpy pipeline is written for use with Python >=3.9. To avoid unnecessary interference with the Python installed on the system, it is recommended to create a new Python environment to run LEOSatpy, using for example conda.
A new conda environment can be created and activated with:
$ conda create -n leosatpy_env python=3.9
$ conda activate leosatpy_env
Installation
LEOSatpy is available on PyPI, and can be installed using pip:
$ (leosatpy_env) pip install leosatpy
Alternatively, the latest release of LEOSatpy is also available from the GitHub repository.
- Clone the repository using git:
$ (leosatpy_env) git clone https://github.com/CLEOsat-group/leosatpy.git
- Download the zip file from the GitHub repository:
Navigate to the main page of the repository. Click on the “Code” button, then click “Download ZIP”.
Once cloned or downloaded and extracted, LEOSatpy can be installed from anywhere by typing:
$ (leosatpy_env) pip install -e PATH/TO/CLONED/GITHUB
or by navigating to the downloaded folder:
$ (leosatpy_env) cd PATH/TO/CLONED/GITHUB
and using the following command in the terminal:
$ (leosatpy_env) python setup.py install
The successful installation of LEOSatpy can be tested by trying to access the help or the version of LEOSatpy via:
$ (leosatpy_env) reduceSatObs --help
$ (leosatpy_env) reduceSatObs --version
If no error messages are shown, LEOSatpy is most likely installed correctly.
Running LEOSatpy
Prerequisites
1. Configuration
LEOSatpy comes with a configuration file, called leosatpy_config.ini, containing an extensive list of parameter that can be adjusted to modify the behaviour of LEOSatpy.
By default, information and results for each dataset are stored in a .csv file located in the /home/user directory. The location and name of this file can be changed by modifying the following lines in the leosatpy_config.ini:
RESULT_TABLE_PATH = '~'
RESULT_TABLE_NAME = 'results_leosatpy.csv'
2. Folder structure
Although there is some degree of freedom in the nomenclature and structuring of the folder, it is highly recommended to adopt the following folder layout:
.
└── Telescope-Identifier <- free naming
├── YYYY-MM-DD <- recommended format
│ ├── bias
│ ├── flats
│ ├── darks
│ └── science_data <- free naming
│ └── raw <- optional, but recommended
├── YYYY-MM-DD
└── YYYY-MM-DD
The only requirement with regard to the name of the main folder is that the folder name should contain the date of observation either in the format: YYYY-MM-DD, or YYYYMMDD.
The program will select the search path for the calibration data based on the obs date from the science data header and the names of folder in the given path. Possible formats are, e.g., 20221110, 2022-11-20, tel_20221011_satxy, 2022-11-26_satxy_obs1, etc.
It is also recommended to separate the raw calibration files, i.e., bias, darks, and flats from the science observation files and place them into separate folder, named accordingly /bias, /darks, /flats, and science/raw, respectively.
Once all programs have been executed, the final folder structure should look like this:
.
└── Telescope-Identifier
├── YYYY-MM-DD
│ ├── bias
│ ├── flats
│ ├── darks
│ ├── master_calibs
│ └── science_data (e.g., STARLINK)
│ ├── auxiliary
│ ├── calibrated
│ ├── catalogs
│ ├── figures
│ │ └── Sat-ID (e.g., STARLINK-3568)
│ ├── raw
│ ├── reduced
│ └── tle_predictions
├── YYYY-MM-DD
└── YYYY-MM-DD
LEOSatpy is now ready for use.
Reduction
The reduction of all raw FITS-files in a folder can be performed via the following line:
$ (leosatpy_env) reduceSatObs PATH/TO/DATA
LEOSatpy also accepts relative paths and multiple inputs, for example:
$ (leosatpy_env) reduceSatObs ../Telescope-Identifier/YYYY-MM-DD/
$ (leosatpy_env) reduceSatObs PATH/TO/DATA/NIGHT_1 PATH/TO/DATA/NIGHT_2
To reduce all data from a telescope at once with:
$ (leosatpy_env) reduceSatObs PATH/TO/TELESCOPE/DATA
Astrometric calibration
To apply the astrometric calibration type:
$ (leosatpy_env) calibrateSatObs PATH/TO/DATA
Satellite trail detection and analysis
To run the satellite detection and analysis on all files in the input type:
$ (leosatpy_env) analyseSatObs PATH/TO/DATA
Citing LEOSatpy
When publishing data processed and analysed with LEOSatpy, please cite:
Adam et al. (2023) (in preparation). "Estimating the impact to astronomy from the Oneweb satellite constellation using multicolour observations". https://doi.org/10.5281/zenodo.8012131 Software pipeline available at https://github.com/CLEOsat-group/leosatpy.
Acknowledgements
Alongside the packages listed in the requirements.txt, this project uses workflows and code adopted from the following packages:
Astrometry under the GPLv3 License, Lukas Wenzl (2022), Zenodo
AutoPhOT under the GPLv3 License, Brennan & Fraser (2022), NASA ADS
Ccdproc, an Astropy package for image reduction (Craig et al. 2023).
The authors of these packages and code are gratefully acknowledged.
Special thanks go out to the following people for their ideas and contributions to the development of the LEOSat Python package:
Jeremy Tregloan-Reed, Universidad de Atacama
Eduardo Unda-Sanzana, Universidad de Antofagasta
Edgar Ortiz, Universidad de Antofagasta
Maria Isabel Romero Colmenares, Universidad de Atacama
Sangeetha Nandakumar, Universidad de Atacama
The project would not have been possible without the help of everyone who contributed.
Feedback, questions, comments?
LEOSatpy is under active development and help with the development of new functionalities and fixing bugs is very much appreciated. In case you would like to contribute, feel free to fork the GitHub repository and to create a pull request.
If you encounter a bug or problem, please submit a new issue on the GitHub repository providing as much detail as possible (error message, operating system, Python version, etc.).
If you have further feedback, questions or comments you can also send an e-mail to Jeremy Tregloan-Reed, or Christian Adam.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.