Skip to main content

No project description provided

Project description

SNOWPAT

This is a toolbox for handling file formates most often used at SLF.

There are two submodules: pysmet: Used to read and write SMET files snowpackreader: Used to read SNOWPACK output files (.pro) and handle profiles easily (soon also with visualization) SnowLense: Plotting Framework for files that can be read with this module (SMET not yet available) (see Documentation)

News

2024-03-25: Installation via PyPi now possible

2024-03-08: Plotting of Snow Profiles is available with SnowLense module

2024-03-01: A simple merge function is now available to join to SMET Files: merge(SMETFile, override) and mergeFromFile(filename, override)

Installation

Installation via pip and poetry is supported.

It is as easy as:

pip install snowpat

You can also install from git (needs git to be installed) to always get the latest release:

pip install [--user] git+https://gitlabext.wsl.ch/patrick.leibersperger/snowpat.git

the --user option might be needed if you do not have admin rights.

Upgrade

If you already have an installation of Sowpat, that is out of date, run:

pip install [--user] --upgrade git+https://gitlabext.wsl.ch/patrick.leibersperger/snowpat.git

Manually

Download the folder, and from the main directory run:

poetry install

or:

pip install [--user] .

Documentation

The main documentation can be found under the respective module names, i.e. pySMET and SMET, as well as snowpackreader

Extensive Documentation is available online, it uses http, so you might get a privacy error in your browser; Or prepuilt in artifacts.zip, whic can be found in job artifacts: under (Number) files download the folder.

If you download the zip folder just open index.html in your browser.

Or you can build the docs yourself.

MkDocs

To create the docs with MkDocs: Install via

pip install mkdocs

run:

mkdocs serve

from the main directory and follow the link shown (localhost)

License

This project is licensed under the terms of the GNU-GPL-3.0 license.

Examples

Please see the Documentation for more Examples and information on the full capabilities

from snowpat import pysmet as smet
from snowpat import snowpackreader as spr

Examples pySMET

from snowpat import pysmet as smet

file = smet.read(filename)
data_pandas = file.data
data_numpy = file.toNumpy()
# meta_data only contains the mandatory SMET metadata
station_id = file.meta_data.station_id
lon = file.meta_data.location.longitude

# optional_meta_data according to the file format can be accessed like this:
timezone = file.optional_meta_data.tz

# acdd metadata (anything preceded with acdd_ or known acdd attributes are stored in acdd metadata)
acdd_creator_name = file.acdd_meta_data.get_attribute("creator_name")

# everything else is in other metadata
value = file.other_metadata["key"]

# changing metadata
file.meta_data.station_ID = "WFJ"
file.acdd_meta_data.set_attribute("creator_name", "SomeName")

# and for writing to an output again (if no output filename is provided, the given filename is used with an out flag):
file.write(out_filename)

# a summary is also available wih
file.info()

#UNTESTED:
# it is also possible to merge to SMET files, as long as they are compatible (metadata and fields)
other_file = smet.read(other_filename)
file.merge(other_file)

# or
list_of_files_to_merge = [filename1, filename2,filename3,...]
merged_file = smet.merge_files(list_of_files_to_merge)

Examples snowpackreader

from snowpat import snowpackreader as spr
pro = spr.readPRO("test.pro")

# print a summary of the file
pro.info()

# all available dates
dates = pro.get_all_dates()

# will only return data above the ground after this
pro.discard_below_ground(True)
# get a Snowpack object (internal data class for Profiles) on a specific date
profile = pro.get_profile_on(dates[0])
# convert it to a dataframe with minimum stability and surface hoar as metadata
# column names will be data codes, except for "0500"= height (layer boundaries)-> 2 columns: layer middle and layer thickness
profile.toDf().head()
wl = profile.weak_layer # or profile.get_param["0534"]
sh = profile.surface_hoar # pr profile.get_param["0514"]

# There is help, to deal with the DataCodes:
# per default, the names are as in the .pro Header (without units)
pro.update_name_of_code("0503", "Snow Density")
density_code = pro.name_to_code("Snow Density")

Logo was creaeted with: hotpot.ai/art-generator

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

snowpat-0.3.2.tar.gz (33.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

snowpat-0.3.2-py3-none-any.whl (49.0 kB view details)

Uploaded Python 3

File details

Details for the file snowpat-0.3.2.tar.gz.

File metadata

  • Download URL: snowpat-0.3.2.tar.gz
  • Upload date:
  • Size: 33.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.4

File hashes

Hashes for snowpat-0.3.2.tar.gz
Algorithm Hash digest
SHA256 2ffd4f3c9b41c59837d3339d01f65721d713d37bc54d70487d391b813f5ed0d6
MD5 f2d0152c600076d6f2ac04d65b9442f0
BLAKE2b-256 5c8bfd3c985dd012ec0451587646cc789562dd9b999c0c270d3c766d6dbad106

See more details on using hashes here.

File details

Details for the file snowpat-0.3.2-py3-none-any.whl.

File metadata

  • Download URL: snowpat-0.3.2-py3-none-any.whl
  • Upload date:
  • Size: 49.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.4

File hashes

Hashes for snowpat-0.3.2-py3-none-any.whl
Algorithm Hash digest
SHA256 2fa14b59dff0baa48a459403728797145a812583ffd4806c045672c028731ed3
MD5 362153c3e071fb15f611758b06044265
BLAKE2b-256 e48db454b1dcdba700c37ab83405aba531809ba6dcac584d228c50f7d733f3f7

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page