GithubHelp home page GithubHelp logo

poliastro / poliastro Goto Github PK

View Code? Open in Web Editor NEW
845.0 26.0 273.0 44.75 MB

poliastro - :rocket: Astrodynamics in Python

Home Page: https://docs.poliastro.space

License: MIT License

Python 99.50% Jupyter Notebook 0.46% Makefile 0.04%
python science space scientific-computing orbital-simulation space-physics hacktoberfest closember orbital-mechanics astrodynamics

poliastro's Introduction

No Maintenance Intended

poliastro is archived and will not be developed any further, see #1640 for more context. Forks welcome, please respect the license by retaining attribution, and consider rebranding your fork if you intend to develop it in the long run. If you still use poliastro in your work, see below how to cite it. For a more complete background of the project, see https://conference.scipy.org/proceedings/scipy2022/juanluis_cano_poliastro.html. Per Python ad astra!

poliastro Logo

Name Website Authors Maintainers Version
poliastro https://www.poliastro.space Juan Luis Cano Rodriguez Jorge Martinez poliastro development team 0.18.dev0

poliastro_badge ci_badge docs_badge coverage_badge pre_commit_badge python_badge pypi_badge license_badge doi_badge astropy_badge mailing_badge chat_badge backers_badge sponsors_badge binder_badge code_badge

poliastro is an open source (MIT) pure Python library for interactive Astrodynamics and Orbital Mechanics, with a focus on ease of use, speed, and quick visualization. It provides a simple and intuitive API, and handles physical quantities with units.

Some features include orbit propagation, solution of the Lambert's problem, conversion between position and velocity vectors and classical orbital elements and orbit plotting, among others. It focuses on interplanetary applications, but can also be used to analyze artificial satellites in Low-Earth Orbit (LEO).

If you use poliastro on your project, please let us know. Use the DOI to cite poliastro in your publications:

Juan Luis Cano Rodríguez, Jorge Martinez, et al.. (2023). poliastro: poliastro 0.17.0. Zenodo. 10.5281/zenodo.6817189

Multiple examples image

Requirements

poliastro requires the following Python packages:

  • numpy for basic numerical routines
  • astropy for physical units and time handling
  • numba for accelerating the code
  • jplephem for the planetary ephemerides using SPICE kernels
  • matplotlib for orbit plotting
  • plotly for 2D and 3D interactive orbit plotting
  • scipy for root finding and numerical propagation

poliastro is supported on Linux, macOS and Windows on Python 3.8 to 3.10.

Installation

Multiple installation methods are supported by poliastro, including:

Logo Platform Command
PyPI logo PyPI python -m pip install poliastro
Conda Forge logo Conda Forge conda install poliastro --channel conda-forge
GitHub logo GitHub python -m pip install https://github.com/poliastro/poliastro/archive/main.zip

For other installation methods, see the alternative installation methods.

Documentation

Complete documentation, including a quickstart guide and an API reference, can be read on the wonderful Read the Docs. Multi-version documentation includes:

Examples, background and talks

There is a great variety of examples demostrating the capabilities of poliastro. Examples can be accessed in various ways:

poliastro is also promoted through conferences and talks. These are the latest talks in some of the most popular conferences about scientific software:

Conference Talk
SciPy 2022 Per Python ad astra: Interactive Astrodynamics with poliastro
OSCW 2019 Interplanetary mission analysis with poliastro
EuroSciPy 2019 Can we make Python fast without sacrificing readability? numba for Astrodynamics
EuroPython 2016 Per Python ad Astra

License

poliastro is released under the MIT license, hence allowing commercial use of the library. Please refer to the COPYING file.

The MIT License (MIT)

Copyright (c) 2012-2023 Juan Luis Cano Rodríguez, Jorge Martínez Garrido, and the poliastro development team

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

If you are planning to use poliastro with commercial purposes consider sponsoring the project.

Problems and suggestions

If for any reason you get an unexpected error message or an incorrect result, or you want to let the developers know about your use case, please open a new issue in the issue tracker and we will try to answer promptly.

Contributing and community support

This project exists thanks to all the people who contribute! poliastro is a community project, hence all contributions are more than welcome! For more information, head to the CONTRIBUTING.md file.

Release announcements and general discussion take place on our mailing list.

For further clarifications and discussions, feel free to join poliastro's chat room.

Contributors image

Backers and sponsors

poliastro requires finnacial support to mantain its high quality standars. The money is used to renew the web domain and updating the documentation hosting subscription among others.

If you would like to support poliastro, consider becoming a backer or becoming a sponsor.

Thanks to all our backers!

Backers

Thanks to all our sponsors!

Sponsors Sponsors

Frequently asked questions

  • What's up with the name?

    poliastro comes from Polimi, which is the shortened name of the Politecnico di Milano, see the acknowledgement from the original author. Grazie mille!

  • Is poliastro validated?

    Yes! poliastro is a community project that strives to be easy to use, while at the same time producing correct results that are validated against other commonly used Astrodynamics software such as GMAT and Orekit.

  • Can I suggest new features for poliastro?

    Sure, we encourage you to open an issue so we can discuss future feature additions!

  • What's the future of the project?

    poliastro is actively maintained and receiving an influx of new contributors thanks to the generous sponsorship of Google, the European Space Agency, and NumFOCUS. The best way to get an idea of the roadmap is to see the milestones of the project.

poliastro's People

Contributors

andrea-carballo avatar anhiga avatar aorionis avatar applysomesky avatar astrojuanlu avatar daluar avatar dhruvsondhi avatar emilyselwood avatar helgee avatar iamabhishek0 avatar ilnarkz avatar jackcrusoe47 avatar jorgepiloto avatar matthewfeickert avatar meuge avatar mlopez-ibanez avatar newlawrence avatar nikita-astronaut avatar noc0lour avatar pablordrrbl avatar pre-commit-ci[bot] avatar s-m-e avatar sedictious avatar shreyasbapat avatar syed-osama-hussain avatar thebuffer avatar tomaszmrugalski avatar wumpus avatar xlxs4 avatar yash-10 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

poliastro's Issues

Prepare 0.2 release

  • Remove old examples
  • Orbit objects (better for 0.3)
  • Plotting
  • Finish pretty printing #7
  • Create new examples
  • Update docs
  • Test on Windows #3
  • Provide conda recipe?

