Skip to main content

PlanetaRY spanGLES: the bright-side of the light-curve of (ringed) exoplanets

Project description

Pryngles

PlanetaRY spaNGLES

version downloads license implementation pythonver

arXiv

Pryngles is a Python package intended to produce useful visualizations of the geometric configuration of a ringed exoplanet (an exoplanet with a ring or exoring for short) and more importantly to calculate the light-curve signatures produced by this kind of planets. The model behind the package has been developed in an effort to predict the signatures that exorings may produce not only in the light-curve of transiting exoplanets (a problem that has been extensively studied) but also in the light of stars having non-transiting exoplanets.

This is an example of what can be done with Pryngles:

Logo

For the science behind the model please refer to the following papers:

Zuluaga, J.I., Sucerquia, M. & Alvarado-Montes, J.A. (2022), The bright side of the light curve: a general photometric model for non-transiting exorings, submitted (2022).

Sucerquia, M., Alvarado-Montes, J. A., Zuluaga, J. I., Montesinos, M., & Bayo, A. (2020), Scattered light may reveal the existence of ringed exoplanets. Monthly Notices of the Royal Astronomical Society: Letters, 496(1), L85-L90.

Download and install

pryngles is available in PyPI, https://pypi.org/project/pryngles/. To install it, just execute:

   pip install pryngles

If you prefer, you may download and install from the sources.

Quick start

Import the package and some useful utilities:

import pryngles as pr
from pryngles import Consts

Any calculation in Pryngles starts by creating a planetary system:

sys=pr.System()

Then we add objects to the planetary system using:

sys=pr.System()
S=sys.add(kind="Star",
          physics=dict(radius=Consts.rsun/sys.ul),
          optics=dict(limb_coeffs=[0.65])
         )
P=sys.add(kind="Planet",primary=S,
          orbit=dict(a=0.2,e=0.0),
          physics=dict(radius=Consts.rsaturn/sys.ul)
         )
R=sys.add(kind="Ring",primary=P,
          physics=dict(fi=1.5,fe=2.5,i=30*Consts.deg)
         )
O=sys.add(kind="Observer",
          optics=dict(lamb=90*Consts.deg,beta=90*Consts.deg)
         )

In the example before the planet has a ring extending from 1.5 to 2.5 planetary radius which is inclined 30 degrees with respect to the orbital plane. It has an orbit with semimajor axis of 0.2 and eccentricity 0.0.

Once the system is set we can ensamble a simulation, ie. creating an object able to produce a light-curve.

RP=sys.ensamble_system()

To see how the surface of the planet and the rings looks like run:

RP.plotRingedPlanet()

You may change the position of the star in the orbit and see how the appearance of the planet changes:

RP.changeStellarPosition(45*Consts.deg)
RP.plotRingedPlanet()

Below is the sequence of commands to produce your first light curve:

import numpy as np
RP.changeObserver([90*Consts.deg,30*Consts.deg])
lambs=np.linspace(+0.0*Consts.deg,+360*Consts.deg,100)
Rps=[]
Rrs=[]
ts=[]
for lamb in lambs:
    RP.changeStellarPosition(lamb)
    ts+=[RP.t*sys.ut/Consts.day]
    RP.updateOpticalFactors()
    RP.updateDiffuseReflection()
    Rps+=[RP.Rip.sum()]
    Rrs+=[RP.Rir.sum()]

ts=np.array(ts)
Rps=np.array(Rps)
Rrs=np.array(Rrs)

#Plot
import matplotlib.pyplot as plt
fig=plt.figure()
ax=fig.gca()
ax.plot(ts,Consts.ppm*Rps,label="Planet")
ax.plot(ts,Consts.ppm*Rrs,label="Ring")
ax.plot(ts,Consts.ppm*(Rps+Rrs),label="Planet+Ring")

ax.set_xlabel("Time [days]")
ax.set_ylabel("Flux anomaly [ppm]")
ax.legend();

And voilà!

Light curve

Let's have some Pryngles.

Tutorials

We have prepared several Jupyter tutorials to guide you in the usage of the package. The tutorials evolve as the package is being optimized.

Disclaimer

Logo

This is the disco version of Pryngles. We are improving the resolution and performance of the software for future releases.

What's new

  • 0.5.x versions:

    • Preview method plotRingedPlanet modified to work under Google Colab.

    • Physical and astronomical constants included.

    • A new tutorial was included.

    • A major update in the classes to create and populate planetary system.

  • 0.4.x versions:

    • A new model to create and populate planetary system has been implemented.
  • 0.3.x versions:

    • A water mark with version number included.
    • Version is now available in the version variable.
    • Scattering formulae tested and verified.
    • Package has been compared against similar packages (good agreement) but disclaimer has been done.
    • New version number scheme: 0.x.y (x-major, y-minor release), 0.x.y.z (z test version).
    • Major corrections in diffuse formulae.
  • 0.2.1.x versions:

    • Tutorial is now working in Google Colab.
    • References were corrected.
    • The home url was set as the PyPI web page.
    • Non-linear (4th order) limb darkening included.
    • Added the class Extra.
    • Function to draw logo: drawPryngles.
    • Added function prynglesMark.
    • Now __version__ variable is available.
  • 0.2.0.x versions:

    • First official version of the package.

This package has been designed and written originally by Jorge I. Zuluaga, Mario Sucerquia & Jaime A. Alvarado-Montes (C) 2022

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pryngles-0.5.2.tar.gz (46.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pryngles-0.5.2-py3-none-any.whl (46.6 kB view details)

Uploaded Python 3

File details

Details for the file pryngles-0.5.2.tar.gz.

File metadata

  • Download URL: pryngles-0.5.2.tar.gz
  • Upload date:
  • Size: 46.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.0 CPython/3.9.7

File hashes

Hashes for pryngles-0.5.2.tar.gz
Algorithm Hash digest
SHA256 c2846d17837fb4dddace69eecd122fb4932fe5dc441c4619d910d9a6553a2450
MD5 c0059d6fd5082a670f9804f6e8a30a5b
BLAKE2b-256 aeb0694498de6336cb9ceb4681e4808750825d44d6c740a4b8a514792fe7645a

See more details on using hashes here.

File details

Details for the file pryngles-0.5.2-py3-none-any.whl.

File metadata

  • Download URL: pryngles-0.5.2-py3-none-any.whl
  • Upload date:
  • Size: 46.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.0 CPython/3.9.7

File hashes

Hashes for pryngles-0.5.2-py3-none-any.whl
Algorithm Hash digest
SHA256 b9adf7ae13cf138c7997aa5eee0628895d3550bcec9bf769030dee488880fc4d
MD5 5ae82e70de98d74a2b81c39b7f98aeb0
BLAKE2b-256 108de6364aec7a331b498a55eeb16ed5883d1eaf3da731a8d70973dd16065aa3

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page