Skip to content

Commit

Permalink
Pyatoa Version 0.2.0 (#29)
Browse files Browse the repository at this point in the history
* bugfix: pinning cartopy and proj dependency versions as this was causing some issue with proj versions on systems that did not already have proj

* bugfixing manager.write not able to write windows and adjoint sources if config.save_to_ds is set to False. This is unintended because write() is called explicitely and should force write, whereas save_to_ds is used to stop passive writing during the processing phase.
Also threw in a check for ASDFDataSets opened in read-only during write() which would throw an error

* bugfix changing a print statement in read_sem to a logger warning

* removed pyaflowa from core objects, removed its tests and docs pages/references. Pyaflowa functionality has been completely shifted to SeisFlows

* moved docs up to highest level directory to remove it from main dir and to match seisflows structure
changed docs conf to point to the correct location
updated changelog with most recent changes

* Update README.md

* udpating readthedocs.yaml to point to new docs location in package

* pinning SciPy<=1.8.0 because SciPy==1.9.0 causes 'ValueErro: Unknown window type' because they changed name 'Hanning' -> 'Hann' causing errors in ObsPy

* fixing setup procedure to avoid installing unnecessary requirements via pip

* unpinning lowest scipy version due to Conda UnsatisfiedError package dependency conflicts during requirements installation

* bugfixing time offset and waveform misfit naming

* critical bug fix with filtering behavior for highpass and lowpass flipped from expected behavior. i.e., setting only min period used to set a highpass which is NOT what we want. This has been fixed

* Remove external data gathering and I/O routines from Pyatoa (#23)

* stripped away all moment tensor related functionality from the gatherer and plugins

* further removed moment tensor related functionality and moved into pysep

* stripped out I/O read and write functions related to SPECFEM which were redundant with respect to PySEP. replaced internal import statements with imports to pysep

* stripped out all references to FDSN client in Pyatoa and all gathering that queried FDSN. This functionality will be shifted into PySEP

* Removed now defunct docs related to gathering, updated changelog to reflect major changes made in this branch, removed failing tests that relied on removed functionality

* update readme to remove reference of data fetchign

* fixed missing comma in setup file

* Update docs and install (#28)

* removed setup.py and .cfg, implemented new pyproject.toml file replacing setup.py. pointed readthedocs to only requirements.txt file in docs directory. removed changelog in preference to set changelog in docs page

* removed requirements.txt file

* fixed missing suffixes in git dependencies of pyproject.toml file

* docs added readme, moved notebooks into own directory, updated convert script. updating docs wording

* updated overview page (slimmed down considerably) and bumped version number in conf

* setting default filter periods to None and removing float requirement on input

* pyflex requires a min period so setting to 1-100 rather than previous 10-30

* moved unused plot scripts out of repo (into simutil), removed unnecessary mgmt plot and moved into manager.plot() function

* updated docs environment and main environment

* update readme to match seisflows readme

* removed manager and config notebooks and converted to a direct rst document
added first glance to replace getting started

* throws in a '*' on synthetic data gathering to deal with specfem3d_globe synthetics which suffix with 'ascii'

* added data discovery rst doc page which is meant to replace the gatherer notebook and page

* removed gatherer notebook and rst page

* renames storage notebook

* manually edited inspector rst doc file to be shorter and remove the notebook dependence. figures will be moved into the gallery

* changed core_func name to misfit, for misfit quantifictaion

* removed inspector notebook in favor of hand edited inspector doc page

* updated naming standards page

* cleaned out the scripts directory which had a lot of scripts that were unfinished or not used. ones that were important were moved into docs

* bugfix inspector raypath plot checking incorrect logic

* fixed bugfix

* removed old image files from notebooks that are no longer required
added an inspector gallery notebook and added rst to gallery page
further cleaned up script repository
added a load example inspector script

* removed logging docs page and notebook, moved a short section into the misfit docs page

* manually edited the storage rst file to be more concise and to move away from the notebook configuration.

* removed storage notebook in favor of new .rst storage file

* added outputs to code cells in inspector doc where relevant, changed ASDFDataSet example reading function to read only to not affect test data

* added inspector figure text into gallery and removed text from inspector rst file

* removing warnings from insp_gallery

* renamed insp gallery notebook to avoid conversion deleting the manually edited version

* condensed changelog to remove 0.3.0 changelog since we haven't even bumped to 0.2.0
removed make figures scripts directory

* added github relevant files including different issue templates
added contributing page modfieid from Pygmt

* editing contributing document
added cross-referencing into the misfit docs page

* fixing typos misfit doc page

* added cross-referencing to the storage docs page

* finished adding cross-referencing into all docs pages of relevance

* removed unnused 'read_seisflows_yaml' from Config class

* major config and preprocessing reworking to allow for data-data misfit: removed unnused parameters 'start_pad', 'end_pad' from config, as well as filter corners
removed seisflows_yaml and _par reading functionality from config, not necessary
preprocess function now written more generally, does not take manager as input but rather takes stream and a few other arguments. manager preprocessing function changed to match

* finished updating preprocessing function
cleaned up logging statements, shortened and exchanged some 'info' for 'debug' statments

* working data data example with some TA array data

* renamed some files, cleaned up some docs text

* last minute doc fixes

* update changelog

* fix tests which changed due to a change in default config parameters, removed some ununused test data, upated baseline images

* bumping version number 0.2.0 for soft release

Co-authored-by: Bryant Chow <[email protected]>
  • Loading branch information
bch0w and Bryant Chow committed Dec 21, 2022
1 parent 977b67f commit 8ff21e1
Show file tree
Hide file tree
Showing 187 changed files with 4,770 additions and 52,947 deletions.
49 changes: 49 additions & 0 deletions .github/bug_report.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
name: Bug report
description: Report a problem/bug to help us improve
labels: bug
body:
- type: markdown
attributes:
value: |
Thanks for taking the time to fill out this bug report!
- type: textarea
attributes:
label: "Description of the problem"
description: |
Please be as detailed as you can when describing an issue.
The more information we have, the easier it will be for us to track this down.
validations:
required: true
- type: textarea
attributes:
label: "Minimal Complete Verifiable Example"
description: |
So that we can understand and fix the issue quickly and efficiently, please provide
a minimal, self-contained copy-pastable example that demonstrates the issue.
For more details, check out:
- [Minimal Complete Verifiable Examples](https://stackoverflow.com/help/mcve)
- [Craft Minimal Bug Reports](http://matthewrocklin.com/blog/work/2018/02/28/minimal-bug-reports)
placeholder: "PASTE CODE HERE"
render: python
validations:
required: false
- type: textarea
attributes:
label: "Full error message"
description: "What was the error message you got?"
placeholder: "PASTE ERROR MESSAGE HERE"
render: python-traceback
validations:
required: false
- type: textarea
attributes:
label: "System information"
description: |
Please paste the output of `python -c "import pygmt; pygmt.show_versions()"`
If this command is not successful, please describe your operating system, how you installed PyGMT, how you installed GMT, and paste the full error message.
placeholder: "PASTE THE OUTPUT HERE"
render: bash
validations:
required: true
36 changes: 36 additions & 0 deletions .github/bump_gmt_checklist.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
---
name: Bump GMT version checklist
about: Checklist for bumping the minimum required GMT version.
title: Bump to GMT X.Y.Z
labels: maintenance
assignees: ''

---

:tada: [GMT X.Y.Z](https://github.com/GenericMappingTools/gmt/releases/tag/X.Y.Z) has been released! It is installable from the
[conda-forge channel](https://anaconda.org/conda-forge/gmt/files) using the following command:

`conda install -c conda-forge gmt=X.Y.Z`

<!-- Please add specific checklist items for the tests, xfail pytest markers, and deprecated syntax that need to be updated. -->

**To-Do for bumping the GMT version in CI**:

- [ ] Bump the GMT version in CI (1 PR)
- [ ] Update `.github/workflows/cache_data.yaml`
- [ ] Update `.github/workflows/ci_docs.yml`
- [ ] Update `.github/workflows/ci_tests.yaml`
- [ ] Update `ci/requirements/docs.yml`
- [ ] Update `environment.yml`
- [ ] Fix failing tests (1 or more PRs)
- [ ] Fix [xfail](https://docs.pytest.org/en/stable/skipping.html#xfail-mark-test-functions-as-expected-to-fail) pytest markers on tests that are now xpass

**To-Do for bumping the minimum required GMT version**:

- [ ] Bump the minimum required GMT version (1 PR)
- [ ] Update `doc/install.rst`
- [ ] Update `required_version` in `pygmt/clib/session.py`
- [ ] Update `test_get_default` in `pygmt/tests/test_clib.py`
- [ ] Update compatibility table in `README.rst`
- [ ] Remove [xfail](https://docs.pytest.org/en/stable/skipping.html#xfail-mark-test-functions-as-expected-to-fail) pytest markers on tests that are now xpass
- [ ] Update deprecated syntax in source code and examples based on the [GMT Changelog](https://docs.generic-mapping-tools.org/latest/changes.html)
5 changes: 5 additions & 0 deletions .github/config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
blank_issues_enabled: true
contact_links:
- name: Pyatoa
url: https://github.com/adjtomo/discussions
about: Please ask questions here or find answers to common problems.
23 changes: 23 additions & 0 deletions .github/feature_request.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
name: Feature request - General feature
description: Request the addition of a new feature/functionality
labels: ["feature request"]
body:
- type: textarea
attributes:
label: "Description of the desired feature"
description: |
Please be as detailed as you can in your description.
If possible, include an example of how you would like to use this feature (even better if it's a code example).
- type: dropdown
id: help
attributes:
label: Are you willing to help implement and maintain this feature?
description: |
Every feature we add is code that we will have to maintain and keep updated. This takes a lot of effort.
If you are willing to be involved in the project and help maintain your feature, it will make it easier for us to accept it.
options:
- "No"
- "Yes"
- "Maybe"
validations:
required: true
34 changes: 34 additions & 0 deletions .github/module_request.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
name: Feature request - Wrap a new GMT module
description: Request PyGMT wrapper for a GMT module
title: "Wrapper for <module-name>"
labels: ["feature request"]
body:
- type: markdown
attributes:
value: |
Please replace `<module-name>` in the issue title and the description with the name of the requested module and add the description of the module.
- type: textarea
id: which-module
attributes:
label: Description of the desired module
description: Please be as detailed as you can in your description. If possible, include an example of how you would like to use this feature (even better if it's a code example).
placeholder: Implement [`<module-name>`](https://docs.generic-mapping-tools.org/latest/<module-name>.html) which `<insert description of the GMT module>`.
validations:
required: true
- type: dropdown
id: help
attributes:
label: Are you willing to help implement and maintain this feature?
description: |
Every feature we add is code that we will have to maintain and keep updated. This takes a lot of effort.
If you are willing to be involved in the project and help maintain your feature, it will make it easier for us to accept it.
options:
- "No"
- "Yes"
- "Maybe"
validations:
required: true
- type: markdown
attributes:
value: |
Progress on wrapping the module will be tracked in the [project board](https://github.com/GenericMappingTools/pygmt/projects/9).
48 changes: 48 additions & 0 deletions .github/release_checklist.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
---
name: PyGMT release checklist
about: Checklist for a new PyGMT release.
title: Release PyGMT vX.Y.Z
labels: maintenance
assignees: ''

---

**Release**: [v0.x.x](https://github.com/GenericMappingTools/pygmt/milestones/?)
**Scheduled Date**: YYYY/MM/DD
**Pull request due date**: YYYY/MM/DD

**Priority PRs/issues to complete prior to release**
- [ ] Wrap X ()
- [ ] Wrap Y ()

**Before release**:
- [ ] Run `grep --include="*.py" -r 'remove_version="vX.Y.Z"' pygmt` from the base of the repository to check if any deprecations and related tests should be removed in this version
- [ ] Reserve a DOI on [Zenodo](https://zenodo.org) by clicking on "New Version"
- [ ] Finish up 'Changelog entry for v0.x.x' Pull Request:
- [ ] Add a new entry in `doc/_static/version_switch.js` for documentation switcher
- [ ] Update `CITATION.cff` and BibTeX at https://github.com/GenericMappingTools/pygmt#citing-pygmt
- [ ] Update authorship list
- [ ] Update DOI (and url for BibTeX)
- [ ] Update version
- [ ] Update date released
- [ ] Add the documentation link https://github.com/GenericMappingTools/pygmt#compatibility-with-gmtpythonnumpy-versions
- [ ] Add compatibility information https://github.com/GenericMappingTools/pygmt#compatibility-with-gmtpythonnumpy-versions
- [ ] Copy draft changelog from Release Drafter and edit it to look nice ([see maintainers guide for details](https://www.pygmt.org/dev/maintenance.html#updating-the-changelog))

**Release**:
- [ ] At the [PyGMT release page on GitHub](https://github.com/GenericMappingTools/pygmt/releases):
- [ ] Edit the draft release notes with the finalized changelog
- [ ] Set the tag version and release title to vX.Y.Z
- [ ] Make a release by clicking the 'Publish Release' button, this will automatically create a tag too
- [ ] Manually upload the pygmt-vX.Y.Z.zip and baseline-images.zip files to https://zenodo.org/deposit, ensure that it is filed under the correct reserved DOI

**After release**:
- [ ] Update conda-forge [pygmt-feedstock](https://github.com/conda-forge/pygmt-feedstock) [Done automatically by conda-forge's bot, but remember to pin NEP29 versions]
- [ ] Bump PyGMT version on https://github.com/GenericMappingTools/try-gmt (after conda-forge update)
- [ ] Announce the release on:
- [ ] GMT [forum](https://forum.generic-mapping-tools.org/c/news/) (do this announcement first! draft on https://hackmd.io/@pygmt. requires moderator status)
- [ ] [ResearchGate](https://www.researchgate.net/project/PyGMT-A-Python-interface-for-the-Generic-Mapping-Tools) (after forum announcement)
- [ ] [Twitter](https://twitter.com/gmt_dev) (after forum announcement)
---

- [ ] Party :tada: (don't tick before all other checkboxes are ticked!)
4 changes: 2 additions & 2 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -64,8 +64,8 @@ coverage.xml
*.log

# Sphinx documentation
pyatoa/docs/.ipynb_checkpoints
pyatoa/docs/_build
docs/notebooks/.ipynb_checkpoints
docs/_build
pyatoa/docs/_build/*
# pyatoa/docs/*rst
# pyatoa/docs/*_files
Expand Down
7 changes: 3 additions & 4 deletions .readthedocs.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,14 @@ version: 2

sphinx:
builder: html
configuration: pyatoa/docs/conf.py
configuration: ./docs/conf.py

python:
version: 3.7
install:
- requirements: pyatoa/docs/requirements.txt
- requirements: requirements.txt
- requirements: ./docs/requirements.txt
- method: setuptools
path: .

conda:
environment: pyatoa/docs/environment.yml
environment: ./docs/environment.yml
6 changes: 0 additions & 6 deletions CHANGELOG.md

This file was deleted.

37 changes: 20 additions & 17 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,30 +1,33 @@
## Python's Adjoint Tomography Operations Assistant
# Python's Adjoint Tomography Operations Assistant

[![SCOPED](https://img.shields.io/endpoint?url=https://runkit.io/wangyinz/scoped/branches/master/adjTomo)](https://github.com/SeisSCOPED/container/pkgs/container/adjtomo)
[![Join the chat at https://gitter.im/pyatoa/community](https://badges.gitter.im/pyatoa/community.svg)](https://gitter.im/pyatoa/community?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
[![SCOPED](https://img.shields.io/endpoint?url=https://runkit.io/wangyinz/scoped/branches/master/Pyatoa)](https://github.com/SeisSCOPED/container/pkgs/container/pyatoa)
[![Documentation Status](https://readthedocs.org/projects/pyatoa/badge/?version=latest)](https://pyatoa.readthedocs.io/en/latest/?badge=latest)

### Misfit assessment for the modern tomographer
## Misfit assessment for the modern tomographer
<p align="center">
<img src="docs/images/pyatoa_logo_w_text.png" />
</p>

**Pyatoa**\* is a waveform-based misfit quantification package, with additional
tools for measurement aggregation, and visualizations of inversion results.
It is meant to facilitate the execution and assessment of seismic waveform
inversion.
---
`Documentation` can be found on Read the Docs: https://pyatoa.readthedocs.io

---
<p align="center">
<img src="pyatoa/docs/images/pyatoa_logo_w_text.png" />
</p>
- Documentation, including install instructions, example problems and API, can
be found on [Read the Docs](https://pyatoa.readthedocs.io).

- Pyatoa is under current active development, and is bundled with other
inversion software under the [adjTomo organization](https://github.com/adjtomo).

**Pyatoa**\* is a waveform-based misfit quantification package, with additional tools for measurement aggregation, and visualizations of inversion results. It is meant to facilitate the assessment of seismic inversions. Under the hood, **Pyatoa** is built on, and provides a high-level interface for a few key Python packages:
- If you find any issues, have questions, or would like to join the community,
please feel free to open up a [GitHub Issue](https://github.com/adjtomo/pyatoa/issues) or [start a discussion](https://github.com/orgs/adjtomo/discussions).

**[ObsPy:](https://github.com/obspy/obspy/wiki)** for seismic data handling, processing and organization
**[Pyflex:](https://krischer.github.io/pyflex/)** a Python port of Flexwin, for automatic time window selection
**[Pyadjoint:](http://krischer.github.io/pyadjoint/)** evaluating misfit functions and creating adjoint sources
**[PyASDF:](https://seismicdata.github.io/pyasdf/)** heirarchical, self-describing storage of seismic data
**[Pandas:](https://pandas.pydata.org/)** large-scale aggregation and manipulation of measurement information
---

**Pyatoa** can be used in scripting, interactive Python environments, or written into larger workflow tools. Although applicable in a standalone maner, Pyatoa is designed to be used in conjunction with [SeisFlows](https://github.com/adjtomo/seisflows), an automated workflow for seismic inversions, and [SPECFEM](https://github.com/specfem), numerical solvers for seismic wave propogation.

The design philosophy of **Pyatoa** is easy-to-use custom-built objects that make tomography research flexible, rapid, and repeatable.
The design philosophy of **Pyatoa** is easy-to-use interface that
make tomography research approachable, flexible, and repeatable.

<sub> \**pronounced Py-uh-toe-uh (ˈpaɪəˈtoʊə), inspired by the famed volcano Krakatoa* </sub>

2 changes: 0 additions & 2 deletions bld.bat

This file was deleted.

2 changes: 0 additions & 2 deletions build.sh

This file was deleted.

File renamed without changes.
50 changes: 50 additions & 0 deletions docs/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
# Pyatoa Documentation

The Pyatoa documentation is built with Sphinx and ReadTheDocs. The official
documentation can be found at https://pyatoa.readthedocs.io.

Docs building is automatically triggered when updates are pushed to Pyatoa.
Each branch of the code may have a different documentation. The 'latest'
version of the docs points to the 'devel' branch of the code.

## Building Docs Locally

In order to build the Docs locally, you will first need to create a separate
Conda environment with a few packages, you can do this by running:

``` bash
conda env create --file environment.yaml
conda activate pyatoa-docs
```

You can then run the make command to generate the .html files. You can find your
local docs in the *_build/html* directory

```bash
make html
```

## Docs from Jupyter Notebooks

Some docs pages are generated from Jupyter notebooks. Typically, these are docs
which execute actual code blocks and display their output
(e.g., tutorial walkthroughs).

The corresponding .rst page are then converted from the Jupyter notebooks using
a Python script. The *notebooks/* directory contains docs pages that are
generated in this way. To generate a .rst file from a Jupyter notebook

```bash
cd notebooks/
python convert.py <FILENAME> # replace filename with any of the available .ipynb files
```

This automatically deletes the current .rst file and replaces it with the newly generated
file, converted from the notebook. Additional functions in the convert script
will edit some of the rst commands to make the resulting docs page look a bit
cleaner.

> __NOTE:__ The notebook is **not** executed with the convert script, it only
> takes the current state of the notebook and converts it to RST. If you want
> to edit cell inputs or outputs you will need to install Pyatoa to the Conda
> environment and execute the notebook on your own.
File renamed without changes.
Loading

0 comments on commit 8ff21e1

Please sign in to comment.