Ensure Python compatible versions

  • Use tox for local testing across versions.
  • Look into travis-ci.org to provide a continuous integration service.
  • Edit README accordingly.

Import errors under Python 2

Under Python 2 there are some import errors:

$ python -c "import poliastro"
Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "build/bdist.linux-x86_64/egg/poliastro/__init__.py", line 15, in <module>
  File "build/bdist.linux-x86_64/egg/poliastro/logging.py", line 5, in <module>
ImportError: cannot import name getLogger

and also:

$ python
Python 2.7.6 (default, Nov 26 2013, 12:52:49) 
[GCC 4.8.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import poliastro
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "build/bdist.linux-x86_64/egg/poliastro/__init__.py", line 15, in <module>
  File "build/bdist.linux-x86_64/egg/poliastro/logging.py", line 5, in <module>
ImportError: cannot import name getLogger
>>> import poliastro
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "build/bdist.linux-x86_64/egg/poliastro/__init__.py", line 12, in <module>
ImportError: cannot import name angles

I'm sure it's due to the use of relative imports. Need to investigate further.

Running tests from installed version doesn't work

Hi,

After installation, I tried running the tests doing python -c "import poliastro; poliastro.test()" but it finds 0 tests. I don't know if something fishy is going on in my system or if adding test = Tester().test to __init__ isn't enough.

On the other hand, if you have nose installed, running nosetests --exe poliastro does work (2 errors, 2 failures)

(py3)jorge@hplap:~$ nosetests --exe poliastro
...E...E...FF....
======================================================================
ERROR: test_vallado55 (test_ephem.TestEphem)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/jorge/.local/lib/python3.3/site-packages/poliastro-0.2.0_dev-py3.3-linux-x86_64.egg/poliastro/tests/test_ephem.py", line 18, in test_vallado55
    a, ecc, inc, omega, argp, nu = ephem.mean_elements(dd, ephem.JUPITER)
  File "/home/jorge/.local/lib/python3.3/site-packages/poliastro-0.2.0_dev-py3.3-linux-x86_64.egg/poliastro/ephem.py", line 149, in mean_elements
    tt = (time.Time(dd, scale='utc') - J2000).jd / 36525
  File "/home/jorge/anaconda/envs/py3/lib/python3.3/site-packages/astropy/time/core.py", line 127, in __init__
    self._init_from_vals(val, val2, format, scale, copy)
  File "/home/jorge/anaconda/envs/py3/lib/python3.3/site-packages/astropy/time/core.py", line 159, in _init_from_vals
    self._format, self._time = self._get_time_fmt(val, val2, format, scale)
  File "/home/jorge/anaconda/envs/py3/lib/python3.3/site-packages/astropy/time/core.py", line 178, in _get_time_fmt
    raise ValueError("No time format was given, and the input is "
ValueError: No time format was given, and the input is not string-like

======================================================================
ERROR: Failure: ImportError (No module named 'poliastro.constants')
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/jorge/anaconda/envs/py3/lib/python3.3/site-packages/nose/failure.py", line 38, in runTest
    raise self.exc_val.with_traceback(self.tb)
  File "/home/jorge/anaconda/envs/py3/lib/python3.3/site-packages/nose/loader.py", line 413, in loadTestsFromName
    addr.filename, addr.module)
  File "/home/jorge/anaconda/envs/py3/lib/python3.3/site-packages/nose/importer.py", line 47, in importFromPath
    return self.importFromDir(dir_path, fqname)
  File "/home/jorge/anaconda/envs/py3/lib/python3.3/site-packages/nose/importer.py", line 94, in importFromDir
    mod = load_module(part_fqname, fh, filename, desc)
  File "/home/jorge/anaconda/envs/py3/lib/python3.3/imp.py", line 180, in load_module
    return load_source(name, filename, file)
  File "/home/jorge/anaconda/envs/py3/lib/python3.3/imp.py", line 119, in load_source
    _LoadSourceCompatibility(name, pathname, file).load_module(name)
  File "<frozen importlib._bootstrap>", line 584, in _check_name_wrapper
  File "<frozen importlib._bootstrap>", line 1022, in load_module
  File "<frozen importlib._bootstrap>", line 1003, in load_module
  File "<frozen importlib._bootstrap>", line 560, in module_for_loader_wrapper
  File "<frozen importlib._bootstrap>", line 868, in _load_module
  File "<frozen importlib._bootstrap>", line 313, in _call_with_frames_removed
  File "/home/jorge/.local/lib/python3.3/site-packages/poliastro-0.2.0_dev-py3.3-linux-x86_64.egg/poliastro/tests/test_rv_ephem.py", line 9, in <module>
    from poliastro.constants import AU, k_Sun
ImportError: No module named 'poliastro.constants'

======================================================================
FAIL: test_vallado24 (test_twobody.TestKepler)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/jorge/.local/lib/python3.3/site-packages/poliastro-0.2.0_dev-py3.3-linux-x86_64.egg/poliastro/tests/test_twobody.py", line 92, in test_vallado24
    decimal=0)
  File "/home/jorge/anaconda/envs/py3/lib/python3.3/site-packages/numpy/testing/utils.py", line 812, in assert_array_almost_equal
    header=('Arrays are not almost equal to %d decimals' % decimal))
  File "/home/jorge/anaconda/envs/py3/lib/python3.3/site-packages/numpy/testing/utils.py", line 645, in assert_array_compare
    raise AssertionError(msg)
AssertionError: 
Arrays are not almost equal to 0 decimals

(mismatch 100.0%)
 x: array([-4214.01679122,  4358.9848268 , -3962.89875826])
 y: array([-4219.7527,  4363.0292, -3958.7666])

======================================================================
FAIL: test_vallado25 (test_twobody.TestRv2coe)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/jorge/.local/lib/python3.3/site-packages/poliastro-0.2.0_dev-py3.3-linux-x86_64.egg/poliastro/tests/test_twobody.py", line 76, in test_vallado25
    assert_almost_equal(p, 11067.79, decimal=0)
  File "/home/jorge/anaconda/envs/py3/lib/python3.3/site-packages/numpy/testing/utils.py", line 468, in assert_almost_equal
    raise AssertionError(msg)
