Skip to content

Commit

Permalink
Merge pull request #192 from sharppy/andover
Browse files Browse the repository at this point in the history
Merging Andover into master.
  • Loading branch information
Greg Blumberg committed Mar 9, 2020
2 parents 616d3b8 + 1b50cdb commit 94bac24
Show file tree
Hide file tree
Showing 838 changed files with 62,431 additions and 5,650 deletions.
66 changes: 66 additions & 0 deletions .appveyor.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
#environment:
# matrix:
# - PYTHON_VERSION: 3.6
# MINICONDA: C:\Miniconda3
# ARCH: "64"
# NUMPY_VERSION: "1.15.*"
#init:
# - "ECHO %PYTHON_VERSION% %MINICONDA%"
#
#install:
# - "set PATH=%MINICONDA%;%MINICONDA%\\Scripts;%PATH%"
# - conda config --set always_yes yes --set changeps1 no
# - conda update -q conda
# - conda info -a
# - conda env create -f environment.yml
#
# # Install dependencies
# - activate devel
#
# Add to path the current folder
# - "SET PYTHONPATH=%PYTHONPATH%;%CD%"

# Install SHARPpy
# - python setup.py -q install

# Resize the screen
#- nuget restore
# - ps: iex ((new-object net.webclient).DownloadString('https://raw.githubusercontent.com/appveyor/ci/master/scripts/set-screenresolution.ps1'))
# - ps: Set-ScreenResolution 1366 768

#build: off

# Turning off Test Script for now
#test_script:
# - sharppy examples/data/14061619.OAX
- pytest -v

#after_test:
# - "conda list"
# - "cd runsharp"
# - "pyinstaller SHARPpy-win7-%ARCH%.spec"
# - "cd .."
# - "move dist\\SHARPpy.exe dist\\SHARPpy%ARCH%.exe"

#artifacts:
# - path: "runsharp\\dist\\SHARPpy64.exe"
# name: binary
#
# - path: "*.png"
# name: test images

# - path: "examples\\data\\14061619.png"
# name: test gui

#deploy:
# provider: GitHub
# release: $(appveyor_repo_tag_name)
# auth_token:
# secure: DB6sQwYCM7Dhhy+mjPkMd6kclvw0Sc2wglTJxcTBQue63dtIQRNa1dz/aqJG7Ygc
# artifact: "runsharp\\dist\\SHARPpy64.exe"
# draft: true
# prerelease: true
# on:
# appveyor_repo_tag: true

