diff --git a/README.md b/README.md index fdaba34e..4e8b23ad 100644 --- a/README.md +++ b/README.md @@ -85,7 +85,22 @@ PASEOS allows simulating the effect of onboard and operational constraints on us ## Installation -`pip` and `conda` support will follow in the near future. +### pip / conda + +`conda` support may follow in the near future. + +You can install via `pip` using + +``` + +pip install paseos + +``` + +This requires `Python 3.8` due to [pykep's limited support of pip](https://esa.github.io/pykep/installation.html). If you encounter problems, please consider setting up a dedicated `conda` environment to install dependencies. + + +### Building from source For now, first of all clone the [GitHub](https://github.com/aidotse/PASEOS.git) repository as follows ([Git](https://git-scm.com/) required): @@ -237,7 +252,7 @@ ActorBuilder.add_comm_device(actor=sat_actor, #### How to add a power device -The following code snippet shows how to add a power device to a [SpacecraftActor](#spacecraftactor). At the moment, only one battery device is supported. +The following code snippet shows how to add a power device to a [SpacecraftActor](#spacecraftactor). Moreover, PASEOS assumes that the battery will be charged by solar panels, which will provide energy thanks to the incoming solar radiation when the spacecraft is not eclipsed. Charging and discharging happens automatically during [activities](#activity). ```py @@ -258,6 +273,8 @@ ActorBuilder.set_power_devices(actor=sat_actor, Alternatively to the default `paseos.PowerDeviceType.SolarPanel` you can also use `paseos.PowerDeviceType.RTG`. The only difference at the moment is that [RTGs](https://en.wikipedia.org/wiki/Radioisotope_thermoelectric_generator) also charge in eclipse. +Note that at the moment only one power device is supported. Adding another will override the existing one. + #### Thermal Modelling To model thermal constraints on spacecraft we utilize a model inspired by the one-node model described in [Martínez - Spacecraft Thermal Modelling and Test](http://imartinez.etsiae.upm.es/~isidoro/tc3/Spacecraft%20Thermal%20Modelling%20and%20Testing.pdf). Thus, we model the change in temperature as @@ -303,6 +320,8 @@ The model is evaluated automatically during [activities](#activity). You can che print(my_actor.temperature_in_K) ``` +At the moment, only one thermal model per actor is supported. Setting a second will override the old one. + #### Radiation Modelling PASEOS models three types of radiation effects. 1. Data corruption due to single event upsets which a event rate $r_d$. @@ -521,7 +540,8 @@ sim.perform_activity("activity_A") ##### Waiting for Activities to Finish -If you want to run multiple activities in a row or just wait for the existing one to finish, you can use +At the moment, parallel running of multiple activities is not supported. +However, if you want to run multiple activities in a row or just wait for the existing one to finish, you can use ```py await sim.wait_for_activity() diff --git a/environment.yml b/environment.yml index 15bdd53c..6fcd2446 100644 --- a/environment.yml +++ b/environment.yml @@ -2,17 +2,17 @@ name: paseos channels: - conda-forge dependencies: -- dotmap -- loguru -- matplotlib -- myst-parser -- pykep -- pytest -- pytest-asyncio -- python -- scikit-spatial -- skyfield -- sphinx -- sphinx_rtd_theme -- toml -- tqdm + - dotmap>=1.3.30 # core non-optional dependency + - loguru>=0.6.0 # core non-optional dependency + - matplotlib-base>=3.6.0 # core non-optional dependency + - myst-parser # for markdown math in docs + - pykep>=2.6 # core non-optional dependency + - pytest # for tests + - pytest-asyncio # for tests involving activities + - python>=3.8 # core non-optional dependency + - scikit-spatial>=6.5.0 # core non-optional dependency + - skyfield>=1.45 # core non-optional dependency + - sphinx # for docs + - sphinx_rtd_theme # for docs + - toml>=0.10.2 # core non-optional dependency + - tqdm>=4.64.1 # core non-optional dependency diff --git a/examples/Sentinel_2_example_notebook/Sentinel2_example_notebook.ipynb b/examples/Sentinel_2_example_notebook/Sentinel2_example_notebook.ipynb index 1e86fa8b..20103021 100644 --- a/examples/Sentinel_2_example_notebook/Sentinel2_example_notebook.ipynb +++ b/examples/Sentinel_2_example_notebook/Sentinel2_example_notebook.ipynb @@ -516,7 +516,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.10.6" + "version": "3.10.8" }, "vscode": { "interpreter": { diff --git a/requirements.txt b/requirements.txt index 34567da8..8bab9d2a 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,8 +1,8 @@ -dotmap -loguru -pykep -scikit-spatial -skyfield -toml -tqdm -matplotlib +dotmap>=1.3.30 +loguru>=0.6.0 +matplotlib-base>=3.6.0 +pykep>=2.6 +scikit-spatial>=6.5.0 +skyfield>=1.45 +toml>=0.10.2 +tqdm>=4.64.1 \ No newline at end of file diff --git a/setup.py b/setup.py index b160c60b..b6e8daed 100644 --- a/setup.py +++ b/setup.py @@ -12,13 +12,14 @@ author_email="pablo.gomez@esa.int", include_package_data=True, install_requires=[ - "dotmap", - "loguru", - "pykep", - "scikit-spatial", - "skyfield", - "toml", - "tqdm", + "dotmap>=1.3.30", + "loguru>=0.6.0", + "matplotlib-base>=3.6.0", + "pykep>=2.6", + "scikit-spatial>=6.5.0", + "skyfield>=1.45", + "toml>=0.10.2", + "tqdm>=4.64.1", ], classifiers=[ "Development Status :: 3 - Alpha",