AssertionError: 
Arrays are not almost equal to 0 decimals
 ACTUAL: 11064.568018349435
 DESIRED: 11067.79

----------------------------------------------------------------------
Ran 17 tests in 0.696s

FAILED (errors=2, failures=2)

Thanks!

Build conda packages in all platforms

It would be nice to have an automated process where only the release versions are uploaded to my binstar channel.

Also, reflect changes in installation process in the README.

Make poliastro work with tox

Tried adding a simple tox.ini file:

[tox]
envlist = py27, py33

[testenv]
deps =
    numpy
    astropy
    pytest
commands = py.test

but apparently there's a failure at installation time related to the Fortran extensions:

actionid=py33
msg=installpkg
cmdargs=[local('/home/juanlu/Academia/year4/1QTR/orbital-mechanics/poliastro/.tox/py33/bin/pip'), 'install', '--pre', '/home/juanlu/Academia/year4/1QTR/orbital-mechanics/poliastro/.tox/dist/poliastro-0.2.0-dev.zip']
env={'MAIL': '/var/spool/mail/juanlu', 'TERM': 'xterm', 'PYTHONPATH': '/home/juanlu/.local:', 'DBUS_SESSION_BUS_ADDRESS': 'unix:abstract=/tmp/dbus-W5CDOKl7Hx,guid=708215b2d2f5b70552ee474b52b81202', 'SHLVL': '2', 'JAVA_HOME': '/usr/lib/jvm/java-7-openjdk', 'LANG': 'en_US.UTF-8', 'XDG_RUNTIME_DIR': '/run/user/1000', 'PATH': '/home/juanlu/Academia/year4/1QTR/orbital-mechanics/poliastro/.tox/py33/bin:/home/juanlu/.local/bin:/home/juanlu/.gem/ruby/2.0.0/bin/:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/vendor_perl:/usr/bin/core_perl', 'PWD': '/home/juanlu/Development/Python/poliastro', 'OLDPWD': '/home/juanlu', 'COLORTERM': 'gnome-terminal', 'DISPLAY': ':0', 'VTE_VERSION': '3409', 'SHELL': '/bin/bash', 'BROWSER': 'firefox', 'HG': '/usr/bin/hg', '_': '/home/juanlu/.local/bin/tox', 'WINDOWPATH': '1', 'HOME': '/home/juanlu', 'WINDOWID': '25165830', 'XDG_SESSION_ID': '1', 'MOZ_PLUGIN_PATH': '/usr/lib/mozilla/plugins', 'XAUTHORITY': '/home/juanlu/.Xauthority', 'XDG_SEAT': 'seat0', 'LOGNAME': 'juanlu', 'USER': '
juanlu', 'PYTHONIOENCODING': 'utf_8', 'DESKTOP_SESSION': 'xfce4', 'XDG_VTNR': '1', 'EDITOR': 'nano'}
Unpacking ./.tox/dist/poliastro-0.2.0-dev.zip
  Running setup.py egg_info for package from file:///home/juanlu/Academia/year4/1QTR/orbital-mechanics/poliastro/.tox/dist/poliastro-0.2.0-dev.zip
    non-existing path in '': 'poliastro/ast2body.pyf'
    non-existing path in '': 'poliastro/astiod.pyf'
    non-existing path in '': 'poliastro/tests'
    build_src
    building library "ast2body" sources
    building library "astiod" sources
    building extension "poliastro._ast2body" sources
      target build/src.linux-x86_64-3.3/poliastro/_ast2bodymodule.c does not exist:
       Assuming _ast2bodymodule.c was generated with "build_src --inplace" command.
       Yes! Using 'poliastro/_ast2bodymodule.c' as up-to-date target.
    f2py options: []
      adding 'build/src.linux-x86_64-3.3/fortranobject.c' to sources.
      adding 'build/src.linux-x86_64-3.3' to include_dirs.
    error: f2py target_c file 'build/src.linux-x86_64-3.3/fortranobject.c' not found
    Complete output from command python setup.py egg_info:
    non-existing path in '': 'poliastro/ast2body.pyf'

non-existing path in '': 'poliastro/astiod.pyf'

non-existing path in '': 'poliastro/tests'

running egg_info

running build_src

build_src

building library "ast2body" sources

building library "astiod" sources

building extension "poliastro._ast2body" sources

  target build/src.linux-x86_64-3.3/poliastro/_ast2bodymodule.c does not exist:

   Assuming _ast2bodymodule.c was generated with "build_src --inplace" command.

   Yes! Using 'poliastro/_ast2bodymodule.c' as up-to-date target.

f2py options: []

  adding 'build/src.linux-x86_64-3.3/fortranobject.c' to sources.

  adding 'build/src.linux-x86_64-3.3' to include_dirs.

error: f2py target_c file 'build/src.linux-x86_64-3.3/fortranobject.c' not found

3D plotting

Summary:

Fix coverage reports

This has been an issue for a while: when accessing a detailed coverage report in coveralls, the sources point to the installed files, and the paths are not available on GitHub.

https://coveralls.io/jobs/5156102

I will need to look for inspiration out there.

ZeroDivisionError when propagating with time zero

Actually if NUMBA_DISABLE_JIT is exported this appears as a maximum number of iterations error. Why does it change is a matter of study, but still the easiest way to fix it is to contemplate the special case of time = 0.0 at the very beginning of the _kepler function.

Benchmark Fortran with pure Python version

If the benchmarks are positive, get rid of Fortran. Otherwise, you could provide both versions - or install only the Python version if a Fortran compiler is not available.

Add integration for non Keplerian motion

Essentially #54 depends on this. I can use scipy.integrate.ode or look for other options:

I participated in some discussion about these packages in the past. My requisite is that they have to be easily available on Windows and OS X not to block the installation of poliastro.

Successful Installation of poliastro but the tests failed

I've successfully installed poliastro on my MacBook Pro running Mac OS X ver. 10.10.3. Now the python environment is Anaconda for Python 2.7. When run the test, python -c "import poliastro; poliastro.test()", I get errors which point to stumpff.py. A copy of my installation log and test output is given below.

Please advise.

users-MacBook-Pro:poliastro user$ python setup.py install
running install
running bdist_egg
running egg_info
creating poliastro.egg-info
writing poliastro.egg-info/PKG-INFO
writing top-level names to poliastro.egg-info/top_level.txt
writing dependency_links to poliastro.egg-info/dependency_links.txt
writing poliastro.egg-info/PKG-INFO
writing top-level names to poliastro.egg-info/top_level.txt
writing dependency_links to poliastro.egg-info/dependency_links.txt
writing manifest file 'poliastro.egg-info/SOURCES.txt'
reading manifest file 'poliastro.egg-info/SOURCES.txt'
writing manifest file 'poliastro.egg-info/SOURCES.txt'
installing library code to build/bdist.macosx-10.5-x86_64/egg
running install_lib
running build_py
creating build
creating build/lib
creating build/lib/poliastro
copying poliastro/__init__.py -> build/lib/poliastro
copying poliastro/bodies.py -> build/lib/poliastro
copying poliastro/examples.py -> build/lib/poliastro
copying poliastro/iod.py -> build/lib/poliastro
copying poliastro/maneuver.py -> build/lib/poliastro
copying poliastro/plotting.py -> build/lib/poliastro
copying poliastro/stumpff.py -> build/lib/poliastro
copying poliastro/util.py -> build/lib/poliastro
creating build/lib/poliastro/twobody
copying poliastro/twobody/__init__.py -> build/lib/poliastro/twobody
copying poliastro/twobody/conversion.py -> build/lib/poliastro/twobody
copying poliastro/twobody/propagation.py -> build/lib/poliastro/twobody
copying poliastro/twobody/state.py -> build/lib/poliastro/twobody
creating build/lib/poliastro/tests
copying poliastro/tests/__init__.py -> build/lib/poliastro/tests
copying poliastro/tests/test_bodies.py -> build/lib/poliastro/tests
copying poliastro/tests/test_examples.py -> build/lib/poliastro/tests
copying poliastro/tests/test_iod.py -> build/lib/poliastro/tests
copying poliastro/tests/test_maneuver.py -> build/lib/poliastro/tests
copying poliastro/tests/test_plotting.py -> build/lib/poliastro/tests
copying poliastro/tests/test_twobody.py -> build/lib/poliastro/tests
copying poliastro/tests/test_util.py -> build/lib/poliastro/tests
creating build/bdist.macosx-10.5-x86_64
creating build/bdist.macosx-10.5-x86_64/egg
creating build/bdist.macosx-10.5-x86_64/egg/poliastro
copying build/lib/poliastro/__init__.py -> build/bdist.macosx-10.5-x86_64/egg/poliastro
copying build/lib/poliastro/bodies.py -> build/bdist.macosx-10.5-x86_64/egg/poliastro
copying build/lib/poliastro/examples.py -> build/bdist.macosx-10.5-x86_64/egg/poliastro
copying build/lib/poliastro/iod.py -> build/bdist.macosx-10.5-x86_64/egg/poliastro
copying build/lib/poliastro/maneuver.py -> build/bdist.macosx-10.5-x86_64/egg/poliastro
copying build/lib/poliastro/plotting.py -> build/bdist.macosx-10.5-x86_64/egg/poliastro
copying build/lib/poliastro/stumpff.py -> build/bdist.macosx-10.5-x86_64/egg/poliastro
creating build/bdist.macosx-10.5-x86_64/egg/poliastro/tests
copying build/lib/poliastro/tests/__init__.py -> build/bdist.macosx-10.5-x86_64/egg/poliastro/tests
copying build/lib/poliastro/tests/test_bodies.py -> build/bdist.macosx-10.5-x86_64/egg/poliastro/tests
copying build/lib/poliastro/tests/test_examples.py -> build/bdist.macosx-10.5-x86_64/egg/poliastro/tests
copying build/lib/poliastro/tests/test_iod.py -> build/bdist.macosx-10.5-x86_64/egg/poliastro/tests
copying build/lib/poliastro/tests/test_maneuver.py -> build/bdist.macosx-10.5-x86_64/egg/poliastro/tests
copying build/lib/poliastro/tests/test_plotting.py -> build/bdist.macosx-10.5-x86_64/egg/poliastro/tests
copying build/lib/poliastro/tests/test_twobody.py -> build/bdist.macosx-10.5-x86_64/egg/poliastro/tests
copying build/lib/poliastro/tests/test_util.py -> build/bdist.macosx-10.5-x86_64/egg/poliastro/tests
creating build/bdist.macosx-10.5-x86_64/egg/poliastro/twobody
copying build/lib/poliastro/twobody/__init__.py -> build/bdist.macosx-10.5-x86_64/egg/poliastro/twobody
copying build/lib/poliastro/twobody/conversion.py -> build/bdist.macosx-10.5-x86_64/egg/poliastro/twobody
copying build/lib/poliastro/twobody/propagation.py -> build/bdist.macosx-10.5-x86_64/egg/poliastro/twobody
copying build/lib/poliastro/twobody/state.py -> build/bdist.macosx-10.5-x86_64/egg/poliastro/twobody
copying build/lib/poliastro/util.py -> build/bdist.macosx-10.5-x86_64/egg/poliastro
byte-compiling build/bdist.macosx-10.5-x86_64/egg/poliastro/__init__.py to __init__.pyc
byte-compiling build/bdist.macosx-10.5-x86_64/egg/poliastro/bodies.py to bodies.pyc
byte-compiling build/bdist.macosx-10.5-x86_64/egg/poliastro/examples.py to examples.pyc
byte-compiling build/bdist.macosx-10.5-x86_64/egg/poliastro/iod.py to iod.pyc
byte-compiling build/bdist.macosx-10.5-x86_64/egg/poliastro/maneuver.py to maneuver.pyc
byte-compiling build/bdist.macosx-10.5-x86_64/egg/poliastro/plotting.py to plotting.pyc
byte-compiling build/bdist.macosx-10.5-x86_64/egg/poliastro/stumpff.py to stumpff.pyc
byte-compiling build/bdist.macosx-10.5-x86_64/egg/poliastro/tests/__init__.py to __init__.pyc
byte-compiling build/bdist.macosx-10.5-x86_64/egg/poliastro/tests/test_bodies.py to test_bodies.pyc
byte-compiling build/bdist.macosx-10.5-x86_64/egg/poliastro/tests/test_examples.py to test_examples.pyc
byte-compiling build/bdist.macosx-10.5-x86_64/egg/poliastro/tests/test_iod.py to test_iod.pyc
byte-compiling build/bdist.macosx-10.5-x86_64/egg/poliastro/tests/test_maneuver.py to test_maneuver.pyc
byte-compiling build/bdist.macosx-10.5-x86_64/egg/poliastro/tests/test_plotting.py to test_plotting.pyc
byte-compiling build/bdist.macosx-10.5-x86_64/egg/poliastro/tests/test_twobody.py to test_twobody.pyc
byte-compiling build/bdist.macosx-10.5-x86_64/egg/poliastro/tests/test_util.py to test_util.pyc
byte-compiling build/bdist.macosx-10.5-x86_64/egg/poliastro/twobody/__init__.py to __init__.pyc
byte-compiling build/bdist.macosx-10.5-x86_64/egg/poliastro/twobody/conversion.py to conversion.pyc
byte-compiling build/bdist.macosx-10.5-x86_64/egg/poliastro/twobody/propagation.py to propagation.pyc
byte-compiling build/bdist.macosx-10.5-x86_64/egg/poliastro/twobody/state.py to state.pyc
byte-compiling build/bdist.macosx-10.5-x86_64/egg/poliastro/util.py to util.pyc
creating build/bdist.macosx-10.5-x86_64/egg/EGG-INFO
copying poliastro.egg-info/PKG-INFO -> build/bdist.macosx-10.5-x86_64/egg/EGG-INFO
copying poliastro.egg-info/SOURCES.txt -> build/bdist.macosx-10.5-x86_64/egg/EGG-INFO
copying poliastro.egg-info/dependency_links.txt -> build/bdist.macosx-10.5-x86_64/egg/EGG-INFO
copying poliastro.egg-info/top_level.txt -> build/bdist.macosx-10.5-x86_64/egg/EGG-INFO
zip_safe flag not set; analyzing archive contents...
poliastro.__init__: module references __file__
creating dist
creating 'dist/poliastro-0.3.0_dev-py2.7.egg' and adding 'build/bdist.macosx-10.5-x86_64/egg' to it
removing 'build/bdist.macosx-10.5-x86_64/egg' (and everything under it)
Processing poliastro-0.3.0_dev-py2.7.egg
creating /Users/user/anaconda/lib/python2.7/site-packages/poliastro-0.3.0_dev-py2.7.egg
Extracting poliastro-0.3.0_dev-py2.7.egg to /Users/user/anaconda/lib/python2.7/site-packages
Adding poliastro 0.3.0-dev to easy-install.pth file
error: [Errno 13] Permission denied: '/Users/user/anaconda/lib/python2.7/site-packages/easy-install.pth'
users-MacBook-Pro:poliastro user$ sudo python setup.py install
Password:
running install
running bdist_egg
running egg_info
writing poliastro.egg-info/PKG-INFO
writing top-level names to poliastro.egg-info/top_level.txt
writing dependency_links to poliastro.egg-info/dependency_links.txt
writing poliastro.egg-info/PKG-INFO
writing top-level names to poliastro.egg-info/top_level.txt
writing dependency_links to poliastro.egg-info/dependency_links.txt
reading manifest file 'poliastro.egg-info/SOURCES.txt'
writing manifest file 'poliastro.egg-info/SOURCES.txt'
installing library code to build/bdist.macosx-10.5-x86_64/egg
running install_lib
running build_py
creating build/bdist.macosx-10.5-x86_64/egg
creating build/bdist.macosx-10.5-x86_64/egg/poliastro
copying build/lib/poliastro/__init__.py -> build/bdist.macosx-10.5-x86_64/egg/poliastro
copying build/lib/poliastro/bodies.py -> build/bdist.macosx-10.5-x86_64/egg/poliastro
copying build/lib/poliastro/examples.py -> build/bdist.macosx-10.5-x86_64/egg/poliastro
copying build/lib/poliastro/iod.py -> build/bdist.macosx-10.5-x86_64/egg/poliastro
copying build/lib/poliastro/maneuver.py -> build/bdist.macosx-10.5-x86_64/egg/poliastro
copying build/lib/poliastro/plotting.py -> build/bdist.macosx-10.5-x86_64/egg/poliastro
copying build/lib/poliastro/stumpff.py -> build/bdist.macosx-10.5-x86_64/egg/poliastro
creating build/bdist.macosx-10.5-x86_64/egg/poliastro/tests
copying build/lib/poliastro/tests/__init__.py -> build/bdist.macosx-10.5-x86_64/egg/poliastro/tests
copying build/lib/poliastro/tests/test_bodies.py -> build/bdist.macosx-10.5-x86_64/egg/poliastro/tests
copying build/lib/poliastro/tests/test_examples.py -> build/bdist.macosx-10.5-x86_64/egg/poliastro/tests
copying build/lib/poliastro/tests/test_iod.py -> build/bdist.macosx-10.5-x86_64/egg/poliastro/tests
copying build/lib/poliastro/tests/test_maneuver.py -> build/bdist.macosx-10.5-x86_64/egg/poliastro/tests
copying build/lib/poliastro/tests/test_plotting.py -> build/bdist.macosx-10.5-x86_64/egg/poliastro/tests
copying build/lib/poliastro/tests/test_twobody.py -> build/bdist.macosx-10.5-x86_64/egg/poliastro/tests
copying build/lib/poliastro/tests/test_util.py -> build/bdist.macosx-10.5-x86_64/egg/poliastro/tests
creating build/bdist.macosx-10.5-x86_64/egg/poliastro/twobody
copying build/lib/poliastro/twobody/__init__.py -> build/bdist.macosx-10.5-x86_64/egg/poliastro/twobody
copying build/lib/poliastro/twobody/conversion.py -> build/bdist.macosx-10.5-x86_64/egg/poliastro/twobody
copying build/lib/poliastro/twobody/propagation.py -> build/bdist.macosx-10.5-x86_64/egg/poliastro/twobody
copying build/lib/poliastro/twobody/state.py -> build/bdist.macosx-10.5-x86_64/egg/poliastro/twobody
copying build/lib/poliastro/util.py -> build/bdist.macosx-10.5-x86_64/egg/poliastro
byte-compiling build/bdist.macosx-10.5-x86_64/egg/poliastro/__init__.py to __init__.pyc
byte-compiling build/bdist.macosx-10.5-x86_64/egg/poliastro/bodies.py to bodies.pyc
byte-compiling build/bdist.macosx-10.5-x86_64/egg/poliastro/examples.py to examples.pyc
byte-compiling build/bdist.macosx-10.5-x86_64/egg/poliastro/iod.py to iod.pyc
byte-compiling build/bdist.macosx-10.5-x86_64/egg/poliastro/maneuver.py to maneuver.pyc
byte-compiling build/bdist.macosx-10.5-x86_64/egg/poliastro/plotting.py to plotting.pyc
byte-compiling build/bdist.macosx-10.5-x86_64/egg/poliastro/stumpff.py to stumpff.pyc
byte-compiling build/bdist.macosx-10.5-x86_64/egg/poliastro/tests/__init__.py to __init__.pyc
byte-compiling build/bdist.macosx-10.5-x86_64/egg/poliastro/tests/test_bodies.py to test_bodies.pyc
byte-compiling build/bdist.macosx-10.5-x86_64/egg/poliastro/tests/test_examples.py to test_examples.pyc
byte-compiling build/bdist.macosx-10.5-x86_64/egg/poliastro/tests/test_iod.py to test_iod.pyc
byte-compiling build/bdist.macosx-10.5-x86_64/egg/poliastro/tests/test_maneuver.py to test_maneuver.pyc
byte-compiling build/bdist.macosx-10.5-x86_64/egg/poliastro/tests/test_plotting.py to test_plotting.pyc
byte-compiling build/bdist.macosx-10.5-x86_64/egg/poliastro/tests/test_twobody.py to test_twobody.pyc
byte-compiling build/bdist.macosx-10.5-x86_64/egg/poliastro/tests/test_util.py to test_util.pyc
byte-compiling build/bdist.macosx-10.5-x86_64/egg/poliastro/twobody/__init__.py to __init__.pyc
byte-compiling build/bdist.macosx-10.5-x86_64/egg/poliastro/twobody/conversion.py to conversion.pyc
byte-compiling build/bdist.macosx-10.5-x86_64/egg/poliastro/twobody/propagation.py to propagation.pyc
byte-compiling build/bdist.macosx-10.5-x86_64/egg/poliastro/twobody/state.py to state.pyc
byte-compiling build/bdist.macosx-10.5-x86_64/egg/poliastro/util.py to util.pyc
creating build/bdist.macosx-10.5-x86_64/egg/EGG-INFO
copying poliastro.egg-info/PKG-INFO -> build/bdist.macosx-10.5-x86_64/egg/EGG-INFO
copying poliastro.egg-info/SOURCES.txt -> build/bdist.macosx-10.5-x86_64/egg/EGG-INFO
copying poliastro.egg-info/dependency_links.txt -> build/bdist.macosx-10.5-x86_64/egg/EGG-INFO
copying poliastro.egg-info/top_level.txt -> build/bdist.macosx-10.5-x86_64/egg/EGG-INFO
zip_safe flag not set; analyzing archive contents...
poliastro.__init__: module references __file__
creating 'dist/poliastro-0.3.0_dev-py2.7.egg' and adding 'build/bdist.macosx-10.5-x86_64/egg' to it
removing 'build/bdist.macosx-10.5-x86_64/egg' (and everything under it)
Processing poliastro-0.3.0_dev-py2.7.egg
removing '/Users/user/anaconda/lib/python2.7/site-packages/poliastro-0.3.0_dev-py2.7.egg' (and everything under it)
creating /Users/user/anaconda/lib/python2.7/site-packages/poliastro-0.3.0_dev-py2.7.egg
Extracting poliastro-0.3.0_dev-py2.7.egg to /Users/user/anaconda/lib/python2.7/site-packages
Adding poliastro 0.3.0-dev to easy-install.pth file

Installed /Users/user/anaconda/lib/python2.7/site-packages/poliastro-0.3.0_dev-py2.7.egg
Processing dependencies for poliastro==0.3.0-dev
Finished processing dependencies for poliastro==0.3.0-dev
users-MacBook-Pro:poliastro user$ python -c "import poliastro; poliastro.test()"
=================================================================== test session starts ===================================================================
platform darwin -- Python 2.7.9 -- py-1.4.26 -- pytest-2.6.4
collected 7 items / 5 errors 

poliastro/tests/test_bodies.py ....
poliastro/tests/test_util.py ...

========================================================================= ERRORS ==========================================================================
____________________________________________________ ERROR collecting poliastro/tests/test_examples.py ____________________________________________________
poliastro/tests/test_examples.py:4: in <module>
    from poliastro import examples
poliastro/examples.py:10: in <module>
    from poliastro.twobody import State
poliastro/twobody/__init__.py:3: in <module>
    from poliastro.twobody.state import State
poliastro/twobody/state.py:16: in <module>
    from poliastro.twobody.propagation import kepler
poliastro/twobody/propagation.py:10: in <module>
    from poliastro.stumpff import c2, c3
poliastro/stumpff.py:10: in <module>
    @numba.jit('f8(f8)', nopython=True)
../anaconda/lib/python2.7/site-packages/numba/decorators.py:171: in wrapper
    disp.compile(sig)
../anaconda/lib/python2.7/site-packages/numba/dispatcher.py:277: in compile
    flags=flags, locals=self.locals)
