diff --git a/src/tess_asteroids/__init__.py b/src/tess_asteroids/__init__.py index b794fd4..620ae86 100644 --- a/src/tess_asteroids/__init__.py +++ b/src/tess_asteroids/__init__.py @@ -1 +1,3 @@ -__version__ = '0.1.0' +__version__ = "0.1.0" + +from .asteroid import Asteroid diff --git a/src/tess_asteroids/asteroid.py b/src/tess_asteroids/asteroid.py new file mode 100644 index 0000000..ca033f1 --- /dev/null +++ b/src/tess_asteroids/asteroid.py @@ -0,0 +1,60 @@ +"""Class to obtain, correct and analyze TESS asteroid data""" +import lightkurve as lk + +import tess_ephem +import tess_locator +import tess_cloud +import tess_backdrop + + +class Asteroid(lk.TargetPixelFile): + """Class to work with TESS asteroid data""" + + def __init__(self, asteroid_name): + self.asteroid_name = asteroid_name + self._correct_sky_background() + self._correct_star_background() + + @static_method + def from_MAST(self, asteroid_name): + """Get object out of tesscut dataset""" + self.asteroid_name = asteroid_name + self._get_data() + self.__init__(**kwargs) + + def _get_data(self): + """Use tess_locator, tess_cloud""" + raise NotImplementedError + + def _correct_sky_background(self): + """Use tess_backdrop to correct scattered light""" + raise NotImplementedError + + def _correct_star_background(self): + """Use tess_backdrop, and new functionality, to remove stars from background""" + raise NotImplementedError + + def create_aperture(self): + """create_threshold_mask may work just as well here, but we might want to think about + special functions""" + raise NotImplementedError + + def to_lightcurve(self): + """makes special lk.LightCurve class?""" + raise NotImplementedError + + +class AsteroidLightCurve(lk.LightCurve): + """I think we might need a special lk class...but maybe not?""" + + def get_MPC_data(self): + # Get supplmental data from MPC? + raise NotImplementedError + + def to_periodogram(self, type="GP"): + """Special periodogram that uses GP kernels to estimate period?""" + raise NotImplementedError + + def to_file(self): + """Some sort of MPC viable file with relevant meta info...""" + raise NotImplementedError diff --git a/src/tess_asteroids/periodogram.py b/src/tess_asteroids/periodogram.py new file mode 100644 index 0000000..7cf88fd --- /dev/null +++ b/src/tess_asteroids/periodogram.py @@ -0,0 +1,19 @@ +"""Tools to calculate periodicities in asteroid light curves?""" +import lightkurve as lk + + +class GPPeriodogram(lk.Periodogram): + """A periodogram that works based on SHO GP kernels to obtain + a distribution of consistent periods.""" + + def __init__(self, **kwargs): + """Initialize a normal periodogram...""" + super.__init__(**kwargs) + + +class AugmentedBLSPeriodogram(lk.Periodogram): + """A periodogram that fits a BLS and SHO at the same time, to model binary asteroids.""" + + def __init__(self, **kwargs): + """Initialize a normal periodogram...""" + super.__init__(**kwargs) diff --git a/tests/test_tess_asteroids.py b/tests/test_tess_asteroids.py index 683ae21..41b01c9 100644 --- a/tests/test_tess_asteroids.py +++ b/tests/test_tess_asteroids.py @@ -1,5 +1,16 @@ from tess_asteroids import __version__ +import pytest +from tess_asteroid import Asteroid def test_version(): - assert __version__ == '0.1.0' + assert __version__ == "0.1.0" + + +@pytest.mark.remote_data +def test_asteroid(): + tpf = Asteroid.from_MAST("Juno") + lc = tpf.to_lightcurve() + per = lc.to_periodogram("GP", minimum_period=0.1, maximum_period=10) + assert (per.period_at_max_power[0].value, 10) + assert (per.period_at_max_power[1].value, 0.1)