# Don't deploy because andover-off
45 changes: 45 additions & 0 deletions .coveragerc
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
[run]
source = sharppy
runsharp
datasources
omit =
*/tests*
_*.py
sharppy/gui.py
sharppy/sounding.py
sharppy/_version.py
sharppy/_sharppy_version.py
sharppy/__git_version__.py
sharppy/viz/draggable.py
sharppy/viz/barbs.py
sharppy/viz/preferences.py
sharppy/viz/generic.py
sharppy/io/arw_decoder.py
runsharp/SHARPpy.py
datasources/available.py
sharppy/plot/*

[report]
exclude_lines =
if __name__ == .__main__.:
logging.debug
def swapInset
def keyPressEvent
def focusPicker
def wheelEvent
def mouseReleaseEvent
def updateReadout
def setReadoutCursor
def setNoCursor
def resizeEvent
def mouseMoveEvent
def mouseDoubleClickEvent
def mousePressEvent
def pix_to
def modifySfc
def getReadoutVal
def showCursorMenu
class SfcModifyDialog
class PWDatabase
def get_profile
def calc_inputs
1 change: 1 addition & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
sharppy/_version.py export-subst
4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,10 @@ develop-eggs
# Installer logs
pip-log.txt

# Other logs
.cache
*.log

# Unit test / coverage reports
.coverage
.tox
Expand Down
86 changes: 86 additions & 0 deletions .travis.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,86 @@
env:
global:
- PYTHON_VERSION
- DISPLAY_AVAIL
- BUILD_CONDA
- BUILD_DOCS
- BUILD_BINARY
- MPL_VERSION=2.2.3
matrix:
include:
- os: linux
language: generic
env:
- PYTHON_VERSION="3.6" BUILD_CONDA="YES" NUMPY_VERSION=1.17 DISPLAY_AVAIL="YES"
- os: osx
language: generic
env:
- PYTHON_VERSION="3.6" DISPLAY_AVAIL="NO" BUILD_DOCS="YES" NUMPY_VERSION=1.17
- os: linux
language: generic
env:
- PYTHON_VERSION="3.6" BUILD_DOCS="NO" NUMPY_VERSION=1.17 COVERALLS="YES" DISPLAY_AVAIL="YES"

addons:
ssh_known_hosts:
- github.com
- 140.82.113.4

before_install:
- source ci/install.sh
install:
- pip install -e .
script:
- if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then xvfb-run pytest -v --cov ; else pytest -v --cov ; fi
# If the test script passes, deploy if it's tagged..generate the binaries.
after_success:
# Deploy test information to coveralls
- if [[ "$COVERALLS" == "YES" ]] ; then coveralls || echo "Coveralls upload failed" ;fi
# Build the binary if it's a new tag.
#- if [[ -n "$TRAVIS_TAG" ]]; then source ci/make_binary.sh; fi
before_deploy:
- ls
- pwd
#- if [ "$BUILD_BINARY" == "YES" ] && [ -n "$TRAVIS_TAG" ]; then cd dist; zip -r SHARPpy-osx.zip SHARPpy.app; cd ..; fi
# Ship the binaries to Github and PyPI and conda
deploy:
# Deploy the binaries to Github Releases
# - provider: releases
# api_key:
# secure: upm1CAgyi6Qv+KaHAo/v3mDyaXYSFs+vm0qS1D7IUDapGIhOTfqDgOpS71bFAnM9w+FRc7S3foxmymsHZsK97LVOEqHNibBtSmELVzhv2VHoCfAUnHaOzCi/z4DHx3QKn2ALLymFfG4O7XzSC7urHue9/h9DWy51srokafP3QOnI6sWHkWGOOOv0i13MDzv2RxMza7+PT69bQ2vFk2ujwAthanDySeXyf2kJ7WYj1cuEBfASBs+diVUSqk7FxJO7OQhyLCCn5bSS3Otvg9tkHL8H7WU6JoGHLBoUPDUxCl0KePgie6hZvaJFAlhcJfmSA4NsTQfunFnbHa2rPFPUTLO6RgEbtD0Th85VORmmEeJ8O+GmvZIRBZUiMxPAbb1DXPwI6XtgoFhNiV5rkut4JtL3BgRmAfIdAsvBfNbozgRpHAOpoiIzx/8wan+o73h6K1y+qfQwxBw+cJAL3n0A2M3x7/mpALLf3JLD8E5KKLbp/kedPIF2vKXZ92h85H9AkMopHqLHQGj86M0qHbQyMp6OHR2ivG2K9qqtzAaUNglQrUaQOHeaBZ8ZT7+mhpdhaN1w5fmuYPRchVzyNbM3DtdiUfAGc6adZPUaUktbiIpLigjwS6BO4FALngrI9+M+kk8qHv/zukOiGawzueCDUGc79G/8LI7Q1EKkiqyI+3E=
# file_glob: true
# file: dist/SHARPpy*.zip
# skip_cleanup: true
# on:
# repo: sharppy/SHARPpy
# tags: true
# branch: andover
# Deploy code to conda
- provider: script
script: bash ci/deploy_conda.sh
on:
repo: sharppy/SHARPpy
tags: true
branch: andover
condition: "$BUILD_CONDA = YES"
# Deploy docs to Github Pages
- provider: script
script: bash ci/build_docs.sh
on:
repo: sharppy/SHARPpy
tags: false
branch: andover
condition: "$BUILD_DOCS = YES"
# Deploy the code to PyPI
- provider: pypi
user: sharppy
password:
secure: "qgE7Hef6m9m6xf0CU976z/7KbpSaRIeucwVztsJQQCqP97FMnkb0bL0fhQMoxkVti1VCAuF9FXvWzWBKuKeu+sqP3pEE7GYlTVqq4kN3W55DleVFbyWy3Fyhu+6pRJL168kZg1rCNboX7Xw8RwI0l0r3DiSvjqWSYvOfdabgYlECImS4XjxRYxN2GTDXG3D37soWiBbi7rqDj33fitUHXyJMLdPhtbGs85BStG9Op2aRXibtCH2Lo/EtY7PkWaxY8F5aXrKiufHPvkpow8S2XKD1VdWpHAV+5lO7ai9N8Z9zyogYLzIAfPqHDx6afQWUknRBn8Ot7k4Kt3cBGEhdvtAH8jhZGCmqDPsk1+qgx/OyWK9iiJsvsJWKmTf286AZl5vxO9NH1fZL0LpYQ5XvwrVi83eygLttEOU0I6ggngflJfs5KvfZXmvODdfK4oVzn3mJODbncLoYz1KxNZRPUFWycmkDaPmy2YyPjRnqE1S6SOP1zGVAEO2Leq/lGbB0J18b103oehyp6+t9KnpsoEhPDsr68xKCkKLl5QXVlfGikHJAMVI/CM0Hh8bva6bTNP5Ulsko6vYyvfGlbI0rEW3OJikvh0051M0lS175j3LMGj5Bs1iFZX43KoyebcfqYDtRQdrvigzsRAZoR9BdBAnVZtO5mfFMkrUtIX94Au8="
distributions: sdist bdist_wheel
upload_docs: no
on:
repo: sharppy/SHARPpy
tags: true
branch: andover-off
condition: "$BUILD_CONDA = YESS"

134 changes: 134 additions & 0 deletions CHANGELOG.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,134 @@
Change Log
==========

SHARPpy v1.4.0 "Andover" Release
--------------------------------

NEW FEATURES

* User preferences
* Python 3 support
* Can now click and drag the storm-motion vectors, updating all the other insets
* Double click to change which storm motion vector is used for storm-relative calculations
* New readout on the hodograph, coupled to the readout on the Skew-T
* Improvements for southern-hemisphere users
* Storm motion vector is chosen if the SPC-formatted sounding file specifies the latitude and longitude of the input sounding (southern-hemisphere uses the left-mover, northern the right-mover).
* Left-mover vector is used in all other storm-motion dependent functions (e.g., STP insets, SARS).
* Realtime and historical U.S. and international soundings from 1946-now are accessible through the Picker. Soundings include the latitude and longitude.
* IEM BUFKIT sounding archive (data back to 2010 from RUC, NAM, GFS, RAP)
* New documentation and API accessible through Github pages
* Improved documentation online (no longer in README)
* Documentation and sphinx-generated API is pushed to Github Pages with each tagged release.
* Readout cursor can be configured to output other variables (e.g., potential temperature, theta-E)
* Ability to modify surface by changing the surface temperature or dewpoint (mixed layer optional)
* Up/down buttons on keyboard can now be used to flip through the ensemble members plotted in the SHARPpy GUI.
* Logging enabled when --debug flag is enabled.
* GUI now displays alert box when questionable data is requested to be plotted. Users now have the option to choose if they wish to still try to plot the data.
* Continuous Integration (TravisCI, Appveyor, Azure Pipelines) now enabled to test changes, GUI quality, pull requests, deploy docs, deploy binaries to Github, and deploy packages to package managers.
* New versioning system now consistent with PEP-440 (thanks to versioneer).
* Included more scripting examples in docs.
* Deployment to conda and pip with each tagged SHARPpy release.
* Added test scripts to unit test various GUI parts, decoders, and numerical routines
* GUI checks Github Releases to see if the code being run is the current version

BUG FIXES

* Fixed issue with resizing GUI where text would not resize or plots would become decoupled
* GUI now will handle profile objects where all of the wind speed or direction data is missing.
* Fixed an issue where rounding did not happen on the Fire inset
* Fixed bug when convective temperature routine would error if SBCAPE was 0
* Adjusted SWEAT calculation due to issue #153
* Fixed SHERB calculation due to issue #151.
* MBURST was fixed to use VT instead of TT.
* Fixed bug where masked values were getting passed to np.arange
* prof_collection was modified to handle missing ensemble members
* Fixed the incorrect matching criteria for SARS using the MLLCL
* Updated the code to stop SHARPpy from showing nans on GUI
* Fixed unhandled case where Haines index coloring was not activated
* Stopped precip_water() from extrapolating the water vapor profile if missing data is present.
* Mapping and BUFKIT decoder bugs
* Fix for MMP if there are no data points betwee 6 and 10 km.
* Corrected location of sounding data points
* Stopped crashing of program when lapse-rate was calculated using low altitude data
* Tropical projection on mapping.py fixed
* Stopped Excessive Heat hazard type from firing at South Pole soundings
* Fixed bug where user selected soundings would cause an incorrect PWV climatology calculation.
* Hodograph drawing doesn't crash on incomplete profiles
* Fixed bug where missing kwarg wasn't passed on profile copy()
* Fixed fatal bug with boundary motion cursor


SHARPpy v1.3.0 "Xenia" Release
------------------------------

SHARPpy v1.3.0, Xenia Release supports multiple profiles in the Skew-T window and features improvements to the picker map and usability of the Skew-T window.

NEW FEATURES

* Ability to add and remove any data from the sounding picker in the sounding viewer and view it simultaneously.
* Can switch focus between profiles using the spacebar.
* Ability to focus and remove profiles from the Skew-T via the menus.
* Analogue profiles can be focused and removed by the same mechanisms.
* More picker map improvements
* Tropics and Southern Hemisphere maps are now available.
* Ability to recenter the map projection by double-clicking.
* Ability to save map view as the default for when the program loads.
* Installable binaries are available for Mac OS X and Windows
* Interpolation: interpolate profiles to 25-mb intervals for easy graphical modification.
* Skew-T zooming improved.
* Program now loads profiles in the background, decreasing the load time for the Skew-T window.
* Ability to save sounding text to a file.
* New MBURST index added to the sounding window.

BUG FIXES

* Menus now work on Windows and Linux.
* Model profiles compute the correct inferred temperature advection for their latitude.
* Additional error handling for partial profiles.
* Various model forecast points relocated to their proper places.
* Error handling for opening the program without an Internet connection.
* Removed qtpy dependency and unused imports for those using SHARPpy routines in scripts.

SHARPpy v1.2.0 "El Reno" Release
--------------------------------

SHARPpy v1.2.0, El Reno Release, supports and features a new and improved user interface for selecting and interacting with sounding data sources, in addition to new SARS inset interactivity, and numerous backend changes/improvements. Please note that with these changes, the runsharp and datasources folders must not be moved, and must be run in the parent SHARPpy directory.

UPDATES/FIXES

* New pan/zoom map for selecting sounding locations from observed/model data sources
* Northern hemispheric map for global data sources (tropics and southern hemisphere maps coming soon)
* County map zooming for CONUS data sources
* Cursor readout for sounding locations includes station ID, city, and state/province or country
* Map checks the server for currently available points and only displays those that are available
* Bug fixes on selecting model initialization cycles and supports non-synoptic hour observed data
* Stations with special characters now work properly
* Mapping shapefiles have been added to the databases directory
* New XML backend for managing different data sources available to the GUI
* Allows custom configuration for data urls, initialization offset, model dt, forecast range, and point click locations for configured data sources. No tutorial has been generated for this yet.
* New SARS analogue interactivity
* SARS hail and supercell analogues can now be displayed alongside soundings by left-clicking on the analogue in the SARS inset window. It can be removed by right-clicking the skew-t window and hitting reset
* Improved the UI's look and feel on the Windows platform
* Added 0-3 km MLCAPE to the thermodynamics panel
* Fixed the 0-6 km shear and 9-11 km storm-relative wind vectors that are plotted when plotting a boundary motion in the Hodograph window.
* Data decoders have been modified, consolidated, and made more customization-friendly
* Moved the existing Profile object to a BasicProfile object, and made Profile an object that makes no computations upon construction and only stores data
* The "About" menu option (currently only works on OS X) has been updated with a new description and contact info
* Removed accidental SciPy dependency
* An Issue with the PWV climatology crashing on non-US stations has been fixed
* Save image and open user sounding text file functions now default to the user's home directory.
* Microburst Composite (MBURST), Derecho Composite Parameter (DCP), Energy-Helicity Index (EHI), and Severe Weather Threat Index (SWEAT) added to params.py
* Overall stability of the program has been increased.
* Tutorial has been updated to reflect some of the internal changes of the program libraries.
* Custom user sounding text files can now be opened by pressing Ctrl+O on Windows and Linux.

SHARPpy v1.0.0 Beta (AMS 2015 Release)
--------------------------------------

Following the SHARPpy presentation in the Python Symposium at the annual American Meteorological Society meeting, SHARPpy is being released to the public in beta status. Most core functionality is present, but it is being released with a few platform specific known bugs that are still being worked on.

This release features core numerical functionality (thermodynamic and kinematic routines) for scripting and data processing, in addition to graphical user interface functionality and interactivity.

Instructions on how to install and run can be found in the readme.


Loading

0 comments on commit 94bac24

Please sign in to comment.