../anaconda/lib/python2.7/site-packages/numba/compiler.py:547: in compile_extra
    return pipeline.compile_extra(func)
../anaconda/lib/python2.7/site-packages/numba/compiler.py:293: in compile_extra
    return self.compile_bytecode(bc, func_attr=self.func_attr)
../anaconda/lib/python2.7/site-packages/numba/compiler.py:301: in compile_bytecode
    return self._compile_bytecode()
../anaconda/lib/python2.7/site-packages/numba/compiler.py:534: in _compile_bytecode
    return pm.run(self.status)
../anaconda/lib/python2.7/site-packages/numba/compiler.py:191: in run
    raise patched_exception
E   TypingError: Failed at nopython (nopython frontend)
E   Untyped global name 'gamma'
E   File "poliastro/stumpff.py", line 19
______________________________________________________ ERROR collecting poliastro/tests/test_iod.py _______________________________________________________
poliastro/tests/test_iod.py:8: in <module>
    from poliastro.iod import lambert
poliastro/iod.py:9: in <module>
    from poliastro.stumpff import c2, c3
poliastro/stumpff.py:10: in <module>
    @numba.jit('f8(f8)', nopython=True)
../anaconda/lib/python2.7/site-packages/numba/decorators.py:171: in wrapper
    disp.compile(sig)
