From 251c7c82b98f8cf5f49ecd50fb1abd20f67fb3f9 Mon Sep 17 00:00:00 2001 From: Morgan Fouesneau Date: Tue, 15 Oct 2024 18:07:11 +0000 Subject: [PATCH] initial commit --- .github/workflows/deploy.yml | 44 +++++++++ .gitignore | 133 +++++++++++++++++++++++++++ CODE_OF_CONDUCT.md | 15 +++ CONTRIBUTING.md | 1 + doc/_config.yml | 38 ++++++++ doc/_toc.yml | 19 ++++ doc/assets/logo.png | Bin 0 -> 36822 bytes doc/chapters/jax/introduction.md | 1 + doc/chapters/numpyro/introduction.md | 1 + doc/chapters/preface.md | 1 + doc/chapters/requirements.md | 9 ++ doc/intro.md | 38 ++++++++ doc/references.bib | 0 requirements.txt | 21 +++++ 14 files changed, 321 insertions(+) create mode 100644 .github/workflows/deploy.yml create mode 100644 .gitignore create mode 100644 CODE_OF_CONDUCT.md create mode 100644 CONTRIBUTING.md create mode 100644 doc/_config.yml create mode 100644 doc/_toc.yml create mode 100644 doc/assets/logo.png create mode 100644 doc/chapters/jax/introduction.md create mode 100644 doc/chapters/numpyro/introduction.md create mode 100644 doc/chapters/preface.md create mode 100644 doc/chapters/requirements.md create mode 100644 doc/intro.md create mode 100644 doc/references.bib create mode 100644 requirements.txt diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml new file mode 100644 index 0000000..8601ca2 --- /dev/null +++ b/.github/workflows/deploy.yml @@ -0,0 +1,44 @@ +name: deploy + +on: + # Trigger the workflow on push to main branch + push: + branches: + - main + +# This job installs dependencies, build the book, and pushes it to `gh-pages` +jobs: + build-and-deploy-book: + runs-on: ${{ matrix.os }} + strategy: + matrix: + os: [ubuntu-latest] + python-version: [3.9] + steps: + - uses: actions/checkout@v2 + + # Install dependencies + - name: Set up Python ${{ matrix.python-version }} + uses: actions/setup-python@v1 + with: + python-version: ${{ matrix.python-version }} + - name: apt install system packages + run: | + sudo apt install -y graphviz ffmpeg + - name: Install dependencies + run: | + pip install pip --upgrade + pip install uv + uv pip install -r requirements.txt --system + + # Build the book + - name: Build the book + run: | + jupyter-book build doc + + # Deploy the book's HTML to gh-pages branch + - name: GitHub Pages action + uses: peaceiris/actions-gh-pages@v3.6.1 + with: + github_token: ${{ secrets.GITHUB_TOKEN }} + publish_dir: doc/_build/html \ No newline at end of file diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..dbfcfe3 --- /dev/null +++ b/.gitignore @@ -0,0 +1,133 @@ +# Byte-compiled / optimized / DLL files +__pycache__/ +*.py[cod] +*$py.class + +# C extensions +*.so + +# Distribution / packaging +.Python +build/ +develop-eggs/ +dist/ +downloads/ +eggs/ +.eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +wheels/ +pip-wheel-metadata/ +share/python-wheels/ +*.egg-info/ +.installed.cfg +*.egg +MANIFEST + +# PyInstaller +# Usually these files are written by a python script from a template +# before PyInstaller builds the exe, so as to inject date/other infos into it. +*.manifest +*.spec + +# Installer logs +pip-log.txt +pip-delete-this-directory.txt + +# Unit test / coverage reports +htmlcov/ +.tox/ +.nox/ +.coverage +.coverage.* +.cache +nosetests.xml +coverage.xml +*.cover +*.py,cover +.hypothesis/ +.pytest_cache/ + +# Translations +*.mo +*.pot + +# Django stuff: +*.log +local_settings.py +db.sqlite3 +db.sqlite3-journal + +# Flask stuff: +instance/ +.webassets-cache + +# Scrapy stuff: +.scrapy + +# Sphinx documentation +docs/_build/ + +# PyBuilder +target/ + +# Jupyter Notebook +.ipynb_checkpoints + +# IPython +profile_default/ +ipython_config.py + +# pyenv +.python-version + +# pipenv +# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. +# However, in case of collaboration, if having platform-specific dependencies or dependencies +# having no cross-platform support, pipenv may install dependencies that don't work, or not +# install all needed dependencies. +#Pipfile.lock + +# PEP 582; used by e.g. github.com/David-OConnor/pyflow +__pypackages__/ + +# Celery stuff +celerybeat-schedule +celerybeat.pid + +# SageMath parsed files +*.sage.py + +# Environments +.env +.venv +env/ +venv/ +ENV/ +env.bak/ +venv.bak/ +.DS_Store + +# Spyder project settings +.spyderproject +.spyproject + +# Rope project settings +.ropeproject + +# mkdocs documentation +/site + +# mypy +.mypy_cache/ +.dmypy.json +dmypy.json + +# Pyre type checker +.pyre/ + +# builds +**/_build/** \ No newline at end of file diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md new file mode 100644 index 0000000..6734ad9 --- /dev/null +++ b/CODE_OF_CONDUCT.md @@ -0,0 +1,15 @@ +We adopt a code of conduct that ensures a productive, respectful environment for all open source contributors and participants. We are committed to providing a strong and enforced code of conduct and expect everyone in our community to follow these guidelines when interacting with others in all forums. Our goal is to keep ours a positive, inclusive, thriving, and growing community. The community of participants in open source Astronomy projects such as this present work includes members from around the globe with diverse skills, personalities, and experiences. It is through these differences that our community experiences success and continued growth. + +We expect all contributors to adhere to the following principles: + +We treat each other with respect and do not tolerate any form of discrimination based on ethnicity, gender, disability, religion or belief, age or sexual orientation or identity. We believe that science is a diverse endeavor: diversity provides new impulses, new ideas, new perspectives, and innovation. + +We conduct our research and support the research of others with integrity and according to the highest scientific standards. We are committed to scientific integrity and abiding by the guidelines of good scientific practice. We value scientific quality over quantity. + +We discuss problems and implement solutions openly and respectfully; we communicate the principles and processes that underlie our actions and decisions. + +We recognize the achievements of others, give credit where it is due, and offer constructive feedback when necessary. Science and innovation depend on an open and constructive discourse in which new ideas can be freely exchanged and old wisdom challenged. + +We support each other in achieving our goals by nurturing trust and cooperation and respecting individual capabilities and needs. We know that research is often highly competitive, and people can feel under pressure to produce results. Because of these circumstances, we are committed to being mindful of personal boundaries and contributing to a nurturing work environment based on trust and mutual respect. + +Any violations of this Code of Conduct should be reported to any of the core authors of this project. \ No newline at end of file diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..7a2e4f9 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1 @@ +Please open a new issue or new pull request for bugs, feedback, or new features you would like to see. If there is an issue you would like to work on, please leave a comment, and we will be happy to assist. New contributions and contributors are very welcome! \ No newline at end of file diff --git a/doc/_config.yml b/doc/_config.yml new file mode 100644 index 0000000..e44b7cd --- /dev/null +++ b/doc/_config.yml @@ -0,0 +1,38 @@ +####################################################################################### +# A default configuration that will be loaded for all jupyter books +# See the documentation for help and more options: +# https://jupyterbook.org/customize/config.html + +####################################################################################### +# Book settings +title: jax-astro-guide # The title of the book. Will be placed in the left navbar. +author: Jaxstronomy # The author of the book +copyright: "2024" # Copyright year to be placed in the footer +logo: assets/logo.png # A path to the book logo + +# Force re-execution of notebooks on each build. +# See https://jupyterbook.org/content/execute.html +execute: + execute_notebooks: auto + timeout: -1 + +# Define the name of the latex output file for PDF builds +latex: + latex_documents: + targetname: book.tex + +# Add a bibtex file so that we can create citations +bibtex_bibfiles: + - references.bib + +# Information about where the book exists on the web +repository: + url: https://github.com/JAXtronomy/jax-astro-guide # Online location of your book + path_to_book: docs # Optional path to your book, relative to the repository root + branch: main # Which branch of the repository should be used when creating links (optional) + +# Add GitHub buttons to your book +# See https://jupyterbook.org/customize/config.html#add-a-link-to-your-repository +html: + use_issues_button: true + use_repository_button: true \ No newline at end of file diff --git a/doc/_toc.yml b/doc/_toc.yml new file mode 100644 index 0000000..930dfc5 --- /dev/null +++ b/doc/_toc.yml @@ -0,0 +1,19 @@ +# Table of contents +# Learn more at https://jupyterbook.org/customize/toc.html + +format: jb-book +root: intro + +parts: + - caption: Introduction + chapters: + - file: chapters/preface + - file: chapters/requirements + + - caption: jax + chapters: + - file: chapters/jax/introduction + + - caption: numpyro + chapters: + - file: chapters/numpyro/introduction diff --git a/doc/assets/logo.png b/doc/assets/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..d1d142be4d688e5abb87f15c8b359debcba5f9b5 GIT binary patch literal 36822 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 CJ$@7b literal 0 HcmV?d00001 diff --git a/doc/chapters/jax/introduction.md b/doc/chapters/jax/introduction.md new file mode 100644 index 0000000..e6b44a7 --- /dev/null +++ b/doc/chapters/jax/introduction.md @@ -0,0 +1 @@ +# Jax \ No newline at end of file diff --git a/doc/chapters/numpyro/introduction.md b/doc/chapters/numpyro/introduction.md new file mode 100644 index 0000000..4f50bbe --- /dev/null +++ b/doc/chapters/numpyro/introduction.md @@ -0,0 +1 @@ +# Numpyro \ No newline at end of file diff --git a/doc/chapters/preface.md b/doc/chapters/preface.md new file mode 100644 index 0000000..c32a970 --- /dev/null +++ b/doc/chapters/preface.md @@ -0,0 +1 @@ +# Preface \ No newline at end of file diff --git a/doc/chapters/requirements.md b/doc/chapters/requirements.md new file mode 100644 index 0000000..e707337 --- /dev/null +++ b/doc/chapters/requirements.md @@ -0,0 +1,9 @@ +# Prerequisites + +This repo uses the Python 3 programming language, along with a standard set of numerical and data visualization tools in astronomy, scientific experiments, and open-source projects. According to regular surveys, Python is the primary programming language of about 80% of astronomers today. By learning the Python language, you will join a community of millions of software developers and data scientists. + +## Getting Started. + +A Python program can be executed by any computer, regardless of manufacturer or operating system, provided that support for the language is installed. If you wish to install the version of Python and the libraries that will match this book, we recommend the Python 3 language interpreter. You can also use web-based environments such as [Google Colab](https://colab.research.google.com/), [Deepnote](https://deepnote.com), etc. + +This text includes a complete introduction to all of these computational tools. You will learn to write programs, generate figures and files from data, and work with public real-world data sets. \ No newline at end of file diff --git a/doc/intro.md b/doc/intro.md new file mode 100644 index 0000000..c3530ac --- /dev/null +++ b/doc/intro.md @@ -0,0 +1,38 @@ +# A primer on Data Science in Astronomy + +This repository is a tentative book on the basics of varied tools using Astronomy language. + +This book uses Python as the default programming language. + +:::{note} +Python occupies a large fraction of software development in astronomy today. +But other languages are as valid for data science. +::: + +:::{warning} +This page is not updated from the template +::: + +Check out the content pages bundled with this sample book to see more. + + +# Acknowledgements + +Jupyter Book is supported by an [open community of contributors](https://github.com/executablebooks/jupyter-book/graphs/contributors), many of whom come from [the Executable Books Community](https://executablebooks.org) and [the Jupyter community](https://jupyter.org/community). + +::::{grid} 2 2 2 2 + +:::{grid-item} +:columns: 4 + +```{image} https://sloan.org/storage/app/media/uploaded-files/Logo-1B-SMALL-Gold-Blue.png +:class: m-auto +:width: 200px +``` + +::: + +:::{grid-item} +:columns: 7 +Many thanks to the Sloan Foundation, which [provides support for the Executable Books Project](https://sloan.org/grant-detail/9231). +::: \ No newline at end of file diff --git a/doc/references.bib b/doc/references.bib new file mode 100644 index 0000000..e69de29 diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..1be0e7e --- /dev/null +++ b/requirements.txt @@ -0,0 +1,21 @@ +Cython +astropy +dask +distributed +flax +ghp-import +graphviz +jax +jaxlib +jupyter-book +jupytext +matplotlib +numpy +pandas +plotly +pytest +scikit-learn +snakemake +tensorflow +torch +numpyro \ No newline at end of file