<div align="center">
# LifeFinder
### Exoplanet Life Probability Calculator
*Estimate life potential for exoplanets with neural networks and astrophysical data.*
[](LICENSE)
[](https://www.python.org/)
[](https://jupyter.org/)
[](https://docker.com/)
</div>
---
**LifeFinder** is a Python package and tool to estimate the probability of life on exoplanets using astrophysical parameters and machine learning. It includes a built-in neural network model trained to predict a habitability probability based on stellar and planetary features.
## Installation
You can install LifeFinder via pip:
```bash
pip install lifefinder
```
Or clone the repository and use Docker for containerized environment:
```bash
git clone https://github.com/afnx/lifefinder.git
docker compose up -d
```
## Usage
Before starting to use LifeFinder, configure necessary parameters such as default artifact locations, model settings etc:
```bash
lifefinder configure
```
**Once configured, you could start training models:**
```bash
lifefinder train
```
LifeFinder downloads the latest exoplanet data from the NASA Exoplanet Archive, cleans it, and trains the neural network model.
To retrain an existing model with different hyperparameters, just add the `--retrain` flag:
```bash
lifefinder train --retrain
```
For a full list of commands and options, run:
```bash
lifefinder --help
```
## How It Works
**LifeFinder** does NOT use a classical ground truth for habitability. Instead, it generates a soft, continuous "habitability zone index" (HZ index) for model training, based on the stellar insolation flux received by a planet.
#### How HZ Index is Computed
- **pl_insol**: Stellar insolation flux (in Earth units, S⊕).
- Earth = 1.0 S⊕.
- **sigma**: Controls how quickly the index decays as you move away from Earth's flux.
- Default: 0.5 (roughly the half-width of the conservative habitable zone).
**Formula:**
```python
import numpy as np
def hz_index(pl_insol, sigma=0.5):
return np.exp(-0.5 * ((pl_insol - 1.0) / sigma) ** 2)
```
- Planets near Earth's flux (pl_insol ≈ 1.0) have HZ index ≈ 1.0.
- Planets far from Earth's flux get HZ index ≈ 0.0.
- This creates a smooth, interpretable target for machine learning.
## Machine Learning Model
**LifeFinder** uses a neural network regressor built with PyTorch.
- **Inputs:** Astrophysical features (e.g., stellar flux, planet radius, orbital period, etc.)
- **Output:** Planet habitability (continuous, 0.0–1.0)
- **Architecture:** Feedforward neural network with:
- Multiple dense layers
- Nonlinear activation functions (e.g., ReLU, sigmoid)
- Regularization (dropout, L2, etc.)
- **Training:** Supervised learning using the generated HZ index as the ground truth.
## Disclaimer
The outputs and predictions provided by LifeFinder do **not** represent the actual habitability of any exoplanet, nor do they guarantee the presence or absence of life. The model is designed to estimate a probability of habitability based on available astrophysical data and machine learning techniques. The accuracy and reliability of the results depend strongly on the quality, quantity, and completeness of the input data, as well as the modeling approaches used.
**Do not rely solely on LifeFinder's output for scientific conclusions, mission decisions, or any application where actual confirmation of exoplanet habitability is required.** The results should always be interpreted as probabilistic estimates and be used in combination with other scientific methods and expert analysis.
## Contributing
We welcome your contributions!
1. Fork the repository
2. Create a feature branch (`git checkout -b feature/amazing-feature`)
3. Commit your changes (`git commit -m 'Add amazing feature'`)
4. Push to the branch (`git push origin feature/amazing-feature`)
5. Open a Pull Request
## References
- [Kopparapu et al., 2013, ApJ, "Habitable Zones Around Main-Sequence Stars: New Estimates"](https://iopscience.iop.org/article/10.1088/0004-637X/765/2/131)
- [NASA Exoplanet Archive](https://exoplanetarchive.ipac.caltech.edu/)
## License
This project is licensed under the **Business Source License 1.1** - see the [LICENSE](LICENSE) file for details.
## Authors
- **Ali Fuat Numanoglu** - *Initial work* - [@afnx](https://github.com/afnx)
## Support
- 🐛 [Report Issues](https://github.com/afnx/dream-job/issues)
- 📧 [Contact Me](https://alifuatnumanoglu.com/contact)
- ⭐ **If this project helped you, please give it a star!**
---
<sub>Made with ❤️ by Ali Fuat Numanoglu</sub>
Raw data
{
"_id": null,
"home_page": null,
"name": "lifefinder",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.11",
"maintainer_email": null,
"keywords": "exoplanet, astrobiology, machine-learning, astronomy",
"author": null,
"author_email": "Ali Fuat Numanoglu <afn@alifuatnumanoglu.com>",
"download_url": "https://files.pythonhosted.org/packages/32/4c/7d4f5ebdc7f4189884d844f9b3ffd1b0540ad752f65d80b0311f6e9654a1/lifefinder-0.0.1.tar.gz",
"platform": null,
"description": "<div align=\"center\">\n\n# LifeFinder\n\n### Exoplanet Life Probability Calculator\n\n*Estimate life potential for exoplanets with neural networks and astrophysical data.*\n\n[](LICENSE)\n[](https://www.python.org/)\n[](https://jupyter.org/)\n[](https://docker.com/)\n\n</div>\n\n---\n\n**LifeFinder** is a Python package and tool to estimate the probability of life on exoplanets using astrophysical parameters and machine learning. It includes a built-in neural network model trained to predict a habitability probability based on stellar and planetary features.\n\n## Installation\n\nYou can install LifeFinder via pip:\n\n```bash\npip install lifefinder\n```\n\nOr clone the repository and use Docker for containerized environment:\n\n```bash\ngit clone https://github.com/afnx/lifefinder.git\n\ndocker compose up -d\n```\n\n## Usage\n\nBefore starting to use LifeFinder, configure necessary parameters such as default artifact locations, model settings etc:\n```bash\nlifefinder configure\n```\n\n**Once configured, you could start training models:**\n\n```bash\nlifefinder train\n```\nLifeFinder downloads the latest exoplanet data from the NASA Exoplanet Archive, cleans it, and trains the neural network model.\n\nTo retrain an existing model with different hyperparameters, just add the `--retrain` flag:\n```bash\nlifefinder train --retrain\n```\n\nFor a full list of commands and options, run:\n```bash\nlifefinder --help\n```\n\n## How It Works\n\n**LifeFinder** does NOT use a classical ground truth for habitability. Instead, it generates a soft, continuous \"habitability zone index\" (HZ index) for model training, based on the stellar insolation flux received by a planet.\n\n#### How HZ Index is Computed\n\n- **pl_insol**: Stellar insolation flux (in Earth units, S\u2295). \n - Earth = 1.0 S\u2295.\n- **sigma**: Controls how quickly the index decays as you move away from Earth's flux. \n - Default: 0.5 (roughly the half-width of the conservative habitable zone).\n\n**Formula:**\n```python\nimport numpy as np\ndef hz_index(pl_insol, sigma=0.5):\n return np.exp(-0.5 * ((pl_insol - 1.0) / sigma) ** 2)\n```\n- Planets near Earth's flux (pl_insol \u2248 1.0) have HZ index \u2248 1.0.\n- Planets far from Earth's flux get HZ index \u2248 0.0.\n- This creates a smooth, interpretable target for machine learning.\n\n## Machine Learning Model\n\n**LifeFinder** uses a neural network regressor built with PyTorch.\n\n- **Inputs:** Astrophysical features (e.g., stellar flux, planet radius, orbital period, etc.)\n- **Output:** Planet habitability (continuous, 0.0\u20131.0)\n- **Architecture:** Feedforward neural network with:\n - Multiple dense layers\n - Nonlinear activation functions (e.g., ReLU, sigmoid)\n - Regularization (dropout, L2, etc.)\n- **Training:** Supervised learning using the generated HZ index as the ground truth.\n\n## Disclaimer\n\nThe outputs and predictions provided by LifeFinder do **not** represent the actual habitability of any exoplanet, nor do they guarantee the presence or absence of life. The model is designed to estimate a probability of habitability based on available astrophysical data and machine learning techniques. The accuracy and reliability of the results depend strongly on the quality, quantity, and completeness of the input data, as well as the modeling approaches used.\n\n**Do not rely solely on LifeFinder's output for scientific conclusions, mission decisions, or any application where actual confirmation of exoplanet habitability is required.** The results should always be interpreted as probabilistic estimates and be used in combination with other scientific methods and expert analysis.\n\n## Contributing\n\nWe welcome your contributions!\n\n1. Fork the repository\n2. Create a feature branch (`git checkout -b feature/amazing-feature`)\n3. Commit your changes (`git commit -m 'Add amazing feature'`)\n4. Push to the branch (`git push origin feature/amazing-feature`)\n5. Open a Pull Request\n\n## References\n\n- [Kopparapu et al., 2013, ApJ, \"Habitable Zones Around Main-Sequence Stars: New Estimates\"](https://iopscience.iop.org/article/10.1088/0004-637X/765/2/131)\n- [NASA Exoplanet Archive](https://exoplanetarchive.ipac.caltech.edu/)\n\n## License\n\nThis project is licensed under the **Business Source License 1.1** - see the [LICENSE](LICENSE) file for details.\n\n## Authors\n\n- **Ali Fuat Numanoglu** - *Initial work* - [@afnx](https://github.com/afnx)\n\n## Support\n\n- \ud83d\udc1b [Report Issues](https://github.com/afnx/dream-job/issues)\n- \ud83d\udce7 [Contact Me](https://alifuatnumanoglu.com/contact)\n- \u2b50 **If this project helped you, please give it a star!**\n\n---\n\n<sub>Made with \u2764\ufe0f by Ali Fuat Numanoglu</sub>\n",
"bugtrack_url": null,
"license": "Business Source License 1.1",
"summary": "Exoplanet Life Probability Calculator ",
"version": "0.0.1",
"project_urls": {
"Bug Tracker": "https://github.com/afnx/lifefinder/issues",
"Changelog": "https://github.com/afnx/lifefinder/blob/dev/CHANGELOG.md",
"Documentation": "https://lifefinder.afnprojects.com/docs",
"Homepage": "https://lifefinder.afnprojects.com",
"Repository": "https://github.com/afnx/lifefinder"
},
"split_keywords": [
"exoplanet",
" astrobiology",
" machine-learning",
" astronomy"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "2cfad2ff971fe054dd000da67f6f9bddc5a1c78c91c3163c91d55984fa6c4fbc",
"md5": "79e34e2162ef52f31917c2aaff645e05",
"sha256": "50ccab2b894a3bf0d2e51980ae3bf3777c07705520da7d8c3f59379580b862c2"
},
"downloads": -1,
"filename": "lifefinder-0.0.1-py3-none-any.whl",
"has_sig": false,
"md5_digest": "79e34e2162ef52f31917c2aaff645e05",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.11",
"size": 33653,
"upload_time": "2025-10-06T10:13:34",
"upload_time_iso_8601": "2025-10-06T10:13:34.341657Z",
"url": "https://files.pythonhosted.org/packages/2c/fa/d2ff971fe054dd000da67f6f9bddc5a1c78c91c3163c91d55984fa6c4fbc/lifefinder-0.0.1-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "324c7d4f5ebdc7f4189884d844f9b3ffd1b0540ad752f65d80b0311f6e9654a1",
"md5": "a5d69ce5612f2769568ffe61f3c49e87",
"sha256": "27821e2f43ba7006e42c4f2430fa68d0be2fc1a940fd2106b58739ab57b3a760"
},
"downloads": -1,
"filename": "lifefinder-0.0.1.tar.gz",
"has_sig": false,
"md5_digest": "a5d69ce5612f2769568ffe61f3c49e87",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.11",
"size": 34737,
"upload_time": "2025-10-06T10:13:35",
"upload_time_iso_8601": "2025-10-06T10:13:35.868712Z",
"url": "https://files.pythonhosted.org/packages/32/4c/7d4f5ebdc7f4189884d844f9b3ffd1b0540ad752f65d80b0311f6e9654a1/lifefinder-0.0.1.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-10-06 10:13:35",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "afnx",
"github_project": "lifefinder",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"requirements": [
{
"name": "pandas",
"specs": []
},
{
"name": "requests",
"specs": []
},
{
"name": "pytest",
"specs": []
},
{
"name": "python-dotenv",
"specs": []
},
{
"name": "scikit-learn",
"specs": []
},
{
"name": "matplotlib",
"specs": []
},
{
"name": "torch",
"specs": []
},
{
"name": "torchvision",
"specs": []
},
{
"name": "shap",
"specs": []
},
{
"name": "typer",
"specs": []
},
{
"name": "setuptools",
"specs": []
},
{
"name": "seaborn",
"specs": []
}
],
"lcname": "lifefinder"
}