../anaconda/lib/python2.7/site-packages/numba/dispatcher.py:277: in compile
    flags=flags, locals=self.locals)
../anaconda/lib/python2.7/site-packages/numba/compiler.py:547: in compile_extra
    return pipeline.compile_extra(func)
../anaconda/lib/python2.7/site-packages/numba/compiler.py:293: in compile_extra
    return self.compile_bytecode(bc, func_attr=self.func_attr)
../anaconda/lib/python2.7/site-packages/numba/compiler.py:301: in compile_bytecode
    return self._compile_bytecode()
../anaconda/lib/python2.7/site-packages/numba/compiler.py:534: in _compile_bytecode
    return pm.run(self.status)
../anaconda/lib/python2.7/site-packages/numba/compiler.py:191: in run
    raise patched_exception
E   TypingError: Failed at nopython (nopython frontend)
E   Untyped global name 'gamma'
E   File "poliastro/stumpff.py", line 19
____________________________________________________ ERROR collecting poliastro/tests/test_maneuver.py ____________________________________________________
poliastro/tests/test_maneuver.py:11: in <module>
    from poliastro.twobody import State
poliastro/twobody/__init__.py:3: in <module>
    from poliastro.twobody.state import State
poliastro/twobody/state.py:16: in <module>
    from poliastro.twobody.propagation import kepler
