satdatagen


Namesatdatagen JSON
Version 1.0.1 PyPI version JSON
download
home_pageNone
SummaryA Python package to generate datasets for satellite tasking schedulers.
upload_time2024-08-09 16:54:16
maintainerNone
docs_urlNone
authorNone
requires_python>=3.8
licenseNone
keywords
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # satdatagen
a Python package for generating datasets to be used in satellite tasking schedulers

## Installation
`satdatagen` is in the Python Package Index, and can be installed using pip. The command:

`python3 -m pip install satdatagen`

or

`pip3 install satdatagen`

will install the `satdatagen` library in addition to all necessary dependencies.

*Note: in some cases the library `openmeteo-requests` does not get automatically installed. Users will need to run `pip3 install openmeteo-requests` only once to solve this*

## User Requirements
This package relies on data collected from space-track.org, one of the main resource for satellite ephemeral data. Users of satdatagen must have an existing space-track.org login. Add a file called `credentials.json` to your working directory, with login information formatted as a JSON object:

```
{
  identity : 'username@email.com',
  password : 'yourPassword12345'
}
```

The satdatagen code will query the space-track.org servers for satellite data using the user's login information.  Note that each user is subject to space-track's query limit - up to 30 queries per minute and up to 300 queries per hour.  

## Usage

The `satdatagen` library is easy to use.  A dataset can be generated with minimal lines of code. Dataset generation revolves around the creation of 2 objects: a `TimeRange` object and a `GroundLocation` object.

### `TimeRange`
`satdatagen.TimeRange(start_date, periods, delta = 0, end_date = None)`

#### Parameters:
**start_date**: `datetime` object or `str` in ISO-T format (`YYYY-MM-DDTHH:mm:ss`). Represents the start date/time for the dataset scheduling

**periods**: `int`. Represents the number of time steps in the time range for the duration of scheduling

**[delta]**: optional parameter. `int`. Represents the time between each time step in the time range

**[end_date]**: optional parameter. `datetime` object or `str` in ISO-T format (`YYYY-MM-DDTHH:mm:ss`). Represents the final date/time in the time range.



Users must provide *either* a `delta` value or `end_date` value to control the length of the time range.

***

### `GroundLocation`
`satdatagen.GroundLocation(space_track_credentials, latitude, longitude, time_range)`

#### Parameters:
**space_track_credentials**: `str`. Path to the `.json` file with space-track.org login info as described above in User Requirements.

**latitude**: `float`. Latitude of the ground location where the observatory is located

**longitude**: `float`. Longitude of the ground location where the observatory is located

**time_range**: `TimeRange` object. Represents the time range for which the dataset will find satellites overhead of the observatory.


#### Methods:

**generate_dataset**
`generate_dataset(self, method = 'krag', limit = None, orbit = 'all', mixing_coeff = 0.8, output_file = None)`

**method**: `str`. The method to use to calculate apparent visual magnitude (AVM). Options are `'krag'`, `'hejduk'`, or `'molczan'`. 

**limit**: `int`. The number of satellites to include in the dataset. Default is no limit. 

**orbit**: `str`. A filter for satellites in a certain orbit.  Options are `'LEO'`, `'MEO'`, `'GEO'`, or `'all'`.  Default is `'all'`, no filter.

**mixing_coeff**: `float`.  A value between 0 and 1 that defines the ratio of diffuse reflection off objects. Default is `0.8`. *only used when `method=='hejduk'`*

**output_file**: `str`.  Path to a `.json` file to output the dataset to. File does not need to be created beforehand.

*Note: all parameters described above for the `generate_dataset` method are optional.*


## Example