poliastro/twobody/propagation.py:10: in <module>
    from poliastro.stumpff import c2, c3
poliastro/stumpff.py:10: in <module>
    @numba.jit('f8(f8)', nopython=True)
../anaconda/lib/python2.7/site-packages/numba/decorators.py:171: in wrapper
    disp.compile(sig)
../anaconda/lib/python2.7/site-packages/numba/dispatcher.py:277: in compile
    flags=flags, locals=self.locals)
../anaconda/lib/python2.7/site-packages/numba/compiler.py:547: in compile_extra
    return pipeline.compile_extra(func)
../anaconda/lib/python2.7/site-packages/numba/compiler.py:293: in compile_extra
    return self.compile_bytecode(bc, func_attr=self.func_attr)
../anaconda/lib/python2.7/site-packages/numba/compiler.py:301: in compile_bytecode
    return self._compile_bytecode()
../anaconda/lib/python2.7/site-packages/numba/compiler.py:534: in _compile_bytecode
    return pm.run(self.status)
../anaconda/lib/python2.7/site-packages/numba/compiler.py:191: in run
    raise patched_exception
E   TypingError: Failed at nopython (nopython frontend)
E   Untyped global name 'gamma'
E   File "poliastro/stumpff.py", line 19
____________________________________________________ ERROR collecting poliastro/tests/test_plotting.py ____________________________________________________
poliastro/tests/test_plotting.py:9: in <module>
    from poliastro import plotting
poliastro/plotting.py:13: in <module>
    from poliastro.twobody.conversion import rv_pqw
poliastro/twobody/__init__.py:3: in <module>
    from poliastro.twobody.state import State
poliastro/twobody/state.py:16: in <module>
    from poliastro.twobody.propagation import kepler
poliastro/twobody/propagation.py:10: in <module>
    from poliastro.stumpff import c2, c3
poliastro/stumpff.py:10: in <module>
    @numba.jit('f8(f8)', nopython=True)
../anaconda/lib/python2.7/site-packages/numba/decorators.py:171: in wrapper
    disp.compile(sig)
../anaconda/lib/python2.7/site-packages/numba/dispatcher.py:277: in compile
    flags=flags, locals=self.locals)
../anaconda/lib/python2.7/site-packages/numba/compiler.py:547: in compile_extra
    return pipeline.compile_extra(func)
../anaconda/lib/python2.7/site-packages/numba/compiler.py:293: in compile_extra
    return self.compile_bytecode(bc, func_attr=self.func_attr)
../anaconda/lib/python2.7/site-packages/numba/compiler.py:301: in compile_bytecode
    return self._compile_bytecode()
../anaconda/lib/python2.7/site-packages/numba/compiler.py:534: in _compile_bytecode
    return pm.run(self.status)
../anaconda/lib/python2.7/site-packages/numba/compiler.py:191: in run
    raise patched_exception
E   TypingError: Failed at nopython (nopython frontend)
E   Untyped global name 'gamma'
E   File "poliastro/stumpff.py", line 19
____________________________________________________ ERROR collecting poliastro/tests/test_twobody.py _____________________________________________________
poliastro/tests/test_twobody.py:10: in <module>
    from poliastro.twobody import State
poliastro/twobody/__init__.py:3: in <module>
    from poliastro.twobody.state import State
poliastro/twobody/state.py:16: in <module>
    from poliastro.twobody.propagation import kepler
poliastro/twobody/propagation.py:10: in <module>
    from poliastro.stumpff import c2, c3
poliastro/stumpff.py:10: in <module>
    @numba.jit('f8(f8)', nopython=True)
../anaconda/lib/python2.7/site-packages/numba/decorators.py:171: in wrapper
    disp.compile(sig)
../anaconda/lib/python2.7/site-packages/numba/dispatcher.py:277: in compile
    flags=flags, locals=self.locals)
../anaconda/lib/python2.7/site-packages/numba/compiler.py:547: in compile_extra
    return pipeline.compile_extra(func)
../anaconda/lib/python2.7/site-packages/numba/compiler.py:293: in compile_extra
    return self.compile_bytecode(bc, func_attr=self.func_attr)
../anaconda/lib/python2.7/site-packages/numba/compiler.py:301: in compile_bytecode
    return self._compile_bytecode()