```
import satdatagen as sdg
from datetime import datetime

start_date = datetime(2024, 6, 18, hour = 20, minute = 0)
periods = 24
delta = 30
haystack_lon = -71.44 #degrees west
haystack_lat = 42.58 #degrees north

credentials = '/path/to/space/track/credentials.json'

tr = sdg.TimeRange(start_date = start_date, periods = periods, delta = delta) #time range is 12 hours long
gl = sdg.GroundLocation(credentials, haystack_lat, haystack_lon, tr)

#use Molczan's method to calculate AVM, only include 500 satellites in the dataset, and save the dataset to dataset.json
ds = gl.generate_dataset(method = 'molczan', limit = 500, output_file = 'dataset.json') 

```

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "satdatagen",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.8",
    "maintainer_email": null,
    "keywords": null,
    "author": null,
    "author_email": "Adina Golden <adinag@alum.mit.edu>",
    "download_url": "https://files.pythonhosted.org/packages/ed/26/363390c2f5cee642b96ab9a4f1300ef1fb86335e9415ba23c4af9ba13844/satdatagen-1.0.1.tar.gz",
    "platform": null,
    "description": "# satdatagen\na Python package for generating datasets to be used in satellite tasking schedulers\n\n## Installation\n`satdatagen` is in the Python Package Index, and can be installed using pip. The command:\n\n`python3 -m pip install satdatagen`\n\nor\n\n`pip3 install satdatagen`\n\nwill install the `satdatagen` library in addition to all necessary dependencies.\n\n*Note: in some cases the library `openmeteo-requests` does not get automatically installed. Users will need to run `pip3 install openmeteo-requests` only once to solve this*\n\n## User Requirements\nThis package relies on data collected from space-track.org, one of the main resource for satellite ephemeral data. Users of satdatagen must have an existing space-track.org login. Add a file called `credentials.json` to your working directory, with login information formatted as a JSON object:\n\n```\n{\n  identity : 'username@email.com',\n  password : 'yourPassword12345'\n}\n```\n\nThe satdatagen code will query the space-track.org servers for satellite data using the user's login information.  Note that each user is subject to space-track's query limit - up to 30 queries per minute and up to 300 queries per hour.  \n\n## Usage\n\nThe `satdatagen` library is easy to use.  A dataset can be generated with minimal lines of code. Dataset generation revolves around the creation of 2 objects: a `TimeRange` object and a `GroundLocation` object.\n\n### `TimeRange`\n`satdatagen.TimeRange(start_date, periods, delta = 0, end_date = None)`\n\n#### Parameters:\n**start_date**: `datetime` object or `str` in ISO-T format (`YYYY-MM-DDTHH:mm:ss`). Represents the start date/time for the dataset scheduling\n\n**periods**: `int`. Represents the number of time steps in the time range for the duration of scheduling\n\n**[delta]**: optional parameter. `int`. Represents the time between each time step in the time range\n\n**[end_date]**: optional parameter. `datetime` object or `str` in ISO-T format (`YYYY-MM-DDTHH:mm:ss`). Represents the final date/time in the time range.\n\n\n\nUsers must provide *either* a `delta` value or `end_date` value to control the length of the time range.\n\n***\n\n### `GroundLocation`\n`satdatagen.GroundLocation(space_track_credentials, latitude, longitude, time_range)`\n\n#### Parameters:\n**space_track_credentials**: `str`. Path to the `.json` file with space-track.org login info as described above in User Requirements.\n\n**latitude**: `float`. Latitude of the ground location where the observatory is located\n\n**longitude**: `float`. Longitude of the ground location where the observatory is located\n\n**time_range**: `TimeRange` object. Represents the time range for which the dataset will find satellites overhead of the observatory.\n\n\n#### Methods:\n\n**generate_dataset**\n`generate_dataset(self, method = 'krag', limit = None, orbit = 'all', mixing_coeff = 0.8, output_file = None)`\n\n**method**: `str`. The method to use to calculate apparent visual magnitude (AVM). Options are `'krag'`, `'hejduk'`, or `'molczan'`. \n\n**limit**: `int`. The number of satellites to include in the dataset. Default is no limit. \n\n**orbit**: `str`. A filter for satellites in a certain orbit.  Options are `'LEO'`, `'MEO'`, `'GEO'`, or `'all'`.  Default is `'all'`, no filter.\n\n**mixing_coeff**: `float`.  A value between 0 and 1 that defines the ratio of diffuse reflection off objects. Default is `0.8`. *only used when `method=='hejduk'`*\n\n**output_file**: `str`.  Path to a `.json` file to output the dataset to. File does not need to be created beforehand.\n\n*Note: all parameters described above for the `generate_dataset` method are optional.*\n\n\n## Example\n\n```\nimport satdatagen as sdg\nfrom datetime import datetime\n\nstart_date = datetime(2024, 6, 18, hour = 20, minute = 0)\nperiods = 24\ndelta = 30\nhaystack_lon = -71.44 #degrees west\nhaystack_lat = 42.58 #degrees north\n\ncredentials = '/path/to/space/track/credentials.json'\n\ntr = sdg.TimeRange(start_date = start_date, periods = periods, delta = delta) #time range is 12 hours long\ngl = sdg.GroundLocation(credentials, haystack_lat, haystack_lon, tr)\n\n#use Molczan's method to calculate AVM, only include 500 satellites in the dataset, and save the dataset to dataset.json\nds = gl.generate_dataset(method = 'molczan', limit = 500, output_file = 'dataset.json') \n\n```\n",
    "bugtrack_url": null,
    "license": null,
    "summary": "A Python package to generate datasets for satellite tasking schedulers.",
    "version": "1.0.1",
    "project_urls": {
        "Homepage": "https://github.com/ahgolden/satdatagen",
        "Issues": "https://github.com/ahgolden/satdatagen/issues"
    },
    "split_keywords": [],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "5e640006ebea012f64017f64feea5896970192712a71febda8910196212fbf8c",
                "md5": "2f480780d4ee10d278dffb64074c5ea6",
                "sha256": "d58e3d94627b86df0dbc5b0d771b1a7fb5558d91082c06e0a7ab8a1f49620bc9"
            },
            "downloads": -1,
            "filename": "satdatagen-1.0.1-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "2f480780d4ee10d278dffb64074c5ea6",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.8",
            "size": 3117695,
            "upload_time": "2024-08-09T16:54:14",
            "upload_time_iso_8601": "2024-08-09T16:54:14.199683Z",
            "url": "https://files.pythonhosted.org/packages/5e/64/0006ebea012f64017f64feea5896970192712a71febda8910196212fbf8c/satdatagen-1.0.1-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "ed26363390c2f5cee642b96ab9a4f1300ef1fb86335e9415ba23c4af9ba13844",
                "md5": "c3ed8f5cefe136cfb276aad41bfa2b8e",
                "sha256": "68825d66ea753019e95918c1e124f49155557aac3b174a7cca033e71b60c398d"
            },
            "downloads": -1,
            "filename": "satdatagen-1.0.1.tar.gz",
            "has_sig": false,
            "md5_digest": "c3ed8f5cefe136cfb276aad41bfa2b8e",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.8",
            "size": 2900106,
            "upload_time": "2024-08-09T16:54:16",
            "upload_time_iso_8601": "2024-08-09T16:54:16.248640Z",
            "url": "https://files.pythonhosted.org/packages/ed/26/363390c2f5cee642b96ab9a4f1300ef1fb86335e9415ba23c4af9ba13844/satdatagen-1.0.1.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-08-09 16:54:16",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "ahgolden",
    "github_project": "satdatagen",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": false,
    "lcname": "satdatagen"
}
        
Elapsed time: 0.34241s