../anaconda/lib/python2.7/site-packages/numba/compiler.py:534: in _compile_bytecode
    return pm.run(self.status)
../anaconda/lib/python2.7/site-packages/numba/compiler.py:191: in run
    raise patched_exception
E   TypingError: Failed at nopython (nopython frontend)
E   Untyped global name 'gamma'
E   File "poliastro/stumpff.py", line 19
=========================================================== 7 passed, 5 error in 26.22 seconds ============================================================
users-MacBook-Pro:poliastro user$ 

Rewrite ephemerides to get rid of Octave dependencies

The only Octave / MATLAB dependency right now is the function planet_ephem in the module ephem. Having to configure Octave makes installation more difficult (Fortran already makes it tricky), and the way oct2py works, writing and reading the results from temporary files, leads to poor performance and I/O issues.

I considered several solutions:

  • Simply removing it, and advicing the user to use the ephemerides from JPL, PyEphem or others. A bit harsh.
  • Rewrite uplanet_2013.m in Python. Apparently it comes from P. Dysli Analytical Ephemeris for Planets, 1977, but seems difficult to find. The three cites in Google Scholar come from the Politecnico di Milano. Coincidence?
  • Use EphemPy, a Python interface to the JPL ephemerides. Unmaintained, ugly code, seems unfinished.
  • Use PyEphem, a Python interface to XEphem. Won't work on Windows.
  • Write numerical formulas from Meeus Astronomical algorithms, 1991. Lots of citations, appears in Vallado, fairly recent, seems the way to go.

Labels for plots

Provide some sort of argument to avoid this kind of code:

_, l1 = op.plot(geo)
_, l2 = op.plot(trans)

l1.set_label("GEO")
l2.set_label("Transfer")

Use of astropy

  • Consider using astropy.time instead of jdcal.
  • Consider using astropy.constants instead of rolling my own.

Explore pretty printing of objects

Thinking of using Unicode symbols to print things like planet symbols, orbit elements symbols and the like. This could enhance interactive sessions.

Great advantage can be taken from IPython display machinery:

http://nbviewer.ipython.org/github/ipython/ipython/blob/master/examples/notebooks/Custom%20Display%20Logic.ipynb

Other than that, either look into somehow reusing SymPy printing machinery (see https://github.com/sympy/sympy/blob/sympy-0.7.4.1/sympy/interactive/printing.py) or use stdlib pprint http://docs.python.org/3.3/library/pprint.html (definitely not what I want).

Add tests for the Stumpff functions

Notice that one test was warked as xfail in #31 because the Lambert no longer can achieve the required precision. Decreasing the tolerance in this case leads to "Maximum number of iterations reached" errors. This deserves careful investigation, but perhaps implementing a better and faster algorithm can solve the problem.

Unable to install poliastro from PyPI

A 0.1.1 release is needed, as "pip install poliastro" fails both under Python 2 and 3:

poliastro/fortran/asttime.for:323: Error: Can't open included file 'astmath.cmn'

poliastro/fortran/asttime.for:323: Error: Can't open included file 'astmath.cmn'

error: Command "/usr/bin/gfortran -Wall -ffixed-form -fno-second-underscore -fPIC -O3 -funroll-loops -I/home/juanlu/.local/lib/python3.3/site-packages/numpy/core/include -c -c poliastro/fortran/asttime.for -o build/temp.linux-x86_64-3.3/poliastro/fortran/asttime.o" failed with exit status 1

----------------------------------------
Cleaning up...

  Removing temporary dir /tmp/pip_build_juanlu...
Command /usr/bin/python -c "import setuptools;__file__='/tmp/pip_build_juanlu/poliastro/setup.py';exec(compile(open(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --record /tmp/pip-kvwm5a-record/install-record.txt --single-version-externally-managed --user failed with error code 1 in /tmp/pip_build_juanlu/poliastro

Exception information:
Traceback (most recent call last):
  File "/home/juanlu/.local/lib/python3.3/site-packages/pip/basecommand.py", line 134, in main
    status = self.run(options, args)
  File "/home/juanlu/.local/lib/python3.3/site-packages/pip/commands/install.py", line 241, in run
    requirement_set.install(install_options, global_options, root=options.root_path)
  File "/home/juanlu/.local/lib/python3.3/site-packages/pip/req.py", line 1298, in install
    requirement.install(install_options, global_options, *args, **kwargs)
  File "/home/juanlu/.local/lib/python3.3/site-packages/pip/req.py", line 625, in install
    cwd=self.source_dir, filter_stdout=self._filter_install, show_stdout=False)
  File "/home/juanlu/.local/lib/python3.3/site-packages/pip/util.py", line 670, in call_subprocess
    % (command_desc, proc.returncode, cwd))
pip.exceptions.InstallationError: Command /usr/bin/python -c "import setuptools;__file__='/tmp/pip_build_juanlu/poliastro/setup.py';exec(compile(open(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --record /tmp/pip-kvwm5a-record/install-record.txt --single-version-externally-managed --user failed with error code 1 in /tmp/pip_build_juanlu/poliastro

Conversion between coe and rv is not transitive

This is a consequence on my indecision about using the semimajor axis or the semilatus rectum. To avoid singularities and problems (see #37) I should probably move to using the semilatus rectum definitively.

If I make this change, probably the special function introduced in #38 won't be needed anymore.

Use AppVeyor to build Windows conda packages

  • Look for a viable F/OSS compiling option. Perhaps it does not exist yet.
  • Try Anaconda? Personally already tried Canopy but disappointed with the lack of Python 3 support.
  • Eventually, build binary package for easier distribution (wheel/conda recipe).

Fix plotting of hyperbolic orbits

I don't think visualizing the vacant branch is any useful, fix this. Plus, the plot region is too large and renders the plot itself uninformative.

hyper1
hyper2

Add Sun-synchronous orbits

First I need to add J2 to bodies, and then a function with this signature:

def sunsync(cls, attractor, alt, omega, ecc=0.0 * u.one, ...)

Actually if I want to define the local time at the ascending or descending node I need some kind of ephemerides. But for the moment I might just want to compute the inclination.

The point is that I might want to combine sso, frozen and repeated groundtrack for example. How can